diff --git a/Android-kotlin-Code/CONTRIBUTING.md b/Android-kotlin-Code/CONTRIBUTING.md
new file mode 100644
index 0000000..45e4c83
--- /dev/null
+++ b/Android-kotlin-Code/CONTRIBUTING.md
@@ -0,0 +1,14 @@
+## Contributing to Clash for Android
+
+#### Code Style
+
+Please use `Android Studio` or `Intellij IDEA` to open the project and use the project code style profile.
+
+`File` -> `Settings` -> `Editor` -> `Code Style` -> `C/C++ and Kotlin` -> `Scheme` -> `Project`
+
+
+
+#### License
+
+Contributing to Clash for Android that assumes you allow code to be merged into closed-source branch of Clash for Android. Other terms follow the [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html)
+
diff --git a/Android-kotlin-Code/LICENSE b/Android-kotlin-Code/LICENSE
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/Android-kotlin-Code/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
+.
diff --git a/Android-kotlin-Code/NOTICE b/Android-kotlin-Code/NOTICE
new file mode 100644
index 0000000..6853d88
--- /dev/null
+++ b/Android-kotlin-Code/NOTICE
@@ -0,0 +1,833 @@
+3th-party software licenses
+
+ * Clash
+==========================================================================
+ 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
+.
+
+ * Android Open Source Project
+ * Android X Support Library
+==========================================================================
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+ 1. Definitions.
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+ END OF TERMS AND CONDITIONS
diff --git a/Android-kotlin-Code/PRIVACY_POLICY.md b/Android-kotlin-Code/PRIVACY_POLICY.md
new file mode 100644
index 0000000..48f98b1
--- /dev/null
+++ b/Android-kotlin-Code/PRIVACY_POLICY.md
@@ -0,0 +1,50 @@
+## Privacy Policy
+
+The Clash for Android is built as an Open Source software. This app is provided by personal at no cost and is intended for use as is.
+
+This page is used to inform visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our app.
+
+If you choose to use our app, then you agree to the collection and use of information in relation to this policy. The Personal Information that we collect is used for providing and improving the app. We will not use or share your information with anyone except as described in this Privacy Policy.
+
+The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at Clash for Android unless otherwise defined in this Privacy Policy.
+
+**Information Collection and Use**
+
+For a better experience, while using our app, we may require you to provide us with certain personally identifiable information. The information that we request will be retained by us and used as described in this privacy policy.
+
+The app does use third party services that may collect information used to identify you.
+
+Link to privacy policy of third party service providers used by the app
+
+* [Google Play Services](https://www.google.com/policies/privacy/)
+* [AppCenter](https://docs.microsoft.com/en-us/appcenter/gdpr/)
+
+**Log Data**
+
+We want to inform you that whenever you use our app, in a case of an error in the app we collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our App, the time and date of your use of the app, and other statistics.
+
+**Cookies**
+
+Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.
+
+This app does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this app.
+
+**Security**
+
+We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.
+
+**Links to Other Sites**
+
+This app may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these websites. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.
+
+**Children’s Privacy**
+
+These Services do not address anyone under the age of 13\. We do not knowingly collect personally identifiable information from children under 13\. In the case we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us so that we will be able to do necessary actions.
+
+**Changes to This Privacy Policy**
+
+We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately after they are posted on this page.
+
+**Contact Us**
+
+If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us.
diff --git a/Android-kotlin-Code/README.md b/Android-kotlin-Code/README.md
new file mode 100644
index 0000000..ceb057f
--- /dev/null
+++ b/Android-kotlin-Code/README.md
@@ -0,0 +1,79 @@
+## LiteVPN
+
+A Graphical user interface of [Clash.Meta](https://github.com/MetaCubeX/Clash.Meta) for Android
+
+### Feature
+
+Feature of [Clash.Meta](https://github.com/MetaCubeX/Clash.Meta)
+
+[
](https://f-droid.org/packages/com.github.metacubex.clash.meta/)
+
+### Requirement
+
+- Android 5.0+ (minimum)
+- Android 7.0+ (recommend)
+- `armeabi-v7a` , `arm64-v8a`, `x86` or `x86_64` Architecture
+
+### Build
+
+1. Update submodules
+
+ ```bash
+ git submodule update --init --recursive
+ ```
+
+2. Install **OpenJDK 11**, **Android SDK**, **CMake** and **Golang**
+
+3. Create `local.properties` in project root with
+
+ ```properties
+ sdk.dir=/path/to/android-sdk
+ ```
+
+4. Create `signing.properties` in project root with
+
+ ```properties
+ keystore.path=/path/to/keystore/file
+ keystore.password=
+ key.alias=
+ key.password=
+ ```
+
+5. Build
+
+ ```bash
+ ./gradlew app:assembleMeta-AlphaRelease
+ ```
+
+### Automation
+
+APP package name is `com.github.metacubex.clash.meta`
+
+- Toggle Clash.Meta service status
+ - Send intent to activity `com.github.kr328.clash.ExternalControlActivity` with action `com.github.metacubex.clash.meta.action.TOGGLE_CLASH`
+- Start Clash.Meta service
+ - Send intent to activity `com.github.kr328.clash.ExternalControlActivity` with action `com.github.metacubex.clash.meta.action.START_CLASH`
+- Stop Clash.Meta service
+ - Send intent to activity `com.github.kr328.clash.ExternalControlActivity` with action `com.github.metacubex.clash.meta.action.STOP_CLASH`
+- Import a profile
+ - URL Scheme `clash://install-config?url=` or `clashmeta://install-config?url=`
+
+### Contribution and Project Maintenance
+
+#### Meta Kernel
+
+- CMFA uses the kernel from `android-real` branch under `MetaCubeX/Clash.Meta`, which is a merge of the main `Alpha` branch and `android-open`.
+ - If you want to contribute to the kernel, make PRs to `Alpha` branch of the Meta kernel repository.
+ - If you want to contribute Android-specific patches to the kernel, make PRs to `android-open` branch of the Meta kernel repository.
+
+#### Maintenance
+
+- When `MetaCubeX/Clash.Meta` kernel is updated to a new version, the `Update Dependencies` actions in this repo will be triggered automatically.
+ - It will pull the new version of the meta kernel, update all the golang dependencies, and create a PR without manual intervention.
+ - If there is any compile error in PR, you need to fix it before merging. Alternatively, you may merge the PR directly.
+- Manually triggering `Build Pre-Release` actions will compile and publish a `PreRelease` version.
+- Manually triggering `Build Release` actions will compile, tag and publish a `Release` version.
+ - You must fill the blank `Release Tag` with the tag you want to release in the format of `v1.2.3`.
+ - `versionName` and `versionCode` in `build.gradle.kts` will be automatically bumped to the tag you filled above.
diff --git a/Android-kotlin-Code/androidjks b/Android-kotlin-Code/androidjks
new file mode 100644
index 0000000..39ae522
Binary files /dev/null and b/Android-kotlin-Code/androidjks differ
diff --git a/Android-kotlin-Code/app/build.gradle.kts b/Android-kotlin-Code/app/build.gradle.kts
new file mode 100644
index 0000000..17574ff
--- /dev/null
+++ b/Android-kotlin-Code/app/build.gradle.kts
@@ -0,0 +1,81 @@
+import java.net.URL
+import java.nio.file.Files
+import java.nio.file.StandardCopyOption
+
+plugins {
+ kotlin("android")
+ kotlin("kapt")
+ id("com.android.application")
+}
+
+dependencies {
+ compileOnly(project(":hideapi"))
+
+ implementation(project(":core"))
+ implementation(project(":service"))
+ implementation(project(":design"))
+ implementation(project(":common"))
+
+ implementation(libs.kotlin.coroutine)
+ implementation(libs.androidx.core)
+ implementation(libs.androidx.activity)
+ implementation(libs.androidx.fragment)
+ implementation(libs.androidx.appcompat)
+ implementation(libs.androidx.coordinator)
+ implementation(libs.androidx.recyclerview)
+ implementation(libs.google.material)
+}
+
+tasks.getByName("clean", type = Delete::class) {
+ delete(file("release"))
+}
+
+val geoFilesDownloadDir = "src/main/assets"
+
+task("downloadGeoFiles") {
+
+ val geoFilesUrls = mapOf(
+ "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.metadb" to "geoip.metadb",
+ "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat" to "geosite.dat",
+ // "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country.mmdb" to "country.mmdb",
+ "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/GeoLite2-ASN.mmdb" to "ASN.mmdb",
+ )
+
+ doLast {
+ geoFilesUrls.forEach { (downloadUrl, outputFileName) ->
+ val url = URL(downloadUrl)
+ val outputPath = file("$geoFilesDownloadDir/$outputFileName")
+
+ // Check if the file already exists
+ if (!outputPath.exists()) {
+ println("Downloading $outputFileName from $downloadUrl")
+
+ outputPath.parentFile.mkdirs()
+ url.openStream().use { input ->
+ Files.copy(input, outputPath.toPath(), StandardCopyOption.REPLACE_EXISTING)
+ println("$outputFileName downloaded to $outputPath")
+ }
+
+ }else{
+
+ println("$outputFileName already exists at $outputPath, skipping download")
+
+ }
+
+ }
+ }
+}
+
+afterEvaluate {
+ val downloadGeoFilesTask = tasks["downloadGeoFiles"]
+
+ tasks.forEach {
+ if (it.name.startsWith("assemble")) {
+ it.dependsOn(downloadGeoFilesTask)
+ }
+ }
+}
+
+tasks.getByName("clean", type = Delete::class) {
+ delete(file(geoFilesDownloadDir))
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/proguard-rules.pro b/Android-kotlin-Code/app/proguard-rules.pro
new file mode 100644
index 0000000..bdc9a3a
--- /dev/null
+++ b/Android-kotlin-Code/app/proguard-rules.pro
@@ -0,0 +1,59 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-dontobfuscate
+
+-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
+ public static void checkNotNull(...);
+ public static void checkExpressionValueIsNotNull(...);
+ public static void checkNotNullExpressionValue(...);
+ public static void checkReturnedValueIsNotNull(...);
+ public static void checkFieldIsNotNull(...);
+ public static void checkParameterIsNotNull(...);
+ public static void checkNotNullParameter(...);
+}
+
+# Kotlin Coroutine
+# Allow R8 to optimize away the FastServiceLoader.
+# Together with ServiceLoader optimization in R8
+# this results in direct instantiation when loading Dispatchers.Main
+-assumenosideeffects class kotlinx.coroutines.internal.MainDispatcherLoader {
+ boolean FAST_SERVICE_LOADER_ENABLED return false;
+}
+
+-assumenosideeffects class kotlinx.coroutines.internal.FastServiceLoaderKt {
+ boolean ANDROID_DETECTED return true;
+}
+
+-keep class kotlinx.coroutines.android.AndroidDispatcherFactory {*;}
+
+# Disable support for "Missing Main Dispatcher", since we always have Android main dispatcher
+-assumenosideeffects class kotlinx.coroutines.internal.MainDispatchersKt {
+ boolean SUPPORT_MISSING return false;
+}
+
+# Statically turn off all debugging facilities and assertions
+-assumenosideeffects class kotlinx.coroutines.DebugKt {
+ boolean getASSERTIONS_ENABLED() return false;
+ boolean getDEBUG() return false;
+ boolean getRECOVER_STACK_TRACES() return false;
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/AndroidManifest.xml b/Android-kotlin-Code/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..e92eacb
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/AndroidManifest.xml
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android-kotlin-Code/app/src/main/assets/1d2a0fe5.json b/Android-kotlin-Code/app/src/main/assets/1d2a0fe5.json
new file mode 100644
index 0000000..6ba179b
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/assets/1d2a0fe5.json
@@ -0,0 +1 @@
+{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":60,"ip":0,"op":120,"w":150,"h":150,"nm":"Disconnected State","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Icon","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[25,25,0],"ix":1},"s":{"a":0,"k":[80,80,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-10.788],[3.663,-3.663],[5.179,0],[3.663,3.663],[0,5.179],[0,0]],"o":[[0,0],[0,5.179],[-3.663,3.663],[-5.18,0],[-3.663,-3.663],[0,-10.788],[0,0]],"v":[[13.281,-17.188],[19.531,-2.344],[13.811,11.467],[0.001,17.188],[-13.811,11.467],[-19.531,-2.344],[-13.281,-17.188]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.001,-24.874],[0.001,-4.563]],"c":false},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.6,0.6,0.6,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[25,27.344],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Solid Background","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[22,20,0],"ix":1},"s":{"a":0,"k":[130,130,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[76,76],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.866666666667,0.866666666667,0.866666666667,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22,20],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Ripple","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[80]},{"t":60,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[22,20,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[130,130,100]},{"t":60,"s":[197.368,197.368,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[76,76],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.866666666667,0.866666666667,0.866666666667,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22,20],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/assets/2c630b55.json b/Android-kotlin-Code/app/src/main/assets/2c630b55.json
new file mode 100644
index 0000000..ebad374
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/assets/2c630b55.json
@@ -0,0 +1 @@
+{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.3.6","a":"","k":"","d":"","tc":""},"fr":29.9700012207031,"ip":0,"op":180.00000733155,"w":1934,"h":1562,"nm":"Vpn Access","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Map Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[3174,1182,0],"to":[-268,0,0],"ti":[268,0,0]},{"t":180.00000733155,"s":[1566,1182,0]}],"ix":2},"a":{"a":0,"k":[357.5,249.5,0],"ix":1},"s":{"a":0,"k":[232.781,205.403,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.907,0.55],[1.212,0.089],[1.104,0.691],[1.238,0.001],[0.804,0.088],[0.774,0.271],[0.916,-0.483],[0.381,0.621],[0.606,0.512],[0.82,0.111],[0.698,-0.323],[0.644,-0.571],[0.377,0.04],[0.018,0.304],[0.054,0.168],[0.015,0.035],[-0.341,0.63],[0.999,0.23],[0.602,-0.816],[0.056,-0.222],[0.004,-0.002],[0.44,-0.226],[-0.318,0.383],[-0.116,0.284],[-0.453,0.359],[0.648,0.682],[1.838,1.1],[0.804,0.74],[0.441,0.32],[0.433,-0.051],[0.242,0.247],[0.237,0.147],[0.436,-0.068],[0.559,-0.177],[0.688,0.486],[1.166,1.049],[0.568,0.103],[0.396,0.014],[0.182,0.423],[0.862,0.209],[-0.017,0.011],[0.145,0.28],[1.194,-0.596],[1.159,0.072],[1.035,0.403],[0.341,-0.01],[0.458,0.098],[0.688,0.327],[0.78,-0.143],[0.908,0.035],[0.123,0.405],[0.272,-0.211],[0.071,-0.117],[1.669,-0.703],[0.185,-0.649],[-0.026,0.032],[0.178,-0.091],[0.176,-0.511],[0.411,-0.243],[0.14,-0.313],[0.059,-0.297],[0.482,-0.259],[0.047,-0.622],[-0.171,-0.687],[0.087,-0.884],[0.63,-0.696],[0.061,-0.831],[0.134,-0.372],[0.304,-0.213],[0.404,-0.59],[0.417,-0.695],[-0.131,-0.909],[-0.634,-0.362],[0.79,-0.772],[0.441,-0.254],[0.041,-0.831],[-0.46,-0.463],[0.019,-0.015],[0.041,-0.268],[-0.624,-0.238],[-0.436,-0.461],[-0.215,-0.399],[-0.565,-1.131],[-1.001,-2.329],[-1.859,-0.54],[-0.012,-0.003],[-1.845,-1.366],[-1.041,-0.315],[-0.276,-0.368],[0.005,-0.267],[-0.029,-0.594],[-0.207,-0.521],[-0.052,-0.564],[0.334,-0.837],[-0.299,-1.183],[0,0],[0.047,-1.178],[0.218,-0.853],[0.139,-0.773],[-0.091,-0.748],[0.276,-0.89],[0.083,-0.611],[-0.178,-0.763],[0.226,-0.944],[0.219,-0.915],[0.217,-0.814],[0.823,-0.337],[-0.445,-0.945],[0.1,-0.908],[0.379,-0.747],[-0.153,-0.701],[0.05,-0.448],[-0.029,-0.376],[-0.449,-0.158],[-0.216,0.07],[-0.089,0.012],[-0.06,0.041],[0.124,-0.317],[-0.151,-0.118],[0.008,-0.079],[0.932,-2.244],[-0.148,-1.026],[0.06,-0.138],[0.105,0.141],[0.389,0.175],[0.099,-0.366],[0.606,-0.46],[-0.097,-0.236],[-0.479,-0.044],[-0.303,-0.014],[-0.076,-0.509],[-0.594,-0.105],[-0.032,-0.152],[0.495,-0.23],[-0.382,-0.155],[0.182,-0.858],[-0.246,-0.312],[0.064,-0.415],[0.102,-0.172],[-0.634,-0.875],[-0.714,-0.744],[0.15,-0.458],[-0.342,0.01],[-1.015,-0.333],[-0.325,0.102],[0.068,-0.162],[-0.308,-0.027],[-0.255,-0.671],[-0.138,0.562],[0.188,0.49],[-0.352,0.495],[-0.273,0.192],[-0.185,0.65],[-0.524,-0.123],[0.217,0.423],[-0.494,1.556],[-0.621,0.347],[-0.222,0.48],[-0.131,0.571],[-0.482,0.404],[-0.583,1.27],[0.271,0.165],[-0.439,1.942],[-1.069,1.197],[0.095,1.042],[-0.703,0.371],[0.076,0.618],[0.324,0.036],[-0.01,0.12],[0.225,0.385],[-0.285,1.033],[-1.474,0.238],[-0.055,0.731],[0.242,0.737],[-0.382,0.205],[0.214,0.245],[-1.901,1.428],[-0.561,0.511],[-0.356,0.583],[0.214,0.47],[0.099,0.261],[-0.281,0.348],[0.509,-0.004],[0.199,0.228],[0.26,0.125],[0.112,0.097],[-1.942,-0.139],[0.019,0.286],[-0.231,0.075],[-0.609,0.65],[-0.442,0.881],[-0.236,0.379],[-0.312,0.417],[-0.241,0.831],[0.014,0.076],[-0.832,1.029],[0.062,1.124],[-0.056,0.178],[-0.305,0.181],[-0.144,0.354],[0.199,1.01],[-0.988,0.747],[-0.17,0.368],[-0.372,0.295],[-0.257,0.053],[-1.31,0.436],[-1.623,-0.056],[0.253,0.331],[-0.546,0.197],[-0.103,0.228],[-0.04,0.104],[-0.073,0.919],[-0.521,0.234],[-0.233,0.228],[0.18,0.593],[-0.508,0.453],[-0.195,0.347],[-0.518,1.739],[0.318,0.816],[0.019,0.598],[-0.755,0.098],[-0.045,0.232],[-0.323,0.786],[-0.651,0.461],[-0.432,0.478],[-0.193,1.224],[-0.061,1.479]],"o":[[-1.067,-0.647],[-1.344,-0.097],[-1.055,-0.659],[-0.805,0],[-0.852,-0.093],[-1.126,-0.395],[-0.203,-0.75],[-0.461,-0.749],[-0.607,-0.513],[-0.767,-0.105],[-0.787,0.364],[-0.266,0.235],[-0.32,-0.033],[-0.01,-0.176],[-0.012,-0.037],[0.613,-0.054],[0.457,-0.843],[-1.009,-0.232],[-0.139,0.19],[-0.004,0.001],[-0.463,0.172],[-0.023,-0.592],[0.198,-0.239],[0.218,-0.535],[0.677,-0.536],[0.169,-2.082],[-0.923,-0.553],[-0.404,-0.371],[-0.386,-0.279],[-0.372,0.044],[-0.185,-0.188],[-0.384,-0.24],[-0.59,0.091],[-0.895,0.282],[-1.283,-0.907],[-0.415,-0.372],[-0.311,-0.056],[0.184,-0.364],[-0.384,-0.9],[0.017,-0.011],[0.25,-0.177],[-0.727,-1.403],[-0.999,0.498],[-1.147,-0.072],[-0.315,-0.122],[-0.469,0.015],[-0.733,-0.156],[-0.738,-0.351],[-0.93,0.171],[0.078,-0.401],[-0.132,-0.431],[-0.101,0.038],[-1.054,1.755],[-0.594,0.25],[-0.027,0.096],[-0.11,0.137],[-0.529,0.271],[-0.169,0.491],[-0.295,0.175],[-0.126,0.282],[-0.108,0.556],[-0.551,0.296],[-0.055,0.72],[0.214,0.86],[-0.091,0.922],[-0.508,0.563],[-0.028,0.386],[-0.133,0.371],[-0.574,0.403],[-0.464,0.677],[-0.416,0.693],[0.111,0.766],[0.698,0.398],[-0.366,0.357],[-0.594,0.343],[-0.027,0.536],[-0.043,0.02],[-0.219,0.17],[-0.109,0.715],[0.57,0.217],[0.314,0.331],[0.599,1.115],[1.134,2.267],[0.657,1.531],[0.013,0.004],[1.855,1.351],[0.869,0.643],[0.41,0.124],[0.175,0.233],[-0.012,0.592],[0.027,0.557],[0.213,0.54],[0.087,0.934],[-0.479,1.2],[0,0],[-1.172,0.435],[-0.035,0.873],[-0.195,0.761],[-0.134,0.742],[0.108,0.897],[-0.179,0.58],[-0.11,0.811],[0.227,0.975],[-0.219,0.916],[-0.196,0.819],[-0.224,0.838],[-1.062,0.434],[0.373,0.795],[-0.094,0.854],[-0.313,0.615],[0.09,0.415],[-0.04,0.362],[0.034,0.449],[0.218,0.076],[0.09,-0.029],[0.06,-0.04],[0.235,0.268],[-0.044,0.237],[-0.031,0.061],[-0.248,2.45],[-0.39,0.942],[0.023,0.16],[-0.097,0.226],[-0.248,-0.332],[-0.313,-0.142],[-0.197,0.727],[-0.175,0.132],[0.179,0.435],[0.307,0.028],[0.557,0.027],[0.103,0.681],[0.021,0.153],[-0.496,0.23],[-0.476,0.22],[1.588,0.647],[-0.083,0.395],[0.216,0.275],[-0.031,0.207],[-0.551,0.929],[0.619,0.855],[-0.33,0.295],[-0.109,0.33],[1.195,-0.038],[0.339,0.111],[-0.082,0.144],[-0.148,0.356],[0.713,0.064],[0.178,0.467],[0.127,-0.52],[-0.184,-0.482],[0.197,-0.277],[0.587,-0.412],[0.493,0.194],[0.475,0.112],[-0.692,-1.355],[0.221,-0.692],[0.437,-0.243],[0.272,-0.59],[0.152,-0.665],[1.075,-0.901],[0.124,-0.271],[-1.404,-0.852],[0.431,-1.906],[0.792,-0.886],[-0.073,-0.799],[0.494,-0.262],[-0.039,-0.318],[-0.093,-0.01],[0.043,-0.479],[-0.549,-0.94],[1.235,0.77],[0.616,-0.1],[0.05,-0.674],[0.389,-0.043],[0.352,-0.189],[2.32,0.345],[0.606,-0.456],[0.5,-0.455],[0.28,-0.457],[-0.116,-0.256],[-0.174,-0.46],[0.281,-0.348],[-0.261,0.001],[-0.195,-0.223],[-0.209,-0.1],[1.799,0.696],[0.367,0.026],[0.116,0.14],[0.842,-0.273],[0.699,-0.743],[0.202,-0.404],[0.276,-0.443],[0.485,-0.65],[0.026,-0.091],[0.902,-0.974],[0.693,-0.856],[-0.01,-0.182],[0.137,-0.439],[0.331,-0.197],[0.42,-1.032],[-0.323,-1.639],[0.325,-0.244],[0.181,-0.396],[0.214,-0.17],[1.358,-0.286],[1.544,-0.514],[0.38,0.013],[-0.559,-0.736],[0.262,-0.094],[0.074,-0.059],[0.329,-0.851],[0.046,-0.584],[0.292,-0.131],[0.467,-0.458],[-0.169,-0.556],[0.288,-0.257],[0.911,-1.613],[0.221,-0.741],[-0.203,-0.518],[-0.024,-0.758],[0.292,-0.038],[0.751,-0.357],[0.291,-0.708],[0.519,-0.367],[0.824,-0.91],[0.23,-1.465],[0.036,-0.865]],"v":[[44.541,-40.482],[41.012,-41.41],[37.729,-43.699],[34.27,-44.634],[31.847,-44.624],[29.659,-45.483],[26.817,-44.708],[26.039,-46.899],[24.155,-47.845],[22.221,-48.909],[19.987,-48.53],[17.889,-47.019],[16.784,-46.208],[16.607,-46.658],[16.509,-47.179],[16.465,-47.285],[17.973,-48.223],[17.143,-50.376],[13.939,-49.088],[13.645,-48.462],[13.633,-48.457],[12.212,-47.96],[13.868,-49.428],[14.288,-50.238],[15.181,-51.409],[15.805,-53.716],[13.191,-58.934],[10.31,-60.501],[9.336,-61.779],[8.219,-61.905],[7.578,-62.068],[7.061,-62.611],[5.768,-62.812],[4.145,-62.196],[1.798,-63.068],[-1.836,-66.034],[-3.214,-66.841],[-4.383,-66.808],[-4.356,-68.038],[-6.502,-69.329],[-6.452,-69.363],[-6.257,-70.106],[-9.886,-70.689],[-12.908,-69.797],[-15.958,-70.821],[-16.94,-71.024],[-18.388,-70.764],[-20.308,-72.211],[-22.652,-72.35],[-25.309,-72.015],[-25.383,-73.237],[-26.271,-73.489],[-26.536,-73.262],[-31.761,-71.166],[-33.135,-69.848],[-33.074,-69.052],[-34.054,-68.825],[-34.827,-67.572],[-35.546,-66.768],[-36.182,-66.058],[-36.381,-65.185],[-37.215,-64.439],[-38.085,-63.061],[-37.707,-60.976],[-37.485,-58.334],[-38.52,-55.795],[-39.794,-53.97],[-39.729,-52.803],[-40.577,-51.965],[-42.158,-50.611],[-43.146,-48.403],[-44.183,-46.38],[-42.805,-44.747],[-42.405,-43.349],[-43.76,-42.485],[-45.421,-41.006],[-44.526,-39.464],[-44.623,-39.41],[-44.99,-38.732],[-43.979,-37.285],[-42.472,-36.488],[-41.714,-35.344],[-40.01,-31.948],[-36.65,-25.107],[-33.838,-20.709],[-33.802,-20.702],[-28.601,-16.218],[-25.736,-14.719],[-24.373,-14.203],[-24.232,-13.292],[-24.304,-11.524],[-23.984,-9.892],[-23.114,-8.272],[-24.635,-5.614],[-24.296,-1.908],[-23.655,0.633],[-25.261,3.367],[-25.541,5.902],[-26.129,8.182],[-26.181,10.384],[-26.113,13.116],[-26.735,14.808],[-26.265,17.015],[-26.591,19.949],[-27.248,22.695],[-27.838,25.154],[-29.134,26.851],[-29.753,29.127],[-29.172,31.511],[-30.11,33.772],[-30.541,35.778],[-30.241,36.999],[-30.431,38.006],[-29.712,39.078],[-29.048,39.063],[-28.736,38.899],[-28.556,38.778],[-28.389,39.656],[-28.183,40.2],[-28.245,40.41],[-30.338,47.16],[-30.866,50.122],[-30.774,50.658],[-31.141,50.292],[-31.988,49.506],[-32.787,49.83],[-33.958,51.611],[-34.208,52.224],[-33.292,52.935],[-32.385,52.862],[-31.804,53.726],[-30.647,55.187],[-30.568,55.644],[-32.054,56.333],[-31.924,57.325],[-32.203,60.136],[-31.932,61.183],[-31.58,61.852],[-31.971,62.482],[-31.807,65.232],[-29.464,67.259],[-30.175,68.382],[-29.651,69.07],[-27.815,70.886],[-26.821,70.822],[-27.046,71.28],[-26.521,71.967],[-24.971,73.138],[-23.921,73.138],[-24.087,71.728],[-24.107,70.449],[-23.299,69.796],[-21.957,68.212],[-20.436,68.693],[-19.822,67.896],[-20.826,63.396],[-19.591,61.913],[-18.493,60.993],[-18.454,59.312],[-16.842,57.832],[-14.347,54.514],[-14.542,53.771],[-17.514,49.746],[-13.81,47.778],[-13.529,44.589],[-12.742,43.149],[-11.863,41.929],[-12.407,41.386],[-12.082,40.391],[-12.585,39.17],[-12.979,36.08],[-8.823,36.96],[-7.461,35.958],[-7.944,33.719],[-6.8,33.357],[-6.694,32.536],[-0.104,30.491],[1.639,29.031],[3.162,27.518],[3.181,26.088],[2.761,25.344],[3.194,24.307],[2.81,23.38],[1.95,21.821],[1.295,21.383],[0.821,21.1],[6.431,22.36],[6.951,21.813],[7.481,21.956],[9.701,20.592],[11.048,18.117],[11.831,17.039],[12.438,15.621],[13.839,13.842],[13.853,13.593],[16.511,10.624],[17.63,7.718],[17.586,6.998],[18.342,6.404],[19.05,5.556],[18.783,2.53],[20.91,0.144],[21.639,-0.755],[22.218,-1.932],[23.036,-2.205],[26.897,-3.451],[31.666,-4.109],[32.136,-4.926],[32.676,-5.386],[33.235,-5.861],[33.412,-6.102],[34.325,-8.8],[34.978,-9.742],[35.812,-10.222],[36.111,-11.863],[36.27,-13.163],[37.034,-13.953],[37.239,-19.428],[37.781,-21.484],[37.101,-22.911],[38.371,-24.371],[38.875,-24.86],[40.395,-26.727],[41.555,-28.592],[43.018,-29.737],[44.724,-32.988],[44.967,-37.469]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[234.432,401.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.375,0.166],[0.1,0.046],[1.099,-0.179],[0.485,-0.515],[0.046,-0.276],[-0.603,-0.073],[-0.258,-0.084],[-0.049,-0.132],[-0.295,-0.095],[-0.759,0.382]],"o":[[-0.046,-0.07],[-0.968,-0.437],[-0.598,0.097],[-0.222,0.086],[-0.145,0.873],[0.239,0.029],[-0.018,0.028],[0.11,0.29],[0.925,0.296],[0.401,-0.202]],"v":[[2.892,-0.46],[2.678,-0.638],[-0.486,-1.662],[-2.772,-1.008],[-3.208,-0.489],[-1.579,0.601],[-0.693,0.676],[-0.624,0.937],[0.046,1.545],[2.952,0.507]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[197.697,316.238],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.429,0.343],[0.801,0.422],[0.709,0.256],[0.633,-0.055],[0.516,0.056],[0.35,-0.113],[0.259,-0.935],[-0.346,-0.03],[-0.294,-0.146],[0.933,-0.145],[-0.341,-0.236],[-1.119,0.09],[-0.579,-0.386],[-0.585,-0.024],[0.076,0.33],[-0.259,-0.057],[-0.26,0.042],[-0.918,-0.302]],"o":[[-0.715,-0.573],[-0.611,-0.323],[-0.637,-0.229],[-0.551,0.047],[-0.371,-0.041],[-0.915,-0.036],[-0.101,0.364],[0.362,0.031],[-0.934,0.145],[-0.507,0.079],[0.984,0.68],[0.678,-0.055],[0.474,0.316],[0.368,0.014],[-0.198,-0.859],[0.255,0.057],[0.801,-0.129],[0.495,0.163]],"v":[[5.714,0.259],[3.445,-1.098],[1.959,-2.364],[0.16,-2.353],[-1.283,-2.64],[-2.352,-2.517],[-4.337,-1.046],[-3.812,-0.359],[-2.835,-0.089],[-5.636,0.345],[-5.766,1.339],[-2.549,1.695],[-0.743,2.07],[0.67,2.667],[1.195,1.978],[2.371,1.673],[3.139,1.727],[5.184,1.167]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[208.742,314.552],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.538,-0.37],[-0.327,0.023],[0.038,-0.286],[-0.265,0.018],[-1.309,0.092],[-1.026,0.406],[0.355,0.283],[0.96,0.184],[-0.003,0.059],[0.33,-0.056],[0.552,0.134],[0.305,0.434],[0.585,-0.051],[1.621,0.501],[0.789,-0.029],[0.878,-0.166],[0.761,-0.337],[0.183,-0.217],[0.074,-0.239],[0.177,-0.166],[-0.463,0.005],[-1.558,0.225],[-0.622,-0.091],[-0.431,-0.125],[-0.388,-0.29],[-0.413,-0.117],[-0.376,-0.266]],"o":[[0.335,0.23],[-0.086,0.249],[-0.038,0.279],[1.309,-0.092],[1.089,-0.076],[0.334,-0.132],[-0.796,-0.633],[0.006,-0.054],[0.016,-0.383],[-0.547,0.091],[-0.553,-0.135],[-0.345,-0.492],[-1.807,0.158],[-0.766,-0.235],[-0.892,0.033],[-0.815,0.153],[-0.256,0.114],[-0.047,0.055],[-0.19,0.139],[-0.345,0.323],[1.639,-0.019],[-0.031,0.437],[0.436,0.064],[0.476,0.137],[0.339,0.254],[0.472,0.133],[0.511,0.362]],"v":[[1.659,2.356],[2.635,2.551],[2.454,3.345],[2.999,3.889],[6.926,3.615],[10.124,3.069],[10.363,2.161],[7.758,0.947],[7.773,0.78],[7.083,0.257],[5.374,0.335],[4.29,-0.561],[2.98,-1.1],[-1.305,-3.673],[-3.699,-3.805],[-6.361,-3.546],[-8.816,-2.844],[-9.49,-2.374],[-9.822,-1.639],[-10.374,-1.184],[-9.99,-0.257],[-5.423,-1.642],[-4.624,-0.728],[-3.331,-0.754],[-2.072,0.095],[-0.965,0.704],[0.342,0.921]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[193.452,309.083],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.117,1.35],[0.514,-0.271],[0.067,0.252],[0.291,0.237],[0.726,-0.23],[-0.012,0.1],[0.121,0.293],[0.611,-0.078],[0.105,-0.028],[-0.01,0.023],[0.002,0.346],[0.577,0.357],[0.195,-0.121],[0.028,-0.551],[0.934,-1.265],[0.777,-0.278],[0.337,-0.546],[-0.113,-0.567],[0.079,-0.159],[0.106,-0.078],[0.142,-0.237],[-1.025,0.029],[-0.472,0.353],[-0.095,0.043],[-0.009,0.004],[-0.033,-0.027],[-0.316,-0.139],[-0.552,0.086],[-0.31,0.11],[-0.181,-0.099],[0.088,-0.254],[-1.078,0.389],[-0.379,0.398],[-0.142,0],[-0.049,-0.143],[-0.804,0.938]],"o":[[-0.048,-0.552],[-0.533,0.281],[-0.093,-0.354],[-0.558,-0.453],[0.044,-0.127],[0.037,-0.31],[-0.241,-0.588],[-0.023,0.003],[0.072,-0.111],[0.133,-0.316],[-0.004,-0.677],[-0.258,-0.16],[-0.41,-0.102],[-0.08,1.564],[-0.489,0.663],[-0.573,0.205],[-0.348,0.563],[0.036,0.181],[-0.057,0.114],[-0.218,0.162],[-0.6,1.007],[0.595,-0.017],[0.086,-0.064],[0.011,-0.005],[0.007,0.02],[0.266,0.216],[0.51,0.225],[0.328,-0.05],[0.171,-0.061],[0.224,0.124],[-0.384,1.109],[0.518,-0.187],[0.081,-0.085],[0.112,0],[0.357,1.049],[0.965,-1.128]],"v":[[7.057,1.339],[5.964,0.714],[5.219,-0.826],[4.689,-1.775],[2.6,-1.818],[2.701,-2.167],[2.609,-3.087],[1.214,-3.848],[0.975,-3.788],[1.106,-4.092],[1.302,-5.194],[0.443,-6.79],[-0.258,-6.805],[-1.217,-6.133],[-2.745,-1.796],[-4.482,-0.436],[-5.926,0.488],[-5.96,1.964],[-5.911,2.206],[-6.283,2.447],[-6.829,3.012],[-5.572,4.812],[-3.921,4.217],[-3.648,3.99],[-3.622,3.977],[-3.566,4.048],[-2.728,4.592],[-1.096,4.809],[-0.17,4.535],[0.373,4.439],[0.322,4.883],[1.913,6.417],[3.275,5.51],[3.898,4.82],[4.125,5.423],[6.464,6.012]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.779,243.157],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.119,1.045],[0.026,0.582],[-0.185,0.227],[-0.123,0.16],[0.726,0.383],[1.071,0.116],[1.372,-0.171],[0.116,-0.151],[0.285,-0.707],[-0.162,-0.416],[-0.205,-0.24],[0.224,0],[0.099,-0.225],[-0.707,-0.538],[0.351,-0.452],[0.039,-0.476],[-1.559,-1.046],[-0.064,0.495],[-0.107,0.649],[-0.035,0.119],[-0.147,-0.088],[-0.544,0.648],[-0.969,0.679]],"o":[[0.068,-0.6],[-0.014,-0.309],[0.117,-0.142],[0.542,-0.704],[-0.967,-0.511],[-1.372,-0.148],[-0.229,0.029],[-0.66,0.181],[-0.165,0.411],[0.116,0.298],[-0.186,0.056],[-0.233,-0.001],[-0.369,0.841],[0.573,0.436],[-0.291,0.376],[-0.166,2.019],[0.509,0.342],[0.085,-0.653],[0.005,-0.127],[0.123,0.118],[0.789,0.473],[0.718,-0.856],[0.794,-0.558]],"v":[[4.951,-1.473],[4.772,-3.169],[4.895,-3.633],[5.362,-4.007],[4.776,-6.061],[1.303,-6.662],[-2.808,-6.677],[-3.325,-6.385],[-4.851,-5.146],[-4.863,-3.897],[-4.302,-3.133],[-4.908,-3.05],[-5.535,-2.692],[-4.862,-0.629],[-4.851,0.313],[-5.347,1.599],[-2.299,6.506],[-1.207,5.881],[-0.953,3.917],[-0.888,3.549],[-0.497,3.881],[1.772,3.314],[3.333,0.631]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[167.509,140.303],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.367,-1.176],[0.087,-0.027],[0.404,-0.998],[-0.265,-0.381],[0.038,0.014],[-0.359,-0.51],[-0.943,-0.12],[0.045,-0.593],[-0.137,-0.299],[0.25,0.535],[0.227,0.329],[0.757,-0.241],[-0.114,-0.701],[-0.292,-0.807],[-0.46,-0.673],[-0.811,-0.183],[-0.787,-1.721],[-0.304,0.196],[-0.257,1.352],[0.021,0.494],[0.033,0.178],[0.17,0.843],[-0.245,0.489],[-0.034,0.519],[0.811,0.391],[-0.484,0.5],[-0.29,0.482],[0.082,0.483],[0.109,0.205],[-0.208,0.284],[-0.091,0.532],[0.276,0.353]],"o":[[-0.077,-0.002],[-0.881,0.272],[-0.193,0.477],[-0.037,-0.01],[-0.578,-0.203],[0.59,0.838],[-0.278,0.486],[-0.026,0.346],[-0.366,0.188],[-0.168,-0.36],[-0.414,-0.6],[-0.716,0.229],[0.144,0.878],[0.27,0.746],[0.495,0.723],[2.016,0.454],[0.158,0.346],[1.088,-0.702],[0.098,-0.508],[-0.009,-0.21],[0.611,-0.173],[-0.101,-0.5],[0.216,-0.429],[0.069,-1.066],[-0.751,-0.363],[0.384,-0.397],[0.248,-0.413],[-0.038,-0.229],[-0.192,-0.362],[0.281,-0.38],[0.076,-0.448],[-1.344,-1.725]],"v":[[0.265,-7.325],[0.02,-7.292],[-2.956,-5.855],[-2.76,-4.549],[-2.872,-4.584],[-3.692,-3.52],[-1.318,-2.046],[-1.971,-0.501],[-1.809,0.488],[-2.787,0.139],[-3.291,-0.928],[-5.247,-1.803],[-6.171,-0.128],[-4.923,2.037],[-4.15,4.264],[-2.079,5.383],[1.641,9.501],[2.634,9.761],[5.094,6.893],[5.044,5.403],[4.984,4.825],[5.903,3.475],[5.536,2.2],[6.116,1.019],[4.401,-0.925],[4.374,-2.256],[5.469,-3.463],[5.775,-4.825],[5.546,-5.468],[5.5,-5.968],[6.209,-6.99],[5.873,-8.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.118,142.802],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.168,0.441],[0.518,0.379],[-0.131,0.816],[0.239,0.535],[0.351,0.415],[0.602,0.361],[0.205,-0.213],[0.066,-0.075],[0,0],[0.304,-0.715],[-1.02,-0.192],[-0.992,-0.285]],"o":[[0.611,-0.231],[-0.844,-0.618],[0.094,-0.585],[-0.218,-0.488],[-0.46,-0.545],[-0.33,-0.198],[-0.072,0.038],[0,0],[-0.512,0.577],[-0.484,1.139],[0.269,0.894],[1.185,0.341]],"v":[[3.641,3.894],[3.814,2.571],[3.588,0.317],[3.31,-1.316],[2.633,-2.903],[0.712,-4.137],[-0.138,-4.025],[-0.347,-3.861],[-2.197,-1.776],[-3.848,0.174],[-1.888,1.992],[-0.143,3.854]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[162.623,126.948],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.217,0.742],[0.332,0.661],[-0.21,0.932],[0.423,0.74],[0.751,0.196],[0.271,-1.575],[-0.455,-0.418],[-0.036,-0.362],[0.435,0.409],[0.181,0.396],[0.335,0.113],[0.304,0.096],[0.018,0.002],[0.043,0.063],[0.113,0.164],[0.601,0.451],[0.518,0.104],[0.238,-0.298],[-0.173,-0.26],[-1.008,-0.538],[0.02,-0.148],[-0.483,-0.377],[0.046,-0.781],[-0.106,-0.674],[-0.223,-0.057],[-0.808,0.359],[0.343,-1.613],[0.159,-0.462],[-0.104,-0.425],[-0.649,-0.231],[-0.78,0.315],[-0.247,0.716],[-0.295,0.792]],"o":[[0.21,-0.718],[-0.393,-0.779],[0.175,-0.783],[-0.388,-0.679],[-1.147,-0.298],[-0.114,0.662],[0.245,0.224],[0.062,0.638],[-0.339,-0.321],[-0.145,-0.32],[-0.349,-0.119],[-0.032,-0.01],[-0.02,-0.036],[-0.107,-0.157],[-0.476,-0.693],[-0.372,-0.279],[-0.372,-0.074],[-0.243,0.305],[-0.492,1.059],[-0.231,0.277],[-0.087,0.631],[0.522,0.406],[-0.039,0.645],[0.037,0.238],[0.879,0.224],[0.697,-0.309],[-0.1,0.468],[-0.139,0.406],[0.168,0.682],[0.816,0.291],[0.643,-0.26],[0.276,-0.799],[0.266,-0.713]],"v":[[6.96,1.113],[6.72,-0.967],[5.854,-3.279],[5.75,-5.472],[3.906,-6.83],[-0.488,-5.482],[0.264,-3.93],[0.888,-3.162],[-0.211,-2.67],[-0.622,-3.861],[-1.365,-4.545],[-2.427,-4.542],[-2.498,-4.558],[-2.591,-4.705],[-2.835,-5.242],[-4.718,-6.268],[-5.671,-7.1],[-6.65,-6.761],[-6.678,-5.837],[-5.718,-3.023],[-6.229,-2.199],[-5.488,-0.66],[-4.158,0.554],[-4.355,2.355],[-3.848,2.86],[-1.404,2.506],[1.365,2.825],[0.696,4.17],[0.587,5.449],[1.967,6.882],[4.407,6.682],[6.085,5.411],[5.943,3.154]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[151.576,121.267],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.546,-0.663],[-0.278,-0.457],[-0.326,-0.089],[0.026,-0.028],[-0.302,-0.275],[-0.945,0.467],[-0.466,0.39],[-0.69,0.444],[0.447,0.319],[0.134,0.5],[0.234,0.364],[0.75,0.277],[0.133,0.14],[0.029,0.254],[0.274,0.26],[0.824,0.097],[-0.12,-0.434],[-0.178,-0.552],[0.023,-0.237],[0.201,-0.254]],"o":[[0.353,0.428],[0.18,0.298],[-0.041,0.036],[-0.253,0.281],[0.687,0.627],[0.544,-0.27],[0.631,-0.526],[0.485,-0.312],[-0.399,-0.284],[-0.105,-0.391],[-0.448,-0.696],[-0.19,-0.07],[-0.21,-0.219],[-0.039,-0.352],[-0.642,-0.607],[-0.561,-0.066],[-0.07,0.561],[0.068,0.213],[-0.035,0.372],[-0.797,1.006]],"v":[[-3.008,0.844],[-2.66,2.22],[-1.845,2.776],[-1.947,2.874],[-1.947,3.898],[0.782,4.775],[2.244,3.54],[4.231,2.099],[4.231,0.848],[3.18,-0.287],[2.921,-1.391],[0.859,-2.81],[0.167,-3.084],[0.049,-3.71],[-0.286,-4.592],[-3.229,-5.176],[-3.886,-4.302],[-3.715,-2.748],[-3.499,-1.95],[-3.92,-1.348]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[160.305,100.018],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.469,-0.111],[-0.349,-0.358],[-0.748,0.454],[-0.169,-0.222],[-0.164,-0.132],[-0.326,-0.143],[0.269,-0.444],[0.49,-0.072],[0.424,0.302],[0.062,-0.482],[-2.454,1.695],[0.138,-0.262],[-0.633,0.22],[-0.651,-0.245],[-0.492,-0.434],[-0.86,0.628],[0.355,0.902],[-0.546,1.351],[0.892,0.666],[0.349,0.332],[0.198,0.479],[1.322,-0.459],[0.268,0.633],[0.443,0.171],[0.892,-0.387],[-0.291,-0.63],[0.028,-0.106],[-0.249,-0.388]],"o":[[-0.363,0.278],[0.749,0.768],[0.491,-0.298],[0.128,0.168],[0.127,0.102],[-0.443,0.251],[-0.223,0.369],[-0.568,0.083],[-0.502,-0.358],[-0.417,3.247],[0.013,0.367],[-0.273,0.52],[0.62,-0.215],[0.617,0.233],[0.634,0.559],[0.898,-0.656],[-0.469,-1.19],[0.366,-0.906],[-0.386,-0.288],[-0.392,-0.372],[-0.583,-1.414],[-0.542,-0.463],[-0.192,-0.454],[-0.93,-0.36],[-0.498,-0.108],[-0.124,-0.267],[-0.118,0.449],[0.301,0.467]],"v":[[-5.369,-3.6],[-5.501,-2.474],[-3.189,-2.663],[-2.933,-2.561],[-2.535,-2.117],[-1.68,-1.734],[-2.774,-0.685],[-3.481,0.168],[-5.095,-0.581],[-6.187,0.044],[-0.474,3.483],[-0.865,4.564],[-0.045,5.628],[2.002,5.34],[3.575,6.76],[6.007,7.543],[6.413,4.632],[5.286,1.052],[4.941,-1.449],[3.67,-2.142],[2.967,-3.648],[-0.42,-5.366],[-1.306,-6.966],[-2.407,-7.811],[-5.217,-7.729],[-6.053,-6.638],[-6.787,-5.716],[-6.56,-4.418]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[148.807,97.436],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.824,0.253],[-0.331,-0.377],[-0.38,-0.069],[-0.971,0.018],[-0.282,0.991],[0.292,0.61],[0.634,0.556],[0.832,-0.399],[0.251,-0.229],[0.327,-0.065],[0.301,-0.276],[-0.077,-0.529],[0.311,-0.272],[-0.265,-0.261]],"o":[[0.479,-0.147],[0.249,0.284],[1.006,0.184],[0.787,-0.016],[0.189,-0.664],[-0.398,-0.831],[-0.657,-0.576],[-0.309,0.148],[-0.327,0.066],[-0.384,0.078],[-0.421,0.386],[-0.311,0.272],[-0.293,0.257],[0.598,0.587]],"v":[[-1.954,2.356],[-1.329,2.413],[-0.415,2.972],[2.25,2.208],[4.318,1.428],[4.04,-0.852],[2.234,-2.378],[0.002,-2.756],[-0.824,-2.165],[-1.804,-1.968],[-2.876,-1.555],[-3.282,-0.093],[-4.215,0.723],[-4.215,1.748]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[131.587,98.314],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.333,-0.282],[-0.331,-0.276],[-0.019,-0.185],[-0.365,-0.143],[-0.715,0.303],[-0.47,0.833],[0.733,0.263],[0.016,0.055],[-0.16,0.069],[-0.246,0.353],[0.657,0.507],[1.366,-1.003],[0.049,-0.08],[0.011,-0.276],[0.171,-0.335],[-0.091,-0.398]],"o":[[0.3,0.254],[-0.064,0.142],[0.04,0.396],[0.777,0.307],[0.845,-0.359],[0.446,-0.793],[-0.06,-0.022],[-0.069,-0.246],[0.386,-0.166],[0.495,-0.711],[-1.616,-1.247],[-0.088,0.065],[-0.184,0.113],[-0.015,0.388],[-0.183,0.361],[0.099,0.433]],"v":[[-3.3,2.19],[-2.082,2.871],[-2.186,3.359],[-1.522,4.165],[1.068,3.738],[3.565,1.919],[2.673,0.178],[2.076,0.014],[2.604,-0.346],[3.605,-1.06],[3.177,-3.225],[-2.676,-1.951],[-2.88,-1.732],[-3.212,-1.15],[-3.839,-0.069],[-4.009,1.108]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[131.169,105.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.017,-0.376],[-1.176,0.18],[-0.281,0.158],[-0.116,0.052],[-0.023,-0.036],[-0.639,0.009],[0.081,1.239],[-0.221,0.64],[-0.186,0.504],[-0.339,0.263],[-1.461,0.557],[-0.115,0.064],[-0.76,-0.488],[0.048,-0.014],[0.266,-0.332],[-0.068,-0.401],[0.058,-0.325],[0.128,-0.157],[0.143,-0.214],[0.196,-0.516],[-1.011,-0.572],[-1.023,-0.091],[-0.92,0.809],[-0.778,-0.262],[-0.455,-0.159],[-1.195,-2.069],[-1.194,0.167],[-0.629,0.437],[-0.774,0.173],[-1.421,0.731],[-0.507,0.324],[-0.766,0.213],[0.032,1.106],[0.093,1.843],[0.41,0.004],[0.821,-0.451],[-0.364,2.115],[0.573,-0.11],[-1.179,-1.946],[0.01,-0.078],[0.07,-0.111],[0.041,-0.232],[-0.266,-0.978],[0.123,-0.092],[0.066,0.059],[0.298,0.526],[1.061,0.098],[0.495,0.151],[0.407,0.219],[0.475,0.053],[0.246,0.116],[0.453,0.074],[0.958,-0.397],[-0.419,0.789],[0.249,0.213],[0.338,0.243],[-0.648,0.905],[0.332,0.156],[0.715,0.503],[0.079,-0.465],[0.027,-0.073],[-0.023,-0.244],[0.479,0.074],[0.464,-0.323],[0.612,-0.919],[2.404,1.129],[0.261,-0.229],[-0.12,-0.552],[0.086,-0.348]],"o":[[0.063,1.372],[0.317,-0.048],[0.112,-0.063],[0.011,0.023],[0.329,0.505],[1.524,-0.022],[0.609,-0.202],[0.174,-0.507],[0.152,-0.412],[0.281,1.247],[0.12,-0.045],[-0.458,0.779],[-0.051,0.009],[-0.406,0.113],[-0.253,0.315],[0.064,0.376],[-0.031,0.172],[-0.164,0.199],[-0.307,0.459],[-0.345,0.91],[0.924,0.522],[1.154,0.102],[0.544,-0.479],[0.457,0.154],[-1.857,0.605],[0.616,1.067],[0.761,-0.106],[0.627,-0.436],[1.481,-0.331],[0.537,-0.276],[0.703,-0.45],[1.234,-0.345],[-0.055,-1.845],[-0.02,-0.394],[-0.96,-0.01],[-0.968,-1.889],[0.097,-0.563],[-1.413,0.272],[0.114,0.188],[-0.016,0.125],[-0.126,0.2],[-0.196,1.107],[0.027,0.101],[-0.171,0.129],[-0.449,-0.405],[-0.43,-0.758],[-0.493,-0.046],[-0.447,-0.138],[-0.416,-0.224],[-0.248,-0.028],[0.089,-0.345],[-0.877,-0.143],[0.745,-0.789],[0.141,-0.267],[-0.318,-0.272],[0.565,-0.89],[0.214,-0.299],[-0.793,-0.371],[-0.489,-0.345],[-0.04,0.056],[-0.098,0.274],[-0.413,0.141],[-0.519,-0.08],[-0.921,0.642],[-0.952,1.428],[-0.313,-0.147],[-0.443,0.387],[0.074,0.34],[-0.082,0.328]],"v":[[-17.128,-0.122],[-14.157,1.774],[-13.257,1.473],[-12.92,1.239],[-12.872,1.326],[-11.469,2.202],[-9.679,-0.439],[-8.338,-1.729],[-8.041,-3.294],[-7.281,-4.32],[-5.083,-2.075],[-4.731,-2.243],[-3.782,-0.346],[-3.931,-0.312],[-5.01,0.348],[-5.303,1.45],[-4.842,2.549],[-5.39,3.159],[-5.852,3.779],[-6.602,5.255],[-6.203,7.868],[-2.828,8.351],[0.228,7.779],[1.809,7.304],[3.142,7.857],[0.746,11.561],[3.729,12.933],[5.834,12.059],[7.736,10.887],[12.095,10.294],[13.603,9.303],[15.699,8.679],[17.124,5.973],[16.844,0.439],[16.118,-0.285],[13.429,0.378],[12.471,-5.755],[11.579,-6.645],[7.959,-3.062],[8.584,-2.268],[8.195,-1.805],[7.946,-1.148],[8.881,1.657],[8.899,2.307],[8.152,1.896],[7.026,0.489],[5.44,-1.462],[4.038,-1.386],[2.787,-2.065],[1.46,-2.54],[-0.087,-2.505],[-0.585,-3.299],[-3.689,-3.085],[-1.918,-5.704],[-2.032,-6.583],[-3.016,-7.354],[-2.08,-10.458],[-2.34,-11.449],[-4.592,-12.755],[-5.633,-12.244],[-5.736,-12.053],[-5.843,-11.286],[-7.149,-11.199],[-8.549,-11.057],[-10.84,-8.169],[-15.778,-3.566],[-16.658,-3.452],[-17.036,-1.99],[-16.871,-0.99]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[125.709,119.391],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.595,0.007],[0,0],[-0.81,0.446],[-0.244,0.299],[-0.125,-0.215],[-0.604,-0.043],[-1.39,0.7],[0.316,0.312],[-0.087,0.023],[-0.278,0.208],[0.128,0.315],[0.595,-0.039],[0.213,0],[-0.177,0.235],[0.922,0.839],[0.657,0.037],[0.766,0.566],[0.674,-0.112],[0.785,-0.201],[0.838,-0.423],[0.76,-0.264],[1.46,-1.341],[0.145,-0.243],[0.361,0.452],[0.425,0.907],[0.599,0.625],[0.364,0.119],[0.142,0.569],[0.796,0.353],[0.772,0.008],[0.037,0.646],[0.599,0.438],[0.16,-0.325],[0.084,0.077],[0.533,-0.014],[-0.213,-0.497],[0.2,-0.072],[0.042,-0.665],[-1.041,-0.196],[-0.22,-0.144],[-0.34,-0.103],[-0.312,-0.311],[-0.474,-0.11],[-0.867,0.345],[-0.473,-0.482],[-0.062,-1.092],[0.059,-0.984],[-0.223,-1.102],[-0.878,-0.319],[-0.335,0.112],[-0.182,0.072],[-0.388,-0.271],[-0.838,0.01],[-0.259,0.078],[0.004,-0.01]],"o":[[0,0],[0.891,-0.011],[0.349,-0.192],[0.024,0.242],[0.315,0.543],[1.596,0.113],[0.42,-0.212],[0.055,0.055],[0.333,-0.091],[0.235,-0.176],[-0.22,-0.542],[-0.199,0.014],[0.317,-0.013],[0.765,-1.018],[-0.506,-0.462],[-1.02,-0.058],[-0.54,-0.399],[-0.819,0.135],[-0.849,0.218],[-0.748,0.377],[-1.595,0.554],[-0.212,0.195],[-0.249,0.419],[-0.628,-0.785],[-0.361,-0.771],[-0.269,-0.281],[-0.519,-0.17],[-0.194,-0.777],[-0.752,-0.333],[-0.917,-0.009],[-0.043,-0.731],[-0.301,-0.22],[-0.072,0.146],[-0.389,-0.359],[-0.599,0.015],[0.02,0.049],[-0.619,0.222],[-0.08,1.248],[0.013,0.206],[0.312,0.204],[0.012,0.374],[0.348,0.347],[0.942,0.22],[0.266,0.601],[0.695,0.712],[0.054,0.941],[-0.068,1.128],[0.168,0.836],[0.326,0.119],[0.197,-0.067],[0.322,-0.128],[0.651,0.454],[0.278,-0.004],[-0.003,0.009],[-0.217,0.48]],"v":[[-1.344,10.418],[5.826,10.337],[8.54,9.974],[9.382,9.186],[9.586,9.871],[11.093,10.691],[15.866,9.29],[16.013,8.152],[16.962,7.918],[17.863,7.509],[18.196,6.69],[17.013,5.931],[16.301,6.087],[17.201,5.382],[16.797,1.996],[15.042,1.406],[12.89,0.178],[11.059,-0.31],[8.839,0.628],[6.311,0.75],[4.643,2.436],[-0.229,1.833],[-0.718,2.529],[-1.395,2.637],[-2.788,-0.259],[-4.042,-2.647],[-5.009,-3.207],[-5.888,-4.051],[-7.075,-5.911],[-9.322,-5.938],[-9.952,-7.706],[-10.818,-9.424],[-11.811,-9.164],[-12.947,-10.258],[-14.308,-10.79],[-14.934,-9.702],[-17.123,-9.315],[-18.245,-7.893],[-16.337,-5.88],[-16.005,-5.327],[-15.035,-4.87],[-14.648,-3.85],[-13.363,-3.171],[-10.655,-3.551],[-9.502,-1.947],[-7.594,0.669],[-8.629,3.275],[-8.073,6.773],[-6.721,8.815],[-5.68,8.855],[-5.171,8.556],[-4.784,8.63],[-2.768,9.427],[-1.96,9.302],[-1.971,9.329]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[176.241,121.454],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.813,-0.151],[0.021,-0.608],[0.488,-0.048],[0.169,-0.75],[-0.53,-0.898],[-0.038,-0.253],[0.177,-0.334],[-0.214,-0.362],[-0.891,0.088],[-0.408,0.127],[-0.281,-0.101],[-0.128,-0.101],[-0.198,-0.062],[-0.512,0.201],[-0.24,-0.219],[0.227,-0.079],[0.353,-1.012],[-0.064,-0.365],[0.693,-0.258],[-0.231,-0.907],[-0.588,-0.438],[-0.92,-0.607],[-0.912,1.629],[-0.662,1.067],[-1.138,0.542],[0.048,0.905],[-1.024,1.164],[0.092,0.248],[0.278,1.468],[1.071,0.668],[-0.02,0.715],[0.277,0.518],[0.818,0.509],[0.592,2.264],[2.375,-0.971],[-0.226,-0.359],[-0.235,-0.181],[-0.267,-0.078],[-0.16,-0.081],[0.066,-0.11],[0.177,-0.295],[0.616,-0.619],[-0.518,-0.603],[0,0],[0.008,-0.01],[-0.031,-0.432],[-0.246,-0.343],[-0.232,-0.377],[0.339,0.347],[0.233,-0.089],[-0.24,-0.918],[0.032,-0.427],[0.365,-0.078],[0.283,-0.17],[-0.201,-0.341]],"o":[[0.426,0.079],[-0.029,0.876],[-0.795,0.078],[-0.254,1.124],[0.127,0.217],[0.065,0.437],[-0.192,0.36],[0.504,0.854],[0.426,-0.042],[0.289,-0.091],[0.141,0.051],[0.162,0.127],[0.548,0.17],[0.229,-0.09],[-0.127,-0.116],[-0.951,0.332],[-0.122,0.349],[0.099,0.577],[-0.749,0.28],[0.2,0.784],[0.859,0.641],[1.814,1.195],[0.611,-1.094],[0.721,-1.161],[0.774,-0.369],[-0.063,-1.188],[0.162,-0.185],[-0.514,-1.402],[-0.214,-1.125],[-0.549,-0.342],[0.017,-0.567],[-0.482,-0.901],[-2.155,-1.34],[-0.511,-1.955],[-0.52,0.213],[-0.019,0.241],[0.221,0.17],[0.112,0.033],[-0.167,-0.039],[-0.177,0.295],[-0.771,-0.238],[-0.536,0.538],[0,0],[-0.089,0.081],[-0.294,0.322],[0.031,0.427],[0.187,0.259],[-0.419,-0.004],[-0.167,-0.17],[-0.935,0.356],[0.109,0.417],[-0.025,0.316],[-0.314,0.067],[-0.336,0.2],[0.445,0.755]],"v":[[-7.315,-2],[-6.124,-1.247],[-7.68,-0.817],[-9.182,0.645],[-8.152,3.501],[-7.854,4.193],[-8.163,5.009],[-8.184,6.107],[-5.529,7.073],[-4.277,6.808],[-2.94,6.348],[-2.477,6.833],[-1.936,7.131],[-0.313,6.937],[0.771,6.696],[-0.917,7.218],[-3.208,9.107],[-3.298,10.182],[-3.473,11.431],[-4.715,13.187],[-3.128,14.724],[-1.132,17.153],[3.717,15.306],[5.262,11.892],[8.128,10.048],[9.45,8.118],[8.795,4.784],[8.98,4.08],[7.777,-0.223],[6.49,-3.17],[5.71,-4.382],[5.476,-6.016],[3.199,-7.77],[-0.061,-13.946],[-4.596,-17.377],[-4.952,-16.2],[-4.652,-15.524],[-3.917,-15.173],[-3.145,-15.014],[-3.751,-14.201],[-4.281,-13.317],[-6.529,-13.001],[-6.714,-10.934],[-6.615,-10.837],[-6.787,-10.674],[-7.182,-9.515],[-6.703,-8.34],[-5.773,-7.309],[-6.912,-7.824],[-7.618,-8.01],[-8.536,-5.866],[-8.02,-4.499],[-8.244,-4.322],[-9.036,-4.08],[-9.296,-3.09]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[169.251,83.249],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.335,-0.25],[-0.395,-1.759],[-1.514,-1.171],[-1.786,0.265],[-0.44,0.179],[-0.401,0.05],[-0.421,-0.354],[-0.49,-0.021],[-0.776,0.383],[-1.027,0.589],[-1.518,1.744],[-0.32,0.334],[0.711,-0.84],[0.346,-1.002],[-0.047,-0.502],[0.596,-0.265],[0.991,-0.716],[0.833,-0.909],[0.296,-1.08],[-0.208,-0.497],[0.981,0.611],[0.054,-2.586],[-0.386,0.034],[-0.008,-0.436],[-0.958,-0.367],[0.79,-2.167],[-0.165,-0.184],[-0.885,-0.061],[1.012,-1.099],[1.17,0.186],[1.094,-0.533],[0.032,-2.472],[-1.5,0.15],[-0.045,-0.317],[-0.362,0.213],[-0.698,0.412],[0.042,-0.081],[-0.363,-0.186],[0.047,-0.67],[0.605,0.331],[1.004,0.233],[-0.938,-1.618],[-0.227,-0.313],[0.553,-0.379],[1.141,-0.7],[-0.144,-1.046],[-0.157,-0.55],[0.166,-0.725],[-0.299,-0.127],[-1.658,1.934],[-1.005,0.014],[-0.402,0.732],[-1.158,0.24],[-0.288,-0.272],[0.083,-0.3],[-0.47,-0.003],[-0.955,1.763],[0.64,1],[0.668,0.255],[-0.108,0.585],[-0.463,0.249],[0.454,1.651],[-0.815,0.723],[-0.06,1.414],[-0.771,0.312],[-0.119,0.674],[1.145,0.243],[-0.047,0.089],[0.223,0.249],[0.474,0.737],[-0.348,0.366],[-0.354,0.01],[-0.607,0.179],[0.21,1.844],[-0.487,0.457],[-1.635,0.611],[0.413,0.412],[0.127,0.331],[-0.444,-0.032],[-0.457,0.456],[-0.1,0.535],[-0.551,0.72],[-2.663,3.164],[0.448,0.228],[0.559,-0.027],[-0.062,0.045],[-0.711,0.547],[-1.2,1.27],[2.135,2.425],[0.222,-0.089],[0.227,-0.09],[2.178,1.784],[0.23,-0.451],[1.642,-0.634],[0.165,1.394],[0.53,-0.261],[1.061,1.19],[0.763,0.247],[0.855,0.098],[0.617,-1.303],[-0.351,-0.559],[-0.403,-0.625],[0.271,0],[0.347,-0.181],[0.113,-0.094],[0.972,1.619],[0.323,-0.23],[0.738,-0.291],[0.169,-0.613],[-0.414,-0.396],[0.843,-0.6],[0.278,0.292],[1.377,-0.321],[0.734,-1.382],[0.221,-0.845],[1.054,0.778],[0.001,-0.504],[-0.982,-0.449],[1.05,-0.907],[-0.471,-0.172],[-0.13,-0.056],[0.699,0.37],[0.92,1.03],[1.458,-2.374],[0.354,-0.881],[1.322,-0.198],[-0.624,-1.444],[1.237,-1.011]],"o":[[1.568,1.168],[0.406,1.809],[1.426,1.102],[0.471,-0.07],[0.369,-0.151],[0.637,-0.08],[0.377,0.317],[0.884,0.038],[1.062,-0.523],[1.995,-1.143],[0.303,-0.348],[0.43,-0.451],[-0.624,0.739],[-0.176,0.509],[0.068,0.71],[-1.118,0.494],[-1,0.721],[-0.738,0.803],[-0.157,0.575],[-0.612,-0.964],[-1.918,-1.194],[-0.008,0.366],[0.833,-0.074],[0.021,1.081],[2.097,0.804],[-0.09,0.248],[0.617,0.691],[0.565,0.039],[-1.018,1.105],[-1.216,-0.194],[-2.051,0.997],[-0.02,1.533],[0.025,0.315],[0.067,0.472],[0.698,-0.412],[-0.026,0.077],[-0.174,0.332],[0.525,0.269],[-0.058,0.824],[-0.861,-0.472],[-1.656,-0.386],[0.195,0.336],[0.343,0.474],[-1.103,0.756],[-0.801,0.491],[0.079,0.573],[0.206,0.72],[-0.064,0.281],[2.391,1.015],[0.7,0.663],[0.873,-0.013],[1.157,-0.239],[0.358,-0.073],[0.287,0.272],[-0.126,0.455],[2.204,0.013],[0.506,-0.934],[-0.401,-0.626],[-0.377,-0.144],[0.109,-0.594],[1.738,-0.934],[1.089,0.017],[1.206,-1.07],[0.04,-0.943],[0.605,-0.245],[0.246,-1.376],[0.047,-0.088],[0.159,-0.299],[-0.585,-0.653],[-0.199,-0.308],[0.265,-0.278],[0.631,-0.017],[1.821,-0.537],[0.587,-0.131],[1.25,-1.174],[0.498,-0.187],[-0.247,-0.246],[-0.158,-0.409],[0.614,0.045],[0.399,-0.398],[0.158,-0.855],[2.514,-3.282],[0.282,-0.335],[-0.527,-0.269],[0.062,-0.047],[0.724,-0.527],[1.383,-1.064],[1.937,-2.048],[-0.154,-0.175],[-0.227,0.091],[-0.324,-2.764],[-0.337,-0.276],[-0.827,1.623],[0.929,-0.668],[-0.066,-0.557],[-1.476,0.728],[-0.52,-0.584],[-0.825,-0.268],[-1.034,-0.118],[-0.315,0.664],[0.396,0.629],[-0.315,0.007],[-0.391,-0.002],[-0.133,0.07],[-1.353,-1.295],[-0.188,-0.313],[-0.662,0.472],[-0.569,0.225],[-0.158,0.572],[0.392,0.376],[-0.144,-0.338],[-1.004,-1.049],[-1.569,0.367],[-0.411,0.774],[-0.178,0.677],[-0.458,-0.338],[-0.001,1.119],[0.445,0.204],[-0.446,0.385],[0.136,0.049],[-0.774,-0.089],[-1.253,-0.662],[-1.499,-1.678],[-0.505,0.821],[-0.618,1.538],[-1.697,0.254],[-1.485,0.537],[-0.398,0.325]],"v":[[-30.102,-15.762],[-27.976,-10.578],[-25.401,-5.896],[-20.322,-4.559],[-18.963,-4.929],[-17.754,-5.458],[-16.517,-4.416],[-15.162,-3.915],[-12.655,-4.621],[-9.517,-6.295],[-4.058,-10.519],[-3.174,-11.591],[-2.645,-11.52],[-4.64,-9.549],[-4.605,-8.179],[-5.439,-7.132],[-8.611,-5.323],[-11.378,-2.882],[-13.39,0.02],[-13.251,1.623],[-15.541,-0.867],[-20.82,1.349],[-20.094,2.073],[-19.975,4.827],[-18.319,6.897],[-15.84,12.074],[-15.653,12.779],[-13.269,13.685],[-11.533,14.792],[-15.737,14.429],[-19.237,15.044],[-23.929,20.756],[-20.965,23.695],[-20.859,24.64],[-19.793,25.073],[-17.7,23.838],[-17.799,24.074],[-17.538,25.065],[-16.46,26.466],[-17.832,27.065],[-20.225,25.562],[-22.398,28.154],[-21.702,29.082],[-21.827,30.134],[-25.274,32.224],[-26.719,34.38],[-26.126,36.007],[-26.094,38.168],[-25.76,38.986],[-18.925,37.427],[-16.405,38.635],[-14.351,37.465],[-10.879,36.747],[-8.902,36.485],[-8.961,37.886],[-8.261,38.802],[-3.697,35.175],[-3.336,32.122],[-5.105,30.938],[-6.609,29.966],[-4.487,28.785],[-3.13,24.456],[-0.087,23.58],[0.803,19.628],[2.143,18.297],[3.393,16.962],[1.415,14.687],[1.555,14.422],[1.442,13.545],[-0.154,11.47],[-1.028,9.43],[1.001,9.43],[2.887,9.162],[6.019,5.044],[7.658,4.069],[11.73,1.286],[12.05,0.075],[11.453,-0.776],[11.743,-1.225],[13.381,-1.686],[14.03,-3.196],[14.843,-5.448],[22.852,-14.977],[22.705,-16.114],[21.046,-16.475],[21.232,-16.613],[23.409,-18.185],[27.351,-21.656],[28.512,-29.29],[27.805,-29.476],[27.124,-29.204],[23.261,-36.317],[22.121,-36.17],[18.201,-32.944],[19.619,-35.867],[18.527,-36.493],[14.361,-37.41],[12.572,-38.753],[9.953,-39.138],[5.924,-38.698],[6.321,-36.865],[7.524,-34.987],[6.588,-35.068],[5.465,-34.803],[5.093,-34.555],[1.597,-38.926],[0.604,-39.186],[-1.667,-38.606],[-2.966,-37.318],[-2.478,-35.774],[-1.838,-34.182],[-2.439,-35.134],[-6.425,-36.152],[-9.935,-33.158],[-10.841,-30.71],[-12.575,-28.933],[-13.667,-28.308],[-11.929,-25.934],[-9.697,-24.076],[-9.377,-22.866],[-8.979,-22.706],[-11.209,-23.393],[-14.15,-26.174],[-19.963,-26.601],[-20.943,-23.924],[-24.197,-22.818],[-26.167,-19.226],[-30.249,-16.899]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[199.416,80.105],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.635,0.427],[-0.892,0.6],[-0.789,0.539],[0.096,0.8],[0.419,0.567],[0.608,0.645],[0.767,0.237],[0.545,-0.241],[0.385,0.42],[0.372,0.182],[0.564,-0.039],[0.979,-0.157],[1.646,-0.425],[-0.033,-0.312],[-0.366,-0.7],[-0.31,-0.259],[0.362,-0.41],[-0.177,-0.677],[-0.014,-0.639],[0.271,-0.316],[0.19,-0.337],[0.207,-0.732],[1.078,-1.427],[-0.54,0.079],[-0.552,-0.564],[-0.425,-0.513],[-1.092,0.611],[-0.738,-0.123],[-0.222,0.657],[0.119,0.736],[-0.192,0.335],[-0.425,0.082],[-0.348,1.106]],"o":[[0.892,-0.6],[0.794,-0.533],[0.585,-0.399],[-0.087,-0.722],[-0.525,-0.712],[-0.54,-0.573],[-0.635,-0.196],[-0.584,0.258],[-0.278,-0.304],[-0.525,-0.257],[-0.424,-0.794],[-1.678,0.269],[-0.394,0.101],[-0.19,0.755],[0.188,0.359],[0.411,0.345],[-0.451,0.509],[0.165,0.631],[0.01,0.448],[-0.252,0.295],[-0.374,0.666],[-0.474,1.677],[-0.431,0.572],[0.782,-0.114],[0.468,0.478],[0.892,1.078],[0.65,-0.363],[0.693,0.115],[0.249,-0.736],[-0.057,-0.355],[0.254,-0.442],[1.55,-0.301],[0.246,-0.781]],"v":[[4.429,1.257],[7.105,-0.543],[9.486,-2.143],[10.605,-3.758],[9.478,-5.734],[7.783,-7.777],[5.665,-9.655],[3.805,-9.151],[2.781,-9.531],[1.803,-10.268],[0.151,-10.579],[-2.229,-11.526],[-7.223,-10.266],[-7.734,-9.527],[-7.51,-7.281],[-6.756,-6.35],[-6.641,-5.576],[-7.139,-3.786],[-6.253,-1.868],[-6.982,-0.801],[-7.65,0.152],[-8.486,2.285],[-10.27,7.155],[-9.45,8.219],[-7.294,8.947],[-6.21,10.604],[-3.04,10.836],[-1.361,10.443],[0.098,9.561],[-0.032,7.292],[0.031,6.137],[1.163,5.786],[2.627,2.914]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.86,142.149],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.392,-0.019],[0.187,-0.009],[0.738,0.385],[0.663,0.531],[0.239,0.727],[-0.306,0.523],[0.062,0.805],[0.635,0.168],[0.111,0.346],[0.29,0.596],[0.045,0.14],[-0.137,0.641],[0.009,0.749],[0.871,1.073],[0.979,-0.824],[-0.047,-0.242],[0.235,-0.461],[0.115,0.032],[0.608,-0.921],[-0.035,-0.636],[-0.071,-0.994],[-0.066,-0.936],[0.504,-0.032],[0.026,0.49],[0.217,0.864],[0.414,0.848],[0.896,0.254],[-0.152,-0.528],[1.836,0.779],[0.677,0.724],[0.667,-0.044],[-0.267,0.26],[0.609,0.032],[0.561,0.326],[0.198,-0.261],[1.035,-0.848],[1.242,-0.82],[-0.038,-0.866],[-0.161,-0.228],[0.225,-0.521],[-1.727,-0.527],[-1.257,-0.298],[0.337,-0.244],[0.061,-0.673],[-0.582,-0.276],[-0.657,-0.41],[-0.829,0.042],[-0.867,0.04],[-1.224,-0.715],[1.046,-0.077],[0.763,0.108],[0.035,0.005],[0.293,0],[0.817,-1.242],[-0.431,-0.429],[-0.281,-0.063],[-0.07,-0.008],[0.016,-0.067],[-0.189,-0.337],[-0.819,0.146],[-0.274,0.049],[-0.531,-0.146],[-0.059,-0.074],[-0.344,-0.213],[0.072,-0.51],[-0.289,-0.213],[0.191,-0.445],[-0.317,-0.181],[-1.098,0.456],[-0.701,0.304],[-0.777,0.208],[-0.867,1.786],[-2.445,-0.4],[-0.521,0.461],[0.288,0.579],[0.636,0.284],[0.066,0.272],[-0.064,0.069],[-1.014,-0.445],[-0.188,0.469],[-0.003,0.726]],"o":[[-0.187,0.009],[-0.046,-0.735],[-0.74,-0.386],[-0.449,-0.668],[-0.039,-0.598],[0.384,-0.658],[-0.055,-0.702],[-0.014,-0.348],[-0.21,-0.663],[-0.042,-0.141],[-0.074,-0.672],[0.156,-0.732],[-0.016,-1.333],[-0.794,-0.979],[-0.204,0.173],[0.104,0.542],[-0.107,-0.043],[-1.011,-0.275],[-0.361,0.549],[0.054,0.995],[0.066,0.936],[0.032,0.444],[-0.859,0.055],[-0.045,-0.891],[-0.231,-0.915],[-0.431,-0.885],[-0.529,-0.15],[0.634,2.214],[0.546,-0.677],[-0.552,-0.589],[0.24,-0.278],[0.47,-0.459],[-0.648,-0.035],[-0.366,-0.213],[-1.241,0.529],[-1.289,0.757],[-0.668,0.44],[0.014,0.323],[-0.351,0.446],[-0.646,1.495],[1.287,0.391],[-0.406,0.39],[-0.531,0.382],[-0.058,0.644],[0.708,0.336],[0.644,0.403],[0.852,-0.044],[1.429,-0.068],[-0.967,0.386],[-0.768,0.058],[-0.035,-0.005],[-0.109,-0.196],[-1.354,-0.002],[-0.327,0.497],[0.206,0.206],[0.069,0.016],[-0.06,0.121],[-0.088,0.368],[0.515,0.919],[0.274,-0.049],[0.56,-0.029],[0.036,0.08],[0.271,0.341],[0.484,0.299],[-0.05,0.356],[0.387,0.284],[-0.183,0.427],[0.969,0.696],[0.707,-0.293],[0.74,-0.321],[1.909,-0.511],[1.748,1.803],[0.633,0.104],[0.493,-0.438],[-0.325,-0.656],[-0.364,-0.163],[0.07,-0.037],[0.723,-0.793],[0.464,0.203],[0.271,-0.676],[0.001,-0.377]],"v":[[17.747,6.223],[17.186,6.25],[15.912,4.432],[13.609,3.474],[12.585,1.389],[12.988,-0.316],[13.809,-2.426],[12.559,-3.889],[12.382,-4.927],[11.396,-6.647],[11.266,-7.068],[11.783,-9.159],[12.01,-11.393],[10.925,-15.465],[7.833,-15.839],[7.646,-15.134],[7.43,-13.652],[7.098,-13.767],[4.191,-12.867],[3.841,-11.06],[4.053,-8.076],[4.253,-5.268],[4.145,-2.833],[3.436,-5.184],[3.044,-7.833],[2.066,-10.486],[-0.059,-11.654],[-0.951,-10.764],[-4.344,-7.669],[-4.409,-10.137],[-6.283,-10.879],[-5.523,-11.686],[-6.036,-12.923],[-7.803,-13.461],[-8.715,-13.272],[-12.115,-11.164],[-15.932,-8.82],[-17.206,-6.908],[-16.932,-6.077],[-17.827,-4.641],[-16.357,-0.604],[-12.253,-0.793],[-13.855,0.092],[-14.934,1.732],[-14.053,3.241],[-11.833,3.613],[-9.986,4.419],[-7.471,3.953],[-3.398,4.948],[-6.428,5.659],[-8.73,5.581],[-8.835,5.566],[-9.439,5.227],[-13.766,6.798],[-13.643,8.38],[-12.895,8.758],[-12.686,8.792],[-12.812,9.086],[-12.702,10.23],[-10.234,10.611],[-9.411,10.464],[-7.758,10.624],[-7.624,10.857],[-6.652,11.443],[-6.316,12.871],[-5.982,13.689],[-5.626,14.96],[-5.266,15.966],[-2.154,16.107],[-0.096,15.105],[2.214,14.387],[7.188,11.193],[14.07,14.091],[15.912,13.82],[16.189,12.111],[14.663,10.892],[13.952,10.283],[14.154,10.129],[17.014,9.448],[18.081,9.016],[18.473,6.948]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[133.94,153.047],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.378,-0.302],[-0.478,-0.651],[-0.376,-0.44],[-1.071,0.19],[-0.154,1.131],[0.274,0.534],[0.007,0.802],[1.283,0.208],[0.706,0.282],[0.677,-0.174],[0.281,-0.893],[0.007,-0.036],[0.032,-0.263],[-0.009,-0.061],[0.016,-0.342]],"o":[[0.585,0.468],[0.339,0.461],[0.78,0.911],[0.961,-0.17],[0.088,-0.651],[-0.375,-0.731],[-0.012,-1.275],[-0.736,-0.12],[-0.612,-0.245],[-0.989,0.255],[-0.013,0.032],[-0.073,0.255],[-0.009,0.072],[-0.131,0.311],[-0.023,0.492]],"v":[[-4.157,0.893],[-2.323,1.993],[-1.611,3.503],[1.931,4.262],[4.663,2.423],[3.989,0.777],[3.558,-1.451],[1.599,-3.752],[-0.6,-3.977],[-2.393,-4.279],[-4.227,-2.361],[-4.257,-2.257],[-4.415,-1.477],[-4.411,-1.279],[-4.728,-0.318]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.771,137.857],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.3,0.134],[0.918,1.239],[1.102,0.967],[1.234,0.577],[0.805,0.867],[-0.917,0.88],[0.545,0.095],[0.918,0.888],[-0.466,0.266],[0.321,0.332],[0.31,0.705],[0.322,-0.255],[0.645,-0.124],[0,0],[0.4,0.242],[1.072,0.648],[0.217,-0.133],[0.263,-0.134],[-0.034,0.069],[0.021,0.407],[0.624,0.557],[1.587,-0.42],[0.229,0.877],[0.377,0.3],[0.707,0.053],[0.195,0.42],[0.209,0.187],[0.646,-0.114],[0.55,-0.349],[0.445,-0.118],[0.134,0.634],[0.323,0.759],[0.517,0.678],[0.571,0.604],[0.836,0.161],[1.021,-1.033],[0.559,-0.69],[0.293,-0.869],[-0.16,-0.389],[0.103,-0.303],[0.131,0.354],[-0.175,0.494],[-0.512,0.995],[-0.669,1.03],[0.444,0.101],[1.468,-0.172],[0.196,-0.145],[0.01,-0.002],[0.009,-0.27],[0.817,-3.519],[-1.047,-1.467],[-1.017,0.279],[-0.333,-0.766],[0.286,0.162],[-0.022,-0.559],[-1.706,-0.634],[-0.592,0.371],[-0.149,0.08],[-0.258,-0.091],[-0.236,-0.179],[-0.848,-0.179],[-1.165,-0.161],[-2.301,-0.003],[0.241,0.481],[-0.517,0.107],[-0.482,-0.165],[-0.366,0.561],[-0.488,-0.812],[-0.66,-0.267],[0.048,-0.597],[0.483,0.029],[0.112,-0.212],[-0.829,-0.112],[-0.486,-0.149],[-0.341,-0.35],[-0.221,-2.266],[0.055,-0.54],[0.523,-0.382],[0.212,-0.757],[-0.656,-0.939],[0.926,-1.148],[0.267,0.117],[0.327,-0.852],[-2.304,0.53],[-0.513,0.258],[-0.643,-0.515],[-0.951,-0.994],[-2.425,-1.307],[-0.576,2.723],[0.381,0.161],[0.931,1.911],[-1.061,-0.594],[-0.695,1.588],[-0.194,0.703],[0.144,0.805],[0.416,0.446],[0.687,0.712],[0.757,1.462],[-0.322,0.665],[-0.711,-0.42],[-0.802,-1.311],[-1.483,0.188],[-0.694,1.121],[-0.355,1.692]],"o":[[-1.403,-0.624],[-0.857,-1.157],[-1.048,-0.92],[-1.084,-0.506],[1.213,-0.222],[0.367,-0.352],[-1.307,-0.228],[0.466,-0.265],[0.412,-0.235],[-0.537,-0.555],[-0.207,-0.472],[-0.53,0.418],[0,0],[0.333,-0.335],[-1.072,-0.647],[-0.217,-0.131],[-0.256,0.158],[0.046,-0.073],[0.177,-0.366],[-0.044,-0.863],[-1.231,-1.097],[-0.483,-0.819],[-0.121,-0.46],[-0.598,-0.475],[-0.569,-0.042],[-0.116,-0.251],[-0.509,-0.453],[-0.649,0.114],[-0.383,0.242],[-0.698,0.185],[-0.169,-0.796],[-0.334,-0.785],[-0.504,-0.661],[-0.557,-0.591],[-1.641,-0.318],[-0.623,0.632],[-0.57,0.702],[-0.136,0.402],[0.109,0.264],[-0.239,0.703],[-0.188,-0.509],[0.373,-1.056],[0.561,-1.092],[0.248,-0.382],[-1.458,-0.332],[-0.191,-0.071],[-0.009,0.002],[-0.355,0.058],[-2.4,2.691],[-0.376,1.62],[0.662,0.929],[0.333,0.767],[-0.298,-0.109],[-0.462,-0.263],[0.063,1.589],[0.645,0.24],[0.148,-0.093],[0.252,-0.134],[0.262,0.091],[0.707,0.534],[1.15,0.244],[2.28,0.315],[0.577,0],[-0.146,-0.291],[0.44,-0.09],[0.74,0.252],[0.98,0.552],[0.377,0.625],[0.458,0.185],[-0.043,0.548],[-0.242,-0.015],[-0.383,0.729],[0.507,0.068],[0.478,0.145],[1.589,1.631],[0.053,0.538],[-0.076,0.752],[-0.638,0.467],[-0.322,1.153],[-1.355,0.539],[-0.316,-0.253],[-0.965,-0.419],[-0.771,2.004],[0.574,-0.133],[0.811,-0.408],[1.078,0.863],[1.907,1.991],[1.131,0.609],[0.089,-0.422],[-1.997,-0.84],[1.06,0.595],[1.063,0.596],[0.293,-0.67],[0.21,-0.765],[-0.11,-0.616],[-0.676,-0.723],[-1.129,-1.17],[-0.327,-0.63],[0.36,-0.743],[1.349,0.799],[0.599,0.979],[1.444,-0.183],[0.912,-1.473],[0.06,-0.287]],"v":[[28.042,8.857],[24.48,6.069],[22.206,2.414],[18.55,0.621],[15.698,-1.461],[18.943,-3.138],[18.623,-4.349],[15.277,-6.031],[16.674,-6.828],[16.821,-7.966],[15.589,-9.822],[14.45,-9.967],[12.661,-9.15],[14.043,-10.538],[13.896,-11.676],[10.681,-13.618],[9.948,-13.618],[9.168,-13.184],[9.291,-13.397],[9.558,-14.543],[8.274,-16.809],[3.712,-17.928],[3.291,-20.93],[2.575,-22.112],[0.642,-22.531],[-0.057,-23.267],[-0.525,-23.927],[-2.4,-24.339],[-4.18,-23.581],[-5.418,-22.94],[-6.542,-23.773],[-7.128,-26.083],[-8.43,-28.26],[-10.06,-30.145],[-12.016,-31.557],[-16.129,-29.129],[-17.904,-27.145],[-19.541,-24.775],[-19.514,-23.581],[-18.982,-22.565],[-20.143,-22.966],[-20.023,-24.526],[-18.548,-27.592],[-16.719,-30.781],[-17.152,-31.845],[-21.524,-32.077],[-22.127,-31.992],[-22.155,-31.988],[-22.677,-31.414],[-27.629,-21.949],[-27.39,-16.828],[-24.583,-15.781],[-23.584,-13.48],[-24.458,-13.887],[-25.55,-13.262],[-23.514,-9.16],[-21.555,-9.302],[-21.138,-9.642],[-20.797,-9.703],[-19.983,-8.876],[-17.512,-8.004],[-14.038,-7.397],[-7.163,-6.924],[-6.536,-8.014],[-6.485,-9.587],[-4.77,-8.326],[-2.819,-8.913],[-1.258,-5.22],[0.315,-4.001],[1.235,-2.993],[0.181,-2.25],[-0.446,-1.892],[0.436,-0.237],[1.91,-0.469],[3.213,0.625],[6.047,6.719],[6.068,8.362],[4.837,9.611],[3.546,11.53],[4.081,14.833],[0.527,17.199],[-0.765,15.961],[-2.819,17.18],[0.307,21.172],[1.816,20.414],[3.942,20.967],[6.893,23.867],[13.396,28.724],[19.513,29.525],[19.006,28.634],[14.496,24.319],[17.678,26.102],[21.017,26.059],[21.638,23.913],[22.03,21.503],[21.128,19.982],[19.065,17.845],[15.713,14.039],[15.567,12.039],[17.287,11.508],[20.579,15.147],[23.084,17.867],[26.475,14.473],[28.376,9.676]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[199.735,167.947],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.515,1.063],[1.625,-4.024],[0,0],[0.162,-0.39],[1.134,-0.939],[0.66,3.238],[0.388,-0.202],[1.926,-0.999],[1.571,0.003],[1.839,0.118],[-5.123,2.32],[0.573,0.139],[0.915,1.699],[1.415,0.808],[0.754,-0.304],[1.013,-0.215],[1.636,0.493],[-1.807,0.474],[0.49,0.343],[0.371,1.815],[0.231,0.048],[1.376,0.285],[0.026,-0.412],[2.332,-0.026],[1.616,-1.183],[0.036,-0.738],[-0.157,-0.977],[0.987,-0.198],[0.102,1.075],[0.492,-0.117],[3.824,-1.165],[-0.256,-0.407],[-1.921,0.103],[-0.737,-1.449],[1.79,0.334],[-0.105,-0.565],[1.549,-3.751],[4.334,0.768],[0.173,-0.295],[-1.725,-1.487],[0.709,0.041],[0.909,0.628],[-0.855,1.412],[0.607,-0.491],[3.187,-1.097],[-0.151,-0.383],[-1.77,-2.448],[0.303,0.236],[0.582,0.71],[1.579,-1.236],[-0.081,-0.215],[0.329,-1.308],[1.105,0.425],[0.058,-0.359],[0.131,-0.807],[0.365,-0.093],[0.331,-0.286],[0.707,-0.957],[0.454,-2.371],[-0.505,0.032],[-1.443,-0.125],[0.594,-2.225],[0.982,-0.646],[1.03,-0.38],[2.532,-3.355],[-0.107,-0.214],[-3.078,-1.127],[-1.477,1.694],[-0.044,-0.615],[1.121,-0.432],[0.85,-0.684],[-0.261,-0.866],[-0.054,-0.912],[0.139,-0.52],[-0.08,-0.458],[-0.684,-0.472],[-1.779,0.893],[-1.158,0.445],[-1.145,-0.016],[-1.685,-1.675],[-1.107,-2.121],[-0.908,-2.469],[1.965,-5.534],[-0.272,-0.129],[-0.759,-0.36],[0.04,0.593],[-0.28,0.108],[-0.782,-2.954],[0.979,0.936],[0.27,-0.294],[-1.186,-1.408],[0.49,-2.397],[-1.318,-2.349],[-0.534,-0.415],[-0.186,-0.817],[-0.15,-1.472],[-0.762,-1.604],[-0.733,-1.445],[-1.968,-2.674],[-3.121,-1.96],[-0.225,0.219],[-0.751,5.286],[-0.441,1.389],[-0.33,0.626],[-0.784,0.428],[-1.96,2.297],[-1.02,2.916],[-2.522,1.904],[-1.69,1.449],[-1.885,1.615],[0.491,0.145],[1.701,0.844],[-0.141,1.682],[-0.572,-0.645],[-0.448,-0.142],[-0.305,0.156],[1.045,1.261],[0.619,0.876],[0.093,0.94],[-1.211,1.245],[-1.697,0.806],[1.076,1.416],[0.331,0.744],[-0.152,0.664],[-1.496,0.088],[0.254,0.505],[-0.11,2.085],[0.686,0.901],[0.588,1.063],[-0.877,0.283],[-0.756,-0.236],[1.044,1.612],[0.765,0.983],[-0.938,0.032],[0.064,0.471],[1.725,0.174],[-1.236,1.852],[0.319,2.443],[0.036,1.316],[-0.372,1.241],[-0.312,0.559],[-0.836,-0.132],[-0.63,0.564],[-0.245,1.482],[-0.714,0.807],[-1.038,1.105],[-0.899,0.955],[-0.318,1.165]],"o":[[-3.712,-2.604],[0,0],[-0.425,-0.3],[-0.58,1.391],[1.376,-2.961],[-0.098,-0.481],[-1.926,0.999],[-0.778,-1.364],[-1.811,-0.004],[5.123,-2.32],[0.576,-0.261],[-1.869,-0.451],[-0.703,-1.307],[-0.735,-0.42],[-0.952,0.383],[-1.68,0.356],[1.698,-0.762],[0.644,-0.169],[-1.528,-1.068],[-0.047,-0.231],[-1.376,-0.285],[-0.528,-0.109],[-2.331,0.026],[-1.881,0.021],[-0.585,0.428],[-0.052,1.055],[0.157,0.98],[-1.1,0.22],[-0.046,-0.474],[-3.889,0.928],[-0.434,0.132],[1.119,1.776],[1.272,-0.067],[-1.797,0.258],[-0.568,-0.106],[0.744,4.002],[-2.336,-3.696],[-0.321,-0.057],[-1.178,2.019],[-0.548,0.455],[0.09,-1.048],[-0.777,-0.537],[0.453,-0.748],[-2.619,2.121],[-0.341,0.117],[1.105,2.813],[-0.455,0.291],[-0.736,-0.573],[-1.094,-1.335],[-0.184,0.144],[0.452,1.207],[-0.265,1.056],[-0.339,-0.131],[-0.132,0.807],[-0.475,-0.118],[-0.428,0.109],[-0.901,0.779],[-1.437,1.945],[-0.082,0.43],[1.45,-0.091],[-0.569,2.231],[-0.288,1.077],[-0.929,0.61],[-3.955,1.462],[-0.159,0.21],[1.373,2.751],[2.091,0.765],[0.29,0.53],[-1.122,0.432],[-1.001,0.386],[-0.688,0.554],[0.259,0.863],[0.032,0.554],[-0.121,0.446],[0.145,0.829],[1.75,1.206],[1.104,-0.555],[1.07,-0.41],[2.382,0.032],[1.715,1.705],[1.217,2.331],[1.981,5.385],[-0.099,0.278],[0.759,0.36],[0.457,0.216],[-0.025,-0.364],[1.715,2.54],[-1.27,-0.359],[-0.273,-0.262],[-1.73,1.884],[1.593,1.891],[-2.001,0.376],[0.342,0.61],[0.671,0.521],[0.331,1.451],[0.18,1.783],[0.695,1.464],[1.498,2.957],[2.175,2.956],[0.274,0.172],[4.113,-4.011],[0.205,-1.441],[0.213,-0.673],[0.426,-0.807],[2.651,-1.446],[2.011,-2.358],[3.064,1.513],[1.778,-1.343],[1.885,-1.615],[0.429,-0.368],[-1.825,-0.537],[0.48,-1.621],[0.773,0.341],[0.29,0.327],[0.339,0.107],[1.726,-0.886],[-0.682,-0.823],[-0.547,-0.774],[-0.173,-1.749],[1.4,1],[1.508,-0.716],[-0.481,-0.632],[-0.281,-0.631],[0.318,-1.381],[0.566,-0.034],[-1.013,-2.015],[0.059,-1.129],[-0.734,-0.963],[-0.325,-0.587],[0.817,-0.264],[2.124,0.663],[-0.696,-1.075],[-0.294,-0.378],[0.52,-0.018],[-0.239,-1.758],[-0.547,-2.13],[1.192,-1.785],[-0.168,-1.289],[-0.036,-1.294],[0.184,-0.612],[0.443,-0.794],[0.803,0.128],[1.227,-1.101],[0.174,-1.049],[1.004,-1.135],[0.899,-0.955],[0.796,-0.847],[0.539,-1.974]],"v":[[57.053,-61.129],[46.628,-57.981],[44.492,-59.491],[43.426,-59.058],[40.802,-55.535],[41.911,-65.093],[40.846,-65.526],[35.066,-62.529],[31.01,-64.423],[25.358,-63.521],[40.725,-70.482],[40.553,-71.806],[36.171,-75.139],[33.898,-79.104],[31.583,-79.116],[28.738,-78.088],[23.669,-78.313],[28.928,-80.166],[29.102,-81.49],[26.216,-85.956],[25.708,-86.462],[21.579,-87.317],[20.674,-86.592],[13.68,-86.513],[7.932,-85.528],[6.897,-83.743],[7.829,-81.047],[6.288,-78.752],[3.954,-80.563],[3.035,-81.261],[-8.537,-78.12],[-8.971,-77.056],[-3.796,-75.205],[1.042,-74.097],[-4.361,-74.21],[-5.254,-73.319],[-6.505,-61.417],[-17.046,-68.521],[-17.866,-68.189],[-16.813,-62.054],[-18.771,-61.431],[-20.39,-64.068],[-23.898,-67.033],[-25.038,-67.911],[-33.815,-63.057],[-34.322,-62.166],[-30.015,-54.259],[-31.751,-54.852],[-33.444,-56.998],[-37.774,-58.201],[-37.96,-57.497],[-37.246,-53.569],[-39.652,-52.027],[-40.544,-51.522],[-40.938,-49.101],[-42.291,-49.232],[-43.492,-48.34],[-45.899,-45.714],[-48.764,-39.136],[-48.064,-38.22],[-43.729,-38.168],[-45.449,-31.476],[-47.058,-28.641],[-50.17,-27.435],[-60.054,-20.034],[-60.054,-19.303],[-53.949,-12.264],[-47.713,-13.529],[-47.214,-11.806],[-50.578,-10.51],[-53.61,-9.146],[-54.372,-6.898],[-53.05,-4.485],[-53.533,-2.848],[-53.629,-1.491],[-52.27,0.495],[-46.705,0.412],[-43.423,-1.319],[-40.066,-1.905],[-33.752,0.749],[-29.794,6.784],[-26.545,13.969],[-25.56,30.746],[-25.227,31.563],[-22.951,32.642],[-21.859,32.017],[-21.46,31.279],[-17.699,39.551],[-21.096,37.614],[-22.122,37.614],[-20.342,42.954],[-18.657,49.834],[-22.374,53.987],[-20.906,55.346],[-19.697,57.369],[-19.385,61.814],[-17.763,66.808],[-15.628,71.176],[-10.54,79.717],[-2.667,87.254],[-1.788,87.141],[2.922,71.792],[3.839,67.525],[4.626,65.552],[6.431,63.891],[13.423,58.242],[18.005,50.271],[27.199,47.972],[32.318,43.657],[37.973,38.811],[37.652,37.6],[32.366,35.53],[33.294,30.57],[35.333,32.046],[36.31,33.102],[37.432,32.941],[37.82,28.522],[35.585,26.238],[34.625,23.599],[36.221,18.876],[41.044,19.996],[42.245,16.107],[40.706,14.311],[40.564,12.289],[43.44,9.515],[44.066,8.425],[44.764,1.814],[43.826,-1.27],[41.337,-3.986],[41.615,-6.311],[44.341,-5.511],[46.182,-8.606],[43.51,-11.197],[43.44,-13.429],[44.141,-14.346],[40.672,-17.62],[41.703,-23.886],[44.578,-29.185],[43.962,-32.994],[44.467,-36.814],[45.178,-38.613],[46.872,-39.203],[49.121,-39.702],[50.451,-44.298],[51.738,-46.966],[54.854,-50.287],[57.549,-53.152],[59.674,-56.041]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[265.085,120.304],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.022,0.03],[-0.088,0.002],[0.064,-0.013]],"o":[[0.082,0.021],[-0.062,0.025],[-0.022,-0.027]],"v":[[89.855,14.513],[90.11,14.542],[89.921,14.602]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[1.898,1.174],[0.003,0.979],[0.393,0.036],[1.463,0.985],[1.29,0.868],[-0.151,0.538],[0.632,1.261],[2.004,2.586],[0.208,-0.366],[0.943,-1.662],[0.476,-0.829],[0.533,0.312],[0.207,0.299],[-0.922,3.452],[0.532,-0.096],[0.844,1.305],[1.427,0.164],[1.318,-0.204],[0.877,1.122],[0.066,-0.568],[0.047,-0.323],[-0.295,-1.767],[0.292,-0.309],[-0.153,-0.294],[0.307,-1.306],[0.685,-1.082],[-1.422,-1.899],[2.969,-1.361],[1.032,-0.622],[-0.494,-1.056],[-0.267,-0.763],[0.004,-0.744],[0.825,-1.108],[0.675,0.3],[0.802,0.915],[0.169,2.262],[0.78,0.577],[1.152,0.552],[1.314,0.779],[0,0],[1.309,-0.311],[0.433,-0.357],[0.545,0.329],[1.097,2.086],[0.333,-0.294],[0.525,-0.037],[-0.511,2.098],[-0.322,1.12],[-0.532,0.897],[-0.987,0.204],[-0.231,0.778],[0.909,0.772],[-1.291,3.171],[-0.127,0.962],[-0.315,0.399],[-0.372,0.146],[-0.487,0.7],[-0.137,0.509],[-0.28,0.151],[-1.95,1.095],[1.154,2.42],[-0.802,1.129],[0.318,1.351],[1.023,0.516],[1.545,0.748],[0.219,-0.355],[0.016,-1.954],[0.563,-1.017],[0.58,-1.048],[0.041,1.236],[1.84,0.491],[0.187,-0.267],[0,0],[1.565,1.275],[0.649,1.38],[1.855,2.473],[0.378,-0.203],[0.062,-2.975],[-1.223,-1.291],[-1.339,-0.278],[0.538,-1.408],[0.372,-0.464],[0.076,-0.593],[-0.061,-0.68],[0.263,-0.31],[0.051,-0.046],[2.95,-0.445],[-0.49,-0.293],[0.301,-0.187],[0.226,-0.066],[0.552,-0.138],[1.173,-0.062],[1.075,0.374],[1.06,0.455],[0.966,-2.646],[1.495,-0.144],[2.144,1.552],[-0.295,0.93],[-0.328,0.422],[0.002,0.473],[0.793,0.448],[1.104,-0.173],[2.496,1.751],[2.029,-1.122],[0.358,-0.407],[0.819,0.619],[0.434,0.547],[0.487,0.701],[0.227,-0.594],[0.096,0.053],[0.468,0.037],[0.875,-0.503],[0.961,-0.474],[0.674,0.078],[0.417,-0.182],[0.48,-0.554],[0.867,-0.194],[0.139,-0.741],[-0.266,-0.361],[-0.153,-0.208],[2.04,1.525],[1.279,0.358],[1.357,0.729],[1.171,0.664],[1.37,0.254],[1.445,-0.1],[0.3,1.635],[0.299,0.005],[2.758,0.386],[0.366,0.52],[0.834,-0.464],[0.998,-0.875],[1.342,-0.178],[0.863,-2.086],[0.851,-1.037],[1.12,0.499],[0.182,-0.083],[-0.115,-0.696],[0.497,-0.27],[-0.421,-0.3],[-0.959,-1.504],[-1.615,-0.17],[-0.598,-0.763],[0.214,-0.684],[-0.596,2.039],[0.537,-0.336],[2.58,-1.609],[-0.195,-0.351],[-0.449,-0.18],[-0.409,-0.228],[-0.045,-0.543],[-0.362,-0.346],[-1.05,0.074],[-0.539,-1.17],[-0.222,0.47],[-1.141,0.011],[0.165,-0.221],[-0.395,-0.138],[0.313,-0.595],[0.896,-0.087],[0.868,-0.342],[0.521,-0.777],[0.693,-1.032],[-0.027,-1.011],[-0.651,-0.434],[-0.295,-0.234],[-0.112,-0.223],[-0.202,0.019],[-0.308,-0.506],[-1.736,-0.421],[-0.386,0.05],[-0.215,-0.531],[0.014,-0.494],[0.071,-0.632],[-0.203,-0.11],[-0.91,0.73],[-0.398,0.045],[-0.108,-0.4],[-0.42,0.178],[-1.131,0.443],[0.212,-0.369],[0.902,-0.951],[1.017,-0.922],[1.152,-1.043],[-0.681,0.207],[-2.478,2.051],[-0.349,0.605],[-0.683,0.518],[-0.903,1.034],[0.494,1.062],[0.05,0.204],[-0.15,0.265],[-0.459,0.803],[-0.459,0.802],[-0.92,0.11],[-0.627,0.164],[-0.032,-0.288],[0.794,-1.977],[-0.251,-0.157],[0.507,-0.387],[-0.662,-0.168],[-1.095,1.346],[-0.389,0.25],[-0.454,0.144],[-0.023,0.808],[0.093,0.386],[-0.019,0.204],[0,0],[0.038,-0.146],[-0.12,-0.112],[-0.36,-0.071],[-0.853,-0.148],[-0.557,-0.712],[-0.233,-0.102],[-2.951,-2.582],[-1.621,-3.496],[-1.372,-1.006],[-0.763,-0.103],[-0.485,-0.524],[-0.634,-0.426],[-0.43,-0.851],[0.05,-0.785],[-0.499,-0.81],[-0.843,-1.51],[-0.205,-0.844],[-0.554,-0.686],[-1.33,-0.421],[0.959,-1.457],[0.243,-0.243],[0.039,-0.285],[-0.223,-0.959],[0.17,-2.236],[0.308,-2.116],[0.14,-0.966],[-0.146,-0.959],[-0.559,-1.633],[-0.333,-0.806],[-0.687,-0.623],[-0.994,-1.489],[-0.71,-0.193],[-0.945,-0.041],[-0.992,-1.181],[-0.042,-1.407],[-0.74,-1.118],[0.92,-0.952],[-0.521,-0.167],[-0.904,-2.415],[-0.895,-0.975],[-1.148,0.258],[0.273,0.37],[2.311,3.138],[0.831,1.528],[-1.307,0.795],[-1.343,-2.5],[-2.325,-2.351],[-0.864,-1.449],[0.065,-0.969],[-0.253,-0.667],[-2.401,-1.528],[-3.377,-0.713],[-1.629,0.219],[-1.602,-0.882],[-2.38,-0.824],[-0.548,0.015],[-0.435,-0.11],[-0.381,-0.349],[-1.465,-1.345],[-1.641,-1.052],[-0.826,-0.099],[-0.368,-0.226],[-0.249,-0.346],[-0.418,1.617],[-0.925,0.209],[-0.292,-0.884],[0.026,0.851],[2.04,-0.406],[0.929,0.244],[0.411,0.641],[0.342,1.408],[-0.305,0.913],[0.05,0.727],[1.175,0.461],[2.778,-0.453],[-0.475,1.278],[-0.578,1.738],[1.484,0.332],[1.467,-0.667],[0.071,-1.352],[0.801,-0.373],[0.754,-0.124],[1.432,1.076],[0.493,1.289],[0.254,1.516],[-1.254,1.175],[0.481,0.186],[-0.281,0.772],[-0.79,0.666],[-0.853,0.706],[-0.583,0.217],[-0.717,-0.247],[-2.059,0.588],[-1.868,-0.952],[-1.542,0.025],[-0.338,0.161],[-0.208,0.07],[-0.295,-0.441],[-0.279,-1],[-1.465,-1.129],[0.01,1.892],[0.356,0.934],[0.218,1.118],[-1.43,1.962],[0.02,0.142],[-0.576,0.306],[-0.393,0.538],[-0.088,0.701],[-0.692,-0.049],[-1.069,0.654],[-0.549,0.513],[-0.075,0.255],[0.196,0.408],[0.551,1.32],[0.249,0.643],[-0.686,0.335],[-0.699,0.267],[-0.09,0.89],[-0.537,0.437],[-0.525,0.161],[-1.437,0.496],[-0.004,1.015],[-0.752,1.056],[-2.292,0.925],[-0.699,0.355],[0.554,-0.255],[-0.456,-1.147],[-1.14,0.341],[-0.443,0.404],[-0.573,0.472],[2.075,1.942],[0.469,-0.078],[0.767,0.273],[0.599,0.196],[0.259,0.017],[-0.017,0.136],[0.646,0.776],[0.068,0.333],[-0.378,0.3],[1.881,0.987],[1.972,-1.411],[-0.612,0.608],[-2.801,0.292],[-2.506,0.811],[-1.147,0.608],[-0.402,1.101]],"o":[[0.461,-0.837],[-0.001,-0.418],[-1.826,-0.167],[-1.29,-0.868],[0.43,-0.344],[0.411,-1.456],[-1.466,-2.926],[-0.29,-0.374],[-0.943,1.662],[-0.472,0.831],[-0.27,0.469],[-0.324,-0.188],[-1.887,-2.738],[0.152,-0.569],[-1.844,0.331],[-0.704,-1.087],[-1.361,-0.156],[-1.423,0.221],[-0.433,-0.554],[-0.237,0.034],[-0.258,1.789],[-0.376,0.118],[-0.232,0.244],[0.521,1.007],[-0.305,1.297],[-1.779,2.813],[1.595,2.13],[-1.072,0.491],[-1.049,0.631],[0.34,0.725],[0.246,0.703],[-0.007,1.393],[-0.484,-0.536],[-1.05,-0.466],[-1.723,-1.966],[-0.069,-0.932],[-1.075,-0.797],[-1.379,-0.659],[0,0],[-1.037,-0.616],[-0.585,0.138],[-0.501,0.412],[-0.17,-2.342],[-0.23,-0.436],[-0.419,0.369],[0.353,-2.13],[0.276,-1.132],[0.285,-0.991],[0.587,-0.991],[0.778,-0.161],[0.383,-1.292],[3.19,-1.213],[0.366,-0.899],[0.064,-0.483],[0.259,-0.329],[0.762,-0.298],[0.305,-0.44],[0.032,-0.121],[0.07,2.248],[2.358,-1.325],[-0.477,-1.001],[0.663,-0.931],[-0.279,-1.19],[-1.532,-0.774],[-0.359,-0.173],[-1.165,1.887],[-0.01,1.205],[-0.58,1.048],[-1.322,-0.721],[-0.055,-1.69],[-0.332,-0.089],[0,0],[-0.372,-1.962],[1.032,-1.438],[-1.314,-2.798],[-0.242,-0.322],[-2.944,1.584],[-0.035,1.696],[0.953,1.007],[-0.475,1.322],[-0.217,0.568],[-0.374,0.467],[-0.087,0.688],[0.034,0.384],[-0.046,0.055],[0.582,-2.894],[-0.647,0.098],[-0.272,-0.163],[-0.203,0.126],[-0.547,0.158],[-1.137,0.285],[-1.132,0.06],[-1.094,-0.382],[-2.743,-1.176],[-1.182,-0.858],[-2.328,0.223],[-0.714,-0.517],[0.168,-0.533],[0.287,-0.369],[-0.006,-0.938],[-1.022,-0.577],[-3.012,0.474],[-1.054,-2.124],[-0.475,0.263],[-0.497,0.566],[-0.566,-0.427],[-0.529,-0.668],[-0.371,-0.535],[-0.07,0.185],[-0.409,-0.226],[-1.027,-0.083],[-0.925,0.531],[-0.609,0.301],[-0.438,-0.051],[-0.729,0.317],[-0.639,0.737],[-0.676,0.152],[-0.089,0.476],[0.154,0.208],[-2.47,-0.169],[-1.047,-0.782],[-1.44,-0.402],[-1.187,-0.638],[-1.212,-0.687],[-1.434,-0.265],[-1.314,0.09],[-0.058,-0.313],[-2.785,-0.043],[0.031,-0.622],[-0.585,-0.832],[-1.167,0.648],[-0.986,0.864],[-2.363,0.314],[-0.504,1.218],[-0.704,0.858],[-0.224,-0.1],[-0.447,-0.261],[0.097,0.582],[-0.515,0.279],[1.453,1.034],[0.747,1.17],[0.825,0.087],[0.413,0.525],[-0.514,1.637],[0.175,-0.596],[-2.581,1.608],[-0.338,0.211],[0.237,0.427],[0.44,0.176],[0.522,0.291],[0.041,0.502],[0.794,0.759],[1.022,-0.072],[0.22,0.477],[0.509,-1.078],[-0.116,0.23],[-0.301,0.402],[0.753,0.262],[-0.455,0.868],[-0.91,0.088],[-0.918,0.361],[-0.693,1.031],[-0.531,0.791],[0.022,0.823],[0.313,0.208],[0.2,0.16],[0.076,0.151],[-0.525,0.049],[0.873,1.438],[0.38,0.092],[0.449,-0.058],[0.192,0.472],[-0.018,0.636],[-0.027,0.24],[1.003,0.545],[0.313,-0.25],[0.575,-0.065],[0.133,0.497],[1.118,-0.474],[-0.499,0.419],[-0.629,1.097],[-0.944,0.997],[-1.151,1.043],[-0.538,0.488],[3.074,-0.931],[0.534,-0.442],[0.408,-0.705],[1.065,-0.806],[0.718,-0.823],[-0.101,-0.217],[-0.08,-0.326],[0.459,-0.803],[0.457,-0.803],[0.424,-0.741],[0.672,-0.081],[0.032,0.288],[-1.899,0.956],[-0.12,0.301],[0.5,0.314],[-0.464,0.353],[1.954,0.497],[0.288,-0.354],[0.413,-0.267],[0.771,-0.244],[0.012,-0.401],[-0.047,-0.195],[0,0],[0.088,-0.227],[0.011,0.002],[0.271,0.254],[0.862,0.17],[0.93,0.162],[0.025,0.182],[3.387,1.479],[2.893,2.532],[0.698,1.504],[0.619,0.453],[0.646,0.087],[0.461,0.497],[0.711,0.479],[0.373,0.74],[-0.06,0.931],[0.889,1.444],[0.424,0.759],[0.198,0.821],[0.951,1.176],[1.194,0.378],[-0.203,0.309],[-0.216,0.214],[-0.135,0.984],[0.504,2.171],[-0.163,2.133],[-0.141,0.966],[-0.139,0.948],[0.279,1.837],[0.281,0.82],[0.367,0.887],[1.369,1.24],[0.402,0.603],[0.939,0.256],[0.993,1.181],[0.851,1.013],[0.038,1.276],[0.504,0.761],[-0.389,0.403],[2.449,0.786],[0.449,1.201],[0.788,0.858],[0.423,-0.095],[-2.311,-3.138],[-1.029,-1.397],[-0.611,-1.123],[2.306,1.784],[1.578,2.936],[1.179,1.192],[0.531,0.889],[-0.047,0.712],[1.063,2.807],[2.881,1.833],[1.607,0.339],[1.714,-0.23],[2.155,1.186],[0.517,0.179],[0.441,-0.013],[0.513,0.129],[1.467,1.343],[1.43,1.313],[0.712,0.456],[0.42,0.052],[0.374,0.23],[0.846,1.175],[0.212,-0.821],[0.946,-0.214],[0.248,0.747],[-0.085,-2.728],[-0.913,0.182],[-0.761,-0.199],[-0.786,-1.227],[-0.227,-0.932],[0.223,-0.671],[-0.093,-1.369],[-2.698,-1.057],[0.542,-1.251],[0.638,-1.717],[0.469,-1.408],[-1.52,-0.34],[-1.221,0.557],[-0.036,0.714],[-0.698,0.324],[-1.692,0.28],[-1.128,-0.849],[-0.548,-1.435],[-0.267,-1.587],[0.432,-0.404],[-0.875,-0.338],[0.364,-0.999],[0.846,-0.714],[0.472,-0.39],[0.749,-0.28],[1.96,0.678],[1.724,-0.493],[1.272,0.649],[0.378,-0.007],[0.202,-0.096],[0.594,-0.199],[0.584,0.871],[0.468,1.675],[1.215,0.937],[-0.005,-1.028],[-0.407,-1.064],[-0.452,-2.326],[0.114,-0.157],[0.394,-0.549],[0.584,-0.31],[0.421,-0.575],[0.118,-0.952],[1.418,0.099],[0.612,-0.374],[0.212,-0.198],[0.299,-0.189],[-0.62,-1.289],[-0.266,-0.636],[-0.208,-0.538],[0.664,-0.324],[0.843,-0.323],[0.062,-0.613],[0.438,-0.356],[1.454,-0.445],[0.963,-0.332],[0.005,-1.271],[1.486,-2.083],[0.689,-0.278],[-0.383,0.473],[-0.983,0.451],[0.352,0.886],[0.579,-0.173],[0.551,-0.503],[0.892,-0.737],[-0.379,-0.355],[-0.775,0.128],[-0.583,-0.209],[-0.258,-0.085],[-0.015,-0.133],[0.104,-0.858],[-0.22,-0.264],[-0.125,-0.613],[1.607,-1.271],[-2.198,-1.153],[0.585,-0.641],[2.319,-2.297],[2.688,-0.281],[1.22,-0.395],[1.042,-0.553],[0.812,-2.218]],"v":[[106.586,-15.229],[107.272,-17.97],[106.546,-18.694],[101.533,-21.465],[97.664,-24.069],[98.572,-25.439],[97.54,-29.633],[92.3,-37.891],[91.16,-37.743],[88.33,-32.758],[86.914,-30.263],[86.052,-29.814],[85.283,-30.784],[82.281,-40.273],[81.389,-41.163],[77.498,-44.102],[74.418,-46.954],[70.852,-45.478],[67.16,-46.949],[65.972,-46.482],[65.486,-45.967],[65.535,-40.646],[64.527,-40.004],[64.414,-39.128],[66.569,-36.9],[64.214,-33.793],[67.288,-27.414],[66.527,-20.027],[63.155,-19.083],[62.423,-16.184],[63.535,-14.082],[63.895,-11.9],[62.623,-8.047],[60.882,-9.322],[57.555,-10.547],[57.364,-17.924],[56.184,-20.439],[52.673,-21.069],[48.682,-23.409],[44.662,-25.793],[40.883,-27.327],[39.594,-26.401],[37.833,-26.271],[35.927,-32.94],[34.787,-33.087],[33.355,-32.474],[34.643,-38.82],[35.541,-42.199],[36.584,-45.194],[38.98,-46.198],[40.632,-47.634],[39.456,-50.708],[46.533,-57.664],[47.274,-60.456],[47.585,-62.062],[48.699,-62.682],[50.746,-63.98],[51.308,-65.43],[51.849,-66.509],[56.623,-64.27],[58.91,-71.331],[57.746,-75],[59.138,-77.832],[56.679,-80.306],[52.042,-82.552],[51.049,-82.29],[51.296,-76.635],[49.87,-73.281],[48.132,-70.138],[47.17,-74.568],[44.774,-78.674],[43.954,-78.342],[42.535,-76.31],[39.527,-81.335],[38.688,-86.603],[33.908,-94.521],[32.915,-94.78],[29.594,-86.447],[30.957,-81.658],[34.584,-79.927],[34.46,-75.509],[33.326,-74.072],[32.643,-72.531],[32.799,-70.51],[32.595,-69.478],[32.448,-69.323],[27.27,-74.645],[27.096,-73.32],[26.564,-73.095],[25.893,-72.855],[24.245,-72.405],[20.779,-71.823],[17.437,-72.229],[14.375,-73.814],[7.513,-70.665],[3.273,-71.613],[-4.428,-71.216],[-5.594,-73.688],[-4.562,-74.921],[-4.099,-76.195],[-5.556,-78.443],[-8.921,-78.672],[-17.324,-80.513],[-23.066,-82.141],[-24.336,-81.12],[-25.84,-80.421],[-27.299,-82.122],[-28.816,-84.181],[-30.143,-84.009],[-31.368,-84.617],[-32.685,-85.03],[-35.594,-84.216],[-38.275,-82.475],[-40.122,-82.139],[-41.374,-82.056],[-42.764,-80.487],[-45.471,-80.043],[-47.055,-78.697],[-46.559,-77.565],[-46.098,-76.941],[-52.803,-79.603],[-56.193,-81.534],[-60.48,-82.488],[-63.848,-84.703],[-67.773,-86.137],[-72.038,-86.251],[-75.555,-87.823],[-76.255,-88.354],[-84.574,-88.993],[-84.986,-90.764],[-87.477,-91.172],[-90.637,-88.508],[-94.038,-86.09],[-98.594,-81.913],[-100.322,-78.292],[-103.413,-77.174],[-104.035,-77.176],[-105.152,-76.35],[-105.872,-75.016],[-105.872,-73.766],[-102.204,-69.93],[-99.34,-66.797],[-97.135,-66.484],[-96.34,-64.103],[-100.225,-65.133],[-101.29,-65.949],[-109.031,-61.124],[-109.292,-60.134],[-108.257,-59.264],[-106.833,-58.885],[-106.773,-57.137],[-106.132,-55.832],[-103.001,-54.965],[-99.734,-54.284],[-98.48,-54.284],[-95.799,-56.049],[-96.219,-55.379],[-95.786,-54.315],[-95.35,-52.38],[-97.854,-51.151],[-100.62,-50.922],[-102.564,-48.862],[-104.643,-45.767],[-105.863,-43.096],[-104.654,-41.24],[-103.671,-40.655],[-103.322,-40.21],[-103.178,-39.892],[-103.805,-38.802],[-100.005,-35.288],[-98.85,-35.232],[-97.615,-35.109],[-97.553,-33.421],[-97.693,-31.52],[-97.335,-30.895],[-94.23,-31.099],[-93.046,-32.182],[-92.148,-30.854],[-91.083,-30.422],[-87.708,-31.794],[-89.07,-30.605],[-89.82,-27.214],[-92.887,-24.417],[-96.342,-21.286],[-95.635,-20.077],[-87.161,-24.547],[-85.781,-26.086],[-84.518,-28.01],[-81.199,-30.155],[-80.469,-33.237],[-80.984,-33.96],[-80.421,-35.128],[-79.046,-37.538],[-77.674,-39.948],[-75.993,-41.461],[-73.992,-41.659],[-73.896,-40.793],[-78.001,-36.243],[-77.667,-35.426],[-77.538,-33.845],[-77.365,-32.522],[-73.083,-34.926],[-72.098,-35.913],[-70.773,-36.34],[-69.495,-38.014],[-69.673,-39.202],[-69.77,-39.792],[-69.723,-40.021],[-69.648,-40.142],[-69.085,-39.228],[-68.135,-38.763],[-65.57,-38.875],[-63.413,-37.129],[-63.044,-36.677],[-52.626,-34.086],[-45.486,-25.057],[-42.665,-21.04],[-40.581,-20.168],[-38.165,-19.938],[-37.148,-18.27],[-34.918,-17.344],[-34.793,-14.945],[-34.258,-12.312],[-31.075,-8.409],[-30.135,-5.995],[-29.382,-3.578],[-25.12,-2.176],[-23.152,0.988],[-23.913,1.531],[-24.189,2.361],[-23.938,5.284],[-23.324,11.717],[-24.163,18.085],[-24.585,20.982],[-24.834,23.904],[-21.964,27.841],[-21.31,30.346],[-19.605,32.323],[-17.573,37.171],[-15.889,38.462],[-13.062,38.386],[-10.086,41.928],[-7.714,45.547],[-7.03,48.922],[-5.913,52.113],[-5.594,53.323],[-0.211,58.393],[1.393,61.895],[4.414,62.918],[4.848,61.855],[-2.085,52.443],[-5.12,48.147],[-4.82,44.214],[-0.044,51.35],[6.098,58.914],[9.419,62.797],[9.671,65.456],[9.985,67.549],[16.438,73.568],[25.777,77.858],[30.648,78.062],[35.666,78.279],[41.617,82.568],[43.238,82.82],[44.539,82.793],[45.793,83.674],[50.189,87.711],[54.651,91.662],[56.941,92.365],[58.183,92.662],[58.964,93.633],[61.976,93.366],[63.453,91.604],[65.605,92.91],[67.031,92.719],[61.713,90.133],[58.893,90.365],[57.183,88.953],[55.467,84.813],[55.537,82.091],[56.002,80.078],[53.502,77.352],[45.132,77.482],[46.623,73.675],[48.538,68.516],[47.05,65.665],[42.35,65.742],[40.235,68.711],[39.68,70.729],[37.295,71.255],[32.335,70.475],[30.017,66.993],[28.765,62.518],[29.752,57.99],[29.432,56.78],[28.701,54.472],[30.742,52.073],[33.299,49.951],[34.826,48.901],[37.002,49.138],[43.192,49.78],[48.439,48.071],[52.304,50.003],[53.373,49.725],[53.982,49.385],[55.028,49.884],[56.194,52.77],[58.507,57.74],[61.764,56.599],[60.739,53.636],[59.778,50.359],[60.926,43.68],[61.056,43.225],[62.712,42.151],[64.206,40.919],[64.929,39.005],[66.606,38.643],[69.644,37.016],[71.59,36.201],[72.023,35.511],[72.323,34.534],[70.558,30.621],[69.786,28.703],[69.694,26.93],[71.921,26.469],[73.314,24.592],[73.762,22.967],[75.454,22.336],[79.825,20.996],[81.176,19.073],[82.177,15.698],[88.411,11.698],[90.591,10.819],[89.265,12.005],[88.099,14.238],[90.175,16.008],[91.748,15.059],[93.184,13.37],[98.054,9.061],[96.757,8.846],[94.386,8.899],[92.751,8.046],[91.975,7.899],[91.973,7.495],[91.812,5.143],[90.822,4.234],[92.065,2.783],[91.735,-1.496],[85.473,-0.312],[87.265,-2.189],[95.469,-2.905],[102.764,-5.799],[106.434,-6.934],[108.674,-9.544]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[130.428,243.148],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":3,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.326,0.594],[0.813,-0.571],[0.034,-0.025],[1.07,-0.803],[-0.276,-0.244],[-0.196,-0.143],[0.503,0.056],[0.424,-0.331],[-0.148,-0.398],[0.081,-0.43],[0.088,-0.191],[-0.01,-0.201],[0.195,-0.717],[-0.777,-0.872],[-0.891,0.491],[-1.253,0.955],[0.098,1.264],[0.11,0.247],[-0.052,0.318],[-0.079,0.549],[0.317,0.404]],"o":[[-0.522,-0.951],[-0.033,0.016],[-1.07,0.802],[-0.25,0.187],[0.186,0.165],[-0.424,0.169],[-0.487,-0.053],[-0.339,0.265],[0.166,0.446],[-0.033,0.18],[-0.084,0.184],[0.033,0.668],[-0.256,0.944],[0.763,0.857],[1.38,-0.761],[0.952,-0.726],[-0.021,-0.269],[-0.131,-0.293],[0.082,-0.5],[0.082,-0.571],[-0.409,-0.521]],"v":[[3.779,-5.76],[1.268,-6.31],[1.168,-6.249],[-2.042,-3.842],[-2.148,-3.025],[-1.576,-2.566],[-2.953,-2.395],[-4.395,-2.239],[-4.7,-1.117],[-3.576,0.272],[-4.032,0.871],[-4.142,1.437],[-3.854,3.19],[-3.904,6.024],[-1.001,6.168],[3.02,3.496],[4.694,0.475],[4.498,-0.29],[3.992,-1.364],[4.766,-2.735],[4.194,-3.977]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.757,209.494],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.081,0.562],[0.987,0.043],[0.365,2.471],[1.208,0.751],[0.364,-0.028],[0.563,2.055],[0.174,0.026],[1.005,-0.183],[-0.645,0.281],[-0.003,0.167],[0.999,-0.099],[1.114,-0.667],[-0.578,0.347],[-0.067,0.037],[1.094,-0.668],[-0.376,-0.164],[-0.291,-0.127],[-0.565,-0.559],[0.108,-0.641],[-0.294,-0.082],[0.531,-1.256],[-0.237,-0.085],[-0.553,0.08],[-0.06,-0.629],[-0.361,-0.395],[0.332,-0.304],[-0.051,-0.383],[-0.078,-0.224],[0.383,-0.287],[-0.737,-0.892],[-0.996,0.335],[-0.45,-0.204],[0.675,-0.441],[0.109,-1.041],[-0.298,0.093],[-2.869,1.068],[-0.292,0.964],[0.171,0.408]],"o":[[-0.157,-1.087],[0.825,-2.651],[-0.181,-1.23],[-0.336,-0.209],[0.88,-1.586],[-0.044,-0.159],[-1.03,-0.155],[0.127,-0.627],[0.165,-0.072],[0.016,-1.063],[-1.319,0.131],[-0.575,0.345],[0.035,-0.02],[-0.453,1.165],[-0.303,0.185],[0.291,0.127],[-0.37,0.684],[-0.309,0.558],[-0.047,0.279],[1.346,0.375],[-0.115,0.273],[0.56,0.202],[0.777,-0.113],[0.057,0.599],[-0.444,0.293],[-0.287,0.263],[0.032,0.242],[0.161,0.46],[-0.831,0.622],[0.751,0.908],[0.162,0.48],[-0.679,0.441],[-0.858,0.561],[-0.035,0.334],[2.923,-0.912],[0.888,-0.331],[0.142,-0.471],[0.436,-0.327]],"v":[[7.617,6.737],[5.405,5.303],[2.273,-1.811],[0.953,-5.321],[-0.126,-5.585],[2.061,-10.424],[1.697,-10.787],[-1.339,-10.752],[-0.151,-12.157],[0.108,-12.607],[-1.82,-14.168],[-5.658,-12.584],[-5.13,-11.685],[-4.975,-11.773],[-7.322,-8.979],[-7.322,-8.08],[-6.448,-7.699],[-6.169,-5.563],[-6.796,-3.773],[-6.431,-3.132],[-4.977,-0.013],[-4.612,0.627],[-3.087,0.534],[-2.273,1.575],[-1.776,3.139],[-3.587,3.832],[-3.944,4.839],[-3.706,5.483],[-4.095,6.267],[-4.569,8.692],[-1.725,9.137],[-0.751,10.211],[-2.932,11.345],[-4.504,13.672],[-3.845,14.174],[4.958,11.414],[7.052,9.601],[7.007,8.252]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[339.645,205.238],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.087,0.313],[-0.109,0.739],[0.198,0.454],[0.126,0.146],[0.6,0.694],[0.192,-0.089],[0.044,-0.207],[1.586,-0.026],[-0.135,-0.324],[-0.107,-0.257],[0.802,-0.225],[-0.449,-0.184],[0.124,-0.043],[0.272,-0.124],[0.495,-0.459],[0.282,-1.285],[-0.354,0.007],[-0.242,-0.689],[0.074,-0.622],[0.626,-0.569],[0.22,-0.498],[-0.308,-0.835],[0.037,-0.666],[-0.389,-0.327],[-1.831,2.105],[-0.57,1.132],[-0.486,1.41],[-0.198,3.268],[-0.242,0.645]],"o":[[-0.19,-0.679],[0.08,-0.55],[0.034,-0.149],[-0.6,-0.694],[-0.151,-0.175],[-0.153,0.039],[-0.326,1.539],[-0.302,0.005],[0.107,0.256],[-0.802,0.224],[-0.537,0.15],[0.432,0.176],[-0.282,0.1],[-0.615,0.282],[-0.967,0.898],[-0.07,0.321],[0.59,-0.013],[0.215,0.614],[-0.096,0.8],[-0.375,0.342],[-0.399,0.903],[0.238,0.648],[-0.029,0.513],[1.833,1.544],[0.839,-0.965],[0.669,-1.33],[1.077,-3.117],[0.51,0.069],[0.115,-0.306]],"v":[[7.188,-7.389],[6.821,-9.273],[6.72,-10.762],[6.601,-11.221],[4.801,-13.302],[4.22,-13.403],[3.893,-13.044],[0.668,-10.359],[0.165,-9.7],[0.486,-8.931],[-1.92,-8.257],[-1.92,-7.253],[-2.797,-6.445],[-3.633,-6.13],[-5.307,-5.004],[-7.212,-1.642],[-6.709,-0.983],[-4.944,-0.354],[-5.135,1.964],[-5.799,4.381],[-6.799,5.357],[-6.326,8.008],[-6.231,9.67],[-5.675,10.857],[0.86,11.386],[2.795,8.037],[4.582,3.941],[5.979,-5.778],[7.168,-6.421]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[430.935,362.573],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.247,0.463],[-0.472,0.97],[0.165,0.183],[0.541,0.069],[-0.108,0.667],[0.21,0.14],[0.113,0.048],[1.376,0.269],[0.617,-0.741],[0.008,-0.007],[-0.009,-1.211],[-0.246,-0.337],[0.851,-0.459],[0.422,-0.321],[0.04,-0.418],[0.135,-0.61],[0.514,-0.511],[-0.516,-0.977],[-0.82,0.243],[-0.459,0.308],[-0.701,0.138],[-1.208,0.721],[-0.519,0.474],[-0.241,0.554]],"o":[[-0.449,-0.842],[0.107,-0.22],[-0.37,-0.409],[-0.373,-0.049],[0.039,-0.244],[-0.112,-0.075],[0.683,-0.857],[-0.963,-0.189],[-0.008,0.006],[-0.882,0.696],[0.004,0.419],[0.354,0.485],[-0.42,0.226],[-0.347,0.263],[-0.06,0.612],[-0.159,0.715],[-0.653,0.649],[0.428,0.811],[0.539,-0.16],[0.592,-0.398],[1.346,-0.265],[0.604,-0.36],[0.433,-0.394],[0.228,-0.524]],"v":[[6.137,0.421],[5.52,-2.363],[5.438,-2.994],[4.076,-3.645],[2.232,-4.278],[1.992,-4.866],[1.654,-5.049],[1.646,-7.301],[-1.057,-6.62],[-1.081,-6.603],[-2.855,-3.856],[-2.479,-2.71],[-2.248,-1.052],[-3.583,-0.716],[-4.104,0.383],[-4.164,2.202],[-5.219,4.022],[-6.13,6.466],[-3.787,7.247],[-2.331,6.43],[-0.427,5.638],[3.424,4.573],[5.098,3.287],[6.419,1.871]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[534.148,81.187],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.127,1.234],[0.374,0.489],[-0.194,0.717],[-0.172,0.224],[-0.052,0.21],[0.094,0.438],[-0.406,0.449],[-0.007,0.606],[0.972,0.399],[0.418,-0.253],[0.294,-0.195],[0.356,0.506],[0.205,-0.057],[0.137,-0.027],[1.034,-0.24],[0.045,-0.009],[0.017,-0.005],[0,0],[0.054,-0.723],[0.239,-0.497],[0.375,-0.323],[0.111,-0.822],[-0.497,-0.383],[-0.184,-0.391],[-0.011,-0.308],[-0.41,-0.377],[-0.298,-0.086],[-0.142,-0.359],[0.109,-0.17],[-0.387,0.011],[-0.252,0.098],[-0.272,-0.059],[-0.129,-0.195],[-0.224,-0.109],[-0.618,-0.037],[-0.808,0.035]],"o":[[0.065,-0.633],[-0.374,-0.492],[0.068,-0.253],[0.132,-0.171],[0.112,-0.444],[-0.116,-0.543],[0.339,-0.376],[0.013,-1.182],[-0.452,-0.185],[-0.194,0.118],[-0.18,-0.581],[-0.153,-0.218],[-0.099,-0.054],[-1.04,0.203],[-0.045,0.009],[-0.018,0.003],[-0.003,0.001],[-0.648,0.158],[-0.039,0.508],[-0.221,0.457],[-0.601,0.519],[-0.083,0.607],[0.319,0.246],[0.135,0.288],[0.018,0.523],[0.234,0.216],[0.292,0.083],[0.092,0.232],[-0.211,0.33],[0.269,-0.007],[0.25,-0.096],[0.275,0.059],[0.139,0.209],[0.574,0.277],[0.805,0.049],[1.088,-0.048]],"v":[[6.712,5.444],[6.117,3.775],[5.003,1.84],[5.758,1.073],[6.034,0.503],[5.958,-0.853],[5.999,-2.375],[6.733,-3.47],[4.147,-6.275],[2.862,-6.191],[2.012,-5.383],[1.214,-7.008],[0.621,-7.215],[0.266,-7.266],[-2.867,-6.659],[-3.003,-6.633],[-3.052,-6.617],[-3.058,-6.616],[-4.281,-5.413],[-4.353,-3.969],[-5.407,-2.866],[-6.693,-0.951],[-6.097,0.658],[-5.169,1.314],[-5.089,2.319],[-4.62,3.786],[-3.871,4.12],[-2.971,4.643],[-3.329,5.496],[-2.878,6.28],[-2.144,6.141],[-1.138,5.707],[-0.709,6.408],[-0.157,6.879],[1.781,7.138],[4.221,7.258]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[523.839,73.33],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.189,0.623],[-1.528,0.094],[-0.246,0.98],[0.197,0.387],[-1.283,-0.55],[0.254,-0.26],[0.059,-0.464],[-0.232,-0.165],[0.444,-0.29],[-0.435,-0.142]],"o":[[1.352,-0.708],[0.858,-0.053],[0.11,-0.44],[-0.371,-0.726],[-0.255,0.259],[-0.299,0.304],[-0.038,0.292],[0.098,0.069],[-0.381,0.25],[1.192,0.388]],"v":[[-0.86,2.302],[3.275,1.16],[5.47,-0.052],[5.227,-1.301],[-3.828,-2.375],[-4.592,-1.595],[-5.541,-0.395],[-5.211,0.302],[-4.532,0.869],[-4.407,1.821]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[520.131,64.573],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.09,1.236],[0.062,0.902],[0.37,0.85],[-0.175,0.619],[-0.233,0.499],[0.668,0.487],[0.975,0.061],[0.303,-0.168],[-0.098,-0.043],[-0.094,-0.357],[0.127,-0.312],[-0.104,-0.303],[-0.015,-0.072],[0.302,-0.226],[0.096,-0.676],[0.268,-0.647],[0.389,-0.587],[-0.426,-0.48],[-0.99,-0.811],[-0.395,-0.636],[-0.697,-0.143],[-1.017,-0.133],[-0.392,0.823],[0.334,0.426]],"o":[[-0.065,-0.902],[-0.065,-0.936],[-0.24,-0.551],[0.153,-0.538],[0.362,-0.776],[-0.747,-0.544],[-0.344,-0.021],[-0.126,0.069],[-0.462,-0.206],[-0.34,0.256],[-0.137,0.334],[0.031,0.091],[0.106,0.503],[-0.554,0.412],[-0.098,0.685],[-0.276,0.668],[-0.384,0.582],[0.886,0.998],[0.623,0.51],[0.396,0.638],[1.005,0.207],[0.661,0.087],[0.268,-0.562],[-0.714,-0.913]],"v":[[3.89,3.34],[3.888,0.631],[3.128,-1.957],[2.726,-3.8],[3.613,-5.203],[3.093,-7.162],[0.59,-8.538],[-0.403,-8.338],[-1.214,-7.404],[-1.998,-6.785],[-2.763,-5.934],[-2.678,-5.116],[-2.454,-4.877],[-3.141,-4.01],[-4.067,-2.406],[-4.222,-0.209],[-5.767,0.953],[-5.453,2.758],[-2.125,4.554],[-1.38,6.522],[0.469,7.564],[3.526,8.022],[5.883,7.736],[5.39,6.083]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[444.758,131.274],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.107,0.36],[-0.095,0.448],[-0.056,0.349],[0.07,0.298],[0.644,0.307],[0.492,-1.235],[-0.051,-0.1],[2.59,-0.86],[-0.147,-2.787],[0.998,-0.716],[0.03,-0.715],[0.567,-1.505],[1.109,-2.94],[-0.189,-0.103],[-1.628,0.322],[-0.503,0.732],[-0.403,0.831],[-0.253,0.731],[-0.321,0.89],[-0.797,0.301],[-0.379,0.544],[-0.695,0.553],[-0.819,0.355],[0,0],[-1.045,1.321],[-0.073,0.643]],"o":[[-0.121,-0.408],[0.067,-0.32],[0.049,-0.302],[-0.162,-0.688],[-1.285,-0.613],[-0.057,0.143],[-1.805,2.025],[-1.981,0.658],[-1.057,0.564],[-0.615,0.441],[-1.73,0.189],[-1.11,2.94],[-0.079,0.207],[1.451,0.789],[0.893,-0.177],[0.524,-0.762],[0.337,-0.696],[0.311,-0.899],[0.325,-0.901],[0.61,-0.231],[0.486,-0.697],[0.705,-0.561],[0,0],[1.489,-0.645],[0.4,-0.506],[0.043,-0.371]],"v":[[13.869,-8.561],[13.43,-9.784],[13.806,-10.728],[13.773,-11.642],[12.513,-13.255],[9.295,-11.836],[9.3,-11.47],[2.617,-7.027],[-2.987,-3.341],[-6.341,-2.129],[-7.436,-0.345],[-10.588,3.388],[-13.916,12.208],[-13.676,12.797],[-8.95,13.547],[-7.317,12.379],[-5.925,9.984],[-5.036,7.84],[-4.279,5.09],[-2.285,3.758],[-0.773,2.673],[0.582,0.645],[2.994,-0.591],[8.919,-3.158],[13.207,-5.682],[13.953,-7.445]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[457.984,108.6],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.175,-0.733],[-0.09,-0.657],[-0.006,-1.584],[0.138,-0.811],[-0.073,-0.62],[-0.768,0.298],[-0.111,-0.032],[-0.119,-0.101],[-0.389,0.151],[0.211,0.752],[-0.772,1.137],[-0.164,-0.259],[-0.165,0.408],[-1.408,3.904],[0.351,0.733],[0.036,0.624],[0.129,0.267],[-0.065,-1.029],[-0.011,-0.896],[0.586,-0.311],[0.241,-0.457],[-0.529,-0.871]],"o":[[-0.155,0.65],[0.211,1.554],[0.003,0.823],[-0.103,0.603],[0.111,0.936],[0.141,-0.054],[0.127,0.036],[0.304,0.255],[1.161,-0.451],[-0.361,-1.289],[0.164,0.259],[0.258,0.407],[1.601,-3.97],[0.264,-0.733],[-0.268,-0.56],[-0.017,-0.291],[-0.498,-1.031],[-0.506,0.75],[0.007,0.646],[-0.435,0.23],[-0.599,1.14],[0.451,0.741]],"v":[[-2.953,-0.743],[-2.991,1.234],[-2.353,5.844],[-2.553,8.298],[-2.885,10.21],[-1.079,11.062],[-0.527,10.818],[-0.077,11.319],[1.054,11.587],[1.049,8.417],[1.173,4.461],[1.665,5.238],[2.619,5.113],[1.141,-6.224],[1.212,-8.301],[0.792,-9.857],[0.612,-10.708],[-1.448,-10.479],[-1.809,-8.013],[-2.517,-6.699],[-3.621,-5.829],[-2.615,-2.967]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[610.497,217.828],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.967,-0.321],[0.455,-0.976],[-0.208,-0.139],[2.22,-1.731],[1.436,-0.567],[-0.105,-1.11],[1.663,-1.444],[1.111,-0.458],[-0.197,-0.957],[-0.267,-0.296],[0.155,-0.714],[-0.725,-0.572],[-0.625,0.478],[-0.468,1.007],[-0.851,-0.178],[-0.562,0.145],[-0.515,0.589],[-0.393,0.078],[-0.559,0.175],[-0.209,0.286],[-0.194,0.151],[-0.404,-0.09],[-1.126,1.57],[-0.216,1.219],[-0.856,1.145],[-0.05,1.537],[0.511,0.981]],"o":[[-1.085,0.361],[-0.134,0.289],[-0.52,2.748],[-1.235,0.963],[-1.014,0.4],[-1.811,0.753],[-0.861,0.749],[-0.744,0.306],[0.083,0.403],[0.498,0.553],[-0.171,0.789],[0.654,0.516],[0.954,-0.729],[0.353,-0.759],[0.546,0.114],[0.798,-0.205],[0.249,-0.284],[0.531,-0.104],[0.348,-0.109],[0.141,-0.194],[0.348,-0.27],[1.778,0.397],[0.757,-1.057],[0.251,-1.412],[0.906,-1.214],[0.035,-1.074],[-0.456,-0.876]],"v":[[9.402,-12.252],[7.17,-9.786],[7.38,-9.089],[3.13,-2.121],[-0.885,-0.107],[-2.733,2.229],[-8.443,3.173],[-10.755,5.475],[-12.108,7.136],[-11.467,8.132],[-11.086,9.783],[-10.684,12.057],[-8.451,11.932],[-7.017,8.968],[-5.319,8.091],[-3.689,8.226],[-1.866,6.76],[-0.932,6.014],[0.656,6.143],[1.451,5.493],[1.884,4.88],[3.104,4.857],[8.187,3.341],[9.031,-0.201],[10.742,-4.032],[12.248,-7.868],[11.794,-11.204]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[596.836,253.9],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":2,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.056,0.541],[0.297,0.712],[0.537,0.109],[0.344,0.124],[0.367,0.221],[0.806,0.486],[-0.198,-0.401],[0.021,-0.012],[0.04,-0.207],[-0.203,-0.142],[-0.018,-0.013],[-0.043,-0.016],[0.043,-0.183],[0.468,-0.476],[0.647,-0.828],[-0.068,-0.419],[0.015,-0.251],[0.208,-0.267],[-0.889,0.03],[-0.278,0.355],[-0.153,0.201],[-0.554,-0.251],[-0.828,0.612],[-0.423,-0.103],[-0.216,-0.039],[-0.402,0.352],[-0.559,0.524]],"o":[[-0.079,-0.765],[-0.208,-0.497],[-0.353,-0.071],[-0.404,-0.145],[-0.807,-0.486],[-0.48,-0.29],[-0.023,0.009],[-0.182,0.105],[-0.047,0.246],[0.018,0.013],[0.044,0.03],[0.059,0.413],[-0.153,0.65],[-0.748,0.759],[-0.267,0.342],[0.043,0.257],[-0.021,0.38],[-0.57,0.733],[0.474,-0.016],[0.157,-0.202],[0.413,-0.543],[0.975,0.442],[0.307,-0.227],[0.203,0.049],[0.567,0.101],[0.578,-0.504],[0.368,-0.345]],"v":[[5.984,0.246],[5.193,-2.155],[4.122,-3.065],[3.073,-3.246],[1.923,-3.879],[-0.495,-5.337],[-1.219,-4.65],[-1.286,-4.618],[-1.615,-4.181],[-1.375,-3.594],[-1.32,-3.555],[-1.19,-3.49],[-1.312,-2.083],[-2.271,-0.344],[-4.927,1.266],[-5.182,2.421],[-4.95,3.234],[-5.469,3.947],[-4.531,5.598],[-3.416,4.924],[-3.01,4.28],[-1.747,4.044],[0.711,3.664],[1.669,3.297],[2.255,3.544],[3.677,2.966],[5.373,1.404]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[608.624,237.005],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.795,-0.646],[0.058,-0.076],[0.01,-0.008],[1.409,-1.289],[0.568,-0.628],[0.141,-0.288],[0.464,-0.381],[0.459,-0.205],[0.612,-0.274],[1.011,-0.705],[-0.329,-0.612],[-0.778,0.091],[-0.491,-0.142],[-0.434,-0.352],[-0.811,0.343],[-0.269,0.112],[-0.427,0.019],[-0.224,0.667],[-0.005,0.406],[-0.894,0.101],[-0.346,0.087],[-0.132,0.298],[-0.3,0.439],[-0.303,-0.024],[-0.309,0.278],[0.13,0.811],[-0.487,0.542],[-0.076,0.501]],"o":[[-0.109,0.039],[-0.01,0.007],[-1.455,1.251],[-0.622,0.569],[-0.215,0.238],[-0.252,0.514],[-0.388,0.32],[-0.611,0.274],[-1.125,0.503],[-0.551,0.384],[0.407,0.758],[0.489,-0.058],[0.554,0.161],[0.607,0.493],[0.289,-0.123],[0.38,-0.157],[0.826,-0.037],[0.13,-0.385],[0.006,-0.556],[0.312,-0.035],[0.322,-0.081],[0.238,-0.533],[0.22,-0.321],[0.397,0.032],[0.719,-0.649],[-0.123,-0.771],[0.339,-0.378],[0.296,-1.927]],"v":[[4.975,-7.875],[4.729,-7.697],[4.699,-7.676],[2.108,-2.955],[0.17,-1.329],[-0.379,-0.541],[-1.043,0.979],[-2.553,1.667],[-4.387,2.489],[-7.891,4.097],[-8.351,5.748],[-6.255,6.591],[-4.778,6.51],[-3.368,7.486],[-1.182,8.178],[-0.437,7.613],[0.588,7.845],[2.182,6.067],[2.378,4.864],[2.877,2.928],[3.836,3.047],[4.532,2.45],[4.686,0.606],[5.794,0.583],[6.889,0.292],[7.153,-2.272],[7.756,-3.82],[8.384,-5.156]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[659.433,415.654],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":2,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.242,0.116],[0.584,0.033],[0.637,-0.128],[0.935,0.724],[0.169,0.124],[0.179,0.422],[0.343,0.325],[0.966,0.39],[0.045,0.005],[0.129,-0.006],[0,-0.292],[0,0],[-0.073,-0.092],[-0.024,-0.039],[-0.729,-1.174],[-0.157,-0.6],[-0.059,-0.59],[-0.202,-0.395],[0.014,-0.207],[0.303,-0.049],[0.08,-0.77],[-0.206,-0.038],[-0.273,-0.356],[-0.245,-0.302],[0.289,-1.111],[-0.388,0.111],[-0.469,0.819],[-0.061,0.438],[-0.055,0.213],[-0.537,0.13],[0.002,0.907],[0.036,0.162],[-0.167,0.324],[-0.398,0.582]],"o":[[-0.525,-0.251],[-0.674,-0.039],[-1.437,0.287],[-0.169,-0.13],[-0.386,-0.283],[-0.184,-0.434],[-0.767,-0.727],[-0.05,-0.021],[-0.093,-0.084],[-0.283,0.013],[0,0],[0,0.117],[0.013,0.037],[0.729,1.173],[0.324,0.522],[0.152,0.581],[0.045,0.448],[0.098,0.193],[-0.028,0.428],[-0.714,0.116],[-0.022,0.208],[0.429,0.079],[0.231,0.299],[0.637,0.782],[-0.098,0.379],[0.899,-0.256],[0.22,-0.385],[0.03,-0.219],[0.17,-0.664],[0.743,-0.18],[0,-0.173],[-0.083,-0.371],[0.323,-0.629],[0.15,-0.22]],"v":[[5.779,-1.386],[4.132,-1.843],[2.305,-1.519],[-0.357,-4.241],[-0.897,-4.573],[-1.582,-5.578],[-2.386,-6.726],[-5.109,-8.261],[-5.252,-8.297],[-5.593,-8.428],[-6.115,-7.907],[-6.115,-7.56],[-5.996,-7.238],[-5.941,-7.124],[-3.753,-3.604],[-2.891,-1.952],[-2.805,-0.177],[-2.405,1.033],[-2.046,1.76],[-2.773,2.141],[-4.111,3.322],[-3.728,3.824],[-2.61,4.314],[-2.105,5.29],[-1.217,7.683],[-0.575,8.323],[1.574,6.687],[1.994,5.446],[2.047,4.763],[3.026,3.953],[4.719,2.433],[4.605,1.952],[4.732,1.131],[5.966,-0.673]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[670.773,401.994],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":2,"cix":2,"bm":0,"ix":36,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.067,-0.404],[0.511,0.803],[0.333,0.3],[0.058,0.068],[0.631,-0.517],[-0.37,-0.923],[-0.845,-1.255],[-1.066,0.368],[-0.456,1.088],[0.429,0.987]],"o":[[-0.748,0.283],[-0.26,-0.41],[-0.02,-0.072],[-0.539,-0.632],[-0.981,0.805],[0.562,1.398],[0.784,1.165],[1.079,-0.372],[0.417,-0.997],[-0.548,-1.263]],"v":[[1.442,-2.28],[-0.615,-2.547],[-1.321,-3.622],[-1.435,-3.836],[-3.578,-3.965],[-3.425,-0.877],[-1.443,3.316],[1.693,3.398],[4.141,1.37],[4.096,-1.797]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[615.308,411.717],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":37,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.496,1.093],[1.894,1.693],[0.981,0.524],[0.339,1.465],[0.873,1.106],[0.994,0.944],[0.636,1.362],[0.38,1.672],[0.254,-0.1],[-0.01,-1.51],[0.767,-2.379],[2.284,2.487],[0.08,0.875],[0.303,0.309],[-0.141,0.087],[0.372,0.17],[0.911,0.416],[0.77,0.123],[0.098,-1.135],[-0.09,-0.083],[0.052,-0.089],[1.075,-0.559],[0.065,-1.371],[0.725,-0.594],[0.527,0.644],[0.475,0.429],[0.501,-0.122],[1.722,-2.083],[2.912,-1.447],[3.789,-0.673],[-0.362,-0.212],[0.398,-1.422],[-0.216,-1.269],[-1.072,-2.676],[-0.099,-1.453],[0.167,-0.705],[0.112,-0.615],[-0.601,-0.399],[0.064,-0.625],[-0.3,0.08],[-1.473,0.394],[-0.708,0.176],[-0.981,-0.187],[-0.553,0.869],[-0.256,0.41],[-0.675,0.125],[-1.139,0.513],[-1.42,0.454],[-2.62,-0.923],[-0.725,-2.687],[-0.283,0.264],[-0.979,-0.047],[0.33,-0.645],[-0.177,-0.162],[-0.935,-1.153],[-0.298,-0.715],[-0.36,-0.476],[-1.606,-1.245],[-0.235,0.106],[-0.533,0.464],[-1.634,0.452],[-1.25,0.641],[0.374,1.011],[-1.759,2.269],[-0.44,1.248],[0.14,1.397],[-0.661,1.488],[0.141,1.244]],"o":[[-2.117,-1.547],[-0.84,-0.751],[-1.33,-0.711],[-0.315,-1.359],[-0.853,-1.079],[-1.082,-1.03],[-0.729,-1.563],[-0.058,-0.254],[-1.809,0.713],[0.016,2.505],[-3.385,-0.055],[0.548,-0.638],[-0.041,-0.447],[0.141,-0.086],[0.306,-0.188],[-0.911,-0.416],[-0.701,-0.32],[-0.988,-0.158],[-0.014,0.166],[-0.052,0.089],[-1.135,-0.337],[-1.09,0.568],[-0.039,0.813],[-0.644,0.529],[-0.391,-0.478],[-0.397,-0.36],[-2.884,0.703],[-2.063,2.496],[-3.476,1.727],[-0.458,0.081],[1.718,1.009],[-0.35,1.249],[0.492,2.881],[0.539,1.345],[0.049,0.721],[-0.146,0.615],[-0.138,0.754],[0.426,0.282],[-0.035,0.345],[1.473,-0.394],[0.705,-0.188],[0.989,-0.247],[0.999,0.189],[0.26,-0.408],[0.375,-0.6],[1.208,-0.224],[1.353,-0.609],[2.607,-0.834],[2.592,0.913],[0.105,0.388],[0.661,-0.62],[1.212,0.058],[-0.102,0.2],[1.096,1.004],[0.484,0.598],[0.226,0.543],[1.311,1.736],[0.204,0.158],[0.655,-0.295],[1.445,1.362],[1.35,-0.373],[1.069,-0.547],[-1.126,-3.046],[0.805,-1.038],[0.474,-1.346],[-0.159,-1.576],[0.485,-1.094],[-0.237,-2.088]],"v":[[34.009,-3.227],[30,-9.315],[27.124,-11.002],[24.838,-14.072],[23.231,-17.695],[20.325,-20.604],[17.682,-24.099],[16.195,-29.039],[15.554,-29.403],[14.332,-24.824],[13.172,-17.467],[4.306,-21.458],[5.26,-23.704],[4.726,-24.885],[5.15,-25.145],[5.15,-26.044],[2.418,-27.293],[0.249,-28.135],[-1.91,-26.887],[-1.78,-26.513],[-1.938,-26.247],[-5.271,-25.711],[-7.747,-23.062],[-8.305,-20.908],[-10.458,-21.143],[-11.295,-22.743],[-12.743,-23.017],[-18.918,-16.765],[-26.391,-10.677],[-37.544,-7.603],[-37.669,-6.652],[-37.337,-2.707],[-37.449,1.124],[-34.344,9.193],[-33.242,13.411],[-33.391,15.566],[-34.003,17.356],[-33.115,19.082],[-31.526,20.317],[-30.865,20.819],[-26.446,19.638],[-24.331,19.074],[-21.638,19.11],[-19.271,18.162],[-18.607,16.875],[-16.995,15.93],[-13.549,15.059],[-9.49,13.294],[-1.38,13.126],[4.135,18.757],[5.009,18.987],[7.784,16.915],[8,19.254],[8.082,19.885],[11.068,23.176],[12.315,25.081],[13.047,26.65],[18.44,29.198],[19.072,29.279],[20.845,28.14],[26.733,28.094],[30.771,26.663],[31.448,24.122],[34.267,16.339],[36.271,12.97],[36.526,8.829],[36.891,4.271],[37.891,0.847]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[592.114,375.078],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":38,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.884,0.354],[0.041,-0.747],[-0.765,-0.256],[-0.099,0.196],[-0.52,-0.419],[-0.894,-0.285],[0.41,-2.53],[-0.429,0.218],[-0.966,-0.408],[-0.55,0.147],[-0.544,0.242],[-0.872,0.118],[-0.658,0.275],[-0.85,-0.612],[-1.559,-0.839],[-1.595,0.517],[0.351,0.268],[0.873,0.963],[0.533,0.306],[-0.388,0.287],[0.375,0.204],[1.284,0.699],[0.43,0.367],[0.537,0.031],[0.172,0.425],[0.962,0.336],[1.279,0.448],[0.006,0.01],[1.085,0.309],[1.117,-0.185],[0.013,0.004],[1.056,-0.66],[0.597,-0.917],[0.565,-0.151],[0.198,0.675],[0.984,0.075],[0.573,0.856],[0.86,-0.421],[0.004,-0.151],[-0.068,-0.242]],"o":[[-0.098,0.8],[-0.043,0.776],[0.206,0.068],[0.611,-1.213],[0.737,0.593],[1.738,0.553],[-0.073,0.449],[1.106,-0.563],[0.511,0.216],[0.577,-0.153],[0.328,0.786],[0.722,-0.098],[1.01,-0.422],[1.414,1.018],[1.445,0.777],[0.461,-0.149],[-1.034,-0.789],[-0.453,-0.501],[0.343,-0.329],[0.298,-0.219],[-1.283,-0.699],[0.018,-0.528],[-0.426,-0.364],[0.111,-0.399],[-0.412,-1.019],[-1.277,-0.447],[-0.006,-0.009],[-0.605,-0.896],[-1.109,-0.316],[-0.012,-0.004],[-1.12,-0.355],[-0.971,0.606],[-0.311,0.478],[-0.802,0.213],[-0.322,-1.099],[-1.395,-0.108],[-0.705,-1.055],[-0.183,0.09],[-0.158,0.109],[0.291,1.031]],"v":[[-15.976,-6.479],[-16.912,-3.945],[-15.893,-2.26],[-15.304,-2.5],[-12.661,-1.425],[-10.158,-0.193],[-5.351,3.629],[-4.585,4.217],[-1.021,5.608],[0.607,5.805],[2.224,4.722],[4.399,5.772],[6.389,4.959],[9.148,5.476],[13.241,8.646],[17.889,9.267],[18.014,8.315],[15.147,5.682],[13.754,4.385],[14.844,3.459],[14.844,2.56],[10.993,0.463],[10.355,-0.921],[8.87,-1.446],[8.781,-2.712],[6.309,-4.488],[2.475,-5.836],[2.456,-5.862],[0.178,-7.798],[-3.23,-7.759],[-3.267,-7.771],[-6.713,-7.685],[-8.691,-5.052],[-9.979,-4.044],[-11.15,-4.938],[-13.337,-6.152],[-14.283,-8.729],[-17.844,-8.486],[-18.109,-8.099],[-18.297,-7.559]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[606.222,336.154],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":2,"cix":2,"bm":0,"ix":39,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.471,0.671],[0.209,0.223],[0.628,0.266],[0.347,0.961],[0.276,-0.357],[0.447,0.06],[0.314,0.279],[0.421,0.04],[0.509,-0.14],[0.485,0.329],[0.474,0.012],[0.281,-0.481],[0.055,-0.078],[-1.197,0.016],[-0.255,0.066],[-0.368,-0.134],[-0.798,-0.09],[-0.858,-0.169],[-0.812,-0.26]],"o":[[0.318,-0.145],[-0.46,-0.488],[-0.793,-0.334],[-0.163,-0.451],[-0.353,0.457],[-0.448,-0.06],[-0.26,-0.231],[-0.589,-0.056],[-0.673,0.185],[-0.382,-0.26],[-0.613,-0.014],[-0.071,0.037],[-0.647,0.922],[0.283,-0.004],[0.385,-0.098],[0.758,0.275],[0.867,0.098],[0.84,0.166],[1.496,0.481]],"v":[[7.549,2.03],[7.655,1.212],[6.073,-0.039],[3.928,-0.934],[2.974,-1.059],[1.107,-1.263],[-0.299,-1.337],[-1.041,-1.895],[-2.425,-1.271],[-4.283,-2.185],[-5.584,-2.687],[-7.028,-1.932],[-7.22,-1.763],[-6.116,0.465],[-5.391,0.255],[-4.334,0.466],[-1.976,0.947],[0.625,1.256],[3.075,1.986]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[549.404,339.971],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":2,"cix":2,"bm":0,"ix":40,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.49,-0.165],[0.207,-0.662],[-0.09,-0.357],[-0.428,-0.078],[-0.167,-0.713],[-0.197,-0.217],[-0.312,-0.111],[-0.727,-0.017],[-0.546,-0.351],[-0.435,-0.3],[-0.493,0.251],[-0.236,0.525],[-0.798,0.374],[-0.124,1.415],[-0.578,0.593],[-0.365,0.441],[0.625,0.851],[-0.016,1.372],[-0.561,0.336],[-0.213,0.163],[0.212,0.479],[0.526,0.294],[0.486,0.864],[0.224,-0.298],[2.247,-1.968],[0.915,-0.05],[0.513,-0.251],[-0.255,-0.79],[0.748,-0.678],[0.002,-0.381],[0.333,-0.106]],"o":[[0.601,0.202],[-0.1,0.319],[0.119,0.468],[0.167,0.713],[0.063,0.27],[0.225,0.248],[0.685,0.243],[0.683,0.016],[0.434,0.279],[0.456,0.314],[0.528,-0.269],[0.348,-0.772],[1.171,-0.549],[0.066,-0.756],[0.397,-0.406],[0.785,-0.951],[-0.947,-1.29],[0.007,-0.569],[0.222,-0.133],[0.411,-0.315],[-0.262,-0.591],[-0.87,-0.487],[-0.209,-0.372],[-1.797,2.384],[-0.659,0.578],[-0.552,0.03],[-0.769,0.376],[-0.933,-0.067],[-0.289,0.262],[-0.002,0.284],[-0.501,0.16]],"v":[[-9.289,2.867],[-8.431,3.957],[-8.569,4.824],[-7.65,5.658],[-7.149,7.798],[-6.867,8.656],[-5.831,9.142],[-3.681,9.527],[-1.071,9.406],[-0.01,10.556],[1.489,10.652],[2.569,9.368],[3.938,7.706],[6.114,5.275],[6.616,3.16],[7.893,2.046],[7.544,-0.616],[8.152,-4.384],[8.528,-5.704],[9.22,-6.027],[9.578,-7.35],[8.151,-8.49],[6.135,-10.531],[5.234,-10.531],[-0.845,-3.973],[-2.961,-2.941],[-4.602,-2.706],[-5.547,-0.783],[-8.877,-0.59],[-9.275,0.432],[-9.289,1.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[555.846,323.226],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":2,"cix":2,"bm":0,"ix":41,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.052,0.68],[0.086,0.647],[0.371,0.362],[0,0],[1.106,1.079],[2.267,2.107],[2.641,-0.053],[-0.508,-0.14],[-1.123,-0.996],[-0.547,-0.73],[-0.119,-0.381],[-0.135,-0.518],[-0.708,-0.701],[-0.17,-0.203],[0.045,-0.156],[-0.362,-0.583],[0.047,-1.857],[-0.017,-0.052],[0.149,-0.157],[-0.372,-0.129],[-0.312,-0.767],[-0.44,-0.226],[-0.505,0.141],[-0.407,0.188],[-0.426,-0.556],[-0.247,0.185],[0.084,0.996]],"o":[[-0.052,-0.682],[-0.073,-0.55],[0,0],[-1.105,-1.079],[-2.216,-2.161],[-1.823,-1.696],[-0.613,0.013],[0.149,1.533],[0.677,0.601],[0.239,0.319],[0.16,0.516],[0.268,1.028],[0.188,0.187],[-0.048,0.133],[-0.206,0.706],[0.934,1.508],[-0.001,0.065],[-0.133,0.167],[-0.281,0.297],[0.786,0.271],[0.181,0.445],[0.511,0.262],[0.437,0.088],[0.412,-0.19],[0.156,0.203],[0.817,-0.612],[-0.057,-0.68]],"v":[[9.546,6.371],[9.888,4.454],[8.945,3.18],[7.226,1.503],[3.909,-1.734],[-2.755,-8.21],[-9.318,-11.664],[-9.476,-10.643],[-7.062,-6.995],[-5.109,-5.078],[-4.544,-4.026],[-4.331,-2.448],[-2.17,-0.263],[-1.635,0.323],[-1.786,0.75],[-1.24,2.526],[1.153,7.633],[1.179,7.805],[0.758,8.292],[0.989,9.164],[2.472,10.447],[3.318,11.454],[4.857,11.568],[6.145,11.354],[8.201,10.706],[8.914,10.893],[9.899,8.383]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[530.82,326.721],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":2,"cix":2,"bm":0,"ix":42,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.253,0.413],[0.24,-0.154],[0.045,-0.081],[0.018,-0.017],[0.017,-0.016],[-0.066,0.045],[-0.003,0.003],[0.006,-0.004],[0.019,-0.013],[0.047,-0.024],[-0.143,-0.229],[-0.392,0.265]],"o":[[-0.142,-0.233],[-0.081,0.052],[-0.017,0.019],[-0.017,0.017],[-0.014,0.012],[0.007,-0.004],[-0.011,0.008],[-0.019,0.013],[-0.045,0.028],[-0.246,0.126],[0.246,0.393],[0.408,-0.276]],"v":[[0.664,-0.589],[-0.051,-0.776],[-0.241,-0.571],[-0.292,-0.515],[-0.342,-0.466],[-0.371,-0.439],[-0.357,-0.449],[-0.389,-0.426],[-0.448,-0.387],[-0.586,-0.309],[-0.773,0.404],[0.414,0.665]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[346.977,248.635],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":2,"cix":2,"bm":0,"ix":43,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.282,-0.013],[0,-0.292],[0,0],[-0.282,0.013],[0,0.291],[0,0]],"o":[[-0.283,0.013],[0,0],[0,0.272],[0.283,-0.013],[0,0],[0,-0.273]],"v":[[0,-0.564],[-0.522,-0.043],[-0.522,0.044],[0,0.564],[0.522,0.044],[0.522,-0.043]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[352.615,245.64],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 44","np":2,"cix":2,"bm":0,"ix":44,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.245,0.071],[0.274,0.079],[0.108,-0.168],[0.083,-0.07],[0.195,-0.271],[-0.376,0.031],[-0.113,-0.181],[-0.267,0.206],[-0.204,0.501]],"o":[[-0.274,-0.079],[-0.25,-0.073],[-0.088,0.014],[-0.257,0.214],[-0.226,0.31],[0.204,-0.017],[0.195,0.313],[0.432,-0.334],[0.108,-0.264]],"v":[[1.026,-0.902],[0.204,-1.14],[-0.346,-0.938],[-0.607,-0.818],[-1.272,-0.088],[-0.822,0.695],[-0.352,0.899],[0.467,1.005],[1.389,-0.261]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[350.018,246.526],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":2,"cix":2,"bm":0,"ix":45,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.394,0.261],[-0.147,0.63],[0.265,0.075],[0.18,0.024],[1.476,-0.41],[-0.039,-0.237],[0.015,-0.04],[-0.486,-0.12],[-0.443,-0.151],[-0.413,-0.169],[-0.936,-0.085]],"o":[[-0.541,-0.358],[0.064,-0.275],[-0.082,-0.125],[-1.52,-0.202],[-0.298,0.082],[-0.021,0.035],[-0.213,0.544],[0.45,0.112],[0.421,0.144],[0.872,0.357],[0.553,0.051]],"v":[[3.049,0.82],[2.427,-0.755],[2.068,-1.394],[1.676,-1.64],[-2.815,-1.319],[-3.174,-0.743],[-3.229,-0.631],[-2.516,0.378],[-1.154,0.6],[0.074,1.161],[2.786,1.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[369.73,251.105],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":2,"cix":2,"bm":0,"ix":46,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.138,1.285],[0.563,0.222],[-0.004,-0.412],[0.016,-0.005],[0.002,0.002],[0.182,-0.094],[0.059,-0.218],[-0.269,-0.558],[0.156,-0.553],[0.028,-0.39],[-0.716,0.655]],"o":[[-0.058,-0.542],[-0.304,-0.12],[-0.017,0.003],[-0.002,-0.002],[-0.146,-0.167],[-0.22,0.016],[-0.166,0.612],[0.233,0.485],[-0.104,0.368],[-0.086,1.199],[1.062,-0.972]],"v":[[1.475,-1.725],[0.69,-3.079],[-0.533,-2.68],[-0.582,-2.666],[-0.586,-2.671],[-1.13,-2.75],[-1.611,-2.371],[-1.362,-0.67],[-1.047,0.794],[-1.444,1.846],[0.715,2.544]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[361.168,245.557],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 47","np":2,"cix":2,"bm":0,"ix":47,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.012,0.062],[0.398,-0.293],[0.308,-0.226],[0.118,-0.294],[-0.155,-0.233],[-0.02,-0.397],[-0.339,0.099],[-0.186,0.498],[-0.101,0.622]],"o":[[0.036,-0.395],[-0.309,0.226],[-0.242,0.178],[-0.114,0.284],[0.216,0.322],[0.016,0.332],[0.515,-0.148],[0.226,-0.605],[0.012,-0.072]],"v":[[1.248,-1.185],[0.501,-1.697],[-0.424,-1.018],[-1.18,-0.345],[-1.025,0.405],[-0.649,1.389],[0.011,1.892],[1.068,0.875],[1.252,-0.986]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[360.843,240.13],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 48","np":2,"cix":2,"bm":0,"ix":48,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.266,0.824],[0.822,-0.206],[2.452,-0.635],[1.147,-0.025],[0.433,0.351],[0.424,0.221],[0.097,0.731],[0.189,0.478],[0.799,0.459],[0.933,0.955],[0.793,0.877],[0.249,1.481],[0.392,0.433],[0.231,0.183],[0.047,0.618],[1.003,0.88],[-0.213,0.993],[0.142,0.68],[0.762,1.147],[0.64,1.481],[0.323,0.807],[0.15,0.396],[-0.041,0.018],[-0.049,0.405],[0.684,0.874],[0.376,0.406],[0.457,-0.04],[0.487,-0.32],[0.561,-0.225],[0.619,0.353],[0.697,-0.015],[1.572,0.318],[1.649,0.472],[0.546,-0.312],[0.226,-0.265],[0.102,-0.079],[0.337,0.18],[-0.009,-1.346],[-0.116,-0.295],[0.089,-0.247],[0.322,0.156],[0.46,0.087],[0.761,0.002],[0.626,0.775],[1.325,0.714],[1.387,0.822],[0.308,0.116],[0.368,0.22],[-0.384,0.212],[-0.175,0.31],[0.241,0.152],[-0.21,0.386],[-0.232,0.233],[0.062,0.448],[0.33,0.147],[0.07,0.065],[0.08,0.201],[0.918,-0.008],[0.67,-0.169],[0.88,-0.077],[3.008,-0.665],[1.144,-0.642],[0.455,-0.415],[0.906,-0.092],[0.075,-0.159],[1.945,1.39],[0.023,-0.357],[1.816,-1.392],[0.859,-0.784],[-0.31,-0.852],[0.083,-0.41],[0.186,-0.203],[0.092,-0.71],[-0.068,-0.365],[0.562,-0.282],[0.712,-0.753],[0.522,-0.732],[0.69,-0.784],[0.946,-1.638],[-0.827,-1.762],[-0.248,-0.15],[-0.328,-0.286],[-0.3,-0.926],[-0.283,-0.34],[0.4,-0.849],[0.842,-0.831],[-0.054,-0.974],[-0.45,-0.323],[-0.274,-0.19],[-0.502,-1.185],[-0.308,-0.25],[-0.285,-0.503],[-0.174,-0.397],[-0.345,-0.426],[-0.937,-1.071],[-2.108,-1.229],[-2.122,0.979],[-0.294,0.089],[-0.341,-0.24],[-0.506,-0.041],[-1.204,0.061],[-1.163,0.375],[-1.117,0.426],[-1.203,-0.008],[-0.511,-0.228],[-0.253,-0.663],[-1.622,0.466],[-0.67,0.005],[-0.472,-0.74],[0.102,-0.731],[0.274,-0.516],[-0.19,-0.389],[0.058,-0.44],[0.161,-0.349],[-0.204,-0.707],[-0.054,-0.083],[-0.008,-0.012],[-0.112,-0.141],[-0.028,-0.024],[-1.521,-2.416],[-0.227,-1.525],[-0.234,-0.597],[-0.362,-0.479],[-0.066,-0.629],[-0.216,-0.7],[0.918,-1.44],[1.027,-1.264],[-0.8,-1.084],[-0.051,-1.711],[-0.711,-1.433],[-0.092,-0.166],[-0.362,-0.661],[0.231,-0.859],[0.006,-0.58],[-0.284,-0.466],[-0.101,-0.724],[-0.092,-0.653],[-0.993,-0.855],[-0.616,-1.311],[-0.343,-0.732],[0.285,-0.925],[-0.016,-0.57],[-0.336,-0.409],[-1.159,-0.503],[-1.036,0.449],[-0.602,0.244],[-0.84,0.016],[-1.317,0.572],[-1.037,0.893],[-1.105,1.062],[-0.939,1.046],[0.74,2.544],[-0.184,0.374],[-0.328,0.156],[-0.434,0.444],[-0.255,0.569],[-0.738,0.546],[0.309,1.348],[0.09,0.867],[-0.19,0.928],[-0.077,0.073],[-1.349,0.758],[-0.997,0.719],[-0.479,1.132],[-0.828,1.091],[0.385,1.305],[0.708,1.165],[0.172,1.54],[-0.084,1.471],[-0.637,0.533],[-0.265,0.635],[-1.832,-0.244],[-0.074,0.143],[-0.05,0.078],[-1.242,1.192],[-0.298,0.651],[-0.75,0.727],[-0.836,0.329],[-0.714,0.585],[-1.023,1.705],[-0.381,0.994],[-0.21,1.083]],"o":[[-0.282,-0.874],[-2.457,0.617],[-1.105,0.287],[-0.526,0.012],[-0.355,-0.287],[-0.537,-0.28],[-0.064,-0.483],[-0.348,-0.886],[-1.146,-0.656],[-0.825,-0.845],[-0.367,-1.459],[-0.095,-0.564],[-0.201,-0.221],[-0.517,-0.407],[-0.109,-1.421],[-0.711,-0.624],[0.139,-0.652],[-0.29,-1.394],[-0.894,-1.346],[-0.345,-0.798],[-0.143,-0.358],[0.038,-0.012],[0.38,-0.171],[0.153,-1.27],[-0.319,-0.407],[-0.332,-0.36],[-0.58,0.051],[-0.506,0.332],[-0.629,-0.32],[-0.612,-0.348],[-1.572,0.035],[-1.676,-0.34],[-0.592,-0.17],[-0.308,0.175],[-0.079,0.092],[-0.406,0.31],[-1.177,-0.631],[0.002,0.319],[0.105,0.266],[-0.215,0.6],[-0.419,-0.204],[-0.76,-0.143],[-1.127,-0.003],[-1.032,-1.277],[-1.422,-0.766],[-0.284,-0.168],[-0.418,-0.158],[-0.716,-0.428],[0.31,-0.171],[0.142,-0.252],[-0.354,-0.225],[0.159,-0.291],[0.306,-0.309],[-0.05,-0.357],[-0.098,-0.044],[-0.164,-0.153],[-0.358,-0.897],[-0.698,0.006],[-0.857,0.216],[-3.048,0.266],[-1.271,0.281],[-0.548,0.307],[-0.673,0.614],[-0.218,0.022],[-2.253,0.752],[-0.347,-0.247],[-0.176,2.644],[-0.924,0.708],[-0.583,0.532],[0.131,0.36],[-0.058,0.29],[-0.463,0.506],[-0.049,0.374],[0.141,0.752],[-0.907,0.456],[-0.615,0.652],[-0.61,0.855],[-1.273,1.445],[-0.754,1.304],[0.122,0.26],[0.375,0.227],[0.762,0.662],[0.139,0.428],[0.577,0.694],[-0.511,1.083],[-0.659,0.65],[0.033,0.596],[-0.13,0.225],[1.069,0.739],[0.153,0.36],[0.444,0.361],[0.205,0.362],[0.221,0.505],[0.897,1.105],[1.58,1.805],[2.019,1.177],[0.28,-0.129],[0.444,-0.134],[0.406,0.284],[1.212,0.099],[1.214,-0.06],[1.138,-0.368],[1.111,-0.424],[0.555,0.003],[0.69,0.307],[0.729,1.901],[0.638,-0.183],[0.923,-0.006],[0.377,0.589],[-0.086,0.612],[-0.206,0.388],[0.179,0.364],[-0.05,0.387],[-0.338,0.734],[0.004,0.078],[0.008,0.013],[0.068,0.145],[0.026,0.033],[1.627,2.339],[0.817,1.297],[0.093,0.628],[0.238,0.605],[0.391,0.518],[0.077,0.734],[0.507,1.641],[-0.88,1.38],[-0.808,0.993],[0.948,1.283],[0.048,1.619],[-0.063,0.132],[0.362,0.661],[0.4,0.728],[-0.142,0.529],[-0.006,0.561],[0.372,0.612],[0.09,0.652],[0.19,1.354],[1.122,0.966],[0.344,0.732],[0.385,0.821],[-0.16,0.521],[0.015,0.545],[0.789,0.961],[1.056,0.459],[0.596,-0.258],[0.787,-0.319],[1.422,-0.026],[1.261,-0.548],[1.163,-1.002],[1.012,-0.973],[1.663,-1.854],[-0.112,-0.386],[0.162,-0.331],[0.56,-0.265],[0.437,-0.446],[0.363,-0.809],[1.138,-0.841],[-0.193,-0.844],[-0.099,-0.946],[0.084,-0.019],[1.119,-1.066],[1.068,-0.6],[0.998,-0.719],[0.524,-1.24],[0.848,-1.116],[-0.387,-1.316],[-0.81,-1.333],[-0.164,-1.459],[0.046,-0.806],[0.51,-0.426],[0.451,-1.085],[0.22,0.03],[0.066,-0.039],[0.955,-1.474],[0.514,-0.495],[0.417,-0.911],[0.666,-0.646],[0.862,-0.34],[1.528,-1.251],[0.551,-0.917],[0.392,-1.024],[0.163,-0.84]],"v":[[64.41,-18.715],[62.839,-19.465],[55.496,-17.502],[52.124,-16.926],[50.559,-17.262],[49.611,-18.215],[48.486,-19.009],[48.336,-20.379],[46.408,-22.31],[43.337,-24.531],[40.935,-27.142],[40.237,-31.54],[39.569,-33.115],[38.892,-33.652],[38.28,-34.88],[36.203,-37.913],[35.195,-40.132],[35.4,-41.988],[33.181,-45.596],[30.935,-49.881],[29.944,-52.293],[29.529,-53.464],[29.647,-53.508],[30.32,-54.47],[28.517,-57.569],[27.979,-58.986],[26.698,-59.327],[25.069,-58.768],[23.608,-57.728],[21.911,-59.017],[19.897,-59.471],[15.152,-58.981],[11.077,-61.696],[9.266,-61.556],[8.518,-60.859],[8.237,-60.529],[7.4,-60.595],[5.168,-59.192],[5.367,-58.29],[5.895,-57.018],[4.634,-57.15],[3.328,-57.631],[1.056,-57.617],[-0.991,-59.037],[-4.965,-60.388],[-8.796,-63.302],[-9.685,-63.732],[-11.133,-64.085],[-10.78,-64.894],[-10.069,-65.565],[-10.257,-66.277],[-10.564,-67.337],[-9.779,-68.017],[-9.327,-69.174],[-9.905,-69.951],[-10.427,-70.061],[-10.642,-70.748],[-12.932,-72.077],[-14.97,-71.676],[-17.577,-71.252],[-26.632,-70.39],[-30.555,-69.284],[-31.922,-68.073],[-34.318,-67.008],[-34.755,-66.699],[-41.374,-67.695],[-42.159,-67.245],[-46.979,-62.389],[-49.637,-60.128],[-50.539,-58.115],[-50.056,-57.062],[-50.622,-56.296],[-51.688,-54.557],[-51.569,-53.496],[-52.841,-52.292],[-55.663,-50.71],[-56.745,-48.318],[-58.927,-46.055],[-61.647,-41.114],[-63.848,-36.682],[-63.28,-36.046],[-62.096,-35.6],[-61.868,-32.414],[-61.159,-31.302],[-60.854,-29.203],[-62.992,-26.45],[-64.198,-24.066],[-63.452,-22.645],[-63.301,-21.911],[-61.03,-19.009],[-60.414,-18.055],[-58.827,-17.339],[-58.475,-16.028],[-57.587,-14.656],[-54.78,-11.432],[-49.562,-6.323],[-42.905,-6.009],[-42.052,-6.426],[-41.064,-6.15],[-39.75,-5.626],[-36.182,-6.21],[-32.685,-6.751],[-29.342,-8.044],[-25.866,-8.834],[-24.237,-8.529],[-23.091,-7.076],[-18.526,-5.8],[-16.555,-6.209],[-14.633,-4.99],[-13.853,-2.902],[-14.801,-1.489],[-14.801,-0.316],[-14.534,0.705],[-14.956,1.794],[-15.318,3.977],[-15.236,4.22],[-15.211,4.257],[-14.947,4.687],[-14.865,4.772],[-9.638,11.526],[-7.962,15.752],[-7.608,17.622],[-6.555,18.906],[-6.503,21.049],[-5.935,23.169],[-6.646,27.714],[-9.801,31.451],[-10.059,34.445],[-7.84,38.343],[-6.212,42.843],[-6.193,43.301],[-5.107,45.283],[-4.023,47.992],[-4.548,49.48],[-4.005,51.021],[-3.202,52.89],[-3.047,54.858],[-1.111,57.801],[1.15,61.389],[2.181,63.584],[2.793,66.273],[2.32,67.768],[2.975,69.179],[5.875,71.626],[9.03,71.518],[10.785,70.674],[13.229,70.294],[17.272,69.554],[20.695,67.313],[24.012,64.125],[27.035,61.193],[29.301,54.232],[29.087,53.098],[29.984,52.57],[31.5,51.487],[32.548,49.949],[33.861,48.077],[34.914,44.826],[34.335,42.312],[34.487,39.498],[34.732,39.366],[38.427,36.615],[41.63,34.808],[43.823,32.077],[45.451,28.43],[45.796,25.012],[44.047,21.381],[42.733,17.208],[42.448,12.756],[43.335,10.711],[44.543,9.332],[46.289,5.294],[46.727,5.085],[46.905,4.913],[50.714,1.434],[51.982,-0.277],[53.104,-3.132],[55.646,-4.281],[57.977,-5.706],[62.139,-10.117],[63.426,-13.045],[64.478,-16.174]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[375.511,323.496],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 49","np":2,"cix":2,"bm":0,"ix":49,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.423,-0.327],[0.481,-0.031],[-0.041,-0.192],[0.636,-0.455],[-0.236,-0.517],[-0.134,-0.253],[-0.235,-0.548],[0.155,-0.963],[0.737,-0.472],[1.062,0.097],[1.01,0.583],[0.06,0.576],[0.358,0.074],[-0.123,0.285],[0.742,0.082],[-0.53,0.234],[0.872,1.986],[2.074,1.408],[-0.255,0.247],[-0.111,0.107],[0.129,0.182],[-0.235,0.12],[0,0],[0,0],[-0.316,0.132],[-2.369,0.995],[-0.116,0.568],[-0.166,0.041],[-0.698,-1.068],[-0.134,0.124],[0.016,-0.469],[0.977,-1.288],[0.592,0.137],[0.067,-0.224],[0.284,0.046],[0.488,-0.363],[0.079,-0.447],[-0.542,-0.445],[0.192,-0.533],[-0.477,-0.414],[-0.368,-0.15],[-1.016,-0.381],[-0.219,-0.544]],"o":[[-0.427,0.33],[0.091,0.152],[0.191,0.89],[-0.408,0.292],[0.119,0.261],[0.277,0.527],[0.379,0.886],[-0.135,0.841],[-0.963,0.616],[-1.095,-0.1],[-0.536,-0.309],[-0.358,-0.026],[-0.365,-0.075],[0.297,-0.689],[-0.447,-0.05],[2.809,-1.24],[-0.978,-2.229],[-0.271,-0.185],[0.111,-0.108],[-0.129,-0.182],[-0.158,-0.22],[0,0],[0,0],[-0.344,-0.276],[2.368,-0.996],[0.116,-0.568],[0.035,-0.171],[1.307,-0.321],[0.134,-0.124],[0.318,-0.296],[-0.049,1.377],[-0.4,0.526],[-0.068,0.225],[-0.087,0.294],[-0.601,-0.098],[-0.345,0.257],[-0.179,1.005],[0.484,0.397],[-0.203,0.562],[0.3,0.262],[1.005,0.407],[0.514,0.193],[0.207,0.513]],"v":[[-63.207,36.18],[-64.602,36.544],[-64.401,37.06],[-65.343,38.792],[-65.616,39.727],[-65.225,40.495],[-64.427,42.09],[-63.985,44.859],[-65.266,47.017],[-68.367,47.281],[-71.709,47.014],[-72.68,45.62],[-73.75,45.473],[-74.062,44.708],[-75.028,43.064],[-75.291,42.092],[-74.927,35.255],[-79.104,29.312],[-79.209,28.494],[-78.876,28.171],[-79.264,27.626],[-79.077,26.913],[-77.718,26.217],[-78.338,25.719],[-78.108,24.849],[-71.002,21.863],[-70.654,20.16],[-70.29,19.796],[-66.991,21.09],[-66.589,20.718],[-65.698,21.086],[-65.589,25.322],[-67.237,25.942],[-67.439,26.616],[-68.081,26.98],[-69.35,27.139],[-70.161,28.172],[-68.685,29.426],[-68.451,30.899],[-68.187,32.156],[-67.149,32.754],[-64.069,33.818],[-62.781,34.8]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.735,0.846],[1.198,1.02],[1.294,1.306],[0.439,0.706],[0.128,0.917],[0.925,1.214],[1.091,0.74],[1.592,0.402],[0.205,1.293],[0.186,-0.387],[1.532,0.838],[0.164,-0.168],[-0.21,-1.068],[0.136,-0.685],[0.42,-0.035],[-0.046,0.263],[0.425,-0.219],[0.493,0.154],[0.229,0.281],[0.393,0.216],[0.787,-0.153],[1.643,1.097],[1.045,-0.559],[0.251,-0.359],[0.488,0.23],[-0.018,1.128],[0.528,0.711],[0.581,0.583],[0.604,0.556],[1.504,-0.734],[2.194,0.392],[0.168,0.192],[0.372,0.141],[0.212,0.322],[0.098,0.222],[1.093,0.206],[-0.369,0.309],[0.291,0.133],[2.293,-0.661],[0.413,-0.743],[0.872,-0.171],[-0.075,0.12],[0.142,0.181],[0.62,0.468],[-0.402,0.487],[0.309,0.187],[0.966,0.411],[0.577,-0.532],[1.043,-0.015],[0.237,-0.412],[-0.267,-0.487],[0.469,-0.099],[0.175,-0.644],[-0.141,-0.113],[0.208,-0.991],[0.368,-0.595],[1.54,0.271],[0.112,-0.284],[0.356,0.318],[0.76,0.232],[0.295,-0.548],[0.149,-0.931],[0.693,-0.729],[0.791,0.415],[0.142,0.797],[0.336,0.749],[1.351,0.935],[-0.728,0.339],[-0.338,-0.052],[-0.44,0.662],[0.747,1.072],[0.635,0.155],[0.689,0.831],[0.937,0.187],[0.54,0.226],[0.487,0.162],[-0.141,-1.717],[-0.001,-0.008],[0.04,-0.521],[-0.18,-0.381],[0.666,-0.015],[1.016,0.389],[0.62,0.237],[0.089,0.324],[-0.016,0.144],[0.767,0.251],[1.135,0.041],[0.882,-0.547],[0.821,-0.313],[-0.104,0.344],[0.585,0.322],[0.822,-0.298],[0.784,0.356],[0.442,0.029],[0.147,-0.781],[0.304,-0.482],[0.682,-0.065],[1.077,-0.719],[-0.701,0.56],[-0.467,0.607],[-0.233,0.653],[-1.212,0.639],[-0.611,1.132],[-0.55,1.204],[-0.765,1.109],[0.716,0.77],[0.061,0.764],[-0.045,0.303],[0.141,0.262],[0.544,0.357],[1.681,0.123],[-0.167,-0.325],[0.574,-0.258],[0.727,-0.115],[-0.75,0.904],[0.539,-0.328],[0.865,0.371],[0.401,-0.073],[-0.084,0.086],[-0.173,0.411],[0.354,0.721],[1.379,-0.993],[0.981,-1.207],[0.274,-0.859],[0.018,-1.054],[0.775,0.086],[-0.023,-0.255],[0.278,0.03],[-0.21,-0.307],[-0.455,-0.665],[-0.113,-0.162],[0.239,0.028],[0.539,-0.366],[0.187,1.152],[0.179,-0.396],[1.74,-0.049],[-0.423,-0.287],[0,0],[0.816,-0.142],[0.975,-0.422],[0.783,-0.714],[1.166,-0.088],[-0.462,-0.282],[0.088,-0.034],[0.28,-0.234],[-0.474,-0.648],[-0.266,-0.319],[-0.108,-0.596],[-0.116,-0.639],[0.185,-0.326],[0.256,0.049],[0.938,0.341],[0.09,-0.195],[1.308,-0.271],[0.543,-0.572],[0.628,0.049],[0.345,-0.134],[-0.538,-1.259],[-0.969,-0.032],[-0.517,-0.745],[-0.872,-1.068],[0.117,-1.594],[1.638,-0.302],[0.259,0.393],[-0.15,1.005],[0.615,0.444],[-0.505,0.599],[0.323,0.161],[2.625,1.303],[0.063,-0.353],[0.078,-0.182],[0.504,-0.434],[-0.099,-0.196],[0.039,-0.077],[0.136,0.055],[0.58,0.079],[-0.032,-0.885],[-0.795,-0.533],[-0.462,-0.787],[0.469,0.343],[0.25,1.122],[0.033,0.539],[0.146,0.472],[0.051,0.595],[-0.072,0.339],[-0.159,0.115],[0.38,0.067],[0.24,-0.288],[-0.041,-0.994],[-0.109,-0.426],[0.002,-0.104],[0.007,-0.547],[0.213,-0.121],[0.293,-0.92],[-0.627,-0.542],[-0.021,-0.014],[-0.288,0.054],[0.054,-0.229],[-0.081,-0.492],[0.392,-1.153],[-0.348,-1.034],[-0.74,-0.228],[-1.013,-0.389],[-0.307,-1.129],[0.038,-0.582],[-0.163,-0.446],[-0.596,-0.663],[0.819,0.12],[0.072,0.434],[0.181,0.254],[0.206,0.471],[-0.023,0.368],[0.156,0.351],[0.641,0.166],[0.513,-0.336],[0.023,-0.857],[0.663,-0.937],[0.541,-0.862],[0.479,-0.879],[0.837,-0.135],[0.418,0.121],[0.008,0.209],[-0.197,0.142],[-0.149,0.338],[-0.685,0.598],[-0.495,0.714],[0.054,0.836],[-0.48,0.274],[-0.107,0.426],[0.355,0.719],[0.027,0.607],[0,0],[-1.003,2.549],[0.3,0.032],[0.396,0.043],[0.034,-0.003],[0.618,0.27],[-0.6,1.089],[0.104,1.211],[0.838,0.248],[0.453,0.01],[0.545,0.132],[0.929,-0.533],[0.036,-0.386],[0.141,-0.714],[1.736,-2.183],[-0.027,-1.371],[0.638,-1.638],[-0.113,-0.134],[-1.5,-0.839],[0.451,-0.832],[0.037,0.021],[0.279,0.193],[0.518,0.515],[1.204,0.237],[0.31,0.769],[0.206,0.391],[0.977,-0.044],[1.073,0.956],[0.959,-0.433],[-0.545,-0.649],[-0.98,-0.981],[0.103,-1.165],[0.337,-0.278],[0.079,0.342],[0.494,0.278],[0.105,-0.322],[0.618,0.036],[0.355,-0.155],[0.305,-0.184],[0.418,0.041],[0.289,-0.128],[0.676,-0.145],[0.102,1.27],[0.369,-0.185],[1.2,-1.816],[0.806,-0.552],[0.49,-0.254],[0.665,-0.147],[0.269,-1.125],[0.593,0.345],[0.213,0.215],[-0.014,0.31],[-0.172,0.211],[0.47,0.913],[0.463,0.056],[0.288,0.01],[0.343,0.386],[0.636,-0.858],[-0.082,-0.445],[-0.04,-0.893],[0.01,-0.928],[-0.541,-0.342],[0.229,-0.636],[0.319,-0.484],[0.222,0.033],[0.302,-0.073],[1.066,-0.265],[0.422,-0.579],[0.907,-0.328],[-0.01,-0.24],[-0.638,-0.82],[0.03,-0.725],[-0.002,-0.016],[0.405,0.013],[0.407,0.373],[0.541,0.372],[0.587,-0.887],[-0.447,-0.535],[-0.726,-0.709],[1.1,-0.126],[0.376,0.425],[0.506,0.16],[0.302,0.17],[-0.031,0.447],[0.31,0.31],[0.021,0.016],[0.003,0.057],[0.366,0.53],[0.088,0.536],[0.349,0.226],[0.159,0.093],[0.025,0.467],[1.064,1.117],[-0.374,-0.19],[-0.884,-0.386],[-1.762,-0.111],[-1.4,2.569],[0.161,0.175],[0.103,0.111],[1.005,0.496],[0.114,0.291],[0.723,0.25],[0.964,1.315],[1.469,0.443],[1.824,0.387],[0.305,0.699],[0.194,-0.245],[0.028,0.058],[0.131,0.11],[0.332,-0.062],[0.396,-0.223],[0.642,0.34],[0.069,0.054],[0.556,0.428],[-0.679,0.299],[0.316,0.543],[0.624,0.373],[0.825,0.541],[1.264,-0.859],[-0.133,-0.84],[0.574,-0.331],[0.217,-0.051],[0.236,0.627],[0.287,-0.313],[1.593,-0.28],[0.695,-1.035],[-0.231,-0.132],[0.357,-0.063],[0.438,-0.563],[0.412,-0.464],[0.524,-0.349],[0.314,-0.419],[0.383,-0.661],[0.966,-1.094],[1.035,-2.617],[0.721,-1.292],[1.103,-1.283],[0.947,-1.424],[2.104,0.757],[0.115,-0.186],[-0.133,-0.395],[0.214,-0.796],[-0.019,-0.231],[-0.061,-0.254],[0.123,-0.201],[0.146,-0.695],[-0.473,-1.31],[0.998,-1.049],[-0.449,-0.027],[0.163,-0.057],[-0.493,-0.176],[-1.651,1.135],[-0.565,0.657],[-0.504,0.585],[-0.438,-0.473],[-0.287,-0.542],[-0.241,-0.739],[-0.468,-1.441],[-0.794,-0.748],[-0.698,0.566],[-0.281,0.445],[-0.779,0.373],[0.503,1.821],[-0.681,0.665],[-0.464,0.406],[0.176,0.79],[0.312,0.899],[0.452,0.469],[-0.072,1.226],[-1.289,1.495],[-1.367,1.64],[-0.233,0.687],[-0.051,1.072],[-0.458,0.257],[-0.317,0.181],[-0.138,0.278],[-0.048,0.108],[-0.371,0.055],[-0.503,-0.058],[-0.499,-0.166],[0.4,-0.735],[0.435,-0.761],[0.628,-0.821],[0.818,-0.775],[0.461,-0.914],[-0.496,-0.547],[0.378,-1.067],[-0.12,-0.133],[-0.215,-0.238],[-0.871,-0.941],[-0.77,-0.149],[-0.712,0.326],[-1.154,-0.368],[-0.794,0.349],[-0.805,0.096],[-0.337,-0.56],[-0.03,-1.179],[2.157,-2.579],[-0.411,-0.098],[0.252,-0.051],[-0.296,-0.244],[-0.636,-0.2],[0.413,-0.815],[0.336,0.437],[0.704,-0.927],[-0.296,-0.077],[0.174,-0.166],[0.017,-0.034],[0.033,-0.086],[0.188,-0.158],[0.072,-0.236],[-0.117,-0.213],[0.056,-0.351],[-0.343,-0.575],[0.109,-0.643],[0.35,-0.115],[0.302,-0.044],[0.292,-0.206],[0.712,0.379],[0.74,-0.01],[0.484,-0.295],[0.365,-0.146],[0.822,-0.022],[0.398,-0.446],[0.274,-0.019],[0.16,0.088],[0.198,0.387],[0.623,-0.019],[0.57,-0.268],[0.58,-0.349],[0.09,0.005],[0.022,0.25],[0.351,-0.095],[0.076,-0.029],[0.223,0.109],[-0.303,0.443],[0.075,0.385],[-0.619,0.615],[-0.292,0.416],[0.05,0.495],[0.199,1.425],[0.261,-0.143],[0.719,-1.397],[0.003,-0.074],[-0.067,-0.813],[-0.197,-0.367],[0.489,-0.551],[-0.41,-0.081],[-0.175,-0.598],[0.226,-0.358],[0.923,-0.133],[0.817,-0.764],[0.584,-0.224],[0.062,-0.424],[-0.066,-0.252],[0.219,-0.471],[0.645,-0.374],[0.746,-0.386],[0.448,-0.426],[-0.101,-0.412],[0.075,-0.379],[0.448,-0.069],[0.143,-0.525],[0.661,0.05],[0.331,-0.481],[-0.091,-0.15],[-0.037,-0.568],[-0.012,-0.041],[1.003,-0.038],[0.985,-0.465],[-0.387,-0.135],[-0.152,-0.481],[-0.101,-0.197],[-0.383,-0.004],[-0.758,-0.427],[-0.338,-0.633],[-0.376,-0.636],[-0.229,-0.276],[0.058,-0.442],[0.181,-0.855],[1.084,0.46],[0.51,0.166],[0.528,-0.154],[0.547,0.257],[0.273,0.061],[0.628,-0.073],[0.713,0.216],[1.109,-0.627],[-0.234,-0.235],[-0.348,-0.35],[-0.176,-0.358],[-0.019,-1.086],[0.78,-1.362],[-0.166,-0.164],[-0.059,-0.633],[0.077,-0.373],[0,0],[-0.353,-0.024],[-0.959,0.898],[-0.257,-0.52],[-0.734,-0.151],[-0.114,0.275],[-0.726,-0.053],[-0.623,0.257],[-0.478,0.974],[-0.74,0.123],[0.246,0.259],[-0.216,0.387],[0.26,0.121],[-0.417,0.533],[-0.129,0.365],[-0.323,0.312],[-0.379,0.188],[-0.419,0.287],[-0.325,0.639],[-0.048,0.332],[-0.492,0.252],[-0.584,0.392],[-0.21,0.076],[-0.007,0.002],[-0.066,-0.045],[-1.138,0.653],[-0.762,0.114],[-0.398,0.336],[-0.827,0.027],[-0.246,-0.086],[-0.182,-0.093],[0.077,-0.261],[-0.324,-0.344],[-0.336,-0.353],[-0.267,-0.459],[-0.459,-0.306],[-1.205,-1.051],[-0.865,-1.223],[0.039,-1.288],[-0.32,0.295],[-0.645,0.611],[0.041,0.609],[-0.162,0.678],[-0.125,0.171],[-0.228,-0.132],[-0.261,-0.131],[0.359,0.458],[0.707,0.462],[0.387,0.167],[-0.519,0.45],[0.352,0.107],[0.927,0.668],[0.207,1.099],[0.769,0.391],[-0.349,1.139],[0,0],[-0.502,0.255],[0.098,-0.374],[-0.275,-0.074],[-0.441,0.053],[-0.608,-0.341],[-0.158,-0.042],[-0.265,-0.279],[-0.406,-0.245],[-0.939,-0.804],[-0.972,-0.568],[-0.424,0.015],[-0.031,-0.274],[0.092,-0.144],[-0.009,-0.489],[-0.003,-0.467],[-0.274,-0.636],[-0.101,-0.474],[-0.327,-0.254],[-0.367,-0.582],[0.109,-0.408],[-0.009,-0.209],[-0.372,-0.283],[-0.652,-0.495],[-0.125,0.223],[0.114,0.761],[-0.321,0.67],[0.619,0.706],[0.076,0.651],[-0.66,0.184],[-0.084,0.615],[-0.724,0.268],[-0.126,0.161],[-0.595,0.23],[-0.312,0.254],[-0.672,-0.227],[0.431,0.329],[0.491,0.376],[0.09,0.163],[-0.096,0.056],[-0.24,0.784],[-0.48,0.359],[-0.145,0.362],[0.083,0.337],[-0.408,0.364],[-0.378,0.654],[-0.111,0.259],[-0.171,0.119],[-0.702,0.797],[-0.578,-0.17],[-0.165,0.011],[-0.79,1.21],[-0.013,0.026],[-0.08,-0.055],[-0.433,0.153],[-0.231,0.164],[-0.263,-0.024],[-0.175,-0.016],[-0.215,0.09],[-0.797,0.259],[-0.688,0.092],[-0.169,-0.154],[0.773,-0.782],[-0.267,-0.197],[-0.394,-0.29],[0.083,-0.036],[0.017,-0.171],[-2.365,-0.91],[-0.894,-1.006],[2.103,0.493],[1.392,-0.308],[0.327,0.444],[0.352,0.058],[0.505,-0.182],[1.061,-0.237],[0.325,-0.664],[0,0],[-0.684,0.029],[-0.005,0],[0.4,-0.256],[0.777,0.038],[0.651,-0.323],[-0.133,-0.23],[-0.079,-0.138],[-0.18,-0.681],[-0.932,0.036],[-1.75,-0.479],[-1.281,0.025],[-1.498,0.03],[-0.721,0.014],[-0.305,-0.091],[0.22,-0.354],[-0.074,-1.161],[0.696,-0.923],[0.3,-0.488],[0.09,-0.413],[0.216,-0.413],[0.496,-0.308],[-0.365,-0.335],[-0.315,-0.02],[1.338,-1.513],[-0.463,-0.024],[-0.487,-0.353],[0.021,-0.402],[-0.721,-0.458],[-0.484,-0.303],[-0.37,-0.563],[-0.63,-1.12],[-1.543,-2.306],[-0.849,-1.164],[-0.387,-0.511],[0.13,-0.851],[-0.418,-1.171],[0.588,-1.129],[-0.413,0.012],[-1.448,0.282],[-1.292,0.442],[-0.963,0.732],[-1.448,0.351],[-1.065,0.706],[-0.932,0.928],[-1.364,2.362],[-0.254,0.305],[-0.164,-0.05],[-0.06,0.263],[-0.121,0.131],[-0.1,0.515],[0.293,0.058],[0.469,0.957],[0.619,0.023],[0.625,-0.1],[0.3,0.719],[0.712,-1.215],[0.117,-0.08],[0.225,-0.01],[0.321,-0.148],[0.248,1.066],[0.226,-0.366],[0.774,0.837],[0.133,0.355],[0.162,0.431],[0.704,1.492],[0.506,0.327],[0.464,0.511],[-0.661,0.475],[-0.597,-0.144],[-0.692,-0.092],[-0.344,-0.679],[-2.259,-0.449],[-1.731,-0.606],[-1.776,-0.499],[-2.763,-1.421],[-1.552,0.018],[-0.374,-0.392],[-0.215,-0.411],[-0.503,-0.961],[-0.227,0.231],[-0.426,0.223],[-0.25,-0.462],[-0.232,0.229],[-0.851,-1.484],[-0.074,-1.061],[-0.738,-2.408],[-1.584,-5.039],[-0.074,0.559],[-0.699,0.214],[-0.443,0.398],[-0.193,1.042],[-0.186,3.125],[-0.29,1.128],[-1.617,0.867],[-0.844,0.684],[-0.333,0.742],[-0.44,0.751],[-1.259,-0.012],[-1.351,1.455],[0.174,-0.631],[-0.28,-0.042],[-0.551,-0.812],[-0.648,-0.973],[1.608,-1.685],[-0.461,0.004],[-1.309,0.892],[-0.585,-0.809],[-0.488,-0.375],[-0.173,-0.868],[0.01,-0.799],[0.025,-0.919],[1.339,-0.254],[-0.376,-0.206],[-0.708,-1.043],[-0.598,-1.325],[-1.226,-0.375],[-0.469,-0.631],[-0.413,-0.295],[-0.594,0.705],[0.217,0.918],[1.674,1.883],[0.474,0.704],[-0.25,0.768],[-0.942,1.007],[-0.466,0.053],[-1.3,-1.283],[-0.045,-0.024],[-0.254,0.002],[-0.448,0.753],[-0.925,0.526],[-0.267,2.059],[0.466,1.023],[0.749,0.598],[0.27,0.626],[0.328,0.285],[0.655,0.036],[0.197,0.463],[-0.475,0.974],[-0.593,0.501],[-0.233,0.58],[-1.022,0.793],[-0.77,-0.774],[-0.023,0.44],[-1.511,0.133],[-0.79,0.671],[-0.33,0.416],[-0.785,-0.101],[-0.819,0.624],[-0.648,0.764],[-0.534,0.309],[-0.592,0.41],[0.224,1.008],[0.071,0.273],[-0.259,0.257],[-0.242,0.162],[-0.191,0.183],[-0.181,0.18],[-0.082,0.029],[0.009,0.218],[-0.16,0.729],[0.356,0.297],[0.408,0.019],[-0.005,0.126],[0.424,0.308],[-0.261,0.801],[0.803,0.36],[0.194,0.12],[-0.081,0.482],[0.083,0.547],[0.312,0.475],[0.293,0.508],[0.586,2.442],[0.391,0.248],[0.593,0.254],[0.386,-0.168],[0.144,-0.333],[0.316,-0.096],[0.276,-0.236],[0.547,0.2],[0.723,0.626],[-0.125,0.022],[-0.273,0.177],[-0.483,0.602],[-0.282,0.229],[-0.583,-0.024],[-0.285,0.089],[0.128,-0.534],[-0.392,0.087],[-0.954,0.569],[-0.772,0.755],[-0.194,-0.542],[-0.226,-0.783],[-0.863,0.241],[0.773,-2.176],[-0.308,-0.036],[-0.215,-0.018],[-0.968,0.762],[-0.454,0.198],[-0.385,0.277],[-0.091,0.647],[-0.412,0.415],[-0.082,0.362],[0.529,0.276],[0.424,0.292],[0.111,0.099],[0.155,0.114],[0.08,0.116],[-0.275,0.633],[0.051,0.312],[-0.394,0.313],[-0.368,1.112],[-0.778,1.211],[-1.287,1.484],[-0.831,1.001],[-1.171,0.69],[-0.785,2.25],[-0.47,1.085],[-0.716,0.919],[0.13,1.449],[-0.707,1.522],[0.25,0.174],[0.597,1.259],[1.266,-0.154],[-0.064,-0.364],[0.033,-0.142],[0.314,0.206],[0.155,-0.159],[0.415,-0.428],[0.288,0.557],[0.235,-0.216],[0.439,0],[0.019,0.336],[-0.907,0.998],[-0.805,0.417],[-0.869,0.591],[-2.049,3.452],[-0.167,0.263],[-1.104,-0.13],[-0.538,0.385],[-0.808,0.095],[-1.16,-0.17],[-0.458,0.157],[-0.198,0.15],[-0.333,0.124],[-0.6,-0.311],[-0.733,-0.097],[-0.756,1.246],[-0.26,0.702],[-0.486,0.698],[-1.423,0.76],[-0.485,0.148],[-0.444,-0.439],[-0.8,0.117],[-0.554,0.493],[-0.752,-0.172],[-0.493,-0.755],[4.474,-2.879],[0.265,-1.233],[0.441,-0.53],[0.356,-0.442],[-0.291,-0.996],[-0.412,-1.36],[-0.383,-3.211],[-0.054,-0.225],[0.065,0.593],[0.022,0.19],[-0.788,1.233],[-0.112,0.391],[-0.757,0.349],[-0.791,0.638],[-0.244,0.885],[-0.303,0.453],[-0.513,0.408],[0.334,0.944],[0.33,0.342],[-0.352,0.514],[0.677,0.729],[0.664,0.037],[-0.622,0.945],[-1.47,0.431],[-0.602,1.426],[-2.625,1.653],[-2.011,1.353],[-2.036,-1.357],[0.022,0.384],[0.061,1.064],[0.217,0.798],[0.715,0.24],[0.385,0.418],[0.83,-0.033],[-0.39,0.128],[-0.635,-0.483],[-1.132,0.034],[-1.733,-1.526],[-0.002,0.471],[-0.904,-0.033],[-0.547,1.044]],"o":[[-1.035,-1.191],[-1.401,-1.192],[-0.582,-0.588],[-0.497,-0.797],[-0.208,-1.49],[-0.803,-1.054],[-1.344,-0.912],[-0.97,-0.245],[-0.069,-0.435],[-1.059,2.209],[-0.202,-0.11],[-0.809,0.824],[0.13,0.663],[-0.078,0.389],[-0.154,0.013],[0.078,-0.449],[-0.413,0.212],[-0.379,-0.118],[-0.279,-0.344],[-0.725,-0.398],[-1.694,0.33],[-0.896,-0.598],[-0.414,0.221],[-0.348,-0.411],[0.018,-1.128],[0.013,-0.809],[-0.502,-0.677],[-0.573,-0.575],[-1.47,-1.351],[-2.015,0.984],[-0.056,-0.236],[-0.268,-0.307],[-0.328,-0.124],[-0.131,-0.198],[-0.468,-1.065],[0.369,-0.309],[0.242,-0.202],[-1.849,-0.846],[-0.848,0.245],[-0.348,0.628],[0.075,-0.12],[0.134,-0.214],[-0.488,-0.618],[0.402,-0.487],[0.213,-0.259],[-0.897,-0.546],[-0.787,-0.335],[-0.88,0.81],[-0.452,0.006],[-0.365,0.634],[0.434,0.795],[-0.636,0.133],[-0.045,0.165],[0.826,0.666],[-0.699,-0.019],[-1.54,-0.271],[-0.301,-0.053],[-0.328,0.831],[-0.574,-0.514],[-0.541,-0.166],[-0.456,0.848],[-0.153,0.962],[-0.548,0.576],[-0.813,-0.427],[-0.144,-0.805],[-0.67,-1.499],[-0.322,-0.222],[0.333,-0.156],[0.742,0.115],[0.704,-1.06],[-0.385,-0.552],[-1.009,-0.246],[-0.595,-0.718],[-0.567,-0.114],[-0.473,-0.198],[-1.318,-0.44],[0.001,0.008],[-0.46,0.112],[-0.034,0.44],[0.329,0.697],[-1.116,0.026],[-0.62,-0.237],[-0.285,-0.109],[-0.037,-0.134],[0.103,-0.933],[-1.073,-0.351],[-1.034,-0.037],[-0.737,0.458],[0.317,-0.411],[0.2,-0.656],[-0.827,-0.455],[-0.811,0.295],[-0.395,-0.179],[-0.741,-0.047],[-0.099,0.521],[-0.413,0.655],[-1.424,0.134],[0.387,-0.779],[0.588,-0.47],[0.431,-0.562],[0.494,-1.381],[1.121,-0.591],[0.631,-1.171],[0.578,-1.263],[0.584,-0.848],[-0.497,-0.534],[-0.023,-0.297],[0.045,-0.295],[-0.319,-0.585],[-1.415,-0.928],[-0.419,-0.03],[0.615,1.198],[-0.549,0.247],[0.452,-1.078],[0.357,-0.431],[-0.989,0.601],[-0.442,-0.19],[0.212,-0.28],[0.308,-0.314],[0.308,-0.735],[-0.766,-1.561],[-1.311,0.944],[-0.539,0.664],[-0.305,0.957],[-0.775,-0.086],[-0.254,-0.029],[-0.278,-0.031],[-0.387,-0.042],[0.455,0.666],[0.112,0.165],[-0.203,-0.116],[-0.676,-0.079],[-0.44,0.299],[-0.07,-0.427],[-0.984,2.181],[-0.535,0.015],[0,0],[-0.653,0.537],[-1.04,0.181],[-0.973,0.421],[-0.792,0.723],[-0.504,0.038],[0.467,0.286],[-0.336,0.131],[-0.61,0.512],[0.25,0.344],[0.408,0.488],[0.115,0.64],[0.063,0.346],[-0.136,0.238],[0.484,-0.762],[-0.198,-0.072],[-0.717,1.541],[-0.809,0.168],[-0.515,0.543],[-0.369,-0.029],[-1.234,0.483],[0.393,0.919],[-0.152,0.856],[0.794,1.145],[1.092,1.336],[-0.093,1.257],[-0.082,-0.395],[-0.63,-0.957],[0.114,-0.761],[0.505,-0.599],[0.202,-0.239],[-2.622,-1.31],[-0.274,-0.136],[-0.039,0.216],[-0.508,-0.248],[-0.182,0.156],[0.059,0.117],[-0.089,0.176],[-0.517,-0.209],[-0.915,-0.124],[0.038,1.067],[0.783,0.524],[-0.496,-0.3],[-0.88,-0.644],[-0.119,-0.531],[-0.031,-0.494],[-0.146,-0.477],[0.048,-0.341],[0.085,-0.148],[0.421,-0.304],[-0.171,-0.265],[-0.629,0.755],[0.016,0.373],[-0.005,0.103],[-0.013,0.558],[-0.108,0.159],[-0.754,0.427],[-0.252,0.795],[0.02,0.018],[0.095,0.21],[0.739,-0.139],[-0.116,0.487],[0.188,1.129],[-0.319,0.938],[0.26,0.771],[1.026,0.316],[1.001,0.384],[0.155,0.572],[-0.032,0.476],[0.306,0.839],[-0.7,0.463],[0.177,-0.381],[-0.051,-0.307],[-0.311,-0.437],[-0.156,-0.358],[0.023,-0.38],[-0.272,-0.614],[-0.588,-0.152],[-0.83,0.543],[-0.031,1.119],[-0.584,0.824],[-0.546,0.868],[-0.414,0.758],[-0.429,0.069],[-0.14,-0.041],[-0.009,-0.266],[0.303,-0.219],[0.345,-0.782],[0.637,-0.557],[0.506,-0.732],[-0.036,-0.564],[0.362,-0.207],[0.234,-0.937],[-0.278,-0.56],[0,0],[-0.117,-2.668],[0.136,-0.348],[-0.396,-0.044],[-0.039,-0.005],[-0.299,-0.623],[0.734,-1.002],[0.56,-1.016],[-0.078,-0.912],[-0.436,-0.129],[-0.557,-0.012],[-0.718,-0.174],[-0.371,0.213],[-0.067,0.722],[-0.546,2.752],[-0.926,1.164],[0.035,1.761],[-0.07,0.18],[1.113,1.318],[-0.45,0.832],[-0.036,-0.02],[-0.292,-0.172],[-0.6,-0.417],[-0.802,-0.797],[-0.682,-0.134],[-0.163,-0.406],[-0.492,-0.936],[-1.416,0.064],[-0.657,-0.585],[-0.851,0.384],[0.885,1.054],[-0.876,0.716],[-0.034,0.392],[-0.627,0.516],[-0.122,-0.525],[-0.305,-0.17],[-0.287,0.879],[-0.384,-0.021],[-0.349,0.152],[-0.393,0.238],[-0.319,-0.032],[-0.443,0.195],[0.664,-1.043],[-0.033,-0.404],[-1.957,0.976],[-0.965,0.103],[-0.454,0.31],[-0.62,0.321],[-1.3,0.287],[-0.112,0.466],[-0.264,-0.154],[-0.223,-0.223],[0.013,-0.276],[0.644,-0.786],[-0.205,-0.397],[-0.289,-0.035],[-0.546,-0.019],[-0.529,-0.595],[-0.289,0.389],[0.164,0.878],[0.042,0.932],[-0.008,0.678],[0.692,0.437],[-0.197,0.548],[-0.188,-0.105],[-0.31,-0.046],[-0.099,-0.895],[-0.774,0.192],[-0.589,0.809],[-0.211,0.077],[0.041,1.066],[-0.555,0.593],[-0.001,0.016],[-0.37,-0.063],[-0.516,-0.016],[-0.464,-0.425],[-0.679,-0.467],[-0.563,0.851],[0.589,0.705],[0.247,0.241],[-0.63,0.072],[-0.334,-0.379],[-0.394,-0.123],[-0.516,-0.289],[0.03,-0.435],[-0.02,-0.02],[0.011,-0.047],[-0.037,-0.684],[0.355,-0.355],[-0.066,-0.403],[-0.162,-0.106],[-0.529,-0.306],[-0.11,-2.03],[0.588,-0.214],[0.86,0.436],[1.607,0.701],[2.817,0.178],[0.115,-0.211],[-0.103,-0.111],[0.853,-0.687],[0.058,-0.26],[-0.308,-0.784],[-1.622,-0.56],[-0.874,-1.193],[-1.821,-0.549],[0.226,-0.675],[-0.125,-0.288],[-0.218,0.277],[-0.07,-0.147],[-0.265,-0.224],[-0.459,0.087],[-0.646,0.363],[-0.035,-0.066],[-0.555,-0.427],[0.772,-0.155],[0.526,-0.232],[-0.409,-0.701],[-0.849,-0.508],[-1.45,-0.952],[-0.63,0.428],[0.086,0.545],[-0.186,0.108],[0.148,-0.607],[-0.13,-0.343],[-1.093,1.194],[-1.149,0.202],[-0.153,0.226],[-0.357,0.063],[-0.654,0.115],[-0.376,0.482],[-0.424,0.477],[-0.432,0.287],[-0.463,0.619],[-0.741,1.277],[-1.89,2.143],[-0.543,1.373],[-0.826,1.482],[-1.113,1.293],[-0.887,1.335],[-0.219,-0.078],[-0.242,0.391],[-0.746,0.311],[-0.061,0.227],[0.049,0.256],[-0.053,0.231],[-0.29,0.642],[-0.283,1.359],[0.387,1.071],[-0.322,0.339],[0.167,0.01],[-0.495,0.175],[1.736,0.618],[0.721,-0.496],[0.503,-0.585],[0.148,0.605],[0.406,0.439],[0.366,0.689],[0.468,1.442],[0.321,0.987],[0.689,0.65],[0.414,-0.336],[0.474,-0.75],[2.277,-1.089],[-0.235,-0.849],[0.441,-0.431],[0.621,-0.544],[0.786,-0.449],[-0.22,-0.632],[-0.834,-0.864],[0.119,-2.056],[1.394,-1.618],[0.459,-0.552],[0.361,-1.061],[0.022,-0.483],[0.314,-0.175],[0.268,-0.153],[0.052,-0.107],[0.171,-0.388],[0.49,-0.072],[0.517,0.058],[1.505,0.501],[-0.418,0.767],[-0.514,0.898],[-0.683,0.894],[-0.721,0.684],[-0.367,0.727],[0.834,0.922],[-0.063,0.179],[0.214,0.238],[-0.568,1.231],[0.513,0.553],[0.814,0.158],[1.055,-0.483],[0.781,0.25],[0.711,-0.313],[0.679,-0.081],[-1.1,0.416],[-2.933,-0.048],[-0.238,0.285],[0.275,0.066],[-0.367,0.074],[0.529,0.438],[-0.2,0.934],[-0.568,1.121],[-0.975,-1.266],[-0.206,0.271],[0.239,0.12],[-0.027,0.034],[-0.056,0.054],[-0.088,0.233],[-0.184,0.155],[-0.071,0.233],[0.179,0.328],[-0.087,0.558],[0.323,0.54],[-0.061,0.358],[-0.279,0.092],[-0.356,0.053],[-0.517,0.367],[-0.506,-0.27],[-0.671,0.009],[-0.339,-0.04],[-0.75,0.3],[-0.566,0.015],[-0.181,0.204],[-0.196,0.013],[-0.372,-0.207],[-0.234,-0.455],[-0.727,0.021],[-0.595,0.28],[-0.154,0.093],[-0.182,-0.009],[-0.03,-0.333],[-0.115,0.031],[-0.165,-0.132],[-0.549,-0.267],[0.211,-0.308],[-0.114,-0.586],[0.345,-0.344],[0.293,-0.419],[-0.144,-1.432],[-0.049,-0.348],[-1.38,0.754],[-0.04,0.079],[-0.535,0.565],[0.035,0.429],[0.403,0.75],[-0.241,0.271],[0.798,0.159],[0.122,0.416],[-0.599,0.95],[-1.195,0.172],[-0.479,0.449],[-0.381,0.145],[-0.041,0.276],[0.125,0.487],[-0.325,0.698],[-0.727,0.421],[-0.548,0.284],[-0.32,0.304],[0.079,0.325],[-0.097,0.495],[-0.626,0.096],[-0.641,-0.133],[-0.586,-0.044],[-0.103,0.149],[0.295,0.489],[0.003,0.048],[-0.931,0.478],[-1.117,0.042],[-0.438,0.207],[0.422,0.147],[0.06,0.187],[0.188,0.369],[0.863,0.009],[0.602,0.339],[0.362,0.676],[0.215,0.363],[0.29,0.352],[-0.114,0.866],[-0.176,0.824],[-0.484,-0.206],[-0.552,-0.179],[-0.601,0.175],[-0.252,-0.118],[-0.626,-0.141],[-0.733,0.085],[-1.33,-0.403],[-0.293,0.166],[0.348,0.35],[-0.079,0.383],[-0.68,0.932],[0.029,1.621],[-0.115,0.2],[0.414,0.41],[0.036,0.376],[0,0],[-0.071,0.348],[1.329,0.093],[0.549,0.293],[0.315,0.637],[0.303,0.063],[0.385,-0.928],[0.672,0.048],[1.029,-0.425],[0.745,0.024],[0.406,-0.067],[-0.42,-0.441],[0.127,-0.228],[-1.147,-0.529],[0.237,-0.303],[0.138,-0.395],[0.311,-0.3],[0.455,-0.224],[0.586,-0.402],[0.152,-0.298],[0.065,-0.44],[0.58,-0.296],[0.209,-0.139],[0.007,-0.002],[0.037,0.057],[0.981,0.674],[0.632,-0.362],[0.49,-0.072],[0.531,-0.449],[0.261,-0.008],[0.192,0.069],[0.277,0.115],[0.133,0.422],[0.335,0.356],[0.383,0.403],[0.287,0.491],[1.331,0.886],[1.125,0.98],[0.853,1.206],[-0.015,0.469],[0.652,-0.603],[0.397,-0.377],[-0.045,-0.652],[0.071,-0.2],[0.075,-0.298],[0.288,0.012],[0.554,0.279],[-0.52,-0.663],[-0.353,-0.231],[-0.262,-0.113],[0.309,-0.267],[-1.08,-0.329],[-0.942,-0.677],[-0.164,-0.874],[-1.26,-0.641],[0,0],[0.501,-0.255],[0.076,0.347],[-0.072,0.271],[0.454,0.122],[-0.037,0.624],[0.148,0.083],[0.359,0.095],[0.323,0.34],[1.052,0.634],[0.85,0.728],[0.365,0.214],[0.145,-0.005],[0.014,0.126],[-0.288,0.456],[0.009,0.472],[0.007,0.817],[0.184,0.425],[0.089,0.417],[0.529,0.41],[0.229,0.362],[-0.048,0.181],[0.023,0.53],[0.652,0.495],[0.222,0.169],[0.395,-0.701],[0.68,-0.106],[0.449,-0.938],[-0.399,-0.455],[-0.107,-0.919],[0.619,-0.172],[0.642,0.075],[0.228,-0.085],[0.509,0.309],[0.389,-0.151],[0.565,-0.457],[0.609,0.206],[-0.491,-0.375],[-0.096,-0.073],[0.045,0.047],[0.742,-0.434],[0.178,-0.579],[0.306,-0.229],[0.13,-0.324],[-0.105,-0.432],[0.488,-0.435],[0.181,-0.312],[0.07,-0.163],[0.929,-0.647],[0.246,0.538],[0.083,0.089],[1.073,-0.075],[0.014,-0.026],[0.072,0.095],[0.39,0.272],[0.272,-0.097],[0.287,-0.205],[0.142,0.014],[0.23,0.022],[0.763,-0.32],[0.662,-0.216],[0.169,0.155],[-0.773,0.782],[-0.256,0.259],[0.394,0.291],[-0.073,0.041],[-0.174,0.077],[-0.294,2.913],[-0.458,1.264],[-1.785,0.961],[-1.414,-0.332],[0.013,-0.561],[-0.212,-0.287],[-0.57,-0.094],[-1.021,0.367],[-0.748,0.166],[0,0],[-0.654,0.067],[0.004,0],[-0.366,0.343],[-0.694,0.444],[-0.72,-0.035],[-0.253,0.126],[0.079,0.138],[-0.561,0.357],[0.261,0.987],[-0.108,1.841],[1.249,0.342],[1.497,-0.03],[0.721,-0.014],[0.317,-0.007],[0.506,0.151],[-0.598,0.964],[0.066,1.057],[-0.339,0.451],[-0.224,0.363],[-0.098,0.449],[-0.309,0.586],[-0.486,0.302],[0.018,0.247],[2.015,0.132],[-0.304,0.344],[0.643,0.033],[-0.26,0.278],[-0.047,0.887],[0.482,0.307],[0.577,0.359],[0.708,1.075],[1.36,2.419],[0.802,1.197],[0.378,0.517],[0.477,0.63],[-0.183,1.198],[0.386,1.082],[-0.175,0.337],[1.479,-0.046],[1.337,-0.261],[1.141,-0.391],[1.148,-0.873],[1.211,-0.293],[1.104,-0.731],[1.906,-1.9],[0.329,0.005],[0.183,-0.221],[0.333,0.102],[0.132,0.014],[0.354,-0.384],[0.051,-0.261],[-1.146,-0.227],[-0.265,-0.542],[-0.649,-0.025],[-1.121,0.18],[-0.554,-1.33],[-0.068,0.116],[-0.19,0.13],[-0.355,0.018],[-0.46,0.213],[-0.104,-0.45],[-0.368,0.594],[-0.263,-0.284],[-0.162,-0.431],[-0.581,-1.543],[-0.253,-0.538],[-0.568,-0.367],[-0.567,-0.625],[0.183,0.563],[0.695,0.169],[0.915,0.121],[1.253,2.469],[1.802,0.358],[1.74,0.611],[2.934,0.826],[1.262,0.648],[0.452,-0.005],[0.319,0.336],[0.502,0.96],[0.155,0.297],[0.345,-0.35],[0.251,0.462],[0.161,0.297],[0.782,-0.776],[0.551,0.963],[0.177,2.516],[1.548,5.051],[0.188,0.597],[0.121,-0.904],[0.562,-0.173],[0.817,-0.736],[0.573,-3.08],[1.057,0.443],[1.848,-0.323],[0.932,-0.501],[0.642,-0.52],[0.355,-0.792],[0.648,-1.108],[2.035,0.019],[0.331,0.505],[-0.068,0.247],[1.032,0.156],[0.657,0.967],[1.039,1.562],[-0.306,0.321],[1.621,-0.013],[0.164,0.969],[0.36,0.499],[0.634,0.487],[0.157,0.788],[-0.011,0.92],[-0.029,1.104],[-0.446,0.085],[1.137,0.625],[0.816,1.201],[0.479,1.062],[0.748,0.228],[0.299,0.403],[0.624,0.446],[0.664,-0.788],[-0.602,-2.543],[-0.563,-0.634],[-0.482,-0.715],[0.43,-1.319],[0.333,0.306],[0.868,1.629],[0.042,0.041],[0.062,0.184],[0.949,-0.008],[0.539,-0.905],[1.601,-0.911],[0.144,-1.117],[-0.433,-0.951],[-0.575,-0.458],[-0.172,-0.399],[-0.519,-0.45],[0.056,-0.456],[-0.358,-0.838],[0.349,-0.717],[0.489,-0.412],[1.303,0.297],[0.128,1.021],[0.331,0.333],[0.081,-1.57],[0.968,-0.086],[0.419,-0.356],[0.576,-0.729],[1.012,0.129],[0.806,-0.614],[0.396,-0.466],[0.62,-0.36],[0.793,-0.55],[-0.064,-0.289],[-0.104,-0.404],[0.208,-0.205],[0.179,0.099],[0.162,-0.156],[0.081,-0.033],[0.26,-0.092],[0.57,-0.638],[0.096,-0.437],[-0.09,-0.076],[0.034,-0.108],[0.027,-0.692],[0.74,-0.17],[0.3,-0.92],[-0.208,-0.094],[-0.472,-0.294],[0.09,-0.539],[-0.086,-0.56],[-0.333,-0.506],[-1.273,-2.204],[-0.117,-0.489],[-0.542,-0.345],[-0.374,-0.16],[-0.116,0.05],[-0.248,-0.179],[-0.368,0.111],[-0.469,0.402],[-0.132,-0.949],[0.258,0.007],[0.322,-0.058],[0.661,-0.428],[0.226,-0.283],[0.474,-0.384],[0.327,0.014],[-0.128,0.534],[-0.096,0.396],[1.181,-0.263],[0.929,-0.553],[0.402,0.381],[0.289,0.81],[0.274,0.955],[0.747,2.159],[-0.124,0.352],[0.205,0.023],[0.266,1.159],[0.385,-0.303],[0.416,-0.182],[0.564,-0.406],[0.08,-0.573],[0.245,-0.246],[0.149,-0.661],[-0.491,-0.256],[-0.103,-0.11],[-0.142,-0.128],[-0.087,-0.1],[-0.424,-0.611],[0.134,-0.311],[0.431,-0.284],[0.932,-0.741],[0.456,-1.375],[1.911,0.756],[0.853,-0.984],[0.88,-1.06],[2.075,-1.225],[0.389,-1.115],[0.472,-1.09],[0.999,-1.283],[-0.15,-1.674],[0.126,-0.272],[-1.237,-0.866],[-0.505,-1.064],[-0.357,0.044],[0.031,0.175],[-0.224,-0.276],[-0.19,-0.125],[-0.416,0.428],[-0.288,-0.557],[-0.16,-0.309],[-0.344,0.318],[0.125,-0.287],[-0.063,-1.103],[0.623,-0.685],[0.933,-0.484],[3.322,-2.263],[0.22,0.104],[0.843,-1.32],[0.648,0.076],[0.599,-0.429],[1.19,-0.14],[0.473,0.07],[0.236,-0.081],[0.282,-0.215],[0.716,-0.265],[0.654,0.34],[1.423,0.188],[0.392,-0.645],[0.296,-0.797],[0.922,-1.323],[0.446,-0.239],[0.671,-0.206],[0.543,0.536],[0.755,-0.111],[0.483,-0.431],[-0.487,0.748],[-3.169,4.19],[-1.001,0.645],[-0.141,0.655],[-0.363,0.436],[-0.654,0.812],[0.398,1.361],[0.938,3.096],[0.002,0.209],[0.134,0.557],[-0.021,-0.19],[0.005,-1.609],[0.219,-0.342],[0.199,-0.691],[0.874,-0.403],[0.748,-0.602],[0.142,-0.518],[0.372,-0.558],[0.709,-0.562],[-0.169,-0.474],[-0.545,-0.566],[0.495,-0.722],[-0.442,-0.474],[0.622,-0.945],[0.784,-1.192],[1.348,-0.394],[3.02,2.346],[2.052,-1.292],[1.756,-1.181],[0.321,0.214],[-0.06,-1.065],[-0.046,-0.819],[-0.212,-0.782],[0.062,-0.534],[-0.591,-0.64],[0.225,-0.304],[0.82,-0.269],[0.897,0.681],[2.009,-0.059],[0.332,0.292],[0.006,-1.52],[1.085,0.039],[0.582,-1.108]],"v":[[182.005,-42.998],[178.349,-46.09],[174.301,-49.837],[172.697,-51.734],[171.892,-54.311],[170.416,-58.314],[167.479,-60.949],[163.015,-63.333],[159.484,-64.609],[158.53,-64.734],[153.166,-64.654],[152.534,-64.572],[151.945,-61.583],[152.208,-59.518],[151.535,-58.781],[150.945,-59.072],[150.179,-59.661],[148.672,-59.251],[147.884,-60.007],[146.938,-60.872],[144.585,-61.083],[139.138,-60.485],[136.377,-60.908],[135.39,-60.02],[134.048,-60.967],[134.103,-64.351],[133.866,-67.153],[131.828,-68.204],[130.349,-70.128],[125.516,-69.764],[119.062,-68.872],[118.719,-69.528],[117.724,-70.117],[116.869,-70.623],[116.586,-71.337],[114.042,-73.308],[115.148,-74.234],[115.042,-75.053],[109.307,-77.498],[107.488,-75.831],[105.692,-73.581],[105.916,-73.941],[105.835,-74.571],[104.174,-76.189],[105.379,-77.65],[105.273,-78.468],[102.5,-80.122],[100.701,-79.648],[97.203,-80.074],[95.987,-79.458],[96.466,-77.993],[94.671,-77.256],[93.358,-76.148],[93.492,-75.641],[94.458,-73.016],[92.768,-72.092],[88.147,-72.906],[87.505,-72.541],[85.427,-72.975],[83.516,-74.325],[81.942,-73.96],[81.359,-70.972],[80.31,-68.299],[78.048,-67.609],[76.997,-69.992],[76.312,-72.316],[73.206,-76.044],[72.673,-77.059],[73.924,-76.904],[75.857,-77.594],[75.991,-81.837],[74.357,-82.812],[71.979,-84.05],[69.89,-85.434],[68.254,-85.859],[66.84,-86.462],[63.591,-84.636],[63.596,-84.614],[62.768,-83.51],[63.132,-82.373],[62.512,-81.471],[59.205,-82.519],[57.346,-83.231],[56.315,-83.804],[56.452,-84.374],[55.054,-85.898],[51.731,-86.601],[48.81,-85.86],[46.578,-84.386],[47.556,-85.606],[46.857,-87.205],[44.385,-87.105],[42.358,-87.173],[41.154,-87.579],[39.523,-86.492],[39.416,-84.954],[37.406,-84.169],[33.656,-82.971],[35.288,-85.006],[37.023,-86.423],[37.828,-88.318],[40.803,-90.863],[43.473,-93.311],[44.913,-97.005],[47.372,-100.046],[47.242,-102.676],[45.109,-104.506],[45.406,-105.441],[45.26,-106.248],[43.687,-107.635],[38.966,-109.184],[38.515,-108.4],[35.198,-106.92],[32.992,-105.523],[34.797,-108.502],[34.164,-109.321],[31.083,-110.635],[29.823,-110.82],[30.495,-111.502],[31.227,-112.532],[31.18,-114.863],[26.976,-115.852],[24.322,-112.02],[22.57,-110.252],[22.297,-107.064],[19.971,-107.322],[19.451,-106.812],[18.617,-106.906],[18.166,-106.122],[19.53,-104.127],[19.862,-103.63],[19.192,-103.854],[17.352,-103.2],[15.112,-102.95],[14.158,-103.075],[8.148,-102.346],[7.885,-101.374],[8.323,-101.079],[5.937,-100.251],[2.924,-99.452],[0.273,-97.736],[-2.425,-95.734],[-2.688,-94.765],[-3.821,-93.816],[-4.779,-93.308],[-5.026,-91.367],[-4.115,-90.525],[-3.777,-88.762],[-3.255,-86.889],[-3.338,-85.73],[-4.034,-85.357],[-4.813,-87.581],[-5.402,-87.342],[-9.899,-86.423],[-11.672,-85.234],[-13.162,-84.945],[-14.23,-84.786],[-15.709,-81.577],[-13.405,-80.044],[-12.731,-77.544],[-9.76,-74.717],[-9.181,-69.669],[-10.865,-65.033],[-11.423,-66.161],[-11.398,-68.902],[-12.149,-71.048],[-10.633,-72.844],[-10.738,-73.662],[-18.608,-77.583],[-19.374,-77.271],[-19.546,-76.682],[-21.156,-76.424],[-21.237,-75.794],[-20.696,-74.76],[-21.416,-74.812],[-22.891,-75.52],[-24.432,-74.044],[-22.694,-71.904],[-20.822,-69.917],[-22.271,-70.878],[-24.906,-73.617],[-24.937,-75.243],[-25.239,-76.688],[-25.667,-78.389],[-25.487,-79.408],[-25.128,-79.808],[-25.313,-80.796],[-26.117,-80.903],[-27.083,-78.26],[-26.841,-77.04],[-26.853,-76.73],[-26.86,-75.074],[-27.334,-74.652],[-29.197,-73.1],[-28.575,-70.893],[-28.513,-70.85],[-27.914,-70.531],[-27.945,-68.686],[-27.976,-67.23],[-27.588,-63.889],[-28.202,-61.028],[-26.494,-59.613],[-23.381,-58.874],[-20.344,-56.548],[-20.579,-54.803],[-20.363,-53.406],[-18.9,-51.184],[-21.237,-50.674],[-21.07,-51.92],[-21.415,-52.775],[-22.683,-53.855],[-22.612,-55.141],[-22.765,-56.234],[-24.274,-57.439],[-26.035,-57.189],[-26.522,-54.777],[-27.387,-51.559],[-29.372,-49.286],[-30.328,-46.48],[-32.404,-45.118],[-33.701,-45.186],[-34.665,-45.721],[-33.691,-46.303],[-33.04,-47.161],[-31.994,-49.373],[-30.033,-50.981],[-29.71,-53.286],[-29.087,-54.376],[-28.289,-55.26],[-29.386,-57.419],[-29.603,-59.356],[-29.705,-61.665],[-29.337,-69.926],[-29.841,-70.585],[-31.03,-70.715],[-31.138,-70.717],[-32.533,-72.096],[-30.52,-75.227],[-29.136,-78.818],[-30.748,-80.557],[-32.105,-80.743],[-33.868,-80.731],[-35.89,-81.751],[-36.373,-80.743],[-36.64,-78.596],[-40.173,-71.257],[-40.495,-67.441],[-41.439,-62.324],[-41.305,-61.816],[-37.365,-58.571],[-38.717,-56.076],[-38.828,-56.137],[-39.684,-56.686],[-41.36,-58.089],[-44.045,-60.421],[-45.578,-61.057],[-46.025,-62.292],[-48.347,-63.32],[-52.142,-64.58],[-54.477,-65.465],[-54.778,-63.535],[-51.878,-60.536],[-53.378,-57.649],[-53.677,-56.238],[-54.414,-56.812],[-55.188,-58.061],[-55.955,-57.749],[-58.44,-57.484],[-59.562,-57.317],[-60.378,-56.674],[-61.528,-56.781],[-62.434,-56.606],[-64.458,-55.249],[-63.58,-58.752],[-64.365,-59.201],[-69.15,-54.951],[-71.738,-53.814],[-73.129,-52.92],[-75.028,-52.423],[-76.735,-50.085],[-77.675,-49.583],[-78.416,-50.324],[-79.047,-51.14],[-78.549,-51.764],[-78.206,-54.648],[-79.164,-55.387],[-80.022,-55.333],[-81.258,-56.037],[-83.449,-56.398],[-83.561,-55.123],[-83.244,-52.469],[-83.318,-49.695],[-82.531,-48.408],[-82.491,-46.294],[-83.271,-44.744],[-83.88,-44.946],[-84.801,-44.885],[-86.747,-46.251],[-88.144,-44.83],[-90.652,-43.334],[-91.035,-42.833],[-90.014,-39.999],[-91.343,-37.959],[-91.341,-37.911],[-92.504,-37.999],[-94.006,-38.368],[-95.231,-39.652],[-97.6,-39.71],[-96.831,-37.894],[-96.058,-35.393],[-95.684,-34.51],[-97.189,-35.438],[-98.337,-36.4],[-99.699,-36.419],[-99.525,-38.145],[-99.928,-39.242],[-99.991,-39.294],[-99.976,-39.447],[-100.572,-41.255],[-100.142,-42.669],[-100.766,-43.663],[-101.298,-43.864],[-101.673,-44.906],[-105.126,-47.781],[-103.004,-47.045],[-100.398,-45.79],[-95.338,-44.408],[-88.068,-47.917],[-88.149,-48.548],[-88.457,-48.881],[-88.886,-51.489],[-88.967,-52.324],[-90.808,-53.57],[-94.279,-56.932],[-97.617,-59.73],[-103.183,-59.967],[-103.319,-62.038],[-104.138,-62.144],[-104.596,-62.908],[-104.866,-63.275],[-105.808,-63.472],[-107.028,-62.873],[-108.995,-62.855],[-109.149,-63.036],[-110.815,-64.318],[-108.57,-64.932],[-108.043,-66.243],[-109.999,-67.32],[-111.878,-69.433],[-116.469,-68.635],[-117.572,-66.903],[-117.876,-65.742],[-118.489,-65.51],[-118.612,-67.373],[-119.485,-67.602],[-123.531,-65.403],[-126.497,-64.011],[-126.317,-63.304],[-127.387,-63.115],[-129.199,-62.387],[-130.006,-60.795],[-131.561,-59.686],[-132.725,-58.665],[-133.691,-56.609],[-136.769,-53.429],[-140.701,-45.958],[-142.522,-41.921],[-145.518,-37.846],[-148.721,-33.85],[-152.749,-30.339],[-153.338,-30.1],[-153.499,-28.87],[-155.192,-27.291],[-155.225,-26.615],[-155.059,-25.85],[-155.324,-25.201],[-156.037,-23.251],[-155.777,-19.131],[-154.938,-15.104],[-154.569,-14.214],[-154.494,-13.725],[-154.494,-12.721],[-149.126,-12.689],[-147.289,-14.529],[-145.779,-16.285],[-144.899,-14.641],[-143.639,-13.406],[-142.865,-11.1],[-141.46,-6.777],[-140.133,-3.696],[-137.779,-3.738],[-136.809,-4.959],[-135.096,-6.309],[-134.371,-11.726],[-134.011,-14.136],[-132.521,-15.23],[-131.637,-17.408],[-130.892,-19.857],[-132.079,-21.452],[-133.283,-24.424],[-130.46,-29.749],[-126.225,-34.559],[-125.09,-36.383],[-125.07,-39.514],[-124.468,-40.79],[-123.441,-41.143],[-122.834,-41.774],[-122.714,-42.105],[-122.093,-42.585],[-120.429,-42.395],[-118.769,-42.193],[-119.304,-39.339],[-120.206,-36.923],[-122.033,-34.367],[-124.262,-31.831],[-126.475,-29.683],[-126.079,-27.852],[-125.977,-24.742],[-125.842,-24.234],[-125.198,-23.519],[-124.102,-20.014],[-122.161,-18.662],[-119.816,-19.282],[-116.71,-19.76],[-114.384,-19.596],[-112.428,-20.803],[-110.763,-19.975],[-112.959,-17.639],[-121.577,-16.19],[-121.347,-15.32],[-121.374,-14.791],[-121.604,-13.921],[-119.877,-12.964],[-120.65,-10.173],[-121.97,-11.04],[-125.456,-10.102],[-125.144,-9.337],[-125.047,-8.908],[-125.111,-8.805],[-125.248,-8.598],[-125.953,-8.096],[-126.385,-7.494],[-126.32,-6.803],[-126.04,-6.188],[-126.086,-4.8],[-125.748,-3.32],[-126.222,-2.277],[-127.169,-2.3],[-128.139,-1.883],[-130.186,-0.624],[-131.422,-1.488],[-132.895,-0.648],[-133.934,-0.473],[-136.052,0.104],[-137.576,0.633],[-137.956,0.908],[-138.551,0.672],[-139.463,-0.158],[-140.426,-1.033],[-141.855,0.006],[-143.731,0.554],[-144.397,1.161],[-144.592,-0.096],[-145.253,-0.598],[-145.528,-0.514],[-146.098,-0.856],[-146.191,-1.796],[-145.881,-2.824],[-146.115,-4.175],[-145.003,-5.063],[-144.734,-6.455],[-145.33,-10.742],[-146.096,-11.053],[-149.288,-7.787],[-149.349,-7.557],[-150.339,-5.497],[-149.903,-4.393],[-150.497,-2.488],[-150.267,-1.617],[-149.456,0.33],[-148.883,1.743],[-152.871,1.794],[-155.448,3.647],[-156.938,4.318],[-157.698,5.141],[-157.555,5.861],[-157.64,7.219],[-159.271,8.745],[-161.507,9.915],[-163.254,10.859],[-163.54,11.864],[-163.3,12.741],[-164.225,13.459],[-165.609,14.392],[-167.573,13.586],[-168.939,14.228],[-168.939,14.754],[-168.45,16.28],[-168.425,16.413],[-171.534,16.363],[-174.667,17.525],[-174.542,18.477],[-173.532,19.248],[-173.455,19.836],[-172.485,20.309],[-170.273,20.861],[-168.517,22.229],[-168.482,24.116],[-167.553,24.718],[-167.738,26.945],[-168.12,29.549],[-169.929,31.17],[-171.29,30.389],[-172.771,30.517],[-174.15,30.363],[-174.911,30.08],[-176.793,30.104],[-178.802,29.956],[-182.498,31.331],[-182.603,32.149],[-181.56,33.198],[-181.41,34.301],[-181.668,37.29],[-183.283,41.754],[-183.201,42.385],[-181.704,43.575],[-181.969,44.865],[-182.301,46.478],[-181.798,47.137],[-178.256,45.879],[-177.259,47.543],[-175.789,48.898],[-175.147,48.536],[-172.593,48.089],[-170.641,47.783],[-168.358,45.615],[-166.14,45.46],[-165.91,44.59],[-164.494,42.553],[-164.681,41.84],[-163.984,39.426],[-163.408,38.45],[-163.017,37.187],[-161.74,36.525],[-160.409,35.79],[-158.963,34.237],[-158.66,33.295],[-158.261,31.926],[-156.387,31.479],[-155.774,30.857],[-155.754,30.853],[-155.602,31.007],[-152.332,31.588],[-150.54,30.559],[-149.179,30.137],[-147.784,28.839],[-146.966,29.019],[-146.406,29.261],[-146.105,29.825],[-145.618,30.896],[-144.483,31.814],[-143.93,33.188],[-142.659,34.277],[-138.849,37.178],[-135.572,40.437],[-135.978,44.201],[-135.087,44.568],[-133.13,42.76],[-132.25,41.305],[-132.961,39.738],[-132.666,39.18],[-132.21,38.93],[-131.158,39.459],[-130.526,38.641],[-132.361,36.945],[-133.473,36.355],[-134.481,35.352],[-134.711,34.482],[-137.835,33.157],[-139.35,30.56],[-140.668,28.93],[-141.294,25.881],[-141.289,25.879],[-139.785,25.113],[-139.824,26.18],[-139.46,26.821],[-138.122,26.928],[-137.408,28.512],[-136.939,28.658],[-136.15,29.094],[-135.114,29.956],[-132.089,31.989],[-129.569,34.305],[-128.364,34.626],[-127.722,34.773],[-128.255,35.436],[-128.428,36.633],[-128.801,37.87],[-127.677,39.495],[-127.794,40.87],[-127.077,41.842],[-125.647,43.165],[-125.399,44.217],[-125.576,44.753],[-124.66,45.859],[-122.703,47.346],[-121.989,47.159],[-121.56,44.954],[-119.907,43.926],[-120.61,41.271],[-121.801,39.645],[-120.448,38.564],[-119.145,37.298],[-117.158,37.732],[-116.627,37.357],[-114.953,37.626],[-114.033,36.911],[-112.123,36.622],[-111.721,35.67],[-113.194,34.544],[-113.982,33.954],[-113.682,33.811],[-112.513,31.949],[-111.595,30.729],[-110.874,29.896],[-110.839,28.892],[-110.956,27.574],[-109.28,26.668],[-109.193,25.768],[-108.429,25.374],[-106.719,22.521],[-105.43,23.637],[-105.058,23.77],[-101.884,23.418],[-101.846,23.339],[-101.576,23.575],[-100.227,23.693],[-99.499,23.265],[-98.946,23.058],[-98.462,23.239],[-97.838,23.122],[-95.594,22.109],[-93.567,21.655],[-93.06,22.118],[-95.379,24.464],[-95.273,25.281],[-94.092,26.153],[-94.323,26.268],[-94.581,26.718],[-89.834,32.034],[-88.594,35.639],[-94.191,36.739],[-98.391,36.244],[-98.805,34.668],[-99.654,34.133],[-100.9,34.604],[-104.164,34.792],[-105.874,36.014],[-109.794,36.421],[-109.794,37.462],[-109.781,37.462],[-110.894,38.469],[-113.27,38.68],[-115.296,39.036],[-115.483,39.749],[-115.245,40.161],[-115.924,41.954],[-113.739,43.236],[-110.498,47.089],[-106.652,47.359],[-102.159,47.27],[-99.996,47.228],[-98.95,47.232],[-98.827,48.046],[-99.654,50.933],[-99.888,54.242],[-101.037,55.471],[-101.469,56.669],[-101.798,58.067],[-103.231,58.594],[-103.374,59.947],[-102.876,60.456],[-101.248,64.423],[-100.879,65.312],[-99.192,65.9],[-99.621,66.968],[-98.442,68.979],[-96.929,69.778],[-95.547,71.208],[-93.66,74.59],[-89.303,81.682],[-86.826,85.225],[-85.679,86.766],[-84.823,88.765],[-84.589,92.007],[-84.055,95.516],[-83.605,96.301],[-79.229,95.71],[-75.256,94.743],[-72.069,93.096],[-68.525,90.916],[-65.028,89.804],[-62.094,87.106],[-56.549,80.991],[-55.667,80.528],[-54.831,78.618],[-54.205,78.238],[-53.812,78.077],[-53.142,76.788],[-53.506,76.148],[-55.486,74.262],[-56.817,73.335],[-58.669,73.742],[-59.894,71.937],[-62.494,71.706],[-62.745,72.145],[-63.52,72.199],[-64.522,72.471],[-66.971,72.887],[-67.924,72.762],[-70.006,73.869],[-70.506,72.679],[-70.993,71.385],[-72.772,66.732],[-73.872,65.39],[-75.734,64.423],[-75.371,62.221],[-74.001,63.395],[-71.932,63.317],[-70.592,65.152],[-63.798,67.508],[-58.498,69.213],[-53.31,71.174],[-44.228,72.601],[-40.447,74.824],[-39.175,74.902],[-38.451,76.273],[-36.944,79.154],[-36.125,79.26],[-34.981,78.398],[-34.23,79.786],[-33.41,79.891],[-30.112,79.179],[-29.698,82.598],[-28.239,89.997],[-22.778,104.857],[-21.753,104.719],[-19.773,103.402],[-18.213,102.619],[-16.895,99.739],[-15.822,90.389],[-13.156,89.116],[-8.572,86.307],[-5.703,85.07],[-4.312,83.075],[-3.25,80.695],[-0.445,79.317],[4.68,77.426],[4.927,79.156],[5.292,79.796],[7.473,81.59],[9.424,84.505],[10.257,90.092],[10.625,90.981],[15.07,89.596],[16.19,92.294],[17.461,93.611],[19.041,95.204],[19.057,97.693],[19.023,100.454],[17.528,103.549],[17.404,104.502],[19.969,107.572],[22.161,111.335],[24.042,113.825],[25.599,114.98],[26.599,116.072],[28.963,116.14],[29.2,112.665],[24.789,106.278],[23.07,104.325],[23.168,101.893],[25.268,98.387],[26.497,98.779],[30.115,102.937],[30.245,103.031],[30.718,103.359],[32.633,101.917],[34.654,99.89],[38.379,96.145],[37.797,92.604],[35.723,90.919],[34.905,89.152],[34.148,88.119],[32.346,87.395],[32.109,86.01],[30.91,82.945],[33.113,81.505],[34.194,79.994],[37.851,79.178],[39.202,81.917],[40.093,81.549],[42.892,78.804],[45.729,78.122],[46.632,76.855],[48.943,76.549],[51.661,75.911],[53.664,73.667],[55.013,72.473],[56.916,71.475],[58.169,68.941],[57.822,68.15],[58.208,67.32],[58.887,66.77],[59.487,66.692],[60.007,66.187],[60.252,66.093],[60.607,65.557],[61.849,63.469],[61.511,62.273],[60.457,62.04],[60.516,61.689],[59.69,60.419],[61.361,59.09],[60.304,57.126],[59.661,56.857],[59.473,55.71],[59.555,54.14],[58.956,52.559],[57.732,51.238],[62.644,46.09],[61.695,45.113],[60.017,44.107],[58.832,44.025],[58.159,44.866],[57.275,44.708],[56.478,45.367],[54.885,45.59],[53.555,43.144],[54.195,43.15],[55.092,42.79],[56.68,41.087],[57.419,40.281],[58.822,39.969],[59.742,39.855],[59.359,41.456],[60,42.096],[62.49,40.132],[65.419,39.381],[66.328,40.769],[66.536,43.163],[68.71,44.145],[68.682,50.765],[69.185,51.424],[69.815,51.488],[72.567,52.502],[73.503,51.601],[74.726,51.232],[75.539,49.486],[76.122,48.137],[76.708,47.352],[75.811,45.947],[74.429,45.167],[74.109,44.852],[73.661,44.492],[73.409,44.168],[73.363,42.546],[73.492,41.656],[74.763,40.792],[76.494,38.036],[78.327,34.175],[83.632,32.331],[85.957,29.202],[89.117,26.808],[93.119,21.719],[94.278,18.37],[96.185,15.603],[96.411,11.579],[97.279,6.706],[97.091,5.994],[95.357,2.021],[92.63,0.143],[92.128,0.803],[92.122,1.275],[91.317,0.555],[90.684,0.637],[89.437,1.921],[88.573,0.251],[87.753,0.146],[86.546,0.637],[86.701,-0.312],[86.638,-3.356],[89.017,-4.817],[91.723,-6.432],[99.877,-15.122],[100.548,-15.307],[104.88,-14.992],[106.697,-15.398],[108.388,-16.712],[111.945,-15.904],[113.361,-15.988],[114.005,-16.339],[114.919,-17.196],[117.293,-16.05],[119.38,-15.357],[122.878,-16.941],[123.738,-19.025],[124.919,-21.277],[128.51,-24.456],[129.911,-25.064],[131.294,-24.656],[133.169,-23.864],[135.119,-24.965],[137.268,-26.183],[137.286,-23.695],[126.341,-12.329],[124.253,-9.955],[123.606,-8.229],[122.442,-6.99],[121.944,-4.282],[123.318,-0.243],[125.297,9.236],[125.378,9.887],[126.403,9.749],[126.336,9.18],[129.283,5.002],[129.794,3.895],[130.653,2.116],[133.312,1.21],[134.555,-1.221],[135.128,-2.739],[136.632,-4.001],[137.651,-6.437],[136.789,-7.463],[137.041,-8.932],[137.169,-11.312],[135.396,-12.003],[137.263,-14.838],[140.174,-17.921],[144.359,-19.992],[154.549,-22.587],[160.588,-26.627],[166.848,-27.907],[167.633,-28.357],[167.452,-31.551],[167.212,-34.031],[165.831,-35.833],[165.305,-37.338],[163.043,-38.07],[163.974,-38.731],[165.994,-38.139],[168.968,-37.182],[175.642,-37.239],[176.533,-37.607],[180.009,-38.597],[182.817,-39.837]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[509.233,206.319],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 50","np":3,"cix":2,"bm":0,"ix":50,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Map Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[1566,1182,0],"to":[-264,0,0],"ti":[264,0,0]},{"t":180.00000733155,"s":[-18,1182,0]}],"ix":2},"a":{"a":0,"k":[357.5,249.5,0],"ix":1},"s":{"a":0,"k":[232.781,205.403,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.907,0.55],[1.212,0.089],[1.104,0.691],[1.238,0.001],[0.804,0.088],[0.774,0.271],[0.916,-0.483],[0.381,0.621],[0.606,0.512],[0.82,0.111],[0.698,-0.323],[0.644,-0.571],[0.377,0.04],[0.018,0.304],[0.054,0.168],[0.015,0.035],[-0.341,0.63],[0.999,0.23],[0.602,-0.816],[0.056,-0.222],[0.004,-0.002],[0.44,-0.226],[-0.318,0.383],[-0.116,0.284],[-0.453,0.359],[0.648,0.682],[1.838,1.1],[0.804,0.74],[0.441,0.32],[0.433,-0.051],[0.242,0.247],[0.237,0.147],[0.436,-0.068],[0.559,-0.177],[0.688,0.486],[1.166,1.049],[0.568,0.103],[0.396,0.014],[0.182,0.423],[0.862,0.209],[-0.017,0.011],[0.145,0.28],[1.194,-0.596],[1.159,0.072],[1.035,0.403],[0.341,-0.01],[0.458,0.098],[0.688,0.327],[0.78,-0.143],[0.908,0.035],[0.123,0.405],[0.272,-0.211],[0.071,-0.117],[1.669,-0.703],[0.185,-0.649],[-0.026,0.032],[0.178,-0.091],[0.176,-0.511],[0.411,-0.243],[0.14,-0.313],[0.059,-0.297],[0.482,-0.259],[0.047,-0.622],[-0.171,-0.687],[0.087,-0.884],[0.63,-0.696],[0.061,-0.831],[0.134,-0.372],[0.304,-0.213],[0.404,-0.59],[0.417,-0.695],[-0.131,-0.909],[-0.634,-0.362],[0.79,-0.772],[0.441,-0.254],[0.041,-0.831],[-0.46,-0.463],[0.019,-0.015],[0.041,-0.268],[-0.624,-0.238],[-0.436,-0.461],[-0.215,-0.399],[-0.565,-1.131],[-1.001,-2.329],[-1.859,-0.54],[-0.012,-0.003],[-1.845,-1.366],[-1.041,-0.315],[-0.276,-0.368],[0.005,-0.267],[-0.029,-0.594],[-0.207,-0.521],[-0.052,-0.564],[0.334,-0.837],[-0.299,-1.183],[0,0],[0.047,-1.178],[0.218,-0.853],[0.139,-0.773],[-0.091,-0.748],[0.276,-0.89],[0.083,-0.611],[-0.178,-0.763],[0.226,-0.944],[0.219,-0.915],[0.217,-0.814],[0.823,-0.337],[-0.445,-0.945],[0.1,-0.908],[0.379,-0.747],[-0.153,-0.701],[0.05,-0.448],[-0.029,-0.376],[-0.449,-0.158],[-0.216,0.07],[-0.089,0.012],[-0.06,0.041],[0.124,-0.317],[-0.151,-0.118],[0.008,-0.079],[0.932,-2.244],[-0.148,-1.026],[0.06,-0.138],[0.105,0.141],[0.389,0.175],[0.099,-0.366],[0.606,-0.46],[-0.097,-0.236],[-0.479,-0.044],[-0.303,-0.014],[-0.076,-0.509],[-0.594,-0.105],[-0.032,-0.152],[0.495,-0.23],[-0.382,-0.155],[0.182,-0.858],[-0.246,-0.312],[0.064,-0.415],[0.102,-0.172],[-0.634,-0.875],[-0.714,-0.744],[0.15,-0.458],[-0.342,0.01],[-1.015,-0.333],[-0.325,0.102],[0.068,-0.162],[-0.308,-0.027],[-0.255,-0.671],[-0.138,0.562],[0.188,0.49],[-0.352,0.495],[-0.273,0.192],[-0.185,0.65],[-0.524,-0.123],[0.217,0.423],[-0.494,1.556],[-0.621,0.347],[-0.222,0.48],[-0.131,0.571],[-0.482,0.404],[-0.583,1.27],[0.271,0.165],[-0.439,1.942],[-1.069,1.197],[0.095,1.042],[-0.703,0.371],[0.076,0.618],[0.324,0.036],[-0.01,0.12],[0.225,0.385],[-0.285,1.033],[-1.474,0.238],[-0.055,0.731],[0.242,0.737],[-0.382,0.205],[0.214,0.245],[-1.901,1.428],[-0.561,0.511],[-0.356,0.583],[0.214,0.47],[0.099,0.261],[-0.281,0.348],[0.509,-0.004],[0.199,0.228],[0.26,0.125],[0.112,0.097],[-1.942,-0.139],[0.019,0.286],[-0.231,0.075],[-0.609,0.65],[-0.442,0.881],[-0.236,0.379],[-0.312,0.417],[-0.241,0.831],[0.014,0.076],[-0.832,1.029],[0.062,1.124],[-0.056,0.178],[-0.305,0.181],[-0.144,0.354],[0.199,1.01],[-0.988,0.747],[-0.17,0.368],[-0.372,0.295],[-0.257,0.053],[-1.31,0.436],[-1.623,-0.056],[0.253,0.331],[-0.546,0.197],[-0.103,0.228],[-0.04,0.104],[-0.073,0.919],[-0.521,0.234],[-0.233,0.228],[0.18,0.593],[-0.508,0.453],[-0.195,0.347],[-0.518,1.739],[0.318,0.816],[0.019,0.598],[-0.755,0.098],[-0.045,0.232],[-0.323,0.786],[-0.651,0.461],[-0.432,0.478],[-0.193,1.224],[-0.061,1.479]],"o":[[-1.067,-0.647],[-1.344,-0.097],[-1.055,-0.659],[-0.805,0],[-0.852,-0.093],[-1.126,-0.395],[-0.203,-0.75],[-0.461,-0.749],[-0.607,-0.513],[-0.767,-0.105],[-0.787,0.364],[-0.266,0.235],[-0.32,-0.033],[-0.01,-0.176],[-0.012,-0.037],[0.613,-0.054],[0.457,-0.843],[-1.009,-0.232],[-0.139,0.19],[-0.004,0.001],[-0.463,0.172],[-0.023,-0.592],[0.198,-0.239],[0.218,-0.535],[0.677,-0.536],[0.169,-2.082],[-0.923,-0.553],[-0.404,-0.371],[-0.386,-0.279],[-0.372,0.044],[-0.185,-0.188],[-0.384,-0.24],[-0.59,0.091],[-0.895,0.282],[-1.283,-0.907],[-0.415,-0.372],[-0.311,-0.056],[0.184,-0.364],[-0.384,-0.9],[0.017,-0.011],[0.25,-0.177],[-0.727,-1.403],[-0.999,0.498],[-1.147,-0.072],[-0.315,-0.122],[-0.469,0.015],[-0.733,-0.156],[-0.738,-0.351],[-0.93,0.171],[0.078,-0.401],[-0.132,-0.431],[-0.101,0.038],[-1.054,1.755],[-0.594,0.25],[-0.027,0.096],[-0.11,0.137],[-0.529,0.271],[-0.169,0.491],[-0.295,0.175],[-0.126,0.282],[-0.108,0.556],[-0.551,0.296],[-0.055,0.72],[0.214,0.86],[-0.091,0.922],[-0.508,0.563],[-0.028,0.386],[-0.133,0.371],[-0.574,0.403],[-0.464,0.677],[-0.416,0.693],[0.111,0.766],[0.698,0.398],[-0.366,0.357],[-0.594,0.343],[-0.027,0.536],[-0.043,0.02],[-0.219,0.17],[-0.109,0.715],[0.57,0.217],[0.314,0.331],[0.599,1.115],[1.134,2.267],[0.657,1.531],[0.013,0.004],[1.855,1.351],[0.869,0.643],[0.41,0.124],[0.175,0.233],[-0.012,0.592],[0.027,0.557],[0.213,0.54],[0.087,0.934],[-0.479,1.2],[0,0],[-1.172,0.435],[-0.035,0.873],[-0.195,0.761],[-0.134,0.742],[0.108,0.897],[-0.179,0.58],[-0.11,0.811],[0.227,0.975],[-0.219,0.916],[-0.196,0.819],[-0.224,0.838],[-1.062,0.434],[0.373,0.795],[-0.094,0.854],[-0.313,0.615],[0.09,0.415],[-0.04,0.362],[0.034,0.449],[0.218,0.076],[0.09,-0.029],[0.06,-0.04],[0.235,0.268],[-0.044,0.237],[-0.031,0.061],[-0.248,2.45],[-0.39,0.942],[0.023,0.16],[-0.097,0.226],[-0.248,-0.332],[-0.313,-0.142],[-0.197,0.727],[-0.175,0.132],[0.179,0.435],[0.307,0.028],[0.557,0.027],[0.103,0.681],[0.021,0.153],[-0.496,0.23],[-0.476,0.22],[1.588,0.647],[-0.083,0.395],[0.216,0.275],[-0.031,0.207],[-0.551,0.929],[0.619,0.855],[-0.33,0.295],[-0.109,0.33],[1.195,-0.038],[0.339,0.111],[-0.082,0.144],[-0.148,0.356],[0.713,0.064],[0.178,0.467],[0.127,-0.52],[-0.184,-0.482],[0.197,-0.277],[0.587,-0.412],[0.493,0.194],[0.475,0.112],[-0.692,-1.355],[0.221,-0.692],[0.437,-0.243],[0.272,-0.59],[0.152,-0.665],[1.075,-0.901],[0.124,-0.271],[-1.404,-0.852],[0.431,-1.906],[0.792,-0.886],[-0.073,-0.799],[0.494,-0.262],[-0.039,-0.318],[-0.093,-0.01],[0.043,-0.479],[-0.549,-0.94],[1.235,0.77],[0.616,-0.1],[0.05,-0.674],[0.389,-0.043],[0.352,-0.189],[2.32,0.345],[0.606,-0.456],[0.5,-0.455],[0.28,-0.457],[-0.116,-0.256],[-0.174,-0.46],[0.281,-0.348],[-0.261,0.001],[-0.195,-0.223],[-0.209,-0.1],[1.799,0.696],[0.367,0.026],[0.116,0.14],[0.842,-0.273],[0.699,-0.743],[0.202,-0.404],[0.276,-0.443],[0.485,-0.65],[0.026,-0.091],[0.902,-0.974],[0.693,-0.856],[-0.01,-0.182],[0.137,-0.439],[0.331,-0.197],[0.42,-1.032],[-0.323,-1.639],[0.325,-0.244],[0.181,-0.396],[0.214,-0.17],[1.358,-0.286],[1.544,-0.514],[0.38,0.013],[-0.559,-0.736],[0.262,-0.094],[0.074,-0.059],[0.329,-0.851],[0.046,-0.584],[0.292,-0.131],[0.467,-0.458],[-0.169,-0.556],[0.288,-0.257],[0.911,-1.613],[0.221,-0.741],[-0.203,-0.518],[-0.024,-0.758],[0.292,-0.038],[0.751,-0.357],[0.291,-0.708],[0.519,-0.367],[0.824,-0.91],[0.23,-1.465],[0.036,-0.865]],"v":[[44.541,-40.482],[41.012,-41.41],[37.729,-43.699],[34.27,-44.634],[31.847,-44.624],[29.659,-45.483],[26.817,-44.708],[26.039,-46.899],[24.155,-47.845],[22.221,-48.909],[19.987,-48.53],[17.889,-47.019],[16.784,-46.208],[16.607,-46.658],[16.509,-47.179],[16.465,-47.285],[17.973,-48.223],[17.143,-50.376],[13.939,-49.088],[13.645,-48.462],[13.633,-48.457],[12.212,-47.96],[13.868,-49.428],[14.288,-50.238],[15.181,-51.409],[15.805,-53.716],[13.191,-58.934],[10.31,-60.501],[9.336,-61.779],[8.219,-61.905],[7.578,-62.068],[7.061,-62.611],[5.768,-62.812],[4.145,-62.196],[1.798,-63.068],[-1.836,-66.034],[-3.214,-66.841],[-4.383,-66.808],[-4.356,-68.038],[-6.502,-69.329],[-6.452,-69.363],[-6.257,-70.106],[-9.886,-70.689],[-12.908,-69.797],[-15.958,-70.821],[-16.94,-71.024],[-18.388,-70.764],[-20.308,-72.211],[-22.652,-72.35],[-25.309,-72.015],[-25.383,-73.237],[-26.271,-73.489],[-26.536,-73.262],[-31.761,-71.166],[-33.135,-69.848],[-33.074,-69.052],[-34.054,-68.825],[-34.827,-67.572],[-35.546,-66.768],[-36.182,-66.058],[-36.381,-65.185],[-37.215,-64.439],[-38.085,-63.061],[-37.707,-60.976],[-37.485,-58.334],[-38.52,-55.795],[-39.794,-53.97],[-39.729,-52.803],[-40.577,-51.965],[-42.158,-50.611],[-43.146,-48.403],[-44.183,-46.38],[-42.805,-44.747],[-42.405,-43.349],[-43.76,-42.485],[-45.421,-41.006],[-44.526,-39.464],[-44.623,-39.41],[-44.99,-38.732],[-43.979,-37.285],[-42.472,-36.488],[-41.714,-35.344],[-40.01,-31.948],[-36.65,-25.107],[-33.838,-20.709],[-33.802,-20.702],[-28.601,-16.218],[-25.736,-14.719],[-24.373,-14.203],[-24.232,-13.292],[-24.304,-11.524],[-23.984,-9.892],[-23.114,-8.272],[-24.635,-5.614],[-24.296,-1.908],[-23.655,0.633],[-25.261,3.367],[-25.541,5.902],[-26.129,8.182],[-26.181,10.384],[-26.113,13.116],[-26.735,14.808],[-26.265,17.015],[-26.591,19.949],[-27.248,22.695],[-27.838,25.154],[-29.134,26.851],[-29.753,29.127],[-29.172,31.511],[-30.11,33.772],[-30.541,35.778],[-30.241,36.999],[-30.431,38.006],[-29.712,39.078],[-29.048,39.063],[-28.736,38.899],[-28.556,38.778],[-28.389,39.656],[-28.183,40.2],[-28.245,40.41],[-30.338,47.16],[-30.866,50.122],[-30.774,50.658],[-31.141,50.292],[-31.988,49.506],[-32.787,49.83],[-33.958,51.611],[-34.208,52.224],[-33.292,52.935],[-32.385,52.862],[-31.804,53.726],[-30.647,55.187],[-30.568,55.644],[-32.054,56.333],[-31.924,57.325],[-32.203,60.136],[-31.932,61.183],[-31.58,61.852],[-31.971,62.482],[-31.807,65.232],[-29.464,67.259],[-30.175,68.382],[-29.651,69.07],[-27.815,70.886],[-26.821,70.822],[-27.046,71.28],[-26.521,71.967],[-24.971,73.138],[-23.921,73.138],[-24.087,71.728],[-24.107,70.449],[-23.299,69.796],[-21.957,68.212],[-20.436,68.693],[-19.822,67.896],[-20.826,63.396],[-19.591,61.913],[-18.493,60.993],[-18.454,59.312],[-16.842,57.832],[-14.347,54.514],[-14.542,53.771],[-17.514,49.746],[-13.81,47.778],[-13.529,44.589],[-12.742,43.149],[-11.863,41.929],[-12.407,41.386],[-12.082,40.391],[-12.585,39.17],[-12.979,36.08],[-8.823,36.96],[-7.461,35.958],[-7.944,33.719],[-6.8,33.357],[-6.694,32.536],[-0.104,30.491],[1.639,29.031],[3.162,27.518],[3.181,26.088],[2.761,25.344],[3.194,24.307],[2.81,23.38],[1.95,21.821],[1.295,21.383],[0.821,21.1],[6.431,22.36],[6.951,21.813],[7.481,21.956],[9.701,20.592],[11.048,18.117],[11.831,17.039],[12.438,15.621],[13.839,13.842],[13.853,13.593],[16.511,10.624],[17.63,7.718],[17.586,6.998],[18.342,6.404],[19.05,5.556],[18.783,2.53],[20.91,0.144],[21.639,-0.755],[22.218,-1.932],[23.036,-2.205],[26.897,-3.451],[31.666,-4.109],[32.136,-4.926],[32.676,-5.386],[33.235,-5.861],[33.412,-6.102],[34.325,-8.8],[34.978,-9.742],[35.812,-10.222],[36.111,-11.863],[36.27,-13.163],[37.034,-13.953],[37.239,-19.428],[37.781,-21.484],[37.101,-22.911],[38.371,-24.371],[38.875,-24.86],[40.395,-26.727],[41.555,-28.592],[43.018,-29.737],[44.724,-32.988],[44.967,-37.469]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[234.432,401.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.375,0.166],[0.1,0.046],[1.099,-0.179],[0.485,-0.515],[0.046,-0.276],[-0.603,-0.073],[-0.258,-0.084],[-0.049,-0.132],[-0.295,-0.095],[-0.759,0.382]],"o":[[-0.046,-0.07],[-0.968,-0.437],[-0.598,0.097],[-0.222,0.086],[-0.145,0.873],[0.239,0.029],[-0.018,0.028],[0.11,0.29],[0.925,0.296],[0.401,-0.202]],"v":[[2.892,-0.46],[2.678,-0.638],[-0.486,-1.662],[-2.772,-1.008],[-3.208,-0.489],[-1.579,0.601],[-0.693,0.676],[-0.624,0.937],[0.046,1.545],[2.952,0.507]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[197.697,316.238],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.429,0.343],[0.801,0.422],[0.709,0.256],[0.633,-0.055],[0.516,0.056],[0.35,-0.113],[0.259,-0.935],[-0.346,-0.03],[-0.294,-0.146],[0.933,-0.145],[-0.341,-0.236],[-1.119,0.09],[-0.579,-0.386],[-0.585,-0.024],[0.076,0.33],[-0.259,-0.057],[-0.26,0.042],[-0.918,-0.302]],"o":[[-0.715,-0.573],[-0.611,-0.323],[-0.637,-0.229],[-0.551,0.047],[-0.371,-0.041],[-0.915,-0.036],[-0.101,0.364],[0.362,0.031],[-0.934,0.145],[-0.507,0.079],[0.984,0.68],[0.678,-0.055],[0.474,0.316],[0.368,0.014],[-0.198,-0.859],[0.255,0.057],[0.801,-0.129],[0.495,0.163]],"v":[[5.714,0.259],[3.445,-1.098],[1.959,-2.364],[0.16,-2.353],[-1.283,-2.64],[-2.352,-2.517],[-4.337,-1.046],[-3.812,-0.359],[-2.835,-0.089],[-5.636,0.345],[-5.766,1.339],[-2.549,1.695],[-0.743,2.07],[0.67,2.667],[1.195,1.978],[2.371,1.673],[3.139,1.727],[5.184,1.167]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[208.742,314.552],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.538,-0.37],[-0.327,0.023],[0.038,-0.286],[-0.265,0.018],[-1.309,0.092],[-1.026,0.406],[0.355,0.283],[0.96,0.184],[-0.003,0.059],[0.33,-0.056],[0.552,0.134],[0.305,0.434],[0.585,-0.051],[1.621,0.501],[0.789,-0.029],[0.878,-0.166],[0.761,-0.337],[0.183,-0.217],[0.074,-0.239],[0.177,-0.166],[-0.463,0.005],[-1.558,0.225],[-0.622,-0.091],[-0.431,-0.125],[-0.388,-0.29],[-0.413,-0.117],[-0.376,-0.266]],"o":[[0.335,0.23],[-0.086,0.249],[-0.038,0.279],[1.309,-0.092],[1.089,-0.076],[0.334,-0.132],[-0.796,-0.633],[0.006,-0.054],[0.016,-0.383],[-0.547,0.091],[-0.553,-0.135],[-0.345,-0.492],[-1.807,0.158],[-0.766,-0.235],[-0.892,0.033],[-0.815,0.153],[-0.256,0.114],[-0.047,0.055],[-0.19,0.139],[-0.345,0.323],[1.639,-0.019],[-0.031,0.437],[0.436,0.064],[0.476,0.137],[0.339,0.254],[0.472,0.133],[0.511,0.362]],"v":[[1.659,2.356],[2.635,2.551],[2.454,3.345],[2.999,3.889],[6.926,3.615],[10.124,3.069],[10.363,2.161],[7.758,0.947],[7.773,0.78],[7.083,0.257],[5.374,0.335],[4.29,-0.561],[2.98,-1.1],[-1.305,-3.673],[-3.699,-3.805],[-6.361,-3.546],[-8.816,-2.844],[-9.49,-2.374],[-9.822,-1.639],[-10.374,-1.184],[-9.99,-0.257],[-5.423,-1.642],[-4.624,-0.728],[-3.331,-0.754],[-2.072,0.095],[-0.965,0.704],[0.342,0.921]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[193.452,309.083],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.117,1.35],[0.514,-0.271],[0.067,0.252],[0.291,0.237],[0.726,-0.23],[-0.012,0.1],[0.121,0.293],[0.611,-0.078],[0.105,-0.028],[-0.01,0.023],[0.002,0.346],[0.577,0.357],[0.195,-0.121],[0.028,-0.551],[0.934,-1.265],[0.777,-0.278],[0.337,-0.546],[-0.113,-0.567],[0.079,-0.159],[0.106,-0.078],[0.142,-0.237],[-1.025,0.029],[-0.472,0.353],[-0.095,0.043],[-0.009,0.004],[-0.033,-0.027],[-0.316,-0.139],[-0.552,0.086],[-0.31,0.11],[-0.181,-0.099],[0.088,-0.254],[-1.078,0.389],[-0.379,0.398],[-0.142,0],[-0.049,-0.143],[-0.804,0.938]],"o":[[-0.048,-0.552],[-0.533,0.281],[-0.093,-0.354],[-0.558,-0.453],[0.044,-0.127],[0.037,-0.31],[-0.241,-0.588],[-0.023,0.003],[0.072,-0.111],[0.133,-0.316],[-0.004,-0.677],[-0.258,-0.16],[-0.41,-0.102],[-0.08,1.564],[-0.489,0.663],[-0.573,0.205],[-0.348,0.563],[0.036,0.181],[-0.057,0.114],[-0.218,0.162],[-0.6,1.007],[0.595,-0.017],[0.086,-0.064],[0.011,-0.005],[0.007,0.02],[0.266,0.216],[0.51,0.225],[0.328,-0.05],[0.171,-0.061],[0.224,0.124],[-0.384,1.109],[0.518,-0.187],[0.081,-0.085],[0.112,0],[0.357,1.049],[0.965,-1.128]],"v":[[7.057,1.339],[5.964,0.714],[5.219,-0.826],[4.689,-1.775],[2.6,-1.818],[2.701,-2.167],[2.609,-3.087],[1.214,-3.848],[0.975,-3.788],[1.106,-4.092],[1.302,-5.194],[0.443,-6.79],[-0.258,-6.805],[-1.217,-6.133],[-2.745,-1.796],[-4.482,-0.436],[-5.926,0.488],[-5.96,1.964],[-5.911,2.206],[-6.283,2.447],[-6.829,3.012],[-5.572,4.812],[-3.921,4.217],[-3.648,3.99],[-3.622,3.977],[-3.566,4.048],[-2.728,4.592],[-1.096,4.809],[-0.17,4.535],[0.373,4.439],[0.322,4.883],[1.913,6.417],[3.275,5.51],[3.898,4.82],[4.125,5.423],[6.464,6.012]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[238.779,243.157],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.119,1.045],[0.026,0.582],[-0.185,0.227],[-0.123,0.16],[0.726,0.383],[1.071,0.116],[1.372,-0.171],[0.116,-0.151],[0.285,-0.707],[-0.162,-0.416],[-0.205,-0.24],[0.224,0],[0.099,-0.225],[-0.707,-0.538],[0.351,-0.452],[0.039,-0.476],[-1.559,-1.046],[-0.064,0.495],[-0.107,0.649],[-0.035,0.119],[-0.147,-0.088],[-0.544,0.648],[-0.969,0.679]],"o":[[0.068,-0.6],[-0.014,-0.309],[0.117,-0.142],[0.542,-0.704],[-0.967,-0.511],[-1.372,-0.148],[-0.229,0.029],[-0.66,0.181],[-0.165,0.411],[0.116,0.298],[-0.186,0.056],[-0.233,-0.001],[-0.369,0.841],[0.573,0.436],[-0.291,0.376],[-0.166,2.019],[0.509,0.342],[0.085,-0.653],[0.005,-0.127],[0.123,0.118],[0.789,0.473],[0.718,-0.856],[0.794,-0.558]],"v":[[4.951,-1.473],[4.772,-3.169],[4.895,-3.633],[5.362,-4.007],[4.776,-6.061],[1.303,-6.662],[-2.808,-6.677],[-3.325,-6.385],[-4.851,-5.146],[-4.863,-3.897],[-4.302,-3.133],[-4.908,-3.05],[-5.535,-2.692],[-4.862,-0.629],[-4.851,0.313],[-5.347,1.599],[-2.299,6.506],[-1.207,5.881],[-0.953,3.917],[-0.888,3.549],[-0.497,3.881],[1.772,3.314],[3.333,0.631]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[167.509,140.303],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.367,-1.176],[0.087,-0.027],[0.404,-0.998],[-0.265,-0.381],[0.038,0.014],[-0.359,-0.51],[-0.943,-0.12],[0.045,-0.593],[-0.137,-0.299],[0.25,0.535],[0.227,0.329],[0.757,-0.241],[-0.114,-0.701],[-0.292,-0.807],[-0.46,-0.673],[-0.811,-0.183],[-0.787,-1.721],[-0.304,0.196],[-0.257,1.352],[0.021,0.494],[0.033,0.178],[0.17,0.843],[-0.245,0.489],[-0.034,0.519],[0.811,0.391],[-0.484,0.5],[-0.29,0.482],[0.082,0.483],[0.109,0.205],[-0.208,0.284],[-0.091,0.532],[0.276,0.353]],"o":[[-0.077,-0.002],[-0.881,0.272],[-0.193,0.477],[-0.037,-0.01],[-0.578,-0.203],[0.59,0.838],[-0.278,0.486],[-0.026,0.346],[-0.366,0.188],[-0.168,-0.36],[-0.414,-0.6],[-0.716,0.229],[0.144,0.878],[0.27,0.746],[0.495,0.723],[2.016,0.454],[0.158,0.346],[1.088,-0.702],[0.098,-0.508],[-0.009,-0.21],[0.611,-0.173],[-0.101,-0.5],[0.216,-0.429],[0.069,-1.066],[-0.751,-0.363],[0.384,-0.397],[0.248,-0.413],[-0.038,-0.229],[-0.192,-0.362],[0.281,-0.38],[0.076,-0.448],[-1.344,-1.725]],"v":[[0.265,-7.325],[0.02,-7.292],[-2.956,-5.855],[-2.76,-4.549],[-2.872,-4.584],[-3.692,-3.52],[-1.318,-2.046],[-1.971,-0.501],[-1.809,0.488],[-2.787,0.139],[-3.291,-0.928],[-5.247,-1.803],[-6.171,-0.128],[-4.923,2.037],[-4.15,4.264],[-2.079,5.383],[1.641,9.501],[2.634,9.761],[5.094,6.893],[5.044,5.403],[4.984,4.825],[5.903,3.475],[5.536,2.2],[6.116,1.019],[4.401,-0.925],[4.374,-2.256],[5.469,-3.463],[5.775,-4.825],[5.546,-5.468],[5.5,-5.968],[6.209,-6.99],[5.873,-8.231]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.118,142.802],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.168,0.441],[0.518,0.379],[-0.131,0.816],[0.239,0.535],[0.351,0.415],[0.602,0.361],[0.205,-0.213],[0.066,-0.075],[0,0],[0.304,-0.715],[-1.02,-0.192],[-0.992,-0.285]],"o":[[0.611,-0.231],[-0.844,-0.618],[0.094,-0.585],[-0.218,-0.488],[-0.46,-0.545],[-0.33,-0.198],[-0.072,0.038],[0,0],[-0.512,0.577],[-0.484,1.139],[0.269,0.894],[1.185,0.341]],"v":[[3.641,3.894],[3.814,2.571],[3.588,0.317],[3.31,-1.316],[2.633,-2.903],[0.712,-4.137],[-0.138,-4.025],[-0.347,-3.861],[-2.197,-1.776],[-3.848,0.174],[-1.888,1.992],[-0.143,3.854]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[162.623,126.948],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.217,0.742],[0.332,0.661],[-0.21,0.932],[0.423,0.74],[0.751,0.196],[0.271,-1.575],[-0.455,-0.418],[-0.036,-0.362],[0.435,0.409],[0.181,0.396],[0.335,0.113],[0.304,0.096],[0.018,0.002],[0.043,0.063],[0.113,0.164],[0.601,0.451],[0.518,0.104],[0.238,-0.298],[-0.173,-0.26],[-1.008,-0.538],[0.02,-0.148],[-0.483,-0.377],[0.046,-0.781],[-0.106,-0.674],[-0.223,-0.057],[-0.808,0.359],[0.343,-1.613],[0.159,-0.462],[-0.104,-0.425],[-0.649,-0.231],[-0.78,0.315],[-0.247,0.716],[-0.295,0.792]],"o":[[0.21,-0.718],[-0.393,-0.779],[0.175,-0.783],[-0.388,-0.679],[-1.147,-0.298],[-0.114,0.662],[0.245,0.224],[0.062,0.638],[-0.339,-0.321],[-0.145,-0.32],[-0.349,-0.119],[-0.032,-0.01],[-0.02,-0.036],[-0.107,-0.157],[-0.476,-0.693],[-0.372,-0.279],[-0.372,-0.074],[-0.243,0.305],[-0.492,1.059],[-0.231,0.277],[-0.087,0.631],[0.522,0.406],[-0.039,0.645],[0.037,0.238],[0.879,0.224],[0.697,-0.309],[-0.1,0.468],[-0.139,0.406],[0.168,0.682],[0.816,0.291],[0.643,-0.26],[0.276,-0.799],[0.266,-0.713]],"v":[[6.96,1.113],[6.72,-0.967],[5.854,-3.279],[5.75,-5.472],[3.906,-6.83],[-0.488,-5.482],[0.264,-3.93],[0.888,-3.162],[-0.211,-2.67],[-0.622,-3.861],[-1.365,-4.545],[-2.427,-4.542],[-2.498,-4.558],[-2.591,-4.705],[-2.835,-5.242],[-4.718,-6.268],[-5.671,-7.1],[-6.65,-6.761],[-6.678,-5.837],[-5.718,-3.023],[-6.229,-2.199],[-5.488,-0.66],[-4.158,0.554],[-4.355,2.355],[-3.848,2.86],[-1.404,2.506],[1.365,2.825],[0.696,4.17],[0.587,5.449],[1.967,6.882],[4.407,6.682],[6.085,5.411],[5.943,3.154]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[151.576,121.267],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.546,-0.663],[-0.278,-0.457],[-0.326,-0.089],[0.026,-0.028],[-0.302,-0.275],[-0.945,0.467],[-0.466,0.39],[-0.69,0.444],[0.447,0.319],[0.134,0.5],[0.234,0.364],[0.75,0.277],[0.133,0.14],[0.029,0.254],[0.274,0.26],[0.824,0.097],[-0.12,-0.434],[-0.178,-0.552],[0.023,-0.237],[0.201,-0.254]],"o":[[0.353,0.428],[0.18,0.298],[-0.041,0.036],[-0.253,0.281],[0.687,0.627],[0.544,-0.27],[0.631,-0.526],[0.485,-0.312],[-0.399,-0.284],[-0.105,-0.391],[-0.448,-0.696],[-0.19,-0.07],[-0.21,-0.219],[-0.039,-0.352],[-0.642,-0.607],[-0.561,-0.066],[-0.07,0.561],[0.068,0.213],[-0.035,0.372],[-0.797,1.006]],"v":[[-3.008,0.844],[-2.66,2.22],[-1.845,2.776],[-1.947,2.874],[-1.947,3.898],[0.782,4.775],[2.244,3.54],[4.231,2.099],[4.231,0.848],[3.18,-0.287],[2.921,-1.391],[0.859,-2.81],[0.167,-3.084],[0.049,-3.71],[-0.286,-4.592],[-3.229,-5.176],[-3.886,-4.302],[-3.715,-2.748],[-3.499,-1.95],[-3.92,-1.348]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[160.305,100.018],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.469,-0.111],[-0.349,-0.358],[-0.748,0.454],[-0.169,-0.222],[-0.164,-0.132],[-0.326,-0.143],[0.269,-0.444],[0.49,-0.072],[0.424,0.302],[0.062,-0.482],[-2.454,1.695],[0.138,-0.262],[-0.633,0.22],[-0.651,-0.245],[-0.492,-0.434],[-0.86,0.628],[0.355,0.902],[-0.546,1.351],[0.892,0.666],[0.349,0.332],[0.198,0.479],[1.322,-0.459],[0.268,0.633],[0.443,0.171],[0.892,-0.387],[-0.291,-0.63],[0.028,-0.106],[-0.249,-0.388]],"o":[[-0.363,0.278],[0.749,0.768],[0.491,-0.298],[0.128,0.168],[0.127,0.102],[-0.443,0.251],[-0.223,0.369],[-0.568,0.083],[-0.502,-0.358],[-0.417,3.247],[0.013,0.367],[-0.273,0.52],[0.62,-0.215],[0.617,0.233],[0.634,0.559],[0.898,-0.656],[-0.469,-1.19],[0.366,-0.906],[-0.386,-0.288],[-0.392,-0.372],[-0.583,-1.414],[-0.542,-0.463],[-0.192,-0.454],[-0.93,-0.36],[-0.498,-0.108],[-0.124,-0.267],[-0.118,0.449],[0.301,0.467]],"v":[[-5.369,-3.6],[-5.501,-2.474],[-3.189,-2.663],[-2.933,-2.561],[-2.535,-2.117],[-1.68,-1.734],[-2.774,-0.685],[-3.481,0.168],[-5.095,-0.581],[-6.187,0.044],[-0.474,3.483],[-0.865,4.564],[-0.045,5.628],[2.002,5.34],[3.575,6.76],[6.007,7.543],[6.413,4.632],[5.286,1.052],[4.941,-1.449],[3.67,-2.142],[2.967,-3.648],[-0.42,-5.366],[-1.306,-6.966],[-2.407,-7.811],[-5.217,-7.729],[-6.053,-6.638],[-6.787,-5.716],[-6.56,-4.418]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[148.807,97.436],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.824,0.253],[-0.331,-0.377],[-0.38,-0.069],[-0.971,0.018],[-0.282,0.991],[0.292,0.61],[0.634,0.556],[0.832,-0.399],[0.251,-0.229],[0.327,-0.065],[0.301,-0.276],[-0.077,-0.529],[0.311,-0.272],[-0.265,-0.261]],"o":[[0.479,-0.147],[0.249,0.284],[1.006,0.184],[0.787,-0.016],[0.189,-0.664],[-0.398,-0.831],[-0.657,-0.576],[-0.309,0.148],[-0.327,0.066],[-0.384,0.078],[-0.421,0.386],[-0.311,0.272],[-0.293,0.257],[0.598,0.587]],"v":[[-1.954,2.356],[-1.329,2.413],[-0.415,2.972],[2.25,2.208],[4.318,1.428],[4.04,-0.852],[2.234,-2.378],[0.002,-2.756],[-0.824,-2.165],[-1.804,-1.968],[-2.876,-1.555],[-3.282,-0.093],[-4.215,0.723],[-4.215,1.748]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[131.587,98.314],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.333,-0.282],[-0.331,-0.276],[-0.019,-0.185],[-0.365,-0.143],[-0.715,0.303],[-0.47,0.833],[0.733,0.263],[0.016,0.055],[-0.16,0.069],[-0.246,0.353],[0.657,0.507],[1.366,-1.003],[0.049,-0.08],[0.011,-0.276],[0.171,-0.335],[-0.091,-0.398]],"o":[[0.3,0.254],[-0.064,0.142],[0.04,0.396],[0.777,0.307],[0.845,-0.359],[0.446,-0.793],[-0.06,-0.022],[-0.069,-0.246],[0.386,-0.166],[0.495,-0.711],[-1.616,-1.247],[-0.088,0.065],[-0.184,0.113],[-0.015,0.388],[-0.183,0.361],[0.099,0.433]],"v":[[-3.3,2.19],[-2.082,2.871],[-2.186,3.359],[-1.522,4.165],[1.068,3.738],[3.565,1.919],[2.673,0.178],[2.076,0.014],[2.604,-0.346],[3.605,-1.06],[3.177,-3.225],[-2.676,-1.951],[-2.88,-1.732],[-3.212,-1.15],[-3.839,-0.069],[-4.009,1.108]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[131.169,105.079],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.017,-0.376],[-1.176,0.18],[-0.281,0.158],[-0.116,0.052],[-0.023,-0.036],[-0.639,0.009],[0.081,1.239],[-0.221,0.64],[-0.186,0.504],[-0.339,0.263],[-1.461,0.557],[-0.115,0.064],[-0.76,-0.488],[0.048,-0.014],[0.266,-0.332],[-0.068,-0.401],[0.058,-0.325],[0.128,-0.157],[0.143,-0.214],[0.196,-0.516],[-1.011,-0.572],[-1.023,-0.091],[-0.92,0.809],[-0.778,-0.262],[-0.455,-0.159],[-1.195,-2.069],[-1.194,0.167],[-0.629,0.437],[-0.774,0.173],[-1.421,0.731],[-0.507,0.324],[-0.766,0.213],[0.032,1.106],[0.093,1.843],[0.41,0.004],[0.821,-0.451],[-0.364,2.115],[0.573,-0.11],[-1.179,-1.946],[0.01,-0.078],[0.07,-0.111],[0.041,-0.232],[-0.266,-0.978],[0.123,-0.092],[0.066,0.059],[0.298,0.526],[1.061,0.098],[0.495,0.151],[0.407,0.219],[0.475,0.053],[0.246,0.116],[0.453,0.074],[0.958,-0.397],[-0.419,0.789],[0.249,0.213],[0.338,0.243],[-0.648,0.905],[0.332,0.156],[0.715,0.503],[0.079,-0.465],[0.027,-0.073],[-0.023,-0.244],[0.479,0.074],[0.464,-0.323],[0.612,-0.919],[2.404,1.129],[0.261,-0.229],[-0.12,-0.552],[0.086,-0.348]],"o":[[0.063,1.372],[0.317,-0.048],[0.112,-0.063],[0.011,0.023],[0.329,0.505],[1.524,-0.022],[0.609,-0.202],[0.174,-0.507],[0.152,-0.412],[0.281,1.247],[0.12,-0.045],[-0.458,0.779],[-0.051,0.009],[-0.406,0.113],[-0.253,0.315],[0.064,0.376],[-0.031,0.172],[-0.164,0.199],[-0.307,0.459],[-0.345,0.91],[0.924,0.522],[1.154,0.102],[0.544,-0.479],[0.457,0.154],[-1.857,0.605],[0.616,1.067],[0.761,-0.106],[0.627,-0.436],[1.481,-0.331],[0.537,-0.276],[0.703,-0.45],[1.234,-0.345],[-0.055,-1.845],[-0.02,-0.394],[-0.96,-0.01],[-0.968,-1.889],[0.097,-0.563],[-1.413,0.272],[0.114,0.188],[-0.016,0.125],[-0.126,0.2],[-0.196,1.107],[0.027,0.101],[-0.171,0.129],[-0.449,-0.405],[-0.43,-0.758],[-0.493,-0.046],[-0.447,-0.138],[-0.416,-0.224],[-0.248,-0.028],[0.089,-0.345],[-0.877,-0.143],[0.745,-0.789],[0.141,-0.267],[-0.318,-0.272],[0.565,-0.89],[0.214,-0.299],[-0.793,-0.371],[-0.489,-0.345],[-0.04,0.056],[-0.098,0.274],[-0.413,0.141],[-0.519,-0.08],[-0.921,0.642],[-0.952,1.428],[-0.313,-0.147],[-0.443,0.387],[0.074,0.34],[-0.082,0.328]],"v":[[-17.128,-0.122],[-14.157,1.774],[-13.257,1.473],[-12.92,1.239],[-12.872,1.326],[-11.469,2.202],[-9.679,-0.439],[-8.338,-1.729],[-8.041,-3.294],[-7.281,-4.32],[-5.083,-2.075],[-4.731,-2.243],[-3.782,-0.346],[-3.931,-0.312],[-5.01,0.348],[-5.303,1.45],[-4.842,2.549],[-5.39,3.159],[-5.852,3.779],[-6.602,5.255],[-6.203,7.868],[-2.828,8.351],[0.228,7.779],[1.809,7.304],[3.142,7.857],[0.746,11.561],[3.729,12.933],[5.834,12.059],[7.736,10.887],[12.095,10.294],[13.603,9.303],[15.699,8.679],[17.124,5.973],[16.844,0.439],[16.118,-0.285],[13.429,0.378],[12.471,-5.755],[11.579,-6.645],[7.959,-3.062],[8.584,-2.268],[8.195,-1.805],[7.946,-1.148],[8.881,1.657],[8.899,2.307],[8.152,1.896],[7.026,0.489],[5.44,-1.462],[4.038,-1.386],[2.787,-2.065],[1.46,-2.54],[-0.087,-2.505],[-0.585,-3.299],[-3.689,-3.085],[-1.918,-5.704],[-2.032,-6.583],[-3.016,-7.354],[-2.08,-10.458],[-2.34,-11.449],[-4.592,-12.755],[-5.633,-12.244],[-5.736,-12.053],[-5.843,-11.286],[-7.149,-11.199],[-8.549,-11.057],[-10.84,-8.169],[-15.778,-3.566],[-16.658,-3.452],[-17.036,-1.99],[-16.871,-0.99]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[125.709,119.391],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.595,0.007],[0,0],[-0.81,0.446],[-0.244,0.299],[-0.125,-0.215],[-0.604,-0.043],[-1.39,0.7],[0.316,0.312],[-0.087,0.023],[-0.278,0.208],[0.128,0.315],[0.595,-0.039],[0.213,0],[-0.177,0.235],[0.922,0.839],[0.657,0.037],[0.766,0.566],[0.674,-0.112],[0.785,-0.201],[0.838,-0.423],[0.76,-0.264],[1.46,-1.341],[0.145,-0.243],[0.361,0.452],[0.425,0.907],[0.599,0.625],[0.364,0.119],[0.142,0.569],[0.796,0.353],[0.772,0.008],[0.037,0.646],[0.599,0.438],[0.16,-0.325],[0.084,0.077],[0.533,-0.014],[-0.213,-0.497],[0.2,-0.072],[0.042,-0.665],[-1.041,-0.196],[-0.22,-0.144],[-0.34,-0.103],[-0.312,-0.311],[-0.474,-0.11],[-0.867,0.345],[-0.473,-0.482],[-0.062,-1.092],[0.059,-0.984],[-0.223,-1.102],[-0.878,-0.319],[-0.335,0.112],[-0.182,0.072],[-0.388,-0.271],[-0.838,0.01],[-0.259,0.078],[0.004,-0.01]],"o":[[0,0],[0.891,-0.011],[0.349,-0.192],[0.024,0.242],[0.315,0.543],[1.596,0.113],[0.42,-0.212],[0.055,0.055],[0.333,-0.091],[0.235,-0.176],[-0.22,-0.542],[-0.199,0.014],[0.317,-0.013],[0.765,-1.018],[-0.506,-0.462],[-1.02,-0.058],[-0.54,-0.399],[-0.819,0.135],[-0.849,0.218],[-0.748,0.377],[-1.595,0.554],[-0.212,0.195],[-0.249,0.419],[-0.628,-0.785],[-0.361,-0.771],[-0.269,-0.281],[-0.519,-0.17],[-0.194,-0.777],[-0.752,-0.333],[-0.917,-0.009],[-0.043,-0.731],[-0.301,-0.22],[-0.072,0.146],[-0.389,-0.359],[-0.599,0.015],[0.02,0.049],[-0.619,0.222],[-0.08,1.248],[0.013,0.206],[0.312,0.204],[0.012,0.374],[0.348,0.347],[0.942,0.22],[0.266,0.601],[0.695,0.712],[0.054,0.941],[-0.068,1.128],[0.168,0.836],[0.326,0.119],[0.197,-0.067],[0.322,-0.128],[0.651,0.454],[0.278,-0.004],[-0.003,0.009],[-0.217,0.48]],"v":[[-1.344,10.418],[5.826,10.337],[8.54,9.974],[9.382,9.186],[9.586,9.871],[11.093,10.691],[15.866,9.29],[16.013,8.152],[16.962,7.918],[17.863,7.509],[18.196,6.69],[17.013,5.931],[16.301,6.087],[17.201,5.382],[16.797,1.996],[15.042,1.406],[12.89,0.178],[11.059,-0.31],[8.839,0.628],[6.311,0.75],[4.643,2.436],[-0.229,1.833],[-0.718,2.529],[-1.395,2.637],[-2.788,-0.259],[-4.042,-2.647],[-5.009,-3.207],[-5.888,-4.051],[-7.075,-5.911],[-9.322,-5.938],[-9.952,-7.706],[-10.818,-9.424],[-11.811,-9.164],[-12.947,-10.258],[-14.308,-10.79],[-14.934,-9.702],[-17.123,-9.315],[-18.245,-7.893],[-16.337,-5.88],[-16.005,-5.327],[-15.035,-4.87],[-14.648,-3.85],[-13.363,-3.171],[-10.655,-3.551],[-9.502,-1.947],[-7.594,0.669],[-8.629,3.275],[-8.073,6.773],[-6.721,8.815],[-5.68,8.855],[-5.171,8.556],[-4.784,8.63],[-2.768,9.427],[-1.96,9.302],[-1.971,9.329]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[176.241,121.454],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.813,-0.151],[0.021,-0.608],[0.488,-0.048],[0.169,-0.75],[-0.53,-0.898],[-0.038,-0.253],[0.177,-0.334],[-0.214,-0.362],[-0.891,0.088],[-0.408,0.127],[-0.281,-0.101],[-0.128,-0.101],[-0.198,-0.062],[-0.512,0.201],[-0.24,-0.219],[0.227,-0.079],[0.353,-1.012],[-0.064,-0.365],[0.693,-0.258],[-0.231,-0.907],[-0.588,-0.438],[-0.92,-0.607],[-0.912,1.629],[-0.662,1.067],[-1.138,0.542],[0.048,0.905],[-1.024,1.164],[0.092,0.248],[0.278,1.468],[1.071,0.668],[-0.02,0.715],[0.277,0.518],[0.818,0.509],[0.592,2.264],[2.375,-0.971],[-0.226,-0.359],[-0.235,-0.181],[-0.267,-0.078],[-0.16,-0.081],[0.066,-0.11],[0.177,-0.295],[0.616,-0.619],[-0.518,-0.603],[0,0],[0.008,-0.01],[-0.031,-0.432],[-0.246,-0.343],[-0.232,-0.377],[0.339,0.347],[0.233,-0.089],[-0.24,-0.918],[0.032,-0.427],[0.365,-0.078],[0.283,-0.17],[-0.201,-0.341]],"o":[[0.426,0.079],[-0.029,0.876],[-0.795,0.078],[-0.254,1.124],[0.127,0.217],[0.065,0.437],[-0.192,0.36],[0.504,0.854],[0.426,-0.042],[0.289,-0.091],[0.141,0.051],[0.162,0.127],[0.548,0.17],[0.229,-0.09],[-0.127,-0.116],[-0.951,0.332],[-0.122,0.349],[0.099,0.577],[-0.749,0.28],[0.2,0.784],[0.859,0.641],[1.814,1.195],[0.611,-1.094],[0.721,-1.161],[0.774,-0.369],[-0.063,-1.188],[0.162,-0.185],[-0.514,-1.402],[-0.214,-1.125],[-0.549,-0.342],[0.017,-0.567],[-0.482,-0.901],[-2.155,-1.34],[-0.511,-1.955],[-0.52,0.213],[-0.019,0.241],[0.221,0.17],[0.112,0.033],[-0.167,-0.039],[-0.177,0.295],[-0.771,-0.238],[-0.536,0.538],[0,0],[-0.089,0.081],[-0.294,0.322],[0.031,0.427],[0.187,0.259],[-0.419,-0.004],[-0.167,-0.17],[-0.935,0.356],[0.109,0.417],[-0.025,0.316],[-0.314,0.067],[-0.336,0.2],[0.445,0.755]],"v":[[-7.315,-2],[-6.124,-1.247],[-7.68,-0.817],[-9.182,0.645],[-8.152,3.501],[-7.854,4.193],[-8.163,5.009],[-8.184,6.107],[-5.529,7.073],[-4.277,6.808],[-2.94,6.348],[-2.477,6.833],[-1.936,7.131],[-0.313,6.937],[0.771,6.696],[-0.917,7.218],[-3.208,9.107],[-3.298,10.182],[-3.473,11.431],[-4.715,13.187],[-3.128,14.724],[-1.132,17.153],[3.717,15.306],[5.262,11.892],[8.128,10.048],[9.45,8.118],[8.795,4.784],[8.98,4.08],[7.777,-0.223],[6.49,-3.17],[5.71,-4.382],[5.476,-6.016],[3.199,-7.77],[-0.061,-13.946],[-4.596,-17.377],[-4.952,-16.2],[-4.652,-15.524],[-3.917,-15.173],[-3.145,-15.014],[-3.751,-14.201],[-4.281,-13.317],[-6.529,-13.001],[-6.714,-10.934],[-6.615,-10.837],[-6.787,-10.674],[-7.182,-9.515],[-6.703,-8.34],[-5.773,-7.309],[-6.912,-7.824],[-7.618,-8.01],[-8.536,-5.866],[-8.02,-4.499],[-8.244,-4.322],[-9.036,-4.08],[-9.296,-3.09]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[169.251,83.249],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.335,-0.25],[-0.395,-1.759],[-1.514,-1.171],[-1.786,0.265],[-0.44,0.179],[-0.401,0.05],[-0.421,-0.354],[-0.49,-0.021],[-0.776,0.383],[-1.027,0.589],[-1.518,1.744],[-0.32,0.334],[0.711,-0.84],[0.346,-1.002],[-0.047,-0.502],[0.596,-0.265],[0.991,-0.716],[0.833,-0.909],[0.296,-1.08],[-0.208,-0.497],[0.981,0.611],[0.054,-2.586],[-0.386,0.034],[-0.008,-0.436],[-0.958,-0.367],[0.79,-2.167],[-0.165,-0.184],[-0.885,-0.061],[1.012,-1.099],[1.17,0.186],[1.094,-0.533],[0.032,-2.472],[-1.5,0.15],[-0.045,-0.317],[-0.362,0.213],[-0.698,0.412],[0.042,-0.081],[-0.363,-0.186],[0.047,-0.67],[0.605,0.331],[1.004,0.233],[-0.938,-1.618],[-0.227,-0.313],[0.553,-0.379],[1.141,-0.7],[-0.144,-1.046],[-0.157,-0.55],[0.166,-0.725],[-0.299,-0.127],[-1.658,1.934],[-1.005,0.014],[-0.402,0.732],[-1.158,0.24],[-0.288,-0.272],[0.083,-0.3],[-0.47,-0.003],[-0.955,1.763],[0.64,1],[0.668,0.255],[-0.108,0.585],[-0.463,0.249],[0.454,1.651],[-0.815,0.723],[-0.06,1.414],[-0.771,0.312],[-0.119,0.674],[1.145,0.243],[-0.047,0.089],[0.223,0.249],[0.474,0.737],[-0.348,0.366],[-0.354,0.01],[-0.607,0.179],[0.21,1.844],[-0.487,0.457],[-1.635,0.611],[0.413,0.412],[0.127,0.331],[-0.444,-0.032],[-0.457,0.456],[-0.1,0.535],[-0.551,0.72],[-2.663,3.164],[0.448,0.228],[0.559,-0.027],[-0.062,0.045],[-0.711,0.547],[-1.2,1.27],[2.135,2.425],[0.222,-0.089],[0.227,-0.09],[2.178,1.784],[0.23,-0.451],[1.642,-0.634],[0.165,1.394],[0.53,-0.261],[1.061,1.19],[0.763,0.247],[0.855,0.098],[0.617,-1.303],[-0.351,-0.559],[-0.403,-0.625],[0.271,0],[0.347,-0.181],[0.113,-0.094],[0.972,1.619],[0.323,-0.23],[0.738,-0.291],[0.169,-0.613],[-0.414,-0.396],[0.843,-0.6],[0.278,0.292],[1.377,-0.321],[0.734,-1.382],[0.221,-0.845],[1.054,0.778],[0.001,-0.504],[-0.982,-0.449],[1.05,-0.907],[-0.471,-0.172],[-0.13,-0.056],[0.699,0.37],[0.92,1.03],[1.458,-2.374],[0.354,-0.881],[1.322,-0.198],[-0.624,-1.444],[1.237,-1.011]],"o":[[1.568,1.168],[0.406,1.809],[1.426,1.102],[0.471,-0.07],[0.369,-0.151],[0.637,-0.08],[0.377,0.317],[0.884,0.038],[1.062,-0.523],[1.995,-1.143],[0.303,-0.348],[0.43,-0.451],[-0.624,0.739],[-0.176,0.509],[0.068,0.71],[-1.118,0.494],[-1,0.721],[-0.738,0.803],[-0.157,0.575],[-0.612,-0.964],[-1.918,-1.194],[-0.008,0.366],[0.833,-0.074],[0.021,1.081],[2.097,0.804],[-0.09,0.248],[0.617,0.691],[0.565,0.039],[-1.018,1.105],[-1.216,-0.194],[-2.051,0.997],[-0.02,1.533],[0.025,0.315],[0.067,0.472],[0.698,-0.412],[-0.026,0.077],[-0.174,0.332],[0.525,0.269],[-0.058,0.824],[-0.861,-0.472],[-1.656,-0.386],[0.195,0.336],[0.343,0.474],[-1.103,0.756],[-0.801,0.491],[0.079,0.573],[0.206,0.72],[-0.064,0.281],[2.391,1.015],[0.7,0.663],[0.873,-0.013],[1.157,-0.239],[0.358,-0.073],[0.287,0.272],[-0.126,0.455],[2.204,0.013],[0.506,-0.934],[-0.401,-0.626],[-0.377,-0.144],[0.109,-0.594],[1.738,-0.934],[1.089,0.017],[1.206,-1.07],[0.04,-0.943],[0.605,-0.245],[0.246,-1.376],[0.047,-0.088],[0.159,-0.299],[-0.585,-0.653],[-0.199,-0.308],[0.265,-0.278],[0.631,-0.017],[1.821,-0.537],[0.587,-0.131],[1.25,-1.174],[0.498,-0.187],[-0.247,-0.246],[-0.158,-0.409],[0.614,0.045],[0.399,-0.398],[0.158,-0.855],[2.514,-3.282],[0.282,-0.335],[-0.527,-0.269],[0.062,-0.047],[0.724,-0.527],[1.383,-1.064],[1.937,-2.048],[-0.154,-0.175],[-0.227,0.091],[-0.324,-2.764],[-0.337,-0.276],[-0.827,1.623],[0.929,-0.668],[-0.066,-0.557],[-1.476,0.728],[-0.52,-0.584],[-0.825,-0.268],[-1.034,-0.118],[-0.315,0.664],[0.396,0.629],[-0.315,0.007],[-0.391,-0.002],[-0.133,0.07],[-1.353,-1.295],[-0.188,-0.313],[-0.662,0.472],[-0.569,0.225],[-0.158,0.572],[0.392,0.376],[-0.144,-0.338],[-1.004,-1.049],[-1.569,0.367],[-0.411,0.774],[-0.178,0.677],[-0.458,-0.338],[-0.001,1.119],[0.445,0.204],[-0.446,0.385],[0.136,0.049],[-0.774,-0.089],[-1.253,-0.662],[-1.499,-1.678],[-0.505,0.821],[-0.618,1.538],[-1.697,0.254],[-1.485,0.537],[-0.398,0.325]],"v":[[-30.102,-15.762],[-27.976,-10.578],[-25.401,-5.896],[-20.322,-4.559],[-18.963,-4.929],[-17.754,-5.458],[-16.517,-4.416],[-15.162,-3.915],[-12.655,-4.621],[-9.517,-6.295],[-4.058,-10.519],[-3.174,-11.591],[-2.645,-11.52],[-4.64,-9.549],[-4.605,-8.179],[-5.439,-7.132],[-8.611,-5.323],[-11.378,-2.882],[-13.39,0.02],[-13.251,1.623],[-15.541,-0.867],[-20.82,1.349],[-20.094,2.073],[-19.975,4.827],[-18.319,6.897],[-15.84,12.074],[-15.653,12.779],[-13.269,13.685],[-11.533,14.792],[-15.737,14.429],[-19.237,15.044],[-23.929,20.756],[-20.965,23.695],[-20.859,24.64],[-19.793,25.073],[-17.7,23.838],[-17.799,24.074],[-17.538,25.065],[-16.46,26.466],[-17.832,27.065],[-20.225,25.562],[-22.398,28.154],[-21.702,29.082],[-21.827,30.134],[-25.274,32.224],[-26.719,34.38],[-26.126,36.007],[-26.094,38.168],[-25.76,38.986],[-18.925,37.427],[-16.405,38.635],[-14.351,37.465],[-10.879,36.747],[-8.902,36.485],[-8.961,37.886],[-8.261,38.802],[-3.697,35.175],[-3.336,32.122],[-5.105,30.938],[-6.609,29.966],[-4.487,28.785],[-3.13,24.456],[-0.087,23.58],[0.803,19.628],[2.143,18.297],[3.393,16.962],[1.415,14.687],[1.555,14.422],[1.442,13.545],[-0.154,11.47],[-1.028,9.43],[1.001,9.43],[2.887,9.162],[6.019,5.044],[7.658,4.069],[11.73,1.286],[12.05,0.075],[11.453,-0.776],[11.743,-1.225],[13.381,-1.686],[14.03,-3.196],[14.843,-5.448],[22.852,-14.977],[22.705,-16.114],[21.046,-16.475],[21.232,-16.613],[23.409,-18.185],[27.351,-21.656],[28.512,-29.29],[27.805,-29.476],[27.124,-29.204],[23.261,-36.317],[22.121,-36.17],[18.201,-32.944],[19.619,-35.867],[18.527,-36.493],[14.361,-37.41],[12.572,-38.753],[9.953,-39.138],[5.924,-38.698],[6.321,-36.865],[7.524,-34.987],[6.588,-35.068],[5.465,-34.803],[5.093,-34.555],[1.597,-38.926],[0.604,-39.186],[-1.667,-38.606],[-2.966,-37.318],[-2.478,-35.774],[-1.838,-34.182],[-2.439,-35.134],[-6.425,-36.152],[-9.935,-33.158],[-10.841,-30.71],[-12.575,-28.933],[-13.667,-28.308],[-11.929,-25.934],[-9.697,-24.076],[-9.377,-22.866],[-8.979,-22.706],[-11.209,-23.393],[-14.15,-26.174],[-19.963,-26.601],[-20.943,-23.924],[-24.197,-22.818],[-26.167,-19.226],[-30.249,-16.899]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[199.416,80.105],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.635,0.427],[-0.892,0.6],[-0.789,0.539],[0.096,0.8],[0.419,0.567],[0.608,0.645],[0.767,0.237],[0.545,-0.241],[0.385,0.42],[0.372,0.182],[0.564,-0.039],[0.979,-0.157],[1.646,-0.425],[-0.033,-0.312],[-0.366,-0.7],[-0.31,-0.259],[0.362,-0.41],[-0.177,-0.677],[-0.014,-0.639],[0.271,-0.316],[0.19,-0.337],[0.207,-0.732],[1.078,-1.427],[-0.54,0.079],[-0.552,-0.564],[-0.425,-0.513],[-1.092,0.611],[-0.738,-0.123],[-0.222,0.657],[0.119,0.736],[-0.192,0.335],[-0.425,0.082],[-0.348,1.106]],"o":[[0.892,-0.6],[0.794,-0.533],[0.585,-0.399],[-0.087,-0.722],[-0.525,-0.712],[-0.54,-0.573],[-0.635,-0.196],[-0.584,0.258],[-0.278,-0.304],[-0.525,-0.257],[-0.424,-0.794],[-1.678,0.269],[-0.394,0.101],[-0.19,0.755],[0.188,0.359],[0.411,0.345],[-0.451,0.509],[0.165,0.631],[0.01,0.448],[-0.252,0.295],[-0.374,0.666],[-0.474,1.677],[-0.431,0.572],[0.782,-0.114],[0.468,0.478],[0.892,1.078],[0.65,-0.363],[0.693,0.115],[0.249,-0.736],[-0.057,-0.355],[0.254,-0.442],[1.55,-0.301],[0.246,-0.781]],"v":[[4.429,1.257],[7.105,-0.543],[9.486,-2.143],[10.605,-3.758],[9.478,-5.734],[7.783,-7.777],[5.665,-9.655],[3.805,-9.151],[2.781,-9.531],[1.803,-10.268],[0.151,-10.579],[-2.229,-11.526],[-7.223,-10.266],[-7.734,-9.527],[-7.51,-7.281],[-6.756,-6.35],[-6.641,-5.576],[-7.139,-3.786],[-6.253,-1.868],[-6.982,-0.801],[-7.65,0.152],[-8.486,2.285],[-10.27,7.155],[-9.45,8.219],[-7.294,8.947],[-6.21,10.604],[-3.04,10.836],[-1.361,10.443],[0.098,9.561],[-0.032,7.292],[0.031,6.137],[1.163,5.786],[2.627,2.914]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[112.86,142.149],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.392,-0.019],[0.187,-0.009],[0.738,0.385],[0.663,0.531],[0.239,0.727],[-0.306,0.523],[0.062,0.805],[0.635,0.168],[0.111,0.346],[0.29,0.596],[0.045,0.14],[-0.137,0.641],[0.009,0.749],[0.871,1.073],[0.979,-0.824],[-0.047,-0.242],[0.235,-0.461],[0.115,0.032],[0.608,-0.921],[-0.035,-0.636],[-0.071,-0.994],[-0.066,-0.936],[0.504,-0.032],[0.026,0.49],[0.217,0.864],[0.414,0.848],[0.896,0.254],[-0.152,-0.528],[1.836,0.779],[0.677,0.724],[0.667,-0.044],[-0.267,0.26],[0.609,0.032],[0.561,0.326],[0.198,-0.261],[1.035,-0.848],[1.242,-0.82],[-0.038,-0.866],[-0.161,-0.228],[0.225,-0.521],[-1.727,-0.527],[-1.257,-0.298],[0.337,-0.244],[0.061,-0.673],[-0.582,-0.276],[-0.657,-0.41],[-0.829,0.042],[-0.867,0.04],[-1.224,-0.715],[1.046,-0.077],[0.763,0.108],[0.035,0.005],[0.293,0],[0.817,-1.242],[-0.431,-0.429],[-0.281,-0.063],[-0.07,-0.008],[0.016,-0.067],[-0.189,-0.337],[-0.819,0.146],[-0.274,0.049],[-0.531,-0.146],[-0.059,-0.074],[-0.344,-0.213],[0.072,-0.51],[-0.289,-0.213],[0.191,-0.445],[-0.317,-0.181],[-1.098,0.456],[-0.701,0.304],[-0.777,0.208],[-0.867,1.786],[-2.445,-0.4],[-0.521,0.461],[0.288,0.579],[0.636,0.284],[0.066,0.272],[-0.064,0.069],[-1.014,-0.445],[-0.188,0.469],[-0.003,0.726]],"o":[[-0.187,0.009],[-0.046,-0.735],[-0.74,-0.386],[-0.449,-0.668],[-0.039,-0.598],[0.384,-0.658],[-0.055,-0.702],[-0.014,-0.348],[-0.21,-0.663],[-0.042,-0.141],[-0.074,-0.672],[0.156,-0.732],[-0.016,-1.333],[-0.794,-0.979],[-0.204,0.173],[0.104,0.542],[-0.107,-0.043],[-1.011,-0.275],[-0.361,0.549],[0.054,0.995],[0.066,0.936],[0.032,0.444],[-0.859,0.055],[-0.045,-0.891],[-0.231,-0.915],[-0.431,-0.885],[-0.529,-0.15],[0.634,2.214],[0.546,-0.677],[-0.552,-0.589],[0.24,-0.278],[0.47,-0.459],[-0.648,-0.035],[-0.366,-0.213],[-1.241,0.529],[-1.289,0.757],[-0.668,0.44],[0.014,0.323],[-0.351,0.446],[-0.646,1.495],[1.287,0.391],[-0.406,0.39],[-0.531,0.382],[-0.058,0.644],[0.708,0.336],[0.644,0.403],[0.852,-0.044],[1.429,-0.068],[-0.967,0.386],[-0.768,0.058],[-0.035,-0.005],[-0.109,-0.196],[-1.354,-0.002],[-0.327,0.497],[0.206,0.206],[0.069,0.016],[-0.06,0.121],[-0.088,0.368],[0.515,0.919],[0.274,-0.049],[0.56,-0.029],[0.036,0.08],[0.271,0.341],[0.484,0.299],[-0.05,0.356],[0.387,0.284],[-0.183,0.427],[0.969,0.696],[0.707,-0.293],[0.74,-0.321],[1.909,-0.511],[1.748,1.803],[0.633,0.104],[0.493,-0.438],[-0.325,-0.656],[-0.364,-0.163],[0.07,-0.037],[0.723,-0.793],[0.464,0.203],[0.271,-0.676],[0.001,-0.377]],"v":[[17.747,6.223],[17.186,6.25],[15.912,4.432],[13.609,3.474],[12.585,1.389],[12.988,-0.316],[13.809,-2.426],[12.559,-3.889],[12.382,-4.927],[11.396,-6.647],[11.266,-7.068],[11.783,-9.159],[12.01,-11.393],[10.925,-15.465],[7.833,-15.839],[7.646,-15.134],[7.43,-13.652],[7.098,-13.767],[4.191,-12.867],[3.841,-11.06],[4.053,-8.076],[4.253,-5.268],[4.145,-2.833],[3.436,-5.184],[3.044,-7.833],[2.066,-10.486],[-0.059,-11.654],[-0.951,-10.764],[-4.344,-7.669],[-4.409,-10.137],[-6.283,-10.879],[-5.523,-11.686],[-6.036,-12.923],[-7.803,-13.461],[-8.715,-13.272],[-12.115,-11.164],[-15.932,-8.82],[-17.206,-6.908],[-16.932,-6.077],[-17.827,-4.641],[-16.357,-0.604],[-12.253,-0.793],[-13.855,0.092],[-14.934,1.732],[-14.053,3.241],[-11.833,3.613],[-9.986,4.419],[-7.471,3.953],[-3.398,4.948],[-6.428,5.659],[-8.73,5.581],[-8.835,5.566],[-9.439,5.227],[-13.766,6.798],[-13.643,8.38],[-12.895,8.758],[-12.686,8.792],[-12.812,9.086],[-12.702,10.23],[-10.234,10.611],[-9.411,10.464],[-7.758,10.624],[-7.624,10.857],[-6.652,11.443],[-6.316,12.871],[-5.982,13.689],[-5.626,14.96],[-5.266,15.966],[-2.154,16.107],[-0.096,15.105],[2.214,14.387],[7.188,11.193],[14.07,14.091],[15.912,13.82],[16.189,12.111],[14.663,10.892],[13.952,10.283],[14.154,10.129],[17.014,9.448],[18.081,9.016],[18.473,6.948]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[133.94,153.047],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.378,-0.302],[-0.478,-0.651],[-0.376,-0.44],[-1.071,0.19],[-0.154,1.131],[0.274,0.534],[0.007,0.802],[1.283,0.208],[0.706,0.282],[0.677,-0.174],[0.281,-0.893],[0.007,-0.036],[0.032,-0.263],[-0.009,-0.061],[0.016,-0.342]],"o":[[0.585,0.468],[0.339,0.461],[0.78,0.911],[0.961,-0.17],[0.088,-0.651],[-0.375,-0.731],[-0.012,-1.275],[-0.736,-0.12],[-0.612,-0.245],[-0.989,0.255],[-0.013,0.032],[-0.073,0.255],[-0.009,0.072],[-0.131,0.311],[-0.023,0.492]],"v":[[-4.157,0.893],[-2.323,1.993],[-1.611,3.503],[1.931,4.262],[4.663,2.423],[3.989,0.777],[3.558,-1.451],[1.599,-3.752],[-0.6,-3.977],[-2.393,-4.279],[-4.227,-2.361],[-4.257,-2.257],[-4.415,-1.477],[-4.411,-1.279],[-4.728,-0.318]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[196.771,137.857],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.3,0.134],[0.918,1.239],[1.102,0.967],[1.234,0.577],[0.805,0.867],[-0.917,0.88],[0.545,0.095],[0.918,0.888],[-0.466,0.266],[0.321,0.332],[0.31,0.705],[0.322,-0.255],[0.645,-0.124],[0,0],[0.4,0.242],[1.072,0.648],[0.217,-0.133],[0.263,-0.134],[-0.034,0.069],[0.021,0.407],[0.624,0.557],[1.587,-0.42],[0.229,0.877],[0.377,0.3],[0.707,0.053],[0.195,0.42],[0.209,0.187],[0.646,-0.114],[0.55,-0.349],[0.445,-0.118],[0.134,0.634],[0.323,0.759],[0.517,0.678],[0.571,0.604],[0.836,0.161],[1.021,-1.033],[0.559,-0.69],[0.293,-0.869],[-0.16,-0.389],[0.103,-0.303],[0.131,0.354],[-0.175,0.494],[-0.512,0.995],[-0.669,1.03],[0.444,0.101],[1.468,-0.172],[0.196,-0.145],[0.01,-0.002],[0.009,-0.27],[0.817,-3.519],[-1.047,-1.467],[-1.017,0.279],[-0.333,-0.766],[0.286,0.162],[-0.022,-0.559],[-1.706,-0.634],[-0.592,0.371],[-0.149,0.08],[-0.258,-0.091],[-0.236,-0.179],[-0.848,-0.179],[-1.165,-0.161],[-2.301,-0.003],[0.241,0.481],[-0.517,0.107],[-0.482,-0.165],[-0.366,0.561],[-0.488,-0.812],[-0.66,-0.267],[0.048,-0.597],[0.483,0.029],[0.112,-0.212],[-0.829,-0.112],[-0.486,-0.149],[-0.341,-0.35],[-0.221,-2.266],[0.055,-0.54],[0.523,-0.382],[0.212,-0.757],[-0.656,-0.939],[0.926,-1.148],[0.267,0.117],[0.327,-0.852],[-2.304,0.53],[-0.513,0.258],[-0.643,-0.515],[-0.951,-0.994],[-2.425,-1.307],[-0.576,2.723],[0.381,0.161],[0.931,1.911],[-1.061,-0.594],[-0.695,1.588],[-0.194,0.703],[0.144,0.805],[0.416,0.446],[0.687,0.712],[0.757,1.462],[-0.322,0.665],[-0.711,-0.42],[-0.802,-1.311],[-1.483,0.188],[-0.694,1.121],[-0.355,1.692]],"o":[[-1.403,-0.624],[-0.857,-1.157],[-1.048,-0.92],[-1.084,-0.506],[1.213,-0.222],[0.367,-0.352],[-1.307,-0.228],[0.466,-0.265],[0.412,-0.235],[-0.537,-0.555],[-0.207,-0.472],[-0.53,0.418],[0,0],[0.333,-0.335],[-1.072,-0.647],[-0.217,-0.131],[-0.256,0.158],[0.046,-0.073],[0.177,-0.366],[-0.044,-0.863],[-1.231,-1.097],[-0.483,-0.819],[-0.121,-0.46],[-0.598,-0.475],[-0.569,-0.042],[-0.116,-0.251],[-0.509,-0.453],[-0.649,0.114],[-0.383,0.242],[-0.698,0.185],[-0.169,-0.796],[-0.334,-0.785],[-0.504,-0.661],[-0.557,-0.591],[-1.641,-0.318],[-0.623,0.632],[-0.57,0.702],[-0.136,0.402],[0.109,0.264],[-0.239,0.703],[-0.188,-0.509],[0.373,-1.056],[0.561,-1.092],[0.248,-0.382],[-1.458,-0.332],[-0.191,-0.071],[-0.009,0.002],[-0.355,0.058],[-2.4,2.691],[-0.376,1.62],[0.662,0.929],[0.333,0.767],[-0.298,-0.109],[-0.462,-0.263],[0.063,1.589],[0.645,0.24],[0.148,-0.093],[0.252,-0.134],[0.262,0.091],[0.707,0.534],[1.15,0.244],[2.28,0.315],[0.577,0],[-0.146,-0.291],[0.44,-0.09],[0.74,0.252],[0.98,0.552],[0.377,0.625],[0.458,0.185],[-0.043,0.548],[-0.242,-0.015],[-0.383,0.729],[0.507,0.068],[0.478,0.145],[1.589,1.631],[0.053,0.538],[-0.076,0.752],[-0.638,0.467],[-0.322,1.153],[-1.355,0.539],[-0.316,-0.253],[-0.965,-0.419],[-0.771,2.004],[0.574,-0.133],[0.811,-0.408],[1.078,0.863],[1.907,1.991],[1.131,0.609],[0.089,-0.422],[-1.997,-0.84],[1.06,0.595],[1.063,0.596],[0.293,-0.67],[0.21,-0.765],[-0.11,-0.616],[-0.676,-0.723],[-1.129,-1.17],[-0.327,-0.63],[0.36,-0.743],[1.349,0.799],[0.599,0.979],[1.444,-0.183],[0.912,-1.473],[0.06,-0.287]],"v":[[28.042,8.857],[24.48,6.069],[22.206,2.414],[18.55,0.621],[15.698,-1.461],[18.943,-3.138],[18.623,-4.349],[15.277,-6.031],[16.674,-6.828],[16.821,-7.966],[15.589,-9.822],[14.45,-9.967],[12.661,-9.15],[14.043,-10.538],[13.896,-11.676],[10.681,-13.618],[9.948,-13.618],[9.168,-13.184],[9.291,-13.397],[9.558,-14.543],[8.274,-16.809],[3.712,-17.928],[3.291,-20.93],[2.575,-22.112],[0.642,-22.531],[-0.057,-23.267],[-0.525,-23.927],[-2.4,-24.339],[-4.18,-23.581],[-5.418,-22.94],[-6.542,-23.773],[-7.128,-26.083],[-8.43,-28.26],[-10.06,-30.145],[-12.016,-31.557],[-16.129,-29.129],[-17.904,-27.145],[-19.541,-24.775],[-19.514,-23.581],[-18.982,-22.565],[-20.143,-22.966],[-20.023,-24.526],[-18.548,-27.592],[-16.719,-30.781],[-17.152,-31.845],[-21.524,-32.077],[-22.127,-31.992],[-22.155,-31.988],[-22.677,-31.414],[-27.629,-21.949],[-27.39,-16.828],[-24.583,-15.781],[-23.584,-13.48],[-24.458,-13.887],[-25.55,-13.262],[-23.514,-9.16],[-21.555,-9.302],[-21.138,-9.642],[-20.797,-9.703],[-19.983,-8.876],[-17.512,-8.004],[-14.038,-7.397],[-7.163,-6.924],[-6.536,-8.014],[-6.485,-9.587],[-4.77,-8.326],[-2.819,-8.913],[-1.258,-5.22],[0.315,-4.001],[1.235,-2.993],[0.181,-2.25],[-0.446,-1.892],[0.436,-0.237],[1.91,-0.469],[3.213,0.625],[6.047,6.719],[6.068,8.362],[4.837,9.611],[3.546,11.53],[4.081,14.833],[0.527,17.199],[-0.765,15.961],[-2.819,17.18],[0.307,21.172],[1.816,20.414],[3.942,20.967],[6.893,23.867],[13.396,28.724],[19.513,29.525],[19.006,28.634],[14.496,24.319],[17.678,26.102],[21.017,26.059],[21.638,23.913],[22.03,21.503],[21.128,19.982],[19.065,17.845],[15.713,14.039],[15.567,12.039],[17.287,11.508],[20.579,15.147],[23.084,17.867],[26.475,14.473],[28.376,9.676]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[199.735,167.947],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.515,1.063],[1.625,-4.024],[0,0],[0.162,-0.39],[1.134,-0.939],[0.66,3.238],[0.388,-0.202],[1.926,-0.999],[1.571,0.003],[1.839,0.118],[-5.123,2.32],[0.573,0.139],[0.915,1.699],[1.415,0.808],[0.754,-0.304],[1.013,-0.215],[1.636,0.493],[-1.807,0.474],[0.49,0.343],[0.371,1.815],[0.231,0.048],[1.376,0.285],[0.026,-0.412],[2.332,-0.026],[1.616,-1.183],[0.036,-0.738],[-0.157,-0.977],[0.987,-0.198],[0.102,1.075],[0.492,-0.117],[3.824,-1.165],[-0.256,-0.407],[-1.921,0.103],[-0.737,-1.449],[1.79,0.334],[-0.105,-0.565],[1.549,-3.751],[4.334,0.768],[0.173,-0.295],[-1.725,-1.487],[0.709,0.041],[0.909,0.628],[-0.855,1.412],[0.607,-0.491],[3.187,-1.097],[-0.151,-0.383],[-1.77,-2.448],[0.303,0.236],[0.582,0.71],[1.579,-1.236],[-0.081,-0.215],[0.329,-1.308],[1.105,0.425],[0.058,-0.359],[0.131,-0.807],[0.365,-0.093],[0.331,-0.286],[0.707,-0.957],[0.454,-2.371],[-0.505,0.032],[-1.443,-0.125],[0.594,-2.225],[0.982,-0.646],[1.03,-0.38],[2.532,-3.355],[-0.107,-0.214],[-3.078,-1.127],[-1.477,1.694],[-0.044,-0.615],[1.121,-0.432],[0.85,-0.684],[-0.261,-0.866],[-0.054,-0.912],[0.139,-0.52],[-0.08,-0.458],[-0.684,-0.472],[-1.779,0.893],[-1.158,0.445],[-1.145,-0.016],[-1.685,-1.675],[-1.107,-2.121],[-0.908,-2.469],[1.965,-5.534],[-0.272,-0.129],[-0.759,-0.36],[0.04,0.593],[-0.28,0.108],[-0.782,-2.954],[0.979,0.936],[0.27,-0.294],[-1.186,-1.408],[0.49,-2.397],[-1.318,-2.349],[-0.534,-0.415],[-0.186,-0.817],[-0.15,-1.472],[-0.762,-1.604],[-0.733,-1.445],[-1.968,-2.674],[-3.121,-1.96],[-0.225,0.219],[-0.751,5.286],[-0.441,1.389],[-0.33,0.626],[-0.784,0.428],[-1.96,2.297],[-1.02,2.916],[-2.522,1.904],[-1.69,1.449],[-1.885,1.615],[0.491,0.145],[1.701,0.844],[-0.141,1.682],[-0.572,-0.645],[-0.448,-0.142],[-0.305,0.156],[1.045,1.261],[0.619,0.876],[0.093,0.94],[-1.211,1.245],[-1.697,0.806],[1.076,1.416],[0.331,0.744],[-0.152,0.664],[-1.496,0.088],[0.254,0.505],[-0.11,2.085],[0.686,0.901],[0.588,1.063],[-0.877,0.283],[-0.756,-0.236],[1.044,1.612],[0.765,0.983],[-0.938,0.032],[0.064,0.471],[1.725,0.174],[-1.236,1.852],[0.319,2.443],[0.036,1.316],[-0.372,1.241],[-0.312,0.559],[-0.836,-0.132],[-0.63,0.564],[-0.245,1.482],[-0.714,0.807],[-1.038,1.105],[-0.899,0.955],[-0.318,1.165]],"o":[[-3.712,-2.604],[0,0],[-0.425,-0.3],[-0.58,1.391],[1.376,-2.961],[-0.098,-0.481],[-1.926,0.999],[-0.778,-1.364],[-1.811,-0.004],[5.123,-2.32],[0.576,-0.261],[-1.869,-0.451],[-0.703,-1.307],[-0.735,-0.42],[-0.952,0.383],[-1.68,0.356],[1.698,-0.762],[0.644,-0.169],[-1.528,-1.068],[-0.047,-0.231],[-1.376,-0.285],[-0.528,-0.109],[-2.331,0.026],[-1.881,0.021],[-0.585,0.428],[-0.052,1.055],[0.157,0.98],[-1.1,0.22],[-0.046,-0.474],[-3.889,0.928],[-0.434,0.132],[1.119,1.776],[1.272,-0.067],[-1.797,0.258],[-0.568,-0.106],[0.744,4.002],[-2.336,-3.696],[-0.321,-0.057],[-1.178,2.019],[-0.548,0.455],[0.09,-1.048],[-0.777,-0.537],[0.453,-0.748],[-2.619,2.121],[-0.341,0.117],[1.105,2.813],[-0.455,0.291],[-0.736,-0.573],[-1.094,-1.335],[-0.184,0.144],[0.452,1.207],[-0.265,1.056],[-0.339,-0.131],[-0.132,0.807],[-0.475,-0.118],[-0.428,0.109],[-0.901,0.779],[-1.437,1.945],[-0.082,0.43],[1.45,-0.091],[-0.569,2.231],[-0.288,1.077],[-0.929,0.61],[-3.955,1.462],[-0.159,0.21],[1.373,2.751],[2.091,0.765],[0.29,0.53],[-1.122,0.432],[-1.001,0.386],[-0.688,0.554],[0.259,0.863],[0.032,0.554],[-0.121,0.446],[0.145,0.829],[1.75,1.206],[1.104,-0.555],[1.07,-0.41],[2.382,0.032],[1.715,1.705],[1.217,2.331],[1.981,5.385],[-0.099,0.278],[0.759,0.36],[0.457,0.216],[-0.025,-0.364],[1.715,2.54],[-1.27,-0.359],[-0.273,-0.262],[-1.73,1.884],[1.593,1.891],[-2.001,0.376],[0.342,0.61],[0.671,0.521],[0.331,1.451],[0.18,1.783],[0.695,1.464],[1.498,2.957],[2.175,2.956],[0.274,0.172],[4.113,-4.011],[0.205,-1.441],[0.213,-0.673],[0.426,-0.807],[2.651,-1.446],[2.011,-2.358],[3.064,1.513],[1.778,-1.343],[1.885,-1.615],[0.429,-0.368],[-1.825,-0.537],[0.48,-1.621],[0.773,0.341],[0.29,0.327],[0.339,0.107],[1.726,-0.886],[-0.682,-0.823],[-0.547,-0.774],[-0.173,-1.749],[1.4,1],[1.508,-0.716],[-0.481,-0.632],[-0.281,-0.631],[0.318,-1.381],[0.566,-0.034],[-1.013,-2.015],[0.059,-1.129],[-0.734,-0.963],[-0.325,-0.587],[0.817,-0.264],[2.124,0.663],[-0.696,-1.075],[-0.294,-0.378],[0.52,-0.018],[-0.239,-1.758],[-0.547,-2.13],[1.192,-1.785],[-0.168,-1.289],[-0.036,-1.294],[0.184,-0.612],[0.443,-0.794],[0.803,0.128],[1.227,-1.101],[0.174,-1.049],[1.004,-1.135],[0.899,-0.955],[0.796,-0.847],[0.539,-1.974]],"v":[[57.053,-61.129],[46.628,-57.981],[44.492,-59.491],[43.426,-59.058],[40.802,-55.535],[41.911,-65.093],[40.846,-65.526],[35.066,-62.529],[31.01,-64.423],[25.358,-63.521],[40.725,-70.482],[40.553,-71.806],[36.171,-75.139],[33.898,-79.104],[31.583,-79.116],[28.738,-78.088],[23.669,-78.313],[28.928,-80.166],[29.102,-81.49],[26.216,-85.956],[25.708,-86.462],[21.579,-87.317],[20.674,-86.592],[13.68,-86.513],[7.932,-85.528],[6.897,-83.743],[7.829,-81.047],[6.288,-78.752],[3.954,-80.563],[3.035,-81.261],[-8.537,-78.12],[-8.971,-77.056],[-3.796,-75.205],[1.042,-74.097],[-4.361,-74.21],[-5.254,-73.319],[-6.505,-61.417],[-17.046,-68.521],[-17.866,-68.189],[-16.813,-62.054],[-18.771,-61.431],[-20.39,-64.068],[-23.898,-67.033],[-25.038,-67.911],[-33.815,-63.057],[-34.322,-62.166],[-30.015,-54.259],[-31.751,-54.852],[-33.444,-56.998],[-37.774,-58.201],[-37.96,-57.497],[-37.246,-53.569],[-39.652,-52.027],[-40.544,-51.522],[-40.938,-49.101],[-42.291,-49.232],[-43.492,-48.34],[-45.899,-45.714],[-48.764,-39.136],[-48.064,-38.22],[-43.729,-38.168],[-45.449,-31.476],[-47.058,-28.641],[-50.17,-27.435],[-60.054,-20.034],[-60.054,-19.303],[-53.949,-12.264],[-47.713,-13.529],[-47.214,-11.806],[-50.578,-10.51],[-53.61,-9.146],[-54.372,-6.898],[-53.05,-4.485],[-53.533,-2.848],[-53.629,-1.491],[-52.27,0.495],[-46.705,0.412],[-43.423,-1.319],[-40.066,-1.905],[-33.752,0.749],[-29.794,6.784],[-26.545,13.969],[-25.56,30.746],[-25.227,31.563],[-22.951,32.642],[-21.859,32.017],[-21.46,31.279],[-17.699,39.551],[-21.096,37.614],[-22.122,37.614],[-20.342,42.954],[-18.657,49.834],[-22.374,53.987],[-20.906,55.346],[-19.697,57.369],[-19.385,61.814],[-17.763,66.808],[-15.628,71.176],[-10.54,79.717],[-2.667,87.254],[-1.788,87.141],[2.922,71.792],[3.839,67.525],[4.626,65.552],[6.431,63.891],[13.423,58.242],[18.005,50.271],[27.199,47.972],[32.318,43.657],[37.973,38.811],[37.652,37.6],[32.366,35.53],[33.294,30.57],[35.333,32.046],[36.31,33.102],[37.432,32.941],[37.82,28.522],[35.585,26.238],[34.625,23.599],[36.221,18.876],[41.044,19.996],[42.245,16.107],[40.706,14.311],[40.564,12.289],[43.44,9.515],[44.066,8.425],[44.764,1.814],[43.826,-1.27],[41.337,-3.986],[41.615,-6.311],[44.341,-5.511],[46.182,-8.606],[43.51,-11.197],[43.44,-13.429],[44.141,-14.346],[40.672,-17.62],[41.703,-23.886],[44.578,-29.185],[43.962,-32.994],[44.467,-36.814],[45.178,-38.613],[46.872,-39.203],[49.121,-39.702],[50.451,-44.298],[51.738,-46.966],[54.854,-50.287],[57.549,-53.152],[59.674,-56.041]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[265.085,120.304],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.022,0.03],[-0.088,0.002],[0.064,-0.013]],"o":[[0.082,0.021],[-0.062,0.025],[-0.022,-0.027]],"v":[[89.855,14.513],[90.11,14.542],[89.921,14.602]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[1.898,1.174],[0.003,0.979],[0.393,0.036],[1.463,0.985],[1.29,0.868],[-0.151,0.538],[0.632,1.261],[2.004,2.586],[0.208,-0.366],[0.943,-1.662],[0.476,-0.829],[0.533,0.312],[0.207,0.299],[-0.922,3.452],[0.532,-0.096],[0.844,1.305],[1.427,0.164],[1.318,-0.204],[0.877,1.122],[0.066,-0.568],[0.047,-0.323],[-0.295,-1.767],[0.292,-0.309],[-0.153,-0.294],[0.307,-1.306],[0.685,-1.082],[-1.422,-1.899],[2.969,-1.361],[1.032,-0.622],[-0.494,-1.056],[-0.267,-0.763],[0.004,-0.744],[0.825,-1.108],[0.675,0.3],[0.802,0.915],[0.169,2.262],[0.78,0.577],[1.152,0.552],[1.314,0.779],[0,0],[1.309,-0.311],[0.433,-0.357],[0.545,0.329],[1.097,2.086],[0.333,-0.294],[0.525,-0.037],[-0.511,2.098],[-0.322,1.12],[-0.532,0.897],[-0.987,0.204],[-0.231,0.778],[0.909,0.772],[-1.291,3.171],[-0.127,0.962],[-0.315,0.399],[-0.372,0.146],[-0.487,0.7],[-0.137,0.509],[-0.28,0.151],[-1.95,1.095],[1.154,2.42],[-0.802,1.129],[0.318,1.351],[1.023,0.516],[1.545,0.748],[0.219,-0.355],[0.016,-1.954],[0.563,-1.017],[0.58,-1.048],[0.041,1.236],[1.84,0.491],[0.187,-0.267],[0,0],[1.565,1.275],[0.649,1.38],[1.855,2.473],[0.378,-0.203],[0.062,-2.975],[-1.223,-1.291],[-1.339,-0.278],[0.538,-1.408],[0.372,-0.464],[0.076,-0.593],[-0.061,-0.68],[0.263,-0.31],[0.051,-0.046],[2.95,-0.445],[-0.49,-0.293],[0.301,-0.187],[0.226,-0.066],[0.552,-0.138],[1.173,-0.062],[1.075,0.374],[1.06,0.455],[0.966,-2.646],[1.495,-0.144],[2.144,1.552],[-0.295,0.93],[-0.328,0.422],[0.002,0.473],[0.793,0.448],[1.104,-0.173],[2.496,1.751],[2.029,-1.122],[0.358,-0.407],[0.819,0.619],[0.434,0.547],[0.487,0.701],[0.227,-0.594],[0.096,0.053],[0.468,0.037],[0.875,-0.503],[0.961,-0.474],[0.674,0.078],[0.417,-0.182],[0.48,-0.554],[0.867,-0.194],[0.139,-0.741],[-0.266,-0.361],[-0.153,-0.208],[2.04,1.525],[1.279,0.358],[1.357,0.729],[1.171,0.664],[1.37,0.254],[1.445,-0.1],[0.3,1.635],[0.299,0.005],[2.758,0.386],[0.366,0.52],[0.834,-0.464],[0.998,-0.875],[1.342,-0.178],[0.863,-2.086],[0.851,-1.037],[1.12,0.499],[0.182,-0.083],[-0.115,-0.696],[0.497,-0.27],[-0.421,-0.3],[-0.959,-1.504],[-1.615,-0.17],[-0.598,-0.763],[0.214,-0.684],[-0.596,2.039],[0.537,-0.336],[2.58,-1.609],[-0.195,-0.351],[-0.449,-0.18],[-0.409,-0.228],[-0.045,-0.543],[-0.362,-0.346],[-1.05,0.074],[-0.539,-1.17],[-0.222,0.47],[-1.141,0.011],[0.165,-0.221],[-0.395,-0.138],[0.313,-0.595],[0.896,-0.087],[0.868,-0.342],[0.521,-0.777],[0.693,-1.032],[-0.027,-1.011],[-0.651,-0.434],[-0.295,-0.234],[-0.112,-0.223],[-0.202,0.019],[-0.308,-0.506],[-1.736,-0.421],[-0.386,0.05],[-0.215,-0.531],[0.014,-0.494],[0.071,-0.632],[-0.203,-0.11],[-0.91,0.73],[-0.398,0.045],[-0.108,-0.4],[-0.42,0.178],[-1.131,0.443],[0.212,-0.369],[0.902,-0.951],[1.017,-0.922],[1.152,-1.043],[-0.681,0.207],[-2.478,2.051],[-0.349,0.605],[-0.683,0.518],[-0.903,1.034],[0.494,1.062],[0.05,0.204],[-0.15,0.265],[-0.459,0.803],[-0.459,0.802],[-0.92,0.11],[-0.627,0.164],[-0.032,-0.288],[0.794,-1.977],[-0.251,-0.157],[0.507,-0.387],[-0.662,-0.168],[-1.095,1.346],[-0.389,0.25],[-0.454,0.144],[-0.023,0.808],[0.093,0.386],[-0.019,0.204],[0,0],[0.038,-0.146],[-0.12,-0.112],[-0.36,-0.071],[-0.853,-0.148],[-0.557,-0.712],[-0.233,-0.102],[-2.951,-2.582],[-1.621,-3.496],[-1.372,-1.006],[-0.763,-0.103],[-0.485,-0.524],[-0.634,-0.426],[-0.43,-0.851],[0.05,-0.785],[-0.499,-0.81],[-0.843,-1.51],[-0.205,-0.844],[-0.554,-0.686],[-1.33,-0.421],[0.959,-1.457],[0.243,-0.243],[0.039,-0.285],[-0.223,-0.959],[0.17,-2.236],[0.308,-2.116],[0.14,-0.966],[-0.146,-0.959],[-0.559,-1.633],[-0.333,-0.806],[-0.687,-0.623],[-0.994,-1.489],[-0.71,-0.193],[-0.945,-0.041],[-0.992,-1.181],[-0.042,-1.407],[-0.74,-1.118],[0.92,-0.952],[-0.521,-0.167],[-0.904,-2.415],[-0.895,-0.975],[-1.148,0.258],[0.273,0.37],[2.311,3.138],[0.831,1.528],[-1.307,0.795],[-1.343,-2.5],[-2.325,-2.351],[-0.864,-1.449],[0.065,-0.969],[-0.253,-0.667],[-2.401,-1.528],[-3.377,-0.713],[-1.629,0.219],[-1.602,-0.882],[-2.38,-0.824],[-0.548,0.015],[-0.435,-0.11],[-0.381,-0.349],[-1.465,-1.345],[-1.641,-1.052],[-0.826,-0.099],[-0.368,-0.226],[-0.249,-0.346],[-0.418,1.617],[-0.925,0.209],[-0.292,-0.884],[0.026,0.851],[2.04,-0.406],[0.929,0.244],[0.411,0.641],[0.342,1.408],[-0.305,0.913],[0.05,0.727],[1.175,0.461],[2.778,-0.453],[-0.475,1.278],[-0.578,1.738],[1.484,0.332],[1.467,-0.667],[0.071,-1.352],[0.801,-0.373],[0.754,-0.124],[1.432,1.076],[0.493,1.289],[0.254,1.516],[-1.254,1.175],[0.481,0.186],[-0.281,0.772],[-0.79,0.666],[-0.853,0.706],[-0.583,0.217],[-0.717,-0.247],[-2.059,0.588],[-1.868,-0.952],[-1.542,0.025],[-0.338,0.161],[-0.208,0.07],[-0.295,-0.441],[-0.279,-1],[-1.465,-1.129],[0.01,1.892],[0.356,0.934],[0.218,1.118],[-1.43,1.962],[0.02,0.142],[-0.576,0.306],[-0.393,0.538],[-0.088,0.701],[-0.692,-0.049],[-1.069,0.654],[-0.549,0.513],[-0.075,0.255],[0.196,0.408],[0.551,1.32],[0.249,0.643],[-0.686,0.335],[-0.699,0.267],[-0.09,0.89],[-0.537,0.437],[-0.525,0.161],[-1.437,0.496],[-0.004,1.015],[-0.752,1.056],[-2.292,0.925],[-0.699,0.355],[0.554,-0.255],[-0.456,-1.147],[-1.14,0.341],[-0.443,0.404],[-0.573,0.472],[2.075,1.942],[0.469,-0.078],[0.767,0.273],[0.599,0.196],[0.259,0.017],[-0.017,0.136],[0.646,0.776],[0.068,0.333],[-0.378,0.3],[1.881,0.987],[1.972,-1.411],[-0.612,0.608],[-2.801,0.292],[-2.506,0.811],[-1.147,0.608],[-0.402,1.101]],"o":[[0.461,-0.837],[-0.001,-0.418],[-1.826,-0.167],[-1.29,-0.868],[0.43,-0.344],[0.411,-1.456],[-1.466,-2.926],[-0.29,-0.374],[-0.943,1.662],[-0.472,0.831],[-0.27,0.469],[-0.324,-0.188],[-1.887,-2.738],[0.152,-0.569],[-1.844,0.331],[-0.704,-1.087],[-1.361,-0.156],[-1.423,0.221],[-0.433,-0.554],[-0.237,0.034],[-0.258,1.789],[-0.376,0.118],[-0.232,0.244],[0.521,1.007],[-0.305,1.297],[-1.779,2.813],[1.595,2.13],[-1.072,0.491],[-1.049,0.631],[0.34,0.725],[0.246,0.703],[-0.007,1.393],[-0.484,-0.536],[-1.05,-0.466],[-1.723,-1.966],[-0.069,-0.932],[-1.075,-0.797],[-1.379,-0.659],[0,0],[-1.037,-0.616],[-0.585,0.138],[-0.501,0.412],[-0.17,-2.342],[-0.23,-0.436],[-0.419,0.369],[0.353,-2.13],[0.276,-1.132],[0.285,-0.991],[0.587,-0.991],[0.778,-0.161],[0.383,-1.292],[3.19,-1.213],[0.366,-0.899],[0.064,-0.483],[0.259,-0.329],[0.762,-0.298],[0.305,-0.44],[0.032,-0.121],[0.07,2.248],[2.358,-1.325],[-0.477,-1.001],[0.663,-0.931],[-0.279,-1.19],[-1.532,-0.774],[-0.359,-0.173],[-1.165,1.887],[-0.01,1.205],[-0.58,1.048],[-1.322,-0.721],[-0.055,-1.69],[-0.332,-0.089],[0,0],[-0.372,-1.962],[1.032,-1.438],[-1.314,-2.798],[-0.242,-0.322],[-2.944,1.584],[-0.035,1.696],[0.953,1.007],[-0.475,1.322],[-0.217,0.568],[-0.374,0.467],[-0.087,0.688],[0.034,0.384],[-0.046,0.055],[0.582,-2.894],[-0.647,0.098],[-0.272,-0.163],[-0.203,0.126],[-0.547,0.158],[-1.137,0.285],[-1.132,0.06],[-1.094,-0.382],[-2.743,-1.176],[-1.182,-0.858],[-2.328,0.223],[-0.714,-0.517],[0.168,-0.533],[0.287,-0.369],[-0.006,-0.938],[-1.022,-0.577],[-3.012,0.474],[-1.054,-2.124],[-0.475,0.263],[-0.497,0.566],[-0.566,-0.427],[-0.529,-0.668],[-0.371,-0.535],[-0.07,0.185],[-0.409,-0.226],[-1.027,-0.083],[-0.925,0.531],[-0.609,0.301],[-0.438,-0.051],[-0.729,0.317],[-0.639,0.737],[-0.676,0.152],[-0.089,0.476],[0.154,0.208],[-2.47,-0.169],[-1.047,-0.782],[-1.44,-0.402],[-1.187,-0.638],[-1.212,-0.687],[-1.434,-0.265],[-1.314,0.09],[-0.058,-0.313],[-2.785,-0.043],[0.031,-0.622],[-0.585,-0.832],[-1.167,0.648],[-0.986,0.864],[-2.363,0.314],[-0.504,1.218],[-0.704,0.858],[-0.224,-0.1],[-0.447,-0.261],[0.097,0.582],[-0.515,0.279],[1.453,1.034],[0.747,1.17],[0.825,0.087],[0.413,0.525],[-0.514,1.637],[0.175,-0.596],[-2.581,1.608],[-0.338,0.211],[0.237,0.427],[0.44,0.176],[0.522,0.291],[0.041,0.502],[0.794,0.759],[1.022,-0.072],[0.22,0.477],[0.509,-1.078],[-0.116,0.23],[-0.301,0.402],[0.753,0.262],[-0.455,0.868],[-0.91,0.088],[-0.918,0.361],[-0.693,1.031],[-0.531,0.791],[0.022,0.823],[0.313,0.208],[0.2,0.16],[0.076,0.151],[-0.525,0.049],[0.873,1.438],[0.38,0.092],[0.449,-0.058],[0.192,0.472],[-0.018,0.636],[-0.027,0.24],[1.003,0.545],[0.313,-0.25],[0.575,-0.065],[0.133,0.497],[1.118,-0.474],[-0.499,0.419],[-0.629,1.097],[-0.944,0.997],[-1.151,1.043],[-0.538,0.488],[3.074,-0.931],[0.534,-0.442],[0.408,-0.705],[1.065,-0.806],[0.718,-0.823],[-0.101,-0.217],[-0.08,-0.326],[0.459,-0.803],[0.457,-0.803],[0.424,-0.741],[0.672,-0.081],[0.032,0.288],[-1.899,0.956],[-0.12,0.301],[0.5,0.314],[-0.464,0.353],[1.954,0.497],[0.288,-0.354],[0.413,-0.267],[0.771,-0.244],[0.012,-0.401],[-0.047,-0.195],[0,0],[0.088,-0.227],[0.011,0.002],[0.271,0.254],[0.862,0.17],[0.93,0.162],[0.025,0.182],[3.387,1.479],[2.893,2.532],[0.698,1.504],[0.619,0.453],[0.646,0.087],[0.461,0.497],[0.711,0.479],[0.373,0.74],[-0.06,0.931],[0.889,1.444],[0.424,0.759],[0.198,0.821],[0.951,1.176],[1.194,0.378],[-0.203,0.309],[-0.216,0.214],[-0.135,0.984],[0.504,2.171],[-0.163,2.133],[-0.141,0.966],[-0.139,0.948],[0.279,1.837],[0.281,0.82],[0.367,0.887],[1.369,1.24],[0.402,0.603],[0.939,0.256],[0.993,1.181],[0.851,1.013],[0.038,1.276],[0.504,0.761],[-0.389,0.403],[2.449,0.786],[0.449,1.201],[0.788,0.858],[0.423,-0.095],[-2.311,-3.138],[-1.029,-1.397],[-0.611,-1.123],[2.306,1.784],[1.578,2.936],[1.179,1.192],[0.531,0.889],[-0.047,0.712],[1.063,2.807],[2.881,1.833],[1.607,0.339],[1.714,-0.23],[2.155,1.186],[0.517,0.179],[0.441,-0.013],[0.513,0.129],[1.467,1.343],[1.43,1.313],[0.712,0.456],[0.42,0.052],[0.374,0.23],[0.846,1.175],[0.212,-0.821],[0.946,-0.214],[0.248,0.747],[-0.085,-2.728],[-0.913,0.182],[-0.761,-0.199],[-0.786,-1.227],[-0.227,-0.932],[0.223,-0.671],[-0.093,-1.369],[-2.698,-1.057],[0.542,-1.251],[0.638,-1.717],[0.469,-1.408],[-1.52,-0.34],[-1.221,0.557],[-0.036,0.714],[-0.698,0.324],[-1.692,0.28],[-1.128,-0.849],[-0.548,-1.435],[-0.267,-1.587],[0.432,-0.404],[-0.875,-0.338],[0.364,-0.999],[0.846,-0.714],[0.472,-0.39],[0.749,-0.28],[1.96,0.678],[1.724,-0.493],[1.272,0.649],[0.378,-0.007],[0.202,-0.096],[0.594,-0.199],[0.584,0.871],[0.468,1.675],[1.215,0.937],[-0.005,-1.028],[-0.407,-1.064],[-0.452,-2.326],[0.114,-0.157],[0.394,-0.549],[0.584,-0.31],[0.421,-0.575],[0.118,-0.952],[1.418,0.099],[0.612,-0.374],[0.212,-0.198],[0.299,-0.189],[-0.62,-1.289],[-0.266,-0.636],[-0.208,-0.538],[0.664,-0.324],[0.843,-0.323],[0.062,-0.613],[0.438,-0.356],[1.454,-0.445],[0.963,-0.332],[0.005,-1.271],[1.486,-2.083],[0.689,-0.278],[-0.383,0.473],[-0.983,0.451],[0.352,0.886],[0.579,-0.173],[0.551,-0.503],[0.892,-0.737],[-0.379,-0.355],[-0.775,0.128],[-0.583,-0.209],[-0.258,-0.085],[-0.015,-0.133],[0.104,-0.858],[-0.22,-0.264],[-0.125,-0.613],[1.607,-1.271],[-2.198,-1.153],[0.585,-0.641],[2.319,-2.297],[2.688,-0.281],[1.22,-0.395],[1.042,-0.553],[0.812,-2.218]],"v":[[106.586,-15.229],[107.272,-17.97],[106.546,-18.694],[101.533,-21.465],[97.664,-24.069],[98.572,-25.439],[97.54,-29.633],[92.3,-37.891],[91.16,-37.743],[88.33,-32.758],[86.914,-30.263],[86.052,-29.814],[85.283,-30.784],[82.281,-40.273],[81.389,-41.163],[77.498,-44.102],[74.418,-46.954],[70.852,-45.478],[67.16,-46.949],[65.972,-46.482],[65.486,-45.967],[65.535,-40.646],[64.527,-40.004],[64.414,-39.128],[66.569,-36.9],[64.214,-33.793],[67.288,-27.414],[66.527,-20.027],[63.155,-19.083],[62.423,-16.184],[63.535,-14.082],[63.895,-11.9],[62.623,-8.047],[60.882,-9.322],[57.555,-10.547],[57.364,-17.924],[56.184,-20.439],[52.673,-21.069],[48.682,-23.409],[44.662,-25.793],[40.883,-27.327],[39.594,-26.401],[37.833,-26.271],[35.927,-32.94],[34.787,-33.087],[33.355,-32.474],[34.643,-38.82],[35.541,-42.199],[36.584,-45.194],[38.98,-46.198],[40.632,-47.634],[39.456,-50.708],[46.533,-57.664],[47.274,-60.456],[47.585,-62.062],[48.699,-62.682],[50.746,-63.98],[51.308,-65.43],[51.849,-66.509],[56.623,-64.27],[58.91,-71.331],[57.746,-75],[59.138,-77.832],[56.679,-80.306],[52.042,-82.552],[51.049,-82.29],[51.296,-76.635],[49.87,-73.281],[48.132,-70.138],[47.17,-74.568],[44.774,-78.674],[43.954,-78.342],[42.535,-76.31],[39.527,-81.335],[38.688,-86.603],[33.908,-94.521],[32.915,-94.78],[29.594,-86.447],[30.957,-81.658],[34.584,-79.927],[34.46,-75.509],[33.326,-74.072],[32.643,-72.531],[32.799,-70.51],[32.595,-69.478],[32.448,-69.323],[27.27,-74.645],[27.096,-73.32],[26.564,-73.095],[25.893,-72.855],[24.245,-72.405],[20.779,-71.823],[17.437,-72.229],[14.375,-73.814],[7.513,-70.665],[3.273,-71.613],[-4.428,-71.216],[-5.594,-73.688],[-4.562,-74.921],[-4.099,-76.195],[-5.556,-78.443],[-8.921,-78.672],[-17.324,-80.513],[-23.066,-82.141],[-24.336,-81.12],[-25.84,-80.421],[-27.299,-82.122],[-28.816,-84.181],[-30.143,-84.009],[-31.368,-84.617],[-32.685,-85.03],[-35.594,-84.216],[-38.275,-82.475],[-40.122,-82.139],[-41.374,-82.056],[-42.764,-80.487],[-45.471,-80.043],[-47.055,-78.697],[-46.559,-77.565],[-46.098,-76.941],[-52.803,-79.603],[-56.193,-81.534],[-60.48,-82.488],[-63.848,-84.703],[-67.773,-86.137],[-72.038,-86.251],[-75.555,-87.823],[-76.255,-88.354],[-84.574,-88.993],[-84.986,-90.764],[-87.477,-91.172],[-90.637,-88.508],[-94.038,-86.09],[-98.594,-81.913],[-100.322,-78.292],[-103.413,-77.174],[-104.035,-77.176],[-105.152,-76.35],[-105.872,-75.016],[-105.872,-73.766],[-102.204,-69.93],[-99.34,-66.797],[-97.135,-66.484],[-96.34,-64.103],[-100.225,-65.133],[-101.29,-65.949],[-109.031,-61.124],[-109.292,-60.134],[-108.257,-59.264],[-106.833,-58.885],[-106.773,-57.137],[-106.132,-55.832],[-103.001,-54.965],[-99.734,-54.284],[-98.48,-54.284],[-95.799,-56.049],[-96.219,-55.379],[-95.786,-54.315],[-95.35,-52.38],[-97.854,-51.151],[-100.62,-50.922],[-102.564,-48.862],[-104.643,-45.767],[-105.863,-43.096],[-104.654,-41.24],[-103.671,-40.655],[-103.322,-40.21],[-103.178,-39.892],[-103.805,-38.802],[-100.005,-35.288],[-98.85,-35.232],[-97.615,-35.109],[-97.553,-33.421],[-97.693,-31.52],[-97.335,-30.895],[-94.23,-31.099],[-93.046,-32.182],[-92.148,-30.854],[-91.083,-30.422],[-87.708,-31.794],[-89.07,-30.605],[-89.82,-27.214],[-92.887,-24.417],[-96.342,-21.286],[-95.635,-20.077],[-87.161,-24.547],[-85.781,-26.086],[-84.518,-28.01],[-81.199,-30.155],[-80.469,-33.237],[-80.984,-33.96],[-80.421,-35.128],[-79.046,-37.538],[-77.674,-39.948],[-75.993,-41.461],[-73.992,-41.659],[-73.896,-40.793],[-78.001,-36.243],[-77.667,-35.426],[-77.538,-33.845],[-77.365,-32.522],[-73.083,-34.926],[-72.098,-35.913],[-70.773,-36.34],[-69.495,-38.014],[-69.673,-39.202],[-69.77,-39.792],[-69.723,-40.021],[-69.648,-40.142],[-69.085,-39.228],[-68.135,-38.763],[-65.57,-38.875],[-63.413,-37.129],[-63.044,-36.677],[-52.626,-34.086],[-45.486,-25.057],[-42.665,-21.04],[-40.581,-20.168],[-38.165,-19.938],[-37.148,-18.27],[-34.918,-17.344],[-34.793,-14.945],[-34.258,-12.312],[-31.075,-8.409],[-30.135,-5.995],[-29.382,-3.578],[-25.12,-2.176],[-23.152,0.988],[-23.913,1.531],[-24.189,2.361],[-23.938,5.284],[-23.324,11.717],[-24.163,18.085],[-24.585,20.982],[-24.834,23.904],[-21.964,27.841],[-21.31,30.346],[-19.605,32.323],[-17.573,37.171],[-15.889,38.462],[-13.062,38.386],[-10.086,41.928],[-7.714,45.547],[-7.03,48.922],[-5.913,52.113],[-5.594,53.323],[-0.211,58.393],[1.393,61.895],[4.414,62.918],[4.848,61.855],[-2.085,52.443],[-5.12,48.147],[-4.82,44.214],[-0.044,51.35],[6.098,58.914],[9.419,62.797],[9.671,65.456],[9.985,67.549],[16.438,73.568],[25.777,77.858],[30.648,78.062],[35.666,78.279],[41.617,82.568],[43.238,82.82],[44.539,82.793],[45.793,83.674],[50.189,87.711],[54.651,91.662],[56.941,92.365],[58.183,92.662],[58.964,93.633],[61.976,93.366],[63.453,91.604],[65.605,92.91],[67.031,92.719],[61.713,90.133],[58.893,90.365],[57.183,88.953],[55.467,84.813],[55.537,82.091],[56.002,80.078],[53.502,77.352],[45.132,77.482],[46.623,73.675],[48.538,68.516],[47.05,65.665],[42.35,65.742],[40.235,68.711],[39.68,70.729],[37.295,71.255],[32.335,70.475],[30.017,66.993],[28.765,62.518],[29.752,57.99],[29.432,56.78],[28.701,54.472],[30.742,52.073],[33.299,49.951],[34.826,48.901],[37.002,49.138],[43.192,49.78],[48.439,48.071],[52.304,50.003],[53.373,49.725],[53.982,49.385],[55.028,49.884],[56.194,52.77],[58.507,57.74],[61.764,56.599],[60.739,53.636],[59.778,50.359],[60.926,43.68],[61.056,43.225],[62.712,42.151],[64.206,40.919],[64.929,39.005],[66.606,38.643],[69.644,37.016],[71.59,36.201],[72.023,35.511],[72.323,34.534],[70.558,30.621],[69.786,28.703],[69.694,26.93],[71.921,26.469],[73.314,24.592],[73.762,22.967],[75.454,22.336],[79.825,20.996],[81.176,19.073],[82.177,15.698],[88.411,11.698],[90.591,10.819],[89.265,12.005],[88.099,14.238],[90.175,16.008],[91.748,15.059],[93.184,13.37],[98.054,9.061],[96.757,8.846],[94.386,8.899],[92.751,8.046],[91.975,7.899],[91.973,7.495],[91.812,5.143],[90.822,4.234],[92.065,2.783],[91.735,-1.496],[85.473,-0.312],[87.265,-2.189],[95.469,-2.905],[102.764,-5.799],[106.434,-6.934],[108.674,-9.544]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[130.428,243.148],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":3,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.326,0.594],[0.813,-0.571],[0.034,-0.025],[1.07,-0.803],[-0.276,-0.244],[-0.196,-0.143],[0.503,0.056],[0.424,-0.331],[-0.148,-0.398],[0.081,-0.43],[0.088,-0.191],[-0.01,-0.201],[0.195,-0.717],[-0.777,-0.872],[-0.891,0.491],[-1.253,0.955],[0.098,1.264],[0.11,0.247],[-0.052,0.318],[-0.079,0.549],[0.317,0.404]],"o":[[-0.522,-0.951],[-0.033,0.016],[-1.07,0.802],[-0.25,0.187],[0.186,0.165],[-0.424,0.169],[-0.487,-0.053],[-0.339,0.265],[0.166,0.446],[-0.033,0.18],[-0.084,0.184],[0.033,0.668],[-0.256,0.944],[0.763,0.857],[1.38,-0.761],[0.952,-0.726],[-0.021,-0.269],[-0.131,-0.293],[0.082,-0.5],[0.082,-0.571],[-0.409,-0.521]],"v":[[3.779,-5.76],[1.268,-6.31],[1.168,-6.249],[-2.042,-3.842],[-2.148,-3.025],[-1.576,-2.566],[-2.953,-2.395],[-4.395,-2.239],[-4.7,-1.117],[-3.576,0.272],[-4.032,0.871],[-4.142,1.437],[-3.854,3.19],[-3.904,6.024],[-1.001,6.168],[3.02,3.496],[4.694,0.475],[4.498,-0.29],[3.992,-1.364],[4.766,-2.735],[4.194,-3.977]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[328.757,209.494],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.081,0.562],[0.987,0.043],[0.365,2.471],[1.208,0.751],[0.364,-0.028],[0.563,2.055],[0.174,0.026],[1.005,-0.183],[-0.645,0.281],[-0.003,0.167],[0.999,-0.099],[1.114,-0.667],[-0.578,0.347],[-0.067,0.037],[1.094,-0.668],[-0.376,-0.164],[-0.291,-0.127],[-0.565,-0.559],[0.108,-0.641],[-0.294,-0.082],[0.531,-1.256],[-0.237,-0.085],[-0.553,0.08],[-0.06,-0.629],[-0.361,-0.395],[0.332,-0.304],[-0.051,-0.383],[-0.078,-0.224],[0.383,-0.287],[-0.737,-0.892],[-0.996,0.335],[-0.45,-0.204],[0.675,-0.441],[0.109,-1.041],[-0.298,0.093],[-2.869,1.068],[-0.292,0.964],[0.171,0.408]],"o":[[-0.157,-1.087],[0.825,-2.651],[-0.181,-1.23],[-0.336,-0.209],[0.88,-1.586],[-0.044,-0.159],[-1.03,-0.155],[0.127,-0.627],[0.165,-0.072],[0.016,-1.063],[-1.319,0.131],[-0.575,0.345],[0.035,-0.02],[-0.453,1.165],[-0.303,0.185],[0.291,0.127],[-0.37,0.684],[-0.309,0.558],[-0.047,0.279],[1.346,0.375],[-0.115,0.273],[0.56,0.202],[0.777,-0.113],[0.057,0.599],[-0.444,0.293],[-0.287,0.263],[0.032,0.242],[0.161,0.46],[-0.831,0.622],[0.751,0.908],[0.162,0.48],[-0.679,0.441],[-0.858,0.561],[-0.035,0.334],[2.923,-0.912],[0.888,-0.331],[0.142,-0.471],[0.436,-0.327]],"v":[[7.617,6.737],[5.405,5.303],[2.273,-1.811],[0.953,-5.321],[-0.126,-5.585],[2.061,-10.424],[1.697,-10.787],[-1.339,-10.752],[-0.151,-12.157],[0.108,-12.607],[-1.82,-14.168],[-5.658,-12.584],[-5.13,-11.685],[-4.975,-11.773],[-7.322,-8.979],[-7.322,-8.08],[-6.448,-7.699],[-6.169,-5.563],[-6.796,-3.773],[-6.431,-3.132],[-4.977,-0.013],[-4.612,0.627],[-3.087,0.534],[-2.273,1.575],[-1.776,3.139],[-3.587,3.832],[-3.944,4.839],[-3.706,5.483],[-4.095,6.267],[-4.569,8.692],[-1.725,9.137],[-0.751,10.211],[-2.932,11.345],[-4.504,13.672],[-3.845,14.174],[4.958,11.414],[7.052,9.601],[7.007,8.252]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[339.645,205.238],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.087,0.313],[-0.109,0.739],[0.198,0.454],[0.126,0.146],[0.6,0.694],[0.192,-0.089],[0.044,-0.207],[1.586,-0.026],[-0.135,-0.324],[-0.107,-0.257],[0.802,-0.225],[-0.449,-0.184],[0.124,-0.043],[0.272,-0.124],[0.495,-0.459],[0.282,-1.285],[-0.354,0.007],[-0.242,-0.689],[0.074,-0.622],[0.626,-0.569],[0.22,-0.498],[-0.308,-0.835],[0.037,-0.666],[-0.389,-0.327],[-1.831,2.105],[-0.57,1.132],[-0.486,1.41],[-0.198,3.268],[-0.242,0.645]],"o":[[-0.19,-0.679],[0.08,-0.55],[0.034,-0.149],[-0.6,-0.694],[-0.151,-0.175],[-0.153,0.039],[-0.326,1.539],[-0.302,0.005],[0.107,0.256],[-0.802,0.224],[-0.537,0.15],[0.432,0.176],[-0.282,0.1],[-0.615,0.282],[-0.967,0.898],[-0.07,0.321],[0.59,-0.013],[0.215,0.614],[-0.096,0.8],[-0.375,0.342],[-0.399,0.903],[0.238,0.648],[-0.029,0.513],[1.833,1.544],[0.839,-0.965],[0.669,-1.33],[1.077,-3.117],[0.51,0.069],[0.115,-0.306]],"v":[[7.188,-7.389],[6.821,-9.273],[6.72,-10.762],[6.601,-11.221],[4.801,-13.302],[4.22,-13.403],[3.893,-13.044],[0.668,-10.359],[0.165,-9.7],[0.486,-8.931],[-1.92,-8.257],[-1.92,-7.253],[-2.797,-6.445],[-3.633,-6.13],[-5.307,-5.004],[-7.212,-1.642],[-6.709,-0.983],[-4.944,-0.354],[-5.135,1.964],[-5.799,4.381],[-6.799,5.357],[-6.326,8.008],[-6.231,9.67],[-5.675,10.857],[0.86,11.386],[2.795,8.037],[4.582,3.941],[5.979,-5.778],[7.168,-6.421]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[430.935,362.573],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.247,0.463],[-0.472,0.97],[0.165,0.183],[0.541,0.069],[-0.108,0.667],[0.21,0.14],[0.113,0.048],[1.376,0.269],[0.617,-0.741],[0.008,-0.007],[-0.009,-1.211],[-0.246,-0.337],[0.851,-0.459],[0.422,-0.321],[0.04,-0.418],[0.135,-0.61],[0.514,-0.511],[-0.516,-0.977],[-0.82,0.243],[-0.459,0.308],[-0.701,0.138],[-1.208,0.721],[-0.519,0.474],[-0.241,0.554]],"o":[[-0.449,-0.842],[0.107,-0.22],[-0.37,-0.409],[-0.373,-0.049],[0.039,-0.244],[-0.112,-0.075],[0.683,-0.857],[-0.963,-0.189],[-0.008,0.006],[-0.882,0.696],[0.004,0.419],[0.354,0.485],[-0.42,0.226],[-0.347,0.263],[-0.06,0.612],[-0.159,0.715],[-0.653,0.649],[0.428,0.811],[0.539,-0.16],[0.592,-0.398],[1.346,-0.265],[0.604,-0.36],[0.433,-0.394],[0.228,-0.524]],"v":[[6.137,0.421],[5.52,-2.363],[5.438,-2.994],[4.076,-3.645],[2.232,-4.278],[1.992,-4.866],[1.654,-5.049],[1.646,-7.301],[-1.057,-6.62],[-1.081,-6.603],[-2.855,-3.856],[-2.479,-2.71],[-2.248,-1.052],[-3.583,-0.716],[-4.104,0.383],[-4.164,2.202],[-5.219,4.022],[-6.13,6.466],[-3.787,7.247],[-2.331,6.43],[-0.427,5.638],[3.424,4.573],[5.098,3.287],[6.419,1.871]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[534.148,81.187],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.127,1.234],[0.374,0.489],[-0.194,0.717],[-0.172,0.224],[-0.052,0.21],[0.094,0.438],[-0.406,0.449],[-0.007,0.606],[0.972,0.399],[0.418,-0.253],[0.294,-0.195],[0.356,0.506],[0.205,-0.057],[0.137,-0.027],[1.034,-0.24],[0.045,-0.009],[0.017,-0.005],[0,0],[0.054,-0.723],[0.239,-0.497],[0.375,-0.323],[0.111,-0.822],[-0.497,-0.383],[-0.184,-0.391],[-0.011,-0.308],[-0.41,-0.377],[-0.298,-0.086],[-0.142,-0.359],[0.109,-0.17],[-0.387,0.011],[-0.252,0.098],[-0.272,-0.059],[-0.129,-0.195],[-0.224,-0.109],[-0.618,-0.037],[-0.808,0.035]],"o":[[0.065,-0.633],[-0.374,-0.492],[0.068,-0.253],[0.132,-0.171],[0.112,-0.444],[-0.116,-0.543],[0.339,-0.376],[0.013,-1.182],[-0.452,-0.185],[-0.194,0.118],[-0.18,-0.581],[-0.153,-0.218],[-0.099,-0.054],[-1.04,0.203],[-0.045,0.009],[-0.018,0.003],[-0.003,0.001],[-0.648,0.158],[-0.039,0.508],[-0.221,0.457],[-0.601,0.519],[-0.083,0.607],[0.319,0.246],[0.135,0.288],[0.018,0.523],[0.234,0.216],[0.292,0.083],[0.092,0.232],[-0.211,0.33],[0.269,-0.007],[0.25,-0.096],[0.275,0.059],[0.139,0.209],[0.574,0.277],[0.805,0.049],[1.088,-0.048]],"v":[[6.712,5.444],[6.117,3.775],[5.003,1.84],[5.758,1.073],[6.034,0.503],[5.958,-0.853],[5.999,-2.375],[6.733,-3.47],[4.147,-6.275],[2.862,-6.191],[2.012,-5.383],[1.214,-7.008],[0.621,-7.215],[0.266,-7.266],[-2.867,-6.659],[-3.003,-6.633],[-3.052,-6.617],[-3.058,-6.616],[-4.281,-5.413],[-4.353,-3.969],[-5.407,-2.866],[-6.693,-0.951],[-6.097,0.658],[-5.169,1.314],[-5.089,2.319],[-4.62,3.786],[-3.871,4.12],[-2.971,4.643],[-3.329,5.496],[-2.878,6.28],[-2.144,6.141],[-1.138,5.707],[-0.709,6.408],[-0.157,6.879],[1.781,7.138],[4.221,7.258]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[523.839,73.33],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.189,0.623],[-1.528,0.094],[-0.246,0.98],[0.197,0.387],[-1.283,-0.55],[0.254,-0.26],[0.059,-0.464],[-0.232,-0.165],[0.444,-0.29],[-0.435,-0.142]],"o":[[1.352,-0.708],[0.858,-0.053],[0.11,-0.44],[-0.371,-0.726],[-0.255,0.259],[-0.299,0.304],[-0.038,0.292],[0.098,0.069],[-0.381,0.25],[1.192,0.388]],"v":[[-0.86,2.302],[3.275,1.16],[5.47,-0.052],[5.227,-1.301],[-3.828,-2.375],[-4.592,-1.595],[-5.541,-0.395],[-5.211,0.302],[-4.532,0.869],[-4.407,1.821]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[520.131,64.573],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.09,1.236],[0.062,0.902],[0.37,0.85],[-0.175,0.619],[-0.233,0.499],[0.668,0.487],[0.975,0.061],[0.303,-0.168],[-0.098,-0.043],[-0.094,-0.357],[0.127,-0.312],[-0.104,-0.303],[-0.015,-0.072],[0.302,-0.226],[0.096,-0.676],[0.268,-0.647],[0.389,-0.587],[-0.426,-0.48],[-0.99,-0.811],[-0.395,-0.636],[-0.697,-0.143],[-1.017,-0.133],[-0.392,0.823],[0.334,0.426]],"o":[[-0.065,-0.902],[-0.065,-0.936],[-0.24,-0.551],[0.153,-0.538],[0.362,-0.776],[-0.747,-0.544],[-0.344,-0.021],[-0.126,0.069],[-0.462,-0.206],[-0.34,0.256],[-0.137,0.334],[0.031,0.091],[0.106,0.503],[-0.554,0.412],[-0.098,0.685],[-0.276,0.668],[-0.384,0.582],[0.886,0.998],[0.623,0.51],[0.396,0.638],[1.005,0.207],[0.661,0.087],[0.268,-0.562],[-0.714,-0.913]],"v":[[3.89,3.34],[3.888,0.631],[3.128,-1.957],[2.726,-3.8],[3.613,-5.203],[3.093,-7.162],[0.59,-8.538],[-0.403,-8.338],[-1.214,-7.404],[-1.998,-6.785],[-2.763,-5.934],[-2.678,-5.116],[-2.454,-4.877],[-3.141,-4.01],[-4.067,-2.406],[-4.222,-0.209],[-5.767,0.953],[-5.453,2.758],[-2.125,4.554],[-1.38,6.522],[0.469,7.564],[3.526,8.022],[5.883,7.736],[5.39,6.083]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[444.758,131.274],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.107,0.36],[-0.095,0.448],[-0.056,0.349],[0.07,0.298],[0.644,0.307],[0.492,-1.235],[-0.051,-0.1],[2.59,-0.86],[-0.147,-2.787],[0.998,-0.716],[0.03,-0.715],[0.567,-1.505],[1.109,-2.94],[-0.189,-0.103],[-1.628,0.322],[-0.503,0.732],[-0.403,0.831],[-0.253,0.731],[-0.321,0.89],[-0.797,0.301],[-0.379,0.544],[-0.695,0.553],[-0.819,0.355],[0,0],[-1.045,1.321],[-0.073,0.643]],"o":[[-0.121,-0.408],[0.067,-0.32],[0.049,-0.302],[-0.162,-0.688],[-1.285,-0.613],[-0.057,0.143],[-1.805,2.025],[-1.981,0.658],[-1.057,0.564],[-0.615,0.441],[-1.73,0.189],[-1.11,2.94],[-0.079,0.207],[1.451,0.789],[0.893,-0.177],[0.524,-0.762],[0.337,-0.696],[0.311,-0.899],[0.325,-0.901],[0.61,-0.231],[0.486,-0.697],[0.705,-0.561],[0,0],[1.489,-0.645],[0.4,-0.506],[0.043,-0.371]],"v":[[13.869,-8.561],[13.43,-9.784],[13.806,-10.728],[13.773,-11.642],[12.513,-13.255],[9.295,-11.836],[9.3,-11.47],[2.617,-7.027],[-2.987,-3.341],[-6.341,-2.129],[-7.436,-0.345],[-10.588,3.388],[-13.916,12.208],[-13.676,12.797],[-8.95,13.547],[-7.317,12.379],[-5.925,9.984],[-5.036,7.84],[-4.279,5.09],[-2.285,3.758],[-0.773,2.673],[0.582,0.645],[2.994,-0.591],[8.919,-3.158],[13.207,-5.682],[13.953,-7.445]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[457.984,108.6],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.175,-0.733],[-0.09,-0.657],[-0.006,-1.584],[0.138,-0.811],[-0.073,-0.62],[-0.768,0.298],[-0.111,-0.032],[-0.119,-0.101],[-0.389,0.151],[0.211,0.752],[-0.772,1.137],[-0.164,-0.259],[-0.165,0.408],[-1.408,3.904],[0.351,0.733],[0.036,0.624],[0.129,0.267],[-0.065,-1.029],[-0.011,-0.896],[0.586,-0.311],[0.241,-0.457],[-0.529,-0.871]],"o":[[-0.155,0.65],[0.211,1.554],[0.003,0.823],[-0.103,0.603],[0.111,0.936],[0.141,-0.054],[0.127,0.036],[0.304,0.255],[1.161,-0.451],[-0.361,-1.289],[0.164,0.259],[0.258,0.407],[1.601,-3.97],[0.264,-0.733],[-0.268,-0.56],[-0.017,-0.291],[-0.498,-1.031],[-0.506,0.75],[0.007,0.646],[-0.435,0.23],[-0.599,1.14],[0.451,0.741]],"v":[[-2.953,-0.743],[-2.991,1.234],[-2.353,5.844],[-2.553,8.298],[-2.885,10.21],[-1.079,11.062],[-0.527,10.818],[-0.077,11.319],[1.054,11.587],[1.049,8.417],[1.173,4.461],[1.665,5.238],[2.619,5.113],[1.141,-6.224],[1.212,-8.301],[0.792,-9.857],[0.612,-10.708],[-1.448,-10.479],[-1.809,-8.013],[-2.517,-6.699],[-3.621,-5.829],[-2.615,-2.967]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[610.497,217.828],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.967,-0.321],[0.455,-0.976],[-0.208,-0.139],[2.22,-1.731],[1.436,-0.567],[-0.105,-1.11],[1.663,-1.444],[1.111,-0.458],[-0.197,-0.957],[-0.267,-0.296],[0.155,-0.714],[-0.725,-0.572],[-0.625,0.478],[-0.468,1.007],[-0.851,-0.178],[-0.562,0.145],[-0.515,0.589],[-0.393,0.078],[-0.559,0.175],[-0.209,0.286],[-0.194,0.151],[-0.404,-0.09],[-1.126,1.57],[-0.216,1.219],[-0.856,1.145],[-0.05,1.537],[0.511,0.981]],"o":[[-1.085,0.361],[-0.134,0.289],[-0.52,2.748],[-1.235,0.963],[-1.014,0.4],[-1.811,0.753],[-0.861,0.749],[-0.744,0.306],[0.083,0.403],[0.498,0.553],[-0.171,0.789],[0.654,0.516],[0.954,-0.729],[0.353,-0.759],[0.546,0.114],[0.798,-0.205],[0.249,-0.284],[0.531,-0.104],[0.348,-0.109],[0.141,-0.194],[0.348,-0.27],[1.778,0.397],[0.757,-1.057],[0.251,-1.412],[0.906,-1.214],[0.035,-1.074],[-0.456,-0.876]],"v":[[9.402,-12.252],[7.17,-9.786],[7.38,-9.089],[3.13,-2.121],[-0.885,-0.107],[-2.733,2.229],[-8.443,3.173],[-10.755,5.475],[-12.108,7.136],[-11.467,8.132],[-11.086,9.783],[-10.684,12.057],[-8.451,11.932],[-7.017,8.968],[-5.319,8.091],[-3.689,8.226],[-1.866,6.76],[-0.932,6.014],[0.656,6.143],[1.451,5.493],[1.884,4.88],[3.104,4.857],[8.187,3.341],[9.031,-0.201],[10.742,-4.032],[12.248,-7.868],[11.794,-11.204]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[596.836,253.9],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":2,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.056,0.541],[0.297,0.712],[0.537,0.109],[0.344,0.124],[0.367,0.221],[0.806,0.486],[-0.198,-0.401],[0.021,-0.012],[0.04,-0.207],[-0.203,-0.142],[-0.018,-0.013],[-0.043,-0.016],[0.043,-0.183],[0.468,-0.476],[0.647,-0.828],[-0.068,-0.419],[0.015,-0.251],[0.208,-0.267],[-0.889,0.03],[-0.278,0.355],[-0.153,0.201],[-0.554,-0.251],[-0.828,0.612],[-0.423,-0.103],[-0.216,-0.039],[-0.402,0.352],[-0.559,0.524]],"o":[[-0.079,-0.765],[-0.208,-0.497],[-0.353,-0.071],[-0.404,-0.145],[-0.807,-0.486],[-0.48,-0.29],[-0.023,0.009],[-0.182,0.105],[-0.047,0.246],[0.018,0.013],[0.044,0.03],[0.059,0.413],[-0.153,0.65],[-0.748,0.759],[-0.267,0.342],[0.043,0.257],[-0.021,0.38],[-0.57,0.733],[0.474,-0.016],[0.157,-0.202],[0.413,-0.543],[0.975,0.442],[0.307,-0.227],[0.203,0.049],[0.567,0.101],[0.578,-0.504],[0.368,-0.345]],"v":[[5.984,0.246],[5.193,-2.155],[4.122,-3.065],[3.073,-3.246],[1.923,-3.879],[-0.495,-5.337],[-1.219,-4.65],[-1.286,-4.618],[-1.615,-4.181],[-1.375,-3.594],[-1.32,-3.555],[-1.19,-3.49],[-1.312,-2.083],[-2.271,-0.344],[-4.927,1.266],[-5.182,2.421],[-4.95,3.234],[-5.469,3.947],[-4.531,5.598],[-3.416,4.924],[-3.01,4.28],[-1.747,4.044],[0.711,3.664],[1.669,3.297],[2.255,3.544],[3.677,2.966],[5.373,1.404]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[608.624,237.005],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.795,-0.646],[0.058,-0.076],[0.01,-0.008],[1.409,-1.289],[0.568,-0.628],[0.141,-0.288],[0.464,-0.381],[0.459,-0.205],[0.612,-0.274],[1.011,-0.705],[-0.329,-0.612],[-0.778,0.091],[-0.491,-0.142],[-0.434,-0.352],[-0.811,0.343],[-0.269,0.112],[-0.427,0.019],[-0.224,0.667],[-0.005,0.406],[-0.894,0.101],[-0.346,0.087],[-0.132,0.298],[-0.3,0.439],[-0.303,-0.024],[-0.309,0.278],[0.13,0.811],[-0.487,0.542],[-0.076,0.501]],"o":[[-0.109,0.039],[-0.01,0.007],[-1.455,1.251],[-0.622,0.569],[-0.215,0.238],[-0.252,0.514],[-0.388,0.32],[-0.611,0.274],[-1.125,0.503],[-0.551,0.384],[0.407,0.758],[0.489,-0.058],[0.554,0.161],[0.607,0.493],[0.289,-0.123],[0.38,-0.157],[0.826,-0.037],[0.13,-0.385],[0.006,-0.556],[0.312,-0.035],[0.322,-0.081],[0.238,-0.533],[0.22,-0.321],[0.397,0.032],[0.719,-0.649],[-0.123,-0.771],[0.339,-0.378],[0.296,-1.927]],"v":[[4.975,-7.875],[4.729,-7.697],[4.699,-7.676],[2.108,-2.955],[0.17,-1.329],[-0.379,-0.541],[-1.043,0.979],[-2.553,1.667],[-4.387,2.489],[-7.891,4.097],[-8.351,5.748],[-6.255,6.591],[-4.778,6.51],[-3.368,7.486],[-1.182,8.178],[-0.437,7.613],[0.588,7.845],[2.182,6.067],[2.378,4.864],[2.877,2.928],[3.836,3.047],[4.532,2.45],[4.686,0.606],[5.794,0.583],[6.889,0.292],[7.153,-2.272],[7.756,-3.82],[8.384,-5.156]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[659.433,415.654],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":2,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.242,0.116],[0.584,0.033],[0.637,-0.128],[0.935,0.724],[0.169,0.124],[0.179,0.422],[0.343,0.325],[0.966,0.39],[0.045,0.005],[0.129,-0.006],[0,-0.292],[0,0],[-0.073,-0.092],[-0.024,-0.039],[-0.729,-1.174],[-0.157,-0.6],[-0.059,-0.59],[-0.202,-0.395],[0.014,-0.207],[0.303,-0.049],[0.08,-0.77],[-0.206,-0.038],[-0.273,-0.356],[-0.245,-0.302],[0.289,-1.111],[-0.388,0.111],[-0.469,0.819],[-0.061,0.438],[-0.055,0.213],[-0.537,0.13],[0.002,0.907],[0.036,0.162],[-0.167,0.324],[-0.398,0.582]],"o":[[-0.525,-0.251],[-0.674,-0.039],[-1.437,0.287],[-0.169,-0.13],[-0.386,-0.283],[-0.184,-0.434],[-0.767,-0.727],[-0.05,-0.021],[-0.093,-0.084],[-0.283,0.013],[0,0],[0,0.117],[0.013,0.037],[0.729,1.173],[0.324,0.522],[0.152,0.581],[0.045,0.448],[0.098,0.193],[-0.028,0.428],[-0.714,0.116],[-0.022,0.208],[0.429,0.079],[0.231,0.299],[0.637,0.782],[-0.098,0.379],[0.899,-0.256],[0.22,-0.385],[0.03,-0.219],[0.17,-0.664],[0.743,-0.18],[0,-0.173],[-0.083,-0.371],[0.323,-0.629],[0.15,-0.22]],"v":[[5.779,-1.386],[4.132,-1.843],[2.305,-1.519],[-0.357,-4.241],[-0.897,-4.573],[-1.582,-5.578],[-2.386,-6.726],[-5.109,-8.261],[-5.252,-8.297],[-5.593,-8.428],[-6.115,-7.907],[-6.115,-7.56],[-5.996,-7.238],[-5.941,-7.124],[-3.753,-3.604],[-2.891,-1.952],[-2.805,-0.177],[-2.405,1.033],[-2.046,1.76],[-2.773,2.141],[-4.111,3.322],[-3.728,3.824],[-2.61,4.314],[-2.105,5.29],[-1.217,7.683],[-0.575,8.323],[1.574,6.687],[1.994,5.446],[2.047,4.763],[3.026,3.953],[4.719,2.433],[4.605,1.952],[4.732,1.131],[5.966,-0.673]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[670.773,401.994],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":2,"cix":2,"bm":0,"ix":36,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.067,-0.404],[0.511,0.803],[0.333,0.3],[0.058,0.068],[0.631,-0.517],[-0.37,-0.923],[-0.845,-1.255],[-1.066,0.368],[-0.456,1.088],[0.429,0.987]],"o":[[-0.748,0.283],[-0.26,-0.41],[-0.02,-0.072],[-0.539,-0.632],[-0.981,0.805],[0.562,1.398],[0.784,1.165],[1.079,-0.372],[0.417,-0.997],[-0.548,-1.263]],"v":[[1.442,-2.28],[-0.615,-2.547],[-1.321,-3.622],[-1.435,-3.836],[-3.578,-3.965],[-3.425,-0.877],[-1.443,3.316],[1.693,3.398],[4.141,1.37],[4.096,-1.797]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[615.308,411.717],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":37,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.496,1.093],[1.894,1.693],[0.981,0.524],[0.339,1.465],[0.873,1.106],[0.994,0.944],[0.636,1.362],[0.38,1.672],[0.254,-0.1],[-0.01,-1.51],[0.767,-2.379],[2.284,2.487],[0.08,0.875],[0.303,0.309],[-0.141,0.087],[0.372,0.17],[0.911,0.416],[0.77,0.123],[0.098,-1.135],[-0.09,-0.083],[0.052,-0.089],[1.075,-0.559],[0.065,-1.371],[0.725,-0.594],[0.527,0.644],[0.475,0.429],[0.501,-0.122],[1.722,-2.083],[2.912,-1.447],[3.789,-0.673],[-0.362,-0.212],[0.398,-1.422],[-0.216,-1.269],[-1.072,-2.676],[-0.099,-1.453],[0.167,-0.705],[0.112,-0.615],[-0.601,-0.399],[0.064,-0.625],[-0.3,0.08],[-1.473,0.394],[-0.708,0.176],[-0.981,-0.187],[-0.553,0.869],[-0.256,0.41],[-0.675,0.125],[-1.139,0.513],[-1.42,0.454],[-2.62,-0.923],[-0.725,-2.687],[-0.283,0.264],[-0.979,-0.047],[0.33,-0.645],[-0.177,-0.162],[-0.935,-1.153],[-0.298,-0.715],[-0.36,-0.476],[-1.606,-1.245],[-0.235,0.106],[-0.533,0.464],[-1.634,0.452],[-1.25,0.641],[0.374,1.011],[-1.759,2.269],[-0.44,1.248],[0.14,1.397],[-0.661,1.488],[0.141,1.244]],"o":[[-2.117,-1.547],[-0.84,-0.751],[-1.33,-0.711],[-0.315,-1.359],[-0.853,-1.079],[-1.082,-1.03],[-0.729,-1.563],[-0.058,-0.254],[-1.809,0.713],[0.016,2.505],[-3.385,-0.055],[0.548,-0.638],[-0.041,-0.447],[0.141,-0.086],[0.306,-0.188],[-0.911,-0.416],[-0.701,-0.32],[-0.988,-0.158],[-0.014,0.166],[-0.052,0.089],[-1.135,-0.337],[-1.09,0.568],[-0.039,0.813],[-0.644,0.529],[-0.391,-0.478],[-0.397,-0.36],[-2.884,0.703],[-2.063,2.496],[-3.476,1.727],[-0.458,0.081],[1.718,1.009],[-0.35,1.249],[0.492,2.881],[0.539,1.345],[0.049,0.721],[-0.146,0.615],[-0.138,0.754],[0.426,0.282],[-0.035,0.345],[1.473,-0.394],[0.705,-0.188],[0.989,-0.247],[0.999,0.189],[0.26,-0.408],[0.375,-0.6],[1.208,-0.224],[1.353,-0.609],[2.607,-0.834],[2.592,0.913],[0.105,0.388],[0.661,-0.62],[1.212,0.058],[-0.102,0.2],[1.096,1.004],[0.484,0.598],[0.226,0.543],[1.311,1.736],[0.204,0.158],[0.655,-0.295],[1.445,1.362],[1.35,-0.373],[1.069,-0.547],[-1.126,-3.046],[0.805,-1.038],[0.474,-1.346],[-0.159,-1.576],[0.485,-1.094],[-0.237,-2.088]],"v":[[34.009,-3.227],[30,-9.315],[27.124,-11.002],[24.838,-14.072],[23.231,-17.695],[20.325,-20.604],[17.682,-24.099],[16.195,-29.039],[15.554,-29.403],[14.332,-24.824],[13.172,-17.467],[4.306,-21.458],[5.26,-23.704],[4.726,-24.885],[5.15,-25.145],[5.15,-26.044],[2.418,-27.293],[0.249,-28.135],[-1.91,-26.887],[-1.78,-26.513],[-1.938,-26.247],[-5.271,-25.711],[-7.747,-23.062],[-8.305,-20.908],[-10.458,-21.143],[-11.295,-22.743],[-12.743,-23.017],[-18.918,-16.765],[-26.391,-10.677],[-37.544,-7.603],[-37.669,-6.652],[-37.337,-2.707],[-37.449,1.124],[-34.344,9.193],[-33.242,13.411],[-33.391,15.566],[-34.003,17.356],[-33.115,19.082],[-31.526,20.317],[-30.865,20.819],[-26.446,19.638],[-24.331,19.074],[-21.638,19.11],[-19.271,18.162],[-18.607,16.875],[-16.995,15.93],[-13.549,15.059],[-9.49,13.294],[-1.38,13.126],[4.135,18.757],[5.009,18.987],[7.784,16.915],[8,19.254],[8.082,19.885],[11.068,23.176],[12.315,25.081],[13.047,26.65],[18.44,29.198],[19.072,29.279],[20.845,28.14],[26.733,28.094],[30.771,26.663],[31.448,24.122],[34.267,16.339],[36.271,12.97],[36.526,8.829],[36.891,4.271],[37.891,0.847]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[592.114,375.078],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":38,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.884,0.354],[0.041,-0.747],[-0.765,-0.256],[-0.099,0.196],[-0.52,-0.419],[-0.894,-0.285],[0.41,-2.53],[-0.429,0.218],[-0.966,-0.408],[-0.55,0.147],[-0.544,0.242],[-0.872,0.118],[-0.658,0.275],[-0.85,-0.612],[-1.559,-0.839],[-1.595,0.517],[0.351,0.268],[0.873,0.963],[0.533,0.306],[-0.388,0.287],[0.375,0.204],[1.284,0.699],[0.43,0.367],[0.537,0.031],[0.172,0.425],[0.962,0.336],[1.279,0.448],[0.006,0.01],[1.085,0.309],[1.117,-0.185],[0.013,0.004],[1.056,-0.66],[0.597,-0.917],[0.565,-0.151],[0.198,0.675],[0.984,0.075],[0.573,0.856],[0.86,-0.421],[0.004,-0.151],[-0.068,-0.242]],"o":[[-0.098,0.8],[-0.043,0.776],[0.206,0.068],[0.611,-1.213],[0.737,0.593],[1.738,0.553],[-0.073,0.449],[1.106,-0.563],[0.511,0.216],[0.577,-0.153],[0.328,0.786],[0.722,-0.098],[1.01,-0.422],[1.414,1.018],[1.445,0.777],[0.461,-0.149],[-1.034,-0.789],[-0.453,-0.501],[0.343,-0.329],[0.298,-0.219],[-1.283,-0.699],[0.018,-0.528],[-0.426,-0.364],[0.111,-0.399],[-0.412,-1.019],[-1.277,-0.447],[-0.006,-0.009],[-0.605,-0.896],[-1.109,-0.316],[-0.012,-0.004],[-1.12,-0.355],[-0.971,0.606],[-0.311,0.478],[-0.802,0.213],[-0.322,-1.099],[-1.395,-0.108],[-0.705,-1.055],[-0.183,0.09],[-0.158,0.109],[0.291,1.031]],"v":[[-15.976,-6.479],[-16.912,-3.945],[-15.893,-2.26],[-15.304,-2.5],[-12.661,-1.425],[-10.158,-0.193],[-5.351,3.629],[-4.585,4.217],[-1.021,5.608],[0.607,5.805],[2.224,4.722],[4.399,5.772],[6.389,4.959],[9.148,5.476],[13.241,8.646],[17.889,9.267],[18.014,8.315],[15.147,5.682],[13.754,4.385],[14.844,3.459],[14.844,2.56],[10.993,0.463],[10.355,-0.921],[8.87,-1.446],[8.781,-2.712],[6.309,-4.488],[2.475,-5.836],[2.456,-5.862],[0.178,-7.798],[-3.23,-7.759],[-3.267,-7.771],[-6.713,-7.685],[-8.691,-5.052],[-9.979,-4.044],[-11.15,-4.938],[-13.337,-6.152],[-14.283,-8.729],[-17.844,-8.486],[-18.109,-8.099],[-18.297,-7.559]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[606.222,336.154],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":2,"cix":2,"bm":0,"ix":39,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.471,0.671],[0.209,0.223],[0.628,0.266],[0.347,0.961],[0.276,-0.357],[0.447,0.06],[0.314,0.279],[0.421,0.04],[0.509,-0.14],[0.485,0.329],[0.474,0.012],[0.281,-0.481],[0.055,-0.078],[-1.197,0.016],[-0.255,0.066],[-0.368,-0.134],[-0.798,-0.09],[-0.858,-0.169],[-0.812,-0.26]],"o":[[0.318,-0.145],[-0.46,-0.488],[-0.793,-0.334],[-0.163,-0.451],[-0.353,0.457],[-0.448,-0.06],[-0.26,-0.231],[-0.589,-0.056],[-0.673,0.185],[-0.382,-0.26],[-0.613,-0.014],[-0.071,0.037],[-0.647,0.922],[0.283,-0.004],[0.385,-0.098],[0.758,0.275],[0.867,0.098],[0.84,0.166],[1.496,0.481]],"v":[[7.549,2.03],[7.655,1.212],[6.073,-0.039],[3.928,-0.934],[2.974,-1.059],[1.107,-1.263],[-0.299,-1.337],[-1.041,-1.895],[-2.425,-1.271],[-4.283,-2.185],[-5.584,-2.687],[-7.028,-1.932],[-7.22,-1.763],[-6.116,0.465],[-5.391,0.255],[-4.334,0.466],[-1.976,0.947],[0.625,1.256],[3.075,1.986]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[549.404,339.971],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":2,"cix":2,"bm":0,"ix":40,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.49,-0.165],[0.207,-0.662],[-0.09,-0.357],[-0.428,-0.078],[-0.167,-0.713],[-0.197,-0.217],[-0.312,-0.111],[-0.727,-0.017],[-0.546,-0.351],[-0.435,-0.3],[-0.493,0.251],[-0.236,0.525],[-0.798,0.374],[-0.124,1.415],[-0.578,0.593],[-0.365,0.441],[0.625,0.851],[-0.016,1.372],[-0.561,0.336],[-0.213,0.163],[0.212,0.479],[0.526,0.294],[0.486,0.864],[0.224,-0.298],[2.247,-1.968],[0.915,-0.05],[0.513,-0.251],[-0.255,-0.79],[0.748,-0.678],[0.002,-0.381],[0.333,-0.106]],"o":[[0.601,0.202],[-0.1,0.319],[0.119,0.468],[0.167,0.713],[0.063,0.27],[0.225,0.248],[0.685,0.243],[0.683,0.016],[0.434,0.279],[0.456,0.314],[0.528,-0.269],[0.348,-0.772],[1.171,-0.549],[0.066,-0.756],[0.397,-0.406],[0.785,-0.951],[-0.947,-1.29],[0.007,-0.569],[0.222,-0.133],[0.411,-0.315],[-0.262,-0.591],[-0.87,-0.487],[-0.209,-0.372],[-1.797,2.384],[-0.659,0.578],[-0.552,0.03],[-0.769,0.376],[-0.933,-0.067],[-0.289,0.262],[-0.002,0.284],[-0.501,0.16]],"v":[[-9.289,2.867],[-8.431,3.957],[-8.569,4.824],[-7.65,5.658],[-7.149,7.798],[-6.867,8.656],[-5.831,9.142],[-3.681,9.527],[-1.071,9.406],[-0.01,10.556],[1.489,10.652],[2.569,9.368],[3.938,7.706],[6.114,5.275],[6.616,3.16],[7.893,2.046],[7.544,-0.616],[8.152,-4.384],[8.528,-5.704],[9.22,-6.027],[9.578,-7.35],[8.151,-8.49],[6.135,-10.531],[5.234,-10.531],[-0.845,-3.973],[-2.961,-2.941],[-4.602,-2.706],[-5.547,-0.783],[-8.877,-0.59],[-9.275,0.432],[-9.289,1.863]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[555.846,323.226],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":2,"cix":2,"bm":0,"ix":41,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.052,0.68],[0.086,0.647],[0.371,0.362],[0,0],[1.106,1.079],[2.267,2.107],[2.641,-0.053],[-0.508,-0.14],[-1.123,-0.996],[-0.547,-0.73],[-0.119,-0.381],[-0.135,-0.518],[-0.708,-0.701],[-0.17,-0.203],[0.045,-0.156],[-0.362,-0.583],[0.047,-1.857],[-0.017,-0.052],[0.149,-0.157],[-0.372,-0.129],[-0.312,-0.767],[-0.44,-0.226],[-0.505,0.141],[-0.407,0.188],[-0.426,-0.556],[-0.247,0.185],[0.084,0.996]],"o":[[-0.052,-0.682],[-0.073,-0.55],[0,0],[-1.105,-1.079],[-2.216,-2.161],[-1.823,-1.696],[-0.613,0.013],[0.149,1.533],[0.677,0.601],[0.239,0.319],[0.16,0.516],[0.268,1.028],[0.188,0.187],[-0.048,0.133],[-0.206,0.706],[0.934,1.508],[-0.001,0.065],[-0.133,0.167],[-0.281,0.297],[0.786,0.271],[0.181,0.445],[0.511,0.262],[0.437,0.088],[0.412,-0.19],[0.156,0.203],[0.817,-0.612],[-0.057,-0.68]],"v":[[9.546,6.371],[9.888,4.454],[8.945,3.18],[7.226,1.503],[3.909,-1.734],[-2.755,-8.21],[-9.318,-11.664],[-9.476,-10.643],[-7.062,-6.995],[-5.109,-5.078],[-4.544,-4.026],[-4.331,-2.448],[-2.17,-0.263],[-1.635,0.323],[-1.786,0.75],[-1.24,2.526],[1.153,7.633],[1.179,7.805],[0.758,8.292],[0.989,9.164],[2.472,10.447],[3.318,11.454],[4.857,11.568],[6.145,11.354],[8.201,10.706],[8.914,10.893],[9.899,8.383]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[530.82,326.721],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":2,"cix":2,"bm":0,"ix":42,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.253,0.413],[0.24,-0.154],[0.045,-0.081],[0.018,-0.017],[0.017,-0.016],[-0.066,0.045],[-0.003,0.003],[0.006,-0.004],[0.019,-0.013],[0.047,-0.024],[-0.143,-0.229],[-0.392,0.265]],"o":[[-0.142,-0.233],[-0.081,0.052],[-0.017,0.019],[-0.017,0.017],[-0.014,0.012],[0.007,-0.004],[-0.011,0.008],[-0.019,0.013],[-0.045,0.028],[-0.246,0.126],[0.246,0.393],[0.408,-0.276]],"v":[[0.664,-0.589],[-0.051,-0.776],[-0.241,-0.571],[-0.292,-0.515],[-0.342,-0.466],[-0.371,-0.439],[-0.357,-0.449],[-0.389,-0.426],[-0.448,-0.387],[-0.586,-0.309],[-0.773,0.404],[0.414,0.665]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[346.977,248.635],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":2,"cix":2,"bm":0,"ix":43,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.282,-0.013],[0,-0.292],[0,0],[-0.282,0.013],[0,0.291],[0,0]],"o":[[-0.283,0.013],[0,0],[0,0.272],[0.283,-0.013],[0,0],[0,-0.273]],"v":[[0,-0.564],[-0.522,-0.043],[-0.522,0.044],[0,0.564],[0.522,0.044],[0.522,-0.043]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[352.615,245.64],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 44","np":2,"cix":2,"bm":0,"ix":44,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.245,0.071],[0.274,0.079],[0.108,-0.168],[0.083,-0.07],[0.195,-0.271],[-0.376,0.031],[-0.113,-0.181],[-0.267,0.206],[-0.204,0.501]],"o":[[-0.274,-0.079],[-0.25,-0.073],[-0.088,0.014],[-0.257,0.214],[-0.226,0.31],[0.204,-0.017],[0.195,0.313],[0.432,-0.334],[0.108,-0.264]],"v":[[1.026,-0.902],[0.204,-1.14],[-0.346,-0.938],[-0.607,-0.818],[-1.272,-0.088],[-0.822,0.695],[-0.352,0.899],[0.467,1.005],[1.389,-0.261]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[350.018,246.526],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":2,"cix":2,"bm":0,"ix":45,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.394,0.261],[-0.147,0.63],[0.265,0.075],[0.18,0.024],[1.476,-0.41],[-0.039,-0.237],[0.015,-0.04],[-0.486,-0.12],[-0.443,-0.151],[-0.413,-0.169],[-0.936,-0.085]],"o":[[-0.541,-0.358],[0.064,-0.275],[-0.082,-0.125],[-1.52,-0.202],[-0.298,0.082],[-0.021,0.035],[-0.213,0.544],[0.45,0.112],[0.421,0.144],[0.872,0.357],[0.553,0.051]],"v":[[3.049,0.82],[2.427,-0.755],[2.068,-1.394],[1.676,-1.64],[-2.815,-1.319],[-3.174,-0.743],[-3.229,-0.631],[-2.516,0.378],[-1.154,0.6],[0.074,1.161],[2.786,1.79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[369.73,251.105],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":2,"cix":2,"bm":0,"ix":46,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.138,1.285],[0.563,0.222],[-0.004,-0.412],[0.016,-0.005],[0.002,0.002],[0.182,-0.094],[0.059,-0.218],[-0.269,-0.558],[0.156,-0.553],[0.028,-0.39],[-0.716,0.655]],"o":[[-0.058,-0.542],[-0.304,-0.12],[-0.017,0.003],[-0.002,-0.002],[-0.146,-0.167],[-0.22,0.016],[-0.166,0.612],[0.233,0.485],[-0.104,0.368],[-0.086,1.199],[1.062,-0.972]],"v":[[1.475,-1.725],[0.69,-3.079],[-0.533,-2.68],[-0.582,-2.666],[-0.586,-2.671],[-1.13,-2.75],[-1.611,-2.371],[-1.362,-0.67],[-1.047,0.794],[-1.444,1.846],[0.715,2.544]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[361.168,245.557],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 47","np":2,"cix":2,"bm":0,"ix":47,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.012,0.062],[0.398,-0.293],[0.308,-0.226],[0.118,-0.294],[-0.155,-0.233],[-0.02,-0.397],[-0.339,0.099],[-0.186,0.498],[-0.101,0.622]],"o":[[0.036,-0.395],[-0.309,0.226],[-0.242,0.178],[-0.114,0.284],[0.216,0.322],[0.016,0.332],[0.515,-0.148],[0.226,-0.605],[0.012,-0.072]],"v":[[1.248,-1.185],[0.501,-1.697],[-0.424,-1.018],[-1.18,-0.345],[-1.025,0.405],[-0.649,1.389],[0.011,1.892],[1.068,0.875],[1.252,-0.986]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[360.843,240.13],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 48","np":2,"cix":2,"bm":0,"ix":48,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.266,0.824],[0.822,-0.206],[2.452,-0.635],[1.147,-0.025],[0.433,0.351],[0.424,0.221],[0.097,0.731],[0.189,0.478],[0.799,0.459],[0.933,0.955],[0.793,0.877],[0.249,1.481],[0.392,0.433],[0.231,0.183],[0.047,0.618],[1.003,0.88],[-0.213,0.993],[0.142,0.68],[0.762,1.147],[0.64,1.481],[0.323,0.807],[0.15,0.396],[-0.041,0.018],[-0.049,0.405],[0.684,0.874],[0.376,0.406],[0.457,-0.04],[0.487,-0.32],[0.561,-0.225],[0.619,0.353],[0.697,-0.015],[1.572,0.318],[1.649,0.472],[0.546,-0.312],[0.226,-0.265],[0.102,-0.079],[0.337,0.18],[-0.009,-1.346],[-0.116,-0.295],[0.089,-0.247],[0.322,0.156],[0.46,0.087],[0.761,0.002],[0.626,0.775],[1.325,0.714],[1.387,0.822],[0.308,0.116],[0.368,0.22],[-0.384,0.212],[-0.175,0.31],[0.241,0.152],[-0.21,0.386],[-0.232,0.233],[0.062,0.448],[0.33,0.147],[0.07,0.065],[0.08,0.201],[0.918,-0.008],[0.67,-0.169],[0.88,-0.077],[3.008,-0.665],[1.144,-0.642],[0.455,-0.415],[0.906,-0.092],[0.075,-0.159],[1.945,1.39],[0.023,-0.357],[1.816,-1.392],[0.859,-0.784],[-0.31,-0.852],[0.083,-0.41],[0.186,-0.203],[0.092,-0.71],[-0.068,-0.365],[0.562,-0.282],[0.712,-0.753],[0.522,-0.732],[0.69,-0.784],[0.946,-1.638],[-0.827,-1.762],[-0.248,-0.15],[-0.328,-0.286],[-0.3,-0.926],[-0.283,-0.34],[0.4,-0.849],[0.842,-0.831],[-0.054,-0.974],[-0.45,-0.323],[-0.274,-0.19],[-0.502,-1.185],[-0.308,-0.25],[-0.285,-0.503],[-0.174,-0.397],[-0.345,-0.426],[-0.937,-1.071],[-2.108,-1.229],[-2.122,0.979],[-0.294,0.089],[-0.341,-0.24],[-0.506,-0.041],[-1.204,0.061],[-1.163,0.375],[-1.117,0.426],[-1.203,-0.008],[-0.511,-0.228],[-0.253,-0.663],[-1.622,0.466],[-0.67,0.005],[-0.472,-0.74],[0.102,-0.731],[0.274,-0.516],[-0.19,-0.389],[0.058,-0.44],[0.161,-0.349],[-0.204,-0.707],[-0.054,-0.083],[-0.008,-0.012],[-0.112,-0.141],[-0.028,-0.024],[-1.521,-2.416],[-0.227,-1.525],[-0.234,-0.597],[-0.362,-0.479],[-0.066,-0.629],[-0.216,-0.7],[0.918,-1.44],[1.027,-1.264],[-0.8,-1.084],[-0.051,-1.711],[-0.711,-1.433],[-0.092,-0.166],[-0.362,-0.661],[0.231,-0.859],[0.006,-0.58],[-0.284,-0.466],[-0.101,-0.724],[-0.092,-0.653],[-0.993,-0.855],[-0.616,-1.311],[-0.343,-0.732],[0.285,-0.925],[-0.016,-0.57],[-0.336,-0.409],[-1.159,-0.503],[-1.036,0.449],[-0.602,0.244],[-0.84,0.016],[-1.317,0.572],[-1.037,0.893],[-1.105,1.062],[-0.939,1.046],[0.74,2.544],[-0.184,0.374],[-0.328,0.156],[-0.434,0.444],[-0.255,0.569],[-0.738,0.546],[0.309,1.348],[0.09,0.867],[-0.19,0.928],[-0.077,0.073],[-1.349,0.758],[-0.997,0.719],[-0.479,1.132],[-0.828,1.091],[0.385,1.305],[0.708,1.165],[0.172,1.54],[-0.084,1.471],[-0.637,0.533],[-0.265,0.635],[-1.832,-0.244],[-0.074,0.143],[-0.05,0.078],[-1.242,1.192],[-0.298,0.651],[-0.75,0.727],[-0.836,0.329],[-0.714,0.585],[-1.023,1.705],[-0.381,0.994],[-0.21,1.083]],"o":[[-0.282,-0.874],[-2.457,0.617],[-1.105,0.287],[-0.526,0.012],[-0.355,-0.287],[-0.537,-0.28],[-0.064,-0.483],[-0.348,-0.886],[-1.146,-0.656],[-0.825,-0.845],[-0.367,-1.459],[-0.095,-0.564],[-0.201,-0.221],[-0.517,-0.407],[-0.109,-1.421],[-0.711,-0.624],[0.139,-0.652],[-0.29,-1.394],[-0.894,-1.346],[-0.345,-0.798],[-0.143,-0.358],[0.038,-0.012],[0.38,-0.171],[0.153,-1.27],[-0.319,-0.407],[-0.332,-0.36],[-0.58,0.051],[-0.506,0.332],[-0.629,-0.32],[-0.612,-0.348],[-1.572,0.035],[-1.676,-0.34],[-0.592,-0.17],[-0.308,0.175],[-0.079,0.092],[-0.406,0.31],[-1.177,-0.631],[0.002,0.319],[0.105,0.266],[-0.215,0.6],[-0.419,-0.204],[-0.76,-0.143],[-1.127,-0.003],[-1.032,-1.277],[-1.422,-0.766],[-0.284,-0.168],[-0.418,-0.158],[-0.716,-0.428],[0.31,-0.171],[0.142,-0.252],[-0.354,-0.225],[0.159,-0.291],[0.306,-0.309],[-0.05,-0.357],[-0.098,-0.044],[-0.164,-0.153],[-0.358,-0.897],[-0.698,0.006],[-0.857,0.216],[-3.048,0.266],[-1.271,0.281],[-0.548,0.307],[-0.673,0.614],[-0.218,0.022],[-2.253,0.752],[-0.347,-0.247],[-0.176,2.644],[-0.924,0.708],[-0.583,0.532],[0.131,0.36],[-0.058,0.29],[-0.463,0.506],[-0.049,0.374],[0.141,0.752],[-0.907,0.456],[-0.615,0.652],[-0.61,0.855],[-1.273,1.445],[-0.754,1.304],[0.122,0.26],[0.375,0.227],[0.762,0.662],[0.139,0.428],[0.577,0.694],[-0.511,1.083],[-0.659,0.65],[0.033,0.596],[-0.13,0.225],[1.069,0.739],[0.153,0.36],[0.444,0.361],[0.205,0.362],[0.221,0.505],[0.897,1.105],[1.58,1.805],[2.019,1.177],[0.28,-0.129],[0.444,-0.134],[0.406,0.284],[1.212,0.099],[1.214,-0.06],[1.138,-0.368],[1.111,-0.424],[0.555,0.003],[0.69,0.307],[0.729,1.901],[0.638,-0.183],[0.923,-0.006],[0.377,0.589],[-0.086,0.612],[-0.206,0.388],[0.179,0.364],[-0.05,0.387],[-0.338,0.734],[0.004,0.078],[0.008,0.013],[0.068,0.145],[0.026,0.033],[1.627,2.339],[0.817,1.297],[0.093,0.628],[0.238,0.605],[0.391,0.518],[0.077,0.734],[0.507,1.641],[-0.88,1.38],[-0.808,0.993],[0.948,1.283],[0.048,1.619],[-0.063,0.132],[0.362,0.661],[0.4,0.728],[-0.142,0.529],[-0.006,0.561],[0.372,0.612],[0.09,0.652],[0.19,1.354],[1.122,0.966],[0.344,0.732],[0.385,0.821],[-0.16,0.521],[0.015,0.545],[0.789,0.961],[1.056,0.459],[0.596,-0.258],[0.787,-0.319],[1.422,-0.026],[1.261,-0.548],[1.163,-1.002],[1.012,-0.973],[1.663,-1.854],[-0.112,-0.386],[0.162,-0.331],[0.56,-0.265],[0.437,-0.446],[0.363,-0.809],[1.138,-0.841],[-0.193,-0.844],[-0.099,-0.946],[0.084,-0.019],[1.119,-1.066],[1.068,-0.6],[0.998,-0.719],[0.524,-1.24],[0.848,-1.116],[-0.387,-1.316],[-0.81,-1.333],[-0.164,-1.459],[0.046,-0.806],[0.51,-0.426],[0.451,-1.085],[0.22,0.03],[0.066,-0.039],[0.955,-1.474],[0.514,-0.495],[0.417,-0.911],[0.666,-0.646],[0.862,-0.34],[1.528,-1.251],[0.551,-0.917],[0.392,-1.024],[0.163,-0.84]],"v":[[64.41,-18.715],[62.839,-19.465],[55.496,-17.502],[52.124,-16.926],[50.559,-17.262],[49.611,-18.215],[48.486,-19.009],[48.336,-20.379],[46.408,-22.31],[43.337,-24.531],[40.935,-27.142],[40.237,-31.54],[39.569,-33.115],[38.892,-33.652],[38.28,-34.88],[36.203,-37.913],[35.195,-40.132],[35.4,-41.988],[33.181,-45.596],[30.935,-49.881],[29.944,-52.293],[29.529,-53.464],[29.647,-53.508],[30.32,-54.47],[28.517,-57.569],[27.979,-58.986],[26.698,-59.327],[25.069,-58.768],[23.608,-57.728],[21.911,-59.017],[19.897,-59.471],[15.152,-58.981],[11.077,-61.696],[9.266,-61.556],[8.518,-60.859],[8.237,-60.529],[7.4,-60.595],[5.168,-59.192],[5.367,-58.29],[5.895,-57.018],[4.634,-57.15],[3.328,-57.631],[1.056,-57.617],[-0.991,-59.037],[-4.965,-60.388],[-8.796,-63.302],[-9.685,-63.732],[-11.133,-64.085],[-10.78,-64.894],[-10.069,-65.565],[-10.257,-66.277],[-10.564,-67.337],[-9.779,-68.017],[-9.327,-69.174],[-9.905,-69.951],[-10.427,-70.061],[-10.642,-70.748],[-12.932,-72.077],[-14.97,-71.676],[-17.577,-71.252],[-26.632,-70.39],[-30.555,-69.284],[-31.922,-68.073],[-34.318,-67.008],[-34.755,-66.699],[-41.374,-67.695],[-42.159,-67.245],[-46.979,-62.389],[-49.637,-60.128],[-50.539,-58.115],[-50.056,-57.062],[-50.622,-56.296],[-51.688,-54.557],[-51.569,-53.496],[-52.841,-52.292],[-55.663,-50.71],[-56.745,-48.318],[-58.927,-46.055],[-61.647,-41.114],[-63.848,-36.682],[-63.28,-36.046],[-62.096,-35.6],[-61.868,-32.414],[-61.159,-31.302],[-60.854,-29.203],[-62.992,-26.45],[-64.198,-24.066],[-63.452,-22.645],[-63.301,-21.911],[-61.03,-19.009],[-60.414,-18.055],[-58.827,-17.339],[-58.475,-16.028],[-57.587,-14.656],[-54.78,-11.432],[-49.562,-6.323],[-42.905,-6.009],[-42.052,-6.426],[-41.064,-6.15],[-39.75,-5.626],[-36.182,-6.21],[-32.685,-6.751],[-29.342,-8.044],[-25.866,-8.834],[-24.237,-8.529],[-23.091,-7.076],[-18.526,-5.8],[-16.555,-6.209],[-14.633,-4.99],[-13.853,-2.902],[-14.801,-1.489],[-14.801,-0.316],[-14.534,0.705],[-14.956,1.794],[-15.318,3.977],[-15.236,4.22],[-15.211,4.257],[-14.947,4.687],[-14.865,4.772],[-9.638,11.526],[-7.962,15.752],[-7.608,17.622],[-6.555,18.906],[-6.503,21.049],[-5.935,23.169],[-6.646,27.714],[-9.801,31.451],[-10.059,34.445],[-7.84,38.343],[-6.212,42.843],[-6.193,43.301],[-5.107,45.283],[-4.023,47.992],[-4.548,49.48],[-4.005,51.021],[-3.202,52.89],[-3.047,54.858],[-1.111,57.801],[1.15,61.389],[2.181,63.584],[2.793,66.273],[2.32,67.768],[2.975,69.179],[5.875,71.626],[9.03,71.518],[10.785,70.674],[13.229,70.294],[17.272,69.554],[20.695,67.313],[24.012,64.125],[27.035,61.193],[29.301,54.232],[29.087,53.098],[29.984,52.57],[31.5,51.487],[32.548,49.949],[33.861,48.077],[34.914,44.826],[34.335,42.312],[34.487,39.498],[34.732,39.366],[38.427,36.615],[41.63,34.808],[43.823,32.077],[45.451,28.43],[45.796,25.012],[44.047,21.381],[42.733,17.208],[42.448,12.756],[43.335,10.711],[44.543,9.332],[46.289,5.294],[46.727,5.085],[46.905,4.913],[50.714,1.434],[51.982,-0.277],[53.104,-3.132],[55.646,-4.281],[57.977,-5.706],[62.139,-10.117],[63.426,-13.045],[64.478,-16.174]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[375.511,323.496],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 49","np":2,"cix":2,"bm":0,"ix":49,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.423,-0.327],[0.481,-0.031],[-0.041,-0.192],[0.636,-0.455],[-0.236,-0.517],[-0.134,-0.253],[-0.235,-0.548],[0.155,-0.963],[0.737,-0.472],[1.062,0.097],[1.01,0.583],[0.06,0.576],[0.358,0.074],[-0.123,0.285],[0.742,0.082],[-0.53,0.234],[0.872,1.986],[2.074,1.408],[-0.255,0.247],[-0.111,0.107],[0.129,0.182],[-0.235,0.12],[0,0],[0,0],[-0.316,0.132],[-2.369,0.995],[-0.116,0.568],[-0.166,0.041],[-0.698,-1.068],[-0.134,0.124],[0.016,-0.469],[0.977,-1.288],[0.592,0.137],[0.067,-0.224],[0.284,0.046],[0.488,-0.363],[0.079,-0.447],[-0.542,-0.445],[0.192,-0.533],[-0.477,-0.414],[-0.368,-0.15],[-1.016,-0.381],[-0.219,-0.544]],"o":[[-0.427,0.33],[0.091,0.152],[0.191,0.89],[-0.408,0.292],[0.119,0.261],[0.277,0.527],[0.379,0.886],[-0.135,0.841],[-0.963,0.616],[-1.095,-0.1],[-0.536,-0.309],[-0.358,-0.026],[-0.365,-0.075],[0.297,-0.689],[-0.447,-0.05],[2.809,-1.24],[-0.978,-2.229],[-0.271,-0.185],[0.111,-0.108],[-0.129,-0.182],[-0.158,-0.22],[0,0],[0,0],[-0.344,-0.276],[2.368,-0.996],[0.116,-0.568],[0.035,-0.171],[1.307,-0.321],[0.134,-0.124],[0.318,-0.296],[-0.049,1.377],[-0.4,0.526],[-0.068,0.225],[-0.087,0.294],[-0.601,-0.098],[-0.345,0.257],[-0.179,1.005],[0.484,0.397],[-0.203,0.562],[0.3,0.262],[1.005,0.407],[0.514,0.193],[0.207,0.513]],"v":[[-63.207,36.18],[-64.602,36.544],[-64.401,37.06],[-65.343,38.792],[-65.616,39.727],[-65.225,40.495],[-64.427,42.09],[-63.985,44.859],[-65.266,47.017],[-68.367,47.281],[-71.709,47.014],[-72.68,45.62],[-73.75,45.473],[-74.062,44.708],[-75.028,43.064],[-75.291,42.092],[-74.927,35.255],[-79.104,29.312],[-79.209,28.494],[-78.876,28.171],[-79.264,27.626],[-79.077,26.913],[-77.718,26.217],[-78.338,25.719],[-78.108,24.849],[-71.002,21.863],[-70.654,20.16],[-70.29,19.796],[-66.991,21.09],[-66.589,20.718],[-65.698,21.086],[-65.589,25.322],[-67.237,25.942],[-67.439,26.616],[-68.081,26.98],[-69.35,27.139],[-70.161,28.172],[-68.685,29.426],[-68.451,30.899],[-68.187,32.156],[-67.149,32.754],[-64.069,33.818],[-62.781,34.8]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.735,0.846],[1.198,1.02],[1.294,1.306],[0.439,0.706],[0.128,0.917],[0.925,1.214],[1.091,0.74],[1.592,0.402],[0.205,1.293],[0.186,-0.387],[1.532,0.838],[0.164,-0.168],[-0.21,-1.068],[0.136,-0.685],[0.42,-0.035],[-0.046,0.263],[0.425,-0.219],[0.493,0.154],[0.229,0.281],[0.393,0.216],[0.787,-0.153],[1.643,1.097],[1.045,-0.559],[0.251,-0.359],[0.488,0.23],[-0.018,1.128],[0.528,0.711],[0.581,0.583],[0.604,0.556],[1.504,-0.734],[2.194,0.392],[0.168,0.192],[0.372,0.141],[0.212,0.322],[0.098,0.222],[1.093,0.206],[-0.369,0.309],[0.291,0.133],[2.293,-0.661],[0.413,-0.743],[0.872,-0.171],[-0.075,0.12],[0.142,0.181],[0.62,0.468],[-0.402,0.487],[0.309,0.187],[0.966,0.411],[0.577,-0.532],[1.043,-0.015],[0.237,-0.412],[-0.267,-0.487],[0.469,-0.099],[0.175,-0.644],[-0.141,-0.113],[0.208,-0.991],[0.368,-0.595],[1.54,0.271],[0.112,-0.284],[0.356,0.318],[0.76,0.232],[0.295,-0.548],[0.149,-0.931],[0.693,-0.729],[0.791,0.415],[0.142,0.797],[0.336,0.749],[1.351,0.935],[-0.728,0.339],[-0.338,-0.052],[-0.44,0.662],[0.747,1.072],[0.635,0.155],[0.689,0.831],[0.937,0.187],[0.54,0.226],[0.487,0.162],[-0.141,-1.717],[-0.001,-0.008],[0.04,-0.521],[-0.18,-0.381],[0.666,-0.015],[1.016,0.389],[0.62,0.237],[0.089,0.324],[-0.016,0.144],[0.767,0.251],[1.135,0.041],[0.882,-0.547],[0.821,-0.313],[-0.104,0.344],[0.585,0.322],[0.822,-0.298],[0.784,0.356],[0.442,0.029],[0.147,-0.781],[0.304,-0.482],[0.682,-0.065],[1.077,-0.719],[-0.701,0.56],[-0.467,0.607],[-0.233,0.653],[-1.212,0.639],[-0.611,1.132],[-0.55,1.204],[-0.765,1.109],[0.716,0.77],[0.061,0.764],[-0.045,0.303],[0.141,0.262],[0.544,0.357],[1.681,0.123],[-0.167,-0.325],[0.574,-0.258],[0.727,-0.115],[-0.75,0.904],[0.539,-0.328],[0.865,0.371],[0.401,-0.073],[-0.084,0.086],[-0.173,0.411],[0.354,0.721],[1.379,-0.993],[0.981,-1.207],[0.274,-0.859],[0.018,-1.054],[0.775,0.086],[-0.023,-0.255],[0.278,0.03],[-0.21,-0.307],[-0.455,-0.665],[-0.113,-0.162],[0.239,0.028],[0.539,-0.366],[0.187,1.152],[0.179,-0.396],[1.74,-0.049],[-0.423,-0.287],[0,0],[0.816,-0.142],[0.975,-0.422],[0.783,-0.714],[1.166,-0.088],[-0.462,-0.282],[0.088,-0.034],[0.28,-0.234],[-0.474,-0.648],[-0.266,-0.319],[-0.108,-0.596],[-0.116,-0.639],[0.185,-0.326],[0.256,0.049],[0.938,0.341],[0.09,-0.195],[1.308,-0.271],[0.543,-0.572],[0.628,0.049],[0.345,-0.134],[-0.538,-1.259],[-0.969,-0.032],[-0.517,-0.745],[-0.872,-1.068],[0.117,-1.594],[1.638,-0.302],[0.259,0.393],[-0.15,1.005],[0.615,0.444],[-0.505,0.599],[0.323,0.161],[2.625,1.303],[0.063,-0.353],[0.078,-0.182],[0.504,-0.434],[-0.099,-0.196],[0.039,-0.077],[0.136,0.055],[0.58,0.079],[-0.032,-0.885],[-0.795,-0.533],[-0.462,-0.787],[0.469,0.343],[0.25,1.122],[0.033,0.539],[0.146,0.472],[0.051,0.595],[-0.072,0.339],[-0.159,0.115],[0.38,0.067],[0.24,-0.288],[-0.041,-0.994],[-0.109,-0.426],[0.002,-0.104],[0.007,-0.547],[0.213,-0.121],[0.293,-0.92],[-0.627,-0.542],[-0.021,-0.014],[-0.288,0.054],[0.054,-0.229],[-0.081,-0.492],[0.392,-1.153],[-0.348,-1.034],[-0.74,-0.228],[-1.013,-0.389],[-0.307,-1.129],[0.038,-0.582],[-0.163,-0.446],[-0.596,-0.663],[0.819,0.12],[0.072,0.434],[0.181,0.254],[0.206,0.471],[-0.023,0.368],[0.156,0.351],[0.641,0.166],[0.513,-0.336],[0.023,-0.857],[0.663,-0.937],[0.541,-0.862],[0.479,-0.879],[0.837,-0.135],[0.418,0.121],[0.008,0.209],[-0.197,0.142],[-0.149,0.338],[-0.685,0.598],[-0.495,0.714],[0.054,0.836],[-0.48,0.274],[-0.107,0.426],[0.355,0.719],[0.027,0.607],[0,0],[-1.003,2.549],[0.3,0.032],[0.396,0.043],[0.034,-0.003],[0.618,0.27],[-0.6,1.089],[0.104,1.211],[0.838,0.248],[0.453,0.01],[0.545,0.132],[0.929,-0.533],[0.036,-0.386],[0.141,-0.714],[1.736,-2.183],[-0.027,-1.371],[0.638,-1.638],[-0.113,-0.134],[-1.5,-0.839],[0.451,-0.832],[0.037,0.021],[0.279,0.193],[0.518,0.515],[1.204,0.237],[0.31,0.769],[0.206,0.391],[0.977,-0.044],[1.073,0.956],[0.959,-0.433],[-0.545,-0.649],[-0.98,-0.981],[0.103,-1.165],[0.337,-0.278],[0.079,0.342],[0.494,0.278],[0.105,-0.322],[0.618,0.036],[0.355,-0.155],[0.305,-0.184],[0.418,0.041],[0.289,-0.128],[0.676,-0.145],[0.102,1.27],[0.369,-0.185],[1.2,-1.816],[0.806,-0.552],[0.49,-0.254],[0.665,-0.147],[0.269,-1.125],[0.593,0.345],[0.213,0.215],[-0.014,0.31],[-0.172,0.211],[0.47,0.913],[0.463,0.056],[0.288,0.01],[0.343,0.386],[0.636,-0.858],[-0.082,-0.445],[-0.04,-0.893],[0.01,-0.928],[-0.541,-0.342],[0.229,-0.636],[0.319,-0.484],[0.222,0.033],[0.302,-0.073],[1.066,-0.265],[0.422,-0.579],[0.907,-0.328],[-0.01,-0.24],[-0.638,-0.82],[0.03,-0.725],[-0.002,-0.016],[0.405,0.013],[0.407,0.373],[0.541,0.372],[0.587,-0.887],[-0.447,-0.535],[-0.726,-0.709],[1.1,-0.126],[0.376,0.425],[0.506,0.16],[0.302,0.17],[-0.031,0.447],[0.31,0.31],[0.021,0.016],[0.003,0.057],[0.366,0.53],[0.088,0.536],[0.349,0.226],[0.159,0.093],[0.025,0.467],[1.064,1.117],[-0.374,-0.19],[-0.884,-0.386],[-1.762,-0.111],[-1.4,2.569],[0.161,0.175],[0.103,0.111],[1.005,0.496],[0.114,0.291],[0.723,0.25],[0.964,1.315],[1.469,0.443],[1.824,0.387],[0.305,0.699],[0.194,-0.245],[0.028,0.058],[0.131,0.11],[0.332,-0.062],[0.396,-0.223],[0.642,0.34],[0.069,0.054],[0.556,0.428],[-0.679,0.299],[0.316,0.543],[0.624,0.373],[0.825,0.541],[1.264,-0.859],[-0.133,-0.84],[0.574,-0.331],[0.217,-0.051],[0.236,0.627],[0.287,-0.313],[1.593,-0.28],[0.695,-1.035],[-0.231,-0.132],[0.357,-0.063],[0.438,-0.563],[0.412,-0.464],[0.524,-0.349],[0.314,-0.419],[0.383,-0.661],[0.966,-1.094],[1.035,-2.617],[0.721,-1.292],[1.103,-1.283],[0.947,-1.424],[2.104,0.757],[0.115,-0.186],[-0.133,-0.395],[0.214,-0.796],[-0.019,-0.231],[-0.061,-0.254],[0.123,-0.201],[0.146,-0.695],[-0.473,-1.31],[0.998,-1.049],[-0.449,-0.027],[0.163,-0.057],[-0.493,-0.176],[-1.651,1.135],[-0.565,0.657],[-0.504,0.585],[-0.438,-0.473],[-0.287,-0.542],[-0.241,-0.739],[-0.468,-1.441],[-0.794,-0.748],[-0.698,0.566],[-0.281,0.445],[-0.779,0.373],[0.503,1.821],[-0.681,0.665],[-0.464,0.406],[0.176,0.79],[0.312,0.899],[0.452,0.469],[-0.072,1.226],[-1.289,1.495],[-1.367,1.64],[-0.233,0.687],[-0.051,1.072],[-0.458,0.257],[-0.317,0.181],[-0.138,0.278],[-0.048,0.108],[-0.371,0.055],[-0.503,-0.058],[-0.499,-0.166],[0.4,-0.735],[0.435,-0.761],[0.628,-0.821],[0.818,-0.775],[0.461,-0.914],[-0.496,-0.547],[0.378,-1.067],[-0.12,-0.133],[-0.215,-0.238],[-0.871,-0.941],[-0.77,-0.149],[-0.712,0.326],[-1.154,-0.368],[-0.794,0.349],[-0.805,0.096],[-0.337,-0.56],[-0.03,-1.179],[2.157,-2.579],[-0.411,-0.098],[0.252,-0.051],[-0.296,-0.244],[-0.636,-0.2],[0.413,-0.815],[0.336,0.437],[0.704,-0.927],[-0.296,-0.077],[0.174,-0.166],[0.017,-0.034],[0.033,-0.086],[0.188,-0.158],[0.072,-0.236],[-0.117,-0.213],[0.056,-0.351],[-0.343,-0.575],[0.109,-0.643],[0.35,-0.115],[0.302,-0.044],[0.292,-0.206],[0.712,0.379],[0.74,-0.01],[0.484,-0.295],[0.365,-0.146],[0.822,-0.022],[0.398,-0.446],[0.274,-0.019],[0.16,0.088],[0.198,0.387],[0.623,-0.019],[0.57,-0.268],[0.58,-0.349],[0.09,0.005],[0.022,0.25],[0.351,-0.095],[0.076,-0.029],[0.223,0.109],[-0.303,0.443],[0.075,0.385],[-0.619,0.615],[-0.292,0.416],[0.05,0.495],[0.199,1.425],[0.261,-0.143],[0.719,-1.397],[0.003,-0.074],[-0.067,-0.813],[-0.197,-0.367],[0.489,-0.551],[-0.41,-0.081],[-0.175,-0.598],[0.226,-0.358],[0.923,-0.133],[0.817,-0.764],[0.584,-0.224],[0.062,-0.424],[-0.066,-0.252],[0.219,-0.471],[0.645,-0.374],[0.746,-0.386],[0.448,-0.426],[-0.101,-0.412],[0.075,-0.379],[0.448,-0.069],[0.143,-0.525],[0.661,0.05],[0.331,-0.481],[-0.091,-0.15],[-0.037,-0.568],[-0.012,-0.041],[1.003,-0.038],[0.985,-0.465],[-0.387,-0.135],[-0.152,-0.481],[-0.101,-0.197],[-0.383,-0.004],[-0.758,-0.427],[-0.338,-0.633],[-0.376,-0.636],[-0.229,-0.276],[0.058,-0.442],[0.181,-0.855],[1.084,0.46],[0.51,0.166],[0.528,-0.154],[0.547,0.257],[0.273,0.061],[0.628,-0.073],[0.713,0.216],[1.109,-0.627],[-0.234,-0.235],[-0.348,-0.35],[-0.176,-0.358],[-0.019,-1.086],[0.78,-1.362],[-0.166,-0.164],[-0.059,-0.633],[0.077,-0.373],[0,0],[-0.353,-0.024],[-0.959,0.898],[-0.257,-0.52],[-0.734,-0.151],[-0.114,0.275],[-0.726,-0.053],[-0.623,0.257],[-0.478,0.974],[-0.74,0.123],[0.246,0.259],[-0.216,0.387],[0.26,0.121],[-0.417,0.533],[-0.129,0.365],[-0.323,0.312],[-0.379,0.188],[-0.419,0.287],[-0.325,0.639],[-0.048,0.332],[-0.492,0.252],[-0.584,0.392],[-0.21,0.076],[-0.007,0.002],[-0.066,-0.045],[-1.138,0.653],[-0.762,0.114],[-0.398,0.336],[-0.827,0.027],[-0.246,-0.086],[-0.182,-0.093],[0.077,-0.261],[-0.324,-0.344],[-0.336,-0.353],[-0.267,-0.459],[-0.459,-0.306],[-1.205,-1.051],[-0.865,-1.223],[0.039,-1.288],[-0.32,0.295],[-0.645,0.611],[0.041,0.609],[-0.162,0.678],[-0.125,0.171],[-0.228,-0.132],[-0.261,-0.131],[0.359,0.458],[0.707,0.462],[0.387,0.167],[-0.519,0.45],[0.352,0.107],[0.927,0.668],[0.207,1.099],[0.769,0.391],[-0.349,1.139],[0,0],[-0.502,0.255],[0.098,-0.374],[-0.275,-0.074],[-0.441,0.053],[-0.608,-0.341],[-0.158,-0.042],[-0.265,-0.279],[-0.406,-0.245],[-0.939,-0.804],[-0.972,-0.568],[-0.424,0.015],[-0.031,-0.274],[0.092,-0.144],[-0.009,-0.489],[-0.003,-0.467],[-0.274,-0.636],[-0.101,-0.474],[-0.327,-0.254],[-0.367,-0.582],[0.109,-0.408],[-0.009,-0.209],[-0.372,-0.283],[-0.652,-0.495],[-0.125,0.223],[0.114,0.761],[-0.321,0.67],[0.619,0.706],[0.076,0.651],[-0.66,0.184],[-0.084,0.615],[-0.724,0.268],[-0.126,0.161],[-0.595,0.23],[-0.312,0.254],[-0.672,-0.227],[0.431,0.329],[0.491,0.376],[0.09,0.163],[-0.096,0.056],[-0.24,0.784],[-0.48,0.359],[-0.145,0.362],[0.083,0.337],[-0.408,0.364],[-0.378,0.654],[-0.111,0.259],[-0.171,0.119],[-0.702,0.797],[-0.578,-0.17],[-0.165,0.011],[-0.79,1.21],[-0.013,0.026],[-0.08,-0.055],[-0.433,0.153],[-0.231,0.164],[-0.263,-0.024],[-0.175,-0.016],[-0.215,0.09],[-0.797,0.259],[-0.688,0.092],[-0.169,-0.154],[0.773,-0.782],[-0.267,-0.197],[-0.394,-0.29],[0.083,-0.036],[0.017,-0.171],[-2.365,-0.91],[-0.894,-1.006],[2.103,0.493],[1.392,-0.308],[0.327,0.444],[0.352,0.058],[0.505,-0.182],[1.061,-0.237],[0.325,-0.664],[0,0],[-0.684,0.029],[-0.005,0],[0.4,-0.256],[0.777,0.038],[0.651,-0.323],[-0.133,-0.23],[-0.079,-0.138],[-0.18,-0.681],[-0.932,0.036],[-1.75,-0.479],[-1.281,0.025],[-1.498,0.03],[-0.721,0.014],[-0.305,-0.091],[0.22,-0.354],[-0.074,-1.161],[0.696,-0.923],[0.3,-0.488],[0.09,-0.413],[0.216,-0.413],[0.496,-0.308],[-0.365,-0.335],[-0.315,-0.02],[1.338,-1.513],[-0.463,-0.024],[-0.487,-0.353],[0.021,-0.402],[-0.721,-0.458],[-0.484,-0.303],[-0.37,-0.563],[-0.63,-1.12],[-1.543,-2.306],[-0.849,-1.164],[-0.387,-0.511],[0.13,-0.851],[-0.418,-1.171],[0.588,-1.129],[-0.413,0.012],[-1.448,0.282],[-1.292,0.442],[-0.963,0.732],[-1.448,0.351],[-1.065,0.706],[-0.932,0.928],[-1.364,2.362],[-0.254,0.305],[-0.164,-0.05],[-0.06,0.263],[-0.121,0.131],[-0.1,0.515],[0.293,0.058],[0.469,0.957],[0.619,0.023],[0.625,-0.1],[0.3,0.719],[0.712,-1.215],[0.117,-0.08],[0.225,-0.01],[0.321,-0.148],[0.248,1.066],[0.226,-0.366],[0.774,0.837],[0.133,0.355],[0.162,0.431],[0.704,1.492],[0.506,0.327],[0.464,0.511],[-0.661,0.475],[-0.597,-0.144],[-0.692,-0.092],[-0.344,-0.679],[-2.259,-0.449],[-1.731,-0.606],[-1.776,-0.499],[-2.763,-1.421],[-1.552,0.018],[-0.374,-0.392],[-0.215,-0.411],[-0.503,-0.961],[-0.227,0.231],[-0.426,0.223],[-0.25,-0.462],[-0.232,0.229],[-0.851,-1.484],[-0.074,-1.061],[-0.738,-2.408],[-1.584,-5.039],[-0.074,0.559],[-0.699,0.214],[-0.443,0.398],[-0.193,1.042],[-0.186,3.125],[-0.29,1.128],[-1.617,0.867],[-0.844,0.684],[-0.333,0.742],[-0.44,0.751],[-1.259,-0.012],[-1.351,1.455],[0.174,-0.631],[-0.28,-0.042],[-0.551,-0.812],[-0.648,-0.973],[1.608,-1.685],[-0.461,0.004],[-1.309,0.892],[-0.585,-0.809],[-0.488,-0.375],[-0.173,-0.868],[0.01,-0.799],[0.025,-0.919],[1.339,-0.254],[-0.376,-0.206],[-0.708,-1.043],[-0.598,-1.325],[-1.226,-0.375],[-0.469,-0.631],[-0.413,-0.295],[-0.594,0.705],[0.217,0.918],[1.674,1.883],[0.474,0.704],[-0.25,0.768],[-0.942,1.007],[-0.466,0.053],[-1.3,-1.283],[-0.045,-0.024],[-0.254,0.002],[-0.448,0.753],[-0.925,0.526],[-0.267,2.059],[0.466,1.023],[0.749,0.598],[0.27,0.626],[0.328,0.285],[0.655,0.036],[0.197,0.463],[-0.475,0.974],[-0.593,0.501],[-0.233,0.58],[-1.022,0.793],[-0.77,-0.774],[-0.023,0.44],[-1.511,0.133],[-0.79,0.671],[-0.33,0.416],[-0.785,-0.101],[-0.819,0.624],[-0.648,0.764],[-0.534,0.309],[-0.592,0.41],[0.224,1.008],[0.071,0.273],[-0.259,0.257],[-0.242,0.162],[-0.191,0.183],[-0.181,0.18],[-0.082,0.029],[0.009,0.218],[-0.16,0.729],[0.356,0.297],[0.408,0.019],[-0.005,0.126],[0.424,0.308],[-0.261,0.801],[0.803,0.36],[0.194,0.12],[-0.081,0.482],[0.083,0.547],[0.312,0.475],[0.293,0.508],[0.586,2.442],[0.391,0.248],[0.593,0.254],[0.386,-0.168],[0.144,-0.333],[0.316,-0.096],[0.276,-0.236],[0.547,0.2],[0.723,0.626],[-0.125,0.022],[-0.273,0.177],[-0.483,0.602],[-0.282,0.229],[-0.583,-0.024],[-0.285,0.089],[0.128,-0.534],[-0.392,0.087],[-0.954,0.569],[-0.772,0.755],[-0.194,-0.542],[-0.226,-0.783],[-0.863,0.241],[0.773,-2.176],[-0.308,-0.036],[-0.215,-0.018],[-0.968,0.762],[-0.454,0.198],[-0.385,0.277],[-0.091,0.647],[-0.412,0.415],[-0.082,0.362],[0.529,0.276],[0.424,0.292],[0.111,0.099],[0.155,0.114],[0.08,0.116],[-0.275,0.633],[0.051,0.312],[-0.394,0.313],[-0.368,1.112],[-0.778,1.211],[-1.287,1.484],[-0.831,1.001],[-1.171,0.69],[-0.785,2.25],[-0.47,1.085],[-0.716,0.919],[0.13,1.449],[-0.707,1.522],[0.25,0.174],[0.597,1.259],[1.266,-0.154],[-0.064,-0.364],[0.033,-0.142],[0.314,0.206],[0.155,-0.159],[0.415,-0.428],[0.288,0.557],[0.235,-0.216],[0.439,0],[0.019,0.336],[-0.907,0.998],[-0.805,0.417],[-0.869,0.591],[-2.049,3.452],[-0.167,0.263],[-1.104,-0.13],[-0.538,0.385],[-0.808,0.095],[-1.16,-0.17],[-0.458,0.157],[-0.198,0.15],[-0.333,0.124],[-0.6,-0.311],[-0.733,-0.097],[-0.756,1.246],[-0.26,0.702],[-0.486,0.698],[-1.423,0.76],[-0.485,0.148],[-0.444,-0.439],[-0.8,0.117],[-0.554,0.493],[-0.752,-0.172],[-0.493,-0.755],[4.474,-2.879],[0.265,-1.233],[0.441,-0.53],[0.356,-0.442],[-0.291,-0.996],[-0.412,-1.36],[-0.383,-3.211],[-0.054,-0.225],[0.065,0.593],[0.022,0.19],[-0.788,1.233],[-0.112,0.391],[-0.757,0.349],[-0.791,0.638],[-0.244,0.885],[-0.303,0.453],[-0.513,0.408],[0.334,0.944],[0.33,0.342],[-0.352,0.514],[0.677,0.729],[0.664,0.037],[-0.622,0.945],[-1.47,0.431],[-0.602,1.426],[-2.625,1.653],[-2.011,1.353],[-2.036,-1.357],[0.022,0.384],[0.061,1.064],[0.217,0.798],[0.715,0.24],[0.385,0.418],[0.83,-0.033],[-0.39,0.128],[-0.635,-0.483],[-1.132,0.034],[-1.733,-1.526],[-0.002,0.471],[-0.904,-0.033],[-0.547,1.044]],"o":[[-1.035,-1.191],[-1.401,-1.192],[-0.582,-0.588],[-0.497,-0.797],[-0.208,-1.49],[-0.803,-1.054],[-1.344,-0.912],[-0.97,-0.245],[-0.069,-0.435],[-1.059,2.209],[-0.202,-0.11],[-0.809,0.824],[0.13,0.663],[-0.078,0.389],[-0.154,0.013],[0.078,-0.449],[-0.413,0.212],[-0.379,-0.118],[-0.279,-0.344],[-0.725,-0.398],[-1.694,0.33],[-0.896,-0.598],[-0.414,0.221],[-0.348,-0.411],[0.018,-1.128],[0.013,-0.809],[-0.502,-0.677],[-0.573,-0.575],[-1.47,-1.351],[-2.015,0.984],[-0.056,-0.236],[-0.268,-0.307],[-0.328,-0.124],[-0.131,-0.198],[-0.468,-1.065],[0.369,-0.309],[0.242,-0.202],[-1.849,-0.846],[-0.848,0.245],[-0.348,0.628],[0.075,-0.12],[0.134,-0.214],[-0.488,-0.618],[0.402,-0.487],[0.213,-0.259],[-0.897,-0.546],[-0.787,-0.335],[-0.88,0.81],[-0.452,0.006],[-0.365,0.634],[0.434,0.795],[-0.636,0.133],[-0.045,0.165],[0.826,0.666],[-0.699,-0.019],[-1.54,-0.271],[-0.301,-0.053],[-0.328,0.831],[-0.574,-0.514],[-0.541,-0.166],[-0.456,0.848],[-0.153,0.962],[-0.548,0.576],[-0.813,-0.427],[-0.144,-0.805],[-0.67,-1.499],[-0.322,-0.222],[0.333,-0.156],[0.742,0.115],[0.704,-1.06],[-0.385,-0.552],[-1.009,-0.246],[-0.595,-0.718],[-0.567,-0.114],[-0.473,-0.198],[-1.318,-0.44],[0.001,0.008],[-0.46,0.112],[-0.034,0.44],[0.329,0.697],[-1.116,0.026],[-0.62,-0.237],[-0.285,-0.109],[-0.037,-0.134],[0.103,-0.933],[-1.073,-0.351],[-1.034,-0.037],[-0.737,0.458],[0.317,-0.411],[0.2,-0.656],[-0.827,-0.455],[-0.811,0.295],[-0.395,-0.179],[-0.741,-0.047],[-0.099,0.521],[-0.413,0.655],[-1.424,0.134],[0.387,-0.779],[0.588,-0.47],[0.431,-0.562],[0.494,-1.381],[1.121,-0.591],[0.631,-1.171],[0.578,-1.263],[0.584,-0.848],[-0.497,-0.534],[-0.023,-0.297],[0.045,-0.295],[-0.319,-0.585],[-1.415,-0.928],[-0.419,-0.03],[0.615,1.198],[-0.549,0.247],[0.452,-1.078],[0.357,-0.431],[-0.989,0.601],[-0.442,-0.19],[0.212,-0.28],[0.308,-0.314],[0.308,-0.735],[-0.766,-1.561],[-1.311,0.944],[-0.539,0.664],[-0.305,0.957],[-0.775,-0.086],[-0.254,-0.029],[-0.278,-0.031],[-0.387,-0.042],[0.455,0.666],[0.112,0.165],[-0.203,-0.116],[-0.676,-0.079],[-0.44,0.299],[-0.07,-0.427],[-0.984,2.181],[-0.535,0.015],[0,0],[-0.653,0.537],[-1.04,0.181],[-0.973,0.421],[-0.792,0.723],[-0.504,0.038],[0.467,0.286],[-0.336,0.131],[-0.61,0.512],[0.25,0.344],[0.408,0.488],[0.115,0.64],[0.063,0.346],[-0.136,0.238],[0.484,-0.762],[-0.198,-0.072],[-0.717,1.541],[-0.809,0.168],[-0.515,0.543],[-0.369,-0.029],[-1.234,0.483],[0.393,0.919],[-0.152,0.856],[0.794,1.145],[1.092,1.336],[-0.093,1.257],[-0.082,-0.395],[-0.63,-0.957],[0.114,-0.761],[0.505,-0.599],[0.202,-0.239],[-2.622,-1.31],[-0.274,-0.136],[-0.039,0.216],[-0.508,-0.248],[-0.182,0.156],[0.059,0.117],[-0.089,0.176],[-0.517,-0.209],[-0.915,-0.124],[0.038,1.067],[0.783,0.524],[-0.496,-0.3],[-0.88,-0.644],[-0.119,-0.531],[-0.031,-0.494],[-0.146,-0.477],[0.048,-0.341],[0.085,-0.148],[0.421,-0.304],[-0.171,-0.265],[-0.629,0.755],[0.016,0.373],[-0.005,0.103],[-0.013,0.558],[-0.108,0.159],[-0.754,0.427],[-0.252,0.795],[0.02,0.018],[0.095,0.21],[0.739,-0.139],[-0.116,0.487],[0.188,1.129],[-0.319,0.938],[0.26,0.771],[1.026,0.316],[1.001,0.384],[0.155,0.572],[-0.032,0.476],[0.306,0.839],[-0.7,0.463],[0.177,-0.381],[-0.051,-0.307],[-0.311,-0.437],[-0.156,-0.358],[0.023,-0.38],[-0.272,-0.614],[-0.588,-0.152],[-0.83,0.543],[-0.031,1.119],[-0.584,0.824],[-0.546,0.868],[-0.414,0.758],[-0.429,0.069],[-0.14,-0.041],[-0.009,-0.266],[0.303,-0.219],[0.345,-0.782],[0.637,-0.557],[0.506,-0.732],[-0.036,-0.564],[0.362,-0.207],[0.234,-0.937],[-0.278,-0.56],[0,0],[-0.117,-2.668],[0.136,-0.348],[-0.396,-0.044],[-0.039,-0.005],[-0.299,-0.623],[0.734,-1.002],[0.56,-1.016],[-0.078,-0.912],[-0.436,-0.129],[-0.557,-0.012],[-0.718,-0.174],[-0.371,0.213],[-0.067,0.722],[-0.546,2.752],[-0.926,1.164],[0.035,1.761],[-0.07,0.18],[1.113,1.318],[-0.45,0.832],[-0.036,-0.02],[-0.292,-0.172],[-0.6,-0.417],[-0.802,-0.797],[-0.682,-0.134],[-0.163,-0.406],[-0.492,-0.936],[-1.416,0.064],[-0.657,-0.585],[-0.851,0.384],[0.885,1.054],[-0.876,0.716],[-0.034,0.392],[-0.627,0.516],[-0.122,-0.525],[-0.305,-0.17],[-0.287,0.879],[-0.384,-0.021],[-0.349,0.152],[-0.393,0.238],[-0.319,-0.032],[-0.443,0.195],[0.664,-1.043],[-0.033,-0.404],[-1.957,0.976],[-0.965,0.103],[-0.454,0.31],[-0.62,0.321],[-1.3,0.287],[-0.112,0.466],[-0.264,-0.154],[-0.223,-0.223],[0.013,-0.276],[0.644,-0.786],[-0.205,-0.397],[-0.289,-0.035],[-0.546,-0.019],[-0.529,-0.595],[-0.289,0.389],[0.164,0.878],[0.042,0.932],[-0.008,0.678],[0.692,0.437],[-0.197,0.548],[-0.188,-0.105],[-0.31,-0.046],[-0.099,-0.895],[-0.774,0.192],[-0.589,0.809],[-0.211,0.077],[0.041,1.066],[-0.555,0.593],[-0.001,0.016],[-0.37,-0.063],[-0.516,-0.016],[-0.464,-0.425],[-0.679,-0.467],[-0.563,0.851],[0.589,0.705],[0.247,0.241],[-0.63,0.072],[-0.334,-0.379],[-0.394,-0.123],[-0.516,-0.289],[0.03,-0.435],[-0.02,-0.02],[0.011,-0.047],[-0.037,-0.684],[0.355,-0.355],[-0.066,-0.403],[-0.162,-0.106],[-0.529,-0.306],[-0.11,-2.03],[0.588,-0.214],[0.86,0.436],[1.607,0.701],[2.817,0.178],[0.115,-0.211],[-0.103,-0.111],[0.853,-0.687],[0.058,-0.26],[-0.308,-0.784],[-1.622,-0.56],[-0.874,-1.193],[-1.821,-0.549],[0.226,-0.675],[-0.125,-0.288],[-0.218,0.277],[-0.07,-0.147],[-0.265,-0.224],[-0.459,0.087],[-0.646,0.363],[-0.035,-0.066],[-0.555,-0.427],[0.772,-0.155],[0.526,-0.232],[-0.409,-0.701],[-0.849,-0.508],[-1.45,-0.952],[-0.63,0.428],[0.086,0.545],[-0.186,0.108],[0.148,-0.607],[-0.13,-0.343],[-1.093,1.194],[-1.149,0.202],[-0.153,0.226],[-0.357,0.063],[-0.654,0.115],[-0.376,0.482],[-0.424,0.477],[-0.432,0.287],[-0.463,0.619],[-0.741,1.277],[-1.89,2.143],[-0.543,1.373],[-0.826,1.482],[-1.113,1.293],[-0.887,1.335],[-0.219,-0.078],[-0.242,0.391],[-0.746,0.311],[-0.061,0.227],[0.049,0.256],[-0.053,0.231],[-0.29,0.642],[-0.283,1.359],[0.387,1.071],[-0.322,0.339],[0.167,0.01],[-0.495,0.175],[1.736,0.618],[0.721,-0.496],[0.503,-0.585],[0.148,0.605],[0.406,0.439],[0.366,0.689],[0.468,1.442],[0.321,0.987],[0.689,0.65],[0.414,-0.336],[0.474,-0.75],[2.277,-1.089],[-0.235,-0.849],[0.441,-0.431],[0.621,-0.544],[0.786,-0.449],[-0.22,-0.632],[-0.834,-0.864],[0.119,-2.056],[1.394,-1.618],[0.459,-0.552],[0.361,-1.061],[0.022,-0.483],[0.314,-0.175],[0.268,-0.153],[0.052,-0.107],[0.171,-0.388],[0.49,-0.072],[0.517,0.058],[1.505,0.501],[-0.418,0.767],[-0.514,0.898],[-0.683,0.894],[-0.721,0.684],[-0.367,0.727],[0.834,0.922],[-0.063,0.179],[0.214,0.238],[-0.568,1.231],[0.513,0.553],[0.814,0.158],[1.055,-0.483],[0.781,0.25],[0.711,-0.313],[0.679,-0.081],[-1.1,0.416],[-2.933,-0.048],[-0.238,0.285],[0.275,0.066],[-0.367,0.074],[0.529,0.438],[-0.2,0.934],[-0.568,1.121],[-0.975,-1.266],[-0.206,0.271],[0.239,0.12],[-0.027,0.034],[-0.056,0.054],[-0.088,0.233],[-0.184,0.155],[-0.071,0.233],[0.179,0.328],[-0.087,0.558],[0.323,0.54],[-0.061,0.358],[-0.279,0.092],[-0.356,0.053],[-0.517,0.367],[-0.506,-0.27],[-0.671,0.009],[-0.339,-0.04],[-0.75,0.3],[-0.566,0.015],[-0.181,0.204],[-0.196,0.013],[-0.372,-0.207],[-0.234,-0.455],[-0.727,0.021],[-0.595,0.28],[-0.154,0.093],[-0.182,-0.009],[-0.03,-0.333],[-0.115,0.031],[-0.165,-0.132],[-0.549,-0.267],[0.211,-0.308],[-0.114,-0.586],[0.345,-0.344],[0.293,-0.419],[-0.144,-1.432],[-0.049,-0.348],[-1.38,0.754],[-0.04,0.079],[-0.535,0.565],[0.035,0.429],[0.403,0.75],[-0.241,0.271],[0.798,0.159],[0.122,0.416],[-0.599,0.95],[-1.195,0.172],[-0.479,0.449],[-0.381,0.145],[-0.041,0.276],[0.125,0.487],[-0.325,0.698],[-0.727,0.421],[-0.548,0.284],[-0.32,0.304],[0.079,0.325],[-0.097,0.495],[-0.626,0.096],[-0.641,-0.133],[-0.586,-0.044],[-0.103,0.149],[0.295,0.489],[0.003,0.048],[-0.931,0.478],[-1.117,0.042],[-0.438,0.207],[0.422,0.147],[0.06,0.187],[0.188,0.369],[0.863,0.009],[0.602,0.339],[0.362,0.676],[0.215,0.363],[0.29,0.352],[-0.114,0.866],[-0.176,0.824],[-0.484,-0.206],[-0.552,-0.179],[-0.601,0.175],[-0.252,-0.118],[-0.626,-0.141],[-0.733,0.085],[-1.33,-0.403],[-0.293,0.166],[0.348,0.35],[-0.079,0.383],[-0.68,0.932],[0.029,1.621],[-0.115,0.2],[0.414,0.41],[0.036,0.376],[0,0],[-0.071,0.348],[1.329,0.093],[0.549,0.293],[0.315,0.637],[0.303,0.063],[0.385,-0.928],[0.672,0.048],[1.029,-0.425],[0.745,0.024],[0.406,-0.067],[-0.42,-0.441],[0.127,-0.228],[-1.147,-0.529],[0.237,-0.303],[0.138,-0.395],[0.311,-0.3],[0.455,-0.224],[0.586,-0.402],[0.152,-0.298],[0.065,-0.44],[0.58,-0.296],[0.209,-0.139],[0.007,-0.002],[0.037,0.057],[0.981,0.674],[0.632,-0.362],[0.49,-0.072],[0.531,-0.449],[0.261,-0.008],[0.192,0.069],[0.277,0.115],[0.133,0.422],[0.335,0.356],[0.383,0.403],[0.287,0.491],[1.331,0.886],[1.125,0.98],[0.853,1.206],[-0.015,0.469],[0.652,-0.603],[0.397,-0.377],[-0.045,-0.652],[0.071,-0.2],[0.075,-0.298],[0.288,0.012],[0.554,0.279],[-0.52,-0.663],[-0.353,-0.231],[-0.262,-0.113],[0.309,-0.267],[-1.08,-0.329],[-0.942,-0.677],[-0.164,-0.874],[-1.26,-0.641],[0,0],[0.501,-0.255],[0.076,0.347],[-0.072,0.271],[0.454,0.122],[-0.037,0.624],[0.148,0.083],[0.359,0.095],[0.323,0.34],[1.052,0.634],[0.85,0.728],[0.365,0.214],[0.145,-0.005],[0.014,0.126],[-0.288,0.456],[0.009,0.472],[0.007,0.817],[0.184,0.425],[0.089,0.417],[0.529,0.41],[0.229,0.362],[-0.048,0.181],[0.023,0.53],[0.652,0.495],[0.222,0.169],[0.395,-0.701],[0.68,-0.106],[0.449,-0.938],[-0.399,-0.455],[-0.107,-0.919],[0.619,-0.172],[0.642,0.075],[0.228,-0.085],[0.509,0.309],[0.389,-0.151],[0.565,-0.457],[0.609,0.206],[-0.491,-0.375],[-0.096,-0.073],[0.045,0.047],[0.742,-0.434],[0.178,-0.579],[0.306,-0.229],[0.13,-0.324],[-0.105,-0.432],[0.488,-0.435],[0.181,-0.312],[0.07,-0.163],[0.929,-0.647],[0.246,0.538],[0.083,0.089],[1.073,-0.075],[0.014,-0.026],[0.072,0.095],[0.39,0.272],[0.272,-0.097],[0.287,-0.205],[0.142,0.014],[0.23,0.022],[0.763,-0.32],[0.662,-0.216],[0.169,0.155],[-0.773,0.782],[-0.256,0.259],[0.394,0.291],[-0.073,0.041],[-0.174,0.077],[-0.294,2.913],[-0.458,1.264],[-1.785,0.961],[-1.414,-0.332],[0.013,-0.561],[-0.212,-0.287],[-0.57,-0.094],[-1.021,0.367],[-0.748,0.166],[0,0],[-0.654,0.067],[0.004,0],[-0.366,0.343],[-0.694,0.444],[-0.72,-0.035],[-0.253,0.126],[0.079,0.138],[-0.561,0.357],[0.261,0.987],[-0.108,1.841],[1.249,0.342],[1.497,-0.03],[0.721,-0.014],[0.317,-0.007],[0.506,0.151],[-0.598,0.964],[0.066,1.057],[-0.339,0.451],[-0.224,0.363],[-0.098,0.449],[-0.309,0.586],[-0.486,0.302],[0.018,0.247],[2.015,0.132],[-0.304,0.344],[0.643,0.033],[-0.26,0.278],[-0.047,0.887],[0.482,0.307],[0.577,0.359],[0.708,1.075],[1.36,2.419],[0.802,1.197],[0.378,0.517],[0.477,0.63],[-0.183,1.198],[0.386,1.082],[-0.175,0.337],[1.479,-0.046],[1.337,-0.261],[1.141,-0.391],[1.148,-0.873],[1.211,-0.293],[1.104,-0.731],[1.906,-1.9],[0.329,0.005],[0.183,-0.221],[0.333,0.102],[0.132,0.014],[0.354,-0.384],[0.051,-0.261],[-1.146,-0.227],[-0.265,-0.542],[-0.649,-0.025],[-1.121,0.18],[-0.554,-1.33],[-0.068,0.116],[-0.19,0.13],[-0.355,0.018],[-0.46,0.213],[-0.104,-0.45],[-0.368,0.594],[-0.263,-0.284],[-0.162,-0.431],[-0.581,-1.543],[-0.253,-0.538],[-0.568,-0.367],[-0.567,-0.625],[0.183,0.563],[0.695,0.169],[0.915,0.121],[1.253,2.469],[1.802,0.358],[1.74,0.611],[2.934,0.826],[1.262,0.648],[0.452,-0.005],[0.319,0.336],[0.502,0.96],[0.155,0.297],[0.345,-0.35],[0.251,0.462],[0.161,0.297],[0.782,-0.776],[0.551,0.963],[0.177,2.516],[1.548,5.051],[0.188,0.597],[0.121,-0.904],[0.562,-0.173],[0.817,-0.736],[0.573,-3.08],[1.057,0.443],[1.848,-0.323],[0.932,-0.501],[0.642,-0.52],[0.355,-0.792],[0.648,-1.108],[2.035,0.019],[0.331,0.505],[-0.068,0.247],[1.032,0.156],[0.657,0.967],[1.039,1.562],[-0.306,0.321],[1.621,-0.013],[0.164,0.969],[0.36,0.499],[0.634,0.487],[0.157,0.788],[-0.011,0.92],[-0.029,1.104],[-0.446,0.085],[1.137,0.625],[0.816,1.201],[0.479,1.062],[0.748,0.228],[0.299,0.403],[0.624,0.446],[0.664,-0.788],[-0.602,-2.543],[-0.563,-0.634],[-0.482,-0.715],[0.43,-1.319],[0.333,0.306],[0.868,1.629],[0.042,0.041],[0.062,0.184],[0.949,-0.008],[0.539,-0.905],[1.601,-0.911],[0.144,-1.117],[-0.433,-0.951],[-0.575,-0.458],[-0.172,-0.399],[-0.519,-0.45],[0.056,-0.456],[-0.358,-0.838],[0.349,-0.717],[0.489,-0.412],[1.303,0.297],[0.128,1.021],[0.331,0.333],[0.081,-1.57],[0.968,-0.086],[0.419,-0.356],[0.576,-0.729],[1.012,0.129],[0.806,-0.614],[0.396,-0.466],[0.62,-0.36],[0.793,-0.55],[-0.064,-0.289],[-0.104,-0.404],[0.208,-0.205],[0.179,0.099],[0.162,-0.156],[0.081,-0.033],[0.26,-0.092],[0.57,-0.638],[0.096,-0.437],[-0.09,-0.076],[0.034,-0.108],[0.027,-0.692],[0.74,-0.17],[0.3,-0.92],[-0.208,-0.094],[-0.472,-0.294],[0.09,-0.539],[-0.086,-0.56],[-0.333,-0.506],[-1.273,-2.204],[-0.117,-0.489],[-0.542,-0.345],[-0.374,-0.16],[-0.116,0.05],[-0.248,-0.179],[-0.368,0.111],[-0.469,0.402],[-0.132,-0.949],[0.258,0.007],[0.322,-0.058],[0.661,-0.428],[0.226,-0.283],[0.474,-0.384],[0.327,0.014],[-0.128,0.534],[-0.096,0.396],[1.181,-0.263],[0.929,-0.553],[0.402,0.381],[0.289,0.81],[0.274,0.955],[0.747,2.159],[-0.124,0.352],[0.205,0.023],[0.266,1.159],[0.385,-0.303],[0.416,-0.182],[0.564,-0.406],[0.08,-0.573],[0.245,-0.246],[0.149,-0.661],[-0.491,-0.256],[-0.103,-0.11],[-0.142,-0.128],[-0.087,-0.1],[-0.424,-0.611],[0.134,-0.311],[0.431,-0.284],[0.932,-0.741],[0.456,-1.375],[1.911,0.756],[0.853,-0.984],[0.88,-1.06],[2.075,-1.225],[0.389,-1.115],[0.472,-1.09],[0.999,-1.283],[-0.15,-1.674],[0.126,-0.272],[-1.237,-0.866],[-0.505,-1.064],[-0.357,0.044],[0.031,0.175],[-0.224,-0.276],[-0.19,-0.125],[-0.416,0.428],[-0.288,-0.557],[-0.16,-0.309],[-0.344,0.318],[0.125,-0.287],[-0.063,-1.103],[0.623,-0.685],[0.933,-0.484],[3.322,-2.263],[0.22,0.104],[0.843,-1.32],[0.648,0.076],[0.599,-0.429],[1.19,-0.14],[0.473,0.07],[0.236,-0.081],[0.282,-0.215],[0.716,-0.265],[0.654,0.34],[1.423,0.188],[0.392,-0.645],[0.296,-0.797],[0.922,-1.323],[0.446,-0.239],[0.671,-0.206],[0.543,0.536],[0.755,-0.111],[0.483,-0.431],[-0.487,0.748],[-3.169,4.19],[-1.001,0.645],[-0.141,0.655],[-0.363,0.436],[-0.654,0.812],[0.398,1.361],[0.938,3.096],[0.002,0.209],[0.134,0.557],[-0.021,-0.19],[0.005,-1.609],[0.219,-0.342],[0.199,-0.691],[0.874,-0.403],[0.748,-0.602],[0.142,-0.518],[0.372,-0.558],[0.709,-0.562],[-0.169,-0.474],[-0.545,-0.566],[0.495,-0.722],[-0.442,-0.474],[0.622,-0.945],[0.784,-1.192],[1.348,-0.394],[3.02,2.346],[2.052,-1.292],[1.756,-1.181],[0.321,0.214],[-0.06,-1.065],[-0.046,-0.819],[-0.212,-0.782],[0.062,-0.534],[-0.591,-0.64],[0.225,-0.304],[0.82,-0.269],[0.897,0.681],[2.009,-0.059],[0.332,0.292],[0.006,-1.52],[1.085,0.039],[0.582,-1.108]],"v":[[182.005,-42.998],[178.349,-46.09],[174.301,-49.837],[172.697,-51.734],[171.892,-54.311],[170.416,-58.314],[167.479,-60.949],[163.015,-63.333],[159.484,-64.609],[158.53,-64.734],[153.166,-64.654],[152.534,-64.572],[151.945,-61.583],[152.208,-59.518],[151.535,-58.781],[150.945,-59.072],[150.179,-59.661],[148.672,-59.251],[147.884,-60.007],[146.938,-60.872],[144.585,-61.083],[139.138,-60.485],[136.377,-60.908],[135.39,-60.02],[134.048,-60.967],[134.103,-64.351],[133.866,-67.153],[131.828,-68.204],[130.349,-70.128],[125.516,-69.764],[119.062,-68.872],[118.719,-69.528],[117.724,-70.117],[116.869,-70.623],[116.586,-71.337],[114.042,-73.308],[115.148,-74.234],[115.042,-75.053],[109.307,-77.498],[107.488,-75.831],[105.692,-73.581],[105.916,-73.941],[105.835,-74.571],[104.174,-76.189],[105.379,-77.65],[105.273,-78.468],[102.5,-80.122],[100.701,-79.648],[97.203,-80.074],[95.987,-79.458],[96.466,-77.993],[94.671,-77.256],[93.358,-76.148],[93.492,-75.641],[94.458,-73.016],[92.768,-72.092],[88.147,-72.906],[87.505,-72.541],[85.427,-72.975],[83.516,-74.325],[81.942,-73.96],[81.359,-70.972],[80.31,-68.299],[78.048,-67.609],[76.997,-69.992],[76.312,-72.316],[73.206,-76.044],[72.673,-77.059],[73.924,-76.904],[75.857,-77.594],[75.991,-81.837],[74.357,-82.812],[71.979,-84.05],[69.89,-85.434],[68.254,-85.859],[66.84,-86.462],[63.591,-84.636],[63.596,-84.614],[62.768,-83.51],[63.132,-82.373],[62.512,-81.471],[59.205,-82.519],[57.346,-83.231],[56.315,-83.804],[56.452,-84.374],[55.054,-85.898],[51.731,-86.601],[48.81,-85.86],[46.578,-84.386],[47.556,-85.606],[46.857,-87.205],[44.385,-87.105],[42.358,-87.173],[41.154,-87.579],[39.523,-86.492],[39.416,-84.954],[37.406,-84.169],[33.656,-82.971],[35.288,-85.006],[37.023,-86.423],[37.828,-88.318],[40.803,-90.863],[43.473,-93.311],[44.913,-97.005],[47.372,-100.046],[47.242,-102.676],[45.109,-104.506],[45.406,-105.441],[45.26,-106.248],[43.687,-107.635],[38.966,-109.184],[38.515,-108.4],[35.198,-106.92],[32.992,-105.523],[34.797,-108.502],[34.164,-109.321],[31.083,-110.635],[29.823,-110.82],[30.495,-111.502],[31.227,-112.532],[31.18,-114.863],[26.976,-115.852],[24.322,-112.02],[22.57,-110.252],[22.297,-107.064],[19.971,-107.322],[19.451,-106.812],[18.617,-106.906],[18.166,-106.122],[19.53,-104.127],[19.862,-103.63],[19.192,-103.854],[17.352,-103.2],[15.112,-102.95],[14.158,-103.075],[8.148,-102.346],[7.885,-101.374],[8.323,-101.079],[5.937,-100.251],[2.924,-99.452],[0.273,-97.736],[-2.425,-95.734],[-2.688,-94.765],[-3.821,-93.816],[-4.779,-93.308],[-5.026,-91.367],[-4.115,-90.525],[-3.777,-88.762],[-3.255,-86.889],[-3.338,-85.73],[-4.034,-85.357],[-4.813,-87.581],[-5.402,-87.342],[-9.899,-86.423],[-11.672,-85.234],[-13.162,-84.945],[-14.23,-84.786],[-15.709,-81.577],[-13.405,-80.044],[-12.731,-77.544],[-9.76,-74.717],[-9.181,-69.669],[-10.865,-65.033],[-11.423,-66.161],[-11.398,-68.902],[-12.149,-71.048],[-10.633,-72.844],[-10.738,-73.662],[-18.608,-77.583],[-19.374,-77.271],[-19.546,-76.682],[-21.156,-76.424],[-21.237,-75.794],[-20.696,-74.76],[-21.416,-74.812],[-22.891,-75.52],[-24.432,-74.044],[-22.694,-71.904],[-20.822,-69.917],[-22.271,-70.878],[-24.906,-73.617],[-24.937,-75.243],[-25.239,-76.688],[-25.667,-78.389],[-25.487,-79.408],[-25.128,-79.808],[-25.313,-80.796],[-26.117,-80.903],[-27.083,-78.26],[-26.841,-77.04],[-26.853,-76.73],[-26.86,-75.074],[-27.334,-74.652],[-29.197,-73.1],[-28.575,-70.893],[-28.513,-70.85],[-27.914,-70.531],[-27.945,-68.686],[-27.976,-67.23],[-27.588,-63.889],[-28.202,-61.028],[-26.494,-59.613],[-23.381,-58.874],[-20.344,-56.548],[-20.579,-54.803],[-20.363,-53.406],[-18.9,-51.184],[-21.237,-50.674],[-21.07,-51.92],[-21.415,-52.775],[-22.683,-53.855],[-22.612,-55.141],[-22.765,-56.234],[-24.274,-57.439],[-26.035,-57.189],[-26.522,-54.777],[-27.387,-51.559],[-29.372,-49.286],[-30.328,-46.48],[-32.404,-45.118],[-33.701,-45.186],[-34.665,-45.721],[-33.691,-46.303],[-33.04,-47.161],[-31.994,-49.373],[-30.033,-50.981],[-29.71,-53.286],[-29.087,-54.376],[-28.289,-55.26],[-29.386,-57.419],[-29.603,-59.356],[-29.705,-61.665],[-29.337,-69.926],[-29.841,-70.585],[-31.03,-70.715],[-31.138,-70.717],[-32.533,-72.096],[-30.52,-75.227],[-29.136,-78.818],[-30.748,-80.557],[-32.105,-80.743],[-33.868,-80.731],[-35.89,-81.751],[-36.373,-80.743],[-36.64,-78.596],[-40.173,-71.257],[-40.495,-67.441],[-41.439,-62.324],[-41.305,-61.816],[-37.365,-58.571],[-38.717,-56.076],[-38.828,-56.137],[-39.684,-56.686],[-41.36,-58.089],[-44.045,-60.421],[-45.578,-61.057],[-46.025,-62.292],[-48.347,-63.32],[-52.142,-64.58],[-54.477,-65.465],[-54.778,-63.535],[-51.878,-60.536],[-53.378,-57.649],[-53.677,-56.238],[-54.414,-56.812],[-55.188,-58.061],[-55.955,-57.749],[-58.44,-57.484],[-59.562,-57.317],[-60.378,-56.674],[-61.528,-56.781],[-62.434,-56.606],[-64.458,-55.249],[-63.58,-58.752],[-64.365,-59.201],[-69.15,-54.951],[-71.738,-53.814],[-73.129,-52.92],[-75.028,-52.423],[-76.735,-50.085],[-77.675,-49.583],[-78.416,-50.324],[-79.047,-51.14],[-78.549,-51.764],[-78.206,-54.648],[-79.164,-55.387],[-80.022,-55.333],[-81.258,-56.037],[-83.449,-56.398],[-83.561,-55.123],[-83.244,-52.469],[-83.318,-49.695],[-82.531,-48.408],[-82.491,-46.294],[-83.271,-44.744],[-83.88,-44.946],[-84.801,-44.885],[-86.747,-46.251],[-88.144,-44.83],[-90.652,-43.334],[-91.035,-42.833],[-90.014,-39.999],[-91.343,-37.959],[-91.341,-37.911],[-92.504,-37.999],[-94.006,-38.368],[-95.231,-39.652],[-97.6,-39.71],[-96.831,-37.894],[-96.058,-35.393],[-95.684,-34.51],[-97.189,-35.438],[-98.337,-36.4],[-99.699,-36.419],[-99.525,-38.145],[-99.928,-39.242],[-99.991,-39.294],[-99.976,-39.447],[-100.572,-41.255],[-100.142,-42.669],[-100.766,-43.663],[-101.298,-43.864],[-101.673,-44.906],[-105.126,-47.781],[-103.004,-47.045],[-100.398,-45.79],[-95.338,-44.408],[-88.068,-47.917],[-88.149,-48.548],[-88.457,-48.881],[-88.886,-51.489],[-88.967,-52.324],[-90.808,-53.57],[-94.279,-56.932],[-97.617,-59.73],[-103.183,-59.967],[-103.319,-62.038],[-104.138,-62.144],[-104.596,-62.908],[-104.866,-63.275],[-105.808,-63.472],[-107.028,-62.873],[-108.995,-62.855],[-109.149,-63.036],[-110.815,-64.318],[-108.57,-64.932],[-108.043,-66.243],[-109.999,-67.32],[-111.878,-69.433],[-116.469,-68.635],[-117.572,-66.903],[-117.876,-65.742],[-118.489,-65.51],[-118.612,-67.373],[-119.485,-67.602],[-123.531,-65.403],[-126.497,-64.011],[-126.317,-63.304],[-127.387,-63.115],[-129.199,-62.387],[-130.006,-60.795],[-131.561,-59.686],[-132.725,-58.665],[-133.691,-56.609],[-136.769,-53.429],[-140.701,-45.958],[-142.522,-41.921],[-145.518,-37.846],[-148.721,-33.85],[-152.749,-30.339],[-153.338,-30.1],[-153.499,-28.87],[-155.192,-27.291],[-155.225,-26.615],[-155.059,-25.85],[-155.324,-25.201],[-156.037,-23.251],[-155.777,-19.131],[-154.938,-15.104],[-154.569,-14.214],[-154.494,-13.725],[-154.494,-12.721],[-149.126,-12.689],[-147.289,-14.529],[-145.779,-16.285],[-144.899,-14.641],[-143.639,-13.406],[-142.865,-11.1],[-141.46,-6.777],[-140.133,-3.696],[-137.779,-3.738],[-136.809,-4.959],[-135.096,-6.309],[-134.371,-11.726],[-134.011,-14.136],[-132.521,-15.23],[-131.637,-17.408],[-130.892,-19.857],[-132.079,-21.452],[-133.283,-24.424],[-130.46,-29.749],[-126.225,-34.559],[-125.09,-36.383],[-125.07,-39.514],[-124.468,-40.79],[-123.441,-41.143],[-122.834,-41.774],[-122.714,-42.105],[-122.093,-42.585],[-120.429,-42.395],[-118.769,-42.193],[-119.304,-39.339],[-120.206,-36.923],[-122.033,-34.367],[-124.262,-31.831],[-126.475,-29.683],[-126.079,-27.852],[-125.977,-24.742],[-125.842,-24.234],[-125.198,-23.519],[-124.102,-20.014],[-122.161,-18.662],[-119.816,-19.282],[-116.71,-19.76],[-114.384,-19.596],[-112.428,-20.803],[-110.763,-19.975],[-112.959,-17.639],[-121.577,-16.19],[-121.347,-15.32],[-121.374,-14.791],[-121.604,-13.921],[-119.877,-12.964],[-120.65,-10.173],[-121.97,-11.04],[-125.456,-10.102],[-125.144,-9.337],[-125.047,-8.908],[-125.111,-8.805],[-125.248,-8.598],[-125.953,-8.096],[-126.385,-7.494],[-126.32,-6.803],[-126.04,-6.188],[-126.086,-4.8],[-125.748,-3.32],[-126.222,-2.277],[-127.169,-2.3],[-128.139,-1.883],[-130.186,-0.624],[-131.422,-1.488],[-132.895,-0.648],[-133.934,-0.473],[-136.052,0.104],[-137.576,0.633],[-137.956,0.908],[-138.551,0.672],[-139.463,-0.158],[-140.426,-1.033],[-141.855,0.006],[-143.731,0.554],[-144.397,1.161],[-144.592,-0.096],[-145.253,-0.598],[-145.528,-0.514],[-146.098,-0.856],[-146.191,-1.796],[-145.881,-2.824],[-146.115,-4.175],[-145.003,-5.063],[-144.734,-6.455],[-145.33,-10.742],[-146.096,-11.053],[-149.288,-7.787],[-149.349,-7.557],[-150.339,-5.497],[-149.903,-4.393],[-150.497,-2.488],[-150.267,-1.617],[-149.456,0.33],[-148.883,1.743],[-152.871,1.794],[-155.448,3.647],[-156.938,4.318],[-157.698,5.141],[-157.555,5.861],[-157.64,7.219],[-159.271,8.745],[-161.507,9.915],[-163.254,10.859],[-163.54,11.864],[-163.3,12.741],[-164.225,13.459],[-165.609,14.392],[-167.573,13.586],[-168.939,14.228],[-168.939,14.754],[-168.45,16.28],[-168.425,16.413],[-171.534,16.363],[-174.667,17.525],[-174.542,18.477],[-173.532,19.248],[-173.455,19.836],[-172.485,20.309],[-170.273,20.861],[-168.517,22.229],[-168.482,24.116],[-167.553,24.718],[-167.738,26.945],[-168.12,29.549],[-169.929,31.17],[-171.29,30.389],[-172.771,30.517],[-174.15,30.363],[-174.911,30.08],[-176.793,30.104],[-178.802,29.956],[-182.498,31.331],[-182.603,32.149],[-181.56,33.198],[-181.41,34.301],[-181.668,37.29],[-183.283,41.754],[-183.201,42.385],[-181.704,43.575],[-181.969,44.865],[-182.301,46.478],[-181.798,47.137],[-178.256,45.879],[-177.259,47.543],[-175.789,48.898],[-175.147,48.536],[-172.593,48.089],[-170.641,47.783],[-168.358,45.615],[-166.14,45.46],[-165.91,44.59],[-164.494,42.553],[-164.681,41.84],[-163.984,39.426],[-163.408,38.45],[-163.017,37.187],[-161.74,36.525],[-160.409,35.79],[-158.963,34.237],[-158.66,33.295],[-158.261,31.926],[-156.387,31.479],[-155.774,30.857],[-155.754,30.853],[-155.602,31.007],[-152.332,31.588],[-150.54,30.559],[-149.179,30.137],[-147.784,28.839],[-146.966,29.019],[-146.406,29.261],[-146.105,29.825],[-145.618,30.896],[-144.483,31.814],[-143.93,33.188],[-142.659,34.277],[-138.849,37.178],[-135.572,40.437],[-135.978,44.201],[-135.087,44.568],[-133.13,42.76],[-132.25,41.305],[-132.961,39.738],[-132.666,39.18],[-132.21,38.93],[-131.158,39.459],[-130.526,38.641],[-132.361,36.945],[-133.473,36.355],[-134.481,35.352],[-134.711,34.482],[-137.835,33.157],[-139.35,30.56],[-140.668,28.93],[-141.294,25.881],[-141.289,25.879],[-139.785,25.113],[-139.824,26.18],[-139.46,26.821],[-138.122,26.928],[-137.408,28.512],[-136.939,28.658],[-136.15,29.094],[-135.114,29.956],[-132.089,31.989],[-129.569,34.305],[-128.364,34.626],[-127.722,34.773],[-128.255,35.436],[-128.428,36.633],[-128.801,37.87],[-127.677,39.495],[-127.794,40.87],[-127.077,41.842],[-125.647,43.165],[-125.399,44.217],[-125.576,44.753],[-124.66,45.859],[-122.703,47.346],[-121.989,47.159],[-121.56,44.954],[-119.907,43.926],[-120.61,41.271],[-121.801,39.645],[-120.448,38.564],[-119.145,37.298],[-117.158,37.732],[-116.627,37.357],[-114.953,37.626],[-114.033,36.911],[-112.123,36.622],[-111.721,35.67],[-113.194,34.544],[-113.982,33.954],[-113.682,33.811],[-112.513,31.949],[-111.595,30.729],[-110.874,29.896],[-110.839,28.892],[-110.956,27.574],[-109.28,26.668],[-109.193,25.768],[-108.429,25.374],[-106.719,22.521],[-105.43,23.637],[-105.058,23.77],[-101.884,23.418],[-101.846,23.339],[-101.576,23.575],[-100.227,23.693],[-99.499,23.265],[-98.946,23.058],[-98.462,23.239],[-97.838,23.122],[-95.594,22.109],[-93.567,21.655],[-93.06,22.118],[-95.379,24.464],[-95.273,25.281],[-94.092,26.153],[-94.323,26.268],[-94.581,26.718],[-89.834,32.034],[-88.594,35.639],[-94.191,36.739],[-98.391,36.244],[-98.805,34.668],[-99.654,34.133],[-100.9,34.604],[-104.164,34.792],[-105.874,36.014],[-109.794,36.421],[-109.794,37.462],[-109.781,37.462],[-110.894,38.469],[-113.27,38.68],[-115.296,39.036],[-115.483,39.749],[-115.245,40.161],[-115.924,41.954],[-113.739,43.236],[-110.498,47.089],[-106.652,47.359],[-102.159,47.27],[-99.996,47.228],[-98.95,47.232],[-98.827,48.046],[-99.654,50.933],[-99.888,54.242],[-101.037,55.471],[-101.469,56.669],[-101.798,58.067],[-103.231,58.594],[-103.374,59.947],[-102.876,60.456],[-101.248,64.423],[-100.879,65.312],[-99.192,65.9],[-99.621,66.968],[-98.442,68.979],[-96.929,69.778],[-95.547,71.208],[-93.66,74.59],[-89.303,81.682],[-86.826,85.225],[-85.679,86.766],[-84.823,88.765],[-84.589,92.007],[-84.055,95.516],[-83.605,96.301],[-79.229,95.71],[-75.256,94.743],[-72.069,93.096],[-68.525,90.916],[-65.028,89.804],[-62.094,87.106],[-56.549,80.991],[-55.667,80.528],[-54.831,78.618],[-54.205,78.238],[-53.812,78.077],[-53.142,76.788],[-53.506,76.148],[-55.486,74.262],[-56.817,73.335],[-58.669,73.742],[-59.894,71.937],[-62.494,71.706],[-62.745,72.145],[-63.52,72.199],[-64.522,72.471],[-66.971,72.887],[-67.924,72.762],[-70.006,73.869],[-70.506,72.679],[-70.993,71.385],[-72.772,66.732],[-73.872,65.39],[-75.734,64.423],[-75.371,62.221],[-74.001,63.395],[-71.932,63.317],[-70.592,65.152],[-63.798,67.508],[-58.498,69.213],[-53.31,71.174],[-44.228,72.601],[-40.447,74.824],[-39.175,74.902],[-38.451,76.273],[-36.944,79.154],[-36.125,79.26],[-34.981,78.398],[-34.23,79.786],[-33.41,79.891],[-30.112,79.179],[-29.698,82.598],[-28.239,89.997],[-22.778,104.857],[-21.753,104.719],[-19.773,103.402],[-18.213,102.619],[-16.895,99.739],[-15.822,90.389],[-13.156,89.116],[-8.572,86.307],[-5.703,85.07],[-4.312,83.075],[-3.25,80.695],[-0.445,79.317],[4.68,77.426],[4.927,79.156],[5.292,79.796],[7.473,81.59],[9.424,84.505],[10.257,90.092],[10.625,90.981],[15.07,89.596],[16.19,92.294],[17.461,93.611],[19.041,95.204],[19.057,97.693],[19.023,100.454],[17.528,103.549],[17.404,104.502],[19.969,107.572],[22.161,111.335],[24.042,113.825],[25.599,114.98],[26.599,116.072],[28.963,116.14],[29.2,112.665],[24.789,106.278],[23.07,104.325],[23.168,101.893],[25.268,98.387],[26.497,98.779],[30.115,102.937],[30.245,103.031],[30.718,103.359],[32.633,101.917],[34.654,99.89],[38.379,96.145],[37.797,92.604],[35.723,90.919],[34.905,89.152],[34.148,88.119],[32.346,87.395],[32.109,86.01],[30.91,82.945],[33.113,81.505],[34.194,79.994],[37.851,79.178],[39.202,81.917],[40.093,81.549],[42.892,78.804],[45.729,78.122],[46.632,76.855],[48.943,76.549],[51.661,75.911],[53.664,73.667],[55.013,72.473],[56.916,71.475],[58.169,68.941],[57.822,68.15],[58.208,67.32],[58.887,66.77],[59.487,66.692],[60.007,66.187],[60.252,66.093],[60.607,65.557],[61.849,63.469],[61.511,62.273],[60.457,62.04],[60.516,61.689],[59.69,60.419],[61.361,59.09],[60.304,57.126],[59.661,56.857],[59.473,55.71],[59.555,54.14],[58.956,52.559],[57.732,51.238],[62.644,46.09],[61.695,45.113],[60.017,44.107],[58.832,44.025],[58.159,44.866],[57.275,44.708],[56.478,45.367],[54.885,45.59],[53.555,43.144],[54.195,43.15],[55.092,42.79],[56.68,41.087],[57.419,40.281],[58.822,39.969],[59.742,39.855],[59.359,41.456],[60,42.096],[62.49,40.132],[65.419,39.381],[66.328,40.769],[66.536,43.163],[68.71,44.145],[68.682,50.765],[69.185,51.424],[69.815,51.488],[72.567,52.502],[73.503,51.601],[74.726,51.232],[75.539,49.486],[76.122,48.137],[76.708,47.352],[75.811,45.947],[74.429,45.167],[74.109,44.852],[73.661,44.492],[73.409,44.168],[73.363,42.546],[73.492,41.656],[74.763,40.792],[76.494,38.036],[78.327,34.175],[83.632,32.331],[85.957,29.202],[89.117,26.808],[93.119,21.719],[94.278,18.37],[96.185,15.603],[96.411,11.579],[97.279,6.706],[97.091,5.994],[95.357,2.021],[92.63,0.143],[92.128,0.803],[92.122,1.275],[91.317,0.555],[90.684,0.637],[89.437,1.921],[88.573,0.251],[87.753,0.146],[86.546,0.637],[86.701,-0.312],[86.638,-3.356],[89.017,-4.817],[91.723,-6.432],[99.877,-15.122],[100.548,-15.307],[104.88,-14.992],[106.697,-15.398],[108.388,-16.712],[111.945,-15.904],[113.361,-15.988],[114.005,-16.339],[114.919,-17.196],[117.293,-16.05],[119.38,-15.357],[122.878,-16.941],[123.738,-19.025],[124.919,-21.277],[128.51,-24.456],[129.911,-25.064],[131.294,-24.656],[133.169,-23.864],[135.119,-24.965],[137.268,-26.183],[137.286,-23.695],[126.341,-12.329],[124.253,-9.955],[123.606,-8.229],[122.442,-6.99],[121.944,-4.282],[123.318,-0.243],[125.297,9.236],[125.378,9.887],[126.403,9.749],[126.336,9.18],[129.283,5.002],[129.794,3.895],[130.653,2.116],[133.312,1.21],[134.555,-1.221],[135.128,-2.739],[136.632,-4.001],[137.651,-6.437],[136.789,-7.463],[137.041,-8.932],[137.169,-11.312],[135.396,-12.003],[137.263,-14.838],[140.174,-17.921],[144.359,-19.992],[154.549,-22.587],[160.588,-26.627],[166.848,-27.907],[167.633,-28.357],[167.452,-31.551],[167.212,-34.031],[165.831,-35.833],[165.305,-37.338],[163.043,-38.07],[163.974,-38.731],[165.994,-38.139],[168.968,-37.182],[175.642,-37.239],[176.533,-37.607],[180.009,-38.597],[182.817,-39.837]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[509.233,206.319],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 50","np":3,"cix":2,"bm":0,"ix":50,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 4 Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[359.823,1053.814,0],"ix":2},"a":{"a":0,"k":[568.529,1172.373,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":5,"s":[100.8,100.8,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":10,"s":[67.2,67.2,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":20,"s":[84,84,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":160,"s":[84,84,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":170,"s":[67.2,67.2,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":175,"s":[100.8,100.8,100]},{"t":180.00000733155,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.608,-1.119],[0.396,-0.964],[-0.492,-0.927],[-3.004,0.599],[-0.194,0.165],[0.403,4.528],[0.587,0.992]],"o":[[-1.628,0.699],[-1.721,4.18],[1.379,2.594],[0.852,-0.169],[1.811,-1.543],[-0.25,-2.798],[-1.519,-2.566]],"v":[[-2.417,-8.958],[-5.112,-5.602],[-4.151,3.627],[3.414,9.478],[5.022,8.674],[6.216,-0.253],[5.253,-5.441]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.936999990426,0.611999990426,0.46699999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[554.93,696.496],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[12.064,12.318],[3.081,0.43],[6.642,-9.511],[0.52,-6.691],[-1.213,-3.575],[-3.267,-3.273],[-10.888,-20.324],[-0.344,1.106],[0,0],[-0.264,0.699],[-2.378,1.538],[0,0],[-0.388,0.217],[-2.719,1.988],[-3.837,-0.357],[-1.362,-3.145],[-0.119,-2.263]],"o":[[-6.499,-6.635],[-13.38,-1.868],[-1.436,2.055],[-0.395,5.092],[2.728,8.036],[3.789,-1.79],[0.236,-0.633],[0.267,-0.856],[0.206,-0.749],[0.982,-2.701],[0,0],[0.372,-0.245],[2.479,-1.479],[7.984,-5.876],[3.61,0.337],[1.678,3.847],[0.37,-1.276]],"v":[[22.043,-19.365],[4.449,-27.661],[-28.572,-13.289],[-33.712,0.138],[-31.503,12.644],[-20.908,29.529],[-10.718,27.078],[-8.484,21.122],[-8.119,19.921],[-7.529,18.074],[-2.226,12.087],[-2.186,12.062],[-1.042,11.358],[6.984,6.498],[18.786,-5.206],[26.234,3.972],[28.465,13.567]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.419999994016,0.231000010173,0.195999998205,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[575.117,670.377],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.197,-0.103],[-1.206,-0.857],[0.636,1.682],[0,0]],"o":[[0.877,-0.138],[3.153,0.273],[-0.637,-1.682],[0,0],[0,0]],"v":[[-4.905,2.792],[-1.768,2.68],[4.905,5.185],[2.995,0.14],[-2.959,-5.185]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999991623,0.187999994615,0.165000002992,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[594.727,665.493],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.951,7.072],[-12.624,-8.604],[0,0],[-0.031,-0.845],[-0.001,0],[-0.039,-0.501],[0,-0.001],[2.976,-5.501],[6.157,-0.598],[3.569,1.227],[3.526,2.725],[1.202,3.421],[2.161,5.455],[-0.001,0]],"o":[[1.447,-10.757],[6.341,4.322],[0.453,1.539],[0,0],[0.621,4.944],[0.487,6.269],[-1.284,12.243],[-1.607,2.97],[-1.783,0.173],[-3.939,-1.354],[-5.133,-3.969],[-9.86,-8.408],[-0.001,-0.002],[7.964,-3.303]],"v":[[-24.653,-12.506],[17.541,-32.81],[25.537,-22.859],[26.138,-19.15],[26.139,-19.15],[27.099,-9.949],[26.467,6.56],[21.521,30.421],[9.834,41.24],[2.697,39.573],[-8.4,34.246],[-17.222,21.63],[-26.091,-1.119],[-27.585,-0.742]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.936999990426,0.611999990426,0.46699999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[575.347,682.744],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.321,-3.664],[3.326,-2.384],[4.42,-0.401],[3.072,0.823],[4.997,4.976],[0.833,3.124],[-13.03,13.399],[-6.073,-1.007],[-0.956,-0.208],[-6.651,-6.183],[-1.848,-9.837],[0.221,-1.86]],"o":[[-2.603,4.108],[-5.206,3.733],[-6.89,0.624],[-5.506,-1.474],[-4.807,-4.787],[-0.98,-3.675],[10.271,-10.56],[0.446,0.074],[3.142,0.686],[2.257,2.09],[0.873,4.643],[-0.964,8.105]],"v":[[29.637,20.755],[22.069,29.836],[6.986,34.38],[-8.212,32.83],[-24.598,24.859],[-31.783,11.424],[-24.013,-24.068],[6.482,-33.996],[8.692,-33.555],[25.809,-25.061],[36.17,-6.852],[36.417,3.336]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.419999994016,0.231000010173,0.195999998205,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[573.454,677.605],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.558,0.355],[4.643,-1.836],[2.05,-5.706],[-5.961,-0.624],[-1.618,4.093],[3.844,4.81]],"o":[[-1.141,-0.384],[-0.421,0.167],[-2.806,7.808],[5.533,0.579],[0.535,-1.354],[-0.678,-0.849]],"v":[[7.472,-13.141],[-2.424,-12.917],[-10.49,-4.732],[-2.177,14.174],[9.684,2.598],[9.452,-11.376]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.976000019148,0.764999988032,0.365000017952,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[551.099,654.293],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.93,-4.219],[3.597,9.245],[2.374,5.754],[-13.486,20.583],[-4.394,-1.239],[-0.707,-8.01],[1.63,-11.159]],"o":[[0.486,-5.764],[-3.442,-8.844],[-2.974,-7.207],[4.393,1.238],[-5.558,13.995],[0.6,6.794],[-1.186,7.994]],"v":[[3.054,40.401],[-0.12,16.77],[-10.036,-0.618],[0.154,-40.401],[13.333,-36.686],[7.846,-3.643],[8.607,21.841]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.372999991623,0.187999994615,0.165000002992,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[542.333,686.564],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.93,-4.219],[4.698,5.234],[1.873,5.127],[-11.033,21.844],[-4.34,0.692],[-2.273,-2.204],[0.867,-2.19],[-0.707,-8.01],[1.63,-11.159]],"o":[[-3.107,-2.703],[-7.835,-8.742],[-4.083,-11.161],[5.68,-11.204],[5.728,-0.917],[-1.119,2.344],[-5.558,13.995],[0.6,6.794],[-1.186,7.994]],"v":[[8.265,45.195],[-3.833,33.243],[-17.448,15.005],[-4.971,-28.907],[8.344,-44.278],[21.531,-38.667],[18.544,-31.893],[13.057,1.15],[13.818,26.634]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.419999994016,0.231000010173,0.195999998205,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[537.122,681.771],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[584.746,724.666],"ix":2},"a":{"a":0,"k":[584.746,724.666],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":19,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":59,"s":[8]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":121,"s":[8]},{"t":161.000006557664,"s":[0]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":8,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.388,-23.499],[3.694,-11.251],[-0.255,24.72],[-3.695,-24.72]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[600.977,762.577],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-26.948,-23.708],[-23.096,-11.092],[26.948,24.878],[5.693,1.357],[-21.091,-24.878]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[573.773,762.735],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[15.782,-14.87],[0,0],[-4.248,-2.338],[1.312,2.06],[0.305,16.741],[0,0]],"o":[[-8.419,7.933],[0,0],[16.776,3.855],[-0.964,-1.514],[-0.152,-8.357],[0,0]],"v":[[-8.515,-43.213],[-13.442,-11.351],[-5.238,54.227],[15.622,27.161],[16.33,-17.414],[14.713,-35.67]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.090000002992,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[536.814,789.158],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.603,-13.014],[0,0],[0,0],[1.312,2.061]],"o":[[12.716,6.999],[0,0],[0,0],[-10.864,3.632]],"v":[[-27.96,17.553],[33.563,-12.245],[25.302,-24.552],[-7.1,-9.515]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.075,0.090000002992,0.105999995213,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[559.536,825.833],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.579,1.82],[-2.604,1.948],[-2.222,2.1],[-0.447,-2.522],[2.049,-2.254],[-1.063,-0.664],[-2.302,-0.05],[-0.297,-1.247],[-0.325,-1.015],[-0.462,-1.926],[-0.53,-1.977],[-0.087,-1.914],[-0.218,-1.258],[0.026,-1.428],[3.433,-1.194],[4.041,0.143],[0,0]],"o":[[0,0],[1.579,-1.82],[2.603,-1.948],[2.121,-2.005],[0.363,2.042],[-1.173,1.29],[1.063,0.663],[2.302,0.048],[0.596,2.509],[0.326,1.015],[0.544,2.274],[0.37,1.379],[0.124,2.756],[0.219,1.259],[-0.044,2.401],[-3.432,1.195],[-4.775,-0.169],[0,0]],"v":[[-30.716,13.818],[-14.471,1.714],[-7.337,-8.377],[1.827,-13.913],[7.24,-18.701],[5.078,-12.15],[0.685,-8.015],[12.785,-8.635],[27.663,-8.585],[12.32,-4.326],[30.172,-4.184],[12.646,0.853],[27.992,1.049],[10.956,5.335],[22.964,5.993],[6.115,9.828],[-6.942,10.353],[-24.54,21.222]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.626999978458,0.497999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[604.082,798.728],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.643,-2.428],[0,0],[1.956,0.039],[0,0],[-0.549,2.605],[0,0],[-2.007,0],[0,0]],"o":[[0,0],[-0.5,1.892],[0,0],[-2.662,-0.052],[0,0],[0.414,-1.964],[0,0],[2.512,0]],"v":[[31.991,-16.26],[22.956,17.87],[18.77,21.028],[-28.014,20.109],[-32.084,14.99],[-25.195,-17.698],[-21.04,-21.067],[28.291,-21.067]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.298000021542,0.411999990426,0.976000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[638.057,791.916],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[575.271,810.4],"ix":2},"a":{"a":0,"k":[575.271,810.4],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[530.787,840.56],"ix":2},"a":{"a":0,"k":[530.787,840.56],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[37]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":70,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":110,"s":[0]},{"t":160.000006516934,"s":[37]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[540.409,747.57],"ix":2},"a":{"a":0,"k":[540.409,747.57],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":59,"s":[8]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":121,"s":[8]},{"t":160.000006516934,"s":[0]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.01,-0.021],[1.493,-2.062],[1.288,-2.885],[0.823,-3.61],[0.623,-3.983],[-2.293,-12.105],[-0.012,0.37],[-0.121,-0.184],[-0.4,-0.581],[0.192,1.335],[-0.836,8.315],[-2.103,7.741],[-2.275,2.875],[-0.888,2.566],[1.163,1.443],[-0.017,-0.257]],"o":[[1.201,2.612],[-1.828,2.525],[-1.516,3.394],[-0.896,3.929],[-1.915,12.238],[0.204,-1.721],[0.144,0.183],[0.205,0.312],[-0.254,-1.325],[-1.192,-8.286],[0.803,-7.981],[0.955,-3.514],[1.666,-2.106],[0.595,-1.719],[-0.027,-0.034],[-0.101,-0.114]],"v":[[6.55,-36.779],[4.245,-29.321],[-0.691,-21.634],[-3.877,-10.977],[-6.26,0.856],[-6.11,37.687],[-5.779,35.207],[-5.539,35.557],[-4.606,36.913],[-5.274,32.922],[-5.549,7.85],[-1.074,-15.915],[3.54,-25.734],[7.76,-32.58],[7.24,-37.652],[7.363,-35.871]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[593.358,823.484],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.809,-1.078],[2.437,1.231],[4.807,-0.802],[5.965,0.018],[2.136,4.273],[-3.576,-1.095],[-4.808,-0.534],[-4.54,0.015],[-2.597,3.093],[0.347,-0.793]],"o":[[-2.479,0.081],[-4.396,-2.22],[-5.075,0.801],[-4.015,-0.012],[-2.137,-4.54],[4.362,1.335],[4.807,0.801],[17.676,-0.061],[-0.215,0.926],[-2.751,6.272]],"v":[[22.399,5.708],[14.934,4.034],[1.046,2.699],[-16.482,6.454],[-31.003,-0.039],[-24.682,-4.601],[-6.699,-0.506],[7.278,-0.684],[33.139,-6.472],[32.152,-3.858]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[585.553,796.791],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.404,12.82],[2.671,8.279],[0,0],[0,0],[0,0],[9.081,7.745],[0,0],[0,0],[-4.006,-14.422],[2.67,-13.087],[0,0],[-30.01,3.356],[0,0],[0,0],[0,0],[0,15.757],[-4.274,4.006]],"o":[[2.404,-12.82],[-2.67,-8.279],[0,0],[0,0],[0,0],[-9.08,-7.745],[0,0],[0,0],[4.006,14.422],[-2.671,13.086],[0,0],[0,0],[0,0],[15.861,-4.448],[0,0],[0,-15.758],[4.273,-4.006]],"v":[[45.67,-25.023],[36.055,-53.065],[32.049,-70.047],[23.236,-73.3],[26.674,-23.545],[-9.081,-61.344],[-21.366,-73.3],[-37.658,-70.047],[-31.782,-36.506],[-25.906,12.635],[-48.074,54.299],[10.543,69.945],[13.532,47.534],[26.819,66.848],[43.534,56.435],[29.913,19.847],[33.385,-8.196]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[574.047,811.158],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-12.396,1.069],[0,0],[0,0]],"o":[[0,0],[0,0],[12.397,-1.068],[0,0],[0,0]],"v":[[-3.472,-19.363],[-22.969,16.425],[2.025,20.431],[22.969,16.425],[11.217,-21.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.862999949736,0.913999968884,0.941000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[580.847,857.32],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-8.15,-5.109],[4.742,-0.738],[0,0],[-1.987,1.116],[0,0]],"o":[[0.344,6.836],[-6.855,1.069],[0,0],[1.775,-0.856],[0,0]],"v":[[8.52,-5.463],[3.545,10.46],[-8.864,-5.591],[-5.753,-6.707],[-1.129,-11.529]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[589.108,743.448],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-6.677,1.603],[0,0],[4.081,2.467],[0,0]],"o":[[0,0],[10.126,-2.43],[0,0],[-2.829,-1.545],[0,0]],"v":[[-17.66,-6.484],[7.534,12.862],[9.903,-6.484],[3.448,-8.951],[-4.915,-14.464]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[570.341,744.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-4.018,0.134],[0,0],[0,0],[0,0],[21.22,0.801],[0,0]],"o":[[0,0],[0,0],[4.018,-0.134],[0,0],[0,0],[0,0],[-21.22,-0.801],[0,0]],"v":[[-30.591,-23.859],[-14.483,-30.914],[0.003,-25.85],[8.053,-30.415],[19.458,-22.966],[25.161,1.18],[7.534,30.112],[-27.463,2.969]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.862999949736,0.913999968884,0.941000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[581.435,764.97],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.339,-21.36],[0,0],[-4.248,2.389],[2.455,-0.029],[14.149,9.114],[0,0]],"o":[[2.314,11.395],[0,0],[12.716,-7.153],[-1.805,0.021],[-5.101,-3.286],[0,0]],"v":[[-35.917,-9.327],[-25.323,10.793],[27.54,30.774],[22.971,6.375],[-14.997,-20.811],[-36.541,-33.163]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[642.637,774.274],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.379,1.053],[0,0],[0,0],[2.455,-0.028]],"o":[[12.716,-7.153],[0,0],[0,0],[-1.805,0.021]],"v":[[-12.342,23.261],[25.721,-24.314],[10.832,-23.78],[-16.912,-1.138]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[682.52,781.787],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.452,1.939],[-2.47,2.14],[-2.077,2.266],[-0.63,-2.496],[1.891,-2.408],[-1.114,-0.588],[-2.193,0.373],[-0.387,-1.228],[0,0],[-0.887,-1.782],[0,0],[-0.224,-1.913],[0,0],[-0.077,-1.434],[0,0],[4.634,0.615],[0,0]],"o":[[0,0],[1.452,-1.938],[2.47,-2.141],[1.981,-2.162],[0.511,2.021],[-1.084,1.378],[1.113,0.589],[2.282,-0.387],[0.779,2.473],[0,0],[0.671,1.348],[0,0],[0.322,2.753],[0,0],[0.128,2.41],[0,0],[-3.502,-0.465],[0,0]],"v":[[-26.27,18.469],[-16.048,1.543],[-11.043,-8.588],[-3.489,-15.6],[2.567,-20.236],[0.217,-13.744],[-3.192,-9.457],[10.66,-11.813],[25.49,-13.123],[10.456,-7.024],[0.69,-3.058],[11.116,-2.578],[-1.243,1.387],[9.744,2.037],[0.4,4.9],[9.633,5.625],[-6.437,9.787],[-17.608,22.733]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.626999978458,0.497999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[716.904,746.236],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.452,1.939],[-2.47,2.14],[-2.077,2.266],[-0.63,-2.496],[1.891,-2.408],[-1.114,-0.588],[-2.311,0.117],[-0.387,-1.228],[0,0],[-0.571,-1.164],[0,0],[-0.224,-1.913],[0,0],[-0.076,-1.433],[3.356,-1.445],[4.033,0.507],[0,0]],"o":[[0,0],[1.452,-1.938],[2.47,-2.141],[1.981,-2.162],[0.511,2.021],[-1.084,1.378],[1.113,0.589],[2.312,-0.117],[0.779,2.473],[0,0],[1.035,2.11],[0,0],[0.323,2.754],[0,0],[0.129,2.41],[-3.355,1.445],[-3.506,-0.441],[0,0]],"v":[[-26.27,18.192],[-16.048,1.266],[-11.043,-8.865],[-3.489,-15.877],[2.567,-20.513],[0.217,-14.021],[-3.192,-9.734],[11.147,-11.662],[25.49,-13.4],[9.894,-7.181],[12.323,-6.059],[11.116,-2.855],[12.649,-1.125],[9.744,1.76],[12.151,3.165],[5.213,6.614],[-6.437,9.51],[-16.485,23.009]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.819999964097,0.442999985639,0.328999986836,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[716.904,746.512],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[691.795,762.691],"ix":2},"a":{"a":0,"k":[691.795,762.691],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":74.5,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":89,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":103.5,"s":[5]},{"t":118.000004806239,"s":[0]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[668.293,804.697],"ix":2},"a":{"a":0,"k":[668.293,804.697],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[602.519,741.271],"ix":2},"a":{"a":0,"k":[602.519,741.271],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[27]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":70,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":109,"s":[0]},{"t":161.000006557664,"s":[27]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.472,-2.274],[0.756,0],[3.944,3.512],[0.023,0.856],[-3.78,-1.121]],"o":[[-0.671,0.11],[-6.04,0],[0.024,-1.371],[3.692,0.596],[0.092,1.499]],"v":[[9.951,4.907],[7.81,5.076],[-9.935,-0.586],[-9.951,-5.076],[9.643,1.244]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.819999964097,0.442999985639,0.328999986836,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[576.619,721.086],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.878,5.751],[0,0],[0,0],[4.343,-6.441],[0,0],[-27.941,0.098],[0,0]],"o":[[-4.342,-6.441],[0,0],[0,0],[-3.878,5.751],[0,0],[25.031,-0.087],[0,0]],"v":[[12.534,-7.294],[10.205,-30.652],[-10.206,-31.274],[-12.536,-7.915],[-29.5,-0.828],[-0.001,31.176],[29.499,-0.206]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.626999978458,0.497999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[576.451,741.161],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[613.377,872.433],"ix":2},"a":{"a":0,"k":[613.377,872.433],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":89.5,"s":[4]},{"t":161.000006557664,"s":[0]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":14,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.661,-27.594],[1.071,-8.894],[-0.229,5.097],[0.507,32.201],[-1.732,8.056],[0,0]],"o":[[0,0],[4.79,79.55],[-0.962,7.994],[0.228,-5.098],[-0.478,-30.374],[1.733,-8.056],[0,0]],"v":[[29.121,-86.306],[47.375,-49.679],[33.226,78.311],[-41.318,75.06],[-51.688,-15.924],[-46.466,-67.737],[-35.628,-85.181]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[571.653,943.165],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.662,-27.594],[1.07,-8.894],[0.284,-8.821],[0,0],[4.577,-0.276],[0,0],[-0.895,28.723],[0.349,2.59],[0,0],[2.829,-9.515],[2.141,-4.41],[0.656,-2.447],[1.658,-3.578],[0,0],[0,0],[-3.074,7.947],[-0.228,5.097],[0.507,32.202],[-1.732,8.057],[0,0]],"o":[[0,0],[4.79,79.55],[-0.963,7.993],[-0.527,16.312],[0,0],[-4.443,0.267],[0,0],[0.453,-14.539],[-1.311,-9.732],[0,0],[-2.588,8.708],[-2.141,4.409],[-0.655,2.448],[-1.658,3.577],[0,0],[0,0],[3.126,-8.081],[0.229,-5.098],[-0.478,-30.374],[1.733,-8.056],[0,0]],"v":[[32.979,-136.813],[51.234,-100.186],[33.899,35.817],[30.895,61.695],[14.377,135.935],[9.73,136.547],[3.824,135.028],[2.926,60.092],[11.084,27.86],[6.744,-69.031],[-2.415,1.886],[-12.94,42.653],[-17.519,55.503],[-21.587,74.611],[-46.138,135.028],[-56.024,133.052],[-45.666,54.527],[-32.633,24.553],[-39.359,-66.534],[-34.138,-118.347],[-23.3,-135.791]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.626999978458,0.497999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[565.372,993.673],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.551,0.667],[-1.126,-1.418],[-1.425,-3.65],[-6.232,0.534],[1.335,2.685],[-0.002,2.077],[-0.525,-0.931],[-2.381,-1.56],[-0.15,-0.122],[3.728,-4.806],[0,0],[2.997,9.301],[0.526,1.986]],"o":[[1.409,0.701],[2.404,3.116],[1.424,3.65],[4.842,-0.415],[-0.68,-1.368],[0.528,1.047],[1.398,2.48],[0.19,0.124],[0.303,0.172],[0,0],[-2.552,-2.749],[-1.631,-5.06],[-0.599,-1.908]],"v":[[-15.706,-15.083],[-11.909,-11.937],[-6.478,-0.719],[3.137,4.354],[7.855,1.491],[5.413,-4.674],[6.996,-1.692],[12.728,4.479],[13.239,4.848],[13.664,15.083],[-3.746,15.083],[-9.809,1.255],[-16.792,-10.697]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[577.681,1158.056],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.543,-3.268],[-3.205,-4.54],[-0.391,-0.408],[0,0],[2.707,3.799],[0.828,0.914],[1.303,3.098],[0.362,0.816],[-0.981,4.892],[0.268,6.142],[6.677,-1.469],[0,0],[1.339,-5.439],[2.434,-5.137],[-0.363,-1.65]],"o":[[2.403,5.074],[0.33,0.485],[0,0],[1.828,-2.23],[-0.764,-1.063],[-1.971,-2.175],[-0.351,-0.834],[-2.105,-4.758],[1.496,-7.464],[-0.4,-5.876],[-1.335,0.267],[0.401,5.207],[-1.715,7.924],[-0.326,1.814],[0.769,3.503]],"v":[[-9.045,16.852],[-2.948,32.076],[-1.862,33.411],[12.789,32.147],[12.896,24.764],[10.786,22.525],[6.174,14.137],[2.94,8.202],[1.362,-2.943],[5.229,-24.462],[1.466,-31.943],[-2.279,-30.82],[-7.792,-12.156],[-15.276,4.234],[-14.534,8.074]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.626999978458,0.497999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[576.921,1139.033],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.672,12.319],[0,12.319],[-3.673,-12.319],[3.205,-9.848]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[565.972,1160.819],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.552,0.667],[-1.126,-1.418],[-1.425,-3.65],[-6.232,0.534],[1.335,2.685],[-0.002,2.077],[-0.525,-0.931],[-2.381,-1.56],[-0.15,-0.122],[3.728,-4.806],[0,0],[2.997,9.301],[0.526,1.986]],"o":[[1.409,0.701],[2.404,3.116],[1.424,3.65],[4.842,-0.415],[-0.68,-1.368],[0.528,1.047],[1.398,2.48],[0.19,0.124],[0.303,0.172],[0,0],[-2.552,-2.749],[-1.631,-5.06],[-0.599,-1.908]],"v":[[-15.707,-15.083],[-11.91,-11.937],[-6.479,-0.719],[3.136,4.354],[7.854,1.491],[5.412,-4.674],[6.995,-1.692],[12.727,4.479],[13.238,4.848],[13.663,15.083],[-3.747,15.083],[-9.81,1.255],[-16.793,-10.697]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[516.422,1158.056],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.543,-3.268],[-3.205,-4.54],[-0.391,-0.408],[0,0],[2.707,3.799],[0.828,0.914],[1.303,3.098],[0.362,0.816],[-0.981,4.892],[0.268,6.142],[6.677,-1.469],[0,0],[1.339,-5.439],[2.434,-5.137],[-0.363,-1.65]],"o":[[2.404,5.074],[0.33,0.485],[0,0],[1.828,-2.23],[-0.764,-1.063],[-1.971,-2.175],[-0.351,-0.834],[-2.105,-4.758],[1.496,-7.464],[-0.4,-5.876],[-1.335,0.267],[0.401,5.207],[-1.715,7.924],[-0.326,1.814],[0.769,3.503]],"v":[[-9.045,16.852],[-2.948,32.075],[-1.862,33.411],[12.789,32.147],[12.896,24.763],[10.786,22.524],[6.174,14.137],[2.94,8.201],[1.362,-2.944],[7.409,-23.126],[1.466,-31.943],[-2.279,-30.821],[-6.627,-12.239],[-15.276,4.233],[-14.534,8.074]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.626999978458,0.497999991623,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[515.661,1139.244],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3.672,12.319],[0,12.319],[-3.673,-12.319],[3.205,-9.848]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[504.712,1160.819],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[559.651,1014.999],"ix":2},"a":{"a":0,"k":[559.651,1014.999],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":8,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Layer 5 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[1223,648.53,0],"to":[0,-5,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":90,"s":[1223,618.53,0],"to":[0,0,0],"ti":[0,-5,0]},{"t":180.00000733155,"s":[1223,648.53,0]}],"ix":2},"a":{"a":0,"k":[1223,648.53,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.848],[1.844,-0.913],[0,0],[0,0],[0,0],[0,2.198],[-1.38,1.018],[-1.24,0],[-0.927,-0.687]],"o":[[0,2.198],[0,0],[0,0],[0,0],[-1.843,-0.913],[0,-1.848],[0.927,-0.687],[1.245,0],[1.384,1.018]],"v":[[5.595,-2.967],[2.481,2.04],[2.481,8.562],[-2.481,8.562],[-2.481,2.04],[-5.594,-2.967],[-3.318,-7.472],[0,-8.562],[3.318,-7.472]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.176000004189,0.39199999641,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1219.198,588.206],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.844,-0.913],[0,0],[0,0],[0,0],[0,2.199],[-1.38,1.018],[-1.24,0],[-0.927,-0.687],[0,-1.848]],"o":[[0,0],[0,0],[0,0],[-1.843,-0.913],[0,-1.848],[0.928,-0.687],[1.244,0],[1.385,1.018],[0,2.199]],"v":[[2.481,2.04],[2.481,8.562],[-2.482,8.562],[-2.482,2.04],[-5.595,-2.967],[-3.318,-7.472],[0,-8.562],[3.317,-7.472],[5.595,-2.967]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.811,0.844],[0.687,0],[0,0],[0.627,-0.192],[0,-3.088],[0,0],[-3.775,0],[0,0],[0,3.775],[0,0]],"o":[[-0.627,-0.189],[0,0],[-0.687,0],[-2.812,0.846],[0,0],[0,3.775],[0,0],[3.774,0],[0,0],[0,-3.088]],"v":[[15.481,-16.581],[13.508,-16.872],[-13.504,-16.872],[-15.481,-16.578],[-20.34,-10.036],[-20.34,10.036],[-13.504,16.872],[13.508,16.872],[20.34,10.036],[20.34,-10.036]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1219.198,588.206],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.919,6.883],[9.92,6.883],[9.92,3.041],[-9.919,3.041]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0]],"o":[[0,0]],"v":[[-9.919,3.041]],"c":false},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[-5.47,0],[0,-5.467]],"o":[[0,-5.467],[5.471,0],[0,0]],"v":[[-9.919,3.041],[0,-6.88],[9.92,3.041]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[8.537,0],[0,-8.535],[0,0],[0,0],[-1.24,0],[-0.927,-0.687],[0,0],[0,0]],"o":[[-8.535,0],[0,0],[0,0],[0.927,-0.687],[1.245,0],[0,0],[0,0],[0,-8.535]],"v":[[0,-12.44],[-15.48,3.041],[-15.48,12.44],[-3.318,12.44],[0,11.351],[3.318,12.44],[15.48,12.44],[15.48,3.041]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1219.198,568.295],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":5,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[13.62,-14.726],[13.62,14.726],[5.961,14.726],[-4.54,1.346],[-4.54,14.726],[-13.62,14.726],[-13.62,-14.726],[-5.962,-14.726],[4.539,-1.346],[4.539,-14.726]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1250.385,528.109],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.632,0.604],[0,1.094],[0.632,0.604],[1.263,0],[0,0],[0,0],[0,0]],"o":[[0.632,-0.603],[0,-1.094],[-0.632,-0.603],[0,0],[0,0],[0,0],[1.263,0]],"v":[[2.606,-1.073],[3.554,-3.618],[2.606,-6.164],[-0.236,-7.068],[-3.631,-7.068],[-3.631,-0.168],[-0.236,-0.168]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-1.895,-0.898],[-1.026,-1.683],[0,-2.244],[1.027,-1.683],[1.895,-0.897],[2.552,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[1.895,0.898],[1.027,1.682],[0,2.244],[-1.026,1.683],[-1.895,0.898],[0,0],[0,0],[0,0],[0,0],[0,0],[2.552,0]],"v":[[7.026,-13.379],[11.409,-9.508],[12.948,-3.618],[11.409,2.272],[7.026,6.142],[0.356,7.489],[-3.631,7.489],[-3.631,14.725],[-12.948,14.725],[-12.948,-14.725],[0.356,-14.725]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1220.777,528.109],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[16.265,-14.726],[4.579,14.726],[-4.58,14.726],[-16.265,-14.726],[-6.238,-14.726],[0.355,2.482],[7.105,-14.726]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1190.656,528.109],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[12.95,-0.339],[0,0],[-6.821,-12.872],[-12.278,-8.823],[-10.034,-5.19],[-11.097,9.521],[-4.76,10.081],[0.031,10.976],[0,0],[10.853,3.686],[10.851,7.064],[9.781,-3.322]],"o":[[0,0],[-0.04,14.258],[6.823,12.876],[7.871,5.656],[15.046,-7.796],[8.768,-7.523],[4.76,-10.08],[0,0],[-12.95,-0.339],[-9.781,-3.321],[-10.849,7.063],[-10.854,3.686]],"v":[[-65.724,-58.957],[-65.862,-9.912],[-55.497,31.558],[-26.3,64.725],[-0.008,80.654],[38.357,55.236],[58.744,28.706],[65.87,-3.026],[65.713,-58.957],[30.298,-64.947],[-0.005,-80.196],[-30.308,-64.948]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[8.473,6.089],[7.196,13.58],[-0.042,15.038],[0,0],[0,0],[-19.076,12.672],[0,0],[0,0],[-29.152,-0.233],[0,0],[0,0],[5.069,-10.735],[9.338,-8.013],[16.103,-8.229]],"o":[[0,0],[-10.922,-5.576],[-12.951,-9.306],[-7.193,-13.575],[0,0],[0,0],[29.152,-0.234],[0,0],[0,0],[19.075,12.673],[0,0],[0,0],[0.032,11.689],[-5.07,10.736],[-11.784,10.111],[0,0]],"v":[[-0.006,86.603],[-1.398,85.893],[-29.826,68.795],[-60.623,33.812],[-71.554,-9.925],[-71.402,-64.071],[-68.588,-64.094],[-1.682,-85.488],[-0.005,-86.603],[1.672,-85.488],[68.577,-64.094],[71.391,-64.071],[71.563,-3.039],[63.973,30.755],[42.26,59.01],[1.385,85.892]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1219.194,550.859],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[26.609,19.035],[35.796,2.309],[0,0],[-28.835,-20.72],[-13.606,-6.589],[-14.565,12.497],[0.074,26.02]],"o":[[-35.796,2.309],[-26.609,19.035],[0,0],[-0.094,33.455],[10.802,7.763],[19.262,-9.329],[20.793,-17.841],[0,0]],"v":[[81.441,-73.093],[0,-97.599],[-81.439,-73.093],[-81.619,-9.385],[-36.057,76.562],[0,97.599],[49.171,66.251],[81.639,-2.498]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.176000004189,0.39199999641,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1219.188,550.295],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Layer 4 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1503,888.53,0],"ix":2},"a":{"a":0,"k":[1503,888.53,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":10,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":15,"s":[120,120,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":20,"s":[80,80,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":160,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":170,"s":[80,80,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":175,"s":[120,120,100]},{"t":180.00000733155,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.394,-0.892],[0.893,-0.394],[0.395,0.892],[-0.893,0.395]],"o":[[0.395,0.892],[-0.892,0.395],[-0.394,-0.893],[0.892,-0.394]],"v":[[1.616,-0.715],[0.714,1.615],[-1.616,0.714],[-0.714,-1.617]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1475.061,579.331],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.072,-0.032],[0,0],[0,0],[0.02,-0.06],[0.062,-0.027],[0.059,0.025],[0.038,0.086],[0,0],[0,0],[0.049,0.016],[0.023,0.052],[-0.022,0.047],[-0.069,0.031],[0,0],[-0.05,-0.016],[-0.023,-0.052],[0.022,-0.048]],"o":[[0,0],[0,0],[0.039,0.087],[-0.021,0.059],[-0.062,0.028],[-0.057,-0.025],[0,0],[0,0],[-0.071,0.031],[-0.049,-0.016],[-0.024,-0.054],[0.023,-0.047],[0,0],[0.073,-0.033],[0.05,0.017],[0.023,0.052],[-0.022,0.048]],"v":[[0.698,-0.852],[0.239,-0.649],[0.906,0.861],[0.934,1.081],[0.811,1.21],[0.63,1.214],[0.486,1.047],[-0.181,-0.463],[-0.641,-0.26],[-0.822,-0.237],[-0.93,-0.339],[-0.932,-0.491],[-0.794,-0.608],[0.544,-1.199],[0.728,-1.223],[0.837,-1.12],[0.839,-0.971]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1470.739,580.958],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.023,-0.052],[-0.001,-0.091],[0.038,-0.105],[0.089,-0.095],[0.145,-0.064],[0.099,-0.019],[0.093,0.012],[0.093,0.045],[0.075,0.063],[0.06,0.083],[0.045,0.103],[0.01,0.154],[-0.049,0.135],[-0.1,0.104],[-0.138,0.061],[-0.161,-0.009],[-0.114,-0.068],[-0.039,-0.088],[0.017,-0.052],[0.048,-0.021],[0.039,0.013],[0.061,0.047],[0.097,0.018],[0.109,-0.048],[0.044,-0.177],[-0.107,-0.242],[-0.093,-0.087],[-0.106,-0.016],[-0.111,0.05],[-0.057,0.097],[0.009,0.135],[-0.011,0.046],[-0.058,0.026],[-0.051,-0.019]],"o":[[0.029,0.066],[0.001,0.092],[-0.037,0.106],[-0.088,0.094],[-0.11,0.049],[-0.099,0.019],[-0.092,-0.011],[-0.084,-0.041],[-0.074,-0.064],[-0.06,-0.084],[-0.074,-0.167],[-0.01,-0.153],[0.049,-0.134],[0.1,-0.103],[0.169,-0.074],[0.162,0.009],[0.113,0.068],[0.022,0.049],[-0.018,0.051],[-0.054,0.024],[-0.038,-0.014],[-0.1,-0.079],[-0.096,-0.018],[-0.173,0.076],[-0.045,0.176],[0.071,0.161],[0.093,0.087],[0.107,0.016],[0.121,-0.053],[0.057,-0.097],[-0.006,-0.063],[0.012,-0.046],[0.05,-0.022],[0.052,0.019]],"v":[[1.055,-0.004],[1.101,0.232],[1.047,0.527],[0.859,0.827],[0.51,1.064],[0.197,1.165],[-0.091,1.176],[-0.369,1.092],[-0.607,0.935],[-0.808,0.715],[-0.966,0.435],[-1.092,-0.047],[-1.033,-0.479],[-0.809,-0.835],[-0.452,-1.081],[0.042,-1.179],[0.455,-1.063],[0.683,-0.83],[0.689,-0.679],[0.59,-0.57],[0.451,-0.554],[0.303,-0.646],[0.007,-0.792],[-0.301,-0.747],[-0.627,-0.367],[-0.533,0.261],[-0.287,0.634],[0.012,0.789],[0.339,0.739],[0.607,0.514],[0.679,0.166],[0.686,0.002],[0.791,-0.106],[0.943,-0.111]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1469.129,581.949],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.067,-0.03],[0,0],[0,0],[0,0],[-0.045,-0.015],[-0.02,-0.047],[0.018,-0.044],[0.065,-0.028],[0,0],[0,0],[0,0],[-0.047,-0.016],[-0.023,-0.051],[0.02,-0.046],[0.066,-0.03],[0,0],[0.058,0.023],[0.04,0.09],[0,0],[-0.001,0.046],[-0.03,0.034],[-0.06,0.026],[0,0],[-0.046,-0.016],[-0.021,-0.048],[0.019,-0.044]],"o":[[0,0],[0,0],[0,0],[0.064,-0.029],[0.044,0.015],[0.021,0.048],[-0.018,0.043],[0,0],[0,0],[0,0],[0.066,-0.029],[0.047,0.016],[0.021,0.05],[-0.02,0.045],[0,0],[-0.092,0.04],[-0.058,-0.023],[0,0],[-0.027,-0.061],[0.001,-0.046],[0.031,-0.035],[0,0],[0.068,-0.029],[0.046,0.015],[0.022,0.049],[-0.02,0.044]],"v":[[0.241,-0.967],[-0.708,-0.548],[-0.482,-0.036],[0.392,-0.423],[0.555,-0.444],[0.652,-0.351],[0.657,-0.214],[0.532,-0.106],[-0.342,0.28],[-0.08,0.872],[0.901,0.438],[1.071,0.418],[1.176,0.518],[1.178,0.661],[1.049,0.773],[-0.095,1.279],[-0.32,1.305],[-0.467,1.135],[-1.158,-0.428],[-1.197,-0.588],[-1.15,-0.708],[-1.014,-0.799],[0.097,-1.292],[0.267,-1.312],[0.367,-1.218],[0.371,-1.078]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1467.119,582.848],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.039,-0.026],[0,0],[0,0],[-0.016,0.055],[-0.059,0.026],[-0.052,-0.025],[-0.036,-0.081],[0,0],[0.151,-0.067],[0.035,-0.002],[0.037,0.012],[0.037,0.022],[0.037,0.023],[0,0],[0,0],[0.018,-0.057],[0.057,-0.025],[0.054,0.025],[0.035,0.079],[0,0],[0.002,0.046],[-0.029,0.045],[-0.048,0.021],[-0.032,0],[-0.029,-0.011],[-0.036,-0.024]],"o":[[0,0],[0,0],[-0.036,-0.081],[0.017,-0.055],[0.06,-0.027],[0.053,0.025],[0,0],[0.08,0.182],[-0.038,0.016],[-0.035,0.003],[-0.037,-0.012],[-0.037,-0.022],[0,0],[0,0],[0.035,0.08],[-0.019,0.057],[-0.06,0.027],[-0.054,-0.025],[0,0],[-0.03,-0.069],[-0.001,-0.05],[0.03,-0.046],[0.038,-0.017],[0.033,0],[0.03,0.012],[0.036,0.023]],"v":[[-0.713,-0.677],[0.638,0.19],[0.092,-1.046],[0.063,-1.25],[0.177,-1.372],[0.346,-1.375],[0.479,-1.217],[1.202,0.418],[1.096,0.792],[0.986,0.82],[0.878,0.806],[0.768,0.756],[0.657,0.689],[-0.668,-0.173],[-0.13,1.045],[-0.105,1.25],[-0.22,1.373],[-0.391,1.375],[-0.524,1.219],[-1.233,-0.384],[-1.281,-0.555],[-1.238,-0.698],[-1.121,-0.798],[-1.016,-0.823],[-0.923,-0.805],[-0.825,-0.751]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1464.998,583.788],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.039,-0.026],[0,0],[0,0],[-0.017,0.055],[-0.059,0.026],[-0.052,-0.025],[-0.036,-0.081],[0,0],[0.151,-0.067],[0.035,-0.002],[0.037,0.012],[0.037,0.022],[0.037,0.023],[0,0],[0,0],[0.018,-0.057],[0.057,-0.025],[0.054,0.025],[0.035,0.079],[0,0],[0.002,0.046],[-0.029,0.045],[-0.048,0.021],[-0.032,0],[-0.029,-0.011],[-0.036,-0.024]],"o":[[0,0],[0,0],[-0.036,-0.081],[0.016,-0.055],[0.06,-0.027],[0.053,0.025],[0,0],[0.08,0.182],[-0.038,0.016],[-0.035,0.003],[-0.037,-0.012],[-0.037,-0.022],[0,0],[0,0],[0.035,0.08],[-0.019,0.057],[-0.06,0.027],[-0.054,-0.025],[0,0],[-0.03,-0.069],[-0.001,-0.05],[0.03,-0.046],[0.038,-0.017],[0.033,0],[0.03,0.012],[0.036,0.023]],"v":[[-0.713,-0.677],[0.638,0.19],[0.092,-1.046],[0.064,-1.25],[0.177,-1.372],[0.346,-1.375],[0.479,-1.217],[1.202,0.418],[1.096,0.792],[0.986,0.82],[0.878,0.806],[0.768,0.756],[0.657,0.689],[-0.668,-0.173],[-0.13,1.045],[-0.105,1.25],[-0.22,1.373],[-0.391,1.375],[-0.524,1.219],[-1.233,-0.384],[-1.281,-0.555],[-1.238,-0.698],[-1.121,-0.798],[-1.016,-0.823],[-0.923,-0.805],[-0.825,-0.751]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1462.791,584.764],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.073,0.164],[0.099,0.09],[0.116,0.017],[0.118,-0.052],[0.057,-0.064],[0.025,-0.083],[-0.012,-0.107],[-0.051,-0.117],[-0.072,-0.082],[-0.082,-0.039],[-0.084,0],[-0.084,0.037],[-0.066,0.094],[-0.004,0.136]],"o":[[-0.067,-0.152],[-0.098,-0.09],[-0.117,-0.017],[-0.084,0.037],[-0.058,0.063],[-0.024,0.084],[0.012,0.107],[0.053,0.118],[0.072,0.083],[0.082,0.039],[0.085,0],[0.108,-0.048],[0.067,-0.094],[0.003,-0.136]],"v":[[0.589,-0.261],[0.339,-0.624],[0.017,-0.784],[-0.335,-0.731],[-0.547,-0.58],[-0.671,-0.361],[-0.69,-0.075],[-0.595,0.262],[-0.408,0.562],[-0.177,0.744],[0.072,0.803],[0.325,0.747],[0.586,0.535],[0.692,0.19]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.159,0.071],[-0.193,-0.019],[-0.151,-0.126],[-0.096,-0.217],[-0.015,-0.15],[0.044,-0.134],[0.104,-0.107],[0.163,-0.072],[0.152,-0.005],[0.128,0.057],[0.103,0.114],[0.068,0.156],[0.013,0.154],[-0.046,0.132],[-0.102,0.105]],"o":[[0.216,-0.095],[0.193,0.019],[0.151,0.126],[0.071,0.161],[0.014,0.151],[-0.044,0.135],[-0.104,0.107],[-0.163,0.072],[-0.152,0.004],[-0.128,-0.057],[-0.103,-0.115],[-0.071,-0.159],[-0.013,-0.153],[0.045,-0.132],[0.103,-0.105]],"v":[[-0.483,-1.066],[0.13,-1.18],[0.646,-0.962],[1.016,-0.447],[1.145,0.02],[1.1,0.448],[0.877,0.811],[0.476,1.08],[0.004,1.195],[-0.416,1.115],[-0.763,0.857],[-1.021,0.45],[-1.147,-0.02],[-1.098,-0.448],[-0.876,-0.803]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1460.515,585.755],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.023,-0.052],[-0.001,-0.091],[0.038,-0.105],[0.089,-0.095],[0.145,-0.064],[0.099,-0.019],[0.093,0.012],[0.093,0.044],[0.075,0.063],[0.06,0.083],[0.045,0.103],[0.01,0.154],[-0.049,0.134],[-0.1,0.104],[-0.138,0.061],[-0.161,-0.009],[-0.114,-0.068],[-0.039,-0.088],[0.017,-0.052],[0.048,-0.021],[0.039,0.013],[0.061,0.047],[0.097,0.018],[0.109,-0.048],[0.044,-0.177],[-0.107,-0.242],[-0.093,-0.087],[-0.106,-0.016],[-0.111,0.05],[-0.057,0.097],[0.009,0.135],[-0.011,0.046],[-0.058,0.026],[-0.051,-0.019]],"o":[[0.029,0.066],[0.001,0.092],[-0.037,0.105],[-0.088,0.094],[-0.11,0.049],[-0.099,0.019],[-0.092,-0.011],[-0.084,-0.041],[-0.074,-0.064],[-0.06,-0.084],[-0.074,-0.167],[-0.01,-0.153],[0.049,-0.134],[0.1,-0.103],[0.169,-0.074],[0.162,0.009],[0.113,0.068],[0.022,0.049],[-0.018,0.051],[-0.054,0.024],[-0.038,-0.014],[-0.1,-0.079],[-0.096,-0.018],[-0.173,0.076],[-0.045,0.176],[0.071,0.161],[0.093,0.087],[0.107,0.016],[0.121,-0.053],[0.057,-0.097],[-0.006,-0.063],[0.012,-0.046],[0.05,-0.022],[0.052,0.019]],"v":[[1.055,-0.004],[1.101,0.232],[1.047,0.527],[0.859,0.827],[0.51,1.064],[0.197,1.165],[-0.091,1.176],[-0.369,1.092],[-0.607,0.935],[-0.808,0.715],[-0.966,0.435],[-1.092,-0.047],[-1.033,-0.479],[-0.809,-0.835],[-0.452,-1.081],[0.042,-1.179],[0.455,-1.063],[0.683,-0.83],[0.689,-0.679],[0.59,-0.57],[0.451,-0.554],[0.303,-0.646],[0.007,-0.792],[-0.301,-0.747],[-0.627,-0.367],[-0.533,0.261],[-0.287,0.634],[0.012,0.789],[0.339,0.739],[0.607,0.514],[0.679,0.166],[0.686,0.002],[0.791,-0.106],[0.943,-0.111]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1458.329,586.723],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.097,-0.485],[0,0],[0.485,1.097],[-1.097,0.484],[0,0],[-0.485,-1.096]],"o":[[0,0],[-1.097,0.485],[-0.485,-1.097],[0,0],[1.097,-0.485],[0.484,1.097]],"v":[[9.891,-1.989],[-8.128,5.977],[-11.004,4.864],[-9.891,1.989],[8.128,-5.977],[11.004,-4.865]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.176000004189,0.39199999641,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1466.225,583.237],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.075,-0.17],[0.133,-0.159],[0,0],[0,0],[0,0],[0.089,0.202],[-0.085,0.15],[-0.114,0.05],[-0.113,-0.025]],"o":[[0.089,0.202],[0,0],[0,0],[0,0],[-0.207,-0.009],[-0.075,-0.17],[0.058,-0.101],[0.114,-0.051],[0.169,0.038]],"v":[[0.461,-0.521],[0.378,0.066],[0.643,0.666],[0.187,0.868],[-0.078,0.268],[-0.568,-0.066],[-0.542,-0.573],[-0.281,-0.808],[0.068,-0.843]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.490000017952,0.368999974868,0.877999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1461.848,573.506],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.132,-0.159],[0,0],[0,0],[0,0],[0.089,0.202],[-0.086,0.15],[-0.114,0.05],[-0.113,-0.025],[-0.075,-0.17]],"o":[[0,0],[0,0],[0,0],[-0.207,-0.009],[-0.075,-0.17],[0.057,-0.101],[0.114,-0.051],[0.169,0.037],[0.089,0.202]],"v":[[0.297,0.055],[0.562,0.655],[0.106,0.857],[-0.159,0.257],[-0.649,-0.077],[-0.623,-0.584],[-0.362,-0.819],[-0.013,-0.854],[0.38,-0.532]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.292,-0.037],[0.063,-0.028],[0,0],[0.05,-0.043],[-0.125,-0.284],[0,0],[-0.347,0.153],[0,0],[0.153,0.348],[0,0]],"o":[[-0.066,0.008],[0,0],[-0.063,0.027],[-0.224,0.192],[0,0],[0.154,0.347],[0,0],[0.347,-0.154],[0,0],[-0.126,-0.284]],"v":[[0.736,-2.186],[0.542,-2.133],[-1.942,-1.034],[-2.112,-0.927],[-2.293,-0.128],[-1.477,1.718],[-0.57,2.069],[1.914,0.971],[2.265,0.064],[1.449,-1.782]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1461.929,573.517],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-0.929,0.542],[-0.774,0.895],[1.052,0.089],[0.896,-0.265]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.503,0.223],[-0.223,-0.502]],"o":[[-0.222,-0.503],[0.503,-0.222],[0,0]],"v":[[-0.929,0.542],[-0.421,-0.774],[0.896,-0.265]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0.785,-0.347],[-0.347,-0.785],[0,0],[0,0],[-0.114,0.05],[-0.113,-0.025],[0,0],[0,0]],"o":[[-0.785,0.347],[0,0],[0,0],[0.058,-0.101],[0.115,-0.051],[0,0],[0,0],[-0.347,-0.785]],"v":[[-0.646,-1.285],[-1.442,0.768],[-1.058,1.633],[0.059,1.138],[0.321,0.903],[0.67,0.868],[1.788,0.374],[1.406,-0.491]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1461.247,571.796],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.689,-2.052],[1.981,0.872],[1.23,1.203],[-0.386,0.331],[0.201,1.659],[-0.689,2.052],[-1.981,-0.871],[-1.23,-1.203],[0.386,-0.331],[-0.201,-1.659]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1462.233,565.938],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.035,0.087],[0.048,0.109],[0.088,0.032],[0.124,-0.055],[0,0],[0,0],[0,0]],"o":[[0.036,-0.087],[-0.048,-0.108],[-0.089,-0.033],[0,0],[0,0],[0,0],[0.124,-0.055]],"v":[[0.544,-0.411],[0.525,-0.705],[0.321,-0.916],[0.002,-0.883],[-0.33,-0.736],[-0.028,-0.051],[0.305,-0.198]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.226,-0.007],[-0.175,-0.122],[-0.098,-0.222],[0.026,-0.212],[0.146,-0.172],[0.25,-0.11],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0.225,0.007],[0.174,0.123],[0.099,0.223],[-0.027,0.211],[-0.146,0.171],[0,0],[0,0],[0,0],[0,0],[0,0],[0.25,-0.11]],"v":[[0.438,-1.824],[1.037,-1.63],[1.446,-1.112],[1.554,-0.46],[1.294,0.114],[0.699,0.536],[0.308,0.709],[0.626,1.427],[-0.287,1.831],[-1.58,-1.092],[-0.275,-1.669]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1458.995,567.412],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[1.521,-1.913],[1.667,1.516],[0.769,1.913],[-1.668,-0.504],[-0.686,-0.938],[0.716,0.484],[0.622,-1.516]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1455.806,568.272],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.255,-0.595],[0,0],[-1.234,-0.982],[-1.591,-0.344],[-1.212,-0.08],[-0.67,1.426],[-0.024,1.207],[0.484,1.088],[0,0],[1.226,-0.104],[1.373,0.231],[0.813,-0.754]],"o":[[0,0],[0.622,1.417],[1.233,0.982],[1.019,0.22],[1.132,-1.425],[0.529,-1.126],[0.025,-1.207],[0,0],[-1.284,0.528],[-1.104,0.094],[-0.754,1.171],[-0.903,0.836]],"v":[[-7.947,-2.576],[-5.809,2.298],[-2.973,5.965],[1.344,7.992],[4.62,8.433],[7.265,4.248],[8.099,0.732],[7.406,-2.726],[4.936,-8.271],[1.202,-7.331],[-2.437,-7.531],[-4.738,-4.705]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[1.097,0.238],[1.301,1.036],[0.655,1.495],[0,0],[0,0],[-1.313,2.084],[0,0],[0,0],[-2.868,1.24],[0,0],[0,0],[0.025,-1.285],[0.564,-1.2],[1.217,-1.514]],"o":[[0,0],[-1.315,-0.081],[-1.678,-0.362],[-1.301,-1.036],[0,0],[0,0],[2.847,-1.286],[0,0],[0,0],[2.426,0.431],[0,0],[0,0],[0.516,1.158],[-0.026,1.285],[-0.712,1.514],[0,0]],"v":[[4.881,9.024],[4.713,9.014],[1.177,8.548],[-3.377,6.411],[-6.367,2.543],[-8.728,-2.838],[-8.453,-2.962],[-2.834,-7.984],[-2.718,-8.167],[-2.505,-8.129],[4.992,-8.905],[5.268,-9.024],[7.963,-2.974],[8.702,0.709],[7.813,4.454],[4.986,8.893]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1459.092,569.119],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.443,0.737],[3.61,-1.322],[0,0],[-3.736,-0.807],[-1.623,-0.064],[-0.879,1.872],[1.148,2.579]],"o":[[-3.407,1.78],[-1.773,3.042],[0,0],[1.459,3.325],[1.399,0.303],[1.479,-1.76],[1.256,-2.671],[0,0]],"v":[[5.85,-10.235],[-3.208,-9.139],[-10.115,-3.178],[-7.338,3.153],[0.899,9.709],[5.356,10.235],[8.8,4.993],[8.967,-3.237]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.176000004189,0.39199999641,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1459.075,568.943],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[1463.187,574.054],"ix":2},"a":{"a":0,"k":[1463.187,574.054],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 68","np":17,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.197,6.011],[-0.416,-0.343],[-0.29,-0.125],[-0.768,1.077],[-0.66,-0.216],[-0.058,-0.309],[0.086,-0.191],[-0.108,-0.073],[0.749,-1.457],[-0.171,-0.087],[0.128,-2.273],[0.062,-0.752],[-0.755,-1.822],[0,0],[1.044,-0.696]],"o":[[1.161,-2.17],[1.205,0.996],[0.12,0.051],[0.798,-1.121],[0.356,0.117],[0.12,0.637],[0.562,-0.147],[0.58,0.391],[0.653,-0.431],[0.415,0.213],[-0.069,1.215],[0.755,1.822],[0,0],[-1.044,0.696],[-3.198,-6.012]],"v":[[-6.413,-5.576],[-1.312,-12.116],[-2.188,-6.276],[-0.906,-8.099],[1.692,-10.636],[2.223,-9.591],[2.058,-8.255],[3.007,-8.185],[2.891,-5.048],[4.043,-5.349],[4.355,-2.11],[4.147,0.879],[6.413,6.346],[6.312,10.37],[3.178,12.458]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.620000023935,0.46699999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1442.94,579.304],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.247,-0.099],[0,0],[-0.119,-0.229],[0,0],[-0.24,0.097],[0,0],[0.122,0.236]],"o":[[-0.119,-0.229],[0,0],[-0.24,0.097],[0,0],[0.122,0.235],[0,0],[0.247,-0.099],[0,0]],"v":[[5.508,-21.924],[4.848,-22.167],[-22.212,-11.276],[-22.434,-10.677],[-5.511,21.927],[-4.852,22.169],[22.208,11.279],[22.431,10.68]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1461.142,573.54],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.302,0.581],[0.609,-0.245],[0,0],[-0.299,-0.577],[-0.604,0.244],[0,0]],"o":[[-0.3,-0.577],[0,0],[-0.604,0.244],[0.302,0.581],[0,0],[0.609,-0.245]],"v":[[3.624,-1.461],[1.983,-2.063],[-3.074,-0.028],[-3.626,1.457],[-1.988,2.065],[3.07,0.03]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.224000010771,0.305999995213,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1471.201,592.871],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.191,-0.481],[0,0],[0.593,1.141],[0,0],[-1.194,0.474],[0,0],[-0.589,-1.133],[0,0]],"o":[[0,0],[-1.191,0.481],[0,0],[-0.59,-1.134],[0,0],[1.191,-0.481],[0,0],[0.592,1.141]],"v":[[24.318,15.832],[-2.314,26.552],[-5.548,25.36],[-25.406,-12.905],[-24.318,-15.833],[2.314,-26.552],[5.547,-25.361],[25.404,12.897]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.411999990426,0.62400004069,0.941000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1461.707,574.633],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.191,-0.481],[0,0],[0.593,1.141],[0,0],[-1.194,0.474],[0,0],[-0.589,-1.133],[0,0]],"o":[[0,0],[-1.191,0.481],[0,0],[-0.589,-1.134],[0,0],[1.191,-0.481],[0,0],[0.271,1.059]],"v":[[23.971,15.832],[-2.661,26.552],[-5.896,25.36],[-25.755,-12.905],[-24.166,-17.177],[1.967,-26.552],[5.199,-25.361],[26.073,12.151]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.224000010771,0.305999995213,0.522000002394,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1461.271,576.115],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[1461.362,575.375],"ix":2},"a":{"a":0,"k":[1461.362,575.375],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 68","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.03,0],[0.032,0.056],[0.865,0.81],[0.692,0.427],[-0.05,0.082],[-0.081,-0.051],[-0.606,-0.568],[-0.618,-1.065],[0.084,-0.048]],"o":[[-0.06,0],[-0.601,-1.036],[-0.59,-0.553],[-0.083,-0.051],[0.051,-0.084],[0.713,0.44],[0.891,0.835],[0.048,0.083],[-0.027,0.017]],"v":[[2.101,2.348],[1.95,2.261],[-0.26,-0.522],[-2.192,-1.999],[-2.25,-2.24],[-2.01,-2.297],[-0.022,-0.778],[2.252,2.086],[2.188,2.324]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1473.653,609.396],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.033,-2.814],[-1.918,1.955],[-0.137,0.961],[0.643,1.748],[0,0],[0,0],[-0.333,-1.281],[-0.84,-3.805]],"o":[[0.975,-0.251],[2.331,-2.377],[-0.643,-1.748],[0,0],[0,0],[-2.211,0.655],[0.537,2.058],[2.033,2.814]],"v":[[0.227,13.404],[5.272,10.502],[8.26,4.415],[6.33,-0.828],[7.14,-6.991],[0.167,-13.404],[-7.927,-3.659],[-5.871,4.962]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.620000023935,0.46699999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1443.047,580.262],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.45,-1.264],[2.628,-2.925],[1.2,-0.19],[1.472,1.379],[-3.613,2.97],[-1.55,0.484]],"o":[[-0.192,1.295],[-3.196,3.558],[-1.471,-1.379],[0.596,-1.71],[2.324,-1.91],[1.449,1.264]],"v":[[8.141,-4.083],[4.667,3.341],[-3.726,7.876],[-8.141,3.739],[-2.413,-4.534],[3.792,-7.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1448.47,591.041],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.483,-0.681],[2.604,-3.92],[1.566,1.001],[5.028,3.202],[-0.405,2.586],[-0.154,-0.098],[-6.052,-3.271],[-0.461,1.845]],"o":[[-2.604,3.92],[-1.029,1.549],[-5.027,-3.214],[0.406,-2.586],[0.14,0.084],[3.284,2.013],[0.447,-1.985],[3.483,0.681]],"v":[[13.784,-4.32],[5.971,7.44],[1.296,8.425],[-13.787,-1.204],[-12.557,-8.962],[-12.109,-8.696],[1.966,-0.603],[3.335,-6.362]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.611999990426,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1467.434,597.438],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":15,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 54","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[1507.357,719.49],"ix":2},"a":{"a":0,"k":[1507.357,719.49],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 68","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":29,"s":[{"i":[[-0.014,-5.102],[3.564,-4.109],[3.704,-0.699],[5.298,5.731],[1.314,1.51],[5.689,11.447],[-4.138,0.951],[-2.683,-1.677],[-0.153,-0.097],[-6.052,-3.271],[-0.461,1.845],[-1.705,1.258],[0,0],[-0.657,0.139],[-0.945,-10.604],[-0.435,-6.501]],"o":[[0,3.466],[-0.699,0.811],[-5.451,1.048],[-1.313,-1.426],[-4.627,-5.325],[0.615,-4.361],[1.677,-0.391],[0.14,0.084],[3.285,2.013],[0.448,-1.985],[3.802,-15.25],[1.482,-1.09],[1.063,-0.447],[0.16,1.497],[0.546,6.127],[0.49,7.1]],"v":[[23.866,20.413],[19.687,33.062],[12.656,37.591],[-3.334,28.451],[-7.275,24.019],[-23.866,-0.944],[-17.548,-14.069],[-11.706,-11.859],[-11.259,-11.595],[2.816,-3.502],[4.186,-9.26],[11.399,-45.819],[15.085,-49.315],[20.102,-52.765],[21.487,-17.956],[23.027,1.475]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":80,"s":[{"i":[[-0.014,-5.102],[3.564,-4.109],[3.704,-0.699],[5.298,5.731],[1.314,1.51],[5.689,11.447],[-4.138,0.951],[-2.683,-1.677],[-0.153,-0.097],[-6.052,-3.271],[-0.461,1.845],[-1.705,1.258],[0,0],[-0.657,0.139],[-0.737,-7.879],[-0.575,-8.591]],"o":[[0,3.466],[-0.699,0.811],[-5.451,1.048],[-1.313,-1.426],[-4.627,-5.325],[0.615,-4.361],[1.677,-0.391],[0.14,0.084],[3.285,2.013],[0.448,-1.985],[3.802,-15.25],[1.482,-1.09],[1.063,-0.447],[0.13,1.219],[0.692,7.391],[0.49,7.1]],"v":[[23.866,20.413],[19.687,33.062],[12.656,37.591],[-3.334,28.451],[-7.275,24.019],[-23.866,-0.944],[-17.548,-14.069],[-11.706,-11.859],[-11.259,-11.595],[2.816,-3.502],[4.186,-9.26],[13.774,-36.069],[16.835,-37.815],[19.477,-38.64],[20.969,-23.626],[23.027,1.474]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[{"i":[[-0.014,-5.102],[3.564,-4.109],[3.704,-0.699],[5.298,5.731],[1.314,1.51],[5.689,11.447],[-4.138,0.951],[-2.683,-1.677],[-0.153,-0.097],[-6.052,-3.271],[-0.461,1.845],[-1.705,1.258],[0,0],[-0.657,0.139],[-0.737,-7.879],[-0.575,-8.591]],"o":[[0,3.466],[-0.699,0.811],[-5.451,1.048],[-1.313,-1.426],[-4.627,-5.325],[0.615,-4.361],[1.677,-0.391],[0.14,0.084],[3.285,2.013],[0.448,-1.985],[3.802,-15.25],[1.482,-1.09],[1.063,-0.447],[0.13,1.219],[0.692,7.391],[0.49,7.1]],"v":[[23.866,20.413],[19.687,33.062],[12.656,37.591],[-3.334,28.451],[-7.275,24.019],[-23.866,-0.944],[-17.548,-14.069],[-11.706,-11.859],[-11.259,-11.595],[2.816,-3.502],[4.186,-9.26],[13.774,-36.069],[16.835,-37.815],[19.477,-38.64],[20.969,-23.626],[23.027,1.474]],"c":true}]},{"t":161.000006557664,"s":[{"i":[[-0.014,-5.102],[3.564,-4.109],[3.704,-0.699],[5.298,5.731],[1.314,1.51],[5.689,11.447],[-4.138,0.951],[-2.683,-1.677],[-0.153,-0.097],[-6.052,-3.271],[-0.461,1.845],[-1.705,1.258],[0,0],[-0.657,0.139],[-0.945,-10.604],[-0.435,-6.501]],"o":[[0,3.466],[-0.699,0.811],[-5.451,1.048],[-1.313,-1.426],[-4.627,-5.325],[0.615,-4.361],[1.677,-0.391],[0.14,0.084],[3.285,2.013],[0.448,-1.985],[3.802,-15.25],[1.482,-1.09],[1.063,-0.447],[0.16,1.497],[0.546,6.127],[0.49,7.1]],"v":[[23.866,20.413],[19.687,33.062],[12.656,37.591],[-3.334,28.451],[-7.275,24.019],[-23.866,-0.944],[-17.548,-14.069],[-11.706,-11.859],[-11.259,-11.595],[2.816,-3.502],[4.186,-9.26],[11.399,-45.819],[15.085,-49.315],[20.102,-52.765],[21.487,-17.956],[23.027,1.474]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1466.583,600.336],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 55","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":29,"s":[1462.778,607.993],"to":[0,-2.5],"ti":[0,2.5]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":80,"s":[1462.778,592.993],"to":[0,0],"ti":[0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[1462.778,592.993],"to":[0,2.5],"ti":[0,-2.5]},{"t":161.000006557664,"s":[1462.778,607.993]}],"ix":2},"a":{"a":0,"k":[1462.778,592.993],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 68","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.003,0.095],[0,0],[-0.097,0.003],[0,0],[-0.003,-0.095],[0,0],[0.097,-0.003]],"o":[[-0.094,0],[0,0],[-0.002,-0.097],[0,0],[0.094,0],[0,0],[0.002,0.097],[0,0]],"v":[[0.125,5.032],[-0.05,4.862],[-0.3,-4.852],[-0.129,-5.032],[-0.125,-5.032],[0.05,-4.862],[0.3,4.852],[0.129,5.032]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1519.595,694.291],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.03,0],[0.033,0.055],[1.373,2.612],[-0.038,0.103],[-0.098,-0.032],[0.032,-0.091],[-1.331,-2.533],[-0.008,-0.014],[0.082,-0.049]],"o":[[-0.059,0],[-0.007,-0.013],[-1.406,-2.674],[0.033,-0.09],[0.09,0.034],[-0.009,0.024],[1.358,2.582],[0.049,0.082],[-0.028,0.017]],"v":[[1.468,4.203],[1.318,4.118],[-0.26,1.161],[-0.766,-4.065],[-0.542,-4.17],[-0.438,-3.946],[0.048,0.999],[1.617,3.939],[1.557,4.178]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1516.758,691.509],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.06,0],[0.027,0.016],[1.855,2.65],[0.656,2.721],[-0.095,0.023],[-0.022,-0.093],[-1.568,-2.24],[-2.783,-1.595],[0.048,-0.083]],"o":[[-0.03,0],[-2.826,-1.62],[-1.595,-2.277],[-0.023,-0.094],[0.094,-0.023],[0.646,2.679],[1.825,2.609],[0.084,0.048],[-0.032,0.057]],"v":[[5.228,7.158],[5.141,7.135],[-2.014,0.607],[-5.404,-6.924],[-5.275,-7.135],[-5.065,-7.007],[-1.728,0.406],[5.315,6.832],[5.379,7.07]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1547.248,694.842],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.03,0],[0.032,0.056],[-0.083,0.049],[-1.641,2.677],[-0.462,2.063],[-0.098,-0.023],[0.021,-0.094],[1.115,-1.818],[2.825,-1.647]],"o":[[-0.06,0],[-0.048,-0.083],[2.775,-1.618],[1.094,-1.785],[0.021,-0.095],[0.095,0.021],[-0.47,2.101],[-1.672,2.726],[-0.028,0.016]],"v":[[-4.585,6.423],[-4.736,6.336],[-4.673,6.097],[2.077,-0.468],[4.422,-6.268],[4.63,-6.401],[4.763,-6.192],[2.375,-0.284],[-4.497,6.399]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1489.097,697.22],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.397,0],[0.467,0.229],[0,0],[0.281,0.862],[-0.423,0.802],[0,0],[-0.084,-0.037],[0,0],[0.037,-0.087],[0,0],[0.871,-0.33]],"o":[[-0.501,0],[0,0],[-0.812,-0.401],[-0.28,-0.862],[0,0],[0.044,-0.08],[0,0],[0.086,0.038],[0,0],[-0.353,0.863],[-0.386,0.146]],"v":[[5.197,6.555],[3.729,6.211],[-7.65,0.611],[-9.344,-1.346],[-9.124,-3.927],[-7.8,-6.44],[-7.575,-6.518],[9.497,1.073],[9.588,1.299],[8.278,4.487],[6.378,6.336]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1540.803,643.948],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.501,0],[0.386,0.146],[0.354,0.863],[0,0],[-0.087,0.038],[0,0],[-0.043,-0.083],[0,0],[0.281,-0.862],[0.814,-0.401],[0,0]],"o":[[-0.398,0],[-0.872,-0.33],[0,0],[-0.035,-0.088],[0,0],[0.083,-0.036],[0,0],[0.422,0.802],[-0.28,0.863],[0,0],[-0.467,0.229]],"v":[[-5.197,6.555],[-6.379,6.336],[-8.28,4.487],[-9.589,1.298],[-9.498,1.072],[7.574,-6.519],[7.799,-6.44],[9.123,-3.928],[9.343,-1.348],[7.647,0.61],[-3.73,6.21]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1493.612,642.805],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.001,0],[-0.002,0.095],[0,0],[-0.097,-0.001],[0,0],[0.001,-0.095],[0,0],[0.097,0.002]],"o":[[-0.094,-0.004],[0,0],[0.001,-0.097],[0,0],[0.094,0.003],[0,0],[-0.001,0.097],[-0.001,0]],"v":[[-0.303,19.034],[-0.47,18.857],[0.123,-18.862],[0.301,-19.035],[0.305,-19.034],[0.472,-18.857],[-0.121,18.862],[-0.299,19.034]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1517.123,655.487],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.091,0],[0.004,0.001],[-0.007,0.096],[0,0],[-0.083,-0.005],[0.007,-0.096],[0,0]],"o":[[-0.004,0],[-0.096,-0.006],[0,0],[0.006,-0.096],[0.097,0.006],[0,0],[-0.006,0.092]],"v":[[-1.384,20.753],[-1.396,20.752],[-1.558,20.567],[1.211,-20.586],[1.396,-20.748],[1.559,-20.563],[-1.21,20.59]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1482.602,614.241],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.09,0],[0.005,0.001],[-0.008,0.096],[0,0],[-0.091,0],[-0.006,-0.001],[0.008,-0.096],[0,0]],"o":[[-0.004,0],[-0.095,-0.008],[0,0],[0.008,-0.091],[0.004,0],[0.095,0.008],[0,0],[-0.008,0.091]],"v":[[-0.191,2.431],[-0.206,2.43],[-0.366,2.242],[0.018,-2.271],[0.193,-2.432],[0.208,-2.431],[0.367,-2.242],[-0.016,2.271]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1551.752,577.476],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.034,0],[0.034,0.048],[1.724,1.521],[1.951,1.05],[-0.045,0.085],[-0.085,-0.045],[-1.686,-1.487],[-1.332,-1.905],[0.079,-0.056]],"o":[[-0.055,0],[-1.316,-1.883],[-1.665,-1.469],[-0.084,-0.045],[0.047,-0.086],[1.972,1.062],[1.743,1.54],[0.055,0.079],[-0.03,0.021]],"v":[[5.045,4.676],[4.902,4.602],[0.321,-0.528],[-5.127,-4.325],[-5.198,-4.561],[-4.96,-4.632],[0.553,-0.789],[5.188,4.401],[5.145,4.646]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1555.028,618.04],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.076,0],[0.017,0.005],[0,0],[-0.026,0.093],[-0.093,-0.026],[0,0],[0.026,-0.093]],"o":[[-0.016,0],[0,0],[-0.093,-0.027],[0.027,-0.094],[0,0],[0.093,0.027],[-0.022,0.077]],"v":[[9.904,3.009],[9.856,3.002],[-9.952,-2.647],[-10.072,-2.863],[-9.856,-2.983],[9.952,2.666],[10.072,2.882]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1538.836,610.064],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.427,-0.22],[0.539,-1.563],[1.143,-1.432],[2.967,1.289],[0.86,0.666],[-0.537,0.8],[-0.512,0.026],[-0.273,-0.184],[-0.187,-0.139],[-0.952,-0.214],[-0.181,0.581],[0.639,0.674],[0.487,0.513],[0.289,0.22],[0.032,0.44],[-0.229,0.179],[-0.664,-0.251],[-0.479,-0.179],[-0.087,-0.051],[-0.41,-0.316],[-1.477,-1.113]],"o":[[-0.16,1.222],[-0.996,2.893],[-1.726,-0.627],[-2.459,-1.07],[-1.138,-0.882],[0.266,-0.397],[0.69,-0.036],[2.214,1.497],[0.509,0.213],[1.864,0.418],[0.043,-0.139],[-0.487,-0.514],[-0.637,-0.214],[-0.451,-0.344],[-0.017,-0.227],[0.369,-0.288],[1.914,0.723],[0.269,0.101],[1.802,1.061],[1.442,1.115],[0.715,0.539]],"v":[[11.743,-1.713],[10.75,2.513],[7.176,8.998],[-0.006,6.134],[-4.573,3.85],[-11.206,-7.608],[-9.805,-8.262],[-8.309,-7.764],[-3.245,-4.162],[-1.022,-3.453],[3.473,-3.493],[2.557,-4.646],[1.095,-6.187],[-0.286,-6.913],[-1.126,-7.977],[-0.849,-8.71],[0.782,-8.499],[3.551,-7.635],[4.094,-7.366],[7.207,-5.458],[9.958,-2.834]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.620000023935,0.46699999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1501.252,608.176],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.497,-4.273],[0.914,-0.47],[0,0],[-2.449,4.547],[-1.357,1.027]],"o":[[0.386,1.12],[-1.759,5.021],[0,0],[-0.172,-1.784],[1.634,-3.034],[0,0]],"v":[[5.547,-7.359],[5.547,1.71],[-1.215,9.427],[-6.703,7.198],[-4.595,-3.461],[0.535,-9.427]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1513.376,613.116],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[1518.506,606.391],"ix":2},"a":{"a":0,"k":[1518.506,606.391],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":65,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":79.75,"s":[7]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":94.5,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":109.25,"s":[7]},{"t":124.000005050624,"s":[0]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.259,14.804],[-1.121,-0.829],[4.851,-16.889],[1.144,-1.125],[18.515,7.358],[11.839,7.441],[-4.438,6.074],[-1.391,0.447],[-9.926,-2.831],[-0.118,1.391]],"o":[[0.805,0.205],[4.963,3.665],[-0.252,0.877],[-2.226,2.188],[-7.612,-3.025],[-0.223,-0.558],[2.336,-3.197],[9.926,2.831],[0.118,-1.391],[1.259,-14.804]],"v":[[11.096,-40.775],[15.623,-39.371],[27.857,33.691],[26.03,37.013],[0.207,33.442],[-29.663,18.224],[-28.27,4.184],[-21.35,-0.708],[8.427,7.785],[-0.573,6.209]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1540.313,605.113],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 44","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[1554.153,565.636],"ix":2},"a":{"a":0,"k":[1554.153,565.636],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":29,"s":[-19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":110,"s":[0]},{"t":161.000006557664,"s":[-19]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 67","np":4,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.151,0.339],[0.296,-0.715],[1.005,-0.01],[0.485,0.787],[0.084,-0.238],[-0.417,-0.587],[-0.015,-0.378],[-0.228,-0.487],[-1.57,0.043],[-0.006,0.915],[0.05,0.271],[-0.197,0.582],[0.154,0.356]],"o":[[-0.296,0.715],[-1.004,0.01],[-0.484,-0.787],[-0.294,0.418],[0.418,0.587],[-0.043,0.294],[0.036,0.929],[1.571,-0.043],[0.216,-0.469],[0.002,-0.35],[0.197,-0.583],[-0.147,-0.35],[-0.15,-0.346]],"v":[[2.812,-3.415],[1.923,-1.271],[-1.089,-1.241],[-2.545,-3.602],[-3.714,-1.331],[-2.462,0.43],[-2.516,1.443],[-1.984,3.602],[2.727,3.472],[3.206,1.354],[3.125,0.418],[3.714,-1.328],[3.262,-2.388]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.13300000359,0.458999992819,0.717999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1515.554,561.169],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.922,-0.112],[0,0],[0,0],[0,0]],"o":[[-1.104,0.322],[0,0],[0,0],[0,0],[0,0]],"v":[[1.532,2.341],[-1.529,2.984],[-0.886,-2.984],[-0.69,-2.104],[0.218,-0.021]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.611999990426,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1519.051,559.858],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.224,-0.839],[3.41,-1.104],[0.112,-0.028],[0.923,-0.112],[0.378,-0.028],[-0.573,2.278],[-1.552,0.825],[-0.587,0.335],[-0.21,-0.321],[-0.476,-0.601],[-0.265,-0.308]],"o":[[-1.37,1.258],[-0.112,0.028],[-1.104,0.321],[-0.419,0.07],[0.573,-2.279],[1.454,-0.615],[0.629,-0.321],[0.713,0.349],[0.321,0.475],[0.293,0.363],[0.28,0.335]],"v":[[5.864,-0.084],[-1.292,4.123],[-1.615,4.221],[-4.676,4.864],[-5.864,4.99],[-4.145,-1.845],[0.385,-3.998],[2.215,-4.99],[3.516,-3.914],[4.326,-2.502],[4.996,-1.789]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.855000035903,0.925,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1522.198,557.979],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.95,0.35],[0,0],[0,0],[0,0]],"o":[[0,0],[-0.782,-0.14],[0,0],[0,0],[0,0],[0,0]],"v":[[1.396,0.454],[1.228,2.802],[-1.399,2.089],[-0.491,0.161],[0.683,-2.104],[0.949,-2.802]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.611999990426,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1512.325,559.676],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.629,-2.222],[0.769,0.14],[0.951,0.349],[0.685,0.363],[0.881,1.09],[-0.363,0.335],[-0.587,0.391],[-0.881,0.741],[-0.167,0.126],[-1.887,-1.02]],"o":[[-0.517,-0.028],[-0.783,-0.139],[-0.643,-0.238],[-2.6,-1.356],[0.07,-0.294],[0.392,-0.378],[0.629,-0.42],[0.293,-0.252],[1.887,1.02],[0.643,2.222]],"v":[[5.856,4.864],[3.913,4.626],[1.285,3.914],[-0.713,3.033],[-5.857,-1.174],[-5.27,-2.222],[-4.054,-2.837],[-2.432,-4.305],[-1.72,-4.864],[3.955,-1.803]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.811999990426,0.855000035903,0.925,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1509.639,557.853],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.203,-2.511],[-0.985,-5.077],[4.335,-8.671],[5.767,8.711],[-1.194,5.21],[2.908,2.505],[-1.499,3.942],[-0.833,0.219],[-0.611,0.014],[-4.502,-8.462],[-2.217,-2.355],[-1.734,4.546],[0.321,4.09],[-1.703,-0.819],[-0.31,-0.31],[-1.407,-3.631]],"o":[[0.985,5.078],[-4.336,8.671],[-5.768,-8.711],[1.193,-5.21],[-2.908,-2.505],[1.499,-3.942],[0.521,-0.27],[0.888,-0.232],[0.056,4.623],[2.209,4.153],[1.913,-2.522],[2.968,-7.78],[0.52,-0.163],[0.578,0.278],[1.407,3.63],[-2.203,2.511]],"v":[[12.944,-10.14],[15.898,5.092],[2.892,31.105],[-14.41,4.973],[-10.83,-10.658],[-19.554,-18.173],[-15.057,-29.999],[-13.018,-30.784],[-10.732,-31.105],[-5.418,-10.015],[1.557,-0.3],[7.447,-10.897],[10.112,-29.71],[14.012,-29.507],[15.334,-28.565],[19.554,-17.674]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1515.236,587.977],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.564,-9.961],[7.618,4.739],[0,0],[-6.552,2.386],[-4.863,4.697],[-1.927,5.153],[-1.664,10.372],[-1.177,-1.59],[-0.283,-12.891]],"o":[[-11.307,-4.808],[-11.629,-7.226],[0,0],[10.275,-3.743],[1.057,-1.02],[2.009,-5.374],[1.177,1.59],[-0.241,12.032],[0.232,10.558]],"v":[[23.943,36.477],[-12.705,19.103],[-23.943,4.833],[-12.551,0.224],[9.113,-5.371],[12.983,-12.778],[19.167,-36.478],[22.698,-31.709],[22.734,5.692]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.689999988032,0.611999990426,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1532.393,616.21],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":15,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.108,-13.441],[13.313,-0.105],[12.58,0.672],[-2.38,36.516],[-0.312,4.636],[-2.041,0.531],[-1.062,0.223],[-1.901,0.336],[-3.955,-8.274],[-2.265,-2.726],[-1.873,5.172],[0.265,4.193],[-1.747,-0.391],[-7.436,-1.635],[-0.349,-8.931],[-0.511,-19.132]],"o":[[-12.02,0.798],[-13.991,0.11],[1.744,-36.056],[0.303,-4.644],[2.865,-0.922],[1.985,-0.517],[2.041,-0.448],[0.195,4.906],[2.209,4.613],[2.068,-2.768],[2.81,-7.771],[1.733,0.377],[7.422,1.621],[0.349,8.931],[1.234,31.554],[0.187,7.004]],"v":[[38.96,62.607],[0.931,64.02],[-38.961,63.112],[-32.78,-45.75],[-31.857,-59.67],[-24.449,-61.823],[-19.753,-62.954],[-13.84,-64.13],[-8.725,-43.331],[-1.68,-32.359],[4.763,-44.281],[7.433,-63.094],[12.66,-61.948],[34.954,-57.057],[36.002,-30.248],[38.42,31.32]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1517.917,622.367],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 47","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.755,-10.888],[12.383,-1.244],[12.412,-0.363],[-0.07,1.803],[-24.012,0.587]],"o":[[-11.084,1.873],[-13.768,1.412],[0.559,-13.446],[24.027,-0.587],[0.098,1.538]],"v":[[37.27,6.506],[2.048,11.245],[-37.27,13.831],[-36.18,-12.07],[35.872,-13.831]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.054999998504,0.063000002094,0.086000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1517.795,681.026],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 48","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.187,-44.028],[3.453,-0.461],[3.411,0.951],[4.47,31.147],[3.501,21.134],[0.047,-0.394],[1.266,-6.678],[1.256,-7.91],[0,0],[5.451,-0.028],[2.936,1.147],[-0.308,7.45],[-0.95,22.95],[-0.209,4.724],[-0.07,1.804],[-24.013,0.587],[-0.754,-10.888],[-0.028,-0.504],[-0.433,-15.249]],"o":[[-2.306,0.895],[-6.485,0.839],[-3.35,-29.787],[-3.149,-21.947],[-0.065,-0.391],[-0.946,8.02],[-1.57,8.284],[0,0],[-2.824,1.02],[-6.15,0.042],[0.308,-7.561],[0.125,-2.865],[0.224,-5.158],[0.559,-13.446],[24.027,-0.587],[0.097,1.538],[0.028,0.503],[1.691,24.879],[0.658,22.755]],"v":[[45.929,95.589],[37.235,97.812],[21.93,96.68],[10.231,11.141],[0.242,-53.485],[-0.438,-53.474],[-5.722,-13.073],[-9.952,11.224],[-19.33,96.904],[-31.98,99.167],[-45.929,96.596],[-41.344,-6.191],[-39.234,-56.578],[-38.591,-71.549],[-37.501,-97.448],[34.552,-99.209],[35.949,-78.872],[36.047,-77.362],[40.729,1.706]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1519.116,766.405],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 49","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.79,0.487],[-0.014,-0.111],[-0.322,-0.28],[-1.677,-0.434],[-1.943,-1.678],[-3.187,-1.789],[-1.678,-0.07],[-2.152,4.039],[3.04,2.045],[3.677,-0.198],[1.116,0.171]],"o":[[0.014,0.14],[0.224,1.747],[1.677,0.433],[1.174,0.768],[4.36,3.759],[3.089,1.733],[1.565,0.07],[-9.545,3.389],[-4.919,-3.309],[-0.209,0.012],[-1.683,-0.258]],"v":[[-18.806,-9.022],[-18.764,-8.645],[-17.925,-5.765],[-12.894,-4.465],[-8.057,-0.817],[0.063,6.66],[7.779,8.631],[18.806,4.983],[1.009,5.089],[-12.888,-7.532],[-15.047,-7.615]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1560.227,882.408],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 50","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.432],[-0.028,-0.447],[-0.014,-0.111],[-0.321,-0.28],[-1.677,-0.434],[-1.943,-1.678],[-3.187,-1.789],[-1.677,-0.07],[-2.152,4.039],[-0.014,0.014],[0.139,0.922],[5.2,6.527],[1.328,5.577],[0,0],[0,0.279],[7.268,-0.712]],"o":[[0,0.797],[0.014,0.14],[0.223,1.747],[1.678,0.433],[1.174,0.768],[4.361,3.759],[3.089,1.733],[1.566,0.07],[0.014,-0.014],[0.769,-1.509],[-0.699,-4.571],[0,0],[-0.349,-1.426],[-0.028,-0.377],[-7.268,0.713],[-0.391,5.997]],"v":[[-19.233,-2.648],[-19.177,-0.775],[-19.135,-0.398],[-18.297,2.482],[-13.265,3.782],[-8.429,7.43],[-0.308,14.907],[7.407,16.878],[18.435,13.23],[18.463,13.174],[18.869,9.219],[9.322,-2.438],[3.661,-13.452],[3.2,-16.29],[3.144,-17.268],[-18.66,-15.144]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1560.597,874.161],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 51","np":2,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.79,0.487],[0.014,-0.111],[0.322,-0.28],[1.677,-0.434],[1.942,-1.678],[3.187,-1.789],[1.678,-0.07],[2.152,4.039],[-3.04,2.045],[-3.677,-0.198],[-1.116,0.171]],"o":[[-0.014,0.14],[-0.224,1.747],[-1.677,0.433],[-1.174,0.768],[-4.361,3.759],[-3.089,1.733],[-1.565,0.07],[9.545,3.389],[4.919,-3.309],[0.209,0.012],[1.683,-0.258]],"v":[[18.806,-9.022],[18.764,-8.645],[17.925,-5.765],[12.894,-4.465],[8.058,-0.817],[-0.063,6.66],[-7.779,8.631],[-18.806,4.983],[-1.009,5.089],[12.888,-7.532],[15.047,-7.615]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1479.722,882.408],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 52","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.432],[0.028,-0.447],[0.014,-0.111],[0.321,-0.28],[1.677,-0.434],[1.943,-1.678],[3.187,-1.789],[1.677,-0.07],[2.152,4.039],[0.014,0.014],[-0.139,0.922],[-5.2,6.527],[-1.328,5.577],[0,0],[0,0.279],[-7.268,-0.712]],"o":[[0,0.797],[-0.014,0.14],[-0.223,1.747],[-1.678,0.433],[-1.174,0.768],[-4.361,3.759],[-3.089,1.733],[-1.566,0.07],[-0.014,-0.014],[-0.769,-1.509],[0.699,-4.571],[0,0],[0.349,-1.426],[0.028,-0.377],[7.268,0.713],[0.391,5.997]],"v":[[19.233,-2.648],[19.177,-0.775],[19.135,-0.398],[18.297,2.482],[13.265,3.782],[8.428,7.43],[0.307,14.907],[-7.407,16.878],[-18.436,13.23],[-18.464,13.174],[-18.87,9.219],[-9.323,-2.438],[-3.661,-13.452],[-3.201,-16.29],[-3.145,-17.268],[18.659,-15.144]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.113999998803,0.125,0.156999999402,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1479.351,874.161],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 53","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.075,0],[0.762,0.754],[-0.107,0.091],[-0.099,-0.098],[-0.153,-0.116],[0.014,0.044],[-0.4,0.366],[-0.118,0.011],[-0.015,0.013],[0.305,0.655],[0.273,0.712],[0.084,0.241],[0.451,0.136],[0.112,-0.029],[0.002,-0.019],[0.141,0.012],[-0.013,0.133],[-1.356,0.358],[-0.272,-0.081],[-0.346,-0.987],[-0.108,-0.282],[-0.225,-0.482],[0.424,-0.354],[0.105,-0.009],[0.03,-0.028],[-0.106,-0.335],[0.256,-0.157]],"o":[[-0.243,0],[-0.098,-0.098],[0.106,-0.091],[0.364,0.361],[-0.015,-0.048],[-0.15,-0.472],[0.165,-0.151],[0.078,-0.006],[0.147,-0.122],[-0.228,-0.488],[-0.109,-0.285],[-0.333,-0.948],[-0.233,-0.071],[-1.039,0.274],[-0.012,0.133],[-0.144,-0.013],[0.023,-0.227],[0.291,-0.077],[0.724,0.219],[0.083,0.237],[0.266,0.697],[0.48,1.028],[-0.146,0.123],[-0.091,0.008],[-0.179,0.163],[0.124,0.391],[-0.06,0.037]],"v":[[1.691,4.305],[0.324,3.314],[0.339,2.972],[0.709,2.984],[1.464,3.666],[1.421,3.525],[1.465,2.04],[1.926,1.862],[2.035,1.839],[1.559,0.385],[0.775,-1.424],[0.489,-2.214],[-0.474,-3.76],[-1.037,-3.763],[-2.276,-1.602],[-2.561,-1.383],[-2.798,-1.646],[-1.182,-4.228],[-0.311,-4.22],[0.989,-2.363],[1.271,-1.584],[2.042,0.194],[2.387,2.197],[1.976,2.344],[1.835,2.384],[1.923,3.389],[1.89,4.245]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.819999964097,0.505999995213,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1496.294,530.128],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 56","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.301,-0.49],[0.067,-1.567],[0.591,-3.008],[1.428,-3.223],[0.346,1.6],[-0.072,0.452],[1.908,0.18],[0.475,-0.306],[0,0],[0.212,-0.738],[0.469,-10.954],[0.045,-1.022],[-0.647,8.013],[-0.447,1.862],[-0.25,1.476],[-1.33,0.919],[-5.427,-8.727],[1.129,-4.122]],"o":[[-0.011,0.897],[-0.122,2.905],[-0.39,2.032],[0.423,-3.133],[-0.374,-1.774],[-3.425,0.492],[-3.129,-0.296],[-0.052,0.033],[-0.424,0.307],[-0.479,1.737],[-0.089,2.19],[-1.829,-4.518],[0.179,-2.237],[-0.243,-0.764],[0.547,-3.223],[7.221,-4.989],[0.664,1.067],[-0.263,0.963]],"v":[[18.631,-0.875],[18.519,2.894],[17.649,11.498],[15.095,19.534],[14.871,12.406],[14.075,-0.388],[5.969,-0.172],[-14.735,-2.226],[-14.836,-2.158],[-15.751,-0.773],[-16.766,15.891],[-16.978,20.851],[-20.068,1.634],[-19.097,-4.519],[-19.38,-8.028],[-14.768,-14.06],[17.649,-12.124],[19.587,-3.072]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.169000004787,0.141000007181,0.136999990426,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1516.388,510.832],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 57","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.201,-2.963],[0.748,-2.793],[0.1,-0.42],[0.056,-0.272],[0,-0.046],[0.402,-1.623],[2.309,-3.03],[4.964,-0.613],[0.446,0.568],[0.915,4.824],[0.826,2.078],[0.189,1.373],[0,0.409],[-0.836,2.917],[-9.917,-0.057],[-2.566,-4.972]],"o":[[-0.178,2.736],[-0.167,0.658],[-0.034,0.136],[-0.011,0.045],[-0.224,0.976],[-0.636,2.577],[-1.004,1.317],[-6.917,0.863],[-3.157,-4.086],[0,0],[-0.145,-0.363],[-0.123,-0.897],[-0.023,-2.031],[1.741,-6.061],[7.586,0.034],[2.209,4.257]],"v":[[18.267,-5.818],[16.85,0.54],[16.46,2.095],[16.315,2.719],[16.293,2.844],[14.24,11.777],[10.469,20.676],[1.389,26.681],[-11.139,20.483],[-16.293,5.897],[-17.866,0.017],[-18.602,-2.695],[-18.691,-4.705],[-17.922,-12.73],[0.34,-27.486],[16.549,-17.327]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.620000023935,0.46699999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1515.703,525.684],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 58","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.075,0],[-0.762,0.754],[0.106,0.091],[0.099,-0.098],[0.153,-0.116],[-0.014,0.044],[0.4,0.366],[0.118,0.011],[0.015,0.013],[-0.305,0.655],[-0.273,0.712],[-0.084,0.241],[-0.451,0.136],[-0.112,-0.029],[-0.002,-0.019],[-0.141,0.012],[0.013,0.133],[1.356,0.358],[0.271,-0.081],[0.346,-0.987],[0.108,-0.282],[0.225,-0.482],[-0.424,-0.354],[-0.105,-0.009],[-0.03,-0.028],[0.106,-0.335],[-0.256,-0.157]],"o":[[0.243,0],[0.098,-0.098],[-0.107,-0.091],[-0.364,0.361],[0.015,-0.048],[0.15,-0.472],[-0.166,-0.151],[-0.078,-0.006],[-0.147,-0.122],[0.228,-0.488],[0.109,-0.285],[0.332,-0.948],[0.233,-0.071],[1.039,0.274],[0.013,0.133],[0.144,-0.013],[-0.023,-0.227],[-0.291,-0.077],[-0.725,0.219],[-0.083,0.237],[-0.266,0.697],[-0.48,1.028],[0.146,0.123],[0.091,0.008],[0.179,0.163],[-0.124,0.391],[0.06,0.037]],"v":[[-1.69,4.305],[-0.324,3.314],[-0.338,2.972],[-0.709,2.984],[-1.464,3.666],[-1.421,3.525],[-1.465,2.04],[-1.926,1.862],[-2.035,1.839],[-1.559,0.385],[-0.775,-1.424],[-0.489,-2.214],[0.474,-3.76],[1.037,-3.763],[2.276,-1.602],[2.561,-1.383],[2.798,-1.646],[1.182,-4.228],[0.312,-4.22],[-0.989,-2.363],[-1.271,-1.584],[-2.042,0.194],[-2.387,2.197],[-1.976,2.344],[-1.835,2.384],[-1.923,3.389],[-1.89,4.245]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.819999964097,0.505999995213,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1534.531,530.128],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 59","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.736,3.012],[-1.025,-0.063],[-0.477,-0.59],[0.043,-0.261],[0.647,-0.753],[1.762,0.401],[0.659,1.158]],"o":[[0.625,-1.448],[0.821,0.051],[1.627,2.016],[-0.266,1.607],[-1.144,1.328],[-0.336,-0.076],[0.736,-3.012]],"v":[[-2.01,-4.289],[0.76,-6.58],[2.59,-5.279],[3.821,-0.617],[2.075,2.831],[-2.531,6.242],[-4.217,4.748]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.620000023935,0.46699999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1534.28,530.288],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 60","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.736,3.012],[1.025,-0.063],[0.477,-0.59],[-0.043,-0.261],[-0.647,-0.753],[-1.762,0.401],[-0.659,1.158]],"o":[[-0.625,-1.448],[-0.821,0.051],[-1.627,2.016],[0.265,1.607],[1.144,1.328],[0.336,-0.076],[-0.736,-3.012]],"v":[[2.01,-4.289],[-0.76,-6.58],[-2.59,-5.279],[-3.821,-0.617],[-2.075,2.831],[2.531,6.242],[4.217,4.748]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.620000023935,0.46699999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1496.545,530.288],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 61","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[1508.662,549.019],"ix":2},"a":{"a":0,"k":[1508.662,549.019],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 66","np":6,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[4.899,-2.772],[2.352,0.017],[-0.009,1.506],[0,0]],"o":[[0,0],[-0.541,1.369],[-2.969,1.687],[0.009,-1.507],[0,0],[0,0]],"v":[[7.868,-8.183],[7.8,-1.968],[0.406,6.598],[-7.868,8.707],[-7.842,4.196],[-7.707,-8.725]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.819999964097,0.505999995213,0.361000001197,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1516.355,548.566],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 62","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.562,-4.399],[1.158,-0.616],[0.857,-0.168],[2.506,0.951],[1.351,0.719],[-0.939,4.926],[-0.577,4.336],[0,0],[-0.034,-0.074],[-0.02,0.047],[0,0],[0,0],[-0.924,-4.788]],"o":[[-0.415,0.442],[-0.636,0.335],[-1.978,0.386],[-0.819,-0.311],[1.108,-4.402],[0.901,-4.73],[0,0],[0.034,0.073],[0.013,-0.047],[0,0],[0,0],[1.111,4.258],[0.938,4.84]],"v":[[7.029,12.331],[4.658,14.159],[2.416,14.956],[-3.698,13.784],[-7.028,12.27],[-3.937,-1.729],[-1.735,-15.341],[-0.209,-14.383],[-0.109,-14.162],[-0.062,-14.296],[0.14,-14.169],[1.719,-15.133],[4.798,-1.548]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.13300000359,0.458999992819,0.717999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1515.829,576.882],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 63","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.027,-10.585],[1.131,0.054],[1.265,0.053],[1.7,0.074],[1.091,0.053],[3.14,0.141],[0.013,10.672],[-1.205,0.522],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.212,-0.596]],"o":[[-1.132,-0.054],[-1.266,-0.06],[-1.701,-0.074],[-1.085,-0.047],[-3.14,-0.141],[-0.014,-10.672],[1.205,-0.516],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.212,0.596],[0.026,10.578]],"v":[[12.51,17.344],[9.109,17.19],[5.306,17.023],[0.211,16.795],[-3.05,16.648],[-12.47,16.226],[-12.51,-15.791],[-8.895,-17.344],[-2.501,-13.354],[-1.088,-12.477],[0.438,-11.519],[0.586,-11.432],[0.786,-11.305],[2.367,-12.269],[3.967,-13.24],[8.787,-16.186],[12.43,-14.398]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1514.907,574.018],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 64","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[3.663,-0.654],[2.268,2.995],[-0.017,1.954],[-0.009,1.506],[0,0]],"o":[[0,0],[0,0],[-0.389,0.559],[-3.553,0.628],[0.009,-1.954],[0.009,-1.507],[0,0],[0,0]],"v":[[7.885,-13.365],[7.817,-7.15],[7.69,9.387],[1.692,13.278],[-7.885,9.387],[-7.851,3.525],[-7.825,-0.986],[-7.69,-13.907]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.948999980852,0.620000023935,0.46699999641,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1516.338,553.748],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 65","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Layer 3 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1040.506,1001.048,0],"ix":2},"a":{"a":0,"k":[1040.506,1001.048,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":90,"s":[110,110,100]},{"t":180.00000733155,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.424],[3.404,-1.546],[0,0],[2.242,0],[0,2.234],[0,0],[0,3.985],[-5.424,0]],"o":[[0,3.985],[0,0],[0,2.234],[-2.234,0],[0,0],[-3.404,-1.546],[0,-5.424],[5.432,0]],"v":[[9.828,-6.206],[4.065,2.747],[4.065,11.986],[0,16.034],[-4.057,11.986],[-4.057,2.747],[-9.829,-6.206],[0,-16.033]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1044.517,1002.551],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.594],[0,0],[13.795,-13.795],[21.399,0.241],[13.688,14.778],[-16.164,-0.179],[-13.983,13.983],[0,21.05],[0,0],[0.143,0.742]],"o":[[0,0],[0,21.051],[-13.983,13.984],[-21.623,-0.241],[12.214,8.827],[21.39,0.232],[13.795,-13.795],[0,0],[0,-0.787],[6.486,0.42]],"v":[[65.891,-49.24],[65.891,-14.805],[43.562,39.099],[-11.208,61.419],[-65.891,37.018],[-22.609,51.314],[32.152,28.985],[54.48,-24.919],[54.48,-59.354],[54.266,-61.66]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.102000000898,0.270999983245,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1054.855,1007.995],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-6.873],[0,0],[13.796,-13.795],[21.393,0.237],[0,41.922],[0,0],[-6.873,0]],"o":[[6.873,0],[0,0],[0,21.05],[-13.984,13.984],[-41.919,-0.465],[0,0],[0,-6.873],[0,0]],"v":[[63.784,-61.674],[76.229,-49.229],[76.229,-14.792],[53.9,39.112],[-0.869,61.436],[-76.228,-15.755],[-76.228,-49.229],[-63.783,-61.674]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.176000004189,0.39199999641,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1044.517,1007.982],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.158,4.678],[7.158,4.678],[7.158,-4.678],[-7.158,-4.678]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.231000010173,0.298000021542,0.564999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1096.773,941.63],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.158,4.678],[7.158,4.678],[7.158,-4.678],[-7.158,-4.678]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.231000010173,0.298000021542,0.564999988032,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[992.261,941.63],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[24.867,0],[0,-24.867],[0,0],[0,0],[0,0],[-32.762,0],[0,-32.761]],"o":[[0,0],[0,0],[0,-24.867],[-24.867,0],[0,0],[0,0],[0,0],[0,-32.761],[32.761,0],[0,0]],"v":[[59.414,41.231],[45.098,41.231],[45.098,18.184],[0,-26.914],[-45.098,18.184],[-45.098,41.231],[-59.414,41.231],[-59.414,18.184],[0,-41.23],[59.414,18.184]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.211999990426,0.317999985639,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1044.517,905.078],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":20,"s":[985.517,952.078],"to":[0,-0.917],"ti":[0,0.917]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":50,"s":[985.517,946.578],"to":[0,0],"ti":[0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":130,"s":[985.517,946.578],"to":[0,0.917],"ti":[0,-0.917]},{"t":160.000006516934,"s":[985.517,952.078]}],"ix":2},"a":{"a":0,"k":[985.517,946.578],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[-19]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":130,"s":[0]},{"t":160.000006516934,"s":[-19]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Layer 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[967,780.53,0],"ix":2},"a":{"a":0,"k":[967,780.53,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.854],[1.854,0],[0,0],[0,-1.855]],"o":[[0,0],[1.854,0],[0,-1.855],[0,0],[-1.855,0],[0,1.854]],"v":[[-18.85,3.358],[18.851,3.358],[22.208,0.001],[18.851,-3.357],[-18.85,-3.357],[-22.208,0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":54,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":126,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":162,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"t":180.00000733155,"s":[0.654999976065,0.702000038297,0.969000004787,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,1055.237],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.855],[1.854,0],[0,0],[0,-1.854]],"o":[[0,0],[1.854,0],[0,-1.854],[0,0],[-1.855,0],[0,1.855]],"v":[[-18.85,3.357],[18.851,3.357],[22.208,0],[18.851,-3.357],[-18.85,-3.357],[-22.208,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":54,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":126,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":162,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"t":180.00000733155,"s":[0.654999976065,0.702000038297,0.969000004787,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,1029.868],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,914.052],"ix":2},"a":{"a":0,"k":[1604.238,1042.552],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.854],[1.854,0],[0,0],[0,-1.855]],"o":[[0,0],[1.854,0],[0,-1.855],[0,0],[-1.855,0],[0,1.854]],"v":[[-18.85,3.358],[18.851,3.358],[22.208,0.001],[18.851,-3.357],[-18.85,-3.357],[-22.208,0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":54,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":126,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":162,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"t":180.00000733155,"s":[0.654999976065,0.702000038297,0.969000004787,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,1055.237],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.855],[1.854,0],[0,0],[0,-1.854]],"o":[[0,0],[1.854,0],[0,-1.854],[0,0],[-1.855,0],[0,1.855]],"v":[[-18.85,3.357],[18.851,3.357],[22.208,0],[18.851,-3.357],[-18.85,-3.357],[-22.208,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":54,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":126,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":162,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"t":180.00000733155,"s":[0.654999976065,0.702000038297,0.969000004787,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,1029.868],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,978.552],"ix":2},"a":{"a":0,"k":[1604.238,1042.552],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.854],[1.854,0],[0,0],[0,-1.855]],"o":[[0,0],[1.854,0],[0,-1.855],[0,0],[-1.855,0],[0,1.854]],"v":[[-18.85,3.358],[18.851,3.358],[22.208,0.001],[18.851,-3.357],[-18.85,-3.357],[-22.208,0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":54,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":126,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":162,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"t":180.00000733155,"s":[0.654999976065,0.702000038297,0.969000004787,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,1055.237],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.855],[1.854,0],[0,0],[0,-1.854]],"o":[[0,0],[1.854,0],[0,-1.854],[0,0],[-1.855,0],[0,1.855]],"v":[[-18.85,3.357],[18.851,3.357],[22.208,0],[18.851,-3.357],[-18.85,-3.357],[-22.208,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":54,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":72,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":108,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":126,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":144,"s":[0.654999976065,0.702000038297,0.969000004787,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":162,"s":[0.534809708595,0.854874789715,0.988235294819,1]},{"t":180.00000733155,"s":[0.654999976065,0.702000038297,0.969000004787,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,1029.868],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,1042.552],"ix":2},"a":{"a":0,"k":[1604.238,1042.552],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.854],[1.854,0],[0,0],[0,-1.855]],"o":[[0,0],[1.854,0],[0,-1.855],[0,0],[-1.855,0],[0,1.854]],"v":[[-18.85,3.357],[18.851,3.357],[22.208,0],[18.851,-3.357],[-18.85,-3.357],[-22.208,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.528999956916,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,1042.552],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.713,0],[0,0],[0,2.713],[0,0],[2.713,0],[0,-2.713],[0,0]],"o":[[0,0],[2.713,0],[0,0],[0,-2.713],[-2.713,0],[0,0],[0,2.713]],"v":[[0,16.042],[0,16.042],[4.913,11.129],[4.913,-11.129],[0,-16.042],[-4.913,-11.129],[-4.913,11.129]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.528999956916,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1440.02,1042.552],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.713,0],[0,0],[0,2.713],[0,0],[2.713,0],[0,-2.713],[0,0]],"o":[[0,0],[2.713,0],[0,0],[0,-2.713],[-2.713,0],[0,0],[0,2.713]],"v":[[0,16.042],[0,16.042],[4.913,11.129],[4.913,-11.129],[0,-16.042],[-4.913,-11.129],[-4.913,11.129]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.654999976065,0.702000038297,0.969000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1422.222,1042.552],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[52.738,16.042],[-52.737,16.042],[-52.737,-16.042],[52.738,-16.042]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.528999956916,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1510.877,1042.552],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.82,0],[0,0],[0,0.819],[0,0],[-0.82,0],[0,0],[0,-0.82],[0,0]],"o":[[0,0],[-0.82,0],[0,0],[0,-0.82],[0,0],[0.82,0],[0,0],[0,0.819]],"v":[[119.632,26.87],[-119.632,26.87],[-121.116,25.386],[-121.116,-25.386],[-119.632,-26.87],[119.632,-26.87],[121.116,-25.386],[121.116,25.386]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.184000007779,0.305999995213,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1522.001,1042.552],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.854],[1.854,0],[0,0],[0,-1.855]],"o":[[0,0],[1.854,0],[0,-1.855],[0,0],[-1.855,0],[0,1.854]],"v":[[-18.85,3.357],[18.851,3.357],[22.208,0],[18.851,-3.357],[-18.85,-3.357],[-22.208,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.654999976065,0.702000038297,0.969000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,990.842],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.854],[1.854,0],[0,0],[0,-1.855]],"o":[[0,0],[1.854,0],[0,-1.855],[0,0],[-1.855,0],[0,1.854]],"v":[[-18.85,3.357],[18.851,3.357],[22.208,0],[18.851,-3.357],[-18.85,-3.357],[-22.208,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.528999956916,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,978.157],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.855],[1.854,0],[0,0],[0,-1.854]],"o":[[0,0],[1.854,0],[0,-1.854],[0,0],[-1.855,0],[0,1.855]],"v":[[-18.85,3.357],[18.851,3.357],[22.208,0],[18.851,-3.357],[-18.85,-3.357],[-22.208,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.654999976065,0.702000038297,0.969000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,965.473],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.713,0],[0,0],[0,2.713],[0,0],[2.713,0],[0,-2.713],[0,0]],"o":[[0,0],[2.713,0],[0,0],[0,-2.713],[-2.713,0],[0,0],[0,2.713]],"v":[[0,16.042],[0,16.042],[4.913,11.129],[4.913,-11.129],[0,-16.042],[-4.913,-11.129],[-4.913,11.129]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.528999956916,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1440.02,978.157],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.713,0],[0,0],[0,2.713],[0,0],[2.713,0],[0,-2.713],[0,0]],"o":[[0,0],[2.713,0],[0,0],[0,-2.713],[-2.713,0],[0,0],[0,2.713]],"v":[[0,16.042],[0,16.042],[4.913,11.129],[4.913,-11.129],[0,-16.042],[-4.913,-11.129],[-4.913,11.129]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.654999976065,0.702000038297,0.969000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1422.222,978.157],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[52.738,16.042],[-52.737,16.042],[-52.737,-16.042],[52.738,-16.042]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.528999956916,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1510.877,978.157],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.82,0],[0,0],[0,0.819],[0,0],[-0.82,0],[0,0],[0,-0.82],[0,0]],"o":[[0,0],[-0.82,0],[0,0],[0,-0.82],[0,0],[0.82,0],[0,0],[0,0.819]],"v":[[119.632,26.87],[-119.632,26.87],[-121.116,25.386],[-121.116,-25.386],[-119.632,-26.87],[119.632,-26.87],[121.116,-25.386],[121.116,25.386]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.184000007779,0.305999995213,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1522.001,978.157],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.854],[1.854,0],[0,0],[0,-1.855]],"o":[[0,0],[1.854,0],[0,-1.855],[0,0],[-1.855,0],[0,1.854]],"v":[[-18.85,3.357],[18.851,3.357],[22.208,0],[18.851,-3.357],[-18.85,-3.357],[-22.208,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.654999976065,0.702000038297,0.969000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,926.447],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.854],[1.854,0],[0,0],[0,-1.855]],"o":[[0,0],[1.854,0],[0,-1.855],[0,0],[-1.855,0],[0,1.854]],"v":[[-18.85,3.357],[18.851,3.357],[22.208,0],[18.851,-3.357],[-18.85,-3.357],[-22.208,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.528999956916,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,913.762],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.855,0],[0,0],[0,1.854],[1.854,0],[0,0],[0,-1.855]],"o":[[0,0],[1.854,0],[0,-1.855],[0,0],[-1.855,0],[0,1.854]],"v":[[-18.85,3.357],[18.851,3.357],[22.208,0],[18.851,-3.357],[-18.85,-3.357],[-22.208,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.654999976065,0.702000038297,0.969000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1604.238,901.078],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.713,0],[0,0],[0,2.713],[0,0],[2.713,0],[0,-2.713],[0,0]],"o":[[0,0],[2.713,0],[0,0],[0,-2.713],[-2.713,0],[0,0],[0,2.713]],"v":[[0,16.042],[0,16.042],[4.913,11.129],[4.913,-11.129],[0,-16.042],[-4.913,-11.129],[-4.913,11.129]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.528999956916,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1440.02,913.762],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.713,0],[0,0],[0,2.713],[0,0],[2.713,0],[0,-2.713],[0,0]],"o":[[0,0],[2.713,0],[0,0],[0,-2.713],[-2.713,0],[0,0],[0,2.713]],"v":[[0,16.042],[0,16.042],[4.913,11.129],[4.913,-11.129],[0,-16.042],[-4.913,-11.129],[-4.913,11.129]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.654999976065,0.702000038297,0.969000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1422.222,913.762],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[52.738,16.042],[-52.737,16.042],[-52.737,-16.042],[52.738,-16.042]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.430999995213,0.528999956916,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1510.877,913.762],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.82,0],[0,0],[0,0.819],[0,0],[-0.819,0],[0,0],[0,-0.82],[0,0]],"o":[[0,0],[-0.819,0],[0,0],[0,-0.82],[0,0],[0.82,0],[0,0],[0,0.819]],"v":[[119.632,26.87],[-119.632,26.87],[-121.116,25.386],[-121.116,-25.386],[-119.632,-26.87],[119.632,-26.87],[121.116,-25.386],[121.116,25.386]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.184000007779,0.305999995213,0.607999973671,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1522.001,913.763],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[111.476,90.339],[-111.476,90.339],[-111.476,-90.339],[111.476,-90.339]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.118000000598,0.226999993418,0.438999998803,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1522.001,966.578],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Layer 10 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[967,780.53,0],"ix":2},"a":{"a":0,"k":[967,780.53,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[170.347,209.481],[84.024,209.481],[-84.021,-66.185],[-84.021,209.481],[-170.347,209.481],[-170.347,-209.481],[-72.598,-209.481],[84.312,55.337],[84.312,-209.481],[170.347,-209.481]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.286000001197,0.513999968884,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1322.082,859.941],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.683,-7.666],[5.657,-5.468],[7.095,-2.894],[1.393,-0.48],[4.475,-0.753],[6.976,0],[0,0],[0,0],[0,0],[-8.922,-3.83],[-5.656,-6.427],[-2.689,-8.345],[0,-9.013]],"o":[[-2.689,7.672],[-4.771,4.612],[-1.313,0.542],[-3.847,1.324],[-5.891,0.988],[0,0],[0,0],[0,0],[12.273,0],[8.922,3.841],[5.657,6.421],[2.683,8.345],[0,9.024]],"v":[[69.201,-45.176],[56.683,-25.466],[38.88,-14.193],[34.816,-12.663],[22.321,-9.541],[3.022,-8.057],[-74.093,-8.057],[-74.093,-139.558],[3.022,-139.558],[34.816,-133.804],[56.683,-118.404],[69.201,-96.251],[73.231,-70.211]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[7.095,16.981],[13.528,12.375],[19.47,6.907],[24.745,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-19.47,6.233],[-13.522,11.512],[-7.106,16.302],[0,20.338]],"o":[[-7.106,-16.976],[-13.522,-12.37],[-19.47,-6.907],[0,0],[0,0],[0,0],[0,0],[0,0],[24.745,0],[19.47,-6.233],[13.528,-11.508],[7.095,-16.302],[0,-19.944]],"v":[[149.775,-126.178],[118.838,-170.204],[69.344,-199.121],[3.022,-209.481],[-160.421,-209.481],[-160.421,209.481],[-74.093,209.481],[-74.093,61.866],[3.022,61.866],[69.344,52.517],[118.838,25.895],[149.775,-15.825],[160.421,-70.788]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.286000001197,0.513999968884,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[932.039,859.941],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.432,105.605],[94.527,-209.481],[190.633,-209.481],[44.745,209.481],[-45.319,209.481],[-190.634,-209.481],[-94.813,-209.481]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.286000001197,0.513999968884,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[541.561,859.941],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 1","parent":8,"sr":1,"ks":{"o":{"a":0,"k":10,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1154.771,1199.286,0],"ix":2},"a":{"a":0,"k":[142,-210,0],"ix":1},"s":{"a":0,"k":[139,139,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[684,684],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.792156862745,0.949019607843,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[142,-210],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":0,"nm":"Map Outlines Comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[750,781,0],"ix":2},"a":{"a":0,"k":[1155,1201,0],"ix":1},"s":{"a":0,"k":[65,65,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":0,"k":{"i":[[262.335,0],[0,-262.335],[-262.335,0],[0,262.335]],"o":[[-262.335,0],[0,262.335],[262.335,0],[0,-262.335]],"v":[[1155,726],[680,1201],[1155,1676],[1630,1201]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"w":2400,"h":1800,"ip":0,"op":180.00000733155,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Layer 1 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[967,780.53,0],"ix":2},"a":{"a":0,"k":[967,780.53,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-23.726],[-434.464,0],[0,23.726],[434.464,0]],"o":[[0,23.726],[434.464,0],[0,-23.726],[-434.464,0]],"v":[[-786.667,0],[0,42.959],[786.667,0],[0,-42.959]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.870999983245,0.922000002394,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[967.002,1065.41],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180.00000733155,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/assets/51a05581.json b/Android-kotlin-Code/app/src/main/assets/51a05581.json
new file mode 100644
index 0000000..1fab731
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/assets/51a05581.json
@@ -0,0 +1 @@
+{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":60,"ip":0,"op":120,"w":150,"h":150,"nm":"Connected State","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Icon","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[25,25,0],"ix":1},"s":{"a":0,"k":[80,80,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-10.788],[3.663,-3.663],[5.179,0],[3.663,3.663],[0,5.179],[0,0]],"o":[[0,0],[0,5.179],[-3.663,3.663],[-5.18,0],[-3.663,-3.663],[0,-10.788],[0,0]],"v":[[13.281,-17.188],[19.531,-2.344],[13.811,11.467],[0.001,17.188],[-13.811,11.467],[-19.531,-2.344],[-13.281,-17.188]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.001,-24.874],[0.001,-4.563]],"c":false},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[25,27.344],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Solid Background","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[22,20,0],"ix":1},"s":{"a":0,"k":[130,130,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[76,76],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.360784313725,0.725490196078,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22,20],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Ripple","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[80]},{"t":60,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[22,20,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[130,130,100]},{"t":60,"s":[197.368,197.368,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[76,76],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.360151014141,0.725490196078,0.199154169419,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22,20],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/assets/65ea130a.json b/Android-kotlin-Code/app/src/main/assets/65ea130a.json
new file mode 100644
index 0000000..103d268
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/assets/65ea130a.json
@@ -0,0 +1 @@
+{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.1.1","a":"","k":"","d":"","tc":""},"fr":60,"ip":0,"op":120,"w":150,"h":150,"nm":"Connecting State","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Icon","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[25,25,0],"ix":1},"s":{"a":0,"k":[80,80,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-10.788],[3.663,-3.663],[5.179,0],[3.663,3.663],[0,5.179],[0,0]],"o":[[0,0],[0,5.179],[-3.663,3.663],[-5.18,0],[-3.663,-3.663],[0,-10.788],[0,0]],"v":[[13.281,-17.188],[19.531,-2.344],[13.811,11.467],[0.001,17.188],[-13.811,11.467],[-19.531,-2.344],[-13.281,-17.188]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.001,-24.874],[0.001,-4.563]],"c":false},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4.5,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[25,27.344],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Progress","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[22,20,0],"ix":1},"s":{"a":0,"k":[110,110,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[76,76],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[99.99]},{"t":80,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100]},{"t":119,"s":[0.01]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[22,20],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Solid Background","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[22,20,0],"ix":1},"s":{"a":0,"k":[130,130,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[76,76],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.494117676978,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22,20],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Ripple","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[80]},{"t":60,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75,75,0],"ix":2},"a":{"a":0,"k":[22,20,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[130,130,100]},{"t":60,"s":[197.368,197.368,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[76,76],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.494117647059,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22,20],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/assets/ASN.mmdb b/Android-kotlin-Code/app/src/main/assets/ASN.mmdb
new file mode 100644
index 0000000..52659fd
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/assets/ASN.mmdb differ
diff --git a/Android-kotlin-Code/app/src/main/assets/geoip.metadb b/Android-kotlin-Code/app/src/main/assets/geoip.metadb
new file mode 100644
index 0000000..468c6bd
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/assets/geoip.metadb differ
diff --git a/Android-kotlin-Code/app/src/main/assets/geosite.dat b/Android-kotlin-Code/app/src/main/assets/geosite.dat
new file mode 100644
index 0000000..bf59c2c
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/assets/geosite.dat
@@ -0,0 +1,38649 @@
+
+
+CATEGORY-NTP-JPntp.nict.jpntp2.wakwak.comntp1.wakwak.comntp2.ring.gr.jpntp-tk01.ocn.ad.jpntp1.tohoku.ac.jpntp.tohoku.ac.jpats1.e-timing.ne.jpntp1.ring.gr.jp
ntp.tut.ac.jpntp2.tohoku.ac.jpntp-tk02.ocn.ad.jpntp-os01.ocn.ad.jpntp1.plala.or.jpntp2.plala.or.jpntp.ring.gr.jpntp0.ring.gr.jpntp3.v6.mfeed.ad.jps2csntp.miz.nao.ac.jpntp.t.ring.gr.jpntp.dnsbalance.ring.gr.jpntp.nc.u-tokyo.ac.jpntp2.v6.mfeed.ad.jpntp1.v6.mfeed.ad.jpntp3.jst.mfeed.ad.jpntp2.jst.mfeed.ad.jpntp1.jst.mfeed.ad.jpntp.jst.mfeed.ad.jp
+
+SANKEIsankei-ad-info.cominnovations-i.com
sankei-ad.net
ironna.jptvnaviweb.jpjapan-forward.com
keiba.net
business-i.jpseiron-sankei.com
mostly.jp
+sankei.com
+ign.jpmetropolitana.tokyosankei-call.jpseasidestory.tokyo
+sanspo.com
sankeishop.jpsankei-kurashi.comsankei-shougakukai.jpsankei-tours.comsankeibiz.jp
sankei.jpknowswho.co.jpsankei.co.jpsankei-kaihatsu.co.jpsankei-eiga.co.jpsankei-digital.co.jpsankei-books.co.jp
iza.ne.jpzakzak.co.jp
+
+
+LONGBRIDGElongbridge.cloudlongbridge.global
longbridge.hk
longbridge.sglongbridgeapp.comlongportapp.com
lbkrs.com
wbrks.com
+
+NODEJS
+nodejs.org
+3
+WOLAI
wolai.com
+wol.tvwostatic.cn
+f
+COURSERAcoursera-for-business.orgcoursera.community
coursera.helpcoursera.org
+$
+FREECODECAMPfreecodecamp.org
+
+HBOmax.comhbo.comhbogoasia.phforthethrone.comhbogoasia.sghboasia.com
maxgo.comhbogoasia.twhbogo.eu
hbogoasia.comhbogoasia.hkhbogoasia.iddiscomax.comcinemax.com
hbogo.com
+hbomax.com
hbomaxcdn.com
+hbonow.com
brightline.tvhbogo.co.th$ hbomax-images.warnermediacdn.comhbo.com.edgesuite.nethbo.map.fastly.nethbomaxdash.s.llnwi.nethbo.com.c.footprint.net
+#
+TORexit oniontor
+
+VERIZONcdn.js7k.com yahoo
+flickr
+oath.cloudoath.comouroath.comstatic-verizon.com
+uplynk.comverizon.comverizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.comvzw.com
+xo.comomniroot.comyahoo.psyahoo.snyahoo.atyahoo.azyahoo.bayahoo.beyahoo.bgyahoo.biyahoo.bsyahoo.btyahoo.byyahoo.ca
yahoo.catyahoo.cdyahoo.cgyahoo.chyahoo.clyahoo.cmstaticflickr.com
+flickr.net
+flickr.comflic.kryahoo.aeyusercontent.com
ymail.comyimg.jpyimg.comyho.comyahoosportsbook.comyahoosandbox.comyahoomusic.comyahoohealth.comyahoofinance.comyahoodns.net
yahooapis.comtechcrunch.com
yahoo.com
+myguide.hkmaktoob.comyahoo.wsyahoo.vgyahoo.tnyahoo.asyahoo.tmyahoo.tlyahoo.deyahoo.tkyahoo.tgyahoo.styahoo.sryahoo.soyahoo.isyahoo.smyahoo.skyahoo.siyahoo.dkyahoo.sgyahoo.djyahoo.seyahoo.rwyahoo.ruyahoo.royahoo.ptyahoo.amyahoo.pnyahoo.plyahoo.phyahoo.nuyahoo.noyahoo.nl
yahoo.netyahoo.mxyahoo.mwyahoo.mkyahoo.meyahoo.mdyahoo.lvyahoo.luyahoo.ltyahoo.layahoo.joyahoo.czyahoo.jeyahoo.ityahoo.shyahoo.dmyahoo.eeyahoo.esyahoo.fiyahoo.fmyahoo.fryahoo.geyahoo.ggyahoo.glyahoo.gmyahoo.gpyahoo.gryahoo.gyyahoo.hkyahoo.hryahoo.huyahoo.ieyahoo.imyahoo.inyahoo.com.bdyahoo.com.lyyahoo.com.bzyahoo.com.vnyahoo.com.vcyahoo.com.uyyahoo.com.uayahoo.com.twyahoo.com.tryahoo.com.tjyahoo.com.svyahoo.com.sgyahoo.com.sbyahoo.com.sayahoo.com.pyyahoo.com.pryahoo.com.pkyahoo.com.phyahoo.com.peyahoo.com.payahoo.com.omyahoo.com.nfyahoo.com.nayahoo.com.myyahoo.com.mxyahoo.com.mtyahoo.com.lbyahoo.com.kwyahoo.com.hkyahoo.com.gtyahoo.com.giyahoo.com.fjyahoo.com.esyahoo.com.egyahoo.com.ecyahoo.com.doyahoo.com.coyahoo.com.bryahoo.com.boyahoo.com.auyahoo.com.aryahoo.com.aiyahoo.com.agyahoo.com.afyahoo.co.zayahoo-news.com.hkyahoo.co.viyahoo.co.veyahoo.co.uzyahoo.co.ukyahoo.co.tzyahoo.co.thyahoo.co.nzyahoo.co.mzyahoo.co.kryahoo.co.jpyahoo.co.inyahoo.co.ilyahoo.co.idyahoo.co.cryahoo.co.ckyahoo.co.bwyahoo.co.aoyahoo.cn
+cnyahoo.com.cn
+cn
ads.yahoo.com
+adsgemini.yahoo.com
+ads
ysm.yahoo.com
+ads
+
+ZEE"zeenews-fonts.s3.amazonaws.com
+bgr.inbollywoodlife.comcareerfundas.comcricketcountry.comdnai.indnaindia.comearngeek.comekhindi.com
+ind.sh
india.comindiancolleges.comitripto.com
oncars.inprepsure.comthehealthsite.comwionews.com
yo1health.comzee.com
+zeebiz.comzeeentertainment.comzeenews.com
+A
+MEIZUflyme.cnmeizu.cn
meizu.com
mzres.com
+
+ORIGIN#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comdawngate.comeastore.comlordofultima.com
+origin.com
origin.tv
+@
+ SNODEHOME
+szbdyd.com
snodehome.comsnodehome.cn
++
+PTT
+ptt.ccptt2.ccptt3.cc
+P
+QUORA qr.ae
quora.comquoracdn.netpoe.com
+poecdn.net
+
+ CATEGORY-OLYMPIAD-IN-INFORMATICSjisuanke.com
+acwing.comlingkou.xyzlingkou.comleetcode.cn
51nod.comleetcode-cn.com
hihocoder.com
+lingkou.cnkidsccshow.com
vijos.orgoi-wiki.comopenjudge.cnrqnoj.cn
+uoj.acluogu.com.cn
+*
+MANOTO
+manoto1.tvmanototv.com
+
+
+PRIMEVIDEOaiv-cdn.netamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com
primevideo.ccprimevideo.comprimevideo.infoprimevideo.org
primevideo.tvamazonprimevideo.cn
+cn#amazonprimevideo.com.cn
+cn
+p
+KKBOX
+kfs.io
kk.stream
kkbox.com
kktix.comkktv.mekkbox.com.twkktv.com.tw
+
+CHINAMOBILE10086.cn139.comchinamobile.comchinamobileltd.com
migucloud.commigu.cn
+cmvideo.cn
miguvideo.comandfx.cn
andfx.net
+cmicrwx.cncmpassport.comfetion-portal.com
fetionpic.commmarket.commmarket6.com
+
+FENGXING
+fspcdn.com
+fun.tvfunshion.comfunshion.netibidian.comjvcsmart.cnjvcsmart.com.cn
+8
+KINGKONGLIVEkingkongapp.comkingkong.com.tw
+6
+AVMOOavmoo.click
avmoo.com
tellme.pw
+
+BLURAMSblurams.com
+:
+TELEKOMtelekom.com
+telekom.de
+telesec.de
+
+XBOXxboxforzamotorsport.netforzaracingchampionship.comforzarc.comgamepass.comorithegame.comrenovacionxboxlive.comtellmewhygame.comxbox.coxbox.comxbox.euxbox.org
+xbox360.coxbox360.com
+xbox360.euxbox360.org
+xboxab.comxboxgamepass.comxboxgamestudios.comxboxlive.com
+xboxone.coxboxone.com
+xboxone.euxboxplayanywhere.comxboxservices.comxboxstudios.com
+xbx.lv
+beth.gamesbethesda.netbethesdagamestudios.combethsoft.comdoom.comelderscrolls.comcallersbane.com
minecraft.netminecraftservices.comminecraftshop.com
+mojang.comxboxlive.cn
+cn
+
+
+APPLEDAILYprivilege.tw
+atnext.comtomonews.net
appledaily.hkappledaily.com
sharpdaily.twtwnextdigital.combestmallawards.comapplefruity.comprivilege.hknext.hk
omoplanet.comnextwork.twnextwork.hknextmgz.com
nextmedia.comnextmedia.com.twnextmag.com.twnextplus.com.hk
nexttv.com.twnextwork.com.hknextwork.com.twnextfilm.com.hknextdigital.com.tw
nxtdig.com.hk
nxtdig.com.twnextdigital.com.hk
eracom.com.tw
deluxe.com.hkapplehealth.com.hkappledaily.com.twappledaily.com.hk
+.
+CABLETVi-cable.comcabletv.com.hk
+>
+ CATCHPLAY
catchplay.comtra-ww000-cp.akamaized.net
+=
+
TRANSLATEWIKItranslatewiki.nettranslatewiki.org
+n
+ BYTEDANCEp1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.comp3-novel.byteimg.comp6-novel.byteimg.comtoutiaocloud.com
wtturl.cnactivity01.comactivity02.comactivity03.comactivity04.comactivity05.comactivitybyte.comactivity-dy.comactivity-wbsj.com
+aihst8.comali-api-test.netali-gtm-01.netali-gtm-pressure.comali-restore.netamemv.cn
amemv.com
amemv.netarco.designawemeughun.comawemeuglang.comawemeugsoul.comawemeugwave.combaikevod.combdactivity.com
+bdgslb.com
bdispatch.com
bdispatch.netbdns-api-test.netbdns-boe.combdns-boe.netbdns-gtm-01.netbdns-gtm-pressure.combdns-restore.net
bdns-test.com
bdns-test.net
bdppe.netbdsagslb.combdsagslbtest.combdxigualive.combdxiguavod.combdzjdsagslb.combetaband.net
betadance.netbetastar.cnbfcdnbf.combfcdnrd.combfcdnsc.com
boxdouyin.com
+bvfcdn.combx0byte.combyte000.combyte008.com
+byte00.com
+byte00.netbyte7bw.net
+byteac.combyteacct.combyteacctimg.combyteactivity11.combyteactivity12.combyteactivity13.combyteactivity14.combyteactivity15.combyteactivity16.combyteactivity.combyteadverts.combyteapi.com
+bytecdn.cnbytecdn.combytecdn.net
bytecdntp.combytecimg.combytedanceapi.combytedance-boe.netbytedance.cn
bytedance.com
bytedance.net
bytedance.orgbytedapm.combytedcdn.combyted-dast.com
byted-edu.combytedeliver.combytedgames.combytedns1.combytedns2.combytedns3.combytedns4.combytedns5.combytedns6.combytedns7.combytedns.combytednsdoc.combytedns.net
byted.orgbytedsocial.combyted-static.combyted-ug.com
byte-edge.combyte-edgeworker.combytefae.combytefast.netbytefcdn.combytefcdnrd.com
bytegecko.combytegeckoext.com
bytegoofy.combytegqpo.netbytegrowth.com
byte-gslb.combytegslb.combytehwm.combyteics.combyteics.netbyteimgc.combyteimg.combyteintl.net
bytelb000.net
+bytelb.com
+bytelb.net
bytemaimg.combytemastatic.combytemedi.com
bytenewst.combyteorg.combyteorge.combyteq5k.combyteq8u.netbytescm.combytesslb.netbytetcc.com
bytetech.infobyte-test.cn
byte-test.com
byte-test.netbytetos.combytetraffic.netbytetstatic.combytetstatic.netbytevalk.combytevcloudvod.combytexservice.comcdnbuild.comcdnbuild.netcdndns1.comcdndns2.comcookicut.comdoubo03.com
douyinact.com
douyinact.netdouyinfe.comdraftstatic.com
druid.vipduoshan.comfedlearner.netfeelgood.cngslbdns.comgslbdns.nethuaxiong.comhuoshancdn.comhuoshangroup.comhuoshanimg.comhuoshanlive.comhuoshanparty.comhuoshante8.comhuoshanvideo.cnhuoshanvideo.nethuoshanvod.comhuoshanxiaoshipin.cnhuoshanxiaoshipin.nethuoshanzhibo.cnhuoshanzhibo.nethypercachenet.comibdxigualive.comibdxiguavod.com
ibytedapm.com
+icphoto.cnidouyinliving.comidouyinpic.comidouyinstatic.comidouyinvod.com
iesdouyin.com
iesdouyin.net
ieshuodong.cnieshuodong.net
ihst8.comihuoshanimg.comihuoshanlive.comihuoshanstatic.comihuoshanvod.comiluckysf.netitmanager.clubitoutiaoliving.comjokecommunity.cnjokecommunity.comjokecommunity.net
jstti.com
+jtamac.com
kesong.cokolbuyer.cnlivecdnstatic.comlocal-ip.onlineluckysf.netmodernjs.cn
+myimis.com
ndcpp.comneihancommunity.cnneihancommunity.comneihancommunity.netnextvid.netneyetwatcher.comoortgslb.comopenbcs.com
openve.cnoriginalimg.comoriginalstatic.comoriginalvod.com
pacmantwo.comppkankan01.com
+pstatp.comqingfuwucdn.net
qishui.cn
+qishui.comqishuimusic.cnqualitycloud.topsamasty.comsearchstatic.comsearchtoutiaolive.comshidianguji.com
+sinflb.netsinf.net
sinf-test.net
+snssdk.comsupercachenet.comtekkenthree.com
tetrisone.comtiapi.cn
tiapi.net
+tlbapm.com
+toscdn.com
toutiao11.com
toutiao12.com
toutiao13.com
toutiao14.com
toutiao15.com
toutiaocdn.cntoutiaocdn.nettoutiaocloud.cntoutiaojisu.comtoutiaolite1.comtoutiaolite2.comtoutiaolite.comtoutiaoliving.comtoutiaopic.com
toutiaowap.cntoutiaowap.comtoutiaowap.nettr-test-ali.nettr-testboe.nettr-test.net
ttbyte.cn
+ttbyte.com
+ttbyte.net
+ttjisu.com
ttwebview.comugshare-img.com
vcloudapi.comvcloud-byte.comvestack-beta.comvestack-cicd.comvestack-preview.comvestack-sandbox.comvfcdnrd.comvolcanicengine.comvolcdns-test.comvolcdns-test.net
+voleai.comwoaihuoshan.com
+wohst8.comtoutiaocloud.netxiguaapp.cnxiguaapp.comxiguashipin.cnxiguashipin.net
xiguavideo.cnxiguavideo.net
xsgtvacct.comzijieapi.cnzijieapi.comzijieapi.netzijiecdn.cnzijiecdn.comzijiecdn.netzijiedj.comzijieimg.cnzijieimg.comzijieimg.netzijietiaodong.comzijieurl.cnzijieurl.comzijieurl.netzijiewap.cnzijiewap.comzijiewap.net
+zilrms.com
+ziyrta.com
zjbyte.cn
+zjbyte.com
+zjbyte.net
zjcdn.com
+zjfcdn.com
+zjgslb.comtoutiao.comtoutiaoapi.comtoutiaocdn.com
vemarsdev.com
99uri.comfeishu-pre.nettoutiaohao.net
toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.comtoutiaostatic.comtoutiaovod.com
+douyin.com
douyincdn.comdouyinliving.com
douyinpic.comdouyinstatic.com
douyinvod.comhuoshan.comhuoshanstatic.comhuoshanzhibo.com
+ixigua.comixiguavideo.comixgvideo.combdxiguaimg.combdxiguastatic.com
baike.com
feishu.cn
+feishu.net
feishucdn.com
feishupkg.com
+wukong.comwukongwenda.cnwukongwenda.comdcarapi.comdcarimg.comdcarlive.comdcarstatic.comdcarvod.com
+dcdapp.com
dongchedi.comdongchediapp.com
365yg.comgogokid.com
pipix.comqznovelvod.com
faceu.comulikecam.com
+rsproxy.cn
juejin.cn
juejin.imxitu.iobaseopendev.com
bytecloud.com
+byteoc.combytewebservice.com
+bytexns.cnbytexns.combytexns.net
bytexopen.com
meegobeta.comoceancloudapi.com
+okr.cnokr.comvscenevideo.comanycross.com
blmpb.combytedancehermestest.comfalconsending.com
+fei-shu.cn!feishu-3rd-party-services.comfeishu-boe.netfeishu-customer.cn
feishu-pre.cntoutiaohao.com
feishu-psc.cnfeishu-staging.cnfeishuapp-cdn.netfeishuapp.cn
feishuapp.comfeishudoc.cn
feishudoc.comfeishuhuiyi.cnfeishuhuiyi.comfeishuimg-boe.comfeishuimg-pre.com
feishuimg.comfeishukacdn.comfeishumeetings.cnfeishumeetings.comfeishuoffice.cnfeishuoffice.com feishuopenplatformrecord.comfeishustatus.cnfeishuvc.cnfeishuvc.comgetfeishu.cn
getfeishu.com
+getsays.cngetsays.com
lackvc.cnsecurityfeishu.cn
securityfs.cnstatusfeishu.cnlarkofficecdn.comthelarkcloud.comlarkofficeimg.com
larkcloud.com
larkcloud.net
+larkfn.comlarkmeetings.cnlarkmeetings.comlarkoffice.comstatuslarkoffice.comlarkofficeapp-boe.comlarkofficeapp-pre.comlarkofficeapp.comlarkofficeboe.comlark.cnlarkofficepkg.comlark-passport-qa-sg.netlarkofficepre.comlarkrooms.cn
larkrooms.comlarksuite-pre.com
larksuite.com
+larkvc.comlarksuiteimg.comlarksuitecdn.comlarksuiteimg-boe.comlarksuiteimg-pre.comqznovelstatic.comqznovelpic.comqznovel.comnovelfmvod.comnovelfmstatic.comnovelfmpic.comnovelfm.comaigc-cloud.combdegnine.com
+bplslb.com
bpltm.combyte-dns.combyte-dns.netbytehouse.cnbyteinspire.cnbyteinspire.combytevdn-boe.combytevdn.comcache4ever.comcache666.comcloudendpoint.cndouyincloud.netdouyincloud.run
dycloudbk.comdycloud.runemr-volces.com
+feilian.cniccvlog.comifeilian.cnifeilian.cominspirecloud.cninspirecloud.comisealsuite.comivolces.comkfcbest.com
kych5.commultilingual-volc.comqingfuwuapi.cnqingfuwucdn.comqingfuwu.cnqingfuwu.comslbauto.com
sms18.comtoutiaopanapi.comtoutiaopan.com
+ttgslb.com
ttgtm.comvecdnlb.comvecloudgame.comvedcdnlb.comvedsalb.comveefdev.comveew-alb-cn1.comveew-alb-cn2.comveew-alb-ts.com
+vegalb.com
+vegslb.com
vegtm.net
veicplive.comve-imcloud.com99uri.cnvemarsstatic.com
vemarsweb.comvertciot.com
vestack.cloudve-trafficroute.comve-trafficroute.netvolcadocean.comvolcadvc.comvolcalb.comvolcautovod.comvolcbiz.com
volcca.cn
+volcca.com
+volcca.netvolccdn1.comvolccdn2.com
+volccdn.cnvolccdn.comvolcddos001.comvolcddos.comvolcdem.comvolcdlspace.cn
+volcdn.comvolc-dns.comvolcdns.comvolc-dns.netvolc-dns.pubvolcdns.pubvolceapi.comvolceapplog.comvolcecr.comvolcecw.comvolc-embed.comvolcenginapi.comvolcenginealb.comvolcengineapi.com
volcengine.cnvolcengine.comvolcengine-dns.comvolcenginedns.comvolcengine-dns.netvolcenginedns.netvolcengine.netvolcenginepaas.com
+volces.comvolcfake.comvolcfcdnbyte.comvolcfcdn.comvolcfcdndvs.comvolcfcdnplus.comvolcfcdnrd.comvolcfcdnsc.comvolcfxgjrtm.com
volcgroup.comvolcgslb.comvolcgtm.comvolciad.com
volcimagex.cnvolcimagex.comvolcimagex.netvolcimagextest.comvolcmagicpage.com
volcmcdn1.com
volcmcdn2.com
volcmcdn3.com
volcmcdn4.comvolcmgs.comvolcmusecdn.comvolcocic.comvolcopjrtm.comvolcpartner.comvolcpartner.netvolcsiriusbd.comvolcsirius.comvolcspaceeduc.comvolctracer.com
volctrack.comvolctraffic.comvolctranscdn.com
volcvideo.comvolcvideos.comvolcvms.comvolcvod.comvolcwaf001.comvolcwaf.comwritingo-editor.comwritingo.net
ytxptd.cn
ytxptz.cnzebracdn.com
zjytxd.cn
zjytxp.cnzvip.cnbcy.net
+bcyimg.com
+muyewx.comactivity-zhendingtech.comchangdunovel.comfanqienovel.comfanqieopen.comfanqieopenpic.comfanqieopenstatic.comfanqieopenvod.com
fanqiesdk.comfanqiesdkpic.comfanqiesdkstatic.comfanqiesdkvod.comfqnovel.com
fqnovelim.comfqnovel-op.com
fqnovelop.comfqnovelpic.comfqnovelstatic.comfqnovelvod.comihaohaoxuexi.comlf-rc1.yhgfb-cn-static.com
+okr.com.cngogokid.com.cnqishuimusic.com.cn
qishui.com.cnlarksuite.com.ttdns1.comlarksuite.com.ttdns2.combyteoversea.com
+!cn
ibytedtos.com
+!cnibyteimg.com
+!cn
+doubao.com
+cncoze.cn
+cncoze.com
+!cnbyteoversea.com
+!cn
+muscdn.com
+!cn
+musical.ly
+!cntik-tokapi.com
+!cn
+tiktok.com
+!cntiktokcdn-us.com
+!cn
tiktokcdn.com
+!cntiktokd.net
+!cntiktokd.org
+!cntiktokv.com
+!cn
+tiktokv.us
+!cn
+tiktokw.us
+!cn
ttwstatic.com
+!cn,p16-tiktokcdn-com.akamaized.net
+!cnbds.snssdk.com
+adsctobsnssdk.com
+ads
dig.bdurl.net
+adsextlog.snssdk.com
+adsi.snssdk.com
+adsmcs.snssdk.com
+ads'pangolin-dsp-toutiao-b.com
+ads%pangolin-dsp-toutiao.com
+ads'pangolin-sdk-toutiao-b.com
+ads%pangolin-sdk-toutiao.com
+ads&pangolin-sdk-toutiao1.com
+ads pangolin.snssdk.com
+ads&panplayable-toutiao-b.com
+ads$panplayable-toutiao.com
+ads%pglstatp-sdk-toutiao.com
+ads(pglstatp-snssdk-toutiao.com
+ads#pglstatp-toutiao-b.com
+ads!pglstatp-toutiao.com
+ads%sf3-ttcdn-tos.pstatp.com
+ads(ads3-normal-hl.zijieapi.com
+ads(ads5-normal-hl.zijieapi.com
+ads'log3-applog-hl.fqnovel.com
+ads'log5-applog-hl.fqnovel.com
+ads#p3-ad-sign.byteimg.com
+ads#p6-ad-sign.byteimg.com
+ads#p9-ad-sign.byteimg.com
+ads)rtlog3-applog-hl.fqnovel.com
+ads)rtlog5-applog-hl.fqnovel.com
+ads
+
+
HARPERCOLLINSharpercollins.comlibrarylovefest.com
+collins.in
+hcpdts.com
epicreads.comharperacademic.comharperapps.combookclubgirl.comshelfstuff.com#harpercollinsspeakersbureau.comharpercollins.caharpercollinschristian.comharpercollinsadvantage.com%!harpercollinschildrensbooks.co.ukharpercollins.com.au
collins.co.ukegmontbooks.co.ukharpercollins.co.uknatgeokidsbooks.co.ukharpercollins.co.in
+
+ STREPSILSstrepsils.rustrepsils.esdobendan.destrepsilsarabia.com
+repsils.nostrepsils.atstrepsils.chstrepsils.hrstrepsils.frcepacol.com
+cepacol.castrepsils.rostrepsils.ptstrepsils.pl
strepsils.netstrepsils.iestrepsils.hustrepsils.sistrepsils.fistrepsils.usstrepsils.co.krstrepsils.com.twstrepsils.com.phstrepsils.com.hkstrepsils.com.austrepsils.com.costrepsils.com.brstrepsils.com.arstrepsils.co.zastrepsils.co.nzgraneodin.com.mxstrepsils.cn
+cnstrepsils.com.cn
+cn
+{
+OREILLYoreil.lyoreilly.comoreilly.revieworeillystatic.com
+orl.lyoreilly.com.cn
+cn
+.
+SCALAscala-lang.org
scala-sbt.org
+>
+SHIREYISHUNJIANshireyishunjian.comyingpianqu.com
+"
+TEDted.com
+tedcdn.com
+C
+ALIBABAalibaba
+alipay
+taobao tmalletao.comtaobizhong.com
95095.com9game.cn
+aliapp.orgalibaba-inc.comalibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.comalifanyi.com
+aliimg.com
+alikmd.comalimama.comalimebot.com
+alimei.comalios.cn
alipay.cn
+alipay.com
alipaydns.comalipayobjects.comaliplus.comaliresearch.comalisoft.com
alisports.com
alitianji.comaliunicorn.com
+aliway.comaliwork.com
alixiaomi.comalizhaopin.comalyms.cn
+asczwa.comasczxcefsv.com
+asmlink.cnatatech.org
+b2byao.com
bazai.com
bcvbw.com
cheng.xin
cloudeagle.cndamai.cndayu.com
+dfkhgj.comdoctoryou.aidoctoryou.cndongting.com
+dratio.comemas-poc.com
+gongyi.xinialicdn.comiconfont.cn
+ics.design
+jhgtgb.com
+kanbox.com
+lazada.comliangxinyao.comm-now.cn
+maitix.com
mdeer.commei.commiaostreet.com
mshare.ccnic.xinphilanthropy.xinphpwind.comphpwind.netqingtingtrip.com
rexpos.cnshenjing.com
shuqi.comlwurl.toshuqireader.com
sparenode.com
supet.com
ttpod.com
wandoujia.comxin.xinxinlingshou.cnyowhale.com
yunos-inc.com
yunos.comyushanfang.com
+zuodao.comaliexpress.comalipayplus.comalicloudccp.com
+alipan.comaliyundrive.comaliyundrive.netcainiao.comlaiwang.comdingtalkapps.comdingtalk.netcainiao-inc.com
freshhema.comhemamax.com
+hemaos.comhemashare.cnshyhhema.comantfortune.com
+fund123.cn
+antfin.comantgroup.comantgroup-inc.cn sm.cn1688.com25pp.com
juhuasuan.comgoofish.com
56che.com
doservice.com
+taobao.com
+taobao.org
taobaocdn.com
+mashort.cntaopiaopiao.com tb.cntbcache.comtburl.in
tmall.comtmalltv.comtmjl.aiquark.cnalitrip.com
feizhu.cn
+feizhu.com
+fliggy.com
+iuynfg.com
xiami.comxiami.fm
xiami.net
+koubei.comzhisheng.com
npmmirror.comlingshoujia.commobmore.com
umeng.comumengcloud.com
umsns.comumtrack.com
+uyunad.comwhalecloud.comalibabacloud.comalicloud.compailitao.com
+ele.me
+ele.toeleme.cneleme.ioelemecdn.cnelemecdn.com
elenet.meteambition.comteambition.netteambitionapis.com uc.cn
uc123.com
ucweb.comuczzd.cna-map.cna-map.co
+a-map.link
a-map.vipacloudrender.comamap.comamapauto.comanav.comautonavi.com
gaode.comalibabadns.com
+alicdn.comalicloudapi.comalidayu.com
+alidns.com
alikunlun.comaliyun-inc.comaliyun-iot-share.com
+aliyun.com
aliyuncdn.comcdngslb.comhichina.comica-alliance.orgkunlunaq.comkunlunar.comkunlunca.com
kunluncan.comkunlunea.com
kunlungem.comkunlungr.com
kunlunhuf.comkunlunle.comkunlunli.comkunlunno.comkunlunpi.comkunlunra.comkunlunsa.comkunlunsc.comkunlunsl.comkunlunso.comkunlunta.comkunlunvi.comkunlunwe.com
mxhichina.commyalicdn.comdingtalk.comdingtalk.cndingding.xinddurl.tooss-cn-qingdao.aliyuncs.com!oss-cn-guangzhou.aliyuncs.comoss-cn-nanjing.aliyuncs.com oss-cn-hangzhou.aliyuncs.comoss-cn-heyuan.aliyuncs.com oss-cn-shenzhen.aliyuncs.com#oss-cn-zhangjiakou.aliyuncs.com!oss-cn-huhehaote.aliyuncs.com oss-cn-shanghai.aliyuncs.com"oss-cn-wulanchabu.aliyuncs.comoss-cn-chengdu.aliyuncs.comoss-cn-beijing.aliyuncs.comcainiao.com.cnsaee.org.cn
alipay.com.cnalihealth.com.cnalihealth.hk
+!cn
aliexpress.ru
+!cn alipay.hk
+!cnalipaymo.com
+!cntmall.ru
+!cn fliggy.hk
+!cnalog.umeng.com
+ads alog.umengcloud.com
+ads
+w.cnzz.com
+adsz.gds.cnzz.com
+adsalibabacloud.co.in
+!cn alibabacloud.com.au
+!cn alibabacloud.com.hk
+!cn alibabacloud.com.my
+!cn alibabacloud.com.sg
+!cn alibabacloud.com.tw
+!cna.alimama.cn
+adsacjs.aliyun.com
+ads!adash-c.m.taobao.com
+ads"adash-c.ut.taobao.com
+ads0#adash-emas.cn-hangzhou.aliyuncs.com
+adsadash.m.taobao.com
+ads#adash.man.aliyuncs.com
+ads!adashbc.m.taobao.com
+ads"adashbc.ut.taobao.com
+ads adashx.m.taobao.com
+adsadashx.ut.amap.com
+adsadashx.ut.ele.me
+ads adashx.ut.youku.com
+ads$adashx4ae.ut.taobao.com
+ads#adashx4yt.m.taobao.com
+ads#adashxgc.ut.taobao.com
+adsadsh.m.taobao.com
+adsafp.adchina.com
+adsafp.alicdn.com
+ads agoodm.m.taobao.com
+ads#agoodm.wapa.taobao.com
+ads
alipaylog.com
+adsamdc.alipay.com
+ads api.wapa.taobao.com
+ads#api.waptest.taobao.com
+adsapoll.m.taobao.com
+adsatanx.alicdn.com
+adsatanx2.alicdn.com
+ads!c-adash.m.taobao.com
+adscdn0.mobmore.com
+adsclick.aliyun.com
+ads&click.mz.simba.taobao.com
+adscm.ipinyou.com
+ads!dsp.simba.taobao.com
+adsex.mobmore.com
+ads
ex.puata.info
+ads!fav.simba.taobao.com
+ads$feedback.whalecloud.com
+adsff.win.taobao.com
+ads fm.p0y.cn
+adsg.click.taobao.com
+ads
+g.tbcdn.cn
+adsgma.alicdn.com
+adsgtms01.alicdn.com
+adsgtms02.alicdn.com
+adsgtms03.alicdn.com
+adsgtms04.alicdn.com
+adsh-adashx.ut.ele.me
+ads#h-adashx.ut.taobao.com
+ads"h-adashx.ut.youku.com
+ads&h-adashx4yt.ut.taobao.com
+adshydra.alibaba.com
+ads'hz.pre.tbusergw.taobao.net
+ads#hz.tbusergw.taobao.net
+ads
i.ipinyou.com
+adsinit.phpwind.com
+ads!intl.wapa.taobao.com
+ads$intl.waptest.taobao.com
+ads"jxlog.istreamsche.com
+adslog.umtrack.com
+ads!m-adash.m.taobao.com
+adsm.intl.taobao.com
+adsm.simba.taobao.com
+adsmatch.p4p.1688.com
+ads%material.istreamsche.com
+ads mlt01.com
+ads&nbsdk-baichuan.alicdn.com
+ads&nbsdk-baichuan.taobao.com
+ads"osfota.cdn.aliyun.com
+ads osupdate.aliyun.com
+ads&osupdateservice.yunos.com
+ads%pindao.huoban.taobao.com
+adspush.wandoujia.com
+adsre.m.taobao.com
+ads
re.taobao.com
+ads&redirect.simba.taobao.com
+adsrj.m.taobao.co
+adsrj.m.taobao.com
+adssdkinit.taobao.com
+adssimaba.taobao.com
+adssimba.m.taobao.com
+ads!srd.simba.taobao.com
+adsstats.ipinyou.com
+ads strip.taobaocdn.com
+ads$tanxlog.istreamsche.com
+adstejia.taobao.com
+adstemai.taobao.com
+ads!tns.simba.taobao.com
+ads tongji.linezing.com
+ads tvupgrade.yunos.com
+adstyh.taobao.com
+adsuserimg.qunar.com
+ads"v6-adashx.ut.amap.com
+ads%v6-adashx.ut.cainiao.com
+ads v6-adashx.ut.ele.me
+ads$v6-adashx.ut.taobao.com
+adsw.m.taobao.com
+adsyiliao.hupan.com
+ads,oss-ap-northeast-1.aliyuncs.com
+!cn,oss-ap-northeast-2.aliyuncs.com
+!cn(oss-ap-south-1.aliyuncs.com
+!cn,oss-ap-southeast-1.aliyuncs.com
+!cn,oss-ap-southeast-2.aliyuncs.com
+!cn,oss-ap-southeast-3.aliyuncs.com
+!cn,oss-ap-southeast-5.aliyuncs.com
+!cn,oss-ap-southeast-6.aliyuncs.com
+!cn,oss-ap-southeast-7.aliyuncs.com
+!cn)oss-cn-hongkong.aliyuncs.com
+!cn*oss-eu-central-1.aliyuncs.com
+!cn'oss-eu-west-1.aliyuncs.com
+!cn'oss-me-east-1.aliyuncs.com
+!cn'oss-us-east-1.aliyuncs.com
+!cn'oss-us-west-1.aliyuncs.com
+!cn
+7
+APPLYSQUAREapplysquare.comapplysquare.net
+
+BAHAMUTgamer2-cds.cdn.hinet.netgamer-cds.cdn.hinet.netbahamut.akamaized.netbahamut.com.twgamer.com.tw
+
+AMAPa-map.cna-map.co
+a-map.link
a-map.vipacloudrender.comamap.comamapauto.comanav.comautonavi.com
gaode.com
+1
+GIFFGAFFgiffgaff.comgiffgaff.design
+
+RAKUTENr10s.comr10s.jprakuten-static.com
+rakuten.carakuten.com
+rakuten.tw
rclon.com
+rebates.jp
rakuten.co.jprakuten.com.tw
rakuten.ne.jp
+
+CATEGORY-MEDIA-CNsohu.comssimg.cn
cnfol.comcnfolimg.comzqrb.cncnstock.com21jingji.com
yicai.com
ssajax.cn
+sohucs.com
dgtle.com
stockstar.comecns.cn
chinanews.com
+xueqiu.com
jrjimg.cn
+cls.cncailianpress.comwallstreetcn.com
+itc.cnwallstcn.comsnowballsecurities.comthsi.cn
+ths123.com
+imedao.comdanjuanfunds.com
+yundzh.com
+caixin.comnews.cn
xinhuanet.com
people.cnaiganggu.com
expreview.com
anzhuo.cnidcquan.com
+admin5.comhupu.comhupucdn.com
shihuo.cnwfdata.clubjiemian.comfengimg.comcoolbuy.com
ifanr.comifanr.inifanrusercontent.com
+ifanrx.com
+minapp.com
+lancdn.comlandiannews.comlandian.viplandian.xyzourl.co
wsoso.com
+fengcx.com
ifeng.comifengimg.comstcn.comfengedu.comifengweekly.com6655.comcooldock.com
+ithome.comlapin365.comruanmei.com
+saayaa.com
win7china.com
win8china.comphoenixcenter.cn
hexun.com
jianyuweb.comsolidot.org%!xn--fiq53l90et9fpncc7joo6apn8a.cnolympicchannelchina.cncctvpic.comchinaepg.cn
chinalive.comzggbdszt.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8scntv.cn%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn
+cctvlib.cnlivechina.cncctv.com%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn
+cctvpro.cn
livechina.com
cntvwb.cngjgbdszt.cntvcc.cncctv.cn
ipanda.cn
+ipanda.com-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s
+ipanda.netcctvlibrary.cnfeng.comtmtsmartrun.comtmtsmartlife.com
+tivitv.com
checkzeit.com
+72whys.comchaindd.comtmtpost.com
sspai.com36krcnd.com36krcdn.com36kr.com36dianping.comgeekpark.netynet.cnynet.comchinanews.com.cngjgbdszt.com.cnynet.com.cnzggbdszt.com.cncitv.net.cncnms.net.cncntv.com.cncctvlib.com.cncctvlibrary.com.cncctvpro.com.cntvcc.com.cncaijing.com.cnzggbdszt.net.cnzygbdszt.net.cn
+jrj.com.cnjiemian.com.cnhoopchina.com.cn
tigeek.net.cn
gw.com.cn
+dzh.com.cn
10jqka.com.cngjgbdszt.net.cn
cs.com.cn
+nbd.com.cn
ipanda.com.cn
+cns.com.cn
people.com.cn
+
+YAHOOcdn.js7k.com yahoo
+flickryahoo.psyahoo.snyahoo.atyahoo.azyahoo.bayahoo.beyahoo.bgyahoo.biyahoo.bsyahoo.btyahoo.byyahoo.ca
yahoo.catyahoo.cdyahoo.cgyahoo.chyahoo.clyahoo.cmstaticflickr.com
+flickr.net
+flickr.comflic.kryahoo.aeyusercontent.com
ymail.comyimg.jpyimg.comyho.comyahoosportsbook.comyahoosandbox.comyahoomusic.comyahoohealth.comyahoofinance.comyahoodns.net
yahooapis.comtechcrunch.com
yahoo.com
+myguide.hkmaktoob.comyahoo.wsyahoo.vgyahoo.tnyahoo.asyahoo.tmyahoo.tlyahoo.deyahoo.tkyahoo.tgyahoo.styahoo.sryahoo.soyahoo.isyahoo.smyahoo.skyahoo.siyahoo.dkyahoo.sgyahoo.djyahoo.seyahoo.rwyahoo.ruyahoo.royahoo.ptyahoo.amyahoo.pnyahoo.plyahoo.phyahoo.nuyahoo.noyahoo.nl
yahoo.netyahoo.mxyahoo.mwyahoo.mkyahoo.meyahoo.mdyahoo.lvyahoo.luyahoo.ltyahoo.layahoo.joyahoo.czyahoo.jeyahoo.ityahoo.shyahoo.dmyahoo.eeyahoo.esyahoo.fiyahoo.fmyahoo.fryahoo.geyahoo.ggyahoo.glyahoo.gmyahoo.gpyahoo.gryahoo.gyyahoo.hkyahoo.hryahoo.huyahoo.ieyahoo.imyahoo.inyahoo.com.bdyahoo.com.lyyahoo.com.bzyahoo.com.vnyahoo.com.vcyahoo.com.uyyahoo.com.uayahoo.com.twyahoo.com.tryahoo.com.tjyahoo.com.svyahoo.com.sgyahoo.com.sbyahoo.com.sayahoo.com.pyyahoo.com.pryahoo.com.pkyahoo.com.phyahoo.com.peyahoo.com.payahoo.com.omyahoo.com.nfyahoo.com.nayahoo.com.myyahoo.com.mxyahoo.com.mtyahoo.com.lbyahoo.com.kwyahoo.com.hkyahoo.com.gtyahoo.com.giyahoo.com.fjyahoo.com.esyahoo.com.egyahoo.com.ecyahoo.com.doyahoo.com.coyahoo.com.bryahoo.com.boyahoo.com.auyahoo.com.aryahoo.com.aiyahoo.com.agyahoo.com.afyahoo.co.zayahoo-news.com.hkyahoo.co.viyahoo.co.veyahoo.co.uzyahoo.co.ukyahoo.co.tzyahoo.co.thyahoo.co.nzyahoo.co.mzyahoo.co.kryahoo.co.jpyahoo.co.inyahoo.co.ilyahoo.co.idyahoo.co.cryahoo.co.ckyahoo.co.bwyahoo.co.aoyahoo.cn
+cnyahoo.com.cn
+cn
ads.yahoo.com
+adsgemini.yahoo.com
+ads
ysm.yahoo.com
+ads
+
+APTOIDEaptoide.com
+
+BOC
bocgi.combocifunds.cn
+boc.cnbocfullertonbank.combocamchina.combocaviation.com
boccfc.cc
boccfc.cnbankofchina.combocgins.com
bocichina.combocichina.cn
bocim.combank-of-china.com
bocifunds.com
bocigroup.combocifunds.com.cnbocichina.com.cnbocservices.com.cn bochk.com
+!cn
+7
+BUYMEACOFFEE
buymeacoff.eebuymeacoffee.com
+0
+HKGOLDENhkgolden.comhkgolden.media
+g
+SPRINGER
+apress.comspringer.comspringerlink.comspringernature.comwkap.nl
+Z
+8BTC8btc.combystack.com
chainnode.commatpool.commatpool.net
+k
+DEEPIN
deepin.cn
+deepin.com
deepin.io
+deepin.orgchinauos.com
uniontech.com
+
+FIGMA
figma.com
+c
+
+PROTONMAIL pm.me
proton.me
protonmail.chprotonmail.comprotonstatus.com
+
+TESTtest.example.com
+
+UBISOFT,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.comubistatic3-a.akamaihd.netubi.comubisoft.comubisoftconnect.com
uplay.com)uplaypc-s-ubisoft.cdn.ubi.com
+cn
+(
+APPLE-CNa1.mzstatic.coma2.mzstatic.coma3.mzstatic.coma4.mzstatic.coma5.mzstatic.com$ adcdownload.apple.com.akadns.netadcdownload.apple.com"amp-api-updates.apps.apple.comamp-api.media.apple.comapi-p-ap-c.smoot.apple.comapi-p-ap-d.smoot.apple.comapi-p-ap-e.smoot.apple.com&"app-site-association.cdn-apple.comappldnld.apple.comappldnld.g.aaplimg.comappleid.cdn-apple.comapps.apple.comapps.mzstatic.com'#bag-cdn.itunes-apple.com.akadns.netcdn-cn1.apple-mapkit.comcdn-cn2.apple-mapkit.comcdn-cn3.apple-mapkit.comcdn-cn4.apple-mapkit.comcdn.apple-mapkit.comcdn1.apple-mapkit.comcdn2.apple-mapkit.comcdn3.apple-mapkit.comcdn4.apple-mapkit.comcds-cdn.v.aaplimg.comcds.apple.com.akadns.net
cds.apple.comcdsassets.apple.com'#cl1-cdn.origin-apple.com.akadns.net
cl1.apple.comcl2-cn.apple.com
cl2.apple.com'#cl3-cdn.origin-apple.com.akadns.net
cl3.apple.com'#cl4-cdn.origin-apple.com.akadns.netcl4-cn.apple.com
cl4.apple.com'#cl5-cdn.origin-apple.com.akadns.net
cl5.apple.com#clientflow.apple.com.akadns.netclientflow.apple.com$ cn-smp-paymentservices.apple.com&"configuration.apple.com.akadns.netconfiguration.apple.com
crl.apple.comcstat.apple.comcstat.cdn-apple.com&"dd-cdn.origin-apple.com.akadns.netdejavu.apple.comdevstreaming-cdn.apple.com download.developer.apple.comexperiments.apple.comgs-loc-cn.apple.comgs-loc.apple.comgsp10-ssl-cn.ls.apple.comgsp12-cn.ls.apple.comgsp13-cn.ls.apple.com;7gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net$ gsp4-cn.ls.apple.com.edgekey.netgsp4-cn.ls.apple.comgsp5-cn.ls.apple.comgsp85-cn-ssl.ls.apple.com+'gspe19-2-cn-ssl.ls-apple.com.akadns.net gspe19-2-cn-ssl.ls.apple.comgspe19-cn-ssl.ls.apple.com%!gspe19-cn.ls-apple.com.akadns.netgspe19-cn.ls.apple.comgspe21-ssl.ls.apple.comgspe21.ls.apple.comgspe35-ssl.ls.apple.comgspe79-cn-ssl.ls.apple.com#guzzoni-apple-com.v.aaplimg.comguzzoni.apple.comguzzoni.smoot.apple.comiadsdk.apple.com$ icloud-cdn.icloud.com.akadns.neticloud.cdn-apple.comimages.apple.com.akadns.net73images.apple.com.edgekey.net.globalredir.akadns.netimages.apple.cominit-kt.apple.com+'init-p01md-lb.push-apple.com.akadns.netinit-p01md.apple.com+'init-p01st-lb.push-apple.com.akadns.netinit-p01st.push.apple.com+'init-s01st-lb.push-apple.com.akadns.netinit-s01st.push.apple.cominit.ess.apple.com iosapps.itunes.g.aaplimg.comipcdn.apple.comiphone-ld.apple.com)%iphone-ld.origin-apple.com.akadns.net95is-ssl.mzstatic.com-cn-lb.itunes-apple.com.akadns.netis1-ssl.mzstatic.comis1.mzstatic.comis2-ssl.mzstatic.comis2.mzstatic.comis3-ssl.mzstatic.comis3.mzstatic.comis4-ssl.mzstatic.comis4.mzstatic.comis5-ssl.mzstatic.comis5.mzstatic.comitunes-apple.com.akadns.netitunes.apple.comitunesconnect.apple.com!mesu-cdn.apple.com.akadns.net#mesu-china.apple.com.akadns.netmesu.apple.comml.cdn-apple.commusic.apple.com ocsp-lb.apple.com.akadns.netocsp.apple.com!ocsp2-lb.apple.com.akadns.netocsp2.apple.comoscdn.apple.com%!oscdn.origin-apple.com.akadns.net osxapps.itunes.g.aaplimg.compancake.apple.com$ pancake.cdn-apple.com.akadns.netpba0.apple.comprobe.siri.apple.com)%prod-support.apple-support.akadns.netpublicassets.cdn-apple.comreserve-prime.apple.coms.mzstatic.comseed-sequoia.siri.apple.comseed-swallow.siri.apple.comseed.siri.apple.comsequoia.apple.com sh-pod2-smp-device.apple.com!shazam-insights.cdn-apple.com smp-device-content.apple.comstatic.gc.apple.com,(stocks-sparkline-lb.apple.com.akadns.netstocks-sparkline.apple.com62store.apple.com.edgekey.net.globalredir.akadns.netstore.apple.com.edgekey.netstore.apple.com*&store.storeimages.apple.com.akadns.net#store.storeimages.cdn-apple.com*&support-china.apple-support.akadns.netsupport.apple.com#swallow-apple-com.v.aaplimg.comswallow.apple.com&"swcatalog-cdn.apple.com.akadns.netswcatalog.apple.comswcdn.apple.comswcdn.g.aaplimg.comswdist.apple.com.akadns.netswdist.apple.com#swscan-cdn.apple.com.akadns.netswscan.apple.comsylvan.apple.com tj-pod1-smp-device.apple.com)%updates-http.cdn-apple.com.akadns.netupdates-http.cdn-apple.comupdates.cdn-apple.comvalid.apple.com%!valid.origin-apple.com.akadns.net%!weather-data.apple.com.akadns.netweather-data.apple.comweather-map.apple.comweather-map2.apple.comweatherkit.apple.com40www.apple.com.edgekey.net.globalredir.akadns.netwww.apple.com.edgekey.net
www.apple.comxp.apple.com
+
+CALGONCARBON
calgon.fr
calgon.ru
calgon.ie
calgon.it
+calgon.com
calgon.at
calgon.de
calgon.escalgonit.com
calgon.chcalgoncarbon.com
calgon.nl
calgon.pt
calgon.be
calgon.tvcalgoncarbon-china.comcalgon.co.uk
calgon.com.tr calgon.cn
+cn
+,
+DUITANGdtstatic.comduitang.com
+
+ LIMELIGHTdelvenetworks.com
limelight.com
lldns.netllnw-trials.comllnw.comllnw.net
llnwd.net
llnwi.net
+a
+NOWnow.comnowe.comnowe.hk
+now-tv.comnow-ashare.com
+now.com.hk
+<
+QUIPquip-cdn.comquip.comquipelements.com
+s
+SINOPECsinopec-usa.comsinopec.comsinopecgroup.comsinopecsales.comsinopecnews.com.cn
+0
+
+SOUNDCLOUDsoundcloud.com
+sndcdn.com
+
+CCBccbfutures.comccbfund.comccb.com
ccbxt.com
+ccbcos.com
+ccbfund.cn
+ccb.cn
ccbfutures.cnccbleasing.comccb-life.com.cnccbfund.com.cnccblife-test.com.cnccbtrust.com.cn
+ccb.com.cnccbintl.com.hk
+!cnccbseoul.com
+!cn
+%
+FONTS
fonts.com
fonts.net
+%
+KUGOU
kgimg.com
kugou.com
+/
+BAMTECHbamgrid.comdmed.technology
+6
+ NORDSTROM
nordstrom.comnordstrommedia.com
+
+X315x315.com
+'
+928PLUS928.plus
+zind.cloud
+
+DOC88
doc88.com
+)
+KEEPgotokeep.comkeepcdn.com
+
+LAVTEAMlavteam.org
+'
+POLYV
polyv.netvideocc.net
+*
+DUOWAN
+duowan.comdwstatic.com
+a
+DYNA
+dynacw.comdynacw.co.jp
dynacw.com.cn
dynacw.com.hk
dynacw.com.tw
+
+TENCENT-DEV
openmidas.com
qq.designqqgamedesign.comtencent-cloud.cntencent-cloud.comtencent.designtencentcloud.comtjstats.comwegamedeveloper.comweixinbridge.comweui.io
+cn
+
+
+BLOGSPOTblogspot.mkblogspot.mxblogspot.aeblogspot.alblogspot.amblogspot.bablogspot.beblogspot.bgblogspot.bjblogspot.cablogspot.cfblogspot.chblogspot.clblogspot.vnblogspot.ugblogspot.deblogspot.twblogspot.dkblogspot.snblogspot.skblogspot.comblogspot.siblogspot.sgblogspot.seblogspot.rublogspot.rsblogspot.roblogspot.reblogspot.qablogspot.ptblogspot.peblogspot.noblogspot.nlblogspot.myblogspot.cvblogspot.czblogblog.comblogspot.tdblogspot.krblogspot.frblogspot.grblogspot.hkblogspot.hrblogspot.hublogspot.ieblogspot.inblogspot.isblogspot.itblogspot.jpblogspot.fiblogspot.liblogspot.ltblogspot.lublogspot.mdblogger.comblogspot.com.ngblogspot.co.keblogspot.com.brblogspot.com.byblogspot.com.mtblogspot.com.esblogspot.com.egblogspot.co.ilblogspot.co.atblogspot.com.coblogspot.com.eeblogspot.com.trblogspot.com.aublogspot.com.arblogspot.co.zablogspot.co.ukblogspot.co.nzblogspot.com.uyblogspot.co.idblogspot.com.cy
+F
+
+DEVIANTARTdeviantart.comdeviantart.netda-files.com
+
+DIGICERTdigicert-cn.comdigicert-validation.comdigicert.comdigitalcertvalidation.comfreessl.comgeotrust.comrapidssl.com
+thawte.com
thawte.de
thawte.frquovadisglobal.compublic-trust.com dcocsp.cn
+cndigicert.cn
+cn
+
+LOWIRO
+lowiro.com
+E
+CATEGORY-DOCUMENTS-CN
doc88.com
docin.com
+douding.cn
+&
+CHINASOchinaso.com
+pg0.cn
+3
+
+CONTENTFULcontentful.com
ctfassets.net
+
+ERJIerji.net
+O
+HENTAIVNhentaivn.dehentaivn.lahentaivn.nethtvncdn.net
+
+SUMKOOgongqingyun.cnjzfz.net
sumkoo.cn
+sumkoo.com
+sumkoo.net
veeqi.netwenmingban.comzhiyuanhe.cnzhiyuanyun.com.cnzyhe.com.cn
+c
+YOUKU
+kumiao.com
youku.com
ykimg.com
+mmstat.comsoku.com
+cibntv.net
+,
+ACPLAY
+acplay.netdandanplay.com
+
+CATEGORY-CRYPTOCURRENCYderibit.cdn.prismic.iobybit-exchange.github.iobybit.ada.supportonekey.zendesk.com
binancezh.kimbittrex.com
+bitbank.ccbitcoin.orgbitfinex.com
+bitget.com
+bitmex.combitquick.cobitstamp.netbinancezh.link
blockfrost.io
+cex.ioclearpool.finance
coinalyze.netcoinbase.comcoindesk.com
coingecko.com
coinglass.comcoinmap.orgcoinmarketcap.com
+crypto.comcryptocompare.comcurve.fi
+cyberx.com
+debank.comdogecoin.com
dydx.exchangefundingrates.xyz
+gemini.comhashflow.com
infura.io
invity.io
maple.financemetalpha.financemexc.commexcsensors.commytokenapi.com
+kraken.com1inch.ioosl.com
+paxful.com
+ripple.comsatoshilabs.comtheblock.co
trezor.io
truefi.io
unisat.iouniswap.orgwalletconnect.comwintermute.com
zapper.fi
+binance.ccbinance.charity
binance.cloud
+binance.cobinance.combinance.info
+binance.mebinance.netbinance.org
+binance.usbinance.visionbinancecnt.combinancezh.be
binancezh.bizbinancezh.ccbinancezh.co
binancezh.combinancezh.info
binancezh.ink
+opensea.ioaave.com
binancezh.netbinancezh.mobibinancezh.live
binancezh.probinancezh.sh
binancezh.topbinanceapi.com
bnbstatic.comsaasexch.comsaasexch.ioappsflayer.comderibit.comlocalbitcoins.comlocalbitcoinschain.comokex.comokx.comokx-dns.comokx-dns1.comokx-dns2.combitflyer.combitflyer.jpbisq.iobisq.networkbitsquare.iogate.iogatedata.orggateimg.comgateio.livegateio.services
+zb.app
+zb.com zb.iozb.live
+kucoin.comkucoin.plusasproex.comasproexapi.comcoinonecore.comcoinonecorp.comhtx.com
+hbabit.com
+hbfile.net
huobi.comhuobi.me
huobi.prohuobi.sc
huobiasia.viphuobigroup.comhuobitoken.comwisecoin.com
+wiseid.comwisekey.com
bybit.com
bycsi.comwynd.network
+bytick.com
+byapis.com
bycbe.combymj.io
+devcon.orgethereum.foundationethereum.orgetherscan.ioonekey-asset.com
onekey.soonekeycn.comwyndlabs.aibtcbox.co.jp
coinone.co.krwisekey.com.hk
+oklink.com
+cn
+u
+CREATIVECOMMONSccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net
+<
+OPENWEATHERopenweathermap.orgopenweather.co.uk
+;
+PINGSX$ public-us-pingsx.api.clonoth.comping.sx
+
+
+SKYPERFECTskyperfectjsat.spacesptvbroadcast.comspcc-sp.com
hominis.media
jsati.comjsatmobile.comskyperfectv.co.jp
++
+XIMALAYAximalaya.com
xmcdn.com
+'
+ZEPLIN
+zeplin.dev
zeplin.io
+V
+MATTERSmatters.newsmatters.onematters.townmattersprotocol.io
+
+MOVEFREEkeepmovingwithmovefree.com
move-free.net
movefrees.commovefreeoffers.commovefreerewards.comschiffvitamins.commovefree.cn
+cn
+H
+ NEXITALLY
nexitally.comnexitallysafe.com
nexitcore.com
+
+
+GLOBALSIGN
globalsign.esglobalsign-media.com
globalsign.chglobalsign.cloud
globalsign.nlglobalsign.net
globalsign.be
globalsign.fr
globalsign.euglobalsign.com.brglobalsign.com.sgglobalsign.com.hkglobalsign.com.auglobalsign.co.ukalphassl.com
+cneasy-signing.com
+cn
globalsign.cn
+cnglobalsign.com
+cnglobalsigncdn.com
+cn4(cdn.globalsigncdn.com.cdn.cloudflare.net
+cn
+|
+PATREON*&live-patreon-marketing.pantheonsite.iopatreon.compatreoncommunity.compatreonusercontent.com
+.
+POCKETCASTS
+pca.stpocketcasts.com
+
+PRIVATEinstant.arubanetworks.comsetmeup.arubanetworks.comasusrouter.comrouter.asus.comwww.asusrouter.comoasisauth.h3c.comrouterlogin.comwww.routerlogin.com
+tplogin.cn
+miwifi.comwww.miwifi.comlanlocaldomainexampleinvalid
localhosttest localplex.direct
+phicomm.me
+ts.net
home.arpazte.hometplinkwifi.net
tendawifi.com
+hiwifi.comleike.cc
+router.ctc
my.routerpeiluyou.com0.in-addr.arpa127.in-addr.arpatest.steampowered.com10.in-addr.arpa81.100.in-addr.arpa93.100.in-addr.arpa30.172.in-addr.arpa31.172.in-addr.arpa16.172.in-addr.arpa17.172.in-addr.arpa28.172.in-addr.arpa168.192.in-addr.arpa254.169.in-addr.arpa18.172.in-addr.arpa19.172.in-addr.arpalocalhost.ptlogin2.qq.comlocalhost.sec.qq.com20.172.in-addr.arpa21.172.in-addr.arpa22.172.in-addr.arpa23.172.in-addr.arpad.f.ip6.arpa64.100.in-addr.arpa65.100.in-addr.arpa66.100.in-addr.arpa67.100.in-addr.arpa68.100.in-addr.arpa69.100.in-addr.arpa70.100.in-addr.arpa71.100.in-addr.arpa72.100.in-addr.arpa73.100.in-addr.arpa74.100.in-addr.arpa75.100.in-addr.arpa76.100.in-addr.arpa77.100.in-addr.arpa78.100.in-addr.arpa79.100.in-addr.arpa80.100.in-addr.arpa27.172.in-addr.arpa82.100.in-addr.arpa83.100.in-addr.arpa84.100.in-addr.arpa85.100.in-addr.arpa86.100.in-addr.arpa87.100.in-addr.arpa88.100.in-addr.arpa89.100.in-addr.arpa90.100.in-addr.arpa91.100.in-addr.arpa92.100.in-addr.arpa29.172.in-addr.arpa94.100.in-addr.arpa95.100.in-addr.arpa96.100.in-addr.arpa97.100.in-addr.arpa98.100.in-addr.arpa99.100.in-addr.arpa100.100.in-addr.arpa101.100.in-addr.arpa102.100.in-addr.arpa103.100.in-addr.arpa104.100.in-addr.arpa105.100.in-addr.arpa106.100.in-addr.arpa107.100.in-addr.arpa108.100.in-addr.arpa109.100.in-addr.arpa110.100.in-addr.arpa111.100.in-addr.arpa112.100.in-addr.arpa113.100.in-addr.arpa114.100.in-addr.arpa115.100.in-addr.arpa116.100.in-addr.arpa117.100.in-addr.arpa118.100.in-addr.arpa119.100.in-addr.arpa120.100.in-addr.arpa121.100.in-addr.arpa122.100.in-addr.arpa123.100.in-addr.arpa124.100.in-addr.arpa125.100.in-addr.arpa126.100.in-addr.arpa127.100.in-addr.arpa26.172.in-addr.arpa25.172.in-addr.arpa24.172.in-addr.arpab.e.f.ip6.arpaa.e.f.ip6.arpa9.e.f.ip6.arpa8.e.f.ip6.arpa113.0.203.in-addr.arpa100.51.198.in-addr.arpa2.0.192.in-addr.arpa 255.255.255.255.in-addr.arpa8.b.d.0.1.0.0.2.ip6.arpaLH1.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.ip6.arpaLH0.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.ip6.arpa%!^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$
+
+STAGE1ST
saraba1st.com
+7
+ BOOTSTRAPbootstrapcdn.comgetbootstrap.com
+O
+COSTCOcostco-static.com
+costco.comcostcobusinessdelivery.com
+6
+FTV4gtv.tv
+ftv.com.twftvnews.com.tw
+
+THETIMESthetimes.ietimesmembership.com
driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk
the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk
+C
+
SCIENCEDIRECTsciencedirect.comsciencedirectassets.com
+
+SETAPP
+setapp.com
+
+ STARBUCKSstarbucksathome.comstarbuckscard.phstarbucks-stars.comstarbucks.adstarbucks.atstarbucks.bestarbucks.bgstarbucks.castarbucks.chstarbuckssummergame.comstarbuckssummergame.castarbucksslovakia.skstarbucksrtd.comstarbucks.frstarbucksromania.ro
starbucks.com starbucksrewardsstarland.comstarbucksrewardsstarland.castarbucksreserve.comstarbuckspoq.comstarbucksforlife.comstarbucksforlife.ca starbuckscoffeegearstore.comstarbuckscoffeegear.comstarbuckscoffee.czstarbuckscardb2b.comsbuxcard.comstarbucksavie.castarbucks.vnstarbucks.ttstarbucks.hustarbucks.dkstarbucks.itstarbucks.sestarbucks.destarbucks.iestarbucks.instarbucks.esstarbucks.nlstarbucks.nostarbucks.phstarbucks.plstarbucks.ptstarbucks.rsstarbucks.rustarbucks.com.uystarbucks.com.sgstarbucks.co.ukstarbucks.com.cystarbucks.com.mxstarbucks.com.pestarbucks.com.mystarbucks.com.grstarbucks.com.kzstarbucks.co.idstarbucks.com.trstarbucks.com.hksbux.com.mystarbucks.com.costarbucks.com.bnstarbucks.com.arstarbucks.co.zastarbucks.co.thstarbucks.co.nzstarbucks.co.jpstarbucks.com.khstarbucks.com.cn
+cn
+
+HUNANTV-ADSclick.hunantv.com
+adsda.hunantv.com
+adsda.mgtv.com
+adslog.hunantv.com
+adslog.v2.hunantv.com
+adsres.hunantv.com
+ads
+
+MPV
+mpv.io
+
+PINGPEping.pe
+
+EGGHEAD
+egghead.io
+
+XINGKONGWUXIANMEDIAavstar01.meavstar02.meavstar03.meavstar04.comavstar04.meavstar05.meavstar06.meavstar07.comavstar07.meavstar09.comavstar09.meavstar1.comavstar2.comavstar3.comavstar4.comavstar5.comavstar6.comavstar8.comavstar9.com
+
+SVPsvp-team.com
+
+WSJcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.comwsj.comwsj.jobswsj.netwsjmediakit.comwsjplus.comwsjshop.comwsjwine.com
+c
+YUANBEIi2oo.cn
laoban100.com
+shengyi.aishengyizhuanjia.comyuanbei.biz
+e
+DJIdji.comdji.net
+djicdn.com
+djiops.comdjiservice.orgskypixel.com
+l
+LANDIAN
+lancdn.comlandiannews.comlandian.viplandian.xyzourl.co
wsoso.com
++
+
ONESIGNAL-ADS
onesignal.com
+ads
+J
+HUPUhupu.comhupucdn.com
shihuo.cnhoopchina.com.cn
+z
+MATRIXarewereadyyet.com
+element.io
+matrix.org
matrix.to
+modular.imriot.im
vector.im
+B
+XIAOHONGSHU
+xhscdn.com
+xhscdn.netxiaohongshu.com
+
+CATEGORY-COMMUNICATION#hammerandchisel.ssl.zendesk.comintercom.comintercom.iointercomassets.comintercomcdn.comlinemobile.comlineshoppingseller.comline-apps-beta.comline-apps-rc.com
line-apps.comline-beta.meline-cdn.netline.biz
+nhncorp.jp
+lin.ee
line-scdn.netlinecorp.comlinefriends.com
linetv.twlinegame.jp
gcld-line.comlinemyshop.comline.mearewereadyyet.com
+element.io
+matrix.org
matrix.to
+modular.imriot.im
vector.imfbmessenger.comm.me
messenger.com
+nbabot.net wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.netwhatsapp.ccwhatsapp.com
whatsapp.infowhatsapp.netwhatsapp.orgwhatsapp.tvwhatsappbrand.comfreenode.net
+dis.gd
+discord.codiscord.comdiscord.designdiscord.dev
+discord.ggdiscord.gift
discord.gifts
discord.mediadiscord.new
discord.store
discord.toolsdiscord-activities.comdiscordactivities.comdiscordapp.comdiscordapp.netdiscordmerch.comdiscordpartygames.comdiscordsays.comdiscordstatus.comairhorn.solutionsairhornbot.combigbeans.solutionswatchanimeattheoffice.com
discordapp.iodiscordcdn.com
+keybase.iokeybaseapi.com
+signal.art
+signal.orgsignalusers.orgwhispersystems.orgslack-core.comslack-edge.comslack-files.comslack-imgs.comslack-msgs.comslack-redir.net
slack.com
+slackb.comslackcertified.com
slackdemo.comslackhq.comcdn-telegram.orgcomments.appcontest.comfragment.com
graph.orgquiz.directoryt.metdesktop.com
+telega.one
+telegra.phtelegram-cdn.orgtelegram.dogtelegram.metelegram.orgtelegram.space
+telesco.pe
+tg.dev tx.meusercontent.dev
clubhouse.comclubhouseapi.comjoinclubhouse.comlinefriends.com.tw
line.naver.jpgraph.whatsapp.com
+adsgraph.whatsapp.net
+ads
+
+ HELLOFONT0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.comhellofont.cnhellowebfont.com
+,
+
+HOTJAR-ADSstatic.hotjar.com
+ads
+3
+
+CITIZENLAB
citizenlab.cacitizenlab.org
+)
+DRIBBBLEdrbl.indribbble.com
+
+UU-CHAT
uug22.com
uug23.com
uug25.com
uug26.com
uug27.com
uuk28.com
uun78.com
uun79.com
uun82.com
uun83.com
uun85.com
uun86.com
uun87.com
uun89.com
uun92.com
uun93.com
uun95.com
uun96.com
uun97.com
uun98.com
uun99.com
uux68.com
+
+VEETveet.tvveet.clveet.dkveet.chveet.seveetclub.itveetcentroamerica.comveet.ruveetarabia.comveet.usveet.atveet.comveet.caveet.beveetbangladesh.comveet.roveet.ptveet.noveet.nlveet.jpveet.huveet.frveet.fiveet.esveet.de
+veet.co.zaveet.com.trveet.com.sgveet.com.pkveet.com.phveet.com.myveet.com.mxveet.com.hkveet.com.coveet.com.brveet.com.bdveet.com.auveet.com.ar
+veet.co.uk
+veet.co.nz
+veet.co.kr
+veet.co.in
+veet.co.idveet.cn
+cnveet.com.cn
+cn
+E
+INFOWARSbanned.videoinfowars.cominfowarsmedia.com
+2
+KU6ku6.com
+ku6cdn.com
+ku6img.com
+
+SHOPEE
shopee.io
shopee.ph
shopee.es
+shopee.com
shopee.frshopeemobile.com
shopee.vn
shopee.tw
shopee.sg
+shp.ee
shopee.in
shopee.id
shopee.clshopee.co.idshopee.co.th
shopee.com.my
shopee.com.mx
shopee.com.co
shopee.com.br shopee.cn
+cnshopeesz.com
+cn
+J
+SMZDM
smzdm.comsmzdmimg.com
+zdmimg.comzhidemai.com
+G
+UDNudn.comudndata.comudnfunlife.com
+udn.com.tw
+@
+AMAZONTRUSTamazontrust.comawstrust.com
+ss2.us
+1
+GODADDYgodaddygodaddy.comx.co
+
+LIBGENlibgen.life
+libgen.funlibrary.lol
libgen.is
libgen.me
libgen.rs
libgen.stgen.lib.rus.ec
+
+MANORAMAmalayalamanorama.commanorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com
radiomango.fm
theman.in
+theweek.invanitaonline.com
+vanitha.invanithaveedu.com
+
+MDNmdn.mozillademos.orgmdn.devmdnplay.devmdnyalp.devdeveloper.allizom.orgdeveloper.mozilla.orgmdn.allizom.netmdn.mozilla.netmdn.mozit.cloud
+2
+MORISAWAtypesquare.commorisawa.co.jp
+^
+SWIFTappleswift.com
swift.org
+swiftui.cn
+cnswiftui.com.cn
+cn
+N
+THETYPEthetype.comtypeisbeautiful.com
thetype.cloud
+cn
+}
+CATEGORY-BLOG-CNhuangyuhui.net114blog.com
mryys.commryys.cn4thworkshop.com4thworkshop.cn
+
+CATEGORY-WIKI-CNfgo.wiki
jikipedia.com
+mbalib.comqiuwen.wikisec-wiki.comshidianbaike.comhuijistatic.com
huijiwiki.commoegirl.orgmcmod.cnmoegirl.org.cn
+
+
+HUAWEI-DEV
+bisheng.cn
+cnbishengcompiler.cn
+cndevui.design
+cn gneec.com
+cngneec.com.cn
+cn
+gneec3.com
+cn
+gneec4.com
+cn
+gneec7.com
+cn
harmonyos.com
+cnhiascend.cn
+cnhiascend.com
+cn hiclc.com
+cnhikunpeng.cn
+cn
hikunpeng.com
+cnhikunpeng.com.cn
+cn
hikunpeng.net
+cn
hisilicon.com
+cnhisilicon.com.cn
+cnhuaweiapaas.com
+cnmindspore.cn
+cn owsgo.com
+cnteleows.com
+cnsaasops.tech
+cn
+
+DGTLE
dgtle.com
+
+GOOGLE-DEEPMIND
ai.google.dev%!alkalicore-pa.clients6.google.com+'alkalimakersuite-pa.clients6.google.comdeepmind.comdeepmind.googlegenerativeai.googlegeller-pa.googleapis.com%!generativelanguage.googleapis.com&"proactivebackend-pa.googleapis.commakersuite.google.comaistudio.google.combard.google.comgemini.google.com
+(
+NUTAKU
+nutaku.com
+nutaku.net
+
+THELINUXFOUNDATIONamp.akamaized.netlfai.foundationlinuxfoundation.orgopenjsf.org
+nodejs.orgamp.devampproject.comampproject.netampproject.orgelectronjs.org
+jquery.comjquerymobile.comjqueryui.commochajs.org
+kernel.org
linux.orgcdn.ampproject.org
+cn
+
+ADDTOANYaddtoany.com
+9
+BESTORE517lppz.comlppz.comlppzimg.com
+
+CATEGORY-GOV-IR
+gov.irpresident.ir
+adliran.irbia-judiciary.ir
hadafmandi.ir
+dadiran.ir
+dadsara.irdadsetani.irdivan-edalat.ir
+dmk.ir
+doe.irintamedia.ireadl.ir
enamad.ir
+bazresi.irshora-gc.irdolat.iririmo.ir
+moi.irmporg.irparliran.irpost.iragrieng.org
refahi.irsahamedalat.irsamandehi.irsamanese.irsccr.irbudget.imo.org.ir
+
+GRAVATARgravatar.com
+
+LOGITECHlogitech.fr
logicoolg.comlogitech.bizlogitech.comlogi.comlogitech.io
logitechg.comlogitechg.frworldsfastestgamer.netlogicool.co.jplogitech.com.cnlogitechg.com.cnlogitechio.com.cn
+
+SNAPPcdnsnapptrip.com
snapp-box.com
snapp.cabsnapp.doctor
snapp.expresssnapp.irsnapp.ninja
+snapp.sitesnapp.supply
+snapp.taxi
+snapp.tech
snappcloud.io
snappfood.devsnappfood.irsnappmaps.ir
snapproom.comsnappshop.ir
snapptrip.com
+5
+UBUNTUKYLIN
openkylin.topubuntukylin.com
+
+ W3SCHOOLS
w3schools.com
+4
+ADOBE3dns-1.adobe.com3dns-2.adobe.com3dns-3.adobe.com3dns-4.adobe.com3dns-5.adobe.com3dns.adobe.comactivate-sea.adobe.comactivate-sjc0.adobe.comactivate.adobe.comactivate.wip1.adobe.comactivate.wip2.adobe.comactivate.wip3.adobe.comactivate.wip4.adobe.comadobe-dns-1.adobe.comadobe-dns-2.adobe.comadobe-dns-3.adobe.comadobe-dns-4.adobe.comadobe-dns.adobe.com
adobeereg.comcrl.versign.netereg.adobe.comereg.wip.adobe.comereg.wip1.adobe.comereg.wip2.adobe.comereg.wip3.adobe.comereg.wip4.adobe.comhl2rcv.adobe.comhlrcv.stage.adobe.comlm.licenses.adobe.comlmlicenses.wip4.adobe.comna1r.services.adobe.comood.opsource.netpractivate.adobepractivate.adobe.compractivate.adobe.ipppractivate.adobe.newoapractivate.adobe.ntp
wip.adobe.comwip1.adobe.comwip2.adobe.comwip3.adobe.comwip4.adobe.comwwis-dubc1-vip100.adobe.comwwis-dubc1-vip101.adobe.comwwis-dubc1-vip102.adobe.comwwis-dubc1-vip103.adobe.comwwis-dubc1-vip104.adobe.comwwis-dubc1-vip105.adobe.comwwis-dubc1-vip106.adobe.comwwis-dubc1-vip107.adobe.comwwis-dubc1-vip108.adobe.comwwis-dubc1-vip109.adobe.comwwis-dubc1-vip110.adobe.comwwis-dubc1-vip111.adobe.comwwis-dubc1-vip112.adobe.comwwis-dubc1-vip113.adobe.comwwis-dubc1-vip114.adobe.comwwis-dubc1-vip115.adobe.comwwis-dubc1-vip116.adobe.comwwis-dubc1-vip117.adobe.comwwis-dubc1-vip118.adobe.comwwis-dubc1-vip119.adobe.comwwis-dubc1-vip120.adobe.comwwis-dubc1-vip121.adobe.comwwis-dubc1-vip122.adobe.comwwis-dubc1-vip123.adobe.comwwis-dubc1-vip124.adobe.comwwis-dubc1-vip125.adobe.comwwis-dubc1-vip30.adobe.comwwis-dubc1-vip31.adobe.comwwis-dubc1-vip32.adobe.comwwis-dubc1-vip33.adobe.comwwis-dubc1-vip34.adobe.comwwis-dubc1-vip35.adobe.comwwis-dubc1-vip36.adobe.comwwis-dubc1-vip37.adobe.comwwis-dubc1-vip38.adobe.comwwis-dubc1-vip39.adobe.comwwis-dubc1-vip40.adobe.comwwis-dubc1-vip41.adobe.comwwis-dubc1-vip42.adobe.comwwis-dubc1-vip43.adobe.comwwis-dubc1-vip44.adobe.comwwis-dubc1-vip45.adobe.comwwis-dubc1-vip46.adobe.comwwis-dubc1-vip47.adobe.comwwis-dubc1-vip48.adobe.comwwis-dubc1-vip49.adobe.comwwis-dubc1-vip50.adobe.comwwis-dubc1-vip51.adobe.comwwis-dubc1-vip52.adobe.comwwis-dubc1-vip53.adobe.comwwis-dubc1-vip54.adobe.comwwis-dubc1-vip55.adobe.comwwis-dubc1-vip56.adobe.comwwis-dubc1-vip57.adobe.comwwis-dubc1-vip58.adobe.comwwis-dubc1-vip59.adobe.comwwis-dubc1-vip60.adobe.comwwis-dubc1-vip61.adobe.comwwis-dubc1-vip62.adobe.comwwis-dubc1-vip63.adobe.comwwis-dubc1-vip64.adobe.comwwis-dubc1-vip65.adobe.comwwis-dubc1-vip66.adobe.comwwis-dubc1-vip67.adobe.comwwis-dubc1-vip68.adobe.comwwis-dubc1-vip69.adobe.comwwis-dubc1-vip70.adobe.comwwis-dubc1-vip71.adobe.comwwis-dubc1-vip72.adobe.comwwis-dubc1-vip73.adobe.comwwis-dubc1-vip74.adobe.comwwis-dubc1-vip75.adobe.comwwis-dubc1-vip76.adobe.comwwis-dubc1-vip77.adobe.comwwis-dubc1-vip78.adobe.comwwis-dubc1-vip79.adobe.comwwis-dubc1-vip80.adobe.comwwis-dubc1-vip81.adobe.comwwis-dubc1-vip82.adobe.comwwis-dubc1-vip83.adobe.comwwis-dubc1-vip84.adobe.comwwis-dubc1-vip85.adobe.comwwis-dubc1-vip86.adobe.comwwis-dubc1-vip87.adobe.comwwis-dubc1-vip88.adobe.comwwis-dubc1-vip89.adobe.comwwis-dubc1-vip90.adobe.comwwis-dubc1-vip91.adobe.comwwis-dubc1-vip92.adobe.comwwis-dubc1-vip93.adobe.comwwis-dubc1-vip94.adobe.comwwis-dubc1-vip95.adobe.comwwis-dubc1-vip96.adobe.comwwis-dubc1-vip97.adobe.comwwis-dubc1-vip98.adobe.comwwis-dubc1-vip99.adobe.com10xfotolia.com2o7.netacrobat.comadbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com
adobe.comadobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.comadobedc.net
adobedemo.comadobedtm.comadobeexchange.comadobeexperienceawards.comadobegov.comadobehiddentreasures.comadobejanus.comadobeku.comadobelanding.comadobelogin.com
adobeoobe.comadobeplatinumclub.comadobeprojectm.comadobesc.com
adobesign.comadobesigncdn.comadobespark.comadobess.comadobestock.comadobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com
authorxml.combusinesscatalyst.comccnsite.com
ccpsx.com
+demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.comechocdn.comechosign.com
edgefonts.netenablementadobe.com
ftcdn.net
gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.comomniture.com
+omtrdc.net
photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.comadobe.iodevelopria.combehance.nets2stagehance.comadobecc.comadobecce.comadobeccstatic.comcreativecloud.comcreativesdk.comcotolia.comffotolia.comfiotolia.comfoftolia.comfonolia.comfotiolia.comfotoiia.comfotolia-noticias.com
+fotolia.ccfotolia.com
+fotolia.tvfotolja.comfptolia.comgfotolia.commotolia.comphotolia.nettenbyfotolia.comvotolia.combluefootcms.commageconf.commagento.commagento.netmagentocommerce.commagentomobile.commarketing-cloud.commarketo.commarketo.net
+marketo.tvmarketodesigner.commarketolive.com
+mktdns.commkto-c0100.commktorest.commktroute.commobilemarketo.com&"revenue-performance-management.comtoutapp.comcompresspdf.newpdf.newsign.new
+scene7.comtypekit.comtypekit.netmageconf.com.ua
marketo.co.uk
+adobedc.cn
+cn"advertising.adobe.com
+ads
tubemogul.com
+ads
+
+AUTHY
authy.com
+
+DMM-ADSad.games.dmm.com
+adsbluekai.com
+adsfout.jp
+adsgmossp-sp.jp
+adsi-mobile.co.jp
+adsim-apps.net
+adsimpact-ad.jp
+ads ladsp.com
+ads
microad.co.jp
+ads
+microad.jp
+ads socdm.com
+ads
+
+
+TEAMVIEWER,(client-teamviewer-com.trafficmanager.net%!teamviewer.com.cdn.cloudflare.netteamviewer.com
teamviewer.us
teamviewer.cn
+cn
+
+ ZHIHUISHU
zhihuishu.com
+
+APKCOMBOapkcombo.com
+
+ASAHIasahishimbun.sc.omtrdc.net
+aiasahi.jpasagaku.com
asahi.comasahicom.jpnikkansports.comasakonet.co.jp
+,
+JAVAjavajava.comjava.net
+%
+NEOWINneow.in
+neowin.net
+
+REMIREPOremirepo.net
+1
+ SPACESHIP
spaceship.com
spacemail.com
+P
+AEROGARDaerogardcn.comaerogard.com.auaerogard.com.cn
+cn
+*
+JIANSHUjianshu.com
+jianshu.io
+}
+ KUGOU-ADS"ads.service.kugou.com
+ads%adserviceretry.kglink.cn
+ads%adserviceretry.kugou.com
+ads
+\
+BLUEARCHIVEbluearchive.jpbluearchive.nexon.combluearchive-cn.com
+cn
+
+EROLABSero-labs.cloudero-labs.comero-labs.netero-labs.online
ero-labs.site
erolabs.clouderolabs.comerolabs.gameerolabs.neterolabs.online
+/
+ SNAPCRAFTsnapcraft.iosnapstore.io
+
+ 4PARADIGM
4paradigm.com
+
+VMWAREvmware.tt.omtrdc.net
+cfblob.comcloudchoose.comcloudvolumes.com
+cmpaas.com
+cpedge.comcrit-staging.comexperience-vmware.comgemfire.netgeodesummit.comgetboxer.comgitstar.comgitstar.net
gopivotal.net
greenplum.nethwslabs.comimmidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.comssdevrd.comvcanedge.com
vcloudair.netvfabric.netvidmpreview.com
+virsto.com
+virsto.netvmglobal.net
+vmmark.comvmtestdrive.comvmw.comvmware-cloudmanagement.comvmware-techcenter.com
+vmware.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com
vmwarevmc.comvmwdemo.com
vmwgcomms.comvmwhorizonair.comvmwidm-ads.com
+vmwidm.comvmwlabconnect.comvmwlearningplatform.comvmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com
+vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.comxlstudio.comavinetworks.com
+badaas.combitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com
cloudlive.comkubeacademy.comkubeapps.com
+nyansa.com
velocloud.com
gopivotal.com
+heptio.comaliveipc.com
aliveitsm.comaliveprofiler.comalivercm.comaliverewind.com
alivertsm.comalivevm.com
alivevmax.comalivevue.comvsphere.comvsphere.net
air-watch.comairwatchexpress.comairwatchqa.com
+getws1.comgetwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.com heptio.cn
+cn
+-
+HUAWEICLOUDcdnhwcqwg14.comcdnhwcgrb01.cn
b2bgo.comeduapaashwc.com
hc-cdn.cn
+hc-cdn.com
+hc-sre.comhuaweiapaas.cnhuaweiapaas.comhuaweicloud-dns.cnhuaweicloud-dns.comhuaweicloud-idme.cnhuaweicloud-idme.comhuaweicloud-smn.cnhuaweicloud-smn.comhuaweicloud-smn.nethuaweicloud.cnhuaweicloud.comhuaweicloudapis.cnhuaweicloudapis.comhuaweicloudlive.comhuaweicloudsite.cnhuaweicloudsite.comhuaweicloudwaf.cnhuaweicloudwaf.comhuaweioneaccess.cnhuaweioneaccess.comhuaweimarketplace.comhuaweisafedns.cnhuaweisafedns.comhuaweisafehub.cnhuaweisre.cn
huaweisre.comhuaweiyun.cn
huaweiyun.com
+hwastro.cnhwastro.comhwcdnsre.cnhwcdnsre.comhwclouds-dns.cnhwclouds-dns.comhwclouds-dns.nethwclouds.cnhwclouds.com
hwclouds.mobihwcloudsite.cnhwcloudsite.com
hwcloudvis.cnhwcloudvis.comhweventgrid.cnhweventgrid.comidonguapi.cn
idonguapi.comimc-oneaccess.cnimcapptest.cominanguapi.cn
inanguapi.comixiguapi.comkm6g.cnkm7g.cnkm8g.cnkm9g.cnkmcb-cn-east-3.cnkmcb-cn-north-4.cnkmop-cn-east-3.cnkmop-cn-north-4.cnlivehwc3.cnmodelarts-infer.cnmodelarts-infer.commyhuaweicloud-custom.cnmyhuaweicloud-custom.commyhuaweicloud-koodrive.cnmyhuaweicloud-koodrive.commyhuaweicloud-obs.cnmyhuaweicloud-obs.commyhuaweicloud.cn
+myhwcdn.cnmyhwcdn.commyhwcloudlive.com
myhwclouds.cnmyhwclouds.commyhwclouds.netpagescube.cn576nt.cn
pagescube.compowerapp.iokma1g.cn8gcdp.cncza84.cn7k2k1.cnivwi3.cnlu1da.cnvo6z2.cn3ili6.cnz95rr.cntzygd.cn9coof.cn26r9y.cnmle5p.cnacgab.cnka9bv.cnms2tg.cnx9exk.cn8n82b.cny43f6.cncdnhwchcg02.comcdnhwcurq03.comcdnhwczba04.comcdnhwclxw05.comcdnhwcupf06.comcdnhwcxcy07.comcdnhwcatq08.comcdnhwcztu09.comcdnhwcedi10.comcdnhwcoem01.comcdnhwcllh11.comcdnhwcjog12.comcdnhwcpsd13.comcdnhwcjbj05.cnaadcloud.comcdnhwcaoc115.cncdnhwcajk17.comcdnhwcchh18.comcdnhwcohm19.comcdnhwczjt20.comcdnhwcggk22.comcdnhwczth23.comcdnhwctxz24.comcdnhwcqir15.comcdnhwcyxb02.cncdnhwcywp03.cncdnhwclkl04.cnaadcloud.cncdnhwconz06.cncdnhwcgqa21.comcdnhwckbw08.cncdnhwcsjs09.cncdnhwcjkl10.cncdnhwctmz11.cncdnhwcrpp12.cncdnhwcpqh13.cncdnhwcxsi14.cncdnhwcfzp15.cncdnhwcgvs16.cncdnhwcrgg07.cncdnhwceft18.cncdnhwccvo19.cncdnhwcbvo20.cncdnhwcdkd21.cncdnhwcdvg22.cncdnhwclnh23.cncdnhwckfd24.cncdnhwczxh101.comcdnhwcbzj102.comcdnhwcjqv17.cncdnhwcljk104.comcdnhwclxu105.comcdnhwcbqs106.comcdnhwctnm107.comcdnhwcbni108.comcdnhwczks109.comcdnhwcick110.comcdnhwcead111.comcdnhwcjlg112.comcdnhwckon103.comcdnhwczmn114.comcdnhwcqgw115.comcdnhwckfz116.comcdnhwcqve117.comcdnhwcgnc118.comcdnhwcuim119.comcdnhwcjsb120.comcdnhwccmz121.comcdnhwcibv122.comcdnhwcprh113.comcdnhwcedt124.comcdnhwcofl101.cncdnhwclrd102.cncdnhwcurr103.cncdnhwczid104.cncdnhwcqvk105.cncdnhwczoy106.cncdnhwcuwd107.cncdnhwcogx108.cncdnhwcoph123.comcdnhwceod109.cncdnhwcpcw110.cncdnhwczic111.cncdnhwcozb112.cncdnhwcqrr114.cncdnhwcvix16.comcdnhwctyd116.cncdnhwcidu117.cncdnhwclsl119.cncdnhwcsux118.cncdnhwcbie120.cncdnhwcuxc121.cncdnhwcaip122.cncdnhwcwqz113.cncdnhwcojn124.cncdnhwcscc123.cno7mu8.cn59bob.cntc3bl.cnhiu58.cnkfomn.cnazkr2.cnvm45e.cnbuf35.cnuwtmy.cnfpxyo.cntm2a8.cnr8zc9.cn6ts7c.cn2gkjr.cnns95c.cntm7sg.cnle5vb.cn cn-south-1.myhuaweicloud.commyhwclouds.com.cn!cn-north-11.myhuaweicloud.com cn-north-2.myhuaweicloud.com$ cn-northeast-1.myhuaweicloud.com cn-north-9.myhuaweicloud.com cn-north-6.myhuaweicloud.com$ cn-southwest-2.myhuaweicloud.comami-alliance.org.cn cn-north-3.myhuaweicloud.com cn-north-5.myhuaweicloud.com cn-south-2.myhuaweicloud.com cn-north-1.myhuaweicloud.comcn-east-5.myhuaweicloud.comcn-east-4.myhuaweicloud.comcn-east-3.myhuaweicloud.comcn-east-2.myhuaweicloud.com cn-south-4.myhuaweicloud.comhwclouds.org.cn cn-north-4.myhuaweicloud.com#.+\.cdnhwc([1-9]|10)\.(cn|com)$ huaweicloud-dns.net
+!cn huaweicloud-dns.org
+!cn&ae-ad-1.myhuaweicloud.com
+!cn)af-north-1.myhuaweicloud.com
+!cn)af-south-1.myhuaweicloud.com
+!cn- ap-southeast-1.myhuaweicloud.com
+!cn- ap-southeast-2.myhuaweicloud.com
+!cn- ap-southeast-3.myhuaweicloud.com
+!cn- ap-southeast-4.myhuaweicloud.com
+!cn(eu-west-0.myhuaweicloud.com
+!cn*eu-west-101.myhuaweicloud.com
+!cn)la-north-2.myhuaweicloud.com
+!cn)la-south-2.myhuaweicloud.com
+!cn(me-east-1.myhuaweicloud.com
+!cn/"my-kualalumpur-1.myhuaweicloud.com
+!cn*na-mexico-1.myhuaweicloud.com
+!cn*ru-moscow-1.myhuaweicloud.com
+!cn- ru-northwest-2.myhuaweicloud.com
+!cn*sa-brazil-1.myhuaweicloud.com
+!cn(tr-west-1.myhuaweicloud.com
+!cn
+
+NICONICOnico
+nicodic.jpnicomanga.jpniconico.comnicoseiga.jpnicovideo.jpnimg.jpsimg.jp
+H
+TLD-!CNgovmileduacadaeafagaialamaoaqarasatauawaxazbabbbdbebfbgbhbibjbmbnbobrbsbtbvbwbybzcacdcfcgchcickclcmcrcucvcwcxcyczdedjdkdmdodzeceeegereseteufifjfkfmfofrgagbgdgegfggghgiglgmgngpgrgsgtgugwgyhmhnhrhthuidieiliminioiqirisitjejmjojpkekgkhkikmknkpkrkwkykzlalblclilklrlsltlulvlymamcmdmgmhmkmlmmmnmompmqmrmsmtmumvmwmxmymznancnenfngninlnonpnrnunzompapepfpgphpkplpmpnprpsptpyqarerorsrurwsasbscsdsesgshsisjskslsmsnsosrssstsusvsxsysztctdtftgthtjtktltmtntotrtttwtzuaugukusuyuzvavcvevgvivnvuwfwsyeytzazmzwaflmlbnbanflnracrsdnpdvagerniice locusmckinseyolayangroup
+olayan praxisapseekwtc xeroxathleta
bloombergcalvinkleingap gucci
+hermes
lancaster lipsy mango
+nextdirectnextnike omegaredstone
+swatch
+africacapetown
+durban
+joburgabudhabiarab dubaikrd kyoto
+nagoyaokinawa osaka
+ryukyu
+taipei tatar tokyoyokohama
+alsace
amsterdambar
barcelona
+bayernbcn
+berlinbrusselsbzhcatcorsica cymrueusfrlgalgenthamburghelsinki irishististanbul koeln
+london
+madrid
+moscownrw parisruhrsaarlandscot
stockholm swiss tirol
+vlaanderen waleswienzuerich
+boston miaminyc
+quebec vegaskiwi
melbourne
+sydneylatrioaarp
+abbott
+abbvie aetnabms
+boehringer dabur
freseniusjnj
+sanofiaeg
+airbus
+alstom
+aramco bosch
+bostik crown
+dupontflirgraingerhitachiifmipirangajiokomatsu
kuokgroupleclerclidl lottemanmtrreliancerexrothrilrwesandvikcoromantsandvik
+schaefflerschmidtschwarz senersewsncf total
+walter weberweirwoodsidezaraafricamagicagakhanakdn
+bharti bingocasa
+casino
+datingdomains
+extraspacegaygentinghot ikano
+imamatlgbtmaif
+mattelmoesas shellshia style sucks
+tattoovana
+virgin vodkawinewmewtf biblecatholicismailixn--mgbi4ecexpcern
+emerck
hisamitsu lillylundbeckmerckmsdmsd
+otsuka
+pfizer stadateva torayweather adultpornsexsexyxxxauspostdhl fedexxn--lgbbat1ad8j
+xn--y9a3aqxn--mgbcpq6gpa1axn--54b7fta0cc
xn--90aisxn--90ae
+xn--wgbh1c
xn--e1a4c
xn--qxa6axn--nodexn--qxamxn--4dbrk0cexn--h2brj9cxn--mgbbh1a71e
xn--fpcrj9c3dxn--gecrj9cxn--s9brj9cxn--45brj9cxn--xkc2dl3a5ee0hxn--2scrj9cxn--rvc1e0am3exn--45br5cylxn--3hcrj9cxn--mgbbh1axn--h2breg3eve
xn--h2brj9c8cxn--mgbgu82axn--mgba3a4f16axn--mgba3a4fraxn--mgbtx2bxn--mgbayh7gpaxn--80ao21axn--3e0b707e
+xn--q7ce6axn--mix891fxn--mix082f
xn--d1alfxn--mgbx4cd0abxn--mgbah1a3hjkrd
xn--l1accxn--mgbc0a9azcgxn--mgb9awbfxn--mgbai9azgqp6jxn--mgbai9a5eva00b
xn--ygbi2ammx
+xn--wgbl6axn--p1aixn--mgberp4a5d4arxn--mgberp4a5d4a87gxn--mgbqly7c0a67fbcxn--mgbqly7cvafr
+xn--90a3ac
xn--yfro4i67o
xn--fzc2c9e2cxn--mgbpl2fhxn--ogbpf8flxn--mgbtf8flxn--kpry57dxn--kprw13dxn--nnx388a
+xn--o3cw4hxn--pgbs0dh
xn--j1amhxn--mgbaam7a8hxn--mgb2ddesaaaaudibentleybmwbridgestonecase
+datsun
+dunlopferrari
firestonefordgoodyear hondahyundaiinfiniti
+jaguarjeepkialamborghini
landrover lexuslincolnmini
+mitsubishi
+nissanseat
+suzuki
+tatamotors
+toyotatvs volvoandroid applebestbuybrother canondellfujitsu
goldpointibm nikon nokia
panasonicphilipspioneersamsung sharpsonytoshiba
yodobashi
allfinanzallyamericanexpressamexanzbanamexbarclaycardbarclaysbbtbbva
+bnpparibasbofabradesco
+capitalonecbacfacitadelciticommbankdeloittediscoverfidelityhdfcbankhdfchsbcitaujcbjllkfhkpmglacaixalasallelplfinanciallplnabnetbankopen
+pictetpncpohl
pramerica
+prudentialprupwcsbiscbsoftbank
statebanktemasek ubankubsvanguardvisa
wolterskluwer
aquarellediy
homedepot
homegoodsaigallstateamericanfamily amfam amicaaxafarmersmma
+nissayprogressiveredumbrella
statefarmtiaatravelersinsurance
travelerstrvvig beatsblockbusternetflixplaystationtabwilliamhillxboxasda
+george
homesenselego
marshallsobisamsclubstaples
+targetthd
+tjmaxxtjx
+tkmaxxwalmartabb
accentureaco
+airtel
+amazonaolaws azure
+chrome ciscodclkdishdtv epsonericsson
fairwindsfido
+flickrfrogansfrontierftrgbizgeaggeegle gmailgmogmxgodaddygoog
+googlegoogugehangouthkthotmail
+hughesieee
+intuitjavajmpjprsjuniperkddi
+kindlekpnlanxess
+locker
microsoftmintmitmtnnecneustar nexusnico
+nortonntt
+officeollo
+oracle
+orangeovhpccw
richardli ricoh
+rogers
+sakurasfrshaw skype sling smartstcgroupstctcitdkuolverisignvivavivowindows yahooyamaxun
+yandexyoutube
+zappos
+chanelclinique lamer
+naturaoriginsbarefoot
+cuisinella edekafageferrerofood galloxn--5su34j936bgsgxn--b4w605ferd
xn--cckwcxetd
+xn--cg4bkixn--flw351exn--fzys8d69uvgmxn--jlq480n2rgxn--kcrx77d1x4axn--mgba3a3ejtxn--mgba7c0bbn0axn--ngbe9e0axn--qcka1pmcxn--w4r85el8fhu5dnraxn--w4rs40lcaravanciprianiclubmed deltafirmdale hyattkerryhotelskerrypropertiesmarriott
shangrilatui
+vikingablecbrechintai
+lefrakabcartebbccbn
+eurovisionfox
+gallup globohboimdbitvnhk nowtvsbs sevenskyweatherchannelbauhauslatrobe
+monashmemeingfoozipmovdadphdprofesqrsvpboodaynewdevpageapphowsoyxn--q9jyb4c
+
+AWS-CN
+a2z.org.cn
+cnamazonaws.cn
+cnamazonaws.com.cn
+cn$amazonwebservices.com.cn
+cnamazonworkdocs.cn
+cn!amazonworkdocs.com.cn
+cn"asfiovnxocqpcry.com.cn
+cn
aws-border.cn
+cn%aws-icp-domain-manager.cn
+cn
+awsapps.cn
+cnawsapps.com.cn
+cnawsstatic.cn
+cncloudfront-cn.net
+cncloudfront-test.cn
+cn
cloudfront.cn
+cnnwcdcloud.cn
+cnnwcdcloud.com.cn
+cn
+nwcddns.cn
+cnnwcdinfosec.cn
+cn
+route53.cn
+cnsagemaker.com.cn
+cn-!.+\.amzndns-cn\.(biz|cn|com|net)$
+cn8,.+\.awsdns-cn-[0-9][0-9]\.(biz|com|net|top)$
+cn, .+\.awsdns-cn-[0-9][a-e0-9]\.cn$
+cn
+
+CATEGORY-SHOPPING-IR
digi-kala.com
emalls.iresam.ir
+janebi.com
janebi.irsheypoor.com
torob.com
zanbil.irdigikala.comdigikalabusiness.comdigikalajet.com
digistyle.comdivar.clouddivar.irdivarcdn.com
+
+CNNcnn.com
+cnn.io
+cnn.it
cnnarabic.comcnnlabs.comcnnmoney.chcnnmoney.comcnnmoneystream.comcnnpolitics.com
+
+BETHESDA
+beth.gamesbethesda.netbethesdagamestudios.combethsoft.comdoom.comelderscrolls.com
+
+CATEGORY-COLLABORATE-CNoray.comoray.net
+orayer.comorayimg.comsunlogin.net
+todesk.comtower.imshimo.im
yuque.com
+
+HEYTEA
+heytea.com
+*
+JAVWIDEjavwide.com
+javwide.tv
+)
+TRACKER1337.abcvg.info1c.premierzal.ru
+aegir.sexyapi.clasificadosrapidos.combandito.byterunner.io($bittorrent-tracker.e-n-c-r-y-p-t.netbt.ktrackers.combt.okmp3.ru
+bt.rer.lolbvarf.tracker.shcanardscitrons.nohost.mech3oh.ru
+concen.orgd40969.acod.regrucolo.ru62ec2-18-191-163-220.us-east-2.compute.amazonaws.comevan.imexodus.desync.comexplodie.orgipv4.rer.lolipv6.rer.lolisk.richardsw.club
+jutone.comleet-tracker.moemartin-gebhardt.eumoonburrow.clubns1.monolithindustries.comnyaa.tracker.wf
odd-hd.fropen.acgtracker.comopen.demonii.com
open.dstud.ioopen.free-tracker.gaopen.stealth.siopen.tracker.clopen.tracker.inkopen.u-p.pwopentor.orgopentracker.iop2p.azu.redp2p.publictracker.xyzp4p.arenabg.compublic.tracker.vraphim.compybittrack.retiolus.netretracker.hotplug.ruretracker.lanta.meretracker.x2k.ru$ retracker01-msk-virt.corbina.netrun.publictracker.xyz
ryjer.comseedpeer.netserpb.vpsburti.com
smurfsoft.com!sparkle.ghostchu-services.topt.overflow.biztaciturn-shadow.spb.rutk.greedland.nettk2v6.trackerservers.comtorrents.artixlinux.orgtorrentsmd.com
+tr.abir.gatr.burnabyhighstar.com
+tr.kxmp.cftr1.aag.moetr4ck3r.duckdns.orgtrackarr.orgtracker-udp.gbitt.infotracker-zhuqiy.dgj055.icutracker.0x7c0.comtracker.birkenwald.detracker.bittor.pwtracker.breizh.pmtracker.bt4g.comtracker.cloudit.toptracker.cyberia.istracker.darkness.servicestracker.deadorbit.nltracker.dler.comtracker.dler.orgtracker.dump.cltracker.edkj.clubtracker.electro-torrent.pltracker.filemail.comtracker.files.fmtracker.fnix.nettracker.gcrenwp.toptracker.gigantino.nettracker.gmi.gdtracker.ipfsscan.iotracker.ipv6tracker.org"tracker.itscraftsoftware.my.idtracker.jamesthebard.nettracker.kuroy.metracker.lilithraws.orgtracker.mywaifu.besttracker.opentrackr.orgtracker.openwebtorrent.comtracker.peckservers.comtracker.pmman.tech
tracker.qu.axtracker.renfei.nettracker.skynetcloud.sitetracker.skyts.nettracker.srv00.comtracker.tamersunion.orgtracker.theoks.nettracker.tiny-vps.comtracker.torrent.eu.orgtracker.tryhackx.orgtracker.waaa.moetracker.yemekyedim.comtracker1.520.jptracker1.bt.moack.co.krtracker1.itzmx.comtracker1.myporn.clubtracker2.dler.orgtracker2.itzmx.comtracker3.itzmx.comtracker4.itzmx.comtrackers.mlsub.netttk2.nbaonlineservice.comu4.trakx.crim.istu6.trakx.crim.istwepzone.netwww.all4nothin.netwww.peckservers.comwww.torrent.eu.orgwww.wareztorrent.comyahor.of.byz.mercax.comhdsky.me
+hdbits.org
52pt.siteaidoru-online.me
alpharatio.cc
animebytes.tvanimetorrents.meanthelion.measiancinema.meaudiences.meavgv.cc
+avistaz.to
awesome-hd.me
beitai.ptbeyond-hd.mebibliotik.mebittorrent.comblutopia.ccbroadcasthe.netuhdbits.org
+trontv.com
btschool.club
bwtorrents.tv
+byr.ptccfbits.orgcgpeers.com
+chdbits.cocinemageddon.net
cinematik.net
+cinemaz.to
totheglory.imconcertos.livecreditracker.net
dicmusic.clubdiscfan.net
dxdhd.comeastgame.orgempornium.meet8.orgexoticaz.toextremlymtorrents.wsfilelist.io
gainbound.netgazellegames.netgfxpeers.nethd-space.orghd-torrents.orghd4.xyzhd4fans.org
hdarea.cohdatmos.clubhdbd.us
hdstreet.clubhdchina.orghdcity.cityhddolby.com
+hdfans.org
+hdhome.org
+hdpost.tophdroute.org
+oppaiti.me
+hdtime.org
+2xfree.org
hdupt.com
hdzone.mehhanclub.top
hitpt.com
hitpt.orgtorrentseeds.orgicetorrent.orgiptorrents.comj99.info
joyhd.netjpopsuki.eu
+kamept.comkaragarga.inkeepfrds.com
landof.tvleaguehd.comlemonhd.orglztr.me
m-team.ccmadsrevolution.netmoecat.bestmorethan.tv
+msg.vgmyanonamouse.net
nanyangpt.comncore.ccnebulance.io
+nicept.net
npupt.comtorrentleech.orgopen.cd
1ptba.comorpheus.networkourbits.clubpassthepopcorn.mepornbits.netprivatehd.topterclub.com
+pthome.netptsbao.club
+pttime.orgpussytorrents.org
+qingwa.proredacted.ch
+sdbits.orgsharkpt.nettorrentday.com
+skyey2.comsoulvoice.clubspringsunday.net
+tju.pt
tjupt.orgsjtu.edu.cnnwsuaf6.edu.cnclassix-unlimited.co.uku2.dmhy.org
bt.byr.cn
xauat6.edu.cnhudbt.hust.edu.cnbt.neu6.edu.cn
+announce chdbitsm-team torrent
+
+FASTLYfastly-edge.comfastly-terrarium.com
+fastly.com
fastly.io
+fastly.netfastlylabs.comfastlylb.net
+zencdn.net
+
+GOOGLE-TRUST-SERVICESpublicca.googleapis.com#preprod-publicca.googleapis.comclients1.google.compki.google.compki.goog!pki-goog.l.google.com
+cn
+c.pki.goog
+cn
+i.pki.goog
+cn
+o.pki.goog
+cncrl.pki.goog
+cn
crls.pki.goog
+cn
ocsp.pki.goog
+cn
+%
+IMGIX
imgix.com
imgix.net
+
+ SITEPOINT
sitepoint.com
+
+DIDA365dida365.com
+(
+LAGOU
lagou.comlgstatic.com
+Q
+NEWSMAXandysparis.comnewsmax.com
+newsmax.in
newsmaxtv.com
+L
+
+TEAMBITIONteambition.comteambition.netteambitionapis.com
+f
+ ZHIMEISHE
+168sex.top
a7sex.comctotires.comferryclean.comzhimeishe888.com
+>
+JAPONXx18r.cox18r.comz18r.coz18r.com
+
+ NEURALINK
neuralink.com
+
+QYYJTqyyjt.cn
+*
+BOOKSbook.com.twbooks.com.tw
+
+BRIDGESTONEbridgestone
tiresplus.combastropfirestone.comblizzak-juken.jpbookmybridgestonetyre.combridgestone-asiapacific.combridgestone-bandag.combridgestone-brand.com#bridgestone-business-service.jpnokiantyres.combridgestone-plt-eng.combridgestone-tac-oman.combridgestone.clwheelworks.nethibdontire.comfirestonetire.combridgestonetire.comfirestonerewards.combridgestone.comfirestoneip.comfirestonedrivestore.com!firestonecompleteautocare.comfirestonecomercial.clfirestonebpco.comfirestone.clcrossfitfirestone.combridgestoneamericas.combridgestonearena.combridgestonevan.combridgestonecomercial.cl
+bandag.comcfna.com
bandag.ccthetread.comstore-bridgestonesports.combridgestonegolf.combridgestonegz.combridgestonela.combridgestonemarketing.combridgestonemerchandise.com bridgestonenationalfleet.combridgestoneperformance.com#bridgestoneperformancemedia.net bridgestonerapiddelivery.combridgestonerewards.combridgestonesyb.combridgestonetire.cafirestonetire.caprodrive-japan.combridgestonecntc.combridgestonewx.combs-adreview.com
+potenza.jpplayz.jp
+bsw.jpcarcare-and-tireshop.jpdaytontrucktires.comecoforme.jpgcrtires.comjsbridgestone.commenshin-channel.commonitrix.net
mr-tireman.jpmybridgestoneeducation.combridgestone.co.idfirestone.com.co
bsw.co.jpbridgestonecomercial.com.mxbridgestonecomercial.com.cobridgestone.com.sgbridgestonecomercial.com.arbridgestonecomercial.co.crbridgestone.com.vnbridgestone.com.twfirestone.co.crfirestone.com.arfirestone.com.brbridgestone-korea.co.krbridgestone.com.brbridgestone.com.mxbs-awh.ne.jpfirestonecomercial.co.crfirestonecomercial.com.arfirestonecomercial.com.brfirestonecomercial.com.cofirestonecomercial.com.mxbridgestone.com.cobridgestonetyre.com.mybridgestone.com.arbridgestone.co.thbridgestone.co.jpbridgestone.co.infirestone.com.mxbridgestone.co.crbridgestonecomercial.com.brbridgestone.cn
+cnbridgestone.com.cn
+cnnokiantyres.cn
+cn
+
+JD-ADSads.union.jd.com
+adsc-nfa.jd.com
+adscps.360buy.com
+ads
+jzt.jd.com
+ads
stat.m.jd.com
+adsimg-x.jd.com
+ads
+4
+KHANACADEMYkhanacademy.orgkastatic.org
+
+CMB
8008205555.cn8008205555.comcignacmb-ipmi.comcignacmb.comcignacmbamc.comcmb-leasing.comcmbchina.bizcmbchina.cncmbchina.com
cmbimg.cn
+cmbimg.comcmbt.cn
+cmbuat.com
cmburl.cncmf.bizcmf.ltdcmfchina.com
+cmfunds.cntest-cignacmb.comcmbi.com.hk
+!cn cmbwinglungbank.com
+!cn
+
+ELECTRONelectronjs.org
+
+
GOOGLE-GEMINI
ai.google.dev%!alkalicore-pa.clients6.google.com+'alkalimakersuite-pa.clients6.google.comdeepmind.comdeepmind.googlegenerativeai.googlegeller-pa.googleapis.com%!generativelanguage.googleapis.com&"proactivebackend-pa.googleapis.commakersuite.google.comaistudio.google.combard.google.comgemini.google.com
+B
+PUGPIGpugpig-dev.compugpig-stage.com
+pugpig.com
+
+YOUPORNextremetube.comkeezmovies.comyouporn.comyouporngay.comyoupornpremium.com
youpornru.comyopornshop.com
+ypncdn.com
+'
+BLUEPOCH-GAMES sl916.com
+cn
+
+KANZHONGGUOes-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com
trithucvn.net
trithucvn.orgvct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com
vtvan.comwatchinese.com
+(
+OPENCOLLECTIVEopencollective.com
+R
+NOWCODERnewcoder.comnowcoder.comnowcoder.netnowcoder.org
+.
+PINKCOREpinkcore.compinkcore.net
+M
+REUTERSreut.rsreuters.com
+reuters.tvreutersmedia.net
+A
+TONGFANGtongfangpc.commechrevo.comthtf.com.cn
+
+TOPCODERtopcoder.com
+
+115115.com
+115cdn.com
+115cdn.net
+115img.com116cd.cn
116cd.com
116cd.net
anxia.com sq.cc
+(
+CHINAZ
+chinaz.com
+chinaz.net
+(
+DEBIAN
+debian.org
+dotdeb.org
+
+WISHwish.com
+A
+XDAxda-cdn.comxda-developers.com
xdaforums.com
+7
+OSCHINAoschina.net
gitee.comgitee.io
+$
+TUBE8
tube8.comtube8.fr
+
+YOUTUBEyoutube
+youtube.ru
+youtube.az
ytimg.comwithyoutube.comyoutu.beyoutube-nocookie.com yt.be
+youtube.ae
+youtube.al
+youtube.am
+youtube.at
+youtube.ro
+youtube.ba
+youtube.be
+youtube.bg
+youtube.bh
+youtube.bo
+youtube.by
+youtube.cayoutube.cat
+youtube.ch
+youtube.qa
+youtube.coyoutubemobilesupport.comyoutubekids.comyoutubego.inyoutubego.id
youtubego.comyoutubegaming.comyoutubefanfest.comyoutubeeducation.com
+youtube.vn
+youtube.uy
+youtube.ug
+youtube.ua
+youtube.tv
+youtube.tn
+youtube.svyoutube.soy
+youtube.rs
+youtube.sk
ggpht.comyoutube.com
+youtube.si
+youtube.sg
+youtube.se
+youtube.sa
+youtube.ee
+youtube.sngooglevideo.com
+youtube.cl
+youtube.pt
+youtube.pr
+youtube.pl
+youtube.pk
+youtube.ph
+youtube.pe
+youtube.pa
+youtube.no
+youtube.nl
+youtube.ni
+youtube.ng
+youtube.my
+youtube.mx
+youtube.mn
+youtube.mk
+youtube.me
+youtube.md
+youtube.ma
+youtube.ly
+youtube.lv
+youtube.lu
+youtube.lt
+youtube.lk
+youtube.la
+youtube.kz
+youtube.kr
+youtube.jp
+youtube.jo
+youtube.it
+youtube.is
+youtube.iq
+youtube.in
+youtube.ie
+youtube.hu
+youtube.hr
+youtube.hk
+youtube.gt
+youtube.gr
+youtube.ge
+youtube.fr
+youtube.fi
+youtube.es
+youtube.cr
+youtube.cz
+youtube.de
+youtube.dk
youtube.co.zwyoutube.com.veyoutube.com.uyyoutube.com.uayoutube.com.twyoutube.googleapis.comyoutube.com.tryoutube.com.tnyoutube.com.svyoutube.com.sgyoutube.com.sayoutube.com.royoutube.com.qayoutube.com.pyyoutube.com.ptyoutube.com.pkyoutube.com.phyoutube.com.peyoutube.com.payoutube.com.omyoutube.com.niyoutube.com.ngyoutube.com.myyoutube.com.mxyoutube.com.mtyoutube.com.mkyoutube.com.lyyoutube.com.lvyoutube.com.lbyoutube.com.kwyoutube.com.joyoutube.com.jmyoutube.com.hryoutube.com.hnyoutube.com.hkyoutube.com.gtyoutube.com.gryoutube.com.ghyoutube.com.esyoutube.com.egyoutube.com.eeyoutube.com.ecyoutube.com.doyoutube.com.coyoutube.com.byyoutube.com.bryoutube.com.boyoutube.com.bhyoutube.com.bdyoutube.com.azyoutube.com.auyoutube.com.ar
youtube.co.za
youtube.co.ve
youtube.co.uk
youtube.co.ug
youtube.co.tz
youtube.co.th
youtube.co.nz
youtube.co.ma
youtube.co.kr
youtube.co.ke
youtube.co.jp($youtubeembeddedplayer.googleapis.com
youtube.co.in
youtube.co.ilyoutubego.co.idyoutubego.co.in
youtube.co.idyoutubego.com.br
youtube.co.hu
youtube.co.cryoutubei.googleapis.com
youtube.co.at
youtube.co.aeyoutube-ui.l.google.comwide-youtube.l.google.comggpht.cn
+cn
+A
+APARAT
+aparat.comaparatkids.comaparatsport.com
+
+INSIDERbusinessinsider.jpbusinessinsider.myinsiderintelligence.cominsider.cominsider-intelligence.combusinessinsider.esbusinessinsider.combusinessinsider.frbusinessinsider.debusinessinsider.mxbusinessinsider.inbusinessinsider.nlbusinessinsider.sgbusinessinsider.co.zabusinessinsider.com.plbusinessinsider.com.au
+
+MOZILLAmdn.mozillademos.orgfirefox.commozilla.communityfirefoxusercontent.commdn.devmozilla.orgextensionworkshop.combugzilla.org
getpocket.comseamonkey-project.orgthunderbird.net
+mozgcp.net
crates.iodocs.rsmozilla.commozilla.netmdnplay.devmdnyalp.dev
rustup.rs
rust-lang.orgmdn.allizom.netmdn.mozit.clouddeveloper.allizom.org
+
+RIOTlolstatic-a.akamaihd.netleagueoflegends.comriot-games.comhistoryofdota.orginstituteofwar.orgmolesports.comrgpub.ioleagueoflegends.inforiot.comriot.netriotcdn.net
riotgames.comriotgames.inforiotgames.jp
riotgames.netriotgames.tvriotpin.comriotpoints.comrstatic.nethistoryofdota.com
supremacy.net championshipseriesleague.comlcsmerch.comleaguehighschool.comleagueoflegends.ca
supremacy.comhistoryofdota.netleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.comlolclub.orglolespor.comlolesports.com
lolfanart.net
+lolpcs.com
lolstatic.comlolusercontent.comconvrgencegame.compvp.net
+pvp.tvulol.complayvalorant.comriotforgegames.comruinedking.comriotgames.co.krleagueoflegends.co.kr
lolshop.co.krleagueoflegends.cn
+cn
+lpl.com.cn
+cn
+c
+ WIN-EXTRAa-msedge.netmsftncsi.comcbecloud.combingforbusiness.comonedrive.live.comiecvlist.microsoft.coma-0003.dc-msedge.neta-ring.msedge.netwww.xboxab.comwww.windowssearch.comactivity.windows.comwww.msftconnecttest.comwww.msedge.netanswers.microsoft.comapi.bing.comapi.onedrive.comapi.msn.comappex-rf.msn.comapps.skype.comarc.msn.comwindows.msn.comwin10-trt.msedge.netassets.msn.comwdcpalt.microsoft.comauth.gfx.ms&"autologon.microsoftazuread-sso.comwdcp.microsoft.comwallet.microsoft.comurs.microsoft.comui.skype.comuhf.microsoft.com!troubleshooting.microsoft.comb-ring.msedge.netbl3301-a.1drv.combl3301-c.1drv.combl3301-g.1drv.comto-do.microsoft.comtime.windows.comteams.live.comt-ring.msedge.netsupport.microsoft.comsubstrate.office.com store-images.s-microsoft.comstore-images.microsoft.comstorage.live.comstor3.msedge.netby3301-a.1drv.comby3301-c.1drv.comby3301-e.1drv.comc-0001.dc-msedge.net
+c.bing.comc1.microsoft.comcandycrushsoda.king.comstatic.2mdn.netcdn.onenote.netsn3301-g.1drv.comsn3301-e.1drv.comch3301-c.1drv.comch3301-e.1drv.comch3301-g.1drv.comch3302-c.1drv.comch3302-e.1drv.comcheckappexec.microsoft.comchoice.microsoft.comsn3301-c.1drv.com#client-office365-tas.msedge.net"smartscreen-prod.microsoft.comclientconfig.passport.netskyapi.live.netshare.microsoft.comsfdataservice.microsoft.comsettings-ssl.xboxlive.comsearch.msn.comcrl.microsoft.coms0.2mdn.netromeccs.microsoft.comda.xboxservices.comrom30r3a.msedge.netr20swj13mr.microsoft.comdev.virtualearth.netpipe.skype.com*&outlookmobile-office365-tas.msedge.netoutlook.office365.comoutlook.office.comoutlook.live.comdlassets-ssl.xboxlive.com#outlook-emeawest2.office365.comecs.office.comedgetipscdn.microsoft.comedge.microsoft.com&"outlook-ca-emeawest2.office365.comotf.msn.comoneocsp.microsoft.comofficeclient.microsoft.comofficecdn.microsoft.comoneclient.sfx.ms!ocos-office365-s2s.msedge.net($evoke-windowsservices-tas.msedge.netntp.msn.comfeedback.microsoft-hohm.coma-0001.dc-msedge.netfeedback.windows.commscrl.microsoft.commsagfx.live.com
fp.msedge.netmediaredirect.microsoft.comfs.microsoft.com
+g.bing.com
+g.live.commaps.windows.comgo.microsoft.comgraph.microsoft.comhel01r3.msedge.net
m.hotmail.comlogincdn.msauth.netlogin.windows.netlogin.microsoftonline.comlogin.live.com*&location-inference-westus.cloudapp.netk-ring.msedge.netiteactive-pra.msedge.netinsideruser.microsoft.com insiderservice.microsoft.comimg-s-msn-com.akamaized.net/+img-prod-cms-rt-microsoft-com.akamaized.netoutlook-1.cdn.office.neta.config.skype.com activation.sls.microsoft.com$ www.telecommandsvc.microsoft.com#activation-v2.sls.microsoft.comapi.cdp.microsoft.comwscont2.apps.microsoft.comwscont.apps.microsoft.comwindows.policies.live.netimg.stb.s-msn.com!ars.smartscreen.microsoft.comaz361816.vo.msecnd.netinference.location.live.net)%vortex-win-sandbox.data.microsoft.com!vortex-win.data.microsoft.com#validation-v2.sls.microsoft.com validation.sls.microsoft.com!urs.smartscreen.microsoft.comaz512334.vo.msecnd.netlicensing.mp.microsoft.comaz725175.vo.msecnd.netazsc-euw.config.skype.comuci.cdn.office.netb.config.skype.comlogin.msa.akadns6.netlogin.msa.msidentity.comtk2.plt.msn.comblob.weather.microsoft.com&"tile-service.weather.microsoft.com"manage.devcenter.microsoft.comglobal.sam.msn.comblobs.officehome.msocdn.com$ mrodevicemgr.officeapps.live.com51storecatalogrevocation.storequality.microsoft.comstaging.to-do.officeppe.com!feedback.search.microsoft.comclients.config.office.netco2.sls.microsoft.com!nav.smartscreen.microsoft.comneu.notifications.skype.comconfig.edge.skype.com#settings-win.data.microsoft.com$ next-services.apps.microsoft.comnleditor.osi.office.netconfig.teams.microsoft.comevents.data.microsoft.comodc.officeapps.live.comsettings.data.microsoft.com!service.weather.microsoft.comcontinuum.dds.microsoft.coms2s.config.skype.comwscont1.apps.microsoft.comcs.dds.microsoft.com"roaming-eu.officeapps.live.comroaming.officeapps.live.com register.cdpcs.microsoft.com:6reactiveassistanceinstance.cognitiveservices.azure.compurchase.mp.microsoft.compti.store.microsoft.comdevice.auth.xboxlive.com"dmd.metaservices.microsoft.com1-onedriveclucprodbn20004.blob.core.windows.net1-onedriveclucprodbn20007.blob.core.windows.net1-onedriveclucprodbn20014.blob.core.windows.net1-onedriveclucprodbn20016.blob.core.windows.net1-onedriveclucprodbn20017.blob.core.windows.net1-onedriveclucprodbn20001.blob.core.windows.net1-onedriveclucprodbn20019.blob.core.windows.net1-onedriveclucprodbn20020.blob.core.windows.net1-onedriveclucprodbn20021.blob.core.windows.net1-onedriveclucprodbn20022.blob.core.windows.net1-onedriveclucprodbn20023.blob.core.windows.net1-onedriveclucprodbn20024.blob.core.windows.net1-onedriveclucprodbn20025.blob.core.windows.net1-onedriveclucprodbn20026.blob.core.windows.net1-onedriveclucprodbn20027.blob.core.windows.net1-onedriveclucprodbn20028.blob.core.windows.net1-onedriveclucprodbn20029.blob.core.windows.net1-onedriveclucprodbn20030.blob.core.windows.net1-onedriveclucprodbn20036.blob.core.windows.net1-onedriveclucprodbn20037.blob.core.windows.net1-onedriveclucprodbn20038.blob.core.windows.net1-onedriveclucprodbn20039.blob.core.windows.net1-onedriveclucprodbn20040.blob.core.windows.net1-onedriveclucprodbn20041.blob.core.windows.net1-onedriveclucprodbn20042.blob.core.windows.net1-onedriveclucprodbn20043.blob.core.windows.net1-onedriveclucprodbn20044.blob.core.windows.net1-onedriveclucprodbn20045.blob.core.windows.net1-onedriveclucprodbn20046.blob.core.windows.net1-onedriveclucprodbn20047.blob.core.windows.net1-onedriveclucprodbn20048.blob.core.windows.net1-onedriveclucprodbn20049.blob.core.windows.net1-onedriveclucprodbn20050.blob.core.windows.net1-onedriveclucproddm20001.blob.core.windows.net1-onedriveclucproddm20002.blob.core.windows.net1-onedriveclucproddm20003.blob.core.windows.net1-onedriveclucproddm20004.blob.core.windows.net1-onedriveclucproddm20005.blob.core.windows.net1-onedriveclucproddm20006.blob.core.windows.net1-onedriveclucproddm20007.blob.core.windows.net1-onedriveclucproddm20008.blob.core.windows.net1-onedriveclucproddm20009.blob.core.windows.net1-onedriveclucprodbn20010.blob.core.windows.net1-onedriveclucproddm20011.blob.core.windows.net1-onedriveclucproddm20012.blob.core.windows.net1-onedriveclucproddm20013.blob.core.windows.net1-onedriveclucproddm20014.blob.core.windows.net1-onedriveclucproddm20015.blob.core.windows.net1-onedriveclucproddm20016.blob.core.windows.net1-onedriveclucproddm20017.blob.core.windows.net1-onedriveclucproddm20018.blob.core.windows.net1-onedriveclucproddm20019.blob.core.windows.net1-onedriveclucproddm20020.blob.core.windows.net1-onedriveclucproddm20021.blob.core.windows.net1-onedriveclucproddm20022.blob.core.windows.net1-onedriveclucproddm20023.blob.core.windows.net1-onedriveclucproddm20024.blob.core.windows.net1-onedriveclucproddm20025.blob.core.windows.net1-onedriveclucproddm20026.blob.core.windows.net1-onedriveclucproddm20027.blob.core.windows.net1-onedriveclucproddm20028.blob.core.windows.net1-onedriveclucproddm20029.blob.core.windows.net1-onedriveclucproddm20030.blob.core.windows.net1-onedriveclucproddm20036.blob.core.windows.net1-onedriveclucproddm20037.blob.core.windows.net1-onedriveclucproddm20038.blob.core.windows.net1-onedriveclucproddm20039.blob.core.windows.net1-onedriveclucproddm20040.blob.core.windows.net1-onedriveclubproddm20041.blob.core.windows.net1-onedriveclucproddm20042.blob.core.windows.net1-onedriveclucproddm20043.blob.core.windows.net1-onedriveclucproddm20044.blob.core.windows.net1-onedriveclucproddm20045.blob.core.windows.net1-onedriveclucproddm20046.blob.core.windows.net1-onedriveclucproddm20047.blob.core.windows.net1-onedriveclucproddm20048.blob.core.windows.net1-onedriveclucproddm20049.blob.core.windows.net1-onedriveclucproddm20050.blob.core.windows.net1-onedriveclubprodbn20051.blob.core.windows.net eu.vortex.data.microsoft.com!optanon.blob.core.windows.net1-onedriveclucprodbn20012.blob.core.windows.net1-onedriveclucprodbn20011.blob.core.windows.net#i-db3p-cor001.api.p001.1drv.com1-onedriveclucprodbn20009.blob.core.windows.net-)developerportalprod.blob.core.windows.net#pstrgqp01.blob.core.windows.net1-onedriveclucprodbn20008.blob.core.windows.net1-onedriveclucprodbn20013.blob.core.windows.net#i-db3p-cor002.api.p001.1drv.com*&decsitefinitycdn.blob.core.windows.netrcr.blob.core.windows.net1-onedriveclucprodbn20006.blob.core.windows.net1-onedriveclucprodbn20005.blob.core.windows.netris.api.iris.microsoft.com"i-ch1-cor002.api.p001.1drv.com1-onedriveclucprodbn20003.blob.core.windows.net1-onedriveclucprodbn20002.blob.core.windows.net#i-db3p-cor003.api.p001.1drv.com s.gateway.messenger.live.com1-onedriveclucprodbn20018.blob.core.windows.net)%officehomeblobs.blob.core.windows.net)%officecdn.microsoft.com.edgesuite.net#server6.pipe.aria.microsoft.com#server7.pipe.aria.microsoft.comeurope.cp.wd.microsoft.comexo.nel.measure.office.netne-we.cp.wd.microsoft.comne.cp.wd.microsoft.com"mucp.api.account.microsoft.com"msportal.blob.core.windows.net'#client-s.gateway.messenger.live.com"choice.microsoft.com.nsatc.net ch1-cor002.api.p001.1drv.com ch1-cor001.api.p001.1drv.com#finance.services.appex.bing.com#i-db3p-cor004.api.p001.1drv.comstatics.teams.cdn.live.net statics.teams.cdn.office.netbrowser.events.data.msn.com!bn3p-cor001.api.p001.1drv.com!bn2b-cor004.api.p001.1drv.com$ foodanddrink.tile.appex.bing.com$ storeedgefd.dsx.mp.microsoft.com!storesdk.dsx.mp.microsoft.com$ studytree2.blob.core.windows.net!bn2b-cor003.api.p001.1drv.com!bn2b-cor002.api.p001.1drv.com!bn2b-cor001.api.p001.1drv.com#i-db3p-cor005.api.p001.1drv.com"i-sn2-cor001.api.p001.1drv.com%!metadata.templates.cdn.office.nettfl.nel.measure.office.net*&thestreamstaging.blob.core.windows.net+'hubstordev3sstor1.blob.core.windows.net#i-am3p-cor001.api.p001.1drv.com#i-am3p-cor002.api.p001.1drv.com#i-am3p-cor003.api.p001.1drv.com.*azpglspamprwduateus2.blob.core.windows.net#i-am3p-cor004.api.p001.1drv.com#i-am3p-cor005.api.p001.1drv.com&"licensingphone.md.mp.microsoft.comkiwi.blob.core.windows.net#i-bl6p-cor001.api.p001.1drv.com#i-bl6p-cor002.api.p001.1drv.com"isgemail.blob.core.windows.netversion.hybrid.api.here.com!videomd.blob.core.windows.net#i-bn3p-cor001.api.p001.1drv.com#i-bn3p-cor090.api.p001.1drv.com&"w.apprep.smartscreen.microsoft.com#i-by3p-cor001.api.p001.1drv.com.*automatedirstrprdeus.blob.core.windows.net)%assuritystorage.blob.core.windows.net#i-by3p-cor002.api.p001.1drv.comarc.msn.com.nsatc.net"i-ch1-cor001.api.p001.1drv.comwpcdn.blob.core.windows.net$ i1.services.social.microsoft.com"i-sn2-cor002.api.p001.1drv.com#i-sn3p-cor002.api.p001.1drv.com#i-sn3p-cor001.api.p001.1drv.com+'wscont.apps.microsoft.com.edgesuite.net$ t0.ssl.ak.tiles.virtualearth.net cdn.content.prod.cms.msn.com#query.prod.cms.rt.microsoft.com-)dmd.metaservices.microsoft.com.akadns.net,(t0.ssl.ak.dynamic.tiles.virtualearth.net.*cy2.settings.data.microsoft.com.akadns.net
+^
+BITAUTObitauto.combitautoimg.comcheyisou.com
yiche.com
yccdn.com
+C
+BOOKINGbooking.combstatic.com
+booking.cn
+cn
+
+MUWAI
muwai.com
+
+DROPBOX&"paper-attachments.s3.amazonaws.com db.ttdropbox-dns.comdropbox.comdropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comgetdropbox.com
+
+VOANEWSamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.combbg.govdandalinvoa.comdarivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com
insidevoa.com
pashtovoa.compersagg.comradiyoyacuvoa.comurduvoa.comvoa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com
voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.comvoahausa.comvoaindonesia.comvoakorea.comvoalingala.comvoandebele.comvoanews.com
+voanews.euvoanoticias.com
voanouvel.comvoaportugues.comvoashona.com
voasomali.comvoaswahili.comvoathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.comvoatour.comvoazimbabwe.comzeriamerikes.com
+
+ALIYUNalibabadns.com
+alicdn.comalicloudapi.comalidayu.com
+alidns.com
alikunlun.comaliyun-inc.comaliyun-iot-share.com
+aliyun.com
aliyuncdn.comcdngslb.comhichina.comica-alliance.orgkunlunaq.comkunlunar.comkunlunca.com
kunluncan.comkunlunea.com
kunlungem.comkunlungr.com
kunlunhuf.comkunlunle.comkunlunli.comkunlunno.comkunlunpi.comkunlunra.comkunlunsa.comkunlunsc.comkunlunsl.comkunlunso.comkunlunta.comkunlunvi.comkunlunwe.com
mxhichina.commyalicdn.comoss-cn-beijing.aliyuncs.comoss-cn-chengdu.aliyuncs.com!oss-cn-guangzhou.aliyuncs.com oss-cn-hangzhou.aliyuncs.comoss-cn-heyuan.aliyuncs.com!oss-cn-huhehaote.aliyuncs.comoss-cn-nanjing.aliyuncs.comoss-cn-qingdao.aliyuncs.com oss-cn-shanghai.aliyuncs.com oss-cn-shenzhen.aliyuncs.com"oss-cn-wulanchabu.aliyuncs.com#oss-cn-zhangjiakou.aliyuncs.com,oss-ap-northeast-1.aliyuncs.com
+!cn,oss-ap-northeast-2.aliyuncs.com
+!cn(oss-ap-south-1.aliyuncs.com
+!cn,oss-ap-southeast-1.aliyuncs.com
+!cn,oss-ap-southeast-2.aliyuncs.com
+!cn,oss-ap-southeast-3.aliyuncs.com
+!cn,oss-ap-southeast-5.aliyuncs.com
+!cn,oss-ap-southeast-6.aliyuncs.com
+!cn,oss-ap-southeast-7.aliyuncs.com
+!cn)oss-cn-hongkong.aliyuncs.com
+!cn*oss-eu-central-1.aliyuncs.com
+!cn'oss-eu-west-1.aliyuncs.com
+!cn'oss-me-east-1.aliyuncs.com
+!cn'oss-us-east-1.aliyuncs.com
+!cn'oss-us-west-1.aliyuncs.com
+!cn
+0
+COWTRANSFERc-t.workcowtransfer.com
+
+DMZJdmzj.com
+
+ INOREADER
inoreader.com
+
+OOKLA-SPEEDTEST($www.speedtest.net.cdn.cloudflare.net
cdnst.netcellmaps.comekahau.cloud
+ekahau.com
ookla.comooklaserver.netpingtest.netspeedtest.co
speedtest.netspeedtestcustom.comwebtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$
+ads
+T
+ PINDUODUO
+pddpic.com
pinduoduo.com
pinduoduo.net
yangkeduo.com
+
+STEEMITsteemit.com
+9
+ABCabc-studios.comabc.comedgedatg.com
+
+ADBLOCKgetadblock.com
+
+CANON canoncanon.lvcanon.atcanon-cmos-sensors.com
canon-cna.comcanonproprinters.comcanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.comcanon-me.comcanon-ois.qacanonfoundation.orgcanon.amcanon.uzcanon.azcanon.bacanon.becanon.bgcanon.cacanon.chcanon.uacanon.tjcanon.sk
canon.comcanon.czcanon.sicanon.secanon.rucanon.rscanon.rocanon.ptcanon.plcanon.fr
canon-cee.comcanon.nocanon.decanon.dkcanon.eecanon.escanon.ficanon.nlcanon.gecanon.grcanon.hrcanon.hucanon.iecanon.itcanon.kzcanon.ltcanon.luc-ij.comcanon.me
canon.netcanon.com.hkcanon.com.aucanon.com.mycanon.com.bycanon.com.mkcanon.com.trcanon.com.alcanon.com.mtcanon.com.cycanon.co.zacanon.co.ukcanon.co.ilcanon.com.twcanon-se.com.twcanon-ebm.com.hkcanon.cn
+cncanon.com.cn
+cn
+
+NETFLIXnetflix.com.edgesuite.netfast.com
+netflix.canetflix.comnetflix.netnetflixinvestor.comnetflixtechblog.comnflxext.comnflximg.comnflximg.netnflxsearch.net
+nflxso.net
nflxvideo.netnetflixdnstest0.comnetflixdnstest1.comnetflixdnstest2.comnetflixdnstest3.comnetflixdnstest4.comnetflixdnstest5.comnetflixdnstest6.comnetflixdnstest7.comnetflixdnstest8.comnetflixdnstest9.comnetflixdnstest10.com62(^|\.)apiproxy-device-prod-nlb-.+\.amazonaws\.com$73(^|\.)apiproxy-website-nlb-prod-.+\.amazonaws\.com$1-(^|\.)dualstack\.apiproxy-.+\.amazonaws\.com$40(^|\.)dualstack\.ichnaea-web-.+\.amazonaws\.com$
+*
+PAGECDNpagecdn.com
+pagecdn.io
+
+STARPLUSstarott.comstarplus.comstar.api.edge.bamgrid.com%!star.connections.edge.bamgrid.com!star.content.edge.bamgrid.com"star.playback.edge.bamgrid.com
+7
+VANCL
vancl.comvanclimg.com
vcimg.com
+B
+BCYbcy.net
+bcyimg.comlf-rc1.yhgfb-cn-static.com
+
+GOOGLE-REGISTRYcharlestonroadregistry.comcrr.comregistry.googleget.appget.devget.howget.newget.pageget.rsvphey.booiam.soynew.dayxn--p8j9a0d9c9a.xn--q9jyb4c
+$
+JAVCCjavcc.cc
javcc.com
+
+ MANMANBUY
manmanbuy.com
+
+
+PURIKONEJP%!prd-priconne-redive.akamaized.netpriconne-redive.jp"api-priconne-redive.cygames.jpomotenashi.cygames.jp
+
+QIHOO360
+360.cn360.com360.net
+360-jr.com360chou.com360daikuan.com360huzhubao.com
+360jie.com360jinrong.net
+360kan.com360kuai.com
360os.com360panyun.cn360qhcdn.com360safe.com
360shouji.com
360taojin.com360totalsecurity.com360tpcdn.com360tres.com360webcache.com360zqaq.comanquanke.comappjiagu.combaomitu.com
haoso.com
+haosou.com
+haosou.neti360mall.comludashi.comnicaifu.com
nzwgs.com
qhcdn.com
qhimg.comqhimgs0.comqhimgs1.comqhimgs2.comqhimgs3.comqhimgs4.comqhimgs5.comqhimgs6.com
qhmsg.com
qhres.com
+qhres2.comqhstatic.com
qihoo.com
qihoo.net
+qihuapi.cnqihucdn.comqiku.comqikucdn.com
+so.comsou.comurlqh.cnxiaoluyouxuan.comxiaoluzhidian.comxjietiao.com
+youhua.com
yunpan.cn75.team
+75team.com
haosou.com.cn fenxi.com
+adslianmeng.360.cn
+ads
+mediav.com
+adsmvad.com
+adsqhupdate.com
+adss.360.cn
+adss.so.360.cn
+adss.union.360.cn
+ads
+$
+SCMPscmp.com
+i-scmp.com
+r
+AVAXHOMEavxhm.se
avh.world
avxde.orgavxhm.isavxlive.icu
xsava.xyzzavat.pw
+
+BILIBILImanga.bilibili.com
bilicomic.combilicomics.com
+acg.tvacgvideo.comanimetamashi.cnanimetamashi.com
+anitama.cnanitama.net
+b23.tv
bigfun.cnbigfunapp.cn
bili22.cnbili2233.cn
bili23.cn
bili33.cnbiliapi.combiliapi.netbilibili.ccbilibili.cnbilibili.combilibili.netbilibilipay.cnbilibilipay.combilicdn1.combilicdn2.combilicdn3.combilicdn4.combilicdn5.com
+biligo.combiliimg.combilivideo.cn
bilivideo.com
bilivideo.net
hdslb.com
hdslb.orgim9.commaoercdn.com
+mincdn.comyo9.combilibili.tv
+!cnbiliintl.com
+!cndreamcast.hk
+!cn- upos-hz-mirrorakam.akamaized.net
+!cnbilibiligame.cn
+cnbilibiligame.co
+cnbilibiligame.net
+cnbiligame.co
+cnbiligame.com
+cnbiligame.net
+cn
+.
+KONACHANkonachan.comkonachan.net
+u
+
+ATTWATCHTV
+att.tvatttvnow.comattwatchtv.comdirectv.com
dtvce.comnettyinternet.com
+j
+IMPERIALCOLLEGEimperial.insendi.comimperialbusiness.schoolic.ac.ukimperial.ac.uk
+W
+HAINANAIRLINEShainanairlines.comhnacargo.com
hnair.com10044.cn
+
+QIXIN
qixin.com
+
+AIRWICK
+airwick.fi
+airwick.pl
+airwick.ca
+airwick.ch
+airwick.clvipoo.es
+airwick.at
+airwick.us
+airwick.tvairwick.com
+airwick.sk
+airwick.fr
+airwick.se
+airwick.hr
+airwick.cz
+airwick.de
+airwick.dk
+airwick.esairwickarabia.com
+airwick.si
+airwick.ru
+airwick.hu
+airwick.ie
+airwick.it
+airwick.jpairwick.net
+airwick.nl
+airwick.no
+airwick.be
+airwick.pt
+airwick.roairwick.com.trairwick.com.mxairwick.com.brairwick.com.au
airwick.co.za
airwick.co.uk
airwick.co.nz
airwick.co.inairwick.com.cn
+cn
+M
+BOBOPORNboboporn.comboboporn.net
+bobovip.cc
sesez.com
+2
+
+CURSEFORGEcurseforge.comforgecdn.net
+9
+SHADOWSOCKSCOMshadowsocks.comshadowsocks.nl
+
+VOLVO volvo
volvogroup.sevolvotrucks.esindependentoperatorcn.com
road-crew.comudfs.comvfsco.atvfsco.bevfsco.bgvfsco.cavfsco.chvfsco.cl
vfsco.comvfsco.czvfsco.devfsco.dkvfsco.eeudtrucksmeena.comvfsco.esvfsco.fivfsco.frvfsco.hudynafleetonline.comvfsco.invfsco.itvfsco.jpvfsco.krvfsco.ltvfsco.lvvfsco.mxvfsco.nlvfsco.novfsco.pevfsco.plvfsco.rovfsco.ruvfsco.sevfsco.skvfsco.us
vgcareers.netvolvo-truck.nl
volvogroup.ru
volvo.comvolvo.sevolvobrandshop.com
volvobuses.at
volvobuses.be
volvobuses.ca
volvobuses.ch
volvobuses.covolvotruckrental.bevolvotruckcenter.sevolvotruckcenter.novolvotruckcenter.nlvolvotruckcenter.kzvolvotruckcenter.krvolvotruckcenter.itvolvobuses.comvolvotruckcenter.fivolvotruckcenter.esvolvotruckcenter.dkvolvotruckcenter.bevolvotrucks.uyvolvotrucks.tn
volvobuses.de
volvobuses.dk
volvobuses.es
volvobuses.fi
volvobuses.fr
volvobuses.hk
volvobuses.hu
volvobuses.in
volvobuses.it
volvobuses.jo
volvobuses.kr
volvobuses.ma
volvobuses.mx
volvobuses.my
volvobuses.no
volvobuses.om
volvobuses.ph
volvobuses.pk
volvobuses.pl
volvobuses.ru
volvobuses.se
volvobuses.sg
volvobuses.tn
volvobuses.usvolvoce.comvolvodefense.com
volvogroup.bevolvogroup.comvolvotrucks.tm
volvogroup.de
volvogroup.fr
volvogroup.jp
volvogroup.kr
volvogroup.mx
volvogroup.nl
volvogroup.pe
volvogroup.plvolvo.cavfsco.ievolvotrucks.skvolvomerchandise.comvolvopenta.comvolvotrucks.si
volvopenta.de
volvopenta.es
volvopenta.fr
volvopenta.it
volvopenta.nl
volvopenta.se
volvopenta.usvolvosaatio.fivolvospares.comvolvotrucks.aevolvotrucks.alvolvotrucks.amvolvotrucks.atvolvotrucks.azvolvotrucks.bavolvotrucks.bevolvotrucks.bgvolvotrucks.byvolvotrucks.chvolvotrucks.clvolvotrucks.sgvolvotrucks.sevolvotrucks.ruvolvotrucks.rsvolvotrucks.rovolvotrucks.qavolvotrucks.psvolvotrucks.plvolvotrucks.pkvolvotrucks.phvolvotrucks.comvolvotrucks.pevolvotrucks.novolvotrucks.nlvolvotrucks.netvolvotrucks.myvolvotrucks.mnvolvotrucks.mkvolvogrouptruckcenter.nlvolvotrucks.mdvolvotrucks.mavolvotrucks.czvolvotrucks.devolvotrucks.dkvolvotrucks.eeescandinavia-arg.comvolvotrucks.fivolvotrucks.frvolvotrucks.gevolvotrucks.grvolvotrucks.hkvolvotrucks.hrvolvotrucks.huvolvotrucks.idvolvotrucks.involvotrucks.itvolvotrucks.jpvolvotrucks.kgvolvotrucks.krvolvotrucks.kzvolvotrucks.ltvolvotrucks.lvvfsco.co.zavolvotrucks.com.kwvolvotrucks.co.ilvolvotrucks.com.ptvolvotrucks.com.covolvotrucks.com.brvolvotrucks.com.bnvolvotrucks.com.auvolvotrucks.com.arvolvotrucks.co.zwvolvotrucks.co.zmvolvotrucks.co.zavolvotrucks.co.nzvolvotrucks.co.ukvolvotrucks.co.navolvotrucks.co.mzvolvotrucks.co.bwvolvotrucks.com.uavolvotrucks.com.twvolvotrucks.com.trvolvopenta.com.brvolvogroup.com.brvolvobuses.com.twvolvobuses.com.ptvolvobuses.com.kwvolvobuses.com.brvolvobuses.com.auvolvobuses.com.arvolvobuses.co.zavolvobuses.co.ukvolvobuses.co.nzvfsco.com.trvfsco.com.brvfsco.com.auvolvotrucks.co.aovfsco.co.ukvfsco.com.cn
+cnvolvo.cn
+cnvolvo.com.cn
+cn
volvogroup.cn
+cnvolvogroup.com.cn
+cnvolvotrucks.com.cn
+cn
+
+
+XUEYUANJUNxueyuanjun.com
+'
+APIFOX
apifox.cn
+apifox.com
+&
+ BAIDU-ADSa.baidu.com
+ads
ad.duapps.com
+ads ad.player.baidu.com
+ads
adm.baidu.com
+adsadscdn.baidu.com
+adsadx.xiaodutv.com
+adsae.bdstatic.com
+ads
afd.baidu.com
+ads
als.baidu.com
+ads&api.mobula.sdk.duapps.com
+ads"api.tuisong.baidu.com
+adsappc.baidu.com
+adsb.bdstatic.com
+adsbaichuan.baidu.com
+adsbaidustatic.com
+adsbaidutv.baidu.com
+adsbanlv.baidu.com
+ads
bar.baidu.com
+adsbdplus.baidu.com
+adsbtlaunch.baidu.com
+adsc.baidu.com
+adscb.baidu.com
+adscbjs.baidu.com
+adscjhq.baidu.com
+adscleaner.baidu.com
+ads click.bes.baidu.com
+adsclick.qianqian.com
+adscm.baidu.com
+ads
cpro.baidu.cn
+adscpro.baidu.com
+ads!cpro.baidustatic.com
+ads!cpro.tieba.baidu.com
+ads"cpro.zhidao.baidu.com
+adscpro2.baidu.com
+ads"cpro2.baidustatic.com
+ads
cpu.baidu.com
+ads
crs.baidu.com
+adscstm.baidu.com
+adsdatax.baidu.com
+ads dd713.bj.bcebos.com
+ads dl.client.baidu.com
+adsdl.ops.baidu.com
+adsdl1sw.baidu.com
+adsdl2.bav.baidu.com
+adsdlsw.baidu.com
+adsdlsw.br.baidu.com
+adsdlswbr.baidu.com
+ads!dl-vip.bav.baidu.com
+ads(dl-vip.pcfaster.baidu.co.th
+ads#download.bav.baidu.com
+ads"download.sd.baidu.com
+adsdrmcmm.baidu.com
+adsduiwai.baidu.com
+ads dup.baidustatic.com
+ads
dxp.baidu.com
+ads
dzl.baidu.com
+adse.baidu.com
+adseclick.baidu.com
+adsecma.bdimg.com
+adsecmb.bdimg.com
+adsecmc.bdimg.com
+adseduad.baidu.com
+ads
eiv.baidu.com
+adsem.baidu.com
+adsentry.baidu.com
+ads
ers.baidu.com
+ads
f10.baidu.com
+ads#fc-feed.cdn.bcebos.com
+adsfclick.baidu.com
+adsfclog.baidu.com
+adsfeed.baidu.com
+adsg.baidu.com
+adsgimg.baidu.com
+adsgoutong.baidu.com
+adsgsp1.baidu.com
+adsguanjia.baidu.com
+ads"hao123union.baidu.com
+adshc.baidu.com
+adshm.baidu.com
+adshmma.baidu.com
+ads
hpd.baidu.com
+adsidm.bce.baidu.com
+adsidm-su.baidu.com
+adsiebar.baidu.com
+adsikcode.baidu.com
+adsimg.taotaosou.cn
+adsimg01.taotaosou.cn
+adsimgstat.baidu.com
+adsiwanad.baidu.com
+adsj.br.baidu.com
+adskstj.baidu.com
+ads log.music.baidu.com
+adslxbjs.baidu.com
+adsm1.baidu.com
+adsma.baidu.com
+adsmiao.baidu.com
+adsmobads.baidu.com
+ads"mobads-logs.baidu.com
+adsmpro.baidu.com
+adsmsite.baidu.com
+adsneirong.baidu.com
+adsnsclick.baidu.com
+ads#nsclickvideo.baidu.com
+adsopenrcv.baidu.com
+ads$pc.videoclick.baidu.com
+ads
pos.baidu.com
+adspups.bdimg.com
+ads%push.zhanzhang.baidu.com
+ads qianclick.baidu.com
+adsrelease.baidu.com
+adsres.mi.baidu.com
+ads"rigel.baidustatic.com
+ads#river.zhidao.baidu.com
+adsrj.baidu.com
+adsrplog.baidu.com
+adss.baidu.com
+ads!sa.tuisong.baidu.com
+adssclick.baidu.com
+adssestat.baidu.com
+adsshadu.baidu.com
+adsshare.baidu.com
+adssobar.baidu.com
+adssobartop.baidu.com
+adsspcode.baidu.com
+adsstat.v.baidu.com
+adssu.bdimg.com
+adssu.bdstatic.com
+adstk.baidu.com
+adstkweb.baidu.com
+ads"tob-cms.bj.bcebos.com
+adstongji.baidu.com
+adstoolbar.baidu.com
+adstracker.baidu.com
+adstuijian.baidu.com
+ads*uat1.bfsspadserver.8le8le.com
+ads#ubmcmm.baidustatic.com
+adsucstat.baidu.com
+adsulic.baidu.com
+ads ulog.imap.baidu.com
+adsunion.baidu.com
+ads!unionimage.baidu.com
+adsutility.baidu.com
+ads
utk.baidu.com
+ads videopush.baidu.com
+adsvv84.bj.bcebos.com
+adsw.gdown.baidu.com
+ads
w.x.baidu.com
+adswangmeng.baidu.com
+adsweishi.baidu.com
+ads$wenku-cms.bj.bcebos.com
+ads%wisepush.video.baidu.com
+adswkctj.baidu.com
+adswm.baidu.com
+adsznsv.baidu.com
+adszz.bdstatic.com
+adszzy1.quyaoya.com
+ads
+%
+
+CHINAPOWERchinapower.csis.org
+
+IFASTifastgp.comfundsupermart.com
ifastcorp.comifastgb.com
+fsmone.comifastnetwork.comifasttv.com
fsmone.com.hk
fsmone.com.myifastcapital.com.myifastfinancial.com.hkifastfinancial.co.inifastgp.com.hkifastps.com.cn
+cn
+
+BESTBUYbby.combbycastatic.cabbycloud.combbycontent.combbycontent.netbbyintl.com
bbystatic.com
bbyurl.usbestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com
+bestbuy.cabestbuy.combestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.cabestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com
bestbuyus.combesztbuy.combextbuy.combienvenuechezbestbuy.cacowboom.com
futureshop.cainitproducts.com
mybestbuy.commybestbuyclaims.commyrewardzone.commyrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.netgeeksquad.cageeksquad.cc
geeksquad.com
geeksquad.netgeeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org
gscanada.info
+gsccdn.com
gslink.usonlinegeeksquad.comrocketfishproducts.comdealtree.orgtechliquidators.combestbuy.com.mx
+bestbuy.cn
+cnbestbuy.com.cn
+cnmagnoliaav.com.cn
+cn
+
+CATEGORY-ENTERTAINMENTtmdb-image-prod.b-cdn.net&"audio-ak-spotify-com.akamaized.net'#audio4-ak-spotify-com.akamaized.net+'cdn-spotify-experiments.conductrics.com&"heads-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.netspotify.com.edgesuite.netspotify.map.fastly.netspotify.map.fastlylb.netabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.netgamer2-cds.cdn.hinet.netgamer-cds.cdn.hinet.netapi.viu.now.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.netapl-hamivideo.cdn.hinet.nethamivideo.hinet.net&"mobilelive-hamivideo.cdn.hinet.netpvr-hamivideo.cdn.hinet.netscc.ott.hinet.net"static-hamivideo.cdn.hinet.net&"tvcastlive-hamivideo.cdn.hinet.net#weblive-hamivideo.cdn.hinet.net,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.comubistatic3-a.akamaihd.neta.ppy.sh
assets.ppy.shc.ppy.sh
+osu.ppy.sh
m1.ppy.shlazer.ppy.sh
notify.ppy.sh
sentry.ppy.shspectator.ppy.sh%!prd-priconne-redive.akamaized.netf3b7q2p3.ssl.hwcdn.net steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteammobile.akamaized.netsteampipe-kr.akamaized.net#steampipe-partner.akamaized.netsteampipe.akamaized.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamvideo-a.akamaihd.netea.tt.omtrdc.neteaassets-a.akamaihd.net#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comlolstatic-a.akamaihd.netopgg-static.akamaized.net"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.netblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.netblizzcon-a.akamaihd.netblzmedia-a.akamaihd.netblznav.akamaized.net1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netespn.api.edge.bamgrid.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.neti.jeded.comlastfm.freetls.fastly.netnetflix.com.edgesuite.net!d1g1f25tn8m2e6.cloudfront.net!d1m7jfoe9zdc1j.cloudfront.net!d1mhjrowxxagfy.cloudfront.net!d1oca24q5dwo6d.cloudfront.net!d1w2poirtb3as9.cloudfront.net!d1xhnb4ptk05mw.cloudfront.net!d1ymi26ma8va5x.cloudfront.net!d2aba1wr3818hz.cloudfront.net!d2dylwb3shzel1.cloudfront.net!d2e2de1etea730.cloudfront.net!d2nvs31859zcd8.cloudfront.net!d2um2qdswy1tb0.cloudfront.net!d2vjef5jvl6bfs.cloudfront.net!d2xmjdvx03ij56.cloudfront.net!d36nr0u3xmc4mm.cloudfront.net!d3aqoihi2n8ty8.cloudfront.net!d3c27h4odz752x.cloudfront.net!d3vd9lfkzbru3h.cloudfront.netd6d4ismr40iw.cloudfront.net d6tizftlrpuof.cloudfront.net ddacn6pr5v0tl.cloudfront.net dgeft87wbj63p.cloudfront.net dqrpb9wgowsf5.cloudfront.net ds0h3roq6wcgc.cloudfront.net dykkng5hnh52u.cloudfront.net"hulu.playback.edge.bamgrid.comnicoyoutubeimdbxboxplaystationvimeocdn.comeasportsactive.comjoox.com
linetv.twlitv.tvmegaphone.fmmikanani.memoov.hk
+odysee.comomobi.cc
+oranum.comovercast.fmsyosetu.comthetvdb.com
+weverse.ioyande.rewwwhuluplus.comthehulubraintrust.comthemoviedb.orgtmdb.orgregisterhulu.comabow.jp
+anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.com
angelbeats.jpkamisama-maeda-lab.comvisual-arts.jplitbus-anime.comkoubaibu.jprewrite-anime.tvpayhulu.comoriginalhulu.comfireside.fm
+nicodic.jpnicomanga.jpniconico.comnicoseiga.jpnicovideo.jpnimg.jpsimg.jp
byspotify.compscdn.coscdn.cospoti.fispotify-everywhere.comspotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.comdeviantart.comdeviantart.netda-files.com
+iyf.tvdnvodcdn.me
ptzwx.comquanben-xiaoshuo.com
+quanben.iopluto.tvplutotv.netamebaowndme.comamebame.comabema-tv.comwinticket.jpabema.ioameba.jpabema.tv
amebaownd.com
adx.promo
ameblo.jpbucketeer.jpdokusho-ojikan.jphayabusa.devhayabusa.iohayabusa.media
+myhulu.commushymush.tvjoinmaidez.comhuluusa.com
+viu.tvviu.commox.moevol.moewebnovel.com
catchplay.com
+hulutv.comaiv-cdn.netamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.com
primevideo.ccprimevideo.comprimevideo.infoprimevideo.org
primevideo.tvbandcamp.com
+bcbits.com
chobit.ccci-en.jp
ci-en.net
+dlsite.com
dlsite.jpdlsitestudio.comnijiyome.jptriokini.comhuluteam.comamc.comamcn.comamcnetworks.comamcplus.comhulustream.comegta.com
castro.fmriotgames.tvubisoftconnect.com
fanatical.comfitgirl-repacks.sitegame-repack.sitehumblebundle.com
loverslab.comminecraft.wikimodrinth.com
nexusmods.com
+papermc.ioplanetminecraft.comprismlauncher.orgprotondb.comquiltmc.orgspeedrun.comsteamdb.infogenshinimpact.comhonkaiimpact3.comhonkaistarrail.com
hoyo.linkhoyolab.com
hoyoverse.comn0vadesktop.comzenlesszonezero.comubi.comubisoft.comriotpoints.com
uplay.com
+2k.com2kcoretech.online2kgames.comtake2games.complaystation.complaystation.net sonyentertainmentnetwork.compriconne-redive.jpvalvesoftware.com
+s.team
steam-api.comsteam-chat.comsteamcommunity.com
steamdeck.comsteamgames.complayartifact.comsteamstatic.comunderlords.comsteampowered.comsteamunlocked.netnikke-de.combluearchive.jpriotpin.com
+rsg.scrockstargames.compinkcore.netpinkcore.comforgecdn.netcurseforge.com
+mojang.comnikke-en.comnikke-fr.comnikke-jp.comnikke-kr.com
nikke-sea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com
chillingo.comcommandandconquer.comconquerwithcharacter.com
crysis.jpdawngate.comdawngatechronicles.comhulusports.comdodi-repacks.siteea-anz-press.com
+ea.comeaaccess.comeacashcard.com
eacodigos.comeamobile.comeanordic.com
+eaplay.comeasports.comeasports.jp
huluspain.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr
futpromos.com
futunited.comghostgames.comheroesofdragonage.com
hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org
maxis.commysimsracing.com
play4free.complayapex.compogo.compogobeta.com
+popcap.comprojectapex.com
pvzheroes.comspearhead.krspeedhunters.com
spore.comssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.comtiburon.com
+tnt-ea.comultimaforever.comunravel2.comunraveltwo.comvisceralgames.com
+yogify.comanthemgame.comanthemthegame.comapexlegends.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com
battlelog.combioware.combiowarestore.comeamythic.comeamythic.net
cncrivals.comcamelot-europe.comcamelotherald.comcamelotherald.netdaoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.comdice.se
dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comeafootballworld.comfifastreet.comfifastreet3.com
frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.comnfsworld.comteamneedforspeed.complantsvszombies2.com
+pvzgw2.comseaofsolitude.comsimcity-buildit.comsimcity.com
+skate2.comstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com
swjfo.com
swtor.com
swtor.net
+mysims.comthesims.comthesims3.comthesims4.comthesimssocial.com
titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com
+uo.comuoherald.comxdsummit.comeastore.comlordofultima.com
+origin.com
origin.tvminecraftshop.comminecraftservices.comillusion.jp
minecraft.net
+joyjoy.netpandanet-igs.comcallersbane.comleagueoflegends.comriot-games.comhistoryofdota.orginstituteofwar.orgmolesports.comrgpub.ioleagueoflegends.inforiot.comriot.netriotcdn.net
riotgames.comriotgames.inforiotgames.jp
riotgames.net
+dicela.netelderscrolls.comfabricmc.netrstatic.nethistoryofdota.com
supremacy.net championshipseriesleague.comlcsmerch.comleaguehighschool.comleagueoflegends.ca
supremacy.comhistoryofdota.netleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.comlolclub.orglolespor.comlolesports.com
lolfanart.net
+lolpcs.com
lolstatic.comlolusercontent.comconvrgencegame.compvp.net
+pvp.tvulol.complayvalorant.comriotforgegames.comruinedking.comdoom.combethsoft.combethesdagamestudios.com
+cygames.jpworldflipper.jpbethesda.net
+beth.games
+xbx.lv
+lowiro.com op.ggbattlebreakers.comeac-cdn.comeasy.aceasyanticheat.net
epicgames.com
epicgames.devfortnite.comparagon.complayparagon.comroborecall.comshadowcomplex.comspyjinx.comunrealengine.comunrealtournament.com
+garena.comgarena.live
garena.my
garena.ph
garena.sg
garena.tv
garena.tw
garena.vn
garenanow.comseagroup.comxboxstudios.comxboxservices.com
nexon.comnexon.ioxboxplayanywhere.com
+xboxone.eufireemblemawakening.com
wiipartyu.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.com100classicbooks.comkirbysepicyarn.commiitomo.commiiverse.comnentindo.netnintendo-europe-sales.comnintendo-europe.comnintendo.atnintendo.benintendo.chnintendo.comnintendo.denintendo.dknintendo.esnintendo.eu
xenoblade.com
wiivc.netnintendo.finintendo.frnintendo.itnintendo.netnintendo.nlnintendo.nonintendo.ptnintendo.runintendo.senintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.comdkr.compokemonmysterydungeon.com
+amiibo.comkirbysuperstarultra.com
+dialga.comgiratina.com
+kyurem.com
pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.compokemon-unitepgame.compokemon.compokemonbank.compokemonblackwhite.com
pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.com donkeykongcountryreturns.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.netxn--mts47c3w9b1qr.netsplatoon2tournament.comstarfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.commariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.comsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com
wii-u.com
+wiifit.comwiifitu.comfire-emblem-heroes.com
wiisports.comwiisportsresort.comwiiugamepad.comxboxone.com
+xboxone.coxboxlive.comxboxgamestudios.comxboxgamepass.com
+xboxab.comynoproject.netblizzard.comblizzardgearstore.comblz-contentstack.com
+battle.netdiablo3.comdiabloimmortal.comfiresidegatherings.complayhearthstone.comheroesofthestorm.complayoverwatch.com
starcraft.comstarcraft2.complaywarcraft3.comworldofwarcraft.comgog.comgog-statics.comdodi-repacks.downloadforzamotorsport.netforzaracingchampionship.comforzarc.comgamepass.comorithegame.comrenovacionxboxlive.comtellmewhygame.comxbox.coxbox.comxbox.euxbox.org
+xbox360.coxbox360.com
+xbox360.euxbox360.orghulurussia.com
+huluqa.comhulupurchase.comhulupremium.comhuluplus.comhulunetwork.comhulunet.com
huluitaly.comhuluinstantmessenger.com
+huluim.com
+hulugo.comhulugermany.comhulugans.comhulufree.comhulucall.comhuluasks.comhuluapp.com
+huluad.comhuluaction.comhulu.ushulu.tvhulu.jphulu.comhuloo.tvhuloo.cchu1u.comhoolu.tvkamisama-day.jpinternationalsaimoe.com
+dicela.com
hoolu.com
hooloo.tv
disco-api.comdiscoveryplus.comfreehulu.comthestationbymaker.com
+babble.com
disney.bgdisneymagicmomentsme.com
disney.chthemarvelexperiencetour.commarvelsuperwar.com marvelsuperheroseptember.commarvelspotlightplays.commarvelsdoubleagent.commarvelpinball.com
+disney.commarvelparty.netmarveldimensionofheroes.commarvel10thanniversary.com
+marvel.com
disney.cz
disney.de
disney.dk
disney.es
disney.fidisneymagicmoments.it
disney.gr
disney.hu
disney.id
disney.in
disney.io
disney.it
disney.my
disney.nl
disney.no
disney.ph
disney.pl
disney.pt
disney.ro
disney.ru
disney.se
disney.sghotstarext.comhotstar-labs.com20thcenturystudios.jpadventuresbydisney.comdisneymagicmoments.plbabyzone.combamgrid.comhotstar-cdn.net
+dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.nethotstar.comdisney-studio.comdisney-studio.net
watchespn.comdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyinternational.comdisneyinternationalhd.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.com
+espnqa.comespncdn.comespn.netdisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frespn.comdisneymagicmoments.gr
disney.fr
disney.be
disney.cadisneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com
disneynow.comdisneypeoplesurveys.comdtci.technologydisneyplus.comdtci.codisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneystreaming.comdisneysubscription.comdmed.technologydisneytvajobs.comdisneyworld-go.com
+dssott.comgo-disneyworldgo.com
+go.com
mickey.tvmoviesanywhere.comnomadlandmovie.chplaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.comstar-brasil.comstar-latam.comstarwars.com#starwarsgalacticstarcruiser.comstarwarskids.comstreamingdisney.netdisney.asiathisispolaris.comwatchdisneyfe.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.comngeo.comstarott.comstarplus.comedgedatg.comabc.comabc-studios.comfindyourlimits.comcallhulu.com
+112263.com
+youtube.dk
+youtube.de
+youtube.cz
+youtube.cr
+youtube.es
+youtube.fi
+youtube.fr
+youtube.ge
+youtube.gr
+youtube.gt
+youtube.hk
+youtube.hr
+youtube.hu
+youtube.ie
+youtube.in
+youtube.iq
+youtube.is
+youtube.it
+youtube.jo
+youtube.jp
+youtube.kr
+youtube.kz
+youtube.la
+youtube.lk
+youtube.lt
+youtube.lumax.comhbo.comhbogoasia.phforthethrone.comhbogoasia.sghboasia.com
maxgo.comhbogoasia.twhbogo.eu
hbogoasia.comhbogoasia.hkhbogoasia.iddiscomax.comcinemax.com
hbogo.com
+hbomax.com
hbomaxcdn.com
+hbonow.com
brightline.tv
+youtube.lv
+youtube.ly
+youtube.ma
+youtube.md
+youtube.me
+youtube.mk
9anime.cz
9anime.id
9anime.to
9anime.ws
+age.tv
agedm.orgagedm.tvagefans.com
+agemys.org
agedm.appanimedao-tv.comcrunchyroll.comfunimation.com
+vrv.cogogoanime.vcgogoanime.wiki
gogoanime3.co
gogotaku.info
gogo-load.comgogocdn.net
+hidive.comao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.netkingkongapp.com
+youtube.mn
dishworld.comslinginternational.com
sling.commovenetworks.com
+movetv.comsoundcloud.com
+sndcdn.com
+att.tvatttvnow.comattwatchtv.comdirectv.com
dtvce.comnettyinternet.comdazn-api.comdazn.com
+dazndn.com
+indazn.com
indaznlab.comfandango.commgo.commgo-images.comravm.tvroku.comrokutime.combiggggg.com
mudvod.tvnbys.tvnbys1.tvnbyy.tvnewpppp.comnivod.tv
nivodi.tv
+nivodz.com
+vod360.net
+pca.stpocketcasts.comgimy.ccgimy.cogimy.togimy.tvbooth.pm
fanbox.cc
pixiv.net
pixiv.orgpixiv.me
pximg.net
+youtube.mx
+dogatch.jpgorin.jpscreens-lab.jptver.jp
+youtube.my
boomerang.com
+wbdnbo.netdandanzan.cc
nunuyy.ccimageworks.commotionpictureser.complayshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.comwheelpop.com
+wwtbam.comyourfantasybeginsnow.com
+vhx.tv
+vhxqa1.com
+vhxqa2.com
+vhxqa3.com
+vhxqa4.com
+vhxqa6.comvimeo-staging.comvimeo-staging2.com
vimeo.comvimeo.frvimeobusiness.com
777tv.netvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com
goodreads.com
gr-assets.compbs.org
tidal.com
tidalhifi.com
wimpmusic.comsubscene.comwwe.comwwe9.comkktv.me
+youtube.ng
+youtube.ni
haiwaikan.comiole.tv
olehd.comolelive.com
+olevod.com
olevod.io
olevod.tvolevodtv.comolemovienews.comshowtimeanytime.comshowtime.com
+z5.app
+z5.comzee5.comzee5.inzee5.tvzeebioskop.com
zeetv.com
zeeuk.com
+youtube.nlbuzzsprout.comboxofficemojo.comimdb.comimdb.tomedia-imdb.comlast.fm
mytvsuper.comtvb.comfast.com
+netflix.canetflix.comnetflix.netnetflixinvestor.comnetflixtechblog.comnflxext.comnflximg.comnflximg.netnflxsearch.net
+nflxso.net
nflxvideo.netnetflixdnstest0.comnetflixdnstest1.comnetflixdnstest2.comnetflixdnstest3.comnetflixdnstest4.comnetflixdnstest5.comnetflixdnstest6.comnetflixdnstest7.comnetflixdnstest8.comnetflixdnstest9.comnetflixdnstest10.com
ext-twitch.tv
jtvnw.netlive-video.net
ttvnw.net
twitch.tv
twitchcdn.net
twitchsvc.netdailymotion.comdm-event.net
dmcdn.net
+kfs.io
kk.stream
kkbox.com
kktix.com
+youtube.no
+youtube.pa
manhuagui.comblubrry.com
+youtube.ru
+youtube.az
ytimg.comwithyoutube.comyoutu.beyoutube-nocookie.com yt.be
+youtube.ae
+youtube.al
+youtube.am
+youtube.at
+youtube.ro
+youtube.ba
+youtube.be
+youtube.bg
+youtube.bh
+youtube.bo
+youtube.by
+youtube.cayoutube.cat
+youtube.ch
+youtube.qa
+youtube.coyoutubemobilesupport.comyoutubekids.comyoutubego.inyoutubego.id
youtubego.comyoutubegaming.comyoutubefanfest.comyoutubeeducation.com
+youtube.vn
+youtube.uy
+youtube.ug
+youtube.ua
+youtube.tv
+youtube.tn
+youtube.svyoutube.soy
+youtube.rs
+youtube.sk
ggpht.comyoutube.com
+youtube.si
+youtube.sg
+youtube.se
+youtube.sa
+youtube.ee
+youtube.sngooglevideo.com
+youtube.cl
+youtube.pt
+youtube.pr
+youtube.pl
+youtube.pk
+youtube.ph
+youtube.peyoutube.com.phyoutube.com.nizeetv.co.uklitvfreepc.akamaized.netkktv.com.tw
+tver.co.jppixiv.co.jpkingkong.com.twvisualarts.gr.jp
product.co.jp
abematv.co.jpbahamut.akamaized.net$ hbomax-images.warnermediacdn.comhbogo.co.thbahamut.com.twgamer.com.twtra-ww000-cp.akamaized.net
dlsite.com.twnexoncdn.co.krriotgames.co.kr
disney.com.au
disney.com.hk
disney.com.twhsprepack.akamaized.net20thcenturystudios.com.audisneymagicmoments.co.ildisney.co.zadisney.co.ukdisney.co.ildisney.co.th20thcenturystudios.com.brdisneymagicmoments.co.ukdisneymagicmoments.co.zadisneymagicmoments.gen.trdisneyplus.bn5x.netdisney.co.krdisneytickets.co.uk"beautyandthebeastmusical.co.ukdisney.co.jp
youtube.co.zwyoutube.com.byyoutube.com.uyyoutube.com.uayoutube.com.ecyoutube.googleapis.comyoutube.com.tryoutube.com.tnyoutube.com.svyoutube.com.sgyoutube.com.sayoutube.com.royoutube.com.qayoutube.com.pyyoutube.com.ptyoutube.com.pkyoutube.com.doyoutube.com.peyoutube.com.payoutube.com.omdungeonkeeper.com.cnyoutube.com.ngyoutube.com.myyoutube.com.mxyoutube.com.mtyoutube.com.mkyoutube.com.lyyoutube.com.lvyoutube.com.lbyoutube.com.kwyoutube.com.joyoutube.com.jmyoutube.com.hryoutube.com.hnyoutube.com.hkyoutube.com.gtyoutube.com.gryoutube.com.ghyoutube.com.esyoutube.com.egyoutube.com.twyoutube.com.eekkbox.com.twyoutube.com.veyoutube.com.bryoutube.com.boyoutube.com.bhyoutube.com.bdyoutube.com.azyoutube.com.auyoutube.com.ar
youtube.co.za
youtube.co.ve
youtube.co.uk
youtube.co.ug
youtube.co.tz
youtube.co.th
youtube.co.nz
youtube.co.ma
youtube.co.kr
youtube.co.ke
youtube.co.jp($youtubeembeddedplayer.googleapis.com
youtube.co.in
youtube.co.ilyoutubego.co.idyoutubego.co.in
youtube.co.idyoutubego.com.br
youtube.co.hu
youtube.co.cryoutubei.googleapis.com
youtube.co.at
youtube.co.aenintendo.co.uknintendo.co.jp
+espn.co.ukdisneyturkiye.com.tr
disney.com.br*&content-ause1-ur-discovery1.uplynk.comnintendo.co.krnintendo.com.ptnexon.co.jpgarena.co.thgarena.co.idumamusume.akamaized.netnintendo.co.za
eakorea.co.kryoutube.com.coillusion.co.jp
cygames.co.jpnintendo.com.hkleagueoflegends.co.kr
lolshop.co.krsekai.colorfulpalette.orgworldflipper.akamaized.netbag.itunes.apple.comsteam.cdn.webra.rusteam.cdn.on.netsteam.apac.qtlglb.comamp-api.podcast.apple.combookeeper.itunes.apple.comwide-youtube.l.google.comyoutube-ui.l.google.com!disney-portal.my.onetrust.comdisney.my.sentry.iosteam.eca.qtlglb.comtheater-kktv.cdn.hinet.netsteam.naeu.qtlglb.comsteam.ru.qtlglb.comhbomaxdash.s.llnwi.nethbo.map.fastly.nethbo.com.edgesuite.nethbo.com.c.footprint.netsteam.cdn.slingshot.co.nz"edge.steam-dns.top.comcast.netsteam.cdn.orcon.net.nz$ disneyplus.com.ssl.sc.omtrdc.netrne5a6ae085b6c43020dea230eb0c0ecc33a188227507da97b8ecc05eb8beace6.us-east-1.prod.service.minerva.devices.a2z.com^ewcdn[0-9]{2}\.nowe\.com$*&^epicgames-download\d\.akamaized\.net$ ^hses[1-7]?\.akamaized\.net$($^[0-9]+vod-adaptive\.akamaized\.net$62(^|\.)apiproxy-device-prod-nlb-.+\.amazonaws\.com$73(^|\.)apiproxy-website-nlb-prod-.+\.amazonaws\.com$1-(^|\.)dualstack\.apiproxy-.+\.amazonaws\.com$40(^|\.)dualstack\.ichnaea-web-.+\.amazonaws\.com$amazonprimevideo.cn
+cn#amazonprimevideo.com.cn
+cn
mhystatic.com
+cn mhyurl.cn
+cn
+mihayo.com
+cnmihayou.com
+cn
+mihoyo.com
+cnmihoyocg.com
+cnmihoyogift.com
+cnmihoyomall.com
+cnmiyoushe.com
+cnbenghuai.com
+cnbh3.com
+cnbhsr.com
+cnthemisweeps.com
+cnyuanshen.com
+cn
juequling.com
+cn'^.+-mihayo\.akamaized\.net$
+cn)uplaypc-s-ubisoft.cdn.ubi.com
+cnsteamcontent.com
+cnsteamserver.net
+cn steamusercontent.com
+cncsgo.wmsj.cn
+cn
dota2.wmsj.cn
+cn
wmsjsteam.com
+cndl.steam.clngaa.com
+cndl.steam.ksyna.com
+cn st.dl.bscstorage.net
+cnst.dl.eccdnx.com
+cn!st.dl.pinyuncloud.com
+cn."steampipe.steamcontent.tnkjmec.com
+cn&steampowered.com.8686c.com
+cn%steamstatic.com.8686c.com
+cn xz.pphimalayanrt.com
+cnsteamchina.com
+cnbattlecare.net
+cngameitop.com
+cngameloop.com
+cngcloudcs.com
+cngcloudcstest.com
+cn gcloudcstestonly.com
+cngclouddolphin.com
+cn
gcloudsdk.com
+cn
+gdtimg.com
+cn
goto-game.com
+cngoto-game.mobi
+cngoto-game.net.cn
+cn
goto-game.org
+cnhappyhlddz.com
+cnhdyxgame.com
+cnhkgcloudcs.com
+cnihappystudio.cn
+cnihappystudio.com
+cnin.th
+cnludosuperstar.cn
+cn
ludoworld.net
+cn
mahjongai.net
+cn
mahjongcup.cn
+cnmahjongcup.com
+cnmahjongcup.net
+cnmetalrevolution.com
+cnmidasbuy.com
+cnnagcloudcs.com
+cnproximabeta.com
+cnpubghelper.com
+cn
+pubgno1.cn
+cnpubgtool.com
+cn
qqgameapp.com
+cnrmwxgame.com
+cn
skydweller.cn
+cnsyxlgame.com
+cntencent-gcloud.com
+cntencentstart.com
+cntexasholdemcup.cn
+cntexasholdemcup.com
+cntexasholdemcup.net
+cntimibase.com
+cnvideoxiaoyouxi.com
+cnwcbygame.com
+cnyxdmgame.com
+cnyximg.cn
+cnyxwsgame.com
+cnyzyxgame.com
+cnzcjbgame.com
+cnzhuoyuegame.com
+cn xn--owtw8cc49ajfl.cn
+cn roblox.cn
+cn
roblox.qq.com
+cnrobloxdev.cn
+cnnextstudios.com
+cnnextworkshop.net
+cn mszdld.cn
+cn
+mszdld.com
+cn
+mszdld.net
+cngamebonfire.com
+cn
gouhuo.qq.com
+cnffbuddy.com
+cngotolink.net
+cn
+gtgres.com
+cnrealcybertron.com
+cn
+wegame.com
+cn
wegame.com.cn
+cnwegameplus.com
+cnwerepository.com.cn
+cn
brawlstars.cn
+cnhaydaypop.cn
+cnlabycore.cn
+cnsccreator.cn
+cn
sccreators.cn
+cn
+scescdn.cn
+cnscid.cn
+cnscsentry.cn
+cn
supercell.com
+!cn!supercellcommunity.cn
+cnsupercellsupport.cn
+cncodm.com
+cnbcfmglobal.com
+cntcfmglobal.com
+cnanticheatexpert.com
+cn
+17roco.com
+cnroco.qq.com
+cn
kurogames.com
+cnaki-game.com
+cnleagueoflegends.cn
+cn
+lpl.com.cn
+cn6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$
+cn;/^epicgames-download\d-\d+\.file\.myqcloud\.com$
+cnlegendofzelda.cn
+cn legendofzelda.com.cn
+cnmiitomo.com.cn
+cnnintendolabo.cn
+cnnintendoswitch.cn
+cn!nintendoswitch.com.cn
+cnsupersmashbros.cn
+cn!supersmashbros.com.cn
+cn xn--mts47c3w9b1qr.cn
+cnmariokart.cn
+cnmariokart.com.cn
+cn!supermariobros.com.cn
+cn sl916.com
+cngog.qtlglb.com
+cn$gogalaxy.gog-statics.com
+cn'menu-static.gog-statics.com
+cn'productcard.gog-statics.com
+cn(static-login.gog-statics.com
+cn'www4-static.gog-statics.com
+cn."^cdn-akamai-.+\.gog-services\.com$
+cn(^gog-cdn-.+\.footprint\.net$
+cn, ^images(-\d)?\.gog-statics\.com$
+cnxboxlive.cn
+cnbilibiligame.cn
+cnbilibiligame.co
+cnbilibiligame.net
+cnbiligame.co
+cnbiligame.com
+cnbiligame.net
+cnbluearchive-cn.com
+cn
mhystatic.com
+cn mhyurl.cn
+cn
+mihayo.com
+cnmihayou.com
+cn
+mihoyo.com
+cnmihoyocg.com
+cnmihoyogift.com
+cnmihoyomall.com
+cnmiyoushe.com
+cnbenghuai.com
+cnbh3.com
+cnbhsr.com
+cnthemisweeps.com
+cnyuanshen.com
+cn
juequling.com
+cn'^.+-mihayo\.akamaized\.net$
+cn
ads-pixiv.net
+adsbyteoversea.com
+!cn
+muscdn.com
+!cn
+musical.ly
+!cntik-tokapi.com
+!cn
+tiktok.com
+!cntiktokcdn-us.com
+!cn
tiktokcdn.com
+!cntiktokd.net
+!cntiktokd.org
+!cntiktokv.com
+!cn
+tiktokv.us
+!cn
+tiktokw.us
+!cn
ttwstatic.com
+!cn,p16-tiktokcdn-com.akamaized.net
+!cnggpht.cn
+cn
+L
+F-DROIDf-dro1d.orgf-droid.comf-droid.org
+fdroid.org
+
+SONYsonyplaystationsonybuilding.jpmotionpictureser.com sonyentertainmentnetwork.comsony-semicon.comginzasonypark.jpsony-africa.com
sony-asia.comsony-europe.complaystation.netsony-latin.comsony-mea.comsony-olympus-medical.comsony-promotion.eusony.atsony.basony.besony.bgsony.bizsony.casony.chsony.clplaystation.comyourfantasybeginsnow.com
+wwtbam.comsony.eswheelpop.com#sonypicturestelevisiongames.comsonypicturestelevision.comsonypicturesstudios.comsony.comsonypicturesmuseum.comsonypicturesanimation.comsonypictures.comsonyclassics.complayshowtv.comsony.euplayshow.iosony.roimageworks.com
sovec.net
+sonypcl.jpsonylatvija.comsonykigyo.jpsonyglobalsolutions.jpsonydna.comsonydesign.comnuro.jpsonybsc.comsony.uasony.sksony.sisony.sesony.czsony.desony.dksony.eesony.rusony.fisony.rssony.frsony.grsony.hrsony.husony.iesony.itsony.kzsony.ltsony.lusony.lvsony.netsony.nlsony.nosony.plsony.pt
+sony.co.uksony.com.do
+sony.co.jpsony.com.vnsony.com.twsony.com.trsony.com.svsonybo.co.jpsony.com.sgsony.com.phsony.com.pesony.com.pasony.com.nisony.com.mysony.com.mxsony.com.mksonyprotechnosupport.co.jpsonystoragemedia.co.jpsonytc.co.jpsony.com.hn
so-net.net.twsony.com.hksony.com.gtsony.com.ecsony.com.cosony.com.brsony.com.bosony.com.ausony.com.arso-net.ne.jp
+sony.co.th
+sony.co.nz
+sony.co.kr
+sony.co.in
+sony.co.idsonynetwork.co.jp
+sony.co.crsony-hes.co.jpsony-semicon.co.jp
+
+VIMvim.org
+
+AIQICHAaiqicha.baidu.com
+
+ANTUTU
+antutu.com
+i
+ARCHIVEOFOUROWNao3.orgarchiveofourown.orgarchiveofourown.comarchiveofourown.net
+
+ OPENX-ADS openx.net
+ads openxadexchange.com
+adsopenxcdn.net
+ads openxenterprise.com
+adsopenxmarket.asia
+ads
+
+GUCCI guccichimeforchange.org
gucci.comguccimuseo.comguccitimeless.comregiongold.comgucci.cn
+cn
+A
+ IMAGECURL
imagecurl.com
imagecurl.org
+imgcrl.org
+f
+OOKLA-SPEEDTEST-ADSOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$
+ads
+9
+MOGUJIEmogu.commogucdn.commogujie.com
+l
+XUEQIUaiganggu.comdanjuanfunds.com
+imedao.comsnowballsecurities.com
+xueqiu.com
+o
+ ANTHROPIC%!servd-anthropic-website.b-cdn.net
anthropic.com
claude.aiclaudeusercontent.com
+
+CATEGORY-IRirxn--mgba3a4f16axn--mgba3a4fraloxblog.comniniweblog.comrozblog.com
+neshan.orgvarzesh3.comsignalpardazgroup.comtgju.orgkarnameh.comkhodro45.com
saipacorp.comjobinja.comjobinjacdn.combeytoote.com
+setare.com
+tebyan.net
abrha.netafranet.comarvancloud.comarzex.iocafebazaar.orgdatisnetwork.comipnumberia.comiranserver.commihanwebhost.comp30download.comparsonline.comparspack.compicofile.com
pishgaman.netsarmayex.comsarzamindownload.comskyroom.onlinesmshooshmand.com
softgozar.com
yasdl.com
+zhaket.comagrieng.orgasriran.comeghtesadnews.com
+fararu.comhawzahnews.comiraneconomist.commehrnews.comparsine.com
+qodsna.com
+saat24.comsobhanehonline.comtasnimnews.comtejaratnews.com
7sobh.com
abrarnews.comdonya-e-eqtesad.comebtekarnews.comettelaat.comfinancialtribune.comiran-newspaper.comkhabarvarzeshi.comkhorasannews.comresalat-news.comtehrantimes.comcdnsnapptrip.com
snapp-box.com
snapp.cabsnapp.doctor
snapp.expresssnapp.ninja
+snapp.sitesnapp.supply
+snapp.taxi
+snapp.tech
snappcloud.io
snappfood.dev
snapproom.com
snapptrip.com
agri-bank.com
ansarbank.comblubank.com
+blogfa.comblogsky.comhibank24.comparsian-bank.comsb24.com
quera.orgasanpardakht.combehpardakht.com
mydigipay.comasanpardakht.netzarinpal.comweswap.digitalsanjesh.org
+sharif.edu
srttu.edu
digi-kala.comwebinarplus.onlineiranlms.org
+janebi.comsheypoor.com
torob.comdigikala.comdigikalabusiness.comdigikalajet.com
digistyle.comdivar.clouddivarcdn.comflightio.commrbilit.combimeonline.comdana-insurance.com
+dayins.com
bimehasia.com
bimeh.comnovininsurance.commellatinsurance.comsinainsurance.comtoplearn.comcinematicket.orgtelewebion.com
+aparat.comaparatkids.comaparatsport.com
+filimo.com
filimo.schoolbale.ai
eitaa.com
+gap.imgaplication.comniniban.comninisite.comvirasty.commellatbroker.comok-ex.iotalarebourse.comabanbroker.combahmanbroker.combkisecurities.com
bt-broker.comdanabroker.com
+emofid.commofidonline.cometminansahm.comhafezbourse.comirfarabi.com
bmibourse.combourseiness.comsdbhouse.comnovinbourse.comoibroker.comomidsahm.comsaderatbourse.comsahandbroker.comsamanbourse.com
arman-ati.comsepahbourse.com
tadbirgar.comabantether.com
+bit24.cashexir.iofarhad-exchange.comjibitex.commaskanbourse.comompfinex.comramzinex.comtabdeal.orgtetherland.comfaradars.org
+
+HULU"hulu.playback.edge.bamgrid.com
+112263.comcallhulu.comfindyourlimits.comfreehulu.com
hooloo.tv
hoolu.comhoolu.tvhu1u.comhuloo.cchuloo.tvhulu.comhulu.jphulu.tvhulu.ushuluaction.com
+huluad.comhuluapp.comhuluasks.comhulucall.comhulufree.comhulugans.comhulugermany.com
+hulugo.com
+huluim.comhuluinstantmessenger.com
huluitaly.comhulunet.comhulunetwork.comhuluplus.comhulupremium.comhulupurchase.com
+huluqa.comhulurussia.com
huluspain.comhulusports.comhulustream.comhuluteam.com
+hulutv.comhuluusa.comjoinmaidez.commushymush.tv
+myhulu.comoriginalhulu.compayhulu.comregisterhulu.comthehulubraintrust.comwwwhuluplus.com
+
+PIXHOST
+pixhost.to
+m
+SEASUNseasungames.comxishanju.comxoyo.comxoyocdn.comcbjq.comtestplus.cn
+
+OLEVOD
haiwaikan.comiole.tv
olehd.comolelive.com
+olevod.com
olevod.io
olevod.tvolevodtv.comolemovienews.com
+
+SSPAI
sspai.com
+
+TWITCH!d1g1f25tn8m2e6.cloudfront.net!d1m7jfoe9zdc1j.cloudfront.net!d1mhjrowxxagfy.cloudfront.net!d1oca24q5dwo6d.cloudfront.net!d1w2poirtb3as9.cloudfront.net!d1xhnb4ptk05mw.cloudfront.net!d1ymi26ma8va5x.cloudfront.net!d2aba1wr3818hz.cloudfront.net!d2dylwb3shzel1.cloudfront.net!d2e2de1etea730.cloudfront.net!d2nvs31859zcd8.cloudfront.net!d2um2qdswy1tb0.cloudfront.net!d2vjef5jvl6bfs.cloudfront.net!d2xmjdvx03ij56.cloudfront.net!d36nr0u3xmc4mm.cloudfront.net!d3aqoihi2n8ty8.cloudfront.net!d3c27h4odz752x.cloudfront.net!d3vd9lfkzbru3h.cloudfront.netd6d4ismr40iw.cloudfront.net d6tizftlrpuof.cloudfront.net ddacn6pr5v0tl.cloudfront.net dgeft87wbj63p.cloudfront.net dqrpb9wgowsf5.cloudfront.net ds0h3roq6wcgc.cloudfront.net dykkng5hnh52u.cloudfront.net
ext-twitch.tv
jtvnw.netlive-video.net
ttvnw.net
twitch.tv
twitchcdn.net
twitchsvc.net
+
+YINXIANGyinxiang.com
+
+CATEGORY-SOCIAL-MEDIA-IRbale.ai
eitaa.comeitaa.ir
+gap.imgaplication.com
mizito.irniniban.comninisite.com
rubika.irsplus.irvirasty.com
+
+ EASTMONEY 18.cn
dfcfw.com
eastmoney.comeastmoneyfutures.com1234567.com.cn
18.com.cnguba.com.cnemsec.hk
+!cn
+)
+EASYLISTeasylist.tolanik.us
+
+GAMERSKYgamersky.com
+*
+HKOPENTVhkopentv.comfantv.hk
+
+CONNECTIVITY-CHECKconnect.rom.miui.commsftconnecttest.commsftncsi.comping.archlinux.orgcaptive.apple.com!connectivitycheck.gstatic.comcp.cloudflare.comnetwork-test.debian.orgdetectportal.firefox.comnetworkcheck.kde.org
++
+COWLEVELcowlevel.net
cdncl.net
+b
+
+EMOJIPEDIAemojipedia.orgworldemojiawards.comworldemojiday.comxn--yt8h.la
+
+CATEGORY-CONTAINER
+azurecr.io
docker.ioecr.aws
+gcr.ioghcr.ioquay.iomcr.microsoft.comregistry.gitlab.comregistry.k8s.io)%.+\.dkr\.ecr\.[^\.]+\.amazonaws\.com$
+'
+ WTEAM-ADS
ads.wteam.xyz
+ads
+6
+ RUBYCHINAruby-china.orgrubyconfchina.org
+K
+BJYOUTHbjyouth.netsqqnh.cn
sqqnh.orgbjyouth.gov.cn
+
+FIREBASEfirebase.google.comfirebase.googleapis.com#firebaseappcheck.googleapis.com,(firebasedynamiclinks-ipv4.googleapis.com,(firebasedynamiclinks-ipv6.googleapis.com'#firebasedynamiclinks.googleapis.com)%firebaseinappmessaging.googleapis.com($firebaseinstallations.googleapis.com%!firebaselogging-pa.googleapis.com"firebaselogging.googleapis.com+'firebaseperusertopics-pa.googleapis.com'#firebaseremoteconfig.googleapis.comfirebase.comfirebase.iofirebaseapp.comfirebaseio.com-!firebase-settings.crashlytics.com
+cn
+
+ INTEL-DEV
+01.orghyperscan.iointellinuxgraphics.comintellinuxgraphics.net
+oneapi.comopenvinotoolkit.orgsnap-telemetry.io
+acpica.comclearlinux.org
+ospray.net
+ospray.org
+Տ
+CATEGORY-ECOMMERCE-)ebay-25-assets.s3-us-west-1.amazonaws.comecapi-pchome.cdn.hinet.netpchomeonline.com.twapi-p.videomarket.jpwalmart gucci
+targetnikenike-usa.com
nikeelite.comappsonebay.net
+asebay.com
+baazee.com
+bidbay.combidorbuyindia.com
billpoint.combillpoint.infobillpoint.tvbillpoint.usbillpointnewzealand.comblogebay.combookclubcorner.combuiltfromebay.combuyitnow.combuyitnow.netbuyitnow.orgbuyitnow.tvbuyitnowshop.netcafr.cacarebay.comcargigileads.com
cebay.comcollective99.comcommerceos.comconnectcommerce.hkconnectcommerce.infoconnectcommerce.tvconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.comcyber-bay.info
cyber-bay.org
+dba.dkdealbay.comdealtime.com
didce.com
douya.orgdreamtoplay.com
e-bay.come-bay.it
e-bay.net21centuryaccess.comeachpay.net
ebahy.comebay-authenticate.netebay-confirm.comebay-course.comebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.comebay-inc.comebay-inc.netebay-inc.orgebay-online.comebay-sales.comebay-stories.comebay-us.comebay-vacation.comebay.atebay.beebay.caebay.chebay.comebay.deebay.esebay.frebayjob.com
wrenchead.comwhisolutions.comrenchead.com
+nexpart.tvnexpart.com
+nexcat.comthebayuk.compornhubapparel.comebay.inebay.itebay.jpebay.ltebay.mnebay.nlebay.orgebay.phebay.pkebayjewelry.comebay.sgebay.usebay.vn
+ebay25.com
+ebay68.com
ebaya.comebayads.comebayads.netebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comteraperk.com
terapeak.infoterapeak.hkterapeak.comterapeak.caebaybags.comebaybank.comebaybenefits.comebayboutique.com
+ebayca.com
+ebayca.orgebaycafe.comebaycar.comebaycareers.com
terapeack.comebaycdn.net
ebaychina.netebayclassifiedsgroup.comebayclassifieds.comebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.comebayclub.com
ebaycoins.comebaycom.comebaycommercenetwork.comebaycourse.com
ebayd.com
+ebayde.comebaydlassifieds.comebaydts.comebayedu.comebayeletro.comebayenterprise.comebayenterprise.infoebayenterprise.netebayenterprise.tvebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com
ebaygroup.com
ebayhabit.com
ebayheels.comebayhots.comebayimg.comebayinc.comebayinc.netebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.comeachpay.com4ebaytraders.comebay.ie
+ebayla.orgebaylisting.com
ebaylocal.netebaylocationsdevacances.comebaymag.comebaymainstreet.comebaymall.comebaymarketplace.net
ebaymotors.caebaymotors.comebaymotors.orgebaymotorsblog.comebaynow.comebaynyc.com
+ebayon.com
+ebayon.netebayoncampus.comebayopen.comebayopensource.comebayopensource.netebaypakistan.netebaypark.com
ebayparts.comebayprivacycenter.com
+ebayqq.com
ebayradio.comebayrtm.comebayseller.comebayshoesstore.comebayshop.comebayshop111.comebayshopping.orgebaysocial.com
ebaysocial.ruebaysoho.com
ebaysohos.comebaystatic.com
ebaystore.comebaystore77.com
ebaystyle.comebaysweden.com
ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com
+ebaytv.orgebayuae.netebayvakantiehuizen.com
ebayvalet.comebayvietnam.netebayworlds.com
ebayy.comedisebay.com
eebay.comepinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.comhalf.comhalf.tvhalfcanada.com
halfjapan.comhandbagsoutletebay.com
iebay.comirribay.comitsbetterwhenyouwinit.com
liketwice.comliveauction.com
milofetch.commusicbay.netmyconstructionworld.net
+myebay.com
nebay.netpaisapay.cc
paisapay.infopaisapay.tvpremobay.comprivatemarketplaces.netprivatemarketplaces.us
prostores.comrethink.netshopibay.netshoping.com
tearapeak.comsourcingforebay.netsourcingforebay.tvspeybay.comstoresense.com
+svpply.comtelebay.comtelesell.com
texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com
vendu.com
weareebay.comwatch-ebay.org
wwwdecide.comwwwebay.comwwwebay.netwwwwebay.comxindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com
xxbay.com
yibei.orggittigidiyor.netgittigidiyorsikayet.com
+gumtree.sg
jijiji.cakiji.cakijii.cakijij.ca
kijiji.ca
kijijiauto.cakijijiautos.cakijijiforbusiness.ca
+kijijii.ca
kijijiraps.cakijji.ca
+kijjiji.ca
automobile.fr
mobile.demobileinternational.com
+q10.jpqoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.netecimg.twpchomeec.tw
pcloud.twsuruga-ya.jp
suruga-ya.comminisothailand.com
miniso.my
miniso.ma
miniso.jp
miniso.ie
miniso.ge
miniso.ua
miniso.uzminisoindia.comminisojordan.comminisovietam.vn
miniso-au.com
miniso-bh.comminisokorea.commyminiso.com
miniso.co
miniso.ca
miniso.by
miniso-nz.com
miniso-np.com
miniso.pk
miniso.pe
+miniso.comregiongold.comebay.plw-mt.cowal-mart.com
+wal.cowalmart-content.comwalmart.comwalmart.pharmacywalmartimages.com
+wmt.co
shopee.io
shopee.ph
shopee.es
+shopee.com
shopee.frshopeemobile.com
shopee.vn
shopee.tw
shopee.sg
+shp.ee
shopee.in
shopee.id
shopee.clguccitimeless.comguccimuseo.com
gucci.comchimeforchange.orgreadmoo.com
adidas.itmomo.dmmomo5188.com
adidas.at
adidas.hubooking.combstatic.comdmm.comdmm-extension.comdmmapis.com
+dmmrex.com
adidas.nl
+ebayit.comnikegadgets.comnikeasia.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.comeasynike.com
+eenike.comfashionnike.comfinenike.comfoampositeshoes.comgoldnikeclub.com
+gonike.comhandbags-nike.comhightopnikes.com
+idnike.cominikesneakers.comjustdoit.uskicksnike1.comkidsnikeshoes.com
+mynike.comnike-air-max.comnike-dunksb.comnike-fr.comnike-org.comnike-uk.comnike-us.com
terrapeak.com
adcommerce.tv
adidas.benike.gynike.hknikefuelband.com
nike.shopnike.usnike.xn--hxt814enike0594.com
+nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.comair-nike-shoes.comnikeaustralia.comnikeaw77.com
nikeb.comnikebbn.comnikebetrue.comnikebetterworld.comnikebetterworld.infonikebetterworld.netnikebetterworld.orgnikebiz.infonikebuy.com
+nikeby.comnikecdn.comnikecompany.comnikeconfluence.comnikechosen.com
nikecloud.comnikeclub.com
nikecraft.comnikedawn.com
nikedunks.netnikedunksshoes.comnike.cinikefactorystore.comnikefind.comnikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org
+nikefr.comnikefrance.comnikefree.comnikefreeshoes.com
nike.host
airmax360.comxn--74q035i.xn--hxt814enikegolf.canikegrid.comnikehelp.comnikehightops.comnikehyperdunk.comnikeidshoes.comnikeinc.comnikeincchemistry.comnikeinstock.com
+nikeit.comnikeitalia.com
nikeitaly.com
+nikekd.comnikekid.comnikelink.comnikeliuxiang.com
nikelives.comnikelunarglide.comnikemarketing.comnikenews.com
+niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.comnikeplus.comnikeplus.org
nikepress.com
nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunner.comnikerunningshoes.com
+nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.comnikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com
nikestore.comnikestyles.comnikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.comnikeusa.comnikewear.com
nikey.comnikezoom.comnke6.comoutletnike.comrunnike.comrunningnike.comsale-nikeshoes.comstatic-nike.comswoo.sh
+swoosh.com
swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comnikegenealogy.com
adidas.se
adidas.plnike.comcraigslist.orgfarfetch-apps.comfarfetch-contents.comfarfetch.comfarfetch.net
fflnk.nethomedepot-static.com
homedepot.com
redino.tw
+target.comtargetimg1.comwish.combby.combbycastatic.cabbycloud.combbycontent.combbycontent.netbbyintl.com
bbystatic.com
bbyurl.usbestbhy.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com
+bestbuy.cabestbuy.combestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.cabestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com
bestbuyus.combesztbuy.combextbuy.combienvenuechezbestbuy.cacowboom.com
futureshop.cainitproducts.com
mybestbuy.commybestbuyclaims.commyrewardzone.commyrz.compacifickitchenandhome.comtiendabestbuy.comunbrandedproducts.comwelcometobestbuy.cawolfatbestbuy.comwolfatbestbuy.netwww-bestbuystores.comgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.netgeeksquad.cageeksquad.cc
geeksquad.com
geeksquad.netgeeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.org
gscanada.info
+gsccdn.com
gslink.usonlinegeeksquad.comrocketfishproducts.comdealtree.orgtechliquidators.com
adidas.rucostco-static.com
+costco.comcostcobusinessdelivery.comcoupang.comcoupangcdn.com
+hm.comikea.maikea.mxikea.auikea.beikea.bgikea.bhikea.caikea.chikea.clingkacentres.com
ingka.dev
ingka.comikea.netikea.comikea.usikea.uaikea.skikea.siikea.sgikea.saikea.ruikea.rsikea.deikea.roikea.qaikea.ptikea.prikea.plikea.phikea.omikea.noikea.nlikea.myikea.atikea.aeikea.lvikea.czikea.krikea.jpikea.joikea.itikea.isikea.inikea.ieikea.ltikea.dkikea.huikea.doikea.eeikea.egikea.esikea.fiikea.frikea.grikea.hkikea.hr
+adidas.com
adidas.cz
adidas.dk
adidas.de
adidas.ch
adidas.ie
mujikorea.netmuji.usmuji.twmuji.netmuji.eumuji.com
+rebates.jp
rclon.com
+rakuten.twrakuten.com
+rakuten.carakuten-static.comr10s.jpr10s.comnordstrommedia.com
nordstrom.com
+ikea.co.deikea.com.kw
+ikea.co.th
+ikea.co.pl
+ikea.co.ph
+ikea.co.om
+ikea.co.kr
+ikea.co.jp
+ikea.co.il
+ikea.co.id
adidas.com.twikea.com.hk
+ikea.co.atikea.com.deikea.com.doikea.com.egikea.com.saikea.com.tw
+ikea.co.caikea.com.ua
adidas.com.saikea.com.mxikea.com.my
rakuten.co.jprakuten.com.tw
rakuten.ne.jpikea.com.om
shopee.com.brikea.com.prikea.com.ptikea.com.roikea.com.aumuji.com.hkikea.com.grikea.com.sgikea.com.cyikea.com.inikea.com.tradidas.co.inbestbuy.com.mxnike.com.hknike.com.brnikestore.com.au
dmm.co.jpmomoshop.com.twmomomall.com.twikea.com.pl
+ikea.co.ukikea.com.ruikea.com.lvadidas.co.ukbook.com.twbooks.com.tw
shopee.com.co
shopee.com.mx
shopee.com.myshopee.co.thshopee.co.idtoget.com.twtagapie.com.tw
rakuya.com.twpiapp.com.twpcstore.com.twpchomepay.com.twpchomeonline.com.tw
pchome.com.tw
+ebay.co.nz
+ebay.co.uk
+ebay.co.ve
+ebay.co.zaebay.com.arebay.com.auebay.com.myterapeak.com.hk
ebaycbt.co.krebay.com.mtebay.com.phsourcingforebay.com.cnebay.com.hkebayauthenticate.com.cnebay.com.ecebay.com.sgminiso.co.id
miniso.com.tr
miniso.com.py
miniso.com.pl
miniso.com.mx
miniso.com.grminisolife.co.za
miniso.com.esminiso.co.tzloveminiso.com.brrimg.com.twruten.com.tw
+i69.com.twaxbdoll.com.tw
adcommerce.cn
+cn
appforebay.cn
+cnconnectcommerce.cn
+cn"connectcommerce.com.cn
+cn connectedcommerce.cn
+cncyber-bay.cn
+cncyber-bay.com.cn
+cnebay.cn
+cnebay.com.cn
+cnebay.net.cn
+cnebay.org.cn
+cn
+ebay.yn.cn
+cn
+ebay.zj.cn
+cnebayadvertising.cn
+cnebayclassifieds.cn
+cn"ebayclassifieds.com.cn
+cnebaydesc.cn
+cnebaydesc.com.cn
+cn
+ebaydns.cn
+cnebayenterprise.cn
+cn!ebayenterprise.com.cn
+cn
ebaymotors.cn
+cnebaymotors.com.cn
+cnebaypedia.cn
+cnebaypedia.com.cn
+cnebayshopping.cn
+cnebayshopping.com.cn
+cn
ebaystatic.cn
+cn
ebaystores.cn
+cnhalf.com.cn
+cnprostores.cn
+cnprostores.com.cn
+cnxn--7hvy28f.cn
+cnkijijidns.cn
+cnkijijidns.com.cn
+cn&mobileinternational.com.cn
+cnterapeak.cn
+cn
+walmart.cn
+cn shopee.cn
+cnshopeesz.com
+cn
+booking.cn
+cnad.games.dmm.com
+adsbluekai.com
+adsfout.jp
+adsgmossp-sp.jp
+adsi-mobile.co.jp
+adsim-apps.net
+adsimpact-ad.jp
+ads ladsp.com
+ads
microad.co.jp
+ads
+microad.jp
+ads socdm.com
+ads
just-do-it.cn
+cnnike-shox.cn
+cnnike.cn
+cnnikebetterworld.cn
+cn"nikebetterworld.com.cn
+cnnikechina.cn
+cnnikegolf.cn
+cn nikeid.cn
+cn
nikeid.com.cn
+cnnikeinc.com.cn
+cn
+nikelab.cn
+cnnikelab.com.cn
+cnnikeliuxiang.cn
+cnnikeliuxiang.com.cn
+cnnikemall.cn
+cnnikemall.com.cn
+cnnikerunclub.cn
+cnnikerunclub.com.cn
+cnnikerunning.com.cn
+cnnikestore.cn
+cnfarfetch.cn
+cnfarfetch.com.cn
+cnfarfetch.net.cn
+cn
+bestbuy.cn
+cnbestbuy.com.cn
+cnmagnoliaav.com.cn
+cn hm.com.cn
+cnikea.cn
+cningka-dt.cn
+cningka-internal.cn
+cningka-system.cn
+cnmuji.com.cn
+cn
adidas.com.cn
+cngucci.cn
+cn miniso.cn
+cn
minisohome.cn
+cn minsio.cn
+cn
+
+KINDLE
+kindle
kindle.it
kindle.in
+kindle.com
kindle.de
kindle.jp
kindle.frkindleproject.comkindleoasisnews.com
kindle.eskindleoasis.comkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindle.co.jpkindle.co.uk kindle.cn
+cnkindleoasis.cn
+cnkindleoasis.com.cn
+cn
+b
+ YAHOO-ADS
ads.yahoo.com
+adsgemini.yahoo.com
+ads
ysm.yahoo.com
+ads
++
+ MYTVSUPER
mytvsuper.comtvb.com
+3
+QCLOUD
tcloudedu.com
+tdnsx1.com
aitransfy.comapaas-zone-test.comapigwtencent.combkapigw.com
+bkapps.combkclouds.cc
bktencent.com
+build9s.iobyodonline.com
cdn-go.cn
cdndoctor.com
+cdngot.com
+cdntip.comcdntips.comcdntips.netcdnv1.cncdnv2.cncdnv3.cn cloud-industry-delivery.sitecloudbase.cn
cloudbase.netcloudidaas.com
cloudsite.vip
cncqcloud.comcomputeinit.comcoolsite.vip
dnsv1.comdothework.cnectencent.cnedgeonedy1.com
+essurl.comexmailgz.com
+fsphere.cngaapqcloud.comgitdrone.cn
gmedev.cn
govqcloud.com
+gsadds.comgtm.pub
hr-welink.comidcgcloudcs.com
iemiq.comigtm.pubisd.com
ispqcloud.comitopsdk.com
my-qcloud.commyelasticsearch.comdoh.pubmyqcloud.comonexmail.comopenapp.runovscdns.comovscdns.net
+pn1waq.comqcloud-edumall.com
+qcloud.com
qcloud.laqcloudapps.com
qcloudcdn.comqcloudcdntest.cnqcloudclass.comqcloudcos.cn
qcloudcos.com
dnsv5.com
+dnspod.org
dnsv3.comqclouder.com
qcloudgme.com
qcloudimg.comqcloudipv6.comqcloudmarket.comqcloudns.comqcloudsmartiot.comqcloudtcic.com
qcloudtiw.comqcloudtrip.comqcloudtt.com
qcloudwaf.comtcloudhw.net
+qeodns.com
+qeodns.netqqmra.cn
qqmra.comqyunapp.comserverlesscloud.cnsmtcdns.comsmtcdns.netspcdntip.comspcdntipbak.com
spcloudhw.com
spcloudhw.netsrmkp.cnstarlakelab.comtamaegis.comtapd.cntcdlive.com
+tcdnhw.com
tcdnkcbak.comtcdnlive.comtcdnlivebak1.comtcdnlivebak2.com
+tcdnos.com
+tcdnos.nettcdntip.comtcdnvod.comtcdnvodbak.comtcloudbase.comtcloudbase.nettcloudbaseapp.comtcloudbi.comtclouddrive.comtourismuser.cnacctdns.netqdwebim.comtcloudscdn.comtcloudscdn.nettcloudhw.com
+techo.chat
tefscloud.com
tefscloud.nettenant-zone-dev.comtencdns.nettencent-cloud.comtencent-cloud.nettencentapps.comtencentbyod.com
tencentcdb.cntencentcdb.com
dnsv4.comtencentclb.comtencentcloud-aiot.comtencentcloudapi.comtencentcloudclub.comtencentcloudcr.comtencentcloudmarket.comtencentcloudns.comtencentcloudsec.comtencentcloudses.com
tencentcos.cntencentcos.comdns.pub
tencentcs.comtencentdayu.com
tencentdb.comtencentdevices.comtencentdigitalassistant.comtencentdms.comtencenteiam.comtencentelasticsearch.com
tencentid.comtencentidentity.comtencentproxy.comtencentrio.comtencenttid.comtencentwemeet.clubtencentwepark.comtencentyun.comtendbcluster.com
+tendis.net
dnsapi.cntestmeet.cntestwaf.com
tgovcloud.com
+tidaas.comdnspod.mobitimmerse.comtlivecdn.comtourismshow.cnacctdns.comtsparkling.comtx-exhibition.com
+txbyod.com
+txidc.wang
+txtyxg.comtxyscdn.comtxyscdn.netuncnn.cn
vcloudstc.com
vcloudstc.net
vcloudvod.comvodtcbk.com
+vxo7tu.comwework-studio.com
+xqymuy.com
+yufuid.comdot.pub
+yufuid.net
yunjitele.com
+dnspod.com
dnspod.cn
dnsv2.com
+dnspod.net
+discuz.org
+discuz.netcomsenz.com
+ym.run
+um.run
+ma.runoracle-tencent.cnoracle-tencent.com
+m9.runoracle-tencent.net
+m6.run
+m1.runtencentcos.com.cnoracle-tencent.com.cn
dnspod.com.cndnsv1.com.cnectencent.com.cn
yufuid.com.cnqcloudcos.com.cnjrzk.net.cntimatrix.com.cntestjrzk.net.cnoracle-tencent.net.cntencentcdb.com.cn.+\.dnse[0-5]\.(cn|com)$'#.+\.tdnsv([1-9]|1[0-5])\.(com|net)$,(\.(.+-)?ap-beijing(-.+)?\.myqcloud\.com$,(\.(.+-)?ap-nanjing(-.+)?\.myqcloud\.com$-)\.(.+-)?ap-shanghai(-.+)?\.myqcloud\.com$.*\.(.+-)?ap-guangzhou(-.+)?\.myqcloud\.com$,(\.(.+-)?ap-chengdu(-.+)?\.myqcloud\.com$.*\.(.+-)?ap-chongqing(-.+)?\.myqcloud\.com$-)\.(.+-)?ap-shenzhen(-.+)?\.myqcloud\.com$:6\.(.+-)?ap-beijing(-.+)?\.tencentcos\.(cn|com(\.cn)?)$:6\.(.+-)?ap-nanjing(-.+)?\.tencentcos\.(cn|com(\.cn)?)$;7\.(.+-)?ap-shanghai(-.+)?\.tencentcos\.(cn|com(\.cn)?)$<8\.(.+-)?ap-guangzhou(-.+)?\.tencentcos\.(cn|com(\.cn)?)$:6\.(.+-)?ap-chengdu(-.+)?\.tencentcos\.(cn|com(\.cn)?)$<8\.(.+-)?ap-chongqing(-.+)?\.tencentcos\.(cn|com(\.cn)?)$;7\.(.+-)?ap-shenzhen(-.+)?\.tencentcos\.(cn|com(\.cn)?)$intltencentcos.com
+!cn%ap-hongkong.myqcloud.com
+!cn&ap-singapore.myqcloud.com
+!cn#ap-mumbai.myqcloud.com
+!cn$ap-jakarta.myqcloud.com
+!cn"ap-seoul.myqcloud.com
+!cn$ap-bangkok.myqcloud.com
+!cn"ap-tokyo.myqcloud.com
+!cn*na-siliconvalley.myqcloud.com
+!cn$na-ashburn.myqcloud.com
+!cn$na-toronto.myqcloud.com
+!cn%sa-saopaulo.myqcloud.com
+!cn&eu-frankfurt.myqcloud.com
+!cn#eu-moscow.myqcloud.com
+!cn:-.+\.ap-hongkong\.tencentcos\.(cn|com(\.cn)?)$
+!cn;..+\.ap-singapore\.tencentcos\.(cn|com(\.cn)?)$
+!cn8+.+\.ap-mumbai\.tencentcos\.(cn|com(\.cn)?)$
+!cn9,.+\.ap-jakarta\.tencentcos\.(cn|com(\.cn)?)$
+!cn7*.+\.ap-seoul\.tencentcos\.(cn|com(\.cn)?)$
+!cn9,.+\.ap-bangkok\.tencentcos\.(cn|com(\.cn)?)$
+!cn7*.+\.ap-tokyo\.tencentcos\.(cn|com(\.cn)?)$
+!cn?2.+\.na-siliconvalley\.tencentcos\.(cn|com(\.cn)?)$
+!cn9,.+\.na-ashburn\.tencentcos\.(cn|com(\.cn)?)$
+!cn9,.+\.na-toronto\.tencentcos\.(cn|com(\.cn)?)$
+!cn:-.+\.sa-saopaulo\.tencentcos\.(cn|com(\.cn)?)$
+!cn;..+\.eu-frankfurt\.tencentcos\.(cn|com(\.cn)?)$
+!cn8+.+\.eu-moscow\.tencentcos\.(cn|com(\.cn)?)$
+!cncoshk.myqcloud.com
+!cn cossgp.myqcloud.com
+!cncosca.myqcloud.com
+!cn cosger.myqcloud.com
+!cn!hk.file.myqcloud.com
+!cn"sgp.file.myqcloud.com
+!cn!ca.file.myqcloud.com
+!cn"ger.file.myqcloud.com
+!cn
++
+ TAPPX-ADSssp.api.tappx.com
+ads
+
+
+CRAIGSLISTcraigslist.org
+
+ENTRUSTentrust.netentrustdatacard.comaffirmtrust.comatos.net
+myatos.netcertificat2.comtrendmicro.com
+
+ HOYOVERSEgenshinimpact.comhonkaiimpact3.comhonkaistarrail.com
hoyo.linkhoyolab.com
hoyoverse.comn0vadesktop.comzenlesszonezero.com
+F
+
+TAGTIC-ADSg1.tagtic.cn
+adsxy-log.tagtic.cn
+ads
+;
+UBERuber-assets.comuber.comubereats.com
+&
+AMAZON
+amazon
xn--cckwcxetdxn--jlq480n2rgyamaxun
+zappos
+kindleimdbaws
+ss2.usawsedstart.comaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.plamaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com
amazon.ae
amazon.ca
+amazon.com
amazon.dewholeplanetfoundation.orgwholekidsfoundation.orgwholefoodsmarket.comwholefoods.comwholecitiesfoundation.orgwfm.com
primevideo.tv
+amazon.dev
amazon.es
amazon.fr
amazon.in
amazon.itamazon.jobs
amazon.jp
amazon.nl
+amazon.red
amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.orgamazonbusinessblog.comamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazonlaunchpad.com!amazonliterarypartnership.comamazonlumberyard.wang
amazonpay.comamazonpay.in
amazonsdi.comamazonstudiosguilds.comamazonvideodirect.com
amzn.asiaamzn.comamzn.to
amznl.comassociates-amazon.comgameon-masters.comgdansk-amazon.com
awsbraket.commedia-amazon.com
primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.deyamaxun.com
alexa.comaudible.comcreatespace.comamazontrust.comawstrust.comaboutamazon.esaboutamazon.deawsautoscaling.comelasticbeanstalk.comprimevideo.orgimages-amazon.comaboutamazon.euthinkboxsoftware.com
amazonaws.comamazonaws.info
amazonaws.net
amazonaws.orgamazonaws.tv
amazonses.comamazonworkdocs.comamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comacmvalidations.comamazonaws-china.comacmvalidationsaws.comawseducate.com
amazonaws.bizawseducate.netawseducate.orgawsglobalaccelerator.comawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com
awsstatic.comawsthinkbox.comawstrack.mecdkworkshop.comcloudfront.comcloudfront.netcontainersonaws.comawscommandlineinterface.comaesworkshops.comprimevideo.infoaboutamazon.comboxofficemojo.comimdb.comimdb.tomedia-imdb.coma2z.com
kindle.it
kindle.in
+kindle.com
kindle.de
kindle.jp
kindle.frkindleproject.comkindleoasisnews.com
kindle.eskindleoasis.comkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.usprimevideo.com
primevideo.ccaiv-cdn.netamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.comkindle.co.ukkindle.co.jpamazonaws.co.uk
amazon.com.tr
amazon.com.mx
amazon.com.br
amazon.com.auamazon.co.ukamazon.co.jpaboutamazon.com.auaboutamazon.co.ukwholefoodsmarket.co.uk&".+\.amzndns\.(co\.uk|com|net|org)$0,.+\.awsdns-[0-9][0-9]\.(co\.uk|com|net|org)$aboutamazon.cn
+cnalexafund.cn
+cnalexafund.com.cn
+cn amazon.cn
+cnamazonbusiness.cn
+cn!amazonbusiness.com.cn
+cnamazonchoice.cn
+cnamazonchoice.com.cn
+cnamazonchoices.cn
+cn amazonchoices.com.cn
+cnamazoninspire.cn
+cn amazoninspire.com.cn
+cnamazonlaunchpad.cn
+cn"amazonlaunchpad.com.cn
+cn amazonlending.com.cn
+cnamazonnow.cn
+cnamazonnow.com.cn
+cnassoc-amazon.cn
+cnprimeday.cn
+cnprimeday.com.cn
+cn
+yamaxun.cn
+cnz.cn
+cn+images-cn.ssl-images-amazon.com
+cn-!images-cn-8.ssl-images-amazon.com
+cn amazon-adsystem.com
+adsserving-sys.com
+ads
+a2z.org.cn
+cnamazonaws.cn
+cnamazonaws.com.cn
+cn$amazonwebservices.com.cn
+cnamazonworkdocs.cn
+cn!amazonworkdocs.com.cn
+cn"asfiovnxocqpcry.com.cn
+cn
aws-border.cn
+cn%aws-icp-domain-manager.cn
+cn
+awsapps.cn
+cnawsapps.com.cn
+cnawsstatic.cn
+cncloudfront-cn.net
+cncloudfront-test.cn
+cn
cloudfront.cn
+cnnwcdcloud.cn
+cnnwcdcloud.com.cn
+cn
+nwcddns.cn
+cnnwcdinfosec.cn
+cn
+route53.cn
+cnsagemaker.com.cn
+cn-!.+\.amzndns-cn\.(biz|cn|com|net)$
+cn8,.+\.awsdns-cn-[0-9][0-9]\.(biz|com|net|top)$
+cn, .+\.awsdns-cn-[0-9][a-e0-9]\.cn$
+cn kindle.cn
+cnkindleoasis.cn
+cnkindleoasis.com.cn
+cnamazonprimevideo.cn
+cn#amazonprimevideo.com.cn
+cn
+#
+EDXedx.orgedx-cdn.org
+
+HANYI0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.comhellofont.cnhellowebfont.comhanyi.com.cnfontstar.com.cn
+
+CATEGORY-AI-CNhailuoai.com
+liblib.art
+chatglm.cn
+zhipuai.cn
botvip.cntiangong.cn
+doubao.commarscode.cnbaichuan-ai.comrwkv.comxingyeai.commoonshot.cnrwkv.cnminimaxi.comxinghuo.xfyun.cnhunyuan.tencent.comtongyi.aliyun.comyiyan.baidu.comqianwen.aliyun.com
+
+TUMBLR
+tumblr.com
+
+THREADSthreads.net
+
+TWCAtwca.com.tw
+
+OK ok.ru
+
+PIXNETpimg.twpixanalytics.com
pixfs.net
pixnet.cc
+pixnet.net
+pixnet.pro
pixnet.tw
+pixplug.inpixinsight.com.tw
+
+SUPERSONIC-ADSsupersonic.com
+adssupersonicads.com
+ads
+ssacdn.com
+ads)supersonicads-a.akamaihd.net
+ads
+"
+MASTERCLASSmasterclass.com
+
+ YUANFUDAO
banmaaike.comxiaoyuankousuan.comybccode.com
yuanfudao.com
yuansouti.comyuantiku.com
+'
+FOX foxnewsplayer-a.akamaihd.netfoxfoxsoccerplus.net
fox5storm.comfox.com
+fox.tvfox10.tv
fox10news.comfox10phoenix.com
fox11.comfox13memphis.com
fox13news.com
fox23.comfox23maine.com
+fox247.com
fox247.tv
fox26.comfox26houston.comfox28media.com
fox29.comfox2detroit.comfox2news.com
fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com
fox42kptm.com
fox46.comfox46charlotte.com
fox47.comfox49.tvfox4news.comfox51tns.netfox5atlanta.comfoxsoccerplus.tv
+fox5ny.comfoxsoccershop.comfox6now.comfox7.comfox7austin.comfox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com
+foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.comfoxcincy.com
foxcincy.jobsfoxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com
foxcredit.com
foxcredit.orgfoxd.tv
+foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.comfoxdoua.comfoxentertainment.com
+foxest.com
+foxfaq.com
+foxfdm.comfoxfiles.com
+foxinc.com
foxkansas.com
foxla.comfoxla.tvfoxlexington.comfoxmediacloud.com
foxnation.comfoxnebraska.com
+foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com
+foxnews.ccfoxnews.comfoxnews.netfoxnews.org
+foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com
foxnewsgo.net
foxnewsgo.orgfoxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com
foxon.comfoxphiladelphia.comfoxplus.comfoxpoker.com
foxrad.io
foxredeem.comfoxrelease.comfoxrichmond.com
foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org
foxsoccer.netfoxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfox-corporation.com
+fox5dc.comfox-news.comfoxsportsflorida.comfoxsports-newyork.comfoxsports-world.comfoxsports.clfoxsports.co
foxsports.comfoxsports.gtfoxsports.info
foxsports.netfoxsports.pewogx.comwoflthenewsstation.comwofl.tvwhosthehost.comwhatthefox.comthegeorgiascene.comthefoxnation.comtheclasshroom.com
testonfox.comteenchoice.com
speedxtra.comspeedracegear.comfoxsports.svfoxsports.uyfoxsports2.comfoxsports-chicago.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com
foxsuper6.com
+foxtel.comspeedfantasybid.comspeeddreamride.comfoxtelevisionstations.com
foxtv.comfoxtvdvd.com
foxuv.comfoxweatherwatch.com
fssta.com
+fxn.ws
fxnetwork.comfxnetworks.combentobox.tvkicu.tvktvu.commyfoxsanfran.comafewmomentswith.com
+anidom.comcasoneexchange.comcoronavirusnow.com
+fse.tvgeraldoatlarge.comgooddaychicago.comjoeswall.comkilmeadeandfriends.commaskedsingerfox.com
+my13la.com
+my20dc.commy20houston.com
+my29tv.commy45.com
my9nj.commyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.commyfoxdc.commyfoxdetroit.commyfoxdfw.commyfoxhouston.commyfoxhurricane.commyfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.commyfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com
myfoxzone.commyq2.comnewsnowfox.comorlandohurricane.comparadisehotelquizfox.comq13.com
+q13fox.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealmilwaukeenow.com
rprimelab.comshopspeedtv.comsoccermatchpass.comfoxsports.com.gtfoxsports.com.mxfoxsports.com.vefoxsports.com.uyfoxsports.com.py
foxtel.com.aufoxsports.net.brfoxsports.com.pefoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.bofoxsports.com.arfoxsports.co.ve
+y
+GANNETTgannett-cdn.comgannett.comgannettdigital.comusatoday.comusatodaynetworkservice.com
+)
+GOPROXY
+goproxy.cn
+goproxy.io
+
+GOOGLE3/google-ohttp-relay-safebrowsing.fastly-edge.compublicca.googleapis.com#preprod-publicca.googleapis.comclients1.google.compki.google.comalt1-mtalk.google.comalt2-mtalk.google.comalt3-mtalk.google.comalt4-mtalk.google.comalt5-mtalk.google.comalt6-mtalk.google.comalt7-mtalk.google.comalt8-mtalk.google.commtalk-dev.google.commtalk-staging.google.commtalk.google.commtalk4.google.comfirebase.google.comfirebase.googleapis.com#firebaseappcheck.googleapis.com,(firebasedynamiclinks-ipv4.googleapis.com,(firebasedynamiclinks-ipv6.googleapis.com'#firebasedynamiclinks.googleapis.com)%firebaseinappmessaging.googleapis.com($firebaseinstallations.googleapis.com%!firebaselogging-pa.googleapis.com"firebaselogging.googleapis.com+'firebaseperusertopics-pa.googleapis.com'#firebaseremoteconfig.googleapis.com
ai.google.dev%!alkalicore-pa.clients6.google.com+'alkalimakersuite-pa.clients6.google.com
ai.google.dev%!alkalicore-pa.clients6.google.com+'alkalimakersuite-pa.clients6.google.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk!scholar.googleusercontent.comscholar.l.google.comand
+chromedclkgbizgle gmailgoogoog
+googlegugehangout nexusxn--flw351exn--qcka1pmcyoutubeprivacysandbox.commfg-inspector.com
google.am
google.as
google.at
google.az
google.ba
google.be
google.bf
google.bg
google.bi
google.bj
google.bs
google.bt
google.by
google.ca
+google.cat
google.cd
google.cf
google.cg
google.ch
google.ci
google.cl
google.cm
google.co
+google.com
google.cv
google.cz
google.de
google.djxn--p8j9a0d9c9a.xn--q9jyb4cnew.dayiam.soyhey.booget.rsvpget.pageget.newget.howget.devget.appcrr.comcharlestonroadregistry.com
+golang.org
+golang.net
+golang.com
godoc.org
+go.devgo-lang.orggo-lang.netgo-lang.compolymerproject.orgpolymer-project.orgkaggleusercontent.com
+kaggle.net
kaggle.io
+kaggle.comfastlane.toolsfastlane.cidartpad.devdartlang.orgdart.devblogger.comblogspot.mdblogspot.lublogspot.ltblogspot.liblogspot.fiblogspot.jpblogspot.itblogspot.isblogspot.inblogspot.ieblogspot.hublogspot.hrblogspot.hkblogspot.grblogspot.frblogspot.krblogspot.tdblogblog.comblogspot.czblogspot.cvblogspot.myblogspot.nlblogspot.noblogspot.peblogspot.ptblogspot.qablogspot.reblogspot.roblogspot.rsblogspot.rublogspot.seblogspot.sgblogspot.siblogspot.comblogspot.skblogspot.snblogspot.dkblogspot.twblogspot.deblogspot.ugblogspot.vnblogspot.clblogspot.chblogspot.cf
google.dk
google.dm
google.dz
google.ee
google.es
google.fi
google.fm
google.fr
google.ga
google.ge
google.gg
google.gl
google.gm
google.gr
google.gy
google.hn
google.hr
google.ht
google.hu
google.ie
google.im
google.iq
google.is
google.it
google.je
google.jo
google.kg
google.ki
google.kz
google.la
google.li
google.lk
google.lt
google.lu
google.lv
google.md
google.me
+revolv.com
google.mk
google.ml
google.mn
google.ms
google.mu
google.mv
google.mw
google.ne
google.nl
google.no
google.nr
google.nu
google.pl
google.pn
google.ps
google.pt
google.ro
google.rs
google.ru
google.rw
google.sc
google.se
google.sh
google.si
google.sk
google.sm
google.sn
google.so
google.sr
google.st
google.td
google.tg
google.tl
google.tm
google.tn
google.to
google.tt
google.vg
google.vu
google.ws0emm.com
1e100.net
1ucrs.com
+466453.comabc.xyzadgoogle.net
+admeld.comangulardart.org
+api.ai
+apigee.comappbridge.caappbridge.ioappbridge.itappspot.com
+apture.comarea120.com
+asp-cc.comautodraw.combandpage.combaselinestudy.combaselinestudy.orgbazel.buildbdn.devbeatthatquote.com
blink.orgbrocaproject.com
+brotli.org
bumpshare.com
+bumptop.cabumptop.combumptop.netbumptop.org
bumptunes.comcampuslondon.com certificate-transparency.org
+chrome.comchromebook.comchromecast.comchromeos.devchromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudproxy.appcloudrobotics.comcobrasearch.comcodespot.com
conscrypt.com
conscrypt.orgcookiechoices.org
coova.com
coova.net
coova.orgcrossmediapanel.com
cs4hs.comdartsearch.netdataliberation.org
debug.comdebugproject.comdevsitetest.howdialogflow.comdigitalassetlinks.orgdocs.newepisodic.comfeedburner.com
+fflick.comfinanceleadsonline.com
+fitbit.com
+foofle.comfroogle.comfuchsia.dev
g-tun.comg.co g.dev
+g.pagegateway.dev
+gcr.iogerritcodereview.comgetbumptop.comggoogle.comgipscorp.com
globaledu.org
gmail.comgmodules.com
gogle.com
+gogole.comgonglchuangl.net
+goo.gl
+googel.com
+googil.com
googl.comgoogle-access.netgoogle-syndication.com
google.berlin
+google.dev
+google.net
+google.orggoogle.ventures"googleacquisitionmigration.com
googleapis.cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com
googlebot.comgooglecapital.comgooglecert.netgooglecode.comgooglecommerce.comblogspot.cablogspot.bjblogspot.bgblogspot.beblogspot.bagoogledanmark.comgoogledomains.comgoogledrive.comgooglee.comgoogleearth.comgooglefiber.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com
googlezip.net
+googlr.com
+goolge.comgooogle.com
gridaware.appgsrc.iogstatic.com
+gsuite.com
+gv.comgvt0.comgvt1.comgvt2.comgvt3.comgvt5.comgvt6.comgvt7.comgvt9.comhaplorrhini.comhdrplusdata.orghindiweb.comblogspot.amhtml5rocks.comhwgo.comiamremarkable.orgidx.devigoogle.com
impermium.comitasoftware.com
+j2objc.orgjibemobile.comkeyhole.comkeytransparency.comkeytransparency.fookeytransparency.org
lanternal.comlike.commadewithcode.commaterial.iomdialog.commeet.newridepenguin.commobileview.pagemoodstocks.comnear.bynest.comnomulus.foo
+oauthz.comon.hereon2.comonefifteen.netonefifteen.orgoneworldmanystories.com
openthread.ioopenweave.ioorbitera.com
page.linkpagespeedmobilizer.com
pageview.mobi
panoramio.compartylikeits1986.orgpaxlicense.org
+picasa.com
picasaweb.com
picasaweb.net
picasaweb.org
+picnik.compittpatt.com
+pixate.compostini.com
google.aeprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.comquiksee.com
google.mg
google.alyoutube-nocookie.comsavethedate.foo
+saynow.comschemer.comscreenwisetrends.comscreenwisetrendspanel.com
+sheets.new
+slides.newsnapseed.com
solveforx.com
+stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org
synergyse.comtensorflow.org
tfhub.devthecleversense.comthegooglestore.comblogspot.althinkquarterly.comthinkwithgoogle.com
tiltbrush.comtxcloud.net
txvia.comunfiltered.news
useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com
+verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org
+wallet.com
waymo.comwaze.comweb.appweb.devwebappfieldguide.comwebmproject.orgwebpkgcache.com
+webrtc.orgweltweitwachsen.dewhatbrowser.org
whats.newwidevine.comwithgoogle.com
womenwill.comblogspot.aewomenwill.idwomenwill.inwomenwill.mx
x.company
+x.team
xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxplr.cozukunftswerkstatt.de
+v8.dev
v8project.organdroid.comandroidify.comfirebase.comfirebase.iofirebaseapp.comfirebaseio.comgoogleplay.comxn--ngstr-lra8j.comblogspot.mxblogspot.mk
+youtube.dk
+youtube.de
+youtube.czdeepmind.com
+youtube.cr
+youtube.es
+youtube.fi
+youtube.fr
+youtube.ge
+youtube.gr
+youtube.gtflutter.devflutterapp.compub.dev
+youtube.hk
+youtube.hr
+youtube.hu
+youtube.ie
+youtube.in
+youtube.iq
+youtube.isdeps.dev
deps.infoopensourceinsight.devopensourceinsights.dev
google.ad
+youtube.ru
+youtube.az
ytimg.comwithyoutube.comyoutu.berun.app yt.be
+youtube.ae
+youtube.al
+youtube.am
+youtube.at
+youtube.ro
+youtube.ba
+youtube.be
+youtube.bg
+youtube.bh
+youtube.bo
+youtube.by
+youtube.cayoutube.cat
+youtube.ch
+youtube.qa
+youtube.coyoutubemobilesupport.comyoutubekids.comyoutubego.inyoutubego.id
youtubego.comyoutubegaming.comyoutubefanfest.comyoutubeeducation.com
+youtube.vn
+youtube.uy
+youtube.ug
+youtube.ua
+youtube.tv
+youtube.tn
+youtube.svyoutube.soy
+youtube.rs
+youtube.sk
ggpht.comyoutube.com
+youtube.si
+youtube.sg
+youtube.se
+youtube.sa
+youtube.ee
+youtube.sngooglevideo.com
+youtube.cl
+youtube.pt
+youtube.pr
+youtube.pl
+youtube.pk
+youtube.ph
+youtube.pe
+youtube.pa
+youtube.no
+youtube.nl
+youtube.ni
+youtube.ng
+youtube.my
+youtube.mx
+youtube.mn
+youtube.mk
+youtube.me
+youtube.md
+youtube.ma
+youtube.ly
+youtube.lv
+youtube.lu
+youtube.lt
+youtube.lk
+youtube.la
+youtube.kz
+youtube.kr
+youtube.jp
+youtube.jo
+youtube.ityoutube.com.uayoutube.com.twgooglecompare.co.uk
youtube.co.zwyoutube.com.veyoutube.com.uy
google.com.vnyoutube.com.tryoutube.com.tnyoutube.com.svyoutube.com.sgyoutube.com.sayoutube.com.royoutube.com.qayoutube.com.pyyoutube.com.ptyoutube.com.pkyoutube.com.phyoutube.com.peyoutube.com.payoutube.com.omyoutube.com.niyoutube.com.ngyoutube.com.myyoutube.com.mxyoutube.com.mtyoutube.com.mkyoutube.com.lyyoutube.com.lvyoutube.com.lbyoutube.com.kwyoutube.com.joyoutube.com.jmyoutube.com.hryoutube.com.hnyoutube.com.hkyoutube.com.gtyoutube.com.gryoutube.com.ghyoutube.com.esyoutube.com.egyoutube.com.eeyoutube.com.ecyoutube.com.doyoutube.com.coyoutube.com.byyoutube.com.bryoutube.com.boyoutube.com.bhyoutube.com.bdyoutube.com.azyoutube.com.auyoutube.com.ar
youtube.co.ve
youtube.co.uk
youtube.co.ug
youtube.co.tz
youtube.co.th
youtube.co.nz
youtube.co.ma
youtube.co.kr
youtube.co.ke
youtube.co.jp
youtube.co.in
youtube.co.ilyoutubego.co.idyoutubego.co.in
youtube.co.idyoutubego.com.br
youtube.co.hu
youtube.co.cr
youtube.co.at
youtube.co.aegoogle.co.aogoogle.co.bwwomenwill.com.brthinkquarterly.co.ukhowtogetmo.co.uk
google.com.vc
youtube.co.zagoogle.co.jp
google.com.ua
google.com.tw
google.com.tr
google.com.tj
google.com.sv
google.com.sl
google.com.sg
google.com.sb
google.com.sa
google.com.qa
google.com.py
google.com.pr
google.com.pk
google.com.ph
google.com.pg
google.com.pe
google.com.pa
google.com.om
google.com.np
google.com.ni
google.com.ng
google.com.na
google.com.my
google.com.mx
google.com.mt
google.com.mm
google.com.ly
google.com.lb
google.com.kw
google.com.kh
google.com.jm
google.com.hk
google.com.gt
google.com.gi
google.com.gh
google.com.fj
google.com.et
google.com.eg
google.com.ec
google.com.do
google.com.cy
google.com.cu
google.com.co
google.com.bz
google.com.br
google.com.boblogspot.com.ngblogspot.co.keblogspot.com.brblogspot.com.byblogspot.com.mtblogspot.com.esblogspot.com.egblogspot.co.ilblogspot.co.atblogspot.com.coblogspot.com.eeblogspot.com.trblogspot.com.aublogspot.com.arblogspot.co.zablogspot.co.ukblogspot.co.nzblogspot.com.uyblogspot.co.idblogspot.com.cy
google.com.bn
google.com.bh
google.com.bd
google.com.au
google.com.ar
google.com.ai
google.com.ag
google.com.afgoogle.co.zwgoogle.co.zmgoogle.co.zagoogle.co.vigoogle.co.vegoogle.co.uzgoogle.co.ukgoogle.co.uggoogle.co.tzgoogle.co.thgoogle.co.nzgoogle.co.mzgoogle.co.magoogle.co.lsgoogle.co.krgoogle.co.ke
google.com.uygoogle.co.ingoogle.co.ilgoogle.co.idgoogle.co.crgoogle.co.ck google.cn
+cng.cn
+cngkecnapps.cn
+cngooglecnapps.cn
+cn
+gstatic.cn
+cngstaticcnapps.cn
+cnwww.recaptcha.net
+cn265.com
+cn2mdn-cn.net
+cn2mdn.net
+cnadmob-cn.com
+cn adservice.google.com
+cnai.ytimg.com
+cn"app-measurement-cn.com
+cnapp-measurement.com
+cnapps5.oingo.com
+cn#avail.googleflights.net
+cn beacons.gcp.gvt2.com
+cnbeacons.gvt2.com
+cnbeacons2.gvt2.com
+cnbeacons3.gvt2.com
+cn"borgmon.adz.google.com
+cnc.admob.com
+cn(c.android.clients.google.com
+cn, cache-management-prod.google.com
+cn!cache.pack.google.com
+cncheckin.gstatic.com
+cn clickserve.cc-dt.com
+cn%clickserve.dartsearch.net
+cn%clickserver.googleads.com
+cn)clientservices.googleapis.com
+cncn.widevine.com
+cn)cnappinstall.googleadapis.com
+cn)connectivitycheck.gstatic.com
+cn$content.googleadapis.com
+cn0$crashlyticsreports-pa.googleapis.com
+cncrl.pki.goog
+cncsi.gstatic.com
+cndartsearch-cn.net
+cn$dg-meta.video.google.com
+cn"distribution.qatp1.net
+cn"distribution.qcpp1.net
+cn"distribution.qpdp1.net
+cn
dl.google.com
+cndl.l.google.com
+cndoubleclick-cn.net
+cndoubleclick.net
+cn$download.mlcc.google.com
+cndownload.qatp1.net
+cndownload.qcpp1.net
+cndownload.qpdp1.net
+cn*download.tensorflow.google.com
+cn+emmapplecodevice.googleapis.com
+cn-!firebase-settings.crashlytics.com
+cn&fontfiles.googleadapis.com
+cn$fontfiles.googleapis.com
+cn"fonts.googleadapis.com
+cn fonts.googleapis.com
+cnfonts.gstatic.com
+cng0.gstatic.com
+cng1.gstatic.com
+cng2.gstatic.com
+cng3.gstatic.com
+cngonglchuangl.net
+cngongyichuangyi.net
+cn#google-analytics-cn.com
+cn google-analytics.com
+cn#googleadservices-cn.com
+cn googleadservices.com
+cngoogleanalytics.com
+cngoogleapis-cn.com
+cngoogleapps-cn.com
+cn googleflights-cn.net
+cn!googleoptimize-cn.com
+cngoogleoptimize.com
+cngoogleplex.com
+cn$googlesyndication-cn.com
+cn!googlesyndication.com
+cn#googletagmanager-cn.com
+cn googletagmanager.com
+cn$googletagservices-cn.com
+cn!googletagservices.com
+cn)googletraveladservices-cn.com
+cn&googletraveladservices.com
+cngooglevads-cn.com
+cngoto.google.com
+cngstatic-cn.com
+cn%gstaticadssl.l.google.com
+cngtm.oasisfeng.com
+cn!imasdk.googleapis.com
+cn monitoring.qatp1.net
+cn monitoring.qcpp1.net
+cn monitoring.qpdp1.net
+cn
ocsp.pki.goog
+cn, pagead-googlehosted.l.google.com
+cn0$performanceparameters.googleapis.com
+cn!pki-goog.l.google.com
+cnplay.1ucrs.com
+cn'prod-controlbe.floonet.goog
+cn$prod-databe.floonet.goog
+cn$prod.databe.floonet.goog
+cnqagpublic.qatp1.net
+cnqagpublic.qcpp1.net
+cnqagpublic.qpdp1.net
+cnqgadmin.qatp1.net
+cnqgadmin.qcpp1.net
+cnqgadmin.qpdp1.net
+cn!qpx.googleflights.net
+cnqualysapi.qatp1.net
+cnqualysapi.qcpp1.net
+cnqualysapi.qpdp1.net
+cn!qualysguard.qatp1.net
+cn!qualysguard.qcpp1.net
+cn!qualysguard.qpdp1.net
+cn
recaptcha.net
+cnrecaptcha-cn.net
+cnredirector.bdn.dev
+cn(redirector.c.chat.google.com
+cn(redirector.c.mail.google.com
+cn(redirector.c.pack.google.com
+cn-!redirector.c.youtubeeducation.com
+cn&redirector.gcpcdn.gvt1.com
+cnredirector.gvt1.com
+cn, redirector.offline-maps.gvt1.com
+cn$redirector.snap.gvt1.com
+cn*redirector.xn--ngstr-lra8j.com
+cn(regioninfo-pa.googleapis.com
+cn'safebrowsing.googleapis.com
+cn"scanservice1.qatp1.net
+cn"scanservice1.qcpp1.net
+cn"scanservice1.qpdp1.net
+cnservice.urchin.com
+cn$settings.xn--9trs65b.com
+cn-!ssl-google-analytics.l.google.com
+cnssl.gstatic.com
+cn*staging-controlbe.floonet.goog
+cn'staging-databe.floonet.goog
+cn0$staging-regioninfo-pa.googleapis.com
+cn'staging.databe.floonet.goog
+cnsupport.1ucrs.com
+cntac.googleapis.com
+cn%test.bugs-qa.chromium.org
+cn&test.gbugs-qa.chromium.org
+cntools.google.com
+cntools.l.google.com
+cn"update.crashlytics.com
+cn!update.googleapis.com
+cnwear.googleapis.com
+cn-!www-google-analytics.l.google.com
+cn-!www-googletagmanager.l.google.com
+cn"www.destinationurl.com
+cn www.googleadapis.com
+cnwww.gstatic.com
+cnwww.pxcc.com
+cn
xn--9kr7l.com
+cnxn--flw351e.com
+cn$applemdm.corp.google.com
+cndns.corp.google.com
+cn!g3doc.corp.google.com
+cn(gmskiosk-ssl.corp.google.com
+cngo.corp.google.com
+cn!gorom.corp.google.com
+cn goto.corp.google.com
+cn(l2-uberproxy.corp.google.com
+cn"logger.corp.google.com
+cn&logger-dev.corp.google.com
+cn!login.corp.google.com
+cn'proxyconfig.corp.google.com
+cn, rapture-autopush.corp.google.com
+cn#rapture.corp.google.com
+cn(rapture-prod.corp.google.com
+cn(rapture-test.corp.google.com
+cn"r.cert.corp.google.com
+cn%ssh-relay.corp.google.com
+cn'sslredirect.corp.google.com
+cn/#streaming-uberproxy.corp.google.com
+cn8,streaming-uberproxy-rotation.corp.google.com
+cnsup.corp.google.com
+cn)supportcenter.corp.google.com
+cn*sup-ssh-relay2.corp.google.com
+cn)sup-ssh-relay.corp.google.com
+cn$techstop.corp.google.com
+cn&uberproxy4.corp.google.com
+cn&uberproxy6.corp.google.com
+cn%uberproxy.corp.google.com
+cn, uberproxy-debug4.corp.google.com
+cn+uberproxy-debug.corp.google.com
+cn2&uberproxy-pen-redirect.corp.google.com
+cn vext.corp.google.com
+cnsup.l.google.com
+cn*uberproxy-with-cn.l.google.com
+cn+uberproxy-with-cn4.l.google.com
+cn+uberproxy-with-cn6.l.google.com
+cnqiao-cn.com
+cngvt1-cn.com
+cngvt2-cn.com
+cn!pki-goog.l.google.com
+cn
+c.pki.goog
+cn
+i.pki.goog
+cn
+o.pki.goog
+cncrl.pki.goog
+cn
crls.pki.goog
+cn
ocsp.pki.goog
+cn-!firebase-settings.crashlytics.com
+cn(redirector.c.play.google.com
+cn2mdn-cn.net
+ads2mdn.net
+adsadmob-cn.com
+ads admob.com
+adsads.youtube.com
+adsadsense.com
+ads'adsensecustomsearchads.com
+ads%adsenseformobileapps.com
+ads!adservice.google.com
+ads$advertisercommunity.com
+ads%advertiserscommunity.com
+ads"adwords-community.com
+adsadwords.com
+adsadwordsexpress.com
+ads#app-measurement-cn.com
+ads app-measurement.com
+adsdoubleclick-cn.net
+adsdoubleclick.cn
+adsdoubleclick.com
+adsdoubleclick.net
+ads$google-analytics-cn.com
+ads!google-analytics.com
+adsgoogleadapis.com
+adsgoogleads-cn.com
+ads
googleads.com
+ads$googleadservices-cn.com
+ads!googleadservices.com
+ads googleadsserving.cn
+ads googleanalytics.com
+ads"googleoptimize-cn.com
+adsgoogleoptimize.com
+ads%googlesyndication-cn.com
+ads"googlesyndication.com
+ads$googletagmanager-cn.com
+ads!googletagmanager.com
+ads%googletagservices-cn.com
+ads"googletagservices.com
+ads*googletraveladservices-cn.com
+ads'googletraveladservices.com
+adsgooglevads-cn.com
+ads mail-ads.google.com
+ads)marketingplatform.google.com
+ads
+urchin.com
+ads!analytics.google.com
+ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$
+adsggpht.cn
+cn
++
+MXPLAYER-ADSevt.mxplay.com
+ads
+6
+4CHAN4cdn.org
4chan.org4channel.org
+
+AWSawsawsautoscaling.comelasticbeanstalk.comaesworkshops.com
awsbraket.com
amazonaws.bizthinkboxsoftware.com
amazonaws.comamazonaws.info
amazonaws.net
amazonaws.orgamazonaws.tv
amazonses.comamazonworkdocs.comamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comacmvalidations.comamazonaws-china.comacmvalidationsaws.comawseducate.comawsedstart.comawseducate.netawseducate.orgawsglobalaccelerator.comawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com
awsstatic.comawsthinkbox.comawstrack.mecdkworkshop.comcloudfront.comcloudfront.netcontainersonaws.comawscommandlineinterface.comamazonaws.co.uk&".+\.amzndns\.(co\.uk|com|net|org)$0,.+\.awsdns-[0-9][0-9]\.(co\.uk|com|net|org)$
+a2z.org.cn
+cnamazonaws.cn
+cnamazonaws.com.cn
+cn$amazonwebservices.com.cn
+cnamazonworkdocs.cn
+cn!amazonworkdocs.com.cn
+cn"asfiovnxocqpcry.com.cn
+cn
aws-border.cn
+cn%aws-icp-domain-manager.cn
+cn
+awsapps.cn
+cnawsapps.com.cn
+cnawsstatic.cn
+cncloudfront-cn.net
+cncloudfront-test.cn
+cn
cloudfront.cn
+cnnwcdcloud.cn
+cnnwcdcloud.com.cn
+cn
+nwcddns.cn
+cnnwcdinfosec.cn
+cn
+route53.cn
+cnsagemaker.com.cn
+cn-!.+\.amzndns-cn\.(biz|cn|com|net)$
+cn8,.+\.awsdns-cn-[0-9][0-9]\.(biz|com|net|top)$
+cn, .+\.awsdns-cn-[0-9][a-e0-9]\.cn$
+cn
+
+CATEGORY-RUrusuxn--p1aipsk
+yandex
+emias.infomycdn.memvk.comuserapi.com
vk-cdn.me
+vk-cdn.net
vk-portal.net vk.cc
+vk.com
vk.designvk.link vk.mevkcache.comvkgo.app
+vklive.appvkmessenger.comvkmessenger.appvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.net
yandex.pl
+yandex.org
yandex.fi
yandex.fr
yandex.az
yandex.byyastatic.net
+yandex.comyandexcloud.net
yandex.uz
yandex.ua
yandex.tm
yandex.tj
yandex.de
yandex.ee
yandex.euyandex.aero
yandex.kg
yandex.kz
yandex.lt
yandex.lv
yandex.md
+yandex.netyandex.jobs
yandex.st
yandex.sx
yandex.com.ua
yandex.com.tr
yandex.com.ge
yandex.com.amyandex.co.il
+'
+HEYZOheydoga.com
heyzo.com
+"
+KODIkodi.tv
kodi.wiki
+
+CATEGORY-FORUMSreddit.map.fastly.net
18p2p.comavsforum.comdisp.cc
doom9.orgeyny.comgab.comhydrogenaud.iomewe.com
+parler.com
pincong.rockssafechat.com
+sis001.comv2ex.com2ch.net5ch.net5i01.commobile01.com
+ptt.ccptt2.ccptt3.ccredd.it
+reddit.comredditblog.comreddithelp.com
redditinc.comredditmail.comredditmedia.comredditspace.comredditstatic.comredditstatus.com
+yamibo.com4cdn.org
4chan.org4channel.orgbroadbandreports.comdslr.netdslreports.com
+lih.kg
lihkg.compimg.twpixanalytics.com
pixfs.net
pixnet.cc
+pixnet.net
+pixnet.pro
pixnet.tw
+pixplug.in
ck101.com
ckcdn.comckck.fundcard.ccdcard.io
+dcard.linkdcard.twhkgolden.comhkgolden.media qr.ae
quora.comquoracdn.netpoe.com
+poecdn.net
6park.com6parkbbs.com
6parknews.com
+cool18.com
popo8.com
+parkvv.comxwbo.comreddit.app.linkpixinsight.com.tw
+
+CHIPHELLchiphell.com
+1
+ GOODREADS
goodreads.com
gr-assets.com
+b
+CNalibabaxn--zfr164bxn--xhq521bxn--vuq861b
xn--vhquv
+xn--unup4yxn--ses554gxn--rhqv96gxn--otu796dxn--nyqy26a
+xn--kput3i
+xn--io0a7ixn--imr513nxn--hxt814exn--g2xx48cxn--fjq720a
+xn--fiqz9s
+xn--fiqs8s
+xn--fiq64bxn--fiq228c5hs
+xn--czru2d
+xn--czrs0txn--czr694b
+xn--9et52uxn--8y0a063axn--6qq986b3xlxn--6frz82g
+xn--5tzm5g
+xn--55qx5dxn--3ds443gxn--3bst00mxn--1qqw23awang
+unicom tmall
+taobaosohumsicbcfullcn citic baidu
+alipay
jpeen.com
jcwcn.com05vm.com
05wan.com
+05wang.com0609.com0618.com0626.lol
+063108.com
+0631rc.com0632idc.com0634.com0635.com0635jia.com
+065201.com
+0660hf.com0663.net0663job.com0668.com
06681.com
06abc.com
06climate.com
+06game.com
+06peng.com06tn.com 07.la
07073.com07073h5.com07073vr.com0712fang.com
+0715fc.com
+0715rc.com
+0715zp.com
+0716fw.com
+0716mr.com
07177.com
+0717wf.com0718.cc
+0718qp.com
+0718xf.com
+0722fc.com
+0722sy.com
+0722zs.com
0724c.com
0728f.com0730188.com0730news.com
+073122.com
0731a.com0731cfw.com0731fdc.com
0731i.com0731job.com0731pgy.com
+0731tg.com0731wan.com
+0731wx.com0733news.com0734zpw.com0735.com
07358.com
+0735jz.com
+0735zx.com
+0735zz.com0736fdc.com
+0736zz.com0738.cc
+0738rc.com
+073980.com
+0739qq.com
+0739tt.com
+073img.com
+073pic.com07430743.com
+0744tv.com0746news.com
+0750jd.com
+0750rc.com
+075238.com0752kongyaji.com
+0752qc.com
+0753zz.com0755001.com
07551.com
07551.net0755400.com
075577777.com0755888.com0755bdqn.com0755caibao.com0755car.com0755dyx.com
+0755fm.com
0755haoyu.com
+0755hj.com
+0755hz.com0755sszx.net
+0755yf.net
+0755zb.com0756fang.com
+0756fy.com0756hhr.com0756idc.com0756tong.com
+0757fc.com
0757p.com
+0757rc.com0758net.com0759.pw0759job.com
0759k.com
+0759yc.com0760.com
+0760bw.com
+0760rc.com
+076299.com
+076299.net
+0762uu.com
0763f.com
+076650.com0768.gd0769che.com0769net.com0769sun.com
+0769sx.com0769web.net
+0769yp.com0771.tv07712008.com07715555555.com07719999.com0771cts.com0771cyts.com0771fukang.com
+0771hp.com
+0771hq.com
+0771mr.com
+0771rc.com0772fang.com0772gcw.com0772job.com0772lou.com07743988888.com
+0774sg.com07752267777.com07754255555.com0775fcw.com0775jzw.com
+0775qc.com
+0775su.com0775yzf.com
0776.cool
+0776hr.com07772677.com0779-2678999.com07792222222.com
07879.com
07890.com0791look.com0791quanquan.com07928888.xyz
+0792jj.net0792lsly.com
0792u.com0797ayzp.com
+0797rs.com079y.com07cn.com07net01.com
07ren.com
07swz.com
+0813fs.com0817.net
+0817tv.com0818tuan.com
+0827ug.com0830bbs.com0831home.com
+0832mh.com0835.com
0835meiya.com0838.com0838che.com085.com0852diaoyu.com
+0853rc.com0854job.com
+0856st.com0857job.com0859job.com
+0859qp.com
+0859sy.com
+086019.com
08644.com
+0871gc.com0890.com08958e44r8.com0898.net
+089858.com0898888.com0898cfw.com0898hfw.com
+0898hq.com0898mmf.com
+0898uf.com0898xbfc.com089u.com08an.com08ar.com08c6.com
08cms.com
+08k.co08ky.com08qx.com08wojia.com08zf.com
0904.cool090expo.com0912app.com
+0914cn.com0915home.com
+091601.com0917.com
0917e.com0919123.com0926.me093.com
0935e.com
+0937js.com0938net.com
+093nd9.com
09451.com
+094j35.com
095196555.com
+096663.com0972xxg.com
+0991dj.com0991net.com0992.cc09ge.com09k.net09p9z7d1h8.com09shijue.com
0b3k1.sbs0baiwen.com0bug.org
0car0.com
+0cname.com0d.work
+0daily.com
+0du520.com0duw.com
0duxs.com0e91wut86c.com
0easy.com
+0eqbeb.com0fw.net0g1s.com0gouche.com
+0hgame.com0kee.com0kkkkkt.com0l23f6i4e8.com0np1ydukvn.com
+0rl.cc0s73o26p67.com0s8s.com0slnk.us0sm.com
+0u.com
+0voice.com0x1.site0x3.com
+0x3.me
+0x6.me
+0x7.me
+0x9.me
+0xaa55.com0xff000000.com0xffffff.org
0xsky.com0xue.com 0z.gs
1-123.com
+1-b.tc1-cs.net1-du.net1-luxury.com
1-st.shop
+1-yuan.net1.cc100-tong.com100.com
+100.me
+100.travel1000.com
10000.com10000.sh100000w.com10000gd.tech10000idc.net10000job.com
10000link.com
10000post.com10000shequ.com10000tc.com10000yao.com10001wan.com
+100024.xyz1000360.com
+10006.info
+1000eb.net1000fun.com
+1000my.com
1000phone.com
1000phone.net1000plan.org
+1000qm.vip1000qoi.com1000thinktank.com1000tuan.com
+1000uc.com
1000xuexi.com1000xun.com1000zhu.com
10010.com
10010.net
+10010.team10010400.net10010hb.net10010js.com10010ll.com10010mx.com10010nm.com
1001g.com
+1001hw.com
1001p.com
+100248.com
10029.com
+100520.com
+100580.com1008011.com1008120.com1008610086.com10086kuaixiu.com
100883.cc
+100883.com100allin.com100alpha.com
+100ask.net
+100ask.org100audio.com
100bt.com100chou.com100chui.com
+100cjc.com
100credit.com
+100cup.com100data.com
100du.com100e.com
+100eby.com100eshu.com100exam.com100fang.com100font.com
+100how.com100incense.com
100ip.net100jiapu.com
+100ksw.com
+100lbj.com
100legend.com
100loujia.com
100lw.com
100market.net
100md.com100mian.com
+100msh.net100nets.com100niangudu.com
+100njz.com100nong.com100offer.com
100pd.com
+100pei.com
+100ppi.com100puzzles.com
+100run.com100shop.com100skin.com100stone.com100sucai.com
+100szy.com100t.com
+100tal.com
+100tmt.com100top1.com
+100try.com
+100txy.com100ulife.com
100vr.com
100wa.com100web.store100weidu.com
+100wen.com100wsanguo.com
+100xgj.com
+100xhs.com100xiao.com
+100xin.com100xuexi.com
100ye.com
100ye.net100yigui.com100yingcai.com
100zd.com
100zhuang.com
100zp.com101.com
1010-0000.com10100000.com10101111.com10101111cdn.com1010jiajiao.com
+1010jz.com1010pic.com
+1010sh.com
1010t.com
1012china.com
+101505.com
10155.com1015600.com
10185.com1018wedding.com
101hr.com101jiajiao.com101weiqi.com1024.ink1024fuli.com
1024g.com
+1024ie.com1024nic.com
+1024sj.com
+1024ss.com
1024tools.com
+1024wl.com
10260.com
+1026jz.com
102no.com
+102pay.com
+103153.com1032.com
10333.com
+1040jy.com
10419.net
+1050qm.com
105mr.com106.com10639888.com
1065m.com1066888.com1073.com
+107788.com
+108105.xyz
108ai.com
108pk.com
108qi.com
108sq.com108tian.com109.com
+109360.com
10966.net109876543210.com
109ya.com10bests.com10besty.com
+10fang.com10gt.com
10guoying.com
+10huan.com
10idc.com
10isp.com10m1.com
+10min.club10moons.com10p07v10o5.com
+10pkpk.com10s1.com
10sea.com
10soo.com
10vps.com10xiang.net
10yan.com110.com
+110.gg
11000.vip11000011.com1109.com
+110ask.com110clwz.com110hack.com
110tm.com
111111111.com11114.cc
+1111lm.com1113.cc11160066.com
+111867.com
+111com.net111g.com
111tt.icu
111wo.com
+111yao.com
+111zyw.com
+112112.com
+112192.com1122.com
11222.com
112233vip.com
+112248.vip
+112682.com1128job.com
+112seo.com
+112wan.com
11315.com
11343.com
+113989.com
113dh.com
113ya.com
+114-91.com1140086.com
11467.com
11478.com
114837322.xyz114auto.com114best.com114blog.com
+114cbd.com
+114chn.com114desk.com
+114dev.com
114dg.com
+114dns.com
+114dns.net114dnss.com
+114god.com
+114hyw.com
+114hzw.com
114ic.com
114ic.net
+114jcw.com114menhu.com
114mo.com
114my.com
114my.net114naliyou.com
114oc.com114photo.com
114piaowu.com
114pinpai.com
114px.com
114qy.com114s.com
114sf.com
114shouji.com114study.com
+114ups.com114yygh.com114zhibo.com
+114zpw.com
114zw.org115.com1155871.com1156.com1156dns.com
+115800.com115care.com
+115cdn.com
+115cdn.net
+115img.com
115jk.com1163.com1166.com
11684.com
+116968.com
116cd.com
116cd.net116daohang.com
116kj.com
116ya.com
116yx.com
11773.com117play.com117y.com
+118114.net
+118360.com
+1188fc.com
118cy.com
118jm.com
+118pan.com
118pc.com118study.com
+118ttc.com
118wa.com1190119.com
+119120.org
+119958.com
119tx.com
+119you.com11cdocker402.com
11dns.com11dream.net
11fdj.com11fldxn.com
+11flow.com11g.com
11gai.com11haoka.com
11job.com
11job.net11ka.com11lx.com11meigui.com
11pdf.com11player.com11pv.com11space.com
11sun.com
11wyx.com11xotn7p.com11zhang.com11ziyun.com120-job.com120.net
+1204cm.com1209842532.shop
+120ask.com120askimages.com
+120btc.com
120fd.com
120it.com120jxxh.com
+120kid.com
120kq.com
+120scp.com
+120spd.com
+120top.com120x.net
+121121.net12114job.com12114rc.com1212.com
12120.net
12123.com
+121314.com
+121ask.com121down.com
+121mai.com
121mu.com
+121wty.com
+121xia.com
+122521.com
+122cha.com
+122law.com122park.com123-789.com
+123.cc12301.cc1230539.com
12306.com12306bypass.com
12308.com
+123123.net
12315.com12316cn.com
12317.com12317wan.com1231818.com
12333.com12333si.com12333tc.com
+123366.xyz1233dns.com1234.cx1234001.com12341288.com
123456.la
12345good.com
12345good.net
12348.net
12349.net1234biao.com
1234i.com
1234n.com
+1234sy.com
+1234wu.com
+1234wu.net
+1234ye.com1234yes.com
12354.com
12355.net1236.com
12365auto.com
12366.com
12366.net12366cn.com12366ns.com
+123952.com
+123957.com
123aa.com
123ad.com123admin.com
+123aoe.com123baofeng.com
123bo.com123boligang.com
123ds.org123du.cc
+123ems.com
123fc.com
123haitao.com
123haiwai.com
+123hao.com
+123hdp.com123jctrz.com123juzi.com123kanfang.com
123meiyan.com123menpiao.com123nice.net
123ox.com
+123pan.com123qibu.com
123qy.com
123si.org
+123slg.com
+123ths.com123u.com123v.net123webgame.com
+123xfw.com
123xueshu.com
123yx.com
+12411.shop
+124866.xyz
+125.la
12530.com
12580.com12580.tv
12580life.com12580study.com
+125edu.com
+125job.com
125mx.com
125school.com125visa.com125y.com
+125yan.com
+126.am126.com
+126.fm126.link126.net126blog.com
+126doc.com126g.com126qiye.com126z.net127.com127.net1278721.com
+127cdn.com
127xx.com127z.com
+128456.com1288.tv
12880.com
128qd.com
128sy.com
128uu.com
12988.net
12blog.cc
12dzx.com
+12gang.com12h5.com12jn.com12ka.cc12ketang.com12ky.com
+12miao.com12pk.com12py879p9p.com12sporting.com
+12tiku.com
12yao.com12ym.com12ystar.com 13.gs
+130014.xyz
+130158.com131.com
13112.com1312.vip1314.io
1314520sz.com
+131458.com
+1314gl.com
1314h.com
1314study.com1314tkd.com1314wallet.com
+1314zf.com
1317w.com
131cc.com131w.tv1322.com13298213.com
132lawyer.com
+133191.com
+1332vp.com
+133300.com13377608388.com
+133998.com13482896776.com
+135031.com1351.com
+135122.com
+135309.com
1353j.com
+135650.com
13567.com1356789.com1357vip.com
+135958.com
+135995.com135bianjiqi.com135e.com
135editor.com
+135edu.com
135fa.com135plat.com135yuedu.com136.com1360.com
+136136.com
13636.com13667703999.com
136fc.com
136hr.com
+136pic.com
13707.net
13720.com13737090769.com1374.com13793085458.com13793277711.com137home.com137y.com
13800.net13800100.co13800100.com
+138379.com
+138gzs.com
+138top.com
+138txt.com
+138vps.com139.com
+139000.com13901559172.com1391.com
13910.com
+139130.com
+139135.com1392189.com13937180868.com1399vip.com
139cm.com
+139erp.com139game.com139game.net139life.com139play.com139shop.com139talk.com139wanke.com139y.com139zhuti.com13a.com13cr.com13e7.com
+13ejob.com13eu.com
13freight.com13gm.com
13jue.com13lm.com13qh.com
+13s.co13ww.net13yx.com
+140414.com1415926.com
+142857.red
14294.com
+143614.xyz
14498.com
+1451cn.com
+147seo.com
147xs.com
147xz.com148-law.com
14866.com1488.com
+148com.com
148la.com
14944.net14hj.com14xd.com
+150072.com1502828.com
150cn.com
+151.hk1510game.com15111223344.com
+151173.com
15153.com
15166.com
+151733.com1518.com151m.net
151rs.com
+151top.com
+151web.com15211223344.com
+152500.com1527ego.com15311223344.com153g.net
+1545ts.com155.com
+155175.com
+155idc.com155rj9w1txcoh.skin
+156186.com
+156669.com
+156pay.com157.com
15803.com
+158566.com1588.tv
+158999.org158c.com158jixie.com159.com
159shouji.com15gg.com
+15gift.com15hr.com
15kuaixiu.com15lu.com15ms.com
+15scsc.com
15str.com
15xdd.com15yl.com
15yunmall.com160.com
+160.me1601sy4ge0.com
+160dyf.com
160yx.com
+161580.com1616.net
16163.com
+1616dh.com
1616n.com1618.com
161gg.com1624.win1626.com
+163.cm163.com
+163.fm
+163.gg163.link
+163.lu163.net1633.com
1633d.com
+163663.com1637.com
+163888.net
+163987.com
+163adl.com
+163cdn.com
+163cms.com163cn.tv
163cp.com
163cs.com
+163fen.com
163gz.com
+163hot.net
+163img.com163industry.com163jiasu.com163k.cc163k.com163kada.com163lady.com
+163mail.cc163mail.com163mail.net163nasa.com
+163nos.com
163ns.com163pinglun.com
163py.com163qikanlunwen.com
163qiyukf.com163wenku.com
163wh.com
163yu.com
+163yun.com
+164580.com
16466.com
+165123.com
16587.com165image.com165image.vip165zhuji.com166.com166.net
+166161.com1666.com1668.net
+1668hk.com
+1669la.com
+166cai.com
+166cdn.com
+166dns.com
166sh.com
16757.com
16768.com
16789.net
16816.com
+168338.com
16835.com
16838.com
+168510.com
+168771.com1688.com
16885.com16886000.com
+168866.com
16888.com1688988.com1688cdn.com
+1688du.com1688eric.com
+1688la.com
1688lucky.com
1688s.com1688ts4.com1688tsw.com1688visa.com
1688zhuce.com16898.cc16899168.com
168cb.com
168chaogu.com
168dc.com
+168dmj.com
+168dns.com
168hs.com
+168job.com168kaifu.com
168kk.com
168kn.com
+168lyq.com
+168mlj.com
168moliao.com
+168rcw.com168shoubiao.com
+168tea.com
+168tex.com168tochina.com168trucker.com
+168zcw.com169.com
+169163.com
+169369.com16949pcb.com1696.com
+169666.xyz
+169700.com
16999.com169gold.net
169it.com169kang.com
169ol.com16app.tv
+16boke.com
16bus.net16c1.com
+16d.cc
16fan.com
+16game.net
16hyt.com
16ker.com
+16kxsw.com
16lao.com
16map.com16p.com
16pic.com16qiang.com16rd.com
16shouyou.com16sucai.com
+16type.com16tz.com16wl.cc
16xx8.com16ye.com
+17.com170.com
17025.org
+170601.xyz
170hi.com
170mv.com
+170tao.com
17167.com
17173-inc.com
17173.com
17173.net17173cdn.com17173gc.com17173ie.com
+17173v.com17173vr.com17173vr.net17173yx.com
17178.com
+1717kf.com
+1717pk.com
1718china.com
1718world.com
+171tax.com
+171win.net
171zz.com
17207.com
+172222.com172haoka.vip172l.com
+172llk.com
172tt.com173.com
+173.tv1732.com1732.net
17348.com
17350.com
17351.com
173cs.com173daxue.com
173eg.com173fahao.com
173fc.com
173fh.com173funny.com
173ie.com
173ie.net
+173iot.com
+173kan.com
173kw.com
173kz.com
173on.com173shouyou.com173shouyou.net
173sy.com173tuku.com
173uu.com173yeyou.com173yeyou.net
173zb.com
173zy.com1744.cc
17446.com
17566.com1758.com175club.com175game.com
175ha.com
175kh.com
175pt.com
175pt.net
175sf.com
+175wan.com
+17666.mobi
17673.com1768.com176quan.com1773.com1778.com178.com178.net
+178198.com
+178448.com1787.ink
178800.cc
+178871.xyz
17888.com
178du.com
+178hui.com178linux.com
178online.com
178rw.com178zhaopin.com179.com
+179179.com1794game.com1797.cc
17986.net
17989.com17a.ink17admob.com17ai.me17aifun.com
17avr.com17b.net
+17bang.ren
17bdc.com17beijiang.com17bianji.com
+17biao.com
17bigdata.com17bt.com
17btf.com
17byh.com17caifu.com
17cct.com
17cdn.com17ce.com17chacha.com
17coding.info17cx.com
+17d.co
17dao.com
17dap.com17dawan.com17dm.com17donor.com17doubao.com17dp.com
17duu.com17emarketing.com17et.com17ex.com17fandai.com17fanwen.com
17fee.com
+17feia.com
17fengguo.com
17fengyou.com
+17fifa.com
+17font.com17forex.com
17fpv.com17g.com
+17game.com17gaoda.com17getfun.com17golang.com
17gwx.com17haibao.com17house.com
17hpl.com17huang.com
17huayuan.com
17huo.com
17huodong.com17ic.com
+17itou.com
17ivr.com17jc.net17jiedu.org
+17jita.com
17jzt.com17k.com17kf.cc
17kgk.com
17kjs.com
+17koko.com17kouyu.com
17kqh.com17kuxun.com17kxgame.com
17kzj.com17l18w9s1z.com
17lai.org
+17lai.site
+17lele.net17lewan.net
17lht.com17liuxue.com17ll.com17m3.com
17meb.com17meiwen.com17mf.com
17mqw.com17ms.com
17neo.com17oh.com17ok.com
+17only.net17pa.com17palyba.com17pr.com17pw.com17python.com
17qcc.com17qiche.com17qread.com
17qzx.com17rd.com17rd.net
+17read.com17relax.com
+17roco.com
17sfc.com17shanyuan.com17shenqi.com
+17sort.com17sucai.com17suzao.com
+17swan.com
17syi.com
+17sysj.com
+17t.co17taoca.com17taoqu.com
17taotaoa.com
17taotaob.com17taotaoba.com
17taotaoc.com
17tcw.com17tigan.com
+17tiku.com17track.net17tui.cc17tx.com17u.com17u.net
17u1u.com17u7.com
17ugo.com
+17uhui.com
+17uhui.net17usoft.com17usoft.net
17uxi.com17v5.com17vsell.com
+17wan7.com17wanba.com
17wanxiao.com17wclass.com17weike.com17wendao.com
17whz.com
17win.com17ww.cc
17xlm.com17xs.org
17xsj.com17xueaoshu.com17xueba.com17xueshe.com17xuexi.com
17xxl.com17ya.com17yaoqu.com17ym.org
17you.com17yucai.com
+17yund.com
17yunlian.net17yunzhijiao.com17yunzhijiao.net17yy.com
17zhiliao.com17zhuangxiu.com
+17ziti.com17zixue.com
17zjh.com
17zub.com17zuoye.com17zuoye.net17zuqiu.com
17zwd.com
+17zyxy.com
+17zyxy.net 18.cm
+180102.com
18095.com180cdnsm01.xyz180disk.com
180qt.com181.com18176631811.com
18183.com
+18183g.com
+1818ba.com
+1818hm.com
181ps.com
181ue.com
+182682.xyz
182yg.org
18318.com
18375.com
183me.com
+183read.cc183read.com1845p3hr95.com
18488.com
+185185.com
+1857qc.net1866.tv18665348887.com
+186688.com1873game.com
1874.cool18778450600.com
+187997.com188.com188.net
+188158.com
+188187.xyz
+188221.com18837331771.com
18856.com
+188628.com
18888.com188bifen.com
+188bio.com
+188cdn.com
188hi.com188lanxi.com
188mb.com
188naicha.com
188pi.com188soft.com
+188wan.com
188yd.com
+189002.com1892139.com18935689292.com18937777777.com
+189578.com18999666.xyz
+189cha.com
+189che.com189cube.com189ebuy.com
+189jxt.com
+189qas.com189read.com
+189sec.com189smarthome.com189store.com
189wh.com189works.com189young.com
18art.art18av.com18chonglou.com
+18cslm.com18daxue.com18dx.com18ebank.com
18guanjia.com18imall.com
+18inet.com18ishop.com18istore.com18juyou.com18l.net18ladys.com
+18link.com18ph.com
+18q.co18qiang.com18t0f515a3.com18touch.com18wk.com18yl.com18zhuanqian.com18zw.com
+19.com190.vip
1900.live19000yy.com
1900m.com
+1903it.com1904bus.com1905.com
1905cloud.com1905yun.com
+190cai.com1919.com
19196.com1919game.net
192ly.com
192sm.com1931.com1934xjzy.com
+1937cn.com
+193839.com193sihu.com
+194610.xyz1947.cc1949idc.com
194nb.com
+195155.com
+195855.com
19687.com196g.com197.com
+197232.vip1977088.com
+197746.com
+197784.com
+197854.com
+197946.com197c.com
+198254.com
+198358.com
+198424.com
+198434.com
+198449.com
+198503.xyz
+198526.com
+1985cd.com
1985t.com1987619.com
+1987cn.com
+1987yp.com1988.tv19888.tv
1989c.com198game.net
1990i.com
+199238.vip
+199508.com
+199604.com1997sty.com1998mall.com
1998n.com
1998r.com1999year.com
199it.com
199u2.com
199yt.com
199zw.com19bizhi.com
+19call.com
+19call.net
19lou.com19mi.net
+19mini.com
19mro.com
19pay.net
19ued.com19where.com
19xsf.com
19yxw.com
+19zhan.com1a22.com1an.com1ang.com1aq.com
1auto.net1b23.com
1biaozhun.com1blx503444.com1bus.net1c0d1n1f0l1y.cc1cae.com
+1caifu.com1caitong.com
+1cdakj.com
1cent.xyz1checker.com
+1cijb.site1cloudsp.com1cnmedia.com1cno.com1d1d100.com1d9z.com1daiyun.com
+1dao99.com1der-ad.com1diaocha.com
1diary.me
1ding.xyz1domedia.com1drv.ws1dufish.com
1dutm.com1dw9r53h79.com1f11.com
+1fenda.com1fenlei.com
+1flash.net1foo.com1fqw.com1g31.com1gaifang.com
1gbru.com
1gcat.com
1gdoutian.com
+1gesem.com
+1ggame.com1gzd.com1haigtm.com1haitao.com1hangye.com1hkt.com
1hourlife.com
+1hshop.com1hua.co
+1huamu.com1huizhan.com
1huwai.me
1iptv.com1j1x.com1j1x.net1j8.net
+1jbest.com1jh3a5806i.com
1jian.fun1jiesong.com1ju.com
+1juhao.com
1juzi.com1k2k.com
+1ka123.com
1kapp.com1ke.net1kic.com1kkk.com
1kmxc.com
+1kuang.com
+1kx.me
1kxun.com1kyx.com1law.vip1liantu.com1lou.com1lzs.com
+1m.net1m3d.com1m85.com
1mall.com1mao.cc1maoshua.com
1mdoutian.com1mfg.com
1miba.com
+1mishu.com1mit.com1mm8.com
1mmed.com
1more.com1ms.run
1mushroom.com
+1mxian.com1n1v97c96h.com
1nami.com1nfinite.ai
1nmob.com
1nongjing.com
1nsou.com1nyz.com1o1o.xyz
1ozez.sbs1p0ql49.shop1p1g.com1paibao.net
1plas.com1pm2.com1ppt.com1q2q.com1qfa.com1qianbao.com1qianbao.net
+1qirun.com
+1qishu.com1qit.com1r0zwootq4.com1r1g.com1r234t346df.asia1rtb.net
+1safety.cc
1sapp.com
+1shang.com1shangbiao.com
1shoucang.com
+1sj.tv1skp.com
1sohu.com
1st-watch.net1stacks.net1stchip.com
1stjc.com1sw12mvkbp.com
1szbg.app1szq.com1t1t.com1tai.com1tdw.com1techan.com1textile.com1thx.com
1ting.com
1tjob.com
1tong.com
1toon.com1tu-design.com1tu.com1tuikem.com1uuc.com1w1w314c71.com
1wang.com1xin1li.com
1xinzulin.com1xmb.com
+1y.com1y0g.com1y2y.com
1yabc.com1yangai.com
+1yaoda.com
+1yb.co
1ycdn.com
+1yd.me1yinian.com1yyg.com
1zhangdan.com
1zhao.org1zhe.com1zhengji.com1zhixue.com
+1ziyou.com1zj.com
1zjob.com1zr.com1zu.com1zw.com2-33.com2-class.com
zzzzzz.me2-mm.net 2.biz2000200.com
+200022.xyz2000888.com2000dns.com2000new.com
2000y.net2003n.cc
2003n.com
2006q.com2008php.com2008red.com2008zwe.com200call.com
+200wan.com200y.com
+201061.com
+201201.com2012seo.com20130123.com
2014.mobi
+2014w7.com
+201551.com2015law.com2016ruanwen.com
2016win10.com20174555.com
2017taoke.com
2018zjjly.com2019cdac.com201g.com
+202014.xyz
+202030.com2021.com
+202271.xyz
2022cdnpl.com2023game.com
+202wan.com
+203328.com
+2048sj.com2049baby.com2050cpok.com2050life.com
+2080ly.com
+2099xs.com20fl.com20ju.com20kf.com20on.com20planet.com20qu.com
20xue.com20z.com
+21-sun.com
+210997.com210z.com2114.com2115.com
+211600.com
+211cad.com
211ic.com
211lx.com
211sc.com
+211zph.com
+212300.com2125.com
21263.net2128.net2133.com2133bbs.com
21373.com
+213810.com2144.com
+2144gy.com
214yx.com2155.com215soft.com
216tt.com217.net
217wo.com
+218318.com
+218996.com
21bcr.com21beats.com
+21bowu.com
+21cake.com
21cbr.com
+21cccc.com
+21ccnn.com21cd.com21ce.cc21cloudbox.com21cn.com21cn.net21cnentmail.com
+21cnev.com21cnimg.com
+21cnjy.com
+21cnjy.net
21cnsales.com21cnsungate.com
+21cntx.com
21cos.com21cp.cc21cp.com21ctest.com
21cto.com21datasheet.com21dianyuan.com
+21dida.com
+21edu8.com
+21ejob.com21eline.com
+21epub.com
21etm.com
21fid.com
+21food.com21fv52efm1.com21hubei.net
+21hyzs.com21ic.com21icsearch.com
21ido.com21jingji.com
21jrr.com21js.com
21kan.com21ks.net
21kunpeng.com21ld.com21maoyi.com
21mcu.com
21mmo.com21mould.net21na.com
21our.com21qa.net
+21qphr.com
+21qupu.com21rv.com
+21shhr.com21shipin.com
+21shte.net
+21sjmg.com
21sla.com
+21smov.com21so.com21softs.com
21spv.com21sq.org21tb.com
21teacher.com21tjsports.com21tx.com
21tyn.com21uv.com
21van.com21viacloud.com21vianet.com
21voa.com21wecan.com21wenju.com21xc.com
21xcx.com
+21xfbd.com
21xianhua.com
21xl.info
21xrx.com21xuema.com
21yod.com21yq.com
21ytv.com21yunwei.com
21zbs.com
+22.com
+220840.com220c.com
+221234.xyz2213.com
221400job.com
22145.com2217.com
+221700.com222.com
222biquge.com
222bz.com222i.net
+222pcb.com22336699.xyz
+223600.com2239.com
223969ufy.com22442121.com22442400.com2247.com
+224700.com
224837439.xyz224m.com2258.com
225962tyy.com225image.com225image.vip
+226120.com2265.com
+226500.com
+226531.com
+226yzy.com22787340.com2280.com
+2281wa.ren2288.org
+228job.com2295.com2298.com22baobei.com22dm.com
22doc.com
22edu.com22hd.com22ja.com22lianmeng.com
22lrc.com22mt.in22n.com
22net.com
22plc.com
+22shop.com22tianbo.com22tj.com
+22vape.com22vd.com22zw.com2300sjz.com
+230890.com
+231122.com
+232232.xyz
2323u.com2323wan.com
+232485.com2329.com233.com
+233000.com2333333333333.com
2333u.com
23356.com
+233863.com2339.com
233leyuan.com233lyly.com
233py.com
+233xyx.com234.com2344.com2345.gd2345.net
+23456v.com2345cdn.net2345download.com
+2345ff.com
+2345ii.com2345mbrowser.com2345soso.com
234du.com234f.com2356.com
+236400.com
+236501.xyz2366.com
23673.com236z.com237y.com
+238090.com
23bei.com
+23book.com23class.com
+23cube.com
23dns.com23do.com23du.com23ee.net
23img.com
23job.net23ks.com
+23luke.com23lvxing.com23mf.com23mofang.com23qb.com23qb.net
23qun.com23sk.com
23txt.com23us.so23us23us.com
+23uswx.com23uswx.info
+23uswx.net
23wow.com23wx.cc23wx.io23xsw.cc23yy.com
240yx.com
+241hcc.com
+246546.com2478.com248.com24871054.com
+248xyx.com249m.com
+24biao.com24geban.com
24gowatch.com24haowan.com
24hmb.com
24k99.com
24kdh.com
24ker.com24kplus.com24maker.com24money.com24om.com
24pay.net24th.com
24timemap.com24u7tos.com2500.tv25000li.com2500city.com2500fang.com
+2500sz.com
+250340.com25285577.com253.com
253669vqx.com
+253952.com253u.com2541.com254game.com
+255616.com
+256app.com
25752.com258.com
+258288.com
25847.com
25863.com
+2588qq.com
25892.com
258ch.com258fuwu.com
258sd.com
258weishi.com
25992.com25az.com25dx.com
+25game.com25nc.com25pp.com
25pyg.com25q7ekcc67.com25rk.com
25tmw.com25un.com25wy.com25xg.com
25xianbao.com25xm.com25xt.com25yi.com25yz.com260.net
+260068.com
+261cik.com2629.com263-mail.net263.com263.net2639911.com
263cv.net
263em.com
263fc.com
+263idc.com
+263idc.net263live.net
263th.com
+263vps.com263xmail.com263y.com
263zw.com
+264006.com
26595.com265g.com265o.com
+266.la
+266680.com
+266wan.com2671111.net2678.com267pd1841t.com2686.com2688.com268v.com269.net
26923.com
26duc.com
+26host.com
26joy.com26ks.cc26ks.org26s.com26tc.com
26wan.com26youxi.com26yx.com
+270top.com
27270.com273u.com
27492.com275.com
275st.com
277sy.com27813000.com
278838mcu.com
+278wan.com2799web.com279love.com
279tt.com
279wo.com27al.com
27cat.com27dt.com27k.net27l.com27lvpai.com27sd.app27tj.com
27ugl.com27ws.com
+28.com
+281010.com
28123.com
+281669.vip
+281826.vip2827.com
28283.com2835177ccc.com283d.com2848168.com
28493.com2850.com
2853x.com2858999.com285u.com2886633.com
+288idc.com289.com2898.com28beiduo.com
28gua.com28ka.com
28khy.com28qp.com
28tui.com28yj.com
28zhe.com2903866.net2905.com2918.com2925.com
29293.com2929gou.com293.net
29592.net
+296350.com
29663.com296u.com
29797.com2980.com
+299906.com
+29dnue.com29nh.com29xf.com29yx.com2ai2.com2ai2.net
2amok.com2av7.com2bkw.com2broear.com
2bulu.com2caipiao.com2ccc.com2ccm.net
2chcn.com
2cloo.com
+2cname.com2cq.com2cto.com2cubeglobal.com2cy.casa
2cycd.com2cycomic.com
2cyxw.com
2cyzx.com
+2d3d5d.net2d7y-r40sjyfs45-e64z.com
+2danji.com
+2delf.site
+2df.me
+2dfire.com2dfire.info
2dior.com2dmaker.com2dph.com2du.net
2dyou.com2e56m039tk.com
2ed5d.com
+2eka.cloud
2erkzhke.shop
+2f.com
+2f91f8.com2fc5.com2fz1.com2fzb.com2gdt.com2gei.com2haitao.com2handsmt.com
+2haohr.com2healthshop.com
2heng.xin2hu.net2hua.com
+2ibook.com
+2ic.cc2ita.com
2itcn.com2j88.com2jianli.com
+2jiapu.com2k2k.com2kb.com2kfb.com2kno.com2ktq.com
2ktvb.com
2kxs.info2kxs.org2l4938221x.com
2lian.com
+2lieqi.com
+2ll.co2loveyou.com2lyx.com2m2j.com2ma2.com
2mjob.com
+2mould.com2mpq9iu440.com2muslim.org 2o.cx
2or3m.com
+2p.com
2pcdn.com2q10.com
2qupu.com2r3r.com
2rich.net2sdx.com2sey.com
+2sonar.com2speakarabic.com2sx.net2taobao2jd.com2tianxin.com
2tubaobao.xyz2tx.com
2uhod.sbs2umj.com2v8d.com2v9t3xf9z2.com 2w.cm 2w.ma
+2weima.com
2wxtb387.shop2xd.net2xiazai.com2y9y.com2yq.org2yuanyy.com2yup.com2yx8.com2z96vx20bx.com
2zhan.com2zhk.com
2zimu.com2zzt.com
+3-3.me 3.biz
+30.com
+30.net3000.com300033.info3000api.com3000idc.com3000soft.net3000test.com3000ways.com
3000xs.cc3001.net
+300113.com3006.vip
+300624.com3008268.com
300hu.com
300m-team.com
+300ppt.com
300zi.com
301-66cdn.com
+301688.com
+301mba.com3023.com
+302302.xyz3044.com306t.com30741.cc
+309577.com30aitool.com30c.org
30cgy.com30cn.net
30fun.com30ka.com
+30play.com
+30post.com
+30sche.com30th-feb.com
+30tqyb.com
+30w.co30w.net31062gs7f9.com310game.com
310s-2520.com
310tv.com
+310win.com311.biz
+311100.com
311777.cc
311mg.xyz
+311wan.com31260939.com312green.com313.com
+313033.com
+313515.com3145.com
+314pay.com
+315008.com3150315.com3152018.com3158.com3158bbs.com
+315958.com315banzhao.com
+315che.com315dian.com315fangwei.com
+315hyw.com315i.com
+315img.com
315lm.com
+315mro.com
315online.com
315sc.org315tech.com315z.net
315zw.com
31609.com316watches.com
+317608.com
317hu.com3188.la
318ek.com3198.com
31alu.com
31bxg.com
31byq.com
+31bzjx.com31cg.com
31doc.com
+31expo.com
+31fabu.com
+31food.com31games.com31gamestudio.com
+31gcjx.com31huiyi.com
31idc.com31jc.com31jf.com
31jgj.com31jiaju.com
31jmw.com
31jxw.com
+31knit.com
+31mada.com31meijia.com31ml.com
+31mold.com
31ns.info
31ppt.com
+31pump.com31rc.com
+31rent.com
+31seal.com
+31spjx.com31taoci.com31travel.com31wj.com31xj.com31xs.net
+31yarn.com31yj.com31yr.com
+31zscl.com
+320921.com320g.com321.net
+321002.com
+321009.com
+321274.com
321ba.com
+321cad.com
321cy.com
+321dai.com321fenx.com
321go.com
+321key.com
321mh.com321tips.com
+321zou.com322h.com
322wl.com3230.com3234.com3237.com
32456.sbs3259.com
+325999.com
+326pay.com
+32768k.net3280.com
32800.com3286.cc328f.com328h.com
+328vip.com3290.com32974z0361.com
32cdn.com32ka.com32r.com32rsoft.com
32wan.com32yx.com
+33.com3304399.com3304399.net
33105.com
+331234.xyz3312345.com3320.net3321.com3322.cc3322.net3322.org33226163.xyz3323.com3323399.com33246618.com
+332831.com333-555.com333.com3332266.com
+333333.com3335665.com
33360.com333666999.club3336683.com3337726.com3337756.com3337782.com33380xl.com3339999.net3339auto.com
+333a51.app
+333a58.app333bbb888bbb.com
333ck.com
333cn.com333com85.app333com89.app
333gw.com
333iy.com
+333job.com
333ku.com
333y3.com33442121.com
+334433.xyz
3344u.com
334837632.xyz
33519.com3356666.com3359.com3361.com
33655.net3366.com3366.net3366812ccc.com
+336685.com
+336688.net3366886633.com3366img.com3367.com336woool.com
+337000.com337y.com3387.com
+338888.net
+3389dh.com
33988.net
33aml.com
33app.net
33bus.com
+33erwo.com
+33fang.com33ip.com33iq.com
33jianzhi.com33lc.com33ly.com
33map.com
33map.net33oncall.com
33out.com33oz.com
+33tool.com
+33trip.com33xs.com33yq.com
33yqw.com
+33yqxs.net
+34.com
34347.com
+343480.com3454.com
+3456-1.vip3456.cc3456.com3456.tv
+345673.xyz
34580.com
345fk.com345huishou.com
+345idc.com345k.com346.com3464.com3499.co
34job.com34wl.com
+34xian.com
+35.com350.com350.net3500.com
+350200.com
+350abc.net350fjgdw.xyz
35195.vip352.com3520.net
+352200.com3525.com
35284.com
35321.com3533.com
35335.com
+354054.com3551.com
355xx.com
+356123.com
+35666c.com
35667.com
+356688.com
3566t.com
+356884.com357.com
357global.com358.com
35941.com3595.com
35app.com35ba.com
+35dalu.com
35dxs.com35go.net35hw.com35inter.com35jk.com35lz.com
35nic.com
35pic.com35q.com35sf.com
35xss.com
35zww.com36-7.com 36.la
360-g.net360-game.net
+360-jr.com360.com360.net3600.net
3600d.com
+3600du.com
+360114.com
+360118.com
+360500.com
+360510.com
36099.com
+360abc.com360adlab.com360adlab.net360adlab.org360aiyi.com360anyu.com
+360buy.com
360buyimg.com360buyinternational.com
+360byd.com
+360bzl.com360caifu.com
+360cdn.com360cdnjiasu.com360changshi.com
+360che.com360chezhan.com360chou.com360cloudwaf.com360daikuan.com
+360ddj.com360dlcdn.com
+360doc.com
+360doc.net360doc1.net360doc11.net360doc18.net360doc2.net360doc21.net360doc22.net360doc25.net360doc30.net360doc33.net360doc35.net360doc36.net360doc37.net360doc4.net360doc7.net360docs.net
+360doo.com360down.com
+360drm.com360dunjiasu.com
+360eol.com
+360fdc.com360gann.com360gogreen.com360gongkao.com
+360gtm.com
360guanai.com360hapi.com360hifi.com360hitao.com
+360hqb.com360humi.com360huzhubao.com
360hx.com
360hy.com360hyzj.com
360ic.com
360img.cc
360imgcdn.com360insurancemall.com
+360ito.com
+360jie.com360jinrong.net
360jq.com360jrjietiao.com360jrkt.com
+360jsj.com
+360kad.com
+360kan.com360kcsj.com360ksbd.com360kuai.com360kuaixiao.com360kuaixue.com
+360kxr.com
360lj.com
+360lnk.com360longyan.com
360loushi.com
360mb.net360midi.com
+360mkt.com
360os.com
360panyun.com
360panyun.net
360powder.com
360qc.com
360qd.com360qhcdn.com360qikan.com360qikan.net
+360qnw.com
+360qws.com360qyaq.com360safe.com360safedns.com
+360sdn.com
360shouji.com360shouzhuan.com360shuke.com360sides.com360sides.net360simg.com360sjrom.com
360so.com
360so.net
+360sok.com
+360sou.com
+360sou.net
360sousou.com360sportwatches.com
+360src.com360sres.com360stamp.com
360taojin.com
360tianma.com360tong.net
+360top.com360totalsecurity.com360tpcdn.com360tres.com
360u9.com
360uu.com
360vcloud.com
360vcloud.net360vrzy.com360webcache.com360weizhan.com360wenmi.com360worldcare.com360wscdn.com
360wulian.net
+360wyw.com
+360wzb.com360wzws.com
360xh.com
360xiehui.com360xinyongka.com
+360xkw.com360xlab.com360xlab.net360xlab.org360xyws.com
+360yao.com
+360ybj.com
+360yfw.com360yijia.com360youtu.com360yuxue.com360zhileng.com360zhushou.com360zhyx.com360zimeiti.com
+360zmr.com360zqaq.com
+361.cm
+361757.com3618med.com361a.com
361cv.com
+361dai.com
361mogame.com
361rv.com361sport.com
+362.cc
36240.com363.com363.net
363322014.com
3636.tech
+363635.com363u.com
+364000.com365.com
+365128.com
+365135.com36524hua.com
36543.com
+365500.com
36578.com
+365960.com
365autogo.com
+365azw.com
365bj.com
+365bmw.com365book.net365cego.com
+365cgw.com365chanlun.com
+365che.net365chiji.com
+365css.com
+365cyd.com
+365cyd.net365daan.com
+365dhw.com365diandao.com365digitalonline.com365ditu.com
365editor.com
+365eme.com365essay.com365f.com365gangqin.com
+365gcd.net365heart.com365hele.com
+365htk.com365huaer.com365ibank.com365ibuy.com
+365icl.com
+365ime.com365inews.com365j.com
+365jia.com365jiating.com365jilin.com
365jq.com
365jw.com
365jz.com
365kan.tv365kandian.com
+365key.com
365kl.net365liye.com
365master.com
365matrix.com365mmjg.com
365mx.com
+365ncg.com365pcbuy.com
365pk.com
365pp.com
365pr.net
+365pub.com365rili.com
+365sec.com365shequ.com
+365sky.com365sydc.com
365ta.com365time.com365ttcz.com365tvip.com365webcall.com365world.com365xiaoyanzi.com
365xiazai.com365xuet.com
365yg.com
+365you.com
+365yyf.com365zhaopin.com
+365zsw.net
+365zzx.com36612345.com3663.com
+366300.com36657.cc
+3669yx.com
366ec.com
366ec.net366kmpf.com366translation.com
36706.com3673.com
+367edu.com
+3688km.com368mall.com
+368tea.com
+369110.xyz
36932.com
36939.net
+369785.com3699.cc3699wan.com369wenku.com369y.cc36aw.com36dianping.com36dj.com
+36dong.com
+36hjob.com36jr.com36kr.com36kr.net36krcdn.com36krcnd.com36tw.com36ve.net
36wan.com36yc.com
+37.com
370fd.com371.com371.net3710167.com
37163.com371house.com371love.com
37201.com3721520.com3722.com
37274.com3733.com3733game.com3737.com
3737k.com373f.com
+373net.com
373yx.com
+375263.com
+375buy.com
+37692.site
37937.com
+3799qq.com
+379bst.com
+37biao.com
37bjw.com
37cos.com37cu.com37cy.com37dh.com37game2.com37gf.com
37gjw.com
+37gogo.com37hr.com37k.com37laboratory.com
37med.com
37pps.com
+37show.com37su.com
+37swan.com
+37tang.com
37tgy.com
37wan.net
37wan.one37wanimg.com37wanwan.com37wanwancdn.com37women.com
37www.com
+37wxwl.com37x4kf0q4n.com
37yzy.com
+37zone.com3800920.com
+380852.com
+380871.com38109222.com3817.com
381pk.com3839.com3839apk.com3839app.com3839app.net3839img.com3839pay.com3839pic.com
+3839vc.com
3839video.com
+383yun.com3851120.com385k.cc
+388155.com3887.com3892222.com3895566.com3899.net389j.com
+38blog.com
+38ejed.com
+38hack.com
38hot.net38hp.com
38hzt.com
38mhw.com38xs.com
+39.com
+39.net
+390seo.com
+391065.com3911.com391k.com393.com3937.com
+395413.com
39655.com
+3975ad.com
+3975ad.xyz3975app.com3975cdn.com
3977s.com
+399493.com
+399585.com399s.com
39ask.net39center.com39clean.com39cs.com39dg.com
+39ej7e.com
39fei.com39fengliao.com
+39h83s.com39health.com
39jks.com
39kan.com39kf.com39meitu.com39nj8382uq.com39shubao.com39shuwu.com39sk.com
39txt.com39ws.com
39yst.com
3a2studio.com
+3a3b3c.com3a4.net
+3a4b5c.com3alv.com3aok.com
3avox.com3b2o.com3bag.ru3bu.com3c2p.com
3chongmen.com
3cjob.com3conline.com3cpp.org
+3ct.cc
3cvrc.com3d-stereovision.com
+3d2000.com3d66.com3d9r.com
+3daima.com
+3dbuyu.com
+3dbuyu.net
+3dcat.live3ddayin.net
3ddaz.com3ddl.net3ddl.org3deazer.com
+3debut.com
+3dgali.com3dgenomics.org
3dhao.com
3dhoo.com3dinlife.com3djulebu.com3dkk.com
3dkunshan.com3dllc.cc
3dllc.com3dly.com
+3dm.pw3dmaxvip.com3dmgame.com
+3dmgame.hk3dmgame.net3dmo.com3dmomoda.com
+3dmxku.com
3dnew.com3doe.com
3dsjw.com3dsnail.com3dtakers.com
+3dtank.com3dtvbits.org3dwebyx.com3dxt.com
+3dxuan.com3dxy.net
3dzyw.com
+3e.net
3edns.com
+3elife.net
3eyes.org
3fang.com3fantizi.com3fda.com
+3g-edu.org
3g210.com3g3h.org3g48.com
3g567.com3gbizhi.com3gcj.com
+3gdisk.com
3gifs.com3glasses.com
3gmfw.com3gogogo.com
3gosc.com
3gpda.net3gpk.net
3gqqw.com
3gsou.com3gus.com
+3h.ink3h3.com3h77.com
+3heyun.com
3hmlg.com
3i8uiq2w.work3incloud.com3jdh.com
3jidi.com3jke.com3jlm.com3jzh.com
+3k.com
3k3cn.com
+3ke.cc3kew.com3kid.com3kismet.com3kjs.com3kk.com3kmq.com3ko.com
3kongjian.com3kr.com3ksucai.com3kyi.com
+3laohu.com3laz.com3lbrand.com
3lian.com3lmeter.com
+3lsoft.com3m099cey43.com
+3mbang.com3mh0yvx.com
3miao.net
3miii.com
3miko.xyz3mtw.com
+3mu.me
3muzn.com3n1b.com
3n80u.sbs3nbb.com3ny8.com3pat.com3poo.com3pw.net
+3q2008.com3qhouse.com3qj.com3qwe.com3r5y.com
+3renhe.net3richman.com3rkr.com3rotber.com3s.work
3s001.com3s78.com
+3scard.com
+3shuwu.com
+3snews.net3songshu.com3stl.com3sunway.com
+3thiku.com3tilabs.com
+3tmall.com3tomszob.com
3tsmh.com3tstore.com
+3u.com3unshine.com3uol.com3us.com3uww.cc 3v.do
3vjia.com3vjuyuan.com3vlm.net3vsheji.com
3wads.com3wcoffee.com3wfocus.com3wft.com3wka.com3wmm.com
3wzhaopin.com3x6gr4f829.com3x7.com3xgd.com3xiazai.com3y7h.com
3yakj.com
3yoqu.com3yt.com
+3yt.la3yun.net3ywepvs8n1.com3yx.com
3zbsy.com
+3zhijk.com3zmuseum.com4-xiang.com 4.biz4.cm
+4.plus400-lighting.com400.com4000011520.com4000022282.com4000034168.com4000066666.com4000278400.com4000286188.com4000500521.com4000730138.com4000773040.com
+400078.com4000892990.com4001006666.com4001113900.com4001180057.com
+400123.com4001581581.com4001817899.com4001890001.com4001961200.com
+400301.com
+400332.com
+400388.com40046aa.com4006055885.com4006216888.com4006300457.com4006339177.com4006541828.com4006631958.com4006681092.net4006695539.com4006758160.com4006787252.com4006800660.com4006806555.com4006906600.com4007051668.com4007108885.net4007112366.com4007777958.com
+400800.vip4008000000.com4008005216.com4008075595.com4008100800.com4008103103.com4008107107.com4008109886.com4008117117.com4008123123.com4008258399.com4008338788.com4008600011.com4008787706.com4008800016.com4008824365.com4008863456.com4008880999.com4008880999.net4008885818.com4009515151.com4009700778.com4009870870.com4009933377.com4009991000.com
+400cha.com
400cx.com400dianhua.com
400gb.com
400jz.com
+400lyw.com
+400num.com400qikan.com
400vv.com
+400web.com
40407.com
+404600.com
+404886.com
+404mzk.com
+404wan.com404youxi.com
+405400.com
406yx.com
+407wan.com4080517.com
+4080so.com
+408399.com
+408399.net40sishi.com40xk.com
41113.com
41188.com
411au.com4124.com
41324.com4143.cc4177.com
41818.net
+418999.com
+419600.com
+41game.com41gw.com41huiyi.com41ms.com
41wan.com41xt.com
42069.com
+421.co
42144.com4234cdn.com423down.com4243.net
425300.co
425yx.com426.ltd
+429006.com
+42trip.com42verse.shop42xz.com
43104.com4311.com
+431300.com
+432520.com
+435000.com
+435200.com4355.com
43578.com
+436400.com4366.com
+4366aa.com
+4366ga.com4366game.com
+4366pk.com4377.com437zhifu.com4393.cc4399.com4399.net43999yx.com4399api.com4399api.net
4399biule.com4399data.com4399dmw.com4399doc.com
+4399er.com4399hhh.com
4399i.net4399inc.com
4399j.com4399mail.com
+4399pk.com
+4399sj.com4399swf.com
+4399sy.com
4399wanju.com4399youpai.com
4399youxi.com4399yyy.com43ns.com43zhubao.com4417.com
44357.com4444448.com
44460.com444888qq.com44552121.com4480.cc4484.win
44971.com
44983.com44dt.com
+44h.co44iuno85gr.com44jj.com44vs.com
451057365.xyz
+453600.net
45575.com
45592.com456.net
+456600.com
4567w.com
456ii.com
456ss.com457.com4587.com
458kq.com459.org
45975.com
45app.com
45fan.com45io.com45ns.com45r.com45te.com
45win.com
45xie.com45yx.com
46412.com46575732.com
46644.com46771313.com4687794fd9.com
46934.com4694393.com
4699a.com46design.com
+46mlsv.com46ny920931.com
47295.com4735.com
47365.com4738.com
47473.com474b.com4765.com4779.com
47819.com47gs.com47oupy0408.com47rq.com
+47test.com47zu.com
+48.com4805555.com48106465.vip48157340.com
+48455m.com4846.com4848360.com
48575.com4869.cc
48905.com
48cdn.vip
48hao.net
+48kgfu.com48wo.com
+49.com
49358.com
49363.com4948.com49644913.com
+496601.com497-img.com497.com498.net499-img.com499youxi.com
49app.com49ms.net
49pic.com49r5eoqrd2.com
49vps.com
49xia.com
49you.com49yu.com4a40.com4abb.com
+4ading.com4afwcaec.com4ahcuejr.com4apx.com4aqphkjh.com4aqq.com4awabueq.com4bdnscru.com4butfphg.com4c5p021888.com
+4ci.cc
+4cm.cc
4cnzz.com
4cola.com4cun.com4dai.com4db.com4do71q84l1.com
+4dtime.com
4dwan.com4eglwkq.com4everdns.com4f61.com4f89.com
4fang.net
+4ggogo.com4gh6.com
4glte.org4gqp.com4gtoefl.com4h6s.com
+4hgame.com4hou.com4hpy.com
4i07hpvq.shop4inlook.com
+4jplus.com
4k123.com
+4k7trf.com4kbizhi.com
+4kgood.com
4kong.com4kya.com 4l.hk4lzr.com
4nk1.cyou4px.com
4pyun.com4q5q.com4s4c0dw764.com4sai.com4sender.com4sender.net
4sjob.com
+4sscrm.com4tdf.com
4thetooth.com4thworkshop.com
4to66.com4u1mx79nlw.com4u4v.net4w8.net4xiaoshuo.info
4xseo.com
+4xx.me4y2rl.cc4y4.net
+4ye.cc4yt.net4yx.com
+5-link.com5-love-0.com
+50-jia.com500.com5000.com
50004.com5000yan.com
50018.com
50027.com500cache.com500d.me
+500doc.com
500du.com
500fd.com
500gm.com
500hj.com500px.me500talk.com
500tb.com
+500wan.com500wancache.com500zhongcai.com5011.net
+501wan.com5026p06ot6.com
+503118.com
50331.net503error.com5054399.com5054399.net
505gg.com
505uu.com5066.com
+506fhq.com506u5nf5j5.com508mallsys.com
+508sys.com
50970.com50bangzh.com50pk.com
+50pkpk.com
50sht.com50vm.com50yc.com
50yin.com50zw.co50zw.com50zw.la
51-cf.com
+51-jia.com51-n.com51-visa.com
+51.com
+51.net5100.net
+510560.com
+510erp.com
510hb.com
+510xds.com
+510you.com
+511.la
+511023.com
51110.com
51119.com5117.com
+511718.com5117sell.com5118.com5118img.com5119.net511m.com
511mv.com
+511wan.com
511wh.com
511wx.com
511yj.com5120.com
+5120bb.com51269017.com51298888.com512play.com512wangxiao.com
512wx.com512youxi.com5132.com
+513337.com5137.cc
51386.com
5138zhuan.com
+514193.com
+514200.com5144wan.com
51508.com
51511.com
+515158.com5151888.xyz5151app.com
+5151sc.com5153.com
51555.net
51569.com5156lunwen.com5156rcw.com5158wan.com
+515app.com
+515car.com
515fa.com
515ha.com
+515ppt.com5163.com51658042.com51661182.com
+5166ys.com516a.com
+516edu.com
516ly.com
5170d.com5173.com5173cdn.com
+5177cq.com517best.com
+517cdn.com
517ee.com
517gf.com517hotel.com517huwai.com
+517idc.com517japan.com
517la.com
517la.net517lppz.com
517mh.net517ming.com
517mr.com
517na.com
+517rcw.com
+517tez.com
517xc.com5184.com5184edu.com5184pass.com5185.cc
51864.com
5187g.com5188.com
+518doc.com518h48fwg6.com
518yp.com
51969.com5199.cc5199.com
+5199yx.com
+51a.co51aimei.com51aiwan.com
51app.com
51art.com
51ask.org
51asm.com
+51aspx.com
+51auto.com51autogo.com
51autoimg.com51awifi.com
51azure.cloud
51b2b.com
51babybuy.com
51baigong.com
+51bale.com51banban.com51banhui.com51baocan.com
51baoshui.com51baoxiu.com
+51bbmm.com
51bbo.com
51besttea.com51bi.com51biaoqing.com
51bidlive.com
+51bike.com
51biz.com
+51bjrc.com
51bmb.com51bokao.com51bonli.com
51bos.com
+51bras.com51bushou.com
51buy.com
51bxg.com
51bzi.com
+51cacg.com51caiyou.com51callcenter.com51callu.net51camel.com51caocao.net
51ccd.com
+51ccdn.com
51cck.com
51ccn.com
51cdn.com51cdngo.com
51cfm.com51cg.com51chang.com
51changdu.com
51changdu.xyz51changxie.com
51chaoban.com51chost.com51chuli.com
51cir.com
+51cjyy.com
+51ckjr.com
51clc.com
51cmm.com51cocoa.com
+51code.com
+51coma.com
+51comp.com51cosmo.com
51cpm.com51credit.com
51csr.com
51cto.com
+51cube.com51cunzheng.com
+51cxyt.com
+51daao.com
51dai.com51daifu.com51daima.com
+51daka.com51dangpu.com51daquan.com51daxueedu.com51dc.com
51dfc.com
51dfg.net51diangu.com51diantang.com
51din.com51dingxiao.com
+51ditu.com
51diyring.com
+51djqu.com
51dmq.com
51dns.com
+51docs.com51dojoy.com
51dongshi.com
+51down.vip
+51dpub.com
51drv.com
+51dszn.com
51dtv.com51dugou.com51dz.com
+51dzrc.com
51dzt.com
51dzw.com
51ean.com
51ean.xin51easymaster.com
51ebo.com51ebooks.com
51edu.com
51eduline.com
51eim.com
51ejz.com
51ekt.com
51ele.net
+51emin.com
51emo.com51en.com
+51epei.com51eshop.com51etong.com
+51eyun.com51f.com51facai.com51fangan.com51fanli.com51fanli.net51feibao.com51feitu.com51finace.com51findwork.com
+51fire.xyz
+51flrc.com
51fpg.com
51fsw.com51fubei.com51fucai.com
+51fund.com
+51fxkj.com
+51fxzq.com
+51fytx.com51g3.com51g3.net51g4.com
51gaifang.com
51gfw.com51gh.net
+51give.org
+51gjie.com
51gjj.com51golife.com
51gonggui.com51gongxiao.com51goods.vip51gouke.com51gowan.com
+51gran.com
51grb.com
+51grfy.com51growup.com
51gsl.com51guanhuai.com51guoji.com
+51h.co51h5.com
51hanghai.com51hangkong.com51haofu.com51haojob.com
+51hchc.com
51hcw.com
51hei.com51hejia.com
+51hgtg.com51hicard.com
+51hika.com
51hjk.com51hlife.net51homemoney.com
51hosting.com51hostonline.com
51houniao.com51hr.com51huaji.com51huanhuan.com51huaya.com51hunningtu.com51huoyou.com
+51hvac.com
51hwe.com
+51hwzy.com
51ias.com
51ibm.com
+51ican.com
51idc.com51ideal.com51ielts.com51ifind.com51ifonts.com51ihome.com
+51img1.com
+51img2.com
+51img3.com
+51img5.com
+51img6.com
+51img7.com
+51img9.com
51imo.com
51ios.net
51ipc.com51itapp.com
51itstudy.com51iwifi.com51ixuejiao.com51jiabo.com
51jiameng.com
51jianxie.com51jiaoxi.com51jiecai.com
51jiemeng.com51jingsi.com51jingying.com51jishu.com51jiuhuo.com
51job.com51jobapp.com51jobcdn.com51jobdns.com51js.com51jt.com
51jucaimi.com
+51juhe.com
51jujibao.com51julebu.com51junde.com51junshi.com
+51jyrc.com51kahui.com51kaiye.com51kanong.com51kaola.net51kaxun.com51kehui.com51kf100.com
+51kids.com
51kik.com
51kim.com51kshen.com51kt.com51kupai.com51kupin.com51kywang.com
+51l.co51la.ink51labour.com51laiqiang.com51laizhe.com51langtu.com
51ldb.com
+51ldzx.com
51lesheng.com51lg.com51lianying.com51lingji.com51liucheng.com
+51lstt.com
+51lucy.com51luying.com
+51lyrc.com
51lzr.com
51mag.com
51maiquan.com51marryyou.com
51mdd.com
51mdq.com
51meeting.com51meigu.com
51meiliao.com51meishu.com
51miaoxin.com51microshop.com51miduoduo.com
+51miit.com51minsheng.com
51miz.com
51mkf.com
51mmt.com
51mnq.com51mo.com51mochu.com51mockup.com51mokao.com
+51mole.com
+51moot.net
51mrp.com
51msc.com
51mta.com51nearby.com
51newsapp.com51nicelearn.com
+51niux.com
51nod.com
51nwt.com51offer.com
+51open.net51opone.com
51ops.com
+51p.co51panhuo.com51papers.com
51passion.com
51peptide.com
+51pgzs.com51photo.vip
51php.com
51piaohua.com
+51pibu.com51pigai.com
+51ping.com51pinwei.com
51pla.com51pocket.com51pocket.net
51pos.com
51pot.com51pptmoban.com
51psj.com
+51puer.com51qc.com51qc.net51qianduan.com
51qianguo.com51qianvisa.com
51qicheng.com
+51qilv.com51qingjiao.com51qinxue.com51qnews.com
51qqt.com
51qtg.com
51qub.com51qudao888.com51qudong.net
+51qumi.com51quzhe.com51rc.com
+51rcsl.com51read.site51recovery.com51rencai.com51render.com51renpin.com
51renxing.com51report.com
+51rich.net
+51rong.com
+51room.com51rp.com
51rry.com
+51rumo.com51rz.org
+51rzzx.com
51sai.com51sanhu.com
51sao.net
51scb.com51school.com51sdjob.com
51sdx.com51search.net
+51seer.com51select.com
+51self.com51serive.com51sgg.cc51share.net51shashiji.com51shebao.com51shengxue.com
51sheyuan.com
+51shop.ink
51shoubei.com
51shoufei.net
51shoushi.com
51shubiao.com51shuobo.com
+51shyc.com
51signing.com
+51sjht.com
51sjk.com
51sjm.com
+51sjsj.com
+51sole.com51soulou.com51speeds.com
+51spjx.com
51ssl.com
51ste.com51sucaiyuan.com51suitui.com51sutong.com
+51sytx.com
+51szhk.com
+51talk.com51talkenglish.com51tanbao.com
51tao.com51taocan.com51taonan.com51taoshi.com51taowei.com
51taoyang.com
51tas.com51tb.me
+51test.net
51testing.com
51testing.net
51testing.org
51tgb.com
51tiangou.com51tietu.net51tijian.com51tingyi.com51tiqianle.com
+51tjhr.com51togic.com51tonglu.com51tools.info51touch.com
51toufang.com
+51tour.com51touxiang.com
51tra.com51tracking.com51trust.com51ttxue.com51tuiyi.com51tunhuo.com51tv.com51tv.net51tvbao.com51tvrom.com
51tys.com
+51tyty.com51tz.com
+51u.co51uc.com
51ukf.com
51uyi.com51vhost.net51vimeo.com
51vip.biz51vs.com51vv.com
51vv2.com
+51w.co
51wan.com
51wangdai.com
51wanquan.com
+51wcad.com51wcity.com
51web.com
51weblove.com51websec.com51weihu.com
51wendang.com51wf.com51wincai.com
51windows.net51wj.com
+51wjrc.com51wnl-cq.com
51wnl.com51world.win51wp.com
51wtp.com
+51wxjz.com
+51wydj.com
+51wyfl.com
+51wyrc.com
51wzg.com
+51wzxz.com
51xbx.com
51xcr.com
+51xcrc.com51xiancheng.com
51xianwan.com
51xiaohua.com51xiaolu.com
51xie.com51xingjy.com51xinhu.com
51xinyuan.com
51xnj.com
51xpj.com51xuanmu.com51xuanxiao.com
+51xue8.com
51xuetang.com51xuetongxin.com51xuewen.com51xuexiaoyi.com
+51xxsp.com51xxziyuan.com51y5.com51yabei.com51yangsheng.com
51yanwang.com51yasai.com
51yey.com51yhdai.com
+51yhgj.com51yidun.com
+51yilu.com
51yip.com
51ykb.com51ym.me
+51ymxc.com
51yonggao.com
51you.com
51youdian.com51yougo.com51youth.com
+51youz.com51ys.com
+51ysrc.com
51ytg.com51yuansu.com
51yue.net51yuepin.com
51yueqian.com
+51yund.com51yundong.me
51ywx.com51yxcyy.com
+51yxky.com
51yxm.com
+51yxwz.com
+51z.co
51zan.com
51zbz.com
51zbz.net51zd.net51zhangdan.com
51zhantai.com51zheduoduo.com
51zhi.com51zhishang.com
51zhizhao.com51zhucai.com51zhujia.com51zixiu.com51zjedu.com
+51zjxm.com
51zmt.net
+51znyx.com51zr.com
+51zsjc.com
+51ztzj.com51zx.com
51zxw.net
+51zyrc.com
+51zyzy.com
51zzl.com
52-ic.com520.com520.net
+520038.com
5200e.com
+520101.com520520520520520.com
+520740.com
+520810.xyz
+52091w.com
520cc.com
+520cfc.com
+520chs.com
520diaoyu.com
520fx.com
520gexing.com520hello.com520hhht.com
520it.com520jiabo.com520jita.com
+520lbl.com520link.com520love520.com
+520lpy.com520mingmei.com
520mojing.com
520ok.net
520qr.net520touxiang.com520wajueji.com
+520way.com
520xiazai.com
520xp.com
+520xst.com
+520xy8.com520yidui.com
+520z-2.com
520zg.net5210601.com
52112.com52115211.com5211game.com
+521698.com
52177.com
+521che.com521dayu.com
+521led.com521logo.com
521qw.com
+521rmb.com521szlx.com521tieba.com521u.com
521up.com521watch.com5221xsc.com52237377.com
522de.com
522gg.com
+523333.com
52372.com523touzi.com
52419.net524399game.com
52488.com525.life
+5251yx.com5253.com5258.net
+5258da.com
525zb.com
525zf.com
+526183.com
+526537.xyz
52676.com
+526net.com
+527578.com5277.com
+527ice.com527meeting.com
527pk.com52841819.com
+528500.com
+528529.com
52892.com
+528day.com52ai.com52ali88.com52alipay.com52analysis.com52appok.com
52article.com
+52asus.com52audio.com
52ayw.com
52bar.com
52bjd.com
52bji.com
52bjy.com
52bqg.com
52bus.com52by.com
+52cake.net52ch.net
52cha.com
52che.com
52cik.com
52ckd.com52click.net52cmajor.com52code.store52cv.com52da.com52debug.net52design.com
+52dian.com52dianbo.com52digua.com
+52dmtp.com
52doc.com
52dsy.com
52dtv.com52dus.cc
52dyy.com52ebook.com
52edy.com
+52enku.com
+52erhu.com52fangzi.com
52fanxing.com
52feijuba.com
52fun.com
+52fzwg.com52gg.com
52grz.com52guixi.com52guzhuang.com
+52gvim.com52hardware.com
52hbl.com52hejia.com
+52help.net52hibuy.com52hotel.net
+52hrtt.com
52hrttpic.com
52hwl.com
52hxw.com
+52hyjs.com52ig.net52im.net52investing.com52inwet.com
52itstyle.vip
52jbj.com
+52jdyy.com
52jianpan.com
52jiaoshi.com52jiaozhou.com
52jingsai.com
+52jisu.com52jj.net
+52jrjy.com
52js8.com
+52jscn.com52jt.net52jubensha.com52juqingba.com
+52jxrc.com
52jxt.com
52kan.vip52kanxiaoshuo.com52kb365.com52kd.com
+52kfly.com
+52leho.com52liaoshen.com
52life.cc52linglong.com
+52lion.com52luohu.com52lvyou.com
+52m.co
52mac.com
52maicong.com
52mba.com52mengdong.com
52mhw.com
+52miji.com52miniapps.com
52mip.com52ml.net52mqbiao.com
52mtc.com52muyou.com
+52myqq.com
52nantong.net52niuka.com
52njl.com
52nyg.com52pcfree.com52photo.com
52pht.com52pi.com52pi.net52pictu.com52pk.com52pk.net
+52pkvr.com52playgame.com
52podcast.com52pojie.com
+52post.com
52qixiang.com52qj.com
+52qmct.com
+52qqba.com52qudao.com52queji.com52qumao.com52rd.com52rd.net52rental.com
52ruodian.com
52samsung.com
52shangou.com52shici.com
52shijing.com52shipping.com52shufa.net
52shuw.cc52shuxue.com52solution.com
52songshu.com52souluo.com52souxue.com52survey.com
52svip.cc
52svn.com52swine.com
+52sykb.com52t1.com
52tat.org52tc.co
52tc.info52tech.tech52tesla.com
+52tgfc.com
+52tian.net
+52tiny.com
52toolbox.com
+52toys.com
52tps.com
52tql.com52tt.com
52tup.com
52tzs.com
52udl.com
52vps.com52vr.com
+52w.co
+52wana.com
+52wanh5.cc52wenku.com
+52wjzb.com
52wlw.com
52wmb.com
+52wubi.com
52wyb.com
+52xcyx.com
52xianbao.com52xiaoshuowang.com52xiaoyuan.net
52xie.com52xinyou.com52xitong.com
52xiuxian.com52xiyou.com
+52xydl.com
52xyz.com52xz.com
+52yawa.com
+52ybcj.com52yh.com52yifei.com52yitian.com52ykjob.com52youju.com
52youpiao.com52youtu.com52yushi.com
+52ywan.com
52ywp.com
+52yxkj.com
+52yxyx.com
+52yyxk.com52z.com
52zhaopin.com52zixue.com
+52zjkj.com52zx.cc52zx.net
52zxw.com
+530.co
+530311.com5306.com5308999.com
+531314.com5317wan.com531pool.com
+532106.com
+532117.com533.com533.net
53326.com5334.com5336.com5338.org533y.com
53431.com
53471.com
+535400.com5366.com5367.com537.com
+537300.com
+537309.com5378067.xyz
+5379yx.com537a.com537images2.com537images4.com537images5.com
+538618.com5395.com
+539831.vip53ai.com53chewu.com
53chg.com
53dns.net
53dns.org
+53info.com53iq.com
+53miji.com
53nic.com53r.com
+53shop.com
53shubiao.com
53wan.com53wy.com
53xjd.com53xt.com
53yao.com53yu.com
+54.com5403976.vip
54114.com
+541300.com542i.com5433.com5458551.vip545c.com5499.com54ak.com54banana.com
54benniao.com54doctor.net
54doctors.net
54hcz.com
54heb.com54im.com
54jkw.com
54job.com54ks.com
54lol.com54maimai.com54md.com54op.com54pictu.com54seaman.com54sh.com54traveler.com
54tup.com
+54tusi.com54watch.com54xiaoshuo.com54young.com54yt.net54yuqing.com
54zxy.com 55.cc
+55.com
+550400.com
+550416.com
5507p.com
+550891.com5509.cc5510928.com
55178.com
55188.com5523.com5525game.com
55344.com
+553668.com554030cc.com
+554488.com5548.net555000d3.com5551557.com55552121.com55555558.com555aa555bb.com555bb666cc.com555bb888bb.com555bb999ww.com
+555edu.net
+555yst.com5566.net5566zhuang.com5567.me556z.com557.net
55706.com55731hs6.com5577.com5588.tv
+558idc.com
55935.vip5599.com
55bbs.com
55dai.com
+55dian.com
55doc.com55duanzi.com55dushu.com55e5.com55haitao.com
+55hike.com55hl.com55hl.net55i8.com
55idc.com
+55jisu.com55jj.com
+55k.co55kantu.com55kk.net55la.com
+55lady.net
55lkk.com55r5.com
55shantao.com
+55tuan.com55xiazai.com55xw.net55y5.com55zhoucheng.com55zs.com56-7.com
+56.com
+560.im
56015.com
560wf.com56104.cc5611.com
56114.com
+561218.com
56135.com5629.com5636.com
56360.com
+564.cc5648.cc56506666.com5654.com56559971.com566.com5669.com
+566job.com567.baby5676.com
+5678la.com
+567909.xyz5679abb.com
+567idc.com5684.com
5684t.net
56851.net
+568q40.sbs569.com56a.com
56ads.com
56beijing.org
+56c.co
+56care.com
56che.com56china.com
+56clte.org56dagong.com56dichan.com56dr.com56dr.net56dz.com
56ggb.com56gk.com
56img.com
56img.net
+56imgs.com56jg.com
56kad.com56laile.com56md.com56ml.com56mp.com56nb6oo06g.com
56pan.com56qq.com
56shangpu.com
+56show.com56shuku.org56steel.com
+56tchr.com56tj.com56uu.com56ye.net
56yun.com56zhibo.com
56zzx.com
+57.net
57023.com5710266.com
+571400.net571free.com
571xz.com57273vy9x0.com
57357.vip
+573buy.com5755.com576.com
57608.com
57616.com57651454.com
57665.com
576tv.com57781057.com
57821.com
+57auto.com57bm.com57dp.com
57gif.com57go.com
+57mail.com57px.com57qy.com57sc.com57sh.com57tibet.com
+57tuan.com57us.com57uu.com
57yy.site
57zhe.com
+58.com5800.com
+580114.com
+580168.com
+580590.com
+580ban.com
+580dns.com
+580eda.net
580jz.net580k.com580plan.com
580tequan.com
58199.com
+582116.com
+583316.com
583go.com
+58553v.com5858.com
58611.net58620888.com5866.com
+587343.com5884.com5888.tv
+588991.com
+588art.com
588ku.com
+589398.com5898yun.com
58abb.com
58antenna.com
58auv.com58bh.com
58buy.com
58cgg.com
58chaiyou.com
58che.com
+58chxf.com58cloud.com
+58coin.com
+58corp.com
+58cyjm.com
+58dadi.com58daojia.com
+58demo.com
58display.com58dns.me
58dns.org
58duihuan.com
58eventer.com
58fkb.com
+58food.com
+58game.com58ganji-corp.com58ganji.com58ghost.com
58hexiang.com58ib.com58insure.com
+58iwan.com
58izl.com58jb.com58jixie.com
58jmw.com
58jurenqi.com
58kad.com
58kuaipai.com
+58kuku.com
58lingshi.com
58lovepet.com
58mhg.com
+58moto.com
58net.com
58peilian.com
58pic.com
58pxe.com58q8.com58qz.com58school.com58shangban.com58supin.com
+58task.com58touxiang.com
58trz.com
58ubk.com
58uxd.com
58wan.com
58wangwei.com58wanwan.com58woyou.com
58wzd.com
58xinghuo.com58xinrui.com58xs.la58xueche.com58xuexi.com
+58yiji.com58youtui.com58youxi.com58yuesao.com58z.net58zhuiju.com
+59.com590m.com
59120.com
+591237.com
59168.net
59178.com5918656.com5918dyw.com
+591918.com
591change.com
+591cto.com
591hx.com
591master.com591moto.com591mrzx.com
+591syd.com
+591wed.com
+591wsh.com
591wy.com
+591yhw.com
5923d.com
592zn.com59313313.com
59370.com
593yx.com
5945i.com5947.net
59490.com595.com
+595818.com
59598.com595dlxzbanone.com595image.vip
+595led.com
596fc.com597.com
59706.com
597guilin.com
597mm.com
+597rcw.com
59881.com59888888.xyz599.com5999.tv
599ku.com599x.com599z.com
59b2b.com59baike.com59di.com
59dun.com
59edu.com
+59iedu.com
59iwh.com59jt.com59ni.com59pk.net59rj.com59store.com59sy.com59w.net59wanmei.com59wj.com59yx.com5a8.org5aaa.com
5acbd.com5adanhao.com5ag.net5ailiwu.com5aivideo.com
+5aixia.com
+5aiyoo.com
5ajob.com5any.com5aq.net
5auto.net
5axxw.com
+5baike.com5ber.com
5bite.com5biying.com5bjm.com
5ccic.com5cda.com5ce.com
+5ceimg.com5cgo.com
+5cocoi.com
5cpod.com
+5d.ink5d2ede2.com5d6d.com5d6d.net
+5dashi.com5dfp.com
+5dfsd2.com5dgbgv941b.com
5ding.com
5djbb.com
+5dmail.net
5down.net
+5dplay.net5ds.com5dwrbux.com5earena.com5earenacdn.com
+5eplay.com
5eplaycdn.com5etz.com
5ewin.com5fen.com5fsxerx.com5fun.com
5fwan.com
+5gcdnx.com
+5gimos.com5glianc.com
5goto.com5guanjianci.com
5gwan.com
5gxsd.com5gxt.com5gy.com5gzm.net
+5h.com5ha.net
+5had0w.com5haoxue.net
5hhyu.com
+5i.com
5i591.com
5i5aj.com5i5j.com5i5t.com5i9u.com5iag.com5iag.net
5iape.com5ibc.net
+5ibear.com
5ibug.net
5icbs.com5ich.net
5ichecker.com5ichong.com
5icomment.com
+5icool.com5idc.com
5idev.com
5idhl.com5idream.net5iec.com5iecity.com5ifapiao.com
5ifit.com5iflying.com
+5ifund.com
5igcc.com5igupiao.com
5igzw.com
+5ihome.net5ihuish.com
+5iidea.com
+5ikang.com
+5iliao.com
5ilog.com5iluying.com5imeishi.com5imoban.net
+5imomo.com5imusic.com5imxbbs.com
5iops.com5ipatent.com5ipkwan.com5isanguo.com
+5isohu.com
5iucn.com
+5iweix.com5iximai.com5ixuexiwang.com5iyq.com5iyuyan.com
5izzy.com5jingcai.com5jinzhishu.com
5jjdw.com5jli.com
5joys.com5jwl.com5jxp.com5k.work5ka30l5885.com
5kbox.com
5kcrm.com
5kcrm.net5kda.com5khouse.com
5kolrzr5.work5kpnbt.shop
+5kwuke.com
+5l29ff.xyz5lanren.com5lbw.com5lux.com
+5m5m5m.com
5mapk.com
5mbxg.com
+5mouse.com5nd.com5nnj.com5nnkzmx.com5ooq.com
5owg.shop5pao.com5pb.net
+5plus1.net
+5q.com
5qm5s.net
5qwan.com
+5qzone.net5r1.net
5read.com
5ritt.com
+5rs.me5s4f.com
5s886.com5sbhwgx.com
+5seals.com5see.com5sem.com5sha.com5shubook.com
5snow.com5sw.com
+5tangs.com5teacher.com5th.zone5thhospital.com5thspace.net5thspace.org5tjps9c62j.com
+5tmobi.com5tmovice.com5tps.vip
5tscm.com5u18.com5u3d.com5u5u5u5u.com5uchina.com5uec9e3sj2.com
5umao.com5upm.com5usport.com
+5uu.us5uu8.com
5uw4.site5v13.com5v55.com
+5w.com
5w123.com5w5.com5w52.com5w5w.com5waihui.com
+5wanpk.com
5web.site5wx.org5x54.com5xcg.com5xiaobo.com
5xini.com5xw.net5xyouse.com5y51.com5y6s.com5yang.cc5ydj.com5yfpffh.com
5yhua.org5ykj.com5you.cc5you.com5youchou.com5zai.com5zg.com5zls.com5zw.com5zy.net5zzbets.com6-china.com 6.biz6000f6l4n8.com6000feet.com
+600280.com6006.xin
+600895.com
+601601.com601book.com602.com
+602img.com
603ee.com6046.net
+605-zy.com
+605dns.com605zy.co
+607.tv6073168.com608.com608.vip
+608082.com
6080d.com60dj.com
60kan.com
60mil.com60nm.com60oa.com60pj.com60qc.com
60sky.com
60u1x.app60wr.com60yp.com60zc.com
+61.com
+610115.com
+610213.net
61029.com
611111119.xyz
611qk.com
+612345.com
+612459.com6137.net
61611.net6163.com6164.com
61658.com6168511.com
+616pic.com
+616wan.com6186.com
+6187wo.com
618bg.com
618cj.com
+618day.com
618hr.com
618ky.com618tech.com
618waihui.com
61916.com
61916.net61baobao.com61bb.com
61bbw.com61cloud.net61co.com
61diy.com
+61draw.com61ertong.com
+61gequ.com61hd.net61hr.com61ic.com
+61info.com61k.com61kezhan.com
+61mami.com61mc.com
61psy.com61sheji.com
61sou.com61tg.com62126tt.com62212366.com
62669.com626x.com628.com
+62844u.com
62dns.com
+62game.com62wy.com6300.net
+630book.co63149555.com631r.xyz
63243.com6328.net632news.com634image.com634image.vip6360.com6383.com
+638300.com
+639311.com63cj.com
63diy.com63fl.com63g.net63pe.com63u.net63yx.com63yy.com64090909.com641.com
642online.com
64365.com
64518.com
+645250.net6453.net
64538.net645w.com
+646000.com6463.com64644444.com
648sy.com64ba.com
64dns.com64ds.com
+64foot.com
64gua.com64ma.com64mv.com64oak78y99.com
64pay.com64ptd74095.com
+65.com6501111.com
+651155.com
65119.com
+651700.com6528.com
+654320.com6543210.com
654321wan.com655u.com
655yx.com65601111.com
+656126.com65650000.com
6571n.com
65875.com
+659595.com65993zubo26633.com65liuxue.com
+65mhxy.com6600.org66000111.net
+6601rr.com
+660378.com66083797.com
660pp.com66123123.com
66152.com
66168.net6617.com66173yx.com6621268.com662city.com662p.com
+663661.com
66378.com
66388.net
663jx.com66446200.com
66460.com6655.com6655.la
66580.com6660333.com
+666127.xyz
66616373.site6665.com
+666532.xyz
+666546.xyz
+666548.xyz6666519.net666666.host66667aaa.com
+6666sa.com6666xsw.com
+666834.xyz66688.photo
+666gps.com
+666idc.com666j.com666kuaishou.com666kuaishou.net
+666pic.com666post.com666scly.com666shuwu.com
+666wan.com
+666wan.net
666xinxin.com66701288.com
6673p.com66772121.com
+667744.com6678net.com
66825.com6686com1042.app6686com740.app6686com747.app
6686vip15.app
6686vip16.app
6686vip21.app
6686vip26.app
6686vip56.app6688.com
+668app.com
668cdn.cc
+668cdn.xyz
668lw.com
+668map.com
+668wan.com66930909.com
+669322.com6695.com66988.tv
+669pic.com669play.com
669ye.com
669zw.com66a.net
+66call.com66ds.net66fandou.com
66han.com66health.net66huigo.com66in.net66jiedai.com
+66laws.com66mi.com
+66mobi.com66money.com
66mz8.com
+66n.co
66nao.com66nh.com
66perfect.com
+66play.com
66rjz.com
66rou.com
66rpg.com66ruian.com
66shouyou.com66sj.com66ss.org66sy.com
+66team.com66to.net66tv.tv66u.com66ui.com
66vod.net66wc.com
66web.com66weiyou.com66wz.com
66xue.com66y.com
66you.com66zhang.com66zhizu.com66zhuang.com
+67.com
67017.com6711img.com671992tc08.com672g.com
+673m2f.com
67479.org
+6749044.cc
6760x.com676z.com
+678119.com6786666.com6787.com
67876.com
+678869.com
67888.com6788888.net6789.com6789che.com
+6789sm.com
678cn.com
+678edu.net
678ie.com
678py.com678tiyu1.app
678vr.com67az.com67gu.com67it.com
67joy.com67mo.com
+67tool.com67wanwan.com67wx.com67y.com
67yes.com
+68.com680.com68120120.com
+681314.com6816.com682.com
68211.com6822.com6832123.com6844.com68606060.com68659061.com6868.com6868shop.com
+6868yx.com6888.tv
+688dns.com
688xc.com
68978.net6899wan.com68china.net68design.net68eg.com
68gainian.com68ge.com68h5.com
68hanchen.com68hr.com
68jmw.com
+68play.com
+68team.com
+68u.co
68web.net
68websoft.com
+68zhan.net68zixun.com
+69.com
69260.com
+692657.com6934.net
+693975.com
69478.com6949.com
+695157.com
+695175.com
69525.com
+695275.com
+695828.com
+695ljg.com
69758.com698hechkn17.vip
+698wan.com69916666.com699g.com
699h5.com
+699pic.com69a9017.xyz69cy.net69hr.com
69mok.com69tianqi.com
69xiu.com69xx2716.xyz69yc.com69ys.com
+6a.com6a8a.com6a9axab.xyz6aas.com6an8.com6api.net6apt.com6arrkbb.com6b3b.com6bag.ru6bbk.com
6bdns.com6c6c.com
6cang.com6cit.com
6cnzz.com6cyfvvs.com
6d4d5.com6d4g.com6d7d.com6dan.com6dbx.com6diy.com
+6ds.me
+6du.in
+6duoyu.com6eat.com
6edigital.com
6fcsj.com6functf.com6fwumpk.com6g5fd1a.com6gh4.com6ght.com6glz.com6gz6h1ze8r.com
+6hgame.com6huo.com
6hwan.com6hytbht.com6ict.com6ie6.com6k11.com
+6k1p5.site6k6g.com6k9k.com6kw.com6kxz.com
+6laohu.com6li.com6lk.net6ll.com
+6ls.cc6m5m.com
6miii.com6miu.com6miu.net6p7q8c3oa4.com
6pifa.net
6plat.org
+6puppy.xyz
6qg5gqww.shop6quspne.com6ren.com
+6rencn.com6renyou.com
+6rooms.com6ruqexa.com
+6s4qki.com6s54.com6sfg.com6sq.net6t12.com
+6tdoe3.xyz6tennis.com6thhosp.com
6tiantian.com6tie.com6tt.com6twrte12ft.com6txx.com6u7zbpnt.com6u9muvn94m.com
+6v.com6v6.work6wan.com6wtx.com
6wwww.com
6x.studio6x69f31vso.com
6xcdn.com6xd.com6xeuemq.com6xigema.com6xiu.com6xw.com
6y78o.sbs6ykxuyx.com6yoo.com6young.site6yso.com6yueting.com
+6yuexi.com6yxk.com
6yyy7.com6z6z.com6za0l6fjl0.com6zu.com6zy37f4df2.com
7-meeting.com7-mi.net7-vk.com7-wx.com 7.biz
+70.com
+700618.com
70098.com700chat.com700live.com700megs.com
700mh.com701.com
7017k.com
+701sou.com
+703804.com
70524.com70573305.com7080edu.com7082.com70dh.com
70dir.com70gm27345d.com
70god.com70jj.com
70mao.com70pf2fj3sd.com
70ppt.com70r8fo5.com
+70soft.com70ym.com70yx.comzzzzaaaa.com
zzzyy.com
+71.com
+71.net
+711199.com
71133.com7114.com7116dns.com711hospital.com
711pr.com7120.com
+712100.com
71360.com7139.com
71390.com714.com
+715083.com
+715300.com7163.com71654971.com
71668.net
71683.com
71714.com7172737.com7176.com
71908.com7192.com719c.com
71acg.com
71acg.net71baomu.com71baomu.net
71big.net71dm.com71e.com
+71edge.com
+71edge.net71edge.work71elink.com71go.com71k.com
+71lady.com
+71lady.net71p.net71study.com
71tao.com
+71tech.com
71txt.com71wl.com71xe.com71xk.com
+72.com
+720582.com
720ku.net
720lu.com
720pmovie.com
720static.com720think.com
720ui.com
+720yes.com
+720yun.com720yuntu.com7210.com7211.com
72177.com7217kf2961.com7230.com
+7239ll.net7255.com72586080.xyz726p.com7273.com
+727pay.com7280.com7298.com
+72byte.com
72crm.com
72crm.net
72crm.org72dj.com
72dns.com
72dns.net72e.net72en.com72g.com72gu.com72h6hn4r3e.com72la.com
+72link.com72qq.com
+72whys.com
72xit.com
+72xuan.com
+72y.co
72yun.com
+72zhan.com
+731.tv73110010.com
7319n.com73232yx.com
+732732.com
+734969.com7360.cc737.com
73789.com
+7384tv.com
+738888.xyz
7399t.com73bc.com73bt.com
+73card.com73mq.com73so.com73tz.com73zw.com
+74.com7428.net
+743388.com
744zy.com
+745998.xyz7477.com
+747wan.com
+749997.com
74cms.com
74hao.com
74ya4.app75.team
75111.net
75184.com
75271.com7534w8m16e.com
75367.com75510010.com
75565.com756u.com7574.com
75757.com
757dy.com7580.ltd
75982.com
+75g.co75ll.com75mi.com
+75n474.com
+75team.com75ww.com75xn.com
76065.com7618.com761a.com7654.com7659.com765i.com765q.com766.com7663.com
+766345.com
+76660g.com
+76660h.com76660ios.com
+76660j.com
+76660o.com
+76660p.com
+76660t.com
+76660u.com
+76660v.com
+76660w.com
+76660y.com
+766app.com
766er.com766test.com766z.com767qkdj34u.com767stock.com
76868.com7688.net
76963.com
+769car.com76ab.com76baobao.com76bb.com76dongdong.com76ju.com
76pay.com76pf.com
+76s.co76ty.com76wu.com76y.com76zu.com77005163.xyz7711.com77119159.com
+771633.com
77169.com
77169.net
+771700.com7717wan.com
+772220.com
+7722wx.com7723.com7723img.com7724.com
+7724yx.com7725.com7729.com
772it.com
772px.com
77313.com7735.net7744wan.com
77495.com
77521.com7756.org
7766.info7766.org
77745.com
+777524.com77772121.com7777733.com777aa666bb.com777bb555ww.com
777biubiu.com777lala.com777moban.com
777sy.com777xx888kk.com7788.com
+7788js.com7788sky.com
7788tools.com
+7788xj.com7789.com
778buy.cc
+778buy.com
77991.com7799520.com
+779wan.com
+77bike.com77bx.com
+77ccda.com77cr0ip236.com
+77dd23.com77dushu.com77ebooks.com77fanwen.com77hd.com77hudong.com
77itv.com77kp.co77l.com
77lux.com77mh.app77music.com77nt.com
77nt.info77piano.com
+77shuku.la77socks.com77tianqi.com
77vcd.com77wenku.com77xj.com
77xmd.com77xsw.la77ys.com77zhangh.com77zhanghao.com77zn.com
+782653.biz782e2u6m99.com
782yx.com
78302.com
78360.net78654321.com7881.com
+788899.com788b.com788v.com7890.net
78901.net
789gg.com
789hi.com
+789hsw.com
78bar.com78books.com
+78dian.com
78diy.com78dm.net78ee.com78fz.com78gk.com
78h34.com78hr.com78md.com78oa.com78tp.com
+79.com7914.cc
+793360.com
+793688.com7937.com7940.com
79432.com796y.com
7979u.com
+797sun.com7988wan.com
+798com.com
+798edu.com
798lu.com798tiyu.com
+798ydh.com798zb.tv799.net7999.com7999.tv
79999.net
+799job.com
79abc.com
79cha.com79da.com
79tao.com
79yougame.com79yx.com7a31jmf.com7a8k.com7ahr.com7analytics.com7b2.com7bip9h1k5s.com7caiyun.com
7capp.com7ccj.com7ccsch4.com7chacha.com
+7cname.com7cnv.com7cxk.com
7didc.com
7down.com
7down.net
+7dtest.com
7dugo.com
7east.com7ed.net
+7edown.com7eo8cc932r.com7f4h3dur4f.xyz7fei.com
+7fgame.com7flowers.com
7forz.com
+7fresh.com7gongzhu.net
7gugu.com7gz.com7h1fg6b6kd.com7hcn.com
7help.net7ho.com7hon.com7hpt.com
+7huang.org7i2.com7icp.com7ipr.com7its.com
7j4piuce.shop7j4tpio.com7jia.com
7jia2.com
+7jiaqi.com
7jjjj.com7jk.com
7jt8y.app
7juju.com7junshi.com7k35.com7k7k.com7k8k.com
+7ka.co7kk.com7kla.com7ko.com7kww.net7kzw.com7littlemen.com
7livq.app7lk.com7lw.com
7mah2.com
+7mo.cc
7moor-fs2.com
7moor.com7msj.com7mx.com
7mz3a.com
+7nepal.com7net.cc7nmtj1c.com7oh.net7pa.com7paiqun.com7pei.com7po.com7q5.com
7qile.com7quw.com7r7z.com
7road.com
7road.net
7ronggame.com
+7runto.com7rv.net7rz37dp998.com
7sfashion.com7sj.com
+7souti.com
7sown.com
7soyo.net7su.com7syc.com7t9.com
7tapp.com
+7tenet.net
+7tgame.com7tnt.com7tou.com7tt3333.com7tui.net7ugl.com7usa.net7v6.net7vd7.com7vk.com
7vmq.site
+7wa.cc7wan.com
7wate.com7wee.com
+7wenku.com
+7wenta.com
+7wenyi.com
+7wnews.com7wsh.com7wsh.net7wx3675l72.com
+7x24cc.com7x7n.com
+7xdown.com7xm.net
7xxbj.com7xz.com7y5.net7y7.com7yc.com7yigame.com
+7youxi.com
7yuki.com7yun.com7yz.com
+7yzone.com
+7zgame.com
7zhan.com
7zhou.com7zkj.com7zm.com
8-008.com
+8-host.com
80-go.com
+80.com 80.hk80000.cc8001dns.com
+800423.com
+800535.com8006506.com8006511.com
+8006tu.com
+800820.net8008202191.com8008205555.com80088886.com8009900800.com
+800app.com
800bamboo.com800best.com
800bestex.com
+800buy.com
+800cdn.com
800du.com
800hr.com
+800jcw.com
800li.net
+800lie.com
800lj.com
+800mei.net800pharm.com800pifa.com
800tu.com
+800tzw.com
+800vod.com
+800wen.com
800xs.net
+800you.com
800youhuo.com
80166.com
+802203.com807.com
80710.com
80800.vip
+8080bl.com
8080i.com8081.net
8082audio.com808w.com8090.com8090.pk
+809090.xyz8090app.com8090cdn.com
+8090mt.com8090vision.com
+8090xx.com
+8090yx.com8090yxs.com80baicai.biz80bi.com
+80data.net
80day.com
80den.com80dongli.com
+80host.com80kongjian.com
+80kuku.com80paper.com
+80s.im
+80s.tw80shihua.com
80sjy.net
80srz.com
+80test.com
+80tian.com
80txt.com80txt.la
80vps.com
80wifi.cc
+80x.co80xb.com80xg.com80xs.la80ym.com
80yy3.com
80zw.info
+810840.com811sisp.com
81257.com
81265.net
+812813.com
81312.com81329999.net815.pub8158.com
+815ybw.com
81629.com81663344.com
81677.com
+816798.net8169.com
+817398.com8175835ccc.com
81761.com818.com
+8181xw.com
+8181zx.com
818it.com
818ps.com818shyf.com
818tu.com
81999.org
81art.com
+81book.com81book5.com81comdns.com
81gfchina.com
81guofang.com81it.com81js.net81kx.com
81man.com
81pan.com
+81tech.com81tt.net81xy.com81xz.com81zhongwenx.com81zw.com8203app.com8211.com
821ccyy07.com82250856.com
+822644.com8228.tv82335966.com8246.net8264.com
+826wan.com
8276n.com
828385vip.com
82859.com8289880.com828g.com828i.com82987977.com
+82flex.com82ky.com82pk.com
83084.com
+831289.com
83133.com8325.com8329607.com833k5u23mb.com83480900.com8358044.xyz
835images.com835images2.com835images4.com83661111.net
83666.com
+837165.com
+838.cc
83830.com
+838305.com
838dz.com83990567.com
83edu.net
+83h87d.com83iiq501o2.com83mo7n9giq.com
+84.com 84.vc8421.com
84399.com84460yhh7t.com
+844wan.com
84519.com84560262.xyz845hg621.com
84684.net8477.com848.com
8487x.com848d.com
+849339.xyz
+849959.com84fk.com84ju.com
84ktv.com
84zcb.com
+850718.xyz
+850789.com8518.com8521.org85229666.com
85335.xyz
85384.com
+853lab.com8555220.com
+855626.com8558.org85679999.com
857dj.com85880234.com858game.com
85ibb.com85kf.com85wp.com85xt.com
86-import.com
+860029.com
86010.net
+860527.com
+860598.com
+860816.com
+861718.com
86175.com
+861817.com
+861ppt.com
86215.com
8624x.com
86262.com8633.com86516edu.com
+865211.com86586222.com
86590.com
866ds.com
+866pic.com8671099.com
8673h.com8682.cc8684.com
86866.com
8686c.com
86873.com
8688g.com
86933.com869d.com869v.com86amsdy.com86clouds.com
86crk.com
+86ditu.com86dk.com86eh.com
86eye.com
86fis.com
86fsp.com
+86game.com86gc.net
86hcdnsuv.com86hh.com86hk.vip86hr.com86huoche.com86jg.com
86joy.com
+86kang.com86kl.com86kongqi.com86lawyer.com
86mai.com
+86mama.com
86mdo.com86nb.com86office.com
86pla.com
+86pm25.com86ps.com86ps.net86qc.com86rexian.com86sb.com
86tec.com86ty.com
86uuu.com
+86wind.com
86wol.com86xq.com86y.org
86yqy.com
86zsw.com870.com
87050.com
+870818.com870q.com87188718.com
+872.cc8721.com
+872872.com8767.com
+876web.com8770000.com
87753.net87794560.com
87870.com87872277.com
+878998.net
+879731.com8799.com
87box.com87g.com
+87mjb.cyou87money.com87pk.com87yy.com88-z.com
+88.com880.net8800808.com8801.net
+880303.xyz
+880331.net88077777.com
88090.com
880sy.com
+880you.com
88106.com88116008.com8811777.com8825.com
+8828dl.com88303887.com8831.app8831398.com88321268.com
88360.com
+8838sl.com
+883dai.com
+884358.com8844.com8848.com
884838dh4.com
8848phone.com885.com8850006.com
+885210.net8855.org
88582.com8860.net8864.com8864.org8866.org8866886688.com88669aaa.com8868a16.app
+886966.com
+886abc.com
+886vps.com
88765.com887w.com
888-8.com8880666.com
+888132.com8886005.com8887797b0.buzz88880809.com88883aaa.com88887777.com8888800000.com88888aaa.com88889aaa.com8889896.com8889997777.com
+888ban.com888bb111ww.com888bb888ww.com888bbb222bbb.com888chem.com
+888pic.com
+888ppt.com
888rj.com
+888twt.com888xx666kk.com
+8890tu.com8892017.com
88966.net88995799.com
88999.com8899yyy.vip
+88bank.com88bx.com
88caijing.com
88cdn.com88dushu.com
+88fang.com88h3.com
+88hmjy.com
88hom.com88ht.com88hu.com
88koo.com88la.la
88lan.com88laser.com88lianmengtu.com
88lot.com88meishi.com88mf.com
+88ming.net88order.com
+88pets.com
+88popo.com
88sup.com
+88tang.com88tejia.com
88tph.com
88ttv.com88xiaoshuo.com88xr.org88y5.com
88ysg.com
88zha.com
+88zjzy.com
+890213.com8910.io
89178.com
89303.com
89469.com89609335.com
+8961zx.com8979.com
+898.travel
+898744.com8989118.com
+8989jt.com8999.cc89dj.com
89doc.com89ds.com89qw.com89uu.com 8a.hk8aza.com8b2.net8bb.com
8bb8b.com
8bcd9.com8btc-ops.com8btc.com8btm.com8cheche.com
+8cname.com
8cnet.com8crwki8e.com
8ddao.com
8dexpress.com8dn.com8dol.com
+8dream.net8dt.com8dudata.com
8dwww.com8e8z.com8europe.com8fe.com
8fenxiang.com8ft6h20ivn.com8ggq.com8gn2i0i5fc.com8gov.com8gui.com8gw.com8gyu.com8h15725mm7.com8hnyf3u.shop8hsleep.com8hy7q32i4q.com
+8i.ink
8jdns.net8jiaoye.com
8jie8.com8jxn.com8jzw.cc8k5lu58221.com8k7k.com
8kana.com
8kb8y722.shop8kmm.com
+8kwebs.com8kzw.com8l8e.com8le.xyz8lhx.com8liuxing.com8lk.com8llp.com8mhh.com8mi.tech8miu.com8miu.net8mkt.com
8moom.com8mpaoche.com8ms.xyz8n2.com8n6n.com8njy.com8o9o.com8pig.com8pingce.com8pu.com
8qwe5.com8qzy.com8rlq38736p.com8ryx.com
8s123.com8so.net
8suan.com8tgh.com
+8tool.club8tsw.com
8ttt8.com8tupian.com8tupian.net
8twan.com8u18.com8u58.com8u7q5l9gox.com8ug.icu8uyx.com8w88.com8wan.com8win.net8wiu.com8wq.com8wss.com8wxjn59.shop8wym.com8x6x.com8xs.org8xz8.com8yao.cc
8ydsp.com8ym8.com
+8ynfgs.com
+8ytech.com8yw.xyz8yx.com
+8z.net
8zax8.sbs
+8zhuayu.cc
+8ziben.com
8zntx.com8zy.com
9-xin.com9-zhuce.com 9.biz
+900.la
+9000wy.com
+900112.com
+900501.xyz
+900php.com
+900ppt.com
+900top.com
900yi.com
90123.com
90576.com
+906you.com
90907.com909cpnr.com90c6.com
90ers.com90ko.net
+90kuai.net
90lhd.com90qh.com
+90s.co90sheji.com90sjimg.com
+90tank.com90vm.com90wmoyu.com
+90yang.com90zm.net
+91-box.com
+91.com
+910app.com910play.com
91118.com
91160.com
+9118fu.com
+911cha.com
+911pop.com911xueli.com
+911yao.com
911zy.com
+912355.com
+912366.com9125flying.com
+912688.com
912hf.com912k.com
912yx.com
91300.com9133.com9136.com
91360.com
91378.com
913vr.com
+913you.com
91472.com9154wan.com
91558.com
+915658.com9158ads.com
+916360.net
+9166yx.com916m.com917.com9170.com
917ka.com
917st.com9188.com9188wan.com
+918dxs.com918haoma.com918ka.cc
918rc.com919.com
+9191mr.com9191net.com
9191steel.com
+9191zx.com
91985.com91ac.com
91act.com
91ajs.com
91all.net91anjian.com
91art.net
+91baby.com
91bbw.net
91bee.com91boshuo.com91bushou.com91carnet.com91cdkey.com91ceshi.com
91cha.com91chang.com91changxie.com91chengguo.com
91convert.com
91ctc.com91cy.cc
+91czxs.com91daizhang.com91danji.com91datong.com
91dba.com
91dbb.com
91dbq.com
+91ddcc.com91ddedu.com
+91ddsc.com91diany.com
+91dict.com
+91dnso.com91doujin.com
91dub.com
+91duba.com91duobaoyu.com91em.com91es.com
+91exam.org
+91exiu.com91fangan.com
+91fifa.com
91fyt.com
+91game.com91goodschool.com91guzhi.com91haigui.com91haiju.com91haoka.com91haoke.com91health.net
91hecheng.com
91hmi.com91huayi.com91huayi.net91huoke.com91huola.com
91ifx.com
91ios.com
91jbz.com91jf.com91jiabohui.com
91jiafang.com
91jianguo.com
91jin.com
91jinrong.com91jinshu.com
91jiujige.com
91jkj.com
+91jkys.com
91jlb.com91jm.com
91jmw.com
91job.com
+91join.com
91jsj.com
91jtg.com91k7.com
+91kami.com91kq.com91kw.net
91laihama.com
+91laiz.com91ld.com
91lda.com
+91leju.net91lewei.com91liangcai.com91listen.com
91lsf.com91lx.com
+91m.co
91maibiao.com91maker.com
91mariadb.com91maths.com91miaoshou.com91muzhi.com91ninthpalace.com
91nzh.com
91pandian.com91paopao.com
91pdf.com
91php.com
91pic.org
+91pkpk.com
+91post.com
+91pusi.com91q.com
+91quce.com
+91qycl.com
91rjz.com
91ronghui.com
+91ruyu.com91saishi.com91sd.com91sem.cc
+91sfdj.com
91shenshu.com91smart.net
+91soer.com91soker.com
+91sotu.com91soumu.com
91sph.com
91spj.com
91sst.com91strategy.com
91student.com
+91suan.com
+91suke.com91taoke.com
+91ting.net91tingge.com91tm45tzyb.com
91toolbox.com
91tty.com91tw.net91up.com
91vpn.com
91vps.com
91vst.com
91waijiao.com
91waitang.com
91wangcai.com91wangyx.com
91watches.com
91way.com91weimai.com91weimi.com91wenmi.com
+91wink.com
+91wllm.com91wujia.com91wutong.com
91wzg.com
91xcm.com
91xfw.com
91xhg.com91xiake.com91xinshang.com
91xsj.com91xueshu.com91xunyou.com
91xxt.com91xy.com
+91xzba.com91y.com
91yao.com91yinpin.com91yixun.com91yk.com
+91yong.com
91you.com91youban.com
91youchai.com91youxi.com91yu.com91yuedu.com
91yunxiao.com
91yunying.com91yxbox.com
91yxl.com
91zhiwang.com91zhongkao.com
+91znyx.com
91zxw.com
+92.net921.com9211.com
+921716.com9217web.com92220668.com92220701.com925g.com
925ps.com
926kf.com
+927927.com
+927953.com927game.com
927jx.com
+928vbi.com
92913.com
+929825.com
92987.com9299.net929g.com929vip.shop92aliyun.com
92anycall.com92aq.com92ay.com
92bbs.net92cloud.com
+92demo.com92dp.com
92dpw.com92ez.com92fa.com
92fox.com
92gyw.com
+92hidc.net
92jzh.com92kaifa.com92kk.com92le.com92lm.com92lucky.com92mp.com92ni.com92oz46nne1.com92shuoshuo.com92sucai.com
92tianjin.com92txt.cc
+92u93e.com
92wan.com92wansf.com92wx.com92wx.la92wy.com92xygame.com
+92y.co
92yanqing.com92yo.com92zhiqu.com
+92zuqu.com
930hh.com9312.net
93135.com933.moe
+934dsw.com9355.com
93636.com
93665.xin
+9366qq.com936u.com
937-2.vip
937-3.vip
937-6.vip9377.com
9377a.com
9377d.com
+9377df.com
9377g.com
+9377ja.com
+9377si.com
9377z.com9380.com
93913.com9396.net
93966.com
93bok.com93eu.com93gaokao.com
+93hdw9.com93jiang.com93jx.net93kk.com
+93land.com93lh.com
+93njf0.com93pk.com
93sdk.com
93sem.com
+93soso.com93ta.com
93trf.com93ty.com
93tyy.com93wgames.com
93you.com93zp.com93zw.com
94001.vip
+940177.com
+940304.xyz
94117.net
942ss.com944.com
94445.com9453job.com
+945n48.com9466.com
+948250.com
94831.com
948hj.com949047l1jr.com9495.com
94994.com
+949949.com94ad.com
94afx.com94cb.com
94cto.com
94gan.net
+94he38.com94i5.com94ip.com
+94kuai.com
94mxd.com
94php.com94q.com94qy.com
94rmb.com94rp.com94te.com94xy.com
94you.net94ys.com95-1.vip
+95.com
95007.com
95013.com
95021.com
+950901.com
95095.com95105369.com95105555.com95105556.com95105888.com95105899.com9512.net
+951280.com
+951368.com
95158.com
95169.com
95191.com
95195.com
+951dns.com
95262.com9527cha.com
9527cloud.com
95303.com
95408.com
95447.com
95504.net
95508.com
95516.com
95516.net
+95526.mobi
95528.com9553.com9557.com
95572.com
95579.com
95580.net
95588.com95597.cc95598pay.com95599.hk
+955yes.com
955yx.com9560.cc9564.com9565.com9574528ue9.com9588.com
95890.com
+959505.vip9595111.vip
+95a.co
+95b.co95bd.com95dns.cc95dushu.net
+95e.co95en.com
+95epay.com95fenapp.com95gq.com95ib.com95ip.com95k.com95links.com95ns.net95px.com
95shubao.info
95xiu.com95ye.com95yijing.com95zh.com96005656.com
+960123.com
+960638.com96090090.com
960rc.com9610.com9611111.com96160.cc
96189.com96189.tv9618968.com962.net
+962121.net
+962168.com
+962222.net
96225.com
+962518.com
+962600.com
+962740.com
96335.com
96369.net
+963999.com
96459.com
964yx.com965.one
96516.net
96520.com
96528.com
96533.com
+965373.com
96558.com
96590.net9663.com9665.com
+966504.com
+966599.com
9665k.com9666666.com
+9666sr.com966zlnfjuza4oloh2bk.app
96711jmbm.com
96804.com
96811.com
96822.com
+968550.com
96877.net
968pk.com
+969009.com
96966.com969g.com
96bbs.com96caifu.com96dp.com
96f2d.com96hq.com96jm.com96kaifa.com96kb.com96lh.net
96lou.com96ni.net
96sdk.com
96sir.com96tf.com96u.com96weixin.com96yx.com
+96zxue.com
+970mhz.com9718.com9718game.com9724.com973.com
97616.net
97654.com
97775.com
977pk.com
97866.com9787.com
978clouds.com
97936.com
97973.com
+9797ly.com9799.com
97add.com
97doc.com97gg.net97go.com97jindianzi.com97jz.com
97kid.com97lk.com97lp.com
97lpw.com97lrf0l3xa.com97ol.com97rp.com97sp.cc
+97ting.com
97tvs.com97ui.com
+97uimg.com97wd.com
97wyw.com
97xdj.net97xiaoshuo.net
+98.com 98.ma
+980512.com
+980cje.com
98182.com9823f7b9o6.com984g.com
+985.so
+985900.com
+985923.com
985dh.com
985ks.com
985ks.net
985sy.com
986338dsd.com
98654.com987.com9873.com9876game.com
+987app.com
+987you.com
98809.com
988sl.com9891.com98a.ink98cloud.com98du.com98ep.com
98eye.com98fp.com98jiankang.com98jx.com
98kpm.com98lm.com98mp.com
+98nice.com
98one.com
+98t.la98t.net
+98w.co98weixin.com98xz.com
98znz.com98zw.com
+99.com
99114.com
99118.com
+9911yx.com
+991217.com
99166.com9917.com9918.tv9919345.com991kang.com9920102.com9928.tv9939.com
+993937.com
99394.com
+993988.com993h.com994t7px765.com
+994wan.com9951.cc
+995120.net
+99520.love996.com
+996.pm9965dns.com9966.com9966.org9966333.com9966886699.com
+996996.com996a.com
+996box.com
+996dns.com
+996pic.com
+996sdk.com9973.com
+997788.com998.com9981ypk.com9982.com99844666.com
+99887w.com
998jk.com
998jx.com
+998law.com998movie.com9991.com
+999120.net
+999136.xyz
+999178.com
+999765.xyz
+999777.com9998.tv99988866.xyz99998aaa.com
+999ask.com999bbb222bbb.com999bbb777bbb.com
999bj.com999brain.com999inandon.com999shengqian.com
+999tea.com
999welder.com
999wx.com
999xy.net
+99aiji.net
99aly.com99banzou.com
99bdf.com99biaozhun.com
+99bill.com99bo.cc
99box.com99brand.com
99bs.club99cc.com
99cfw.com
99cha.com99cloud.net99corley.com99danji.com99dingding.com
+99down.com99dushu.com99dw.com99eo.com
+99eyao.com
+99fang.com
99fei.net99fenlei.com
+99fund.com
+99fund.org99haoche.com
99haoling.com
99hdf.com
+99hkjf.com
99huodong.xyz99ielts.com99inn.cc
99jianzhu.com99jiasu.com99jiasu.net
99jrk.com
+99jypx.com99kf.com99ku.vip99kypay.com99lb.net99leidun.com99max.me99mc.com
+99mdlz.com
+99meiju.tv
99mk.info99mk.la99mk.net
99mst.com99music.net99nurse.com
99pdf.com
99ppt.com
99pto.com99qh.com99qibang.com99qimingzi.com99qumingzi.com
+99read.com
+99read.xyz
99shi.com
+99shou.com
99sky.com
99sun.com99sushe.com99sy.co99tongxuelu.com
99uri.com99vf.com99weiqi.com99wj.com99wuxian.com99xr.com99xueshu.com
99youmeng.com99youshenghuo.com99ys.com99yunshi.com99zhizhu.com99zihua.com
99zzw.com9a11.com
+9ailai.com
+9aimai.com9air.com
9amts.com
+9aoduo.com
9aola.com
+9beike.com9bianli.com9bt0.com9cb.com
9ccapital.com
9chew.com
+9clive.com
9conn.net9cwx.com9d19.com9d4d.com
+9damao.com
+9damao.net9day.cc
+9dd29.live9ddm.com
9deli.com9dfx.com
+9dian.info
9dida.net
9dinn.com
+9douyu.com
+9droom.com9duw.com
+9dwork.com
+9earth.com
9ehao.com9ele.com
+9enjoy.com9etravel.com
9fapi.com9fav.com
+9fbank.com
+9first.com9flb.com9fmk.com9fo.com
9fonecard.com9fpuhui.com9fs.com9fzt.com9fzt.net
+9g.com9g8g.com9gt.net9gty.net9he.com
9host.org9hou.com9ht.com9huadian.net9i0i.com
9icad.com
+9icode.net9icy.com
+9idudu.com
9igcw.com9ihb.com
+9ihome.com9ijf.com9ilu.com
+9imobi.com9inx.com
9ioldgame.com
9iphp.com
9ishe.com9iwanwan.com9iwz.net9ixiuxiu.com9j9y.com9ji.com
+9juewu.com9jx.com9k01.com9k9k.com9ka.vip9kcs.com9kd.com9khc0iv5n7.com9kkk.xyz9kld.com9kus.com
+9linux.com
+9liuda.com
+9longe.net9m7v44974i.com9man.com
9mayi.com
9miao.com9mic.com
9nali.com9newlive.com9ngames.com
9nhao.com9nj563358x.com9now.net9ok.com9om.com9one.cc
9open.com9orange.com9pt.net9qd0wul789.com9qu.com9ria.com9rmb.com9sb.net9see.com9shadow.com
9shoubiao.com9skm.com9sky.com
+9sleep.org9syw.com9taobao.com9tax.com9to.com
9tong.com
9tonglian.com9tov.com9txs.com
+9u.net9upk.com9vf.com9w9.com
9wan8.com9wanjia.com9wee.net
+9weihu.com
9wuli.com9wwx.com9xdb.com
+9xgame.com9xiu.com
+9xiuzb.com9xun.com
+9xwang.com9ya.net9yao.com
+9yaocn.com9yc.com9ye.com9yjk.com9you.com9you.net
+9yread.com
+9yuntu.com
9yuonline.com
9zas5.com
9zhen.com
9zjob.com
9znet.com9zwz.com9zx.com
+a-b.cca-du.neta-hospital.com
a-isv.org
+a-jazz.com
+a-liai.coma-map.co
+a-map.link
a-map.vipa-sy.com
a-xun.com
a0598.com
a0770.coma0ad.coma0bi.coma135.neta166.coma1t2w1lzfr.coma20.site
a2048.com
a21fs.coma21yishion.com
a2dongman.com
a48425084.coma49.neta4s6.com
+a5.net
a5399.com
a5600.com
+a5b.cca5dv0ajhsghaahdhgd.com
a5idc.com
a5idc.neta5lt.coma5xiazai.coma5y.net
+a632079.me
a67dy.com
+a7.com
+a700in.rena766.com
+a8.com
+a8f947.coma8hand13.vipa8tg.coma8u.neta8z8.com
a9188.coma963.coma9market.coma9vg.com
aa-ab.com
+aa-lsk.com
aa152.com
aa360.net
+aa43z7.comaa5d.comaa65535.comaa778899aa.com
+aa8828.comaaa888.clubaaalawfirm.comaaareplicawatch.com
aaayu.com
+aaayun.com
+aabooo.com
aabux.comaad5.comaadcloud.com
aadongman.comaads-cng.net
aafxw.com
aakss.com
aamachina.org
+aamyoe.comaap5.comaaplimg.com
+aardio.comaarkpbkc.comaaronlam.xyz
aaspt.netaastartups.com
+aatccn.comaatcmdvi.com
+aavisa.com
aawvw.comaaxinwen.net
aaygw.comaaym.net
+aayu.today
ab126.com
ab173.com
ab365.comabaa.ccabab.comabacaipu.comabackup.com
+abaizx.com
+abakua.comabardeen-online.comabbkine.com
+abbooa.comabbyschoice.net
+abc-ca.com
abc119.tvabc12366.com
+abc188.com
+abc369.netabc4game.comabcache.com
+abcdao.com
abcdocker.com
abcdv.netabcfintech.comabcgonglue.comabchina.comabchinalife.com
abcjiaoyu.com
abcjifang.comabckantu.comabclogs.comzzzymjg.com
abcs8.comabcsbank.com
abcve.com
abcxb.comabcxyzkk.xyzabcydia.com
+abcys8.com
+abd007.com
abddn.comabdstem.comabe-tech.comabedisha.comabercrombie.comabesmoke.comabhouses.comabiaogw.com
abiechina.comabiestem.comabifsey.com
+abitcg.com
abite.comabiz.com
abkou.comablanxue.com
able-elec.com
ablejeans.comablesci.comablesky.comabletive.comablinggame.com
ablkq.com
+ablman.com
abloz.com
abmau.com
abmjc.comaboatedu.com
+aboboo.com
aboilgame.comaboutcg.comaboutcg.netaboutcg.orgaboutgk.comaboutmy.nameaboutnew.netaboutyun.comaboveyunbo.com
abox.plus
+abpuvw.comabreader.com
abslw.comabsoloop.com
absst.comabtsonlineshop.comabtt266.comabublue.comabuquant.com
abusi.net
+abuyun.com
abxso.comaby.pub
abyssdawn.com
ac268.comac57.com
acabridge.netacademypublication.com
+acadki.com
acadn.comacaisbest.siteacan360.com
+acb365.comacc3.netacc5.comaccelink.com
accessads.netaccessgood.comaccessibilityunion.comaccessibilityunion.org
accessoft.comaccesspath.comaccgame.comaccident6.siteacconsys.com
accopower.com
zzzyk.com
accsh.orgacctdns.comacctdns.netaccu.ccaccurate-china.com
accyy.comacdianyuan.comace-info.comace-pow.comace-rubber.com
+acejoy.comacelamicro.comacesheep.comacetace.com
acetaffy.clubacewill.net
acftu.org
acfun.comacfun.tvacfunchina.comacfunchina.net
+acg.gd
+acg.tv
acg17.com
+acg183.com
+acg18s.comacg4.com
+acg456.comacg6.com
acgaa.xyz
acgdb.comacgdoge.net
+acgist.com
acgjc.comacglivefan.comacgn.pw
+acgorg.comacgp.xyz
+acgpic.net
acgpp.net
acgqd.comacgrenwu.com
+acgres.com
+acgsan.com
+acgsky.winacgtofe.comacguxhda.comacgvideo.com
acgvr.comacgz.xyz
acgzc.com
+acgzyj.comachiming.com
acing.comacingame.comacirclea.com
+acirno.comacjw.net
+aclife.netacloudbaas.comacloudrender.comacm.orgacmcoder.comacmec-e.comacmemob.comacmicpc.info
+acmoba.com
acmsearch.comacmturc.com
acnow.netacnpschool.comaco-musical.com
+acoloo.com
aconf.org
acoolread.comacpf-cn.org
+acplay.net
acq42.comacqiche.com
+acqyjg.com
acrel-eem.comacrel-microgrid.comacrel-znyf.comacrossmetals.comacroview.comacs.org
acsrq.comact-telecom.comactacams.comactamath.com
+actbbs.com
actcn.net
+actime.netactions-semi.com
actionsky.comactiveclub.netactivepower.netactivity-dy.comactivity-wbsj.comactivity-zhendingtech.comactivity01.comactivity02.comactivity03.comactivity04.comactivity05.comactivitybyte.comactom.me
+actoys.com
+actoys.netactranslation.com
+actself.meactuive.comacuangle.netacumoxj.com
acvsh.com
+acwifi.net
+acwing.comacxk.net
ad-cn.netad-diamond.comad-gone.comad-goods.comad-safe.comad-squirrel.comad-young.com
ad110.comad321.ccad5.com
ad518.com
ad778.com
adamcoder.comadanachina.comadanxing.comadapay.techadarrive.com
+adaxin.comadbkwai.comadc-expo.com
adcdn.comadcomeon.com
+addaad.com
+addgog.comaddimmar168.comaddinghome.comaddnewer.com
addog.vip
+addoom.com
addpv.com
addww.comadeasyx.comadebang.comadebibi.com
adesk.comadeskpro.com
adexplain.comadflying.com
adfortest.com
adfunlink.com
+adfuns.com
adfyt.comadg-dental.com
adhei.comadhimalayandi.comadhubbj.xyzadhudong.comadianshi.com
zzzyb.comadiexpress.comadigifactory.com
adiic.comadinallcdn.com
adinhands.comadipman.net
+adjdds.com
adjie.comadjucai.com
adjuz.com
+adkjpx.com
+adl163.com
+adl888.comadlefei.comadluckin.comadlvyou.comadm88888.com
admai.comadmaimai.com
+admama.comadmamax.com
admbucket.com
+admile.xyzadmin04.comadmin10000.comadmin345.com
+admin5.netadmin88.comadmincdn.com
admintony.comadminxe.com
admobile.mobi
admonitor.org
admqr.comadmunan.com
admxh.comadnineplus.com
+adnrhy.comado.zoneadobeae.comadobeedu.comadobesc.comadongyu.com
adoregeek.com
+adoutu.comadparticle.comadpchina.comadplusx.comadqkmob.comads4f6gf46.com
+adsage.comadsalecprj.com
+adsame.comadscover.com
+adsctl.com
+adsjdy.com
+adsjl3.icu
adslr.comadsmogo.comadsmogo.mobiadsmogo.netadssaas.com
+adssap.com
+adsspr.comadstarcharm.comadtaipo.com
adtchrome.com
adtianmai.com
+adtime.com
adtmm.com
adtxl.comaduan.ccadubest.com
adunicorn.comadunioncode.comaduspot.com
+adutou.comadvanced-pneumatics.comadvertcn.comadvisionhorizon.comadvlion.comadvuser.com
adwangmai.comadwanji.comadwebcloud.com
adwep.com
adwintech.com
adwjn.xyz
adwke.com
+adx666.comadxflow.comadxliangmei.com
adxmq.com
adxqd.comadxwork.com
+adxyun.com
adyounger.com
adyuedong.comadzhongdian.com
+adzhp.site
adznb.com
adzop.com
+adzshd.com
ae-people.com
+ae1234.com
ae256.comae60.com
+ae8569.xyz
aebiz.net
+aec188.com
aecc-mall.com
aecichina.com
aeconomic.comaecsian.comaeenets.comaeespace.com
+aegcar.com
+aegisx.net
+aehyok.com
aeink.comaemedia.org
+aeneag.xyzaeo-cctv.comaeonbuy.comaeonmed.com
aeoto.net
aepku.com
+aerchs.com
aerfaying.com
aerochina.netaesdrink.comaestheticbutler.xyzaesucai.com
aet21.com
aevit.xyzaexpb8.tokyo
+aexpec.comaf1ycj.shopaf36.com
af360.comafabius.com
afang.com
afanti100.comafarway.com
afcec.com
afcrz.com
+afdian.com
+afdian.net
afdiancdn.com
afdsc.comafdvr.cc
afdvr.com
afengblog.comafengim.com
afengsoft.com
+afenxi.com
+affann.comaffecthing.comaffordable-fine-art.comaffu.net
+afgame.com
afhao.comafibosk.comafie.xinafirstsoft.comafjk.comafjob88.comaflytec.comafmtickets.com
+zzzsxx.comafpchinesesports.comafriendx.comafrindex.comafshanghai.org
afszc.com
+aft1v1.com
+afu.io
+afudan.comafunapp.com
+afxeon.com
+afzhan.comag03.com
agcen.com
agcloudcs.comagconnect.linkage-spa.com
+age.tv
age06.comage6000.comaged100.comagefans.app
agel-tech.comagelocer-watch.comagelocer.com
+agenge.com
+agenow.com
agerk.com
+aghcdn.com
+agi360.xyzagile-china.comagileex.com
aginomoto.comagiquery.com
agiso.com
agoow.comagora.ioagoralab.coagriotcloud.comagrittex.comagrochemshow.com
+agrodt.com
agrofairs.com
+agrosg.comagrowingchina.com
+agtech.ltd
agucn.com
agumd.comagv-amr.comagxs.netah-inter.com
ah-suuwaa.comah12333.com
ah163.comah3c.com
ah477.com
ah499.com
+ah5166.com
ah788.com
+ah8.cc
ah9yu.com
+ahacpp.com
+ahaiba.com
+ahalei.comahanxun.comahao.moeahaohao.comahaojiaedu.com
+ahaoyw.com
+ahauto.com
+ahbagy.orgahbb.ccahbbsun.com
ahbys.com
+ahbztv.com
+ahbzyy.comahc.ink
ahcaijing.com
ahcaw.comahcjhjj.com
ahcnb.com
+ahcyfc.com
+ahd.so
+ahdf56.com
+ahdsez.com
+ahdtpm.com
+ahdzdb.com
+ahdzfp.comaheading.comahfensitong.com
ahfgb.com
ahgae.com
ahglj.com
+ahgssh.com
ahguangbo.comahhaige.comahhanmi.com
+ahhbxh.com
ahhdb.com
+ahhhjx.comahhouse.com
+ahhtzx.com
+ahhwdp.com
+ahhyzn.comahianzhang.com
ahitv.com
ahjdq.com
+ahjgxy.comahjinyu.comahjk.com
+ahjk34.com
+ahjkjt.com
+ahjtxx.com
+ahjyec.com
+ahjzjy.com
ahjzw.com
+ahkemi.comahkende.comahkjksw.comahkxsoft.com
ahlcn.com
ahlib.com
+ahlife.comahljnews.com
+ahlsm1.comahluqiao.com
+ahlzgd.com
ahmky.com
ahnanfang.com
ahnec.com
+ahnews.org
ahnxs.com
+ahohai.comahome365.com
+ahougn.com
ahphi.com
+ahqmdq.com
ahrbg.com
+ahread.comahrenkun.comahrunzi.comahs.pub
ahscl.com
ahsea.comahsj-group.comahsjxjy.comahssnews.com
+ahswyz.comahsxkyb.com
ahsyj.comahsylsy.comahsz.tv
ahteacher.comahtlbyby.comahtongyuan.com
+ahtypg.com
+ahuano.comahudows.com
ahugeship.com
ahuny.com
ahuyi.comahweinan.comahwnqzs.com
+ahwnwl.comahwwnews.com
+ahwxcs.comahxuran.com
+ahxwkj.com
+ahxyol.comahydnet.com
ahyessoft.com
ahyijiali.comahyouth.com
+ahysls.com
+ahysxh.comahyx.ccahyx.netahzcw.cc
ahzs10000.com
+ahzssw.com
+ai-abc.com
ai-anchor.com
+ai-cai.comai-cctv.comai-classes.comai-creator.netai-daxue.comai-factory.comai-indestry.comai-qingchang.com
+ai-rtc.comai-start.comai-thinker.com
+ai-vip.net ai.cc
ai012.comai2news.comai7.comai7.orgaiaa.orgaiagain.comaiagain.net
aiage.com
aiai6.com
aiaigu168.comaiaitie.com
+aialbb.com
aialv.com
+aianno.com
aiaor.com
+aiappx.comaiba.comaibaija.comaibaimm.com
+aibang.com
+aibang.runaibangbaoxian.net
+aibank.comaibank.link
aibao.comaibaocloud.comaibaogao.comaibaohu.com
+aibaov.com
aibaoxian.com
+aibase.com
aibiaomei.comaibiaow.com
aibing.cc
aibll.comaibo123.com
+aiboco.com
+aibooks.ccaibreeno.com
+aic707.com
aicai.comaicaicdn.com
+aicait.com
aicccloud.com
aicdn.com
+aicdn.work
+aicdn2.com
+aicdn3.com
+aicdn4.com
+aicdn5.comaichaicp.comaichaoxing.com
+aichat.net
aichehome.comaichinaw.comaichunjing.com
aiclicash.comaicloud.comaicn.me
aicode.ccaicoinstorge.com
+aicsuk.net
aicu8.comaicunfu.com
aida64.ccaida64cn.comaidafen.com
aidai.comaidaily.com
+aidaiz.comaidalan.com
aidangbao.comaidanji.comaidapeid.comaidaxing.comaidaxue.com
aidcstore.net
+aideep.comaidianji.net
+aidiao.comaidigger.comaidigong.com
aidimedia.com
aidingmao.comaidjyun.comaidlearning.net
+aidlux.comaidoctor.world
aidog.com
aidong-ai.com
aidong.me
aidonghai.com
+aidoor.net
aidouzuji.comaidpaper.comaidrive.com
aidubuluo.comaidugame.comaiduoka.com
+aidusk.com
+aidusk.orgaiduwenxue.comaiec-alliance.com
aieco.orgaiecoms.com
+aiegle.com
aiema.com
aiemy.com
aieok.comaier021.comaier0755.comaier0771.comaier0775.com
aierchina.comaierfano.com
+aierlz.com
+aierpg.com
+aierzy.comaievsge.com
+aieye8.com
aiezu.com
+aifabu.com
+aifamu.comaifanfan.com
+aifang.com
aifang365.comaifangke.comaifanyi.net
+aifcdn.com
+aifei8.net
aifengjie.comaifenlei.com
+aifont.com
+aifu10.comaifu360.comaifuwus.com
+aifuxi.com
aigame100.comaiganggu.comaigc-cloud.comaigc369.comaigccdn.com
+aigcxm.comaige010.com
aigei.com
+aigewc.comaigexing.comaigexing.netaigo.comaigobook.comaigodiy.com
aigou.com
+aigtek.comaiguhuishou.comaiguilai.comaigupiao.com
+aigyog.comaihaisi.com
+aihala.comaihanfu.comaihanfu.netaihangtian.com
aihao.orgaihecong.comaihehuo.com
+aihelp.netaihelpcn.net
aihero100.com
aihke.com
+aihoge.com
+aihst8.com
aihua1998.comaihuajia.comaihuaju.com
+aihuau.com
+aihubs.netaihuhua.com
aihuishou.comaii-alliance.org
+aiibii.comaiijournal.com
aiimg.comaiimooc.com
+aiinsj.com
+aiioii.comaiit.me
aiiup.com
+aiizen.net
aijfc.com
+aiji66.comaijianji.comaijiatui.comaijiayou.comaijikong.comaijingu.comaijishu.comaijiuku.comaiju.comaik.comaikaixin.com
aikaiyuan.comaikan669.com
+aikan8.com
+aikang.com
aikep.comaiketour.comaikf.comaikgmgre.com
+aikkun.comaikucun.comail-online.moe
+ailaba.com
+ailabs.xin
+ailai6.comailai66.com
+ailbaba.meailemon.net
+ailete.comailewan.comaileyun.net
ailiao360.com
ailinglei.com
ailingmao.comailinux.net
ailinzhou.comailiyun.com
ailom.comailongmiao.comailuckyboy.comailuluz.comailuntan.comailvxing.com
+aim-ec.comaimagang.com
aimaker.spaceaimatech.comaimatrix.ai
aimcx.com
+aimeas.comaimei39.com
aimeicity.com
aimeideni.comaimeifen.vip
+aimeike.tvaimeilid.comaimengce.comaimeter.comaimilebc.com
aimin1979.com
aimingtai.comaimipay.netaimiplay.com
+aimo2o.com
+aimoge.comaimoneshoes.com
+aimsen.com
+aimtao.netaimu-app.comainas.ccainiapp.comainingjiaoyu.com
ainirobot.comainiseo.com
ainiu.netainixing.comainm.ccainuoedu.com
ainyi.com
aioclinic.comaioexpress.com
aiops.comaiotoolbox.comaip.org
+aipage.com
aipai.comaipaike.comaipaiyinghua.com
+aipapi.com
+aipark.com
+aipear.comaipeipei.net
aipenglai.com
aipgy.comaipiaxi.comaipingxiang.com
aippt.com
+aippt.siteaiprose.comaipu-waton.com
aipuo.comaipz.com
aiqfd.comaiqianduan.comaiqianxq.comaiqicha.comaiqiche.com
aiqin.comaiqingyu1314.comaiqisoft.com
aiqiye.cc
+aiqiyi.comaiqiyicloud-mgmt.comaiqiyicloud.comaiqiyicloud.net
aiqiyivip.com
aiqle.comaiqu.comaiqu.designaiquanjian.comaiqygogo.com
aiqzu.net
air-level.comair-matters.comair-matters.io
+air.cc
+airacm.com
+airbft.comairchangan.comairchina.comairchinacargo.comairchinagroup.comairchinaim.comairchinajet.comairchinamedia.com
aircn.orgaircourses.comairdali.com
+airdoc.com
airdropin.comairenche.comairepay.net
airguilin.comairj.websiteairkunming.comairmart.vipairmate-china.com
airmb.com
airmobyte.com
+airnut.com
+zzzqqp.comairpipetech.comairportcip.com
airportcn.comairsavvi.com
+airspa.netairstar.comairstarfinance.net
+airtac.comairtofly.comairtu.me
airu.loveairwalltech.com
airwh.comaisaohuo.comaisbeijing.com
aise.chataisee.tv
aiseeking.com
aiseminar.comaisenseinc.comaishangba.info
aishangba.orgaishanghaibao11.comaishangyangyu.comaishdxz.com
aishengji.com
aishenhua.com
+aishu5.com
aishuchao.com
+aishuge.cc
+aishuge.la
aishushu3.com
+aisidi.com
+aisila.com
+aisino.comaisinogd.comaisinogz.comaisitool.com
aisixiang.com
aiskr.comaisky.ccaiskycn.comaisojie.comaispeech.comaispreadtech.comaistar.site
aistar666.comaisx.ccaisy.com
aitangyou.comaitansuo.com
aitaxinxi.xyz
+aitcfw.comaite.xyzaitecar.com
+aitecc.comaitemall.comaitemple.comaiterent.com
+aitesu.comaitiancheng.comaitists.comaititia.com
aito.autoaitrans.net
aitransfy.com
+aituan.com
aitutu.cc
+aituwo.com
aityp.comaiufida.com
aiurl.comaiuxdesign.comaiuxian.comaiuxstudio.com
aiviy.com
aiviysoft.com
+aivote.com
+aiwall.comaiwan38.com
aiwan4399.comaiwan91.comaiwanba.netaiwatchs.comaiwebsec.comaiwei365.net
aiweibang.comaiweibk.comaiweline.comaiwenyi.comaiworkspace.comaiwvegax.comaixchina.netaixcoder.com
aixiaoduo.comaixiaok.comaixiashu.com
aixiashu.infoaixiashu.netaixiatxt.comaixiawa.comaixiawx.comaixiaxs.comaixiaxsw.comaixiegao.comaixiezuo.comaixiezuobao.comaixifan.comaixigua.com
aixin-ins.comaixinhaitun.comaixinmusic.comaixinwechat.comaixinwu.org
aixiu.netaixq.com
aixs.info
aixue.netaixuebanban.comaixuedai.comaixuejun.comaixuekku.comaixuesheng.net
aixuetang.comaixuexi.com
+aixuli.com
aixzu.com
aiya.live
aiya8.comaiyaapp.com
aiyanqing.comaiyaopai.com
aiyichuan.com
+aiyidu.com
aiyinghun.comaiyingli.com
aiyingshi.com
aiyinteli.comaiyishu.comaiyisoft.com
aiyjs.com
aiykj.com
+aiyo99.comaiyongaiwan.com
aiyou.comaiyoumi.com
aiyouwei.shopaiyouzj.comaiyoweia.com
aiysm.comaiyuangong.com
+aiyuke.com
aiyunxiao.comaizaoqi.com
+aizgtc.com
+aizhan.comaizhantj.com
aizhanzhe.com
aizhengli.comaizhenrong.com
+aizhet.com
aizhugong.comaizhuizhui.com
+aiziti.netaizongyi.com
aizuanapp.com
+aizuna.comaizuopin.com
+aizyzk.com
+ajbbkf.com
+ajcass.org
+ajcctv.comajclass.comajhchem.comajhimalayanqf.com
+ajinga.comajiu.xinajiuqian.com
+ajkcdn.comajkdns2.com
+ajkimg.comajkinclude.com
ajlty.com
+ajmide.com
+ajpysz.com
ajrcb.comajs-app.com
ajs17.com
+ajwang.comajyg.comajylqio.comajzq.com
+ak0.tw
+ak1ak1.comak47ids.comakadns88.netakadns99.net
+akaifa.comakailibrary.com
+akamai.comakashadata.com
+akashic.cc
+akaxin.comakbchina.comakbe.com
+akbing.comakbkgame.com
akdns.netakey.imakey.me
+akeyun.comakhlwyy.com
akhtm.comakhy.comaki-game.com
akile.netakjianding.comakkogear.com
aklyw.comakng.net
akniu.com
akomr.com
akpig.comakplayer.com
akppt.netakr-developers.com
akru.plus
+akscan.comakspeedy.com
aksxw.comaku.pubakuziti.comakyiyou.com
akylq.comakymmzs.com
+al-jin.comal8l.comalabmed.comalaboshuiyan.com
+alacun.com
aladdin-e.comaladdinnet.comalai.netalameal.com
+alanqi.comalantorp.onlinealanyhq.com
alavr.comalayanew.comalaying.com
alayu.comalbertaz.comalcatel-home.comalcatelmobile.comalcy.cc
+aldeee.com
aldgo.com
+aldnew.com
aldsd.com
+aldtop.com
aldwx.comaledeco-hk.comaleelee.netaleenote.comalenable.com
alertover.com
+aletui.comalexhaohao.comalexinea.comalexoviedo999.com
+alexyan.ccalfafull.comalfingfuda.comalgorithmart.com
+alhywj.com
alhzp.comali-api-test.netali-cdn.comali-expo.comali-gtm-01.netali-gtm-pressure.comali-health.comali-restore.netali-star.com
+ali213.com
+ali213.net
ali37.netaliagain.com
alianhome.comaliapp-inc.com
+aliapp.com
aliappcdn.comaliasnb.xyz
+aliavv.com
+05info.comalibaba-inc.comalibaba.comalibaba.netalibabacapital.comalibabachengdun.comalibabachengdun.net
+zzzppp.comalibabacloud.com
+zzznkq.com
+zzzlsh.com
zzzla.com
+zzzl88.comzzzj.comalibabacorp.comalibabadesign-enable.comalibabadesign.comalibabadns.comalibabadoctor.comalibabafonts.comalibabafoundation.comalibabafuturehotel.comalibabagroup.comalibabainno.comalibabaonline.comalibabapictures.comalibabaplanet.comalibabatech.orgalibabatechqa.comalibabaued.comalibabausercontent.comalibabawood.comalibench.comalibjyun.comalibjyun.netalibtrip.com
alibuybuy.comalic.comalicache.comalicall.com
+alicdm.com
+alicdn.com
+alicdn.netalicdngslb.comalicloud.comalicloudapi-inner.comalicloudapi.comalicloudcc.comalicloudccp.comalicloudddos.comalicloudlayer.comalicloudsec.comalicloudwaf.comalicontainer.com
+alictf.comalidata.orgalidayu.com
aliddmall.com
+alidns.com
+alidns.net
alidz.netaliedge.com
alienarms.comaliensidea.comalientek.comaliexpress-media.comaliexpress.com
aliexpress.ru
aliexpress.usalifabu.comalifanyi.comaligames.comaligaofang.comaligenie.comaligfcc.com
aligfddos.comaligfwaf.com
alighting.com
alihd.netalihealth.hk
alihealth.net
alihuahua.com
+aliimg.com
aliiotapp.comalijijinhui.org
alijk.com
+alikmd.com
alikunlun.com
alikunlun.net
+alili.tech
aliliying.comaliloan.comalimamaframe.comalimaomall.comalime.aialimebot.com
+alimei.comalimmdn.com
alinx.com
alinx.vip
aliog.com
alionexpo.comalip.biz
+alipan.com
alipansou.com
05idc.comalipay-corp.comalipay-eco.comalipay-inc.comalipay-traffic.com
+alipay.com
alipay.hk
+alipay.netalipayauto.comalipaycs.comalipaydesign.com
alipaydev.com
alipaydns.comalipayeshop.comalipaymo.comalipayobjects.comalipayplus.comalipcsec.comaliplay.comaliplus.com
+alippm.comaliqiche.comaliqq.ccaliresearch-internal.comaliresearch.com
+alirtc.comalisealing-pre.comalisealing-sit.comalisealing-uat.comalisealing.comalisoft.com
alisports.com
alitchina.comalitelecom.com
alithefox.netalithon.com
alitianji.comalitrip.com
+alitrip.hkalittle-tea.comalittlesoldier.com
+aliued.comaliunicorn.com
aliuv.comalivecdn.com
alivv.com
+aliway.com
aliwd.comaliwears.comaliwork.com
aliwx.net
alixiaomi.comalixiaoyouhui.comalixixi.com
+alixox.comalixueyuan.net
alixv.comaliyiyao.com
aliyizhan.com
+aliypc.com
+aliyue.netaliyun-cdn.comaliyun-inc.comaliyun-iot-share.comaliyun-znfhq.net
+aliyun.com
+aliyun.org
+aliyun.xinaliyunbaas.comaliyunbaike.comaliyuncc.com
aliyuncdn.com
aliyuncdn.netaliyunceng.comaliyuncs.comaliyundaiwei.comaliyunddos0002.comaliyunddos0003.comaliyunddos0005.comaliyunddos0006.comaliyunddos0007.comaliyunddos0010.comaliyunddos0011.comaliyunddos0012.comaliyunddos0014.comaliyunddos0015.comaliyunddos0017.comaliyunddos0018.comaliyunddos0019.comaliyunddos0020.comaliyunddos0023.comaliyunddos0024.comaliyunddos0025.comaliyunddos0026.comaliyunddos0027.comaliyunddos0029.comaliyunddos0030.comaliyunddos1001.comaliyunddos1002.comaliyunddos1003.comaliyunddos1004.comaliyunddos1005.comaliyunddos1006.comaliyunddos1007.comaliyunddos1008.comaliyunddos1009.comaliyunddos1010.comaliyunddos1011.comaliyunddos1012.comaliyunddos1013.comaliyunddos1014.comaliyunddos1015.comaliyunddos1016.comaliyunddos1017.comaliyunddos1018.comaliyunddos1019.comaliyunddos1020.comaliyunddos1021.comaliyunddos1022.comaliyunddos1023.comaliyunddos1024.comaliyunddos1025.comaliyunddos1026.comaliyunddos1027.comaliyunddos1028.comaliyunddos1029.comaliyunddos1030.comaliyundrive.comaliyundrive.netaliyunduncc.comaliyundunddos.comaliyundunwaf.com
aliyunedu.netaliyunfuwuqi.comaliyunga.comaliyunga0004.comaliyunga0005.comaliyunga0006.comaliyunga0007.comaliyunga0008.comaliyunga0009.comaliyunga0010.comaliyunga0011.comaliyunga0012.comaliyunga0013.comaliyunga0014.comaliyunga0015.comaliyunga0016.comaliyunga0017.comaliyunga0018.comaliyunga0019.comaliyunga0020.comaliyunga0021.comaliyunga0022.comaliyunga0023.comaliyunga0024.comaliyunga0025.comaliyunga0026.comaliyunga0027.comaliyunga0028.comaliyunga0029.comaliyunga0030.comaliyunga0031.comaliyunga0032.comaliyunga0033.comaliyunga0034.comaliyunga0035.comaliyunga0036.comaliyunga0037.comaliyunga0038.comaliyunga0039.comaliyunga0040.comaliyunga0041.comaliyunga0042.comaliyunga0043.comaliyunga0044.comaliyunga0045.comaliyunga0046.comaliyunga0047.comaliyunga0048.comaliyunga0049.comaliyunga0050.comaliyunga860004.comaliyunga8601.comaliyunga8602.comaliyunga8603.comaliyungf.comaliyungrtn.comaliyunhelp.comaliyunhn.comaliyunidaas.com
aliyuniot.comaliyunj.comaliyunjiasu.cloudaliyunlive.comaliyunlivetest.com
aliyunoos.comaliyunos.com
aliyunpds.comaliyunqifu.com
aliyunrtc.comaliyunssl3.com
aliyunvpc.com
aliyunwaf.comaliyunwaf1.comaliyunwaf2.comaliyunwaf3.comaliyunwaf4.comaliyunwaf5.comaliyunx.comaliyunyh.comalizhaopin.comalizila.com
+alkuyi.comall-in-data.com
all3c.com
all4seiya.netallawnfs.comallawno.comallawntech.comallbrightlaw.comallchips.com
allcitygo.com
allcitysz.netalldobetter.com
alldragon.comalleadprint.comallenmarket.com
allergezz.comallfang.comallfootballapp.comallfromspain.comallfunnies.comallgamesky.comallhistory.comalliancebrh.comallianz360.com
allicdata.com
allinbots.comallinfinance.comallinpay.comallinpaygx.comallinpayhb.comalliread.com
+alllook.tvallmaga.net
+allnow.com
alloyteam.comallpayx.comallposs.comallrace.com
+allred.vip
allsafeip.comallsaintsmusic.comallschoolcdn.comallsenseww.comallshopwatch.comallstack.netallstatics.comallstor.orgalltiedowns.comalltion-cn.comalltoall.netalltobid.comalltosun.com
+alltuu.comallwellsports.comallweyes.com
allwin368.comallwinnertech.comallwinso.com
+allyes.netallyfurn.comallystar.com
alnan.comalnanaluminium.comalnantq.comalo7.comaloha-ukulele.comalonemonkey.comalongsky.comalookbrowser.comalookweb.com
alpacabro.comalpha-browser.comalpha-star.org
alphabole.comalphafun.comalphassl.com
+alphay.com
alrightzd.com
+alskbc.com
alsovalue.comaltstory.com
altxw.comalu-ledprofile.com
aluaa.comaluminiumchina.comalumni-scut.orgaluntan.comalwaysnb.com
alwindoor.comalxw.com
alypw.com
alyzq.com
+am1116.com
am774.comam89.comamaiche.comamallb2b.com
+amanyi.com
+amaomb.comamap.comamapauto.comamarsoft.comamassfreight.com
amaxchina.comamazeui.orgamazfit.comamazingsys.comambassador-sh.comambassadorchina.comamberbj.comamberedu.com
+ambier.netambition-soft.com
+ambkct.com
ambow.comamcfortune.comamchamchina.orgamcvoyages.comamd.com
amdel.org
amdotibet.comamec-inc.com
amegroups.org
+ameida.net
+ameisx.com
amemv.com
amemv.net
ameow.xyzamericachineselife.comamericanlaserinstitute.comamethystum.comamexpressnetwork.comameya360.comamfproject.org
amgbs.comamgepic.com
+amh.shamhimalayanet.comamhl.netamiao.co
amif-expo.com
amijiaoyu.comamindbox.comaminglinux.comamishii.com
amjun.comamo9.com
+amobbs.comamoe.cc
+amonxu.com
amore.inkamoxicillin875.site
amoydxmed.com
ampcn.comamplesky.com
+amplly.comampmake.com
ampxl.com
amqyl.com
+ams-ic.comams.orgamsoveasea.com
+amssro.net
amtron-ic.comamuletj.comamuletor.comamuluze.comamunion.com
+amuren.comamusic.shop
amyroutes.com
+amysql.com
+amyxun.com
+amz123.com
+amz520.comamzcaptain.com
amzcs.comamzndns-cn.bizamzndns-cn.comamzndns-cn.netamzqazc.com
an1health.coman2.netanalysysdata.comanalytics-china.comanalyticskey.comanan123.vipanandoor.comanandzhang.comananlighting.com
+ananzu.comanao.vip
anatuprak.comanav.comanbang-life.comanbanggroup.comanbaool.comanbokeji.net
ancbk.com
ancda.comanchnet.com
ancii.comancloud.xin
ancun.comandaike.comandan.meandcaifu.com
+andes.techandesbrain.comandeshengtec.com
andfx.net
andhj.com
andpay.me
andreader.comandroid-doc.comandroid-studio.org
androidga.com
zzzdm.comandroidinvest.com
androidmi.comandroidonline.netandroidperformance.com
andwi.comandygcj.com
andyx.net
ane56.comaneasystone.com
+anetuo.com
anf-z.com
anfan.comanfangnews.comanfensi.comanfine-healthcare.comanfipet.comangeeks.comangel-game.net
angel-usa.comangelcaresoap.comangelenglish.com
angelhome.organgeljjangnara.comangell-studio.comangelmom.organgeltranslation.comangelyeast.com
angelyeast.ruangelyeast.xyzangesi16.comangine.techanglo-chinese.comangogotech.net
angrymiao.com
angui.organgustar.com
+angwei.net
+anhei2.com
+anhei3.net
+anheng.com
+anheyu.com
+anhkgg.comanhouse.comanhuaedu.com
anhuanjia.comanhui365.netanhuigwy.organhuihr.com
anhuilife.comanhuimobile.com
anhuinews.comanhuiry.com
anhuisuya.com
+aniccw.netaniceapp.comanicoga.comanictdns.store
+anijue.comanimalchina.comanimationcritics.com
animebytes.tvanimetamashi.comanimetaste.netanimetorrents.meanitama.netaniu.soaniu.tvanix.xyz
anji-ceva.comanji-logistics.comanji-tonghui.com
+anji66.net
anjia.com
+anjian.com
anjianghu.netanjiangshi.com
anjiechem.com
anjimicro.com
anjismart.comanjujituan.com
+anjuke.comanjukestatic.comanjumcmq.com
ankai.comankang06.organkangfulu.comankangtong.comankangwang.com
ankaotong.comankebio.comankelife.comanker-in.comankerjiedian.comankevip.com
ankichina.net
ankio.net
ankki.com
anlai.comanlaiye.com
+anlewo.comanlibaby.comanlibang.comanlilaw.com
+anlink.comanlitai.comanlogic.comanlu114.com
+anmco8.comanmo.com
+anmobc.comanmpserver.comann9.comannabelz.comanneijun.com
annelhair.com
annhe.net
anniekids.net
annto.comannualreviews.organnuoxun.com
anoah.com
anonym-hi.comanosmcloud.com
anoyi.comanpbuzrx.sbs
+anpush.comanqingonline.comanqingwt.comanqn.comanqu.comanquan.info
anquanbao.comanquanjs.comanquanke.com
anquanssl.comanquantong.comanquanzhao.comanran233.comanrayer.com
anren.org
anrenmind.com
anrenxmed.com
+anruan.comanruichina.comansendun.com
ansgo.comanshahouse.com
anshibuff.comanshiduo.comanshuntech.ltdansiding.com
ansimeter.comanson-skywalker.onlineansteelgroup.comansucai.comansuner.comansxtech.com
ant-cloud.netanta.com
antaifans.comantairui.netantaitebao.comantangbusiness.com
antbuyhot.comantcloud-miniprogram.com
+antcut.com
antdv.comantebao.com
+antebo.comantfans.comantfin-inc.com
+antfin.comantfortune.comantgroup.comanticheatexpert.comantiquelearn.com
antiy.com
antiy.netantiycloud.com
antom.comantpcdn.comantpedia.comantriver.com
+antrol.comantsdaq.com
+antsoo.comantspainter.organtto.ccanttoweb.com
+antuan.com
antuan365.com
+antuni.comantuofh.comantusheng-15.com
+antutu.com
+antutu.net
antvr.com
antzk.comanw.redanweilan.comanweishi.comanweizhi.comanwen.cc
anwfm.com
anxia.comanxiangkeji.netanxiaoer.com
anxin.comanxin168.comanxin360.comanxin360.netanxinapk.comanxindavisa.com
anxindeli.comanxinfloor.comanxinlirong.comanxinmai.comanxinssl.comanxinwangdun.comanxinyisheng.comanxinzhonghui.com
anxiu.com
anxiw.com
anxjm.comanxunshihui.comanxz.com
+any123.comany8.com
anyan.com
anyang100.com
anyangedu.com
+anyant.comanybeen.com
+anybox.comanycross.comanye.xyzanyelse.com
anyew.comanyforprint.com
anyforweb.comanygame.infoanyiidc.com
+anyilv.comanyimai.com
+anyizn.com
anyka.comanyknew.com
+anymcu.comanymetre.com
anyni.com
anyoy.com
anyrtc.io
+anyrui.winanyscdn.comanyskygame.com
+anysql.netanytesting.comanyun100.comanyunjianzhan.comanyv.netanyview.net
anyway.fm
+anyway.redanywood.com
anyxz.com
anzerclub.com
+anzext.comanzeyun.com
+anzhen.organzhengshipin.com
anzhi.comanzhiguolv.comanzhitan.comanzhixun.com
anzhuoapk.comanzhuoe.com
anzmy.comanzogame.com
anzow.com
+ao-hua.comao.spaceao3yiqag7zc8za.comaoao365.com
aoaob.com
aoapp.comaobacore.comaobaishi.comaobanghb.comaobosoft.com
aocde.com
aocdn.comaoch.comaochengcdn.com
+aoclia.com
+aocslb.comaodabo.techaodaliyaqianzheng.com
aodbw.comaoddoll.com
aodeng.cc
+aodetj.com
aodianyun.comaodingsy.com
aoedi.com
+aoerdz.comaoetech.comaofanxx.comaofenghuanjing.comaofenglu.comaofs.vipaograph.com
aoguanwns.com
aohaosiyq.comaohuasports.comaohuatextiles.comaojauto.com
aojia-oil.comaojiamarly.com
+aojian.netaojian2.netaojiaostudio.comaojiyingyu.comaojiyouxue.comaojiyuke.com
aojoo.comaoju.netaokangsports.com
aokwx.com
aolai.comaolaigo.comaoliday.comaoligei.siteaolinpharma.comaoliongame.comaolvyou.comaolylcd.comaomaismoking.com
aomao.comaomygodstatic.comaonaotu.comaony-cz.com
+aooedu.com
aoofu.com
+aoogee.com
aoohu.com
+aoomoo.comaoongmob.comaopayun.com
aoqiangtc.comaorankj.comaoratec.com
+aoscdn.com
+aoscom.net
+aosenm.com
+aosens.com
aoseo.com
+aoserp.com
aoshengjc.com
aoshitang.comaoshowsh.com
aoshu.comaosikazy.comaosikazyimage.com
+aosong.com
aosoo.com
+aoswtc.comaotchina.com
+aotian.com
+aotrip.net
aotuzuche.comaotxland.com
+aovhsa.comaowei-sh.com
aowei.comaowenmarketing.comaoxiang100.com
aoxintong.com
aoxsb.comaoya-hk.comaoyanchang.comaoyangzg.comaoyanwl.comaoye.com
aoyii.com
aoyiluoad.com
aoyor.comaoyotech.comaoyou.cc
aoyou.comaoyou365.com
+aoyoux.comaoyu100.comaoyunque.comaozhanls.com
aozhouci.siteaozhougoufang.comaozhuanyun.com
+ap1983.comap4r.comap88.com
+ap8888.comapaas-zone-test.com
apabi.comapachecn.orgapad.pro
apass.com
+apayun.com
+apbiao.com
+apcdns.com
+apcdns.net
apclc.com
apcso.comapcupse.com
+apdcdn.comape8.com
apecn.comapecome.comapehorse.comapeiwan.comapelearn.com
+apeloa.com
apesk.comapetdog.comapevolo.comapexmic.comapexyun.com
+apeyun.comapfeien.comapgblogs.comapgoview.comaphidic.comapi-forwards.com
zzzdc.comzzz4.comapiadmin.orgapiairasia.comapiandroid.com
+apicase.ioapicloud.com
apifabric.net
+apifox.comapigwtencent.comapilyzy.com
apim.work
+apimkt.netapipost.netapiqecz.com
apira.org
apirc.orgapiseven.comapispace.com
+apistd.com
apitd.netapiview.com
apizb.com
apizl.com
apizza.cc
+apizza.netapjingsi.comapk3.comapk4399.comapk8.comapkappsfree.com
apkdv.comapkevery.comapkpackagesys.comapkplug.com
apkrj.com
apkxz.com
apkyx.com
apkzu.comaplaybox.com
aplum-inc.com
aplum.comaplus100.comapluscap.comaplusda.orgaplusunion.comapmarry.comapmbooth.comapme-magnetics.comapmsecbg.comapmvista.comapnring.com
apodaenvi.comapollo-platform.comapollo-share.comapollo.autoapollocode.netapollopump.com
apollotop.com
apous.com
apowo.com
apowogame.com
apoyl.comapp-router.com
+app.so
+app001.comapp0772.com
+app111.com
+app111.orgapp1116.app
+app1288.tw
app168.cc
app17.com
+app178.comapp2006.com
app2pixel.com
app86.com
+app887.com
appbi.com
appbk.comappbocai.com
+appbsl.com
appbw.comappbyme.com
+appbz.infoappchina.comappchizi.com
+appcoo.comappcool.com
+appcpx.com
+appcup.com
+appdao.comappdown.info
appdp.com
+appduu.comappeasou.comappeeres.com
appganhuo.comappgenuine.comappgrub.com
appia.vipappicad.net
appicplay.comappidfx.com
+appinn.comappkaifa.comappkefu.com
appkg.comapplausefz.comapplicationloader.netapplinzi.comapplogo.net
+applon.netapplysquare.comapplysquare.net
appmifile.com
+appmiu.comappnode.com
appointen.lol
appol.comappotronics.com
+apppoo.comappproduce-platform.ccappresource.netzzz.xxxapps121.com
+appscan.ioappsecurity.topappsflower.comappshike.comappsimg.comappsina.com
appso.comappsolution.cc
+apptao.comappubang.comappublisher.com
appurl.cc
appurl.meappvipshop.comappweb1.comappweiyuan.comappwill.comappwuhan.comappwuhan.netappxcode.com
+appxzz.com
+appyao.comappying.com
+appykt.comappyouni.comappzhigong.comappzhonghua.com
+aprche.netapriltq.comaps.org
+apsdai.com
+apsfon.com
apsgo.comaptchina.comaptchip.com
aptdn.netaptenon.com
+apusic.comapwuyou.comapxm.net
+apxnlw.com
aqara.comaqawzxeg.com
+aqb.soaqbxcdn9.comaqbz.org
+aqc100.comaqcmgvxk.com
+aqd-tv.com
+aqdcdn.com
+aqdesk.com
aqdstatic.comaqee.net
aqfen.com
aqhfr.com
aqidb.orgaqigxaxv.com
aqioo.comaqisite.com
aqiyi.com
+aqlife.com
aqniu.com
aqqcx.comaqrsblg.comaqsc.org
aqsiqauto.comaqtd.comaquacity-tj.comaquanliang.comaquanutriera.comaquanyou.comaquapipetech.comaquaticowatch.comaquayee.com
+aqueck.com
+aqumon.com
+aqviwv.comaqvx8mcr392mv7.comaqxx.org
aqyad.com
aqyun.com
aqyzm.com
aqzpw.comaqzt.com
+aqzyzx.com
+ar-max.comarabsquash.comaragexpo.comaraldite2014.comarapp.onlinearay1981.comarayzou.com
+arbays.comarc-uds.comarcas-da.comarccode.net
+arcdmi.comarchaeuscapital.comarchcollege.com
+archcy.comarchermind.comarcheros.comarchery8.comarcherysalon.com
+archgo.comarchi-motive.comarchiant.comarchina.com
archiname.com
+archio.proarchitbang.com
+archrd.netarchsummit.comarco.design
arcsoftai.com
arcstack.clubarcteryx-log.com
arctic007.com
arcticray.comarctime.org
ard-china.com
+ardsec.comareader.com
arebz.com
+arefly.com
+zzyyrl.com
+zzyyds.comarestech-sz.comareweloongyet.comarextecn.com
+arfans.com
arhoo.comariaideh.comariesmob.com
arin-elec.com
arinchina.com
arisastar.com
+ark301.com
arkchuxin.comarkfeng.xyzarkid.cc
arkoo.comarkrdigital.comarkread.com
arksz.com
+arliki.comarlmy.me
+arloor.comarm9.netarm9home.net
armaf.org
+armbbs.netarmchina.com
+armfly.comarmin.ccarmsrock.comarmsword.comarmystar.comarnstbearing.comarocmag.comaroseks.com
+arp.cc
arpun.comarqinge.com
+arrbid.comarrow-tower.comarrowos.net
ars-china.com
arsqb.com
art-ba-ba.com
art-child.com
+art138.com
+art238.com
+art456.comartacode.comartaime.comartbookinchina.comartcg.design
+artcto.comartdata.net
+artddu.comartebuy.comartech-graphite.com
arterytek.com
artexamcq.com
artfinace.comartfoxlive.comartgogo.com
artgohome.comartgoin.comarthing.orgarthome163.comarthurchiao.artarticclothes.comarticle.cool
+artimg.netartisan-cloud.comartlinkart.com
+artlnk.com
artnchina.comartopia-group.comartp.ccartpangu.comartplusall.com
+artpro.com
+artpro.vipartproglobal.comartrade.com
+artron.netartronartdata.comartronimages.com
+artrus.netarts-cloud.netarts-nj.comartsbuy.comartshanghaifair.com
+artsoa.com
artverse.workartvisioncg.comartwaker.com
artwe.com
+artwun.com
artww.com
+artxun.comarvato-ocs.comarvinhk.comaryasec.comas-doll.com
as-hitech.comas3f.comas5.comasa-asia.comasao.comasatiles.com
asbeijing.comasbic11.com
asc-wines.comascelibrary.orgaschina.org
+aschip.com
+aschtj.comasciima.com
ascn.site
+asczwa.comasczxcefsv.comasd.red
+asd868.comasdlkjf.com
asdyf.com
asdzn.comasean-china-center.org
+aseann.comaseanparts.comasemi360.comasemi99.net
aseoc.com
aseoe.com
+asfuwu.com
asfzl.net
asganggui.comasgezhi.com
ashan.orgashanyouxi.comashechi.com
+ashgdf.com
+ashidc.comashining.comashj.com
ashoucang.comashqgpxy.com
ashsilent.comashuiai.comashvsash.net
asi-midea.comasia-cdn.comasia-dns.com
+asiabt.com
+asiaci.comasiacool.comasiacorp.net
asiae.comasiaeap.comasiafactor.com
+asiafm.netasiagreenfund.comasiaidc.netasiainfo-sec.comasiainfo.comasiainfodata.comasiametallurgical.comasianewsphoto.comasianmetal.com
asiarobot.net
asiaseiki.com
asiasolar.netasiayun.comasifadeaway.com
asilu.comasim-emc.com
+asimi8.com
asjrv.com
asjzf.icu
askci.com
askdd.orgaskedsdnadmcdn.com
+askemq.com
asketchup.comaskgtja.comaskk.cc
+asklib.comasklicai.comasklink.comaskpanda.ccaskququ.com
+asktao.com
+asktug.com
askxt.orgaskzybf.comaskzycdn.com
+asleyu.comaslk2018.com
+asls.space
aslzw.comasm.org
asm64.com
+asmasm.comasme.org
asmlc.comasmr.red
+asnlab.com
+asnlab.orgaso.ink
+aso100.com
+aso114.com
+aso120.com
+asoasm.com
+asp168.com
+asp300.com
+asp300.netasp8php.com
aspbc.comaspirationtesting.comaspire-info.comaspirecn.comaspqypmw.com
+aspsky.netaspx.ccaspxhome.com
asqql.com
+asr-cn.comasrmicro.com"assassinscreedcodenamejade.comassemblydragon.comzzyugang.com
+zzysbg.com
+zzykcd.com
assrt.net
+astbbs.com
astestech.com
astfc.com
+asthis.net
astipaint.comastm.orgastratt-video.com
astron.acastronergy.comastropulsion.comasuidnfamun.comasurada.zoneasus-sh.com
asussmart.com
asussz-zp.com
asusw.netasvm.netaswetalk.net
+asxzcn.comasyzonline.com
aszhuyuan.com
+aszvip.comat-e.com
at-tz.com
+at0086.net
at188.comat58.comat7790s887.comat78.com
at851.comata-edu.comata-test.net
atacchina.com
+atanyu.com
+ataoju.comatatech.org
+atats.shop
+atb.so
atbug.comatcc360.com
+atchip.comatcloudbox.comatcontainer.com
atcpu.com
atelier39.orgatenolol50mg.site
aterminal.net
+atfeng.comatguigu.comatguigu.orgathaitao.comathensgamulch.comathmapp.comatianqi.com
atido.comatimeli.com
+ating.infoatk.proatlab.ai
atlxm.com
+atmbox.com
atmcu.comatmlimited.com
atmob.comatob100.com
atobo.comatomgit.comatomhike-en.comatomic-art.comatomlock.comatoolbox.netatri.ink
atrustdns.comats6355866.comatstudy.com
atsws.comattacker.fitattempel.lol
attempt6.site
attemptd.workattendees.linkatticuslab.com
+attri.mobi
+atuoyi.com
atwbz.comatwtech.net
atyun.com
atyun.net
atzjg.netatzlinux.comatzuche.comauak.comaube-archi.com
aubor-ind.com
aucanlink.com
+aucnln.com
audan2011.comaudio-gd.comaudio160.comaudiobuy.ccaudiocn.comaudiocn.netaudiocn.orgaudiofamily.netaudiotop.net
audiowell.netaudiowellzq.comaudioxj.comaudlabs.comaudley-printer.comaugix.me
+augsky.com
augth.comaugurit.comaugustcn.com
auiou.comaukeyed.com
+aumi-t.com
+aunapi.comauniontech.comaunload.comauok.runauozzjs.lolauplanking.comaupu.netauqscfmk.comauqsipfm.comaura-el.comauroapi.comauromcs.com
aurora-jy.comaurumdriver.vipausaview.com
+ausbio.comausca-oils.com
ausdn.comaushinelyn.com
aushy.com
ausny.comauspous.comaussino.netaustargroup.comaustarstudy.comaustincamperrentals.comaustraliaxy.com
ausuu.comauthbus.comauthing-inc.co
+authing.coauthing.comauto-ccpit.orgauto-learning.com
auto-made.com
auto-mooc.comauto-purify.comauto-testing.netauto-wo.comauto1768.com
+auto18.comauto318.comauto328.comauto510.com
+auto6s.com
+auto98.comautoaddfriend.com
+autoai.com
autobaidu.comautobit.xyzautobizreview.com
autocamel.comautochina360.comautochinashow.orgautochinazh.com
autochips.com
+autodl.comautodmp.comautodwg.comautoengine.comautoesd.comautofull.netautogslb.com
autohenan.com
+autoho.comautohome.com
+autohr.org
+autoij.comautoitx.comautojingji.comautojkd.com
+autojs.orgautomall365.comautonavi.comautoparts-yoto.com
autophagy.netautoprotect365.comautoqingdao.comautosey.com
autoshafa.comautoshanghai.orgautosmt.netautosup.comautounicom.comautovideo.club
autovolke.comautowise.ai
autoz.net
+autozi.comauxgroup.com
auyou.comav-china.com
av-ic.com
av199.com
+av2.me
av269.com
av380.net
avalon.pw
avalon233.com
+avalss.com
+avanpa.comavatamveda.comavatarmind.comavatarmobi.com
avatr.com
avbdx.com
+avc-mr.comavc-ott.comavec6ua79dc6.comavemaria.funaves.artavfline.com
avgh5.comavgnati.comavgnatii.comavgroft.comaviationsnip.comavic.comavicnews.comavicone.comavicsec.com
+avicui.comavivaqueen.com
avl-hitec.comavlinsight.com
+avlsec.com
+avlyun.com
+avlyun.net
+avlyun.orgavmon.online
avnpc.comavnzpwo.com
avoscloud.com
avpic.xyz
+avq360.com
avrvi.comavtechcn.comavtt830.com
+avuejs.com"avxzads-xcvnkdff-dsfjodsmv.com
+avyeld.com
aw-ol.com aw.ccaw61duk.com
+awaker.netawaliwa.comawaysoft.com
+awc618.comawcloud.comawcn.ccawehunt.comawemeughun.comawemeuglang.comawemeugsoul.comawemeugwave.com
+aweruv.com
awesome-hd.me
+awfggc.comawhouse.artawhtjqdn.sbs
+awinic.com
+awmote.com
+awnlab.com
aword.netawotuan.com
+awoyun.com
awqmjnevv.comawsamazonlab.comawsdns-cn-01.bizawsdns-cn-01.netawsdns-cn-03.bizawsdns-cn-05.netawsdns-cn-07.bizawsdns-cn-10.comawsdns-cn-11.bizawsdns-cn-11.comawsdns-cn-12.bizawsdns-cn-14.bizawsdns-cn-14.comawsdns-cn-15.netawsdns-cn-16.bizawsdns-cn-17.bizawsdns-cn-17.netawsdns-cn-18.bizawsdns-cn-19.netawsdns-cn-20.bizawsdns-cn-20.netawsdns-cn-21.bizawsdns-cn-22.netawsdns-cn-23.comawsdns-cn-24.comawsdns-cn-24.netawsdns-cn-28.netawsdns-cn-29.bizawsdns-cn-35.netawsdns-cn-36.bizawsdns-cn-36.netawsdns-cn-37.bizawsdns-cn-37.netawsdns-cn-38.netawsdns-cn-39.bizawsdns-cn-40.bizawsdns-cn-40.netawsdns-cn-41.bizawsdns-cn-42.bizawsdns-cn-43.bizawsdns-cn-44.comawsdns-cn-44.netawsdns-cn-45.bizawsdns-cn-45.netawsdns-cn-46.comawsdns-cn-47.bizawsdns-cn-47.comawsdns-cn-47.netawsdns-cn-48.comawsdns-cn-49.bizawsdns-cn-50.bizawsdns-cn-50.netawsdns-cn-51.comawsdns-cn-52.bizawsdns-cn-52.comawsdns-cn-52.netawsdns-cn-53.comawsdns-cn-55.bizawsdns-cn-55.comawsdns-cn-55.netawsdns-cn-56.bizawsdns-cn-56.netawsdns-cn-57.comawsdns-cn-58.bizawsdns-cn-58.netawsdns-cn-60.comawsdns-cn-60.netawsdns-cn-62.bizawsdns-cn-62.netawsdns-cn-63.bizawsdns-cn-63.net
awsok.comawsonamazon.comawspaas.comawspony.com
+awstar.net
awtmt.comawu.coolawuming.comawx1.com
ax196.com
+ax2nc4.ren
ax630.comax8dm212f0.com
axatp.com
+axbsec.com
axbur.comaxcf.com
axentbath.comaxera-tech.com
axfys.comaxhimalayancc.comaxhub.imaxiaoxin.comaxinsur.comaxjm-ex.com
axjsw.com
axmro.com
axnsc.com
axq66.com
axqbs.comaxs8.com
axshuyuan.com
axuer.comaxunyou.comaxure.us
axureshop.comaxureux.com
+axybio.com
axyxt.comaxzchou.comaxzhaofang.com
axzy1688.site
ay-health.comay57.comay99.net
ayalm.com
aybwg.org
aycav.com
aycgu.com
+ayctgy.comaydaojia.comaye.inkayeucefm.com
ayfdc.comayfy.com
+ayguge.com
+ayhmjy.comayhtmsyk.comayhuowan.comayibang.comayidada.com
ayijx.comayilaile.comayjs.netaykj.net
+aymhsy.com
aymym.comayok.xyzayqy.net
ayrbs.com
ayrmt.com
ayshq.comaysjyjjh.com
+aysz01.comayudasalud.com
ayump.comayunlian.com
+ayuren.com
+ayuwoe.com
+ayuyun.comayw.ink
ayxbk.comayxz.com
+ayzzxx.com
azad.asiaazbh666.comazbil-keyence.com
azbingxin.comazchcdna.comazchcdnb.comazchcdng.comazchcdnh.comazchcdnj.comazchcdnm.comazdnszx.icu
+azetac.com
+azf010.comazhimalayanvh.comazhituo.comazhubaby.com
azinbate.infoazmcode.comazmtszpk.comazonete.com
azooo.comazoyacdn.comazoyagroup.com
+azsjhf.comazuretouch.net
+azurew.comazureyun.com
+azxdiy.com
+azy288.com
+azycjd.com
+azyy99.comazz.net
azzdm.com
+b-chem.comb-eurochina.comb-fairy.comb-learn.com b.bizb01.netb1bj.comb1cjcgy8s2.comb1n.netb1qg.com
+b23.tvb2b-builder.comb2b.biz
+b2b123.com
+b2b168.com
+b2b168.net
+b2b168.orgb2b3.comb2b6.com
b2bgo.com
b2bic.comb2bname.com
+b2bvip.com
+b2bvip.net
+b2byao.com
+b2cedu.comb2clouds.com
b2jiaxiao.comb2q.com
+b2star.comb3inside.com
b3log.org
b3logfile.com
b5200.net
b555b.comb55weik1d4.comb5b6.comb5csgo.plusb5esports.meb5gvpk5.comb5nngc6zmt.comb5v0m3q8.comb612.meb612.netb612kaji.comb6kfxga.com
+b7l.ccb8kk.comb8th-hzvac3.comb8yx.com
ba-li.comba7jcm.live
baalchina.net
baba-blog.combababian.combababus.combabaicai.combabaike.combabaimi.com
babao.combabaofan.com
+babapi.combabariji.com
babaxiong.com
+babedy.combabeijiu.combabiguoguo.combabolchina.combaboshan.combabsoft.netbabuxiang2005.combaby-bus.combaby577.combaby611.com
baby7blog.combaby868.combabybus.combabybus.orgbabycdn.combabymoro.com
babymozart.ccbabyqiming.combabytree.combabytreeimg.combacaizi.com
+bacaoo.combacaosh.com
bacic5i5j.com
backaudio.combackdata.netbackendman.combackmany.combacocis.com
+bacska.com
bacts.combadambiz.combadazhou.com
badianyun.com
badls.combadmintoncn.combadmintone.combadouxueyuan.combadu.com
+badudns.ccbaduziyuan.combaeapps.com
+baertt.combaetyl.techbafangjuhe.combafangwang.combafangwy.com
+bag198.com
+bagb2b.combagesoft.netbagevent.combageyalu.combags163.combagsnet.combagstory.netbagtree.combagualu.netbaguichong.combaguilingyun.com
bagxs.com
+bahens.combai.com
bai68.com
baibaipei.com
baibaoyun.combaibianyishu.combaibite.com
baibm.com
+baibo8.combaibomedia.com
baibu.combaic-group.combaic-hs.com
+baicai.combaicaijie09.combaicaio.combaicaiyouxuan.combaicaolu.netbaicaosoft.combaicdnx.combaicells.combaichanghui.combaicheng.combaichenginedu.combaichengyuehua.combaichuan-ai.combaichuanhd.combaichuanhudong.combaichuannet.vip
baicizhan.com
baicizhan.org
baiclouds.com
baicmotor.combaicmotorsales.combaicuoa.combaidajob.com
+baidao.combaideled.com
baidenafu.combaidevalve.combaideye.combaidiapp.combaidinet.combaidouya.com05bq.combaidu-bank.com
baidu-cdn.com
baidu-cdn.net
baidu-int.com
baidu-itm.combaidu-mgame.combaidu-tech.combaidu-wenxue.combaidu.ccbaidu.cm
baidu.comzzyjsmba.combaidu.hk
+baidu.mobibaidu.tobaidu120.ccbaidu123.combaidu521.combaiduads.combaiduapp.combaidubaidubaidu.combaidubaidubaidu.netbaidubce.combaidubcr.combaidubos.combaiducloudapi.combaiducontent.combaidudaquan.combaidudw.com
baidufcjx.combaidufe.com
baidufree.combaiduhaoba.combaiduhtml5.combaiduhui.com
baidulook.combaidunongmin.combaiduor.combaidupan.combaidupcs.combaidupcs.netbaidupeixun.combaidusmartapps.combaidusobing.combaidusx.combaidutab.combaidutieba.combaidutt.combaiduux.com
+baiduv.combaiduwaf.combaiduwebgame.com
baiduwpan.combaiduxiaodai.combaiduyangguang.orgbaiduyun.com
baiduyun.wikibaiduyuncdn.combaiduyuncdn.netbaiduyundns.combaiduyundns.netbaiduyunsousou.combaiduyunwaf.combaiduzjn.combaieryk.combaifabohui.com
+baifae.com
+baifang.inbaifangdianqi.com
baifangzh.com
baifeiyue.combaifubao.combaigebao.combaigepo.combaigeseo.com
baigo.netbaigolf.combaigongbao.combaiguitang.combaihangbao.combaihangdai.com
baihaocha.com
baihe.combaiheee.combaihemob.combaihephoto.combaihong.com
baihuayan.com
+baihui.com
baihui168.combaihuijiguang.combaihuikucun.com
baihuillq.combaihuiyaoye.combaihuoke.com
+baiila.combaiinfo.com
+baijia.combaijiacloud.combaijiahulian.combaijiantest.combaijiasheping.com
baijiayun.combaijiayuncdn.combaijiegroup.com
baijiexiu.com
+baijii.com
baijincdn.com
baijindai.combaijingapp.com
baijiu.tv
+baijob.combaijunjz.com
baijunyao.com
+baijus.netbaikalminer.combaikangyun.com
baike.combaike.inbaike28.combaikecs.com
+baiked.combaikemy.combaikemy.netbaikeshiji.combaikeshijie.combaikeshushu.combaikevod.combaikewenda.combaikexueshe.combaikeyo.combaikezh.combailanjiaju.combailepin.combailiaijia.combailiangroup.combailiann.combailiban.combailiguangmang.com
bailing88.com
bailitech.combailitop.combailvanquan.xyz
baima.combaimao-expo.com
+baimao.com
baimaohui.net
+baimda.com
+baimei.com
baimg.combaimiaoapp.com
+baimin.com
baina.combainaben.combainaruibusiness.com
+baineng.ccbaiozhuntuixing.com
baipin.pwbaiqianxin.combaiqiaogame.combaiqishi.combaiqiyaoye.combaiquefahuasi.combaironginc.combairuitech.com
baisainuo.combaise123.vip
baise1314.combaisecn.com
baiselife.com
baisenews.netbaisered.combaiseshiyu.combaiseylj.combaiseyun.combaishakm.combaishan-cloud.combaishan-cloud.netbaishan-gateway.combaishan.combaishancdnx.combaishancdnx.netbaishancdnx.topbaishancloud.combaishancloud.orgbaishandnsx.combaishandnsx.netbaishandnsx.topbaishangeek.combaishanyun.com
baishicha.combaishishuju.combaishixi.xyzbaishudata.combaishuku.la
baishunet.com
baishuyun.combaisiker.combaisiterzh.combaisiweiting.com
baisu.combaisuizhixiang.com
+baisuu.netbaitahe.netbaitaihuge.combaitanheichang.combaitaxiaodu.com
+baitdu.combaiteng.org
+baithu.combaitianinfo.combaitiao.combaitomould.combaitongwang.com
baituibao.combaiu.com
+baiven.combaiwandz.combaiwang.com
baiwangjs.combaiwulin.combaiwushi168.com
baiwutong.combaixiaosheng.netbaixihuang.combaixing.combaixing.net
baixingjd.com
+baixiu.orgbaiyang.combaiyangseo.combaiyaohy.combaiycap.net
+baiye5.com
baiyewang.com
+baiyi.shopbaiyi181.combaiyiba.combaiyikc.combaiying.com
baiyinggd.com
+baiyjk.com
baiyou100.com
+baiyu.techbaiyuemi.combaiyumedia.combaiyunairport.combaiyunhuojia.combaiyunmh.combaiyuno.combaiyunpiaopiao.combaiyunpump.combaiyunxitong.combaiyuxiong.combaizead.combaizhan.net
baizhanke.combaizhanlive.com
baizhiedu.combaizlink.combajiebofang.combajiecaiji.combajiehechuang.combajiexinxi.net
bajintech.combaka.funbaka.im
+bakaxl.combakbitionb.combakchoi.combakclass.com
bakingerp.com
+baklib.com
bakmf.com
bakshifen.com
bakstotre.combala.cc
baldc.combaldor-tech.com
+bale25.xyz
+baletu.com
+balift.com
balijieji.combalimtoy.com
balingtxt.comballgametime.comballpure.com
balltv.ccbaltamatica.com
+baltmd.combama555.combamaiwo.combamalifelong.com
bamaol.cc
+bamaol.combamashenspring.combamatea.combamaying.combamboo18.com
bamengame.combamensq.combamenzhushou.com
+bamuwu.com
+bamuyu.comban-hou.combananafather.combananalighter.combananau.combananaumbrella.combananaunder.combanbang.combanbanjia8.combanbao22.combanbaowang.combancheng08.funbanchengyun.combanciyuan.me
bandaoapp.combandayun.combandcevent.combandengw.combandeyu.com
bandianli.combandoristation.com
+bandvr.combanfubbs.combangbang.combangbang93.combangbanghuoyun.com
bangbendi.combangboer.combangboer.netbangboss.combangcheng0769.combangcle.combangdao-tech.combanggeen.com
+banggo.combanghaiwai.combangivf.combangjiantong.com
bangjixia.combangkaixin.combangkao.combangkaow.com
bangkebao.com
bangkehui.combanglianai.combangmai.com
bangnixia.combangongtuku.com
bangongyi.combangongziyuan.combangqi66.com
+bangqu.combangrong.combangsee.combangshouwang.com
bangthink.combangtukj.combanguanjiabc.combangwo8.combangwo8.netbangwoting.combangxuetang.combangyangdm.combangyike.combangzechem.com
bangzhufu.com
bangzhuta.combanji001.combanjia1680.com
banjiajia.com
banjiamao.combanjiekuaiji.combanjixiaoguanjia.combanjuanshu.combanjunxingkeji.combank-139.combank-of-china.combankalliance.netbankcomm.comzzyiquan.com
+zzyfjc.com
+zzyedu.org
+bankcz.com
+bankgz.com
+bankhr.com
+bankkf.combankksw.com
bankofbbg.combankofchangsha.combankofchina.combankofdl.combankofshanghai.combankofshanghai.netbankoftieling.combankofvolc.combankofyk.combankpublish.com
banksteel.combanksteeldns.com
+bankyy.netbanlikanban.com
banma-inc.com
banma.com
banmaaike.combanmacdn.combanmadayuwen.combanmaedu.combanmagushi.combanmajsq.com
banmashuo.combanmasiwei.combanmasrf.combanmasusuan.combanmayingyu.com
+zzyecc.combanqumusic.combanri.me
+bansha.combanshangong.combanshier.combantangapp.combantangbuy.com
banwagong.menbanwagongzw.combanwo365.combanwojia.com
+banwoo.netbanwoyo.netbanwugongsi.com
banxia.mebanxiaomazaojiao.com
banxiayue.combanyiyi.com
banyuetan.orgbanyuetanapp.combanyuetanxcx.combanyunjuhe.com
+banzhe.xyzbanzhuti.combanzou.namebanzous.combanzouzhizuo.combao-fang.combao-hulu.com
+bao100.combao12333.com
bao21.com
+bao265.com
+bao315.com
+bao369.combaob123.combaobanli.com
+baobao.com
baobao001.combaobao88.combaobaobang.combaobaoqiming.site
baobaoshu.com
baobei360.combaobeicang.combaobeigezi.combaobeihr.combaobeihuijia.combaobeio.combaobeita.combaobeituan.com
baobianli.net
+baocdn.combaochaojianghu.combaochenykk.com
baodan100.com
baodan360.combaodaohealth.combaodaren.netbaodery.combaodigs.com
baodu.combaoduys.combaofeng.combaofeng.mobibaofeng.netbaofeng365.combaofengcinema.combaofengtuandui.com
baofengtv.com
+baofon.com
+baofoo.com
+baofoo.net
baofu.art
baofu.com
+baofu.infobaofull.com
baofumuye.combaogang.info
+baogao.combaogao.storebaogaoku.combaogaoting.combaogaozhiku.com
baoge.netbaogebei.combaoguangtai.combaohebao.combaohongbao.netbaohuagroup.combaohuatravel.com
baohuaxia.combaohujiaoyu.com
+baoimg.netbaoinsurance.combaoji3g.com
+baojia.combaojiagaiye.combaojian.combaojiazhijia.combaojidaily.combaojijob.com
baojinews.combaojinling.combaojule.com
+baojun.netbaojunev.combaokan.name
baokan.tvbaokang.combaokanhuicui.com
baoku.com
baokuandi.combaokutreasury.combaolizx.com
+baoltx.combaolu.store
baomalove.com
baomei.tv
baomi.combaomi365.combaomidou.combaomihua.combaoming.combaomitu.com
+baomtx.com
+baoqin.combaoqingvip.combaoruan.combaoruisi.com
baoshangj.com
+baoshe.netbaoshe01.combaoshengcable.combaoshuanglong.combaoshuiguoji.combaoshuiguoji.netbaoshuo.renbaosiair.combaosight.combaosteel.combaostock.combaotime.com
+baotoo.combaotoulawyer.combaotounews.combaotoushizx.combaotuba.com
baotuo.cc
baowu.combaowugroup.combaoxian.com
baoxian72.combaoxianhai.combaoxianjie.netbaoxianshichang.combaoxiaobar.com
baoxiaohe.combaoxinchewang.combaoxingmuye.combaoxinleasing.com
baoxinwen.com
+baoxiu.netbaoxuexi.combaoyang1.combaoyang888.combaoying.combaoyizn.com
baoyt.combaoyueai.combaoyuekj.combaoyuncm.combaoyung.combaoyuntong.combaoz.netbaozang.combaozengzhang.combaozhayun.cloudbaozhenart.combaozheng.cc
baozhilin.com
baozhuang.bizbaozhuangjixie.orgbaozhuangren.com
baozi.fun
baozi.runbaozifa.combaozijishu.combaozipu.com
+baozou.combaozoudi.combaozugongkeji.com
+baozun.com
baozy.combapengpc.com
+baping.com
+baqi28.com
baqiu.combarkinject.lol
+barman.vip
+barmap.combaron-bj.combaronzhang.com
barretlee.combasabela.combasechem.orgbasecity.com
based-edu.com
+basemu.combaseopendev.combasequan.combasestonedata.com
+bashan.combashigao.combashuhuapai.combashuku.combasiccat.orgbasicfinder.combasunlighting.combatengtiyu1.combathome.net
+batian.netbatmanit.com
+batmsg.combatplay.combattery-cert.combattery-expo.combattery8.combatterydir.combatterykey.combattlecare.netbattleofballs.combatupian.netbaufortune.combauschlombchina.com
bavei.combawagon.combawanglongbengye.combawu.netbaxiami.com
baxichina.combaxisuye.combaybox.club
baydn.com
baye.techbayee.cc
+bayinh.combayuche.combayue88.combayuegua.combayueju.combayueweb.com
bayunhome.combazaarjewelrychina.com
bazai.com
+bazhan.combazhepu.com
bazhua.mebazhuay.combazhuayu.ccbazhuayu.combazhuayukeji.com
+bazi.cloudbazi.runbazi.xin
bazi5.com
+bazibk.combazp.netbb-game.com
bb-hy.com
+bb-pco.combb06.combb778899bb.com
bbanp.com
bbaod.com
bbaqw.combbb1415.com
+bbbaaa.com
bbbao.combbbb.combbbcdns.com
bbbmq.com
+bbbtgo.com
+bbchin.com
bbctop.cc
+bbctop.combbdservice.com
bbdup.combbecpsc.combbef.combbeshop.com
bbfoxgame.combbfstore.combbfytsn.com
+bbgdex.combbgsite.combbguangcai.com
bbicn.com
bbioo.combbiquge.combbj.icu
bbjkw.netbbk.com
+bbk000.combbkantu.com
bbkys.com
+bblskj.com
bbmuwwxyk.combbmy.netbbnadhry.sbs
bbobo.combbonfire.com
bbosu.combbpu.com
+bbqcdn.combbqe.combbqk.combbqming.com
+bbqseo.com
+bbqwhg.combbrmedia.com
bbrtv.com
+bbs-go.combbs0415.combbs0551.com
bbs1x.net
+bbsaso.com
bbsds.combbsheji.com
bbsls.net
+bbsnet.combbsufida.com
bbsut.com
bbsxp.com
+bbt029.combbtang.info
bbtcaster.combbteapress.combbtengfeizaixian.com
+bbtkid.combbtpress.com
+bbtree.combbtwatch.com
+bbtydc.combbugifts.combbunion.combbw-portnet.com
+bbwcec.com
bbwcq.combbwfish.com
bbwgw.com
bbwhy.com
+bbwict.com
bbwnt.combbwoils.com
+bbwotc.combbwport.combbwport.net
bbwrc.com
bbwse.com
bbwunisco.combbwxbbs.com
+bbwyun.combbxinwen.combbxinwen.netbbxstjx.com
bbxtd.com
bbyyw.com
bbzhh.com
bbzhi.com
+bcactc.combcb5.com
bcbpm.com
bcbvi.combccastle.combccn.netbccnsoft.combccv.combcdaren.combcdy.netbce-cdn.combce-cdn.net
+bceapp.com
+bcebos.com
+bcedns.com
+bcedns.netbcedocument.com
bcegc.combcehost.combcehosts.combceidaas.com
+bceimg.combcelive.combcenrso.com
+bcevod.com
+bcewaf.combcfmglobal.combchdemo.site
bchrt.com
bcitb.com
bcjkcloud.com
+bcmcdn.com
+bcmeng.combcmonomial.xyz
bcpcn.combcpgame.com
+bcplab.com
+bcreat.com
bcrjl.combcsfoong.combcshipgo.combcsloong.com
+bcsytv.com
+bctest.com
bctmo.com
+bctw3f.xyzbcty365.com
bcvbw.com
bcvdmovie.com
bcwangluo.netbcxgame.com
bcxww.combcy.net
+bcyimg.com
+bczcdn.combczs.netbd-apaas.combd-caict.com
+bd-film.cc
+bd-film.cobd-film.com
bd-jd.combd-union.com
bd001.net
bd689.combd7kzs.sitebdactivity.com
bdall.combdapark.com
bdatu.com
bdbae.combdc-rays.combdchangtujs.combdchina.combdcloudapi.combdclouddns.com
bdcqc.combddyy.cc
+bdebid.combdeceimg.combdegnine.com
bdeju.combdf2.com
+bdfczx.com
+bdfmkj.com
+bdfzcd.netbdgamelive.combdgp.cc
bdgqx.com
+bdgslb.combdgw.cc
bdimg.com
+bdinfo.net
bdispatch.com
bdispatch.net
bdkbp.com
+bdkssc.com
bdkyr.combdlcqjw.combdns-api-test.netbdns-boe.combdns-boe.netbdns-gtm-01.netbdns-gtm-pressure.combdns-restore.net
bdns-test.com
bdns-test.net
bdpan.com
bdpnt.com
bdppe.netbdqn027.combdqn666.com
+bdqnwh.com
+bds-cn.combdsagslb.combdsagslbtest.com
+bdsana.combdsd.design
bdsgx.com
bdshengce.combdshuang.com
+bdsimg.combdspacetime.com
+bdstar.combdstatic.ccbdstatic.combdstatlc.com
bdsye.combdsytime.combdtianchang.com
bdtic.combdtjrcv.com
bdtjs.orgbdtm.net
+bduapp.com
bdurl.netbdwater.com
+bdwkxz.combdwm.net
+bdwork.combdxc.com
bdxhj.combdxiguaimg.combdxigualive.combdxiguastatic.combdxiguavod.combdxx.netbdxyykj.com
+bdycdn.com
+bdycdn.net
+bdydns.com
+bdydns.net
+bdyhem.com
bdylg.com
+bdymkt.combdys.me
+bdys10.combdysite.combdysites.combdyz.xyzbdzhipin.combdzjdsagslb.combdzxgps.com
be-xx.com
+be1775.combe4f.combe90.combeadwallet.combeancomm.combeantechyun.com
+bear20.combearead.combeargoo.combearingclub.combearjoy.combearminers.xyzbearrental.combearyboard.com
bearychat.combeastush.combeasure.combeats-digital.combeatsbydre.combeautifulbank.combeautifulism.combeautifullinux.combeautifulzzzz.com
bebhmongb.combechangedt.combeckwai.combecomingcelia.combecominggroup.combecukwai.com
becupidon.combedtimepoem.com
beduu.combee-net.combee-station.com
beebeepop.combeebeeto.combeecook.combeedancing.combeeeeego.combeegoedu.combeejoygames.com
+beekka.combeelink.combeemarket.tvbeep365.combeeplay123.combeer-ui.com
+beeshow.tvbeespal.combeestor.com
beeui.combeeweart.com
begcl.com
+begeel.combegindcc.combego.cc
+begoto.combegowin.com
+behake.combehrenswatches.combehrenswatches.shopbei1688.combeianidc.com
+beianw.combeibaozq.com
+beibei.com
beibeicdn.combeibenkc.com
+beicdn.combeidahuang.net
beidasoft.com
beidd.combeidian.combeidisi.combeidoou.com
+beidou.orgbeidou66.combeidouchong.com
beidouone.combeidousafety.orgbeidouxingxueche.com
beiduolab.combeierchina.netbeierjin.netbeieryouxi.combeifang.netbeifangfoshifen.combeifangjiaoyu.combeifeng.combeifuni.combeigangyouxuan.combeigonggroup.combeiguorc.com
beihai365.combeihai97.combeihaidc.combeihaigame.combeihailihe.combeihaimayi.combeihaipiano.combeihaiqiuzhi.combeihaireexpo.combeihaiting.combeihaiwuyeguanli.combeihaiwz.combeihaizp.com
+beihan.netbeihansoft.com
beihaobao.combeihuasoft.com
+beihuo.netbeijing-chopard.combeijing-girardperregaux.combeijing-hmo.combeijing-hualian.combeijing-kids.combeijing-lipin.combeijing-marathon.combeijing-office.combeijing-time.orgbeijing120.combeijing518.combeijingbang.combeijingbaomu.combeijingcenterforthearts.combeijingfenxiangkeji.combeijingkbd.com!beijinglunhuazhuanmaidian.combeijingnorthstar.com
beijingrc.com
beijingrc.netbeijingrenyi.combeijingsanchi.combeijingsheying.netbeijingtoon.combeijingwatch.combeijingwenshendian.combeijingxiantour.combeijingxinzhuoyue.combeijingyouxi.combeijingyuanxin.com
+beijiu.ink
+beijzc.combeike21.combeikeapp.combeikeba.com
beikeread.combeikongyun.combeikonmeshfence.combeileike.combeileimaoedu.combeilewh.com
beilianjd.combeilile.com
beilinbox.combeiliufuyang.com
+beimai.combeimeigoufang.combeimeihongfeng.combeimeizhijia.combeimeizhiying.combeimiyouchuan.combeinglab.com
beingmate.com
beipy.combeiqujy.com
beiren.cc
beise.com
+beisen.combeisencorp.combeisenyl.combeismei.combeitaguoguo.combeitaichufang.combeitao8.combeitown.com
+beitre.combeiwaibest.combeiwaiclass.combeiwaiguoji.combeiwaionline.combeiwaiqingshao.combeiwangshan.com
beiwo.com
beiww.combeixibaobao.com
beixingmh.combeiying.artbeiying.onlinebeiyinqi.combeiyongzhan.combeiyxiu.combeizengtech.com
beizi.bizbeiziba.combeiziman.combej9.com
+bejoin.net
+bejson.com
bekko.combelarusvisacenter.combelfone.combelgiumvisacenterd.combeliefy.com
belle-vie.xyz
+belle8.com
belletrip.combelllan.combelloai.combeltandroadforum.orgbeltxman.combemanicn.com
bemfa.combemhome.combenasqueapartamentos.combenbenlong.combenber-tech.com
+benber.com
+benbun.combendan.website
+bendi5.combendibao.combendiso.com
bendiw.ccbendizhidao.com
+benduo.net
bengbufan.combengbukx.combengden.com
+bengfa.bizbenghuai.com
+bengku.com
+bengou.combengrong.combengtie.com
benhs.com
+beniao.combenjamin.funbenkejieye.com
+benkua.com
+benlai.combenlailife.combenlaisy.combenliuxinwen.combenlong.vip
benma.com
benmi.combenmu-health.combenniux.combennybu.funbenqmedicalcenter.combenqmedicalcentersz.com
benshouji.combensiea.combenweng.com
benxintea.com
benyh.com
benyouhui.combenyuannet.com
+benzhb.com
benzhibbs.combenzhiwangluo.combenztto.combeodesj.com
beony.com
beook.com
bepal.pro
bequ6.com
bequ6.orgbequgew.combequgexs.combequgezw.com
bequw.com
+bequwx.orgberens-china.com
+berfen.comberlin8.orgberlinchan.comberlinix.com
+berqin.com
berrydigi.combersella-ai.cc
bersilion.com
bertadata.com
berui.comberylbot.combes.renbeschannels.combescloud.com
besclouds.combesg-bee.com
+besget.combeshtech.com
+besile.com
bessystem.combest-display.combest-inc.combest-intl-school.combest-lookstone.com
best66.me
+best73.combestadprof.com
+bestapp.usbestapp.wikibestarzx.combestatic.combestb2b.combestbaijiu.combestbeibao.combestbrocciu.combestcake.combestcdn.vipbestcem.combestcloudcdn.combestclouddns.combestcood.combestcovered.com
+bestdo.combestdon.net
bestdosas.combestechnic.combestedm.netbestedm.orgbesteduchina.combestexpresser.combestfood517.combestfuturevip.com
+bestgo.combesthongqiang.combesthub.tech
besticity.com
+bestjy.netbestlee.netbestlosslessmusic.combestone.vipbestopview.combestpay.netbestpeng.combestqliang.combestreplicheitalia.com
bestsdwan.combestshinhwa.com
bestsign.info
bestsign.techbestsrc.combestsuppliers.combestswifter.combesttrav.com
bestugali.com
+bestv6.combestvapp.combestvcdn.combestvcdn.netbestviewstock.combestvist.com
+bestwa.combestwatch.ccbestwatchaaa.combestwehotel.combestweshop.combestzone.orgbestzumo.com
+bet007.combet8.cmbetaband.net
betadance.netbetaenv.com
betaflare.combetaidc.com
+betamao.mebetaquantity.com
+betawm.com
betazixun.com
+betbr1.combetcctv.combetop-cn.combetop365.com
betophall.combettbio.com
betteredu.netbeuyinm.combeva.com
bevol.com
bevzc.com
bewellbio.com
+bewgnn.com
+beyebe.com
beyondbit.combeyondcomparepro.combeyondfund.combeyondh.combeyonditsm.combeyonds.combeyoner.netbeyotime.combezbzsyf.combf-jxqc.combf-z.combf-zhengzhou.combf35.combf4cgwizl.sitebfcdnbf.combfcdnrd.combfcdnsc.com
bfchayuan.combfcmovie.combfdcloud.com
bfdfe.combfe-networks.combfe-networks.net
bffengshi.com
+bffyun.com
bffzb.com
bfgho.com
bfhmj.com
bfhmq.com
+bfhzmj.com
bfimg.combfjr.combfjxmajiang.com
+bfjxmj.com
bfklyhuan.combflschayuan.combfnbgame.combfningbo.combfnxxcdn.combfqh.com
+bfqifu.com
+bfqqsg.combfqtchayuan.combfqzmyq.com
bfsea.xyz
bfssj.combfsu-artery.net
+bfsutw.com
+bfsxmj.com
bft-robot.com
+bft5mp.xyzbftq.combftv.com
bfvvs.combfw.wikibfxiuxianqipai.com
bfypq.combfyx.combfyx.net
+bfzhan.com
+bfzzmj.com
bg-cs.combg45.combgbk.org
bgctv.com
+bgdeco.com
+bgdzsw.combgfl.netbggd.combgic.com
bgici.com
bgigc.combgigciot.combgjs0929.com
+bgk100.combgkj.pro
bgl88.com
+bglmzm.combgmfans.combgmlist.com
bgnyl.com
+bgrbjt.com
bgrdh.com
bgren.com
+bgrimm.com
bgsdk.net
+bgsdyz.combgteach.com
bguai.com
+bgv888.com
+bgwcsz.combgwl.net
bgwxc.com
bgxcl.combgxu.com
+bgyfhh.combgyfhyx.com
+bgypsc.combgzx365.com
+bh-lay.combh-mangrove.com
+bh-med.combh-xhhd.com bh.sbbh1t.combh3.com
+bh4dks.combh5.com
bh568.combh8cg18i96.com
+bh8sel.combhcd.net
+bhcgky.com
bhcpu.com
bhcyhotel.com
bhcyts.cc
bhcyy.com
+bhczxx.com
+bhdata.combhdl520.com
+bhdyjs.combhecard.com
bheyy.combhfangchan.com
bhfeiyang.com
bhghy.com
+bhgjjy.combhgmarketplace.com
bhgsb.com
+bhgshb.com
+bhhfsc.combhhospital.com
bhhsx.com
+bhhthl.combhhuasheng.com
+bhhzjt.com
bhidi.com
bhjck.com
+bhjcsc.com
bhjinghao.combhjjj360.com
+bhkyxy.com
bhlib.combhmlsys.com
bhnet.net
bhnge.com
bhnsh.combhpiano.combhpiston.combhqd6688.combhrencai.com
+bhrssp.combhsanfan.combhsbdcdjzx.combhsence.com
+bhsgnk.combhshtksp.com
bhshunhui.com
+bhshyy.combhsr.com
+bhswyw.combhszyyy.combhtv.ccbhuitong.com
+bhuvgy.combhwater.orgbhwzdnweys.com
+bhxgkj.com
bhxww.combhybskq.com
bhyby.combhycjdyp.combhyintan.combhyueda.com
+bhzck.club
bhzck.xyz
+bhzd88.com
+bhzdzx.netbhzhu203.combhzp.net
bhzpw.combhzw.com
+bhzyxy.net
bi-ci.combi4sight.com
+bi8brp.combianbao.netbianboshi88.com
biancheng.netbiancui.combiandouyun.combiandown.combianeng.combianews.combianfeng.combianfengkuailai.combiangang.ccbianhaiyun.combianjiqi.netbianjiyi.combianlifeng.combianlun.netbianmachaxun.combianpingyou.combiantaishuo.combiantongzixun.com
+bianwa.combianwanjia.combianxian.combianyuandaigou.combianzhia.com
bianzhile.combianzhirensheng.com
+biao12.combiao689.combiaobiaoge.combiaoceo.combiaodan.infobiaodan100.combiaodiancloud.combiaodiandichan.combiaodianfu.combiaofaw.com
+biaoge.com
biaoge.me
+biaohs.combiaoju01.com
+biaomi.combiaopan8.combiaopeibao.combiaoqing.combiaoqing888.combiaoqingjia.combiaoqingmm.combiaoshixinyi.combiaotuan.combiaotukeji.com
+biaoyi.combiaozhaozhao.com
biaozhiku.combiaozhun.org
biaozhun8.combiaozhunkeji.com
biaozhuns.combibaodao.combibenet.com
+bibibi.net
+bibigpt.co
+bibiku.combibuzhengxing.combich6dqye5.xyz
bicobrand.combicomoptics.combicpaedu.combicredit.xinbicv.combid-view.com
bidchance.com
+bidemi.com
bidepharm.com
+bidewu.combidgojp.com
bidianbao.combidianer.combidingxing.combidizhaobiao.com
bidns.netbidtoolads.combiduo.ccbiduobao.combiduoxs.combiduwenxue.com
+bidwhy.combiechila.com
biede.combiedoul.combiekanle.com
biema.com
+bieshu.combietongfeng.combieyangapp.combieyelighting.com
+bifabu.combifangpu.com
bifiv.combiftsce.combig-bit.combig-shanghai.com
+bigaaa.net
+bigaka.com
bigan.net
bigbaicai.combigbenmeng.combigbigai.com
bigbigsun.combigbigwork.com
bigbrosci.com
+bigcat.combigcloud.click
bigda.combigdata-expo.orgbigdata.renbigdatasafe.orgbigdatastudy.netbigecko.combigehudong.combigemao.com
bigerdata.com
bigerwall.com
bigeshuju.com
+bigesj.combigeyes.combiggerlens.com
biggeryun.combigherdsman.combightbc.combigjb.store
+bigjpg.combigma.cc
+bigniu.com
+bignox.com
+bigops.combigplayers.com
+bigpt8.combigqiao.combigquant.combigrnet.combigsexporntube.combiguo100.combiguolunwen.com
bigwayseo.com
bigwh.combigwinepot.com
+bigwww.combigxiao.combigyulin.combigzhong.combihe0832.combihongbo.com
bihoo.combihu.com
bihuatuku.netbihubao.combihujia.combihuoji.com
+biikan.com
+biioii.combiji.com
+biji13.combijiago.combijiagou.combijianzw.com
+bijiao.orgbijiasso.combijiatu.combijienetworks.combijikang.combijirim.combijixia.netbika2468.xyzbikecool.combikehome.net
+biketo.combiketour-giant.combiking-m.com
+bilezu.combili.fanbiliapi.combiliapi.netbilibil.combilibili.ccbilibili.cobilibili.combilibili.netbilibili.tvbilibili996.combilibiligame.cobilibiligame.netbilibilihelper.combilibilijj.combilibilipay.combilicdn1.combilicdn2.combilicdn3.combilicdn4.combilicdn5.com
bilicomic.combilicomics.combiligame.cobiligame.combiligame.net
+biligo.com
+biligx.combilihot.combiliimg.combiliintl.cobiliintl.com
bilimanga.net
bilinovel.combiliplus.com
+biliui.com
+bilive.com
bilivideo.com
bilivideo.net
+biliyu.combill-jc.combillchn.combillionbottle.combillionconnect.combillionseo.combillowlink.combillwang.net
bilnn.com
bim-times.com
+bimant.combimface.combimfmchina.com
+bimige.netbimiwuxs.com
+bimjoy.combinaryai.net
binaryai.techbinbinyl.com
+binbla.combincailiuxue.com
binfen.tvbinfenniao.combinfenquzu.combinfenyeke.combinfenyingyu.combinfenzhilv.combing400.combingchengwang.com
bingd.combingdian001.combingdian01.combingdoc.combingdou.sitebingfan.com
bingganqy.com
bingguner.combinghelengmei.com
+bingjo.combinglai.netbinglanggu.combinglianhuajianzhan.combingliekeji.com
binglixue.combingninglaowu.combingo321.com
bingolink.bizbingosci.combingqipu.netbingquan.combingsin.combingtuannet.combingyan.netbingyandianqi.combingyongjin.vip
+binjie.funbinjie.sitebinligzj.combinliwatch.combinmt.cc
binmtplus.com
+binpang.mebinqsoft.combinstream.livebinuoniu.com
binzc.com
+binzhi.combinzhikeji.combinzhouw.com
binzhuang.combio-dxzf.com
bio-equip.com
bio-fount.combio-fuyang.combio-info-trainee.combio-protocol.orgbio-review.com
+bio360.net
bio4p.com
biobiopha.com
biobw.orgbiochemsafebuy.combiocloud.netbiocome.combiodiscover.combiodiscover.net
biogo.net
biohf.combiohuaxing.com
biohyalux.combioinfo-scrounger.combioitee.combioktech.com
+biolab.xyz
bionav.cc
bioon.com
bioon.netbiosren.combiosrepair.combiostatistic.netbiotecan.com
biothink.tech
biovector.net
+biovip.combioxtime.com
bipaihang.com
+bipvcn.com
biqg8.com
biqige.ccbiqiuge.com
+biqiwu.orgbiqu520.netbiqu5200.net
biqu6.com
biqubao10.com
+biqubu.com
+biqudu.com
biqudu.tv
+biqufu.com
+biqugao.ccbiquge.info
biquge.labiquge8.com
+biquge9.ccbiquge99.cc
biqugeabc.com
biqugecdn.combiqugeg.combiqugegg.ccbiqugena.combiquges.combiqugesk.orgbiqugew.combiqugex.combiqugexs.combiqugexs.labiqugexsapp.combiqugezw.us
biqugu.cc
+biquka.combiqukai.combiqukan.com
+biquke.com
biquke.la
biquke.me
biquku.co
biquku.labiqukun.com
+biqukun.labiquluo.combiqupai.com
+biqusa.combiqushu.com
+biqusk.combiqusoso.com
biquw.com
+biquw.infobiquw.la
+biquwo.com
+biquwo.net
biquwx.la
+biquxs.combiquyue.combiquzw.info
biqwo.com
biransign.com
+bird4d.combirdback.org
+birdol.combirdpush.combirdwork.combirenfz.com
birentech.combisairi.combisenet.com
+bishen.inkbishengoffice.combisheziliao.combishijie.combison-technologies.combisonscm.combit-king.netbitahub.combitauto.combitautoimg.combitautotech.combitbe.atbitbrowser.net
+bitcar.combitcellulose.combitcongress.combitcron.combitdefender-cn.combiteabc.combitecoin.combiteedu.combitekou.com
+bitell.com
+bitenn.com
+bitett.combitgo.cc
bitgo.netbitguai.combithosts.netbitiful.combitiful.net
bitjd.com
+bitjia.combitky.cc
bitlib.ccbitmain.vipbitmingw.com
+bitmoe.com
bitol.netbitongtech.com
bitonloop.com
+bitqiu.com
+bitscn.com
+bitsde.com
bitse.com
+bitsqa.combittopmall.com
bituq.com
bitvh.com
biubiu.tv
biubiu001.com
+biulie.combiusoft.combiwanshequ.combiwuuiou.sbsbixiaxs.netbixingxing.com
bixinlive.com
bixishang.combixu.ccbixu.mebixuecrm.combiya.ltd
+biyabi.combiyangwang.com
biyao.combiye.netbiyehome.net
+biyele.combiyelunwenjiance.combiyequna.com
biyequnar.combiyi.net
+biyidc.combiyingniao.combiyinjishi.com
biyong007.com
+biyou.techbiyuandi.com
biyuwu.ccbiz-abroad.combiz-east.com
biz-email.net
+biz178.com
biz72.combizcent.combizchallenge.net
bizcharts.netbizcn-test.com
bizcn.com
bizcn.netbizcn666.combizconfstreaming.combizhi360.combizhi88.combizhigq.com
bizhimiao.com
bizhiquan.com
bizhiwang.combizhizj.combizhizu.combizhongchou.combizhongshu.combizmoto.com
biznewscn.combizopsmall.com
+bizpai.com
bizsn.combizsofts.combizvane.com
+bj-big.combj-brsf.combj-byjz.combj-dahon.com
bj-dsmzyy.com
+bj-git.combj-hengdeli.com
+bj-kpn.com
+bj-sea.com
bj-shouqi.com
+bj-syc.combj-sydc.combj-tencentclb.cloudbj-tongchuang.combj-tvart.com
bj-yt.combj-zkhb.combj-zywh.com
bj003.com
+zzycpa.combj1000e.com
bj148.orgbj159zx.com
+bj1777.com
bj315.orgbj51.org
bj520.com
bj597.com
+bj5i5j.com
bj918.combj96007.com
+bjadks.com
bjadn.net
+bjagro.com
bjaja.com
+bjango.com
bjatv.com
+bjbalb.combjbaodao.netbjbeifangjx.com
+bjbfdt.com
+bjbfsj.com
+bjbtfu.com
bjbus.com
+bjbxg8.com
+bjbywx.com
bjbzc.combjbzszxy.com
bjcae.combjcancer.orgbjcankao.com
bjcdc.org
bjcdomain.com
bjcec.com
+bjceis.com
bjcgtrain.com
bjchunxin.com
+bjckkj.com
bjcks.com
bjcls.net
bjcma.com
+bjcoco.combjcomic.netbjconrad.combjcpjzhyxh.com
+bjcshy.com
+bjcsyg.com
bjcta.net
+bjcxdf.com
+bjcycg.combjcyhui.com
+bjcymt.com
+bjcyzg.com
+bjdcfy.combjdclib.com
+bjdfxj.com
+bjdhwy.combjdiaoyu.com
bjdjc.combjdllti.com
bjdongxin.com
+bjdqar.combjdsppa.com
bjeasycom.combjecutuning.combjef.combjesound.com
bjewaytek.combjexmail.com
bjexx.combjfmart.com
bjfqy.combjfsali.com
+bjfwbz.org
bjfyw.org
bjgas.com
bjggk.com
+bjglxf.com
+bjglxt.combjgongteng.combjgujibaohu.com
+bjgumu.com
+bjgxhy.com
+bjgymq.combjgyzjw.combjhaiguang.com
+bjhdcp.com
+bjhdhm.combjhdnet.com
bjhee.com
bjhengchi.com
bjhengjia.netbjhgbjgs.com
bjhj10000.com
+bjhlgw.com
+bjhmcm.com
+bjhmyq.combjhouse.com
+bjhrkc.com
+bjhscx.combjhstdmy.combjhsyuntai.com
+bjhszp.combjhtcch.combjhtzsgs.combjhuiqi.netbjhuizhu.com
+bjhwbr.com
+bjhwtx.com
bjhytjxjg.com
+bjhzkq.com
bjiab.combjicpark.com
bjidc.net
+bjidit.combjinfobank.combjipwqzx.com
+bjiwex.com
+bjjchf.com
+bjjdwx.combjjf.cc
+bjjfsd.combjjhhft.combjjihui.com
+bjjinl.combjjizhun.com
+bjjk66.combjjkglxh.org
+bjjmzh.com
+bjjnzf.combjjqzyy.com
+bjjtat.combjjubao.org
+bjjzsc.combjjzzpt.com
bjk30.combjkaihua.combjkaihua.net
+bjkdvm.com
+bjkhzx.com
bjkqj.combjkrtwl.com
+bjktaz.com
+bjktwe.com
bjkxgroup.com
+bjkzcs.com
+bjl777.com
bjlanqiao.combjlaw995.combjlcs-tech.com
bjlevsoft.combjlg.com
+bjlkhd.net
+bjllsy.com
+bjlmfq.com
bjlmg.combjlongview.com
bjlot.com
+bjlpwh.com
+bjltsj.com
+bjltwp.com
bjlyw.combjmailqq.com
+bjmama.com
+bjmama.netbjmania.com
+bjmcdh.combjmeikao.com
bjmjm.com
+bjmslp.com
bjmti.com
bjmts.net
+bjmxxh.com
bjmzw.com
+bjnaxl.com
bjnsr.combjoutai.com
+bjp321.com
bjpag.com
+bjpcyd.combjpinweixuan.combjpowernode.combjqcjdcj.combjqh.orgbjqhgjj.com
bjqichezl.combjqingyang.combjqtbase.combjqtfifthbase.combjqtforthbase.combjqtsecbase.combjqtthirdbase.com
+bjqtti.combjqyjjlb.com
+bjqzhd.com
+bjqzzh.netbjrc.com
bjrcb.com
+bjrdhx.combjretech.combjreview.com
+bjrhxp.com
+bjrjgj.combjrjtdkj.com
+bjrjyy.combjrmysjy.combjrtcdn.com
bjrun.combjrussia-art.combjry.com
+bjsasc.combjsbnet.com
+bjscfl.com
bjscp.combjscszh.com
+bjsdfz.com
+bjsdkj.com
bjsdr.org
+bjsfdr.com
+bjsfrj.combjshaet.combjsheng.combjsidao.com
bjsj5.com
+bjsjac.com
+bjsjob.combjsjsch12333.com
+bjsjwl.combjsjxtm.com
bjsly.com
+bjsoho.combjsound.com
+bjsoyo.com
+bjsptf.com
bjspw.com
+bjsryc.combjsskdn.com
+bjstcc.combjsubway.ccbjsubway.combjsuewin.combjsunhouse.com
bjsxt.com
+bjsydq.com
+bjsyqw.com
+bjsytv.com
+bjszhd.net
bjtcf.com
bjtcy.combjtdhkj.com
bjtelecom.netbjtitle.com
bjtjw.net
+bjtjzx.com
bjtlky888.com
+bjtmjr.combjtndao.org
bjtobacco.com
bjtonghui.combjtongjian.combjtopli.com
bjtth.org
+bjttsf.combjtvnews.combjtydwater.com
+bjtyzh.org
+bjtzzg.combjufida.com
bjun.techbjunionstar.net
bjuri.com
bjvps.netbjweizhifu.com
bjwenchen.combjwenyu.com
+bjwftd.com
bjwfz.com
+bjwhds.com
+bjwkzl.combjwlapp.combjwlslm.com
+bjwpjs.com
+bjwqxh.com
+bjwsxx.com
+bjwwhc.combjwyseo.com
+bjxbja.combjxcloud.com
+bjxcsy.netbjxf315.combjximei.combjxinku.combjxinyou.com
bjxjyy666.com
bjxku.com
+bjxmny.combjxtjmsb.com
+bjxwcq.com
bjxwx.combjxx.vip
bjxx8.com
+bjxydh.com
+bjxyjy.combjxyzgt.combjxzlou.com
bjyah.com
+bjyald.com
+bjyczb.com
+bjydzy.combjyestar.com
+bjyhwy.combjyingge.com
bjyingyun.combjyirui.com
bjyme.combjyouth.net
+bjyqsj.combjysyunsheng.com
+bjythd.combjyueshenzj.com
bjywt.com
bjyyb.net
+bjyyun.combjyzfjj.combjzalaw.com
+bjzaxy.com
+bjzbkj.com
+bjzcdz.com
+bjzcha.com
+bjzcth.combjzg.org
bjzgh.org
+bjzghd.com
+bjzhcc.combjzhishi.com
bjzhongyi.combjzjgyl.com
bjzjr.org
+bjzkgr.com
+bjzkhs.com
+bjzklp.com
bjzmdlsxs.com
+bjzmkm.com
+bjzmqj.com
+bjznkq.net
+bjznnt.com
bjzph.com
bjzqw.combjzs.ccbjzs114.combjzunlaotang.com
bjzwx.com
+bjzwzx.com
+bjzxcp.combjzy360.com
bjzybaoan.com
+bjzyca.combjzyrxgs.com
+bjzzdb.com
+bjzzrx.com
+bk-cdn.com
+bk0123.com
bk220.com
bk330.com
bk332.com
bk334.com
bk335.com
bk337.combk3r.combk41.net
bk550.com
bk551.com
bk552.com
bk553.com
bk557.combk5u.com
bk663.com
bk770.com
bk773.combkapigw.com
+bkapps.com
+bkbyxa.combkcipbewruo.combkclouds.cc
bkdou.com
+bkiije.com
bkill.com
bkill.net
bkjia.combkjk-inc.combkjk.combkjk123.combkjpress.com
+bkn.cc
+bkneng.com
bkpcn.combkqq.com
+bkt123.com
bktencent.com
bktsj.com
+bkweek.com
+bkyycr.com
bkzzy.com
+bl.com
+bl0757.comblack-unique.comblackberry.comblackbirdsport.comblackdir.comblackdragon.comblackeep.comblackh4t.orgblackluxury.comblackshark.comblackshow.meblackswancake.comblackxl.orgblackyau.ccblackzs.com
blakat.ccblankshell.com
blazefire.com
blazefire.netblazetraders.comblazingcats.comblazor.zoneblbl.onlineblbx.comblctwed.com
+bld365.com
+bldimg.combldpharm.combldz.combldzlsb.com
+bleege.comblemall.com
blendercn.orgblessedbin.com
+blgxhn.comblhdazhe.comblhy.cc
bliao.com
+blibao.com
+blibee.com
+blibee.netblicube.comblimage.com
bliner.me
+bling.linkblingabc.comblingclubs.com
blinghour.comblingoffice.comblissfulates.com
blissmall.netblizzardcn.comblksails.net
+bllsbz.com
blmpb.combln7.combln8.com
blockchain.hkblockchain123.comblockchainlabs.org
blockmeta.comblockob.comblocrepresents.comblog-qh.comzzyb.orgzzyauto.comzzyan360.comblog120.comblogbus.com
blogchina.com
blogchina.orgblogchinese.com
blogcn.coblogfeng.combloggern.combloghub.funblogjava.net
bloglegal.comblogofmusic.comblogqun.comblogturn.comblogways.netblogxuan.combloomgamer.com
+bloves.comblovestorm.comblowing-mould.comblowmoldmachines.com
+blpack.comblqx.comblqy.com
+blr206.comblshthb.com
+blskye.comblsw.ccblsweda.comblsx.com
+blsxsm.comblszhifa.com
bltang.ccbltyyls.com
bltzw.com
blue-city.comblue-skylandscape.com
blue-zero.comblue1000.combluearchive-cn.combluebeebox.combluebellls.combluecatyun.combluecefa.com
blued.combluedhealth.combluedon.combluedoorindex.com
bluedotcc.combluefite.com
bluefocus.com
blueglass.vipbluegoon.combluehao.com
+bluehn.comblueidea.com
bluek.orgbluelettercn.orgbluelightfuse.combluelive.meblueplus.ccbluepoch.combluesdream.combluesharkinfo.comblueshow.netblueskykong.comblueskyschool.netblueskystudy.com
blueskyxn.comblueslc.techbluesoleil.combluestar-pc.combluestep.ccbluewhaleremote.comblurdev.comblw.moe
blxfc.com
blxs.infoblxs.lablycctv.com
blyun.com
blzls.xyz
blzpw.net
+blzsjx.com
bm-mc.com
bm001.com
bm259c2e.shop
bm369.net
+bm8.tv
+bm8885.combmbn100.com
bmbqwater.combmc-medical.combmclapi.onlinebmcname.combmcx.com
bmdbr.com
+bmdxcx.combme-assemble.com
bme-clock.combme-grow.combme-introduce.combme-invite.com
+bme-mp.com
+bme-wx.com
bmeol.com
bmfsm.combmgnddfu.com
bmijs.combmimage.combmj.com
bmjet.com
+bml365.com
+bmlink.com
+bmlxkj.combmm-assemble.com
bmm-clock.combmm-grow.combmm-introduce.combmm-invite.com
+bmm-mp.com
+bmm-wx.com
bmob.sitebmobapp.com
bmobcloud.combmobpay.com
+bmoook.combmp.ovhbmpj.netbmqy.netbmrtech.com
+bmrtjt.com
bms16.com
+bmshow.combmtcled.com
bmvps.combmw8033.combmwallpaper.combmwsteelart.com
bmzxw.com
bnacg.com
bnbba.combnbcamp.com
+bnblogs.ccbnbtrip.com
bnc66.combnchina.combncwork.com
+bnhelm.com
+bnhgsb.combnhshiguan.com
+bnjyks.com
bnncn.combnnd.net
bnnnk.combnocode.com
+bnqgsl.com
bntyh.com
bnupg.com
bnwin.combnxb.com
bnysq.com
+bnzone.com
+bnzt88.combo-blog.com
bo-yi.combo56.comboai.com
+boaigx.comboanying.combob-cardif.combob-leasing.combob.combobai520.com
+bobaow.com
+bobbns.com
+bobcfc.combobcoder.ccbobdirectbank.com
+boblog.combobo2008.combobobird.combobohome.storebobopic.com
+boboyq.combobswatchstore.combobtranslate.com
bobwei002.icu
+bocai.lifebocaicms.combocamchina.combocaviation.com
boccfc.ccboce.combocep2c.combocetest.combocfullertonbank.com
bocgi.combocgins.com
bochk.combochkonline.combochyun.com
bocichina.combocifco.com
bocifunds.com
bocigroup.com
bocim.com
+bocohz.combocomcc.combocommleasing.combocommlife.combocommtrust.combocsolution.com
+bodahu.combodatek.combodatek.netbodchan.com
bodestone.combodiantrading.comboditechgx.com
+bodoai.combodu.comboduhappiness.comboe.comboendejc.com
bof98.combofangw.combofengkj.com
+bofyou.com
+bog.ac
+bogokj.comboguanpaimai.com
+boguub.com
bohailife.netbohaishibei.combohaism.combohaisports.combohaiyun.com
bohaoclub.combohe.combohejiasuqi.combohu.cobohuanchina.combohuangchina.combohuasanhe.combohuigk.combohuihe.combohuitalent.comboincdn.live
+boiots.com
bojianger.com
bojie.bid
bojolight.com
bojoy.netbojun-import.combokaishi.com
bokanghui.netbokao2o.comboke.comboke.oneboke.pwboke112.comboke123.net
boke8.net
+bokecc.com
+bokecs.net
bokee.com
bokee.netbokesoft.combokesoftware.com
+bokeyz.comboktour.combokunwatch.com
bolaa.com
bolan.net
bolaninfo.combolanjr.comboldseas.combole-china.combole766.com
+bolead.com
+bolegs.com
+bolehu.netbolei99.comboleihg.com
bolejiang.combolejiaoxue.combolelink.combolexiaozhao.com
boliboshi.com
bolin1688.comboling04.combolink.clubbolo.me
+bolo.videobolongxm.com
boloo.net
+bolopp.combolq.com
boltp.com
+boluo.linkboluogouwu.comboluomee.com
boluomeet.com
boluomi01.comboluoyun.comboluoyunyu.com
+bom.aibom2buy.combomanair.com
+bombox.org
bomeeting.netbomin-china.com
boming-sc.com
+bomman.com
+bomohk.com
bomyg.combon-top.combon-wine.com
bonan.vipbonatextile.combonbonbongame.combondlady.com
bonepuppy.combonestgattiwatch.com
+bongmi.com
bongv.combongwell.comboningad.xyz
+bonkee.netbonnelivre.com
+bonree.combonshop.netboobooke.com
booea.combooen.co
+booeoo.com
+boohee.combook-os.combook118.combook1234.combook1993.combookask.combookdao.combookdown.net
bookersea.com
bookfedex.combookfeel.combooking001.combookingtee.combookinlife.net
+bookof.combooks51.combookschina.combookshadow.combookshop.twbookshoptw.com
bookshuku.com
+booksky.cc
+booksn.combooksos.netbooktxt.combooktxt.net
+bookuu.com
bookxnote.com
+boolan.com
+boolaw.comboole-tech.com
boolean93.combooleandev.xyz
boolv.com
+boonew.com
+boonoo.net
+boooba.com
+boooog.net
booop.net
boopwater.com
boosj.comboost77.com
+boosyi.combootcdn.netbootcss.com
+bootmb.combootstrapmb.combooyu-import.com
+booz88.com
+bopian.combopinquwei.online
boqianpvm.com
boqii.comboqiicdn.comboqugew.com
boquxinxi.comboracaybestdeals.com
+borain.comborderlessbd.comborlonclan.comborninsummer.combornlead.com
+borpor.comborscon.com
borui1001.comboruipinggu.comboruiqin.comboruisx.comboruixun.comboruiyanjiu.com
+boryou.combos.xinbosdsoft.comboseclub.com
+boseip.combosen-fuji.combosenrui.com
+bosera.comzzxy.netboshangchuanmei.comboshgame.comboshi.tvboshika.comboshixitong.comboshiyl.comboshungame.combosibest.combosideng.combosideng.mebosideng.netbosigame.com
+bosmaa.comboso.ltd
bosondata.net
bosong.onlinebosonnlp.comboss-young.combosscdn.combossgoo.com
+bossgy.com
+bosshr.combosshu.workbosszhipin.combosunman.com
+botaoo.combotaopac.com
botnet.ccbotocard.com
botongedu.combotongr.com
botorange.com
+botsfy.combotslab.combouffalolab.combountech.combountyteam.com
boweifeng.com
+bowerp.com
+bowu66.com
+bowuzhi.fm
boxdouyin.com
boxgu.comboxiaole.comboxisign.comboxuegu.comboxueio.com
boxui.comboxz.comboy-toy.netboya300.com
boyaa.comboyaapoker.com
boyaastar.comboyaceo.com
+boyais.com
boyamedia.com
boyamicro.com
boyaobang.comboyaokj.comboyasoftware.comboyaxun.comboydwang.comboyi.coboyikang.comboyingsj.com
+boyishu.meboyoline.comboyoucy.com
boyouquan.com
+boyuan.com
+boyuan.net
boyue.comboyuesh.comboyuguandao.comboyunso.comboyuntu.comboyuonline.combozhihr.combozhong.combozhongzhiye.combpaykwai.combpgjuice.net
+bplslb.com
bpltm.combplvfeyn.sbsbpopdjt.combpp6.com
bppan.combpqwxsh.com
+bpsemi.combpteach.com
+bpxxfw.com
bq-sh.combq04.com
bq233.com
bqatj.combqfy.combqg8.ccbqg8.labqge.org
+bqgwap.com
bqgwu.net
+bqgxsw.combqpoint.combqq8.com
bqrdh.com
bqsnn.com
+bqtalk.com
+bqteng.com
+bqu123.com
bqyhb.com
bra-cdche.combragood.com
brain1981.combrainmed.com
brand-isv.combrand24k.combrand4x4.combrandcn.com
brandpano.combrandsitejp.combrandvista.com
brandy-mf.com
bravognss.combrazzaleqingdao.com
+brbtyt.combrcpower.combre-line56.com
bre-linex.com
breadtrip.com
breenomeet.ccbrentron.combrewbeerwiki.orgbrg0.com
brhfh.com
+brick4.combricktou.combridge-image.combridgee.netbrighost.combright-trend.combrightdairy.combrightdecolighting.combrightfood.combrightliao.com
brire.com
britesemi.combrlinked.com
brmnq.com
brmyx.combroad-ocean.com
broad.com
broad.orgbroadair.netbroadbio.combroadcasthe.netbroadon.netbroadskytech.combronzesoft.combroqiang.combrother-cn.netbrother-movie.comzzxx.orgbrownwings.combrowserleaks.combrowurl.com
brpcb.combrrub.us
+brsiee.com
+brsnzp.com
brtbeacon.com
brtbeacon.net
brttc.com
brtxg.combrunoxu.com
+brxjzp.com
+brxtal.com
bs-dolfin.net
bs008.com
+bsagit.com
+bsbgjj.com
+bsbkjt.com
+bsbxyy.com
+bsbydd.combscabank.com
+bsccdn.com
+bsccdn.net
+bscdnd.com
+bscdns.com
bscea.orgbscedge.combscgslb.combsclink.combscstorage.combscstorage.netbscxypx.combsd-lifescience.com
+bsd4fz.combsdcdsy.com
+bsdexp.combsdfyyls.com
+bsdgco.com
bsdongxin.combsdt1688.com
bseqp.com
bserc.com
+bsgcnc.com
+bsgsgl.com
+bsgslb.combsh-tech.combsh.com
+bshare.com
+bshgem.com
+bshmzx.com
+bshspx.com
+bshsrl.com
bsida.com
bsidu.combsjgvtq.com
+bsjhlx.com
bskrt.com
+bskuav.com
bslongyin.combsmatrix.combsmjdjzx.combsmy.ccbsmz.net
+bsnljt.com
+bspapp.combsqipei.combsrczpw.com
bssfy.combssgnkyy.combssrvdns.combssyjqrmyy.combstatic.combstatics.com
+bsteel.net
bstgjg777.combstinfo.com
bstjiaoyu.com
bstjt.com
+bstzcs.combsuc.ccbsurl.cc
+bswtan.com
+bsxfyx.com
+bsxhly.combsxiaoshuo.com
+bsxldl.com
bsxyzsdec.com
bsybx.com
+bsydns.com
+bsydns.net
+bsyjrb.combsylngy.com
bsyxx.com
+bsyyjt.combsyzred.com
+bsz666.com
+bszhly.combszhswkj.com
+bszxtl.combszygcyy.com
+bszyqc.combt-club.combt6.clubbt66.orgbt66.tv
bt661.com
bt662.com
bt664.com
bt770.com
bt772.com
bt774.com
+bt9527.com
bt994.com
+btaxwy.combtb8.com
btbat.combtbctex.combtc-precisionmedical.com
+btc114.com
btc17.com
+btc789.com
+btcbbs.com
btcbl.combtcbtc.tech
+btccjt.combtcfans.com
btcha.combtclass.netbtcside.com
+btcsos.combtcwatch.com
+btcxue.com
+btdad.livebtdad17.xyz
+btdair.com
btdog.com
btdos.com
+btdrhb.combtechina.combtei6pis99.com
+btgame.combtgame01.com
btgbe.icu
btgbe.xyz
+btgljt.com
btgtravel.combth.vip
bthhotels.com
bthlt.combthuifu.com
+bthxjd.com
+bthyhb.com
btime.com
+btjzgc.com
btltl.com
btmayi.ccbtmeiju.combtnotes.com
btoo3.com
+btophr.combtorange.com
btpig.com
+btplay.net
+btpxbf.com
+btrcsc.combtschool.net
+btsemi.combtshidai.com
+btsjrl.com
+btsmth.com
btspreads.combtsteel.com
btten.com
bttiantang.ccbttiantang.com
btttg.combtv.org
btvcd.net
btwmw.net
btwoa.com
btwob.net
+btwuji.com
btxintong.combtydjxc.com
+btyhkj.combtyijiaxueyuan.com
+btytgj.com
+btzbjt.com
+btzhcc.com
+btzthb.com
btzyc.com
+buaaer.combubaigei.combubalusplus.combubugao.com
+bubuko.combubukua.com
+bubuol.combubuying.netbubuyouqian.com
bubuzheng.combubuzou.combucg.combuchina.net
buckydrop.combucuo100.com
budao.combudao24.combudarts.combudhano.combudikeji.com
buding.tvbudingmore.com
+budiot.com
budou.combuduanwang.vipbuduobaobao.com
+bueryx.com
buff8.com
+buffst.combugcatt.com
bugku.combugnull.combugscan.net
bugscaner.combugu120.combuguangdeng.com
+bugucn.com
+bugukj.combugutime.com
+bugxia.combuhuangziben.com
buhuixiao.com
+buhuyo.com
+buidea.combuild-decor.com
+build9s.io
buildface.combuildhr.combuildjob.netbuildwaterexpo.com
+bukamh.combuke999.com
+bukeyi.netbulaisi.combulaoge.net
bulapingc.combulbsquare.combulejie.combullcome.combullvet.net
buluanmai.combuluo007.com
bumenkeji.com
+bumimi.com
bumiu.combundpic.com
+bunfly.com
+bungba.com
bunze.com
+buread.com
+burgud.comburl.ccburnelltek.comburningvocabulary.comburongyi.comburybug.com
+bus365.com
bus6e.com
bus84.com
busbaoche.combushangban.combusilinq.combusinessconnectchina.com businessreviewglobal-cdn.combusinesssmallbusiness.netbusionline.combusituzi.com
busnc.combut7.com
+butair.com
butel.com
+butian.net
butongshe.combutonly.combutterapis.combuttonsintime.combuxi100.com
buxia.netbuxian8.combuxiugangban.netbuy-bar.combuy-copi888.combuy-copys888.combuyanshufa.combuyaocha.combuycoor.combuydeem.combuydouke.combuyfine.netbuyhaogu.combuyhosue.com
+buyhot.vip
buyi9.combuyigang.com
+buyiju.com
buyjingxi.com
buyjk.combuylabel.combuylogic.ccbuyoudao.com
+buysun.netbuysweet.combuyu1314.combuyun.co
buzao.net
buzhi.com
+buzhi5.combuzhibushi.combvbuf1.site
bvdwp.com
+bvfcdn.combvfcdn2.combvgv.com
bvimg.com
bvseo.com
+bvttsg.com
+bw1006.combw30yun.combw40.net
+bw8848.combwae.org
+bwangel.me
bwbot.org
bwchinese.combwcj.combwda.netbwfapiao.combwfhmall.com
bwgrt.com
+bwhero.com
+bwhgsb.combwie.netbwjf.combwlc.netbwmelon.combwpoker.combwpx.combwsm.org
+bwsoft.net
bwton.com
bwtoutiao.com
bwvsc.com
bwxsj.com
bwxxw.com
+bwzhcs.combx0byte.com
bx117.combx1k.com
bx24k.combx58.com
bxasb.com
bxb2b.com
bxbdf.com
+bxbest.netbxcc.vip
+bxdaka.com
+bxdlkj.com
+bxfaka.com
bxgdl.com
bxgdunhua.com
+bxgkzy.com
+bxgmmw.combxgshengwang.com
bxgtd.combxgycfsb.combxhaibao.com
bxjob.netbxkejian.com
bxkxw.com
bxlac.com
bxltw.com
+bxmd51.com
+bxnfsy.com
+bxnjmj.combxpedia.com
+bxpkfu.com
+bxr.imbxrfund.combxshopya.combxv8.combxwatch.com
bxwst.combxwx.tvbxwx520.combxxy.combxxyysc.com
+bxyuer.com
+bxzczx.combxzhiku.combxzwapp.com
bxzxw.com
by-health.comby56.comby6.app
by6sx.com
by899.combyai.com
bybieyang.com
+bybily.com
+byboai.combybutter.com
+byc168.combyd.autobyd.combydhaiyang.com
bydit.combydoceanauto.combydpcic.combydyhos.com
byete.combyf.com
byfcw.com
byfen.com
byfen.netbyfunds.combyfurry.combyfurry.net
+byfzxy.com
bygamesdk.combyguitar.combygw.netbyhh.net
+byhlds.com
+byhlds.net
byhua.com
+byi.pw
+byjdxy.com
+byjgxy.combyjsjxy.com
+byjzxy.com
+bykjad.com
+bykszb.com
+bylwcc.com
+bylwjc.combymz.netbynetest.com
bynmc.combynonco.combynrnews.com
+bynsyh.combyodonline.combypanghu.xyz
bypos.net
+byprxy.com
+byqcxy.com
byqzw.combyr-navi.com
+byr.ccbyr.wiki
+byrhkj.combysb.net
byshr.combysocket.combystack.combystatic.com
+bysxfz.com
+bytapp.combyte-dns.combyte-dns.net
byte-edge.combyte-edgeworker.com
byte-gslb.com
byte-test.com
byte-test.netbyte.online
+byte00.com
+byte00.netbyte000.combyte008.combyte7bw.net
+byteac.combyteacct.combyteacctimg.combyteactivity.combyteactivity11.combyteactivity12.combyteactivity13.combyteactivity14.combyteactivity15.combyteactivity16.combyteadverts.combyteapi.combytecdn.combytecdn.net
bytecdntp.combytecho.netbytecimg.com
bytecloud.combyted-dast.com
byted-edu.combyted-static.combyted-ug.com
byted.orgbytedance-boe.net
bytedance.com
bytedance.net
bytedance.orgbytedanceapi.combytedancehermestest.combytedcdn.combytedeliver.combytedgames.combytedns.combytedns.netbytedns1.combytedns2.combytedns3.combytedns4.combytedns5.combytedns6.combytedns7.combytednsdoc.combytedsocial.combyteedu.combyteeffecttos.combytefae.combytefast.netbytefcdn.combytefcdnrd.com
bytegecko.combytegeckoext.combytegle.tech
bytegoofy.combytegqpo.netbytegrowth.combytegslb.combytehwm.combyteics.combyteics.netbyteimg.combyteimgc.combyteinspire.combyteintl.netbyteisland.com
+bytelb.com
+bytelb.net
bytelb000.net
+bytell.net
bytemaimg.combytemastatic.combytemedi.combytenew.com
bytenewst.com
+byteoc.combyteorg.combyteorge.com
+byteox.combyteq5k.combyteq8u.netbytescm.combytesfield.combytesmanager.combytesslb.netbytestacks.combytetcc.com
bytetech.infobytetos.combytetraffic.netbytetstatic.combytetstatic.net
+byteug.combytevalk.combytevcloudvod.combytevdn-boe.combytevdn.combytewars.ccbytewebservice.combytexns.combytexns.net
bytexopen.combytexservice.combytezhi.combytianshankd.combyts.com
+bytter.combyumneeb.com
+byvast.combyw.lolbyxrmyy.netbyxsnzg.com
+byxtzn.combyxx.combyxy.com
+byyapp.combyyc.net
+byytfy.combyzhihuo.com
byzkj.com
+byzoro.combyzp.com
+byzscq.com
+byzsyy.combyzt.net
byzxy.combz-e.combz01.combz55.com
bzbgr.combzbs.net
bzcjw.combzcm.net
+bzcm88.com
bzcw8.combzd6688.combzddrive.com
bzfar.com
+bzfscl.com
bzfwq.com
bzfwy.com
bzfxb.com
bzfxw.combzgd.combzglyfjq.com
+bzgmjc.sbs
bzgwl.combzhou.ccbzjulihg.combzjw.com
bzkad.combzko.com
+bzlxzl.com
+bzmfxz.com
bzmhm.com
+bzname.combznx.net
bzonl.combzrb.net
+bzrtdl.combzsanguo.com
bzsb.info
bzshw.com
+bzsoso.com
bzszyy123.com
+bzt120.combztdxxl.com
+bzw315.combzx1688.combzxinwen.combzxz.net
+bzxzba.com
bzxzk.netbzy.netbzy2015.com
+bzyxch.com
c-119.comc-3.moe
c-ame.comc-c.comc-canyin.com
c-cpp.comc-ctrip.comc-estbon.comc-fehong.com
c-fol.net
c-jet.comc-lodop.comc-markaudio.com
c-nin.com
c-ofc.comc-ps.net
c-rst.comc-sz.comc-t.workc-yl.comc052kzyp55.comc0f1lk250w.com
c1042.com
+c11022.comc1a0.comc1a2.comc1a3.com
c1ass.com
c1channel.com
+c1pl4.shopc1s.comc2h4.org
c2wtvr0jq.sbsc31.func355595c3.buzz
+c360dn.com
c3acg.com
c3crm.com
+c3x.me
c4008.comc400c.ccc4d.comc4d.live
+c4d.online
+c4datc.com
c4dcn.com
c4dco.com
+c4dpro.com
+c4dsky.com
+c4hcdn.comc4sy726by8.comc4ys.comc4yx.comc50forum.com
c524y.sbsc54sauo3y85m2g.com
+c5game.com
c5iot.comc631dlc0br.comc6c.com
+c6n708.renc72a775z36.comc77c.comc7c8.com
c7sky.comc7w.techc82pntz847r.shopc833.com
+c8qgd9.comc8uixr96iv79.com
c9018.comc919.sbsc969.comc9cc.comca-aicc.com
+ca-sme.org
ca001.com
ca002.com
ca003.com
ca168.comca39.com
ca800.comca9ce6rv872ce1.comcaaa-spacechina.com
caaad.comcaac2019.comcaacbook.comcaacsri.com
caagd.com
+caagei.comcaaladi.com
caame.com
caanb.com
+caasai.comcaasbuy.com
+caasse.com
+caayee.comcabbagebox.comcabbeen.comcabc-online.com
cabck.com
cabee.org
cabhr.comcabinetbuy.comcabinnet.orgcableabc.comcabletiegun.comcabling-system.comcablingteam.comcabplink.com
cacfo.comcache4ever.comcache666.comcachekit.comcachemoment.com
+cackui.com
cacpp.com
cacre.org
+cacter.com
cactifans.com
+cactmc.comcacx.cccad1688.comcad2688.comcad7v18vchs.comcad8.net
+cad888.comcada.cc
+caddcc.comcadforex.com
+cadict.net
+cadmon.net
+cadreg.comcadresenseine.com
cadrolift.comcadzhuan.com
cadzj.com
+cadzxw.com
caecc.com
+caeete.net
+caexpo.com
+caexpo.org
cafachine.comcafagame.comcafamuseum.org
+caffci.orgcagentle.comcagetest.comcageystone.com
cagoe.com
+cahkms.org
cahuo.com
+cai58t.comcai8.net
caian.netcaibaojian.com
caibaopay.comcaibeike.comcaibihui.comcaibowen.net
+caicao.netcaichong.comcaichongwang.com
+caicui.comcaidan2.comcaidao1.comcaidao8.comcaidaocloud.comcaidian.com
caidianqu.com
+caiens.com
+caifei.netcaifengprinting.com
caifu.comcaifu500.netcaifuxingketang.comcaifuxingmingxue.comcaifuzhongwen.comcaigaowang.comcaigeqiu.vipcaigou2003.comcaigoubao.cccaigoushichang.comcaigoutong.net
caiguayun.comcaih.comcaihang.com
caihcloud.comcaihcom.comcaihdata.comcaiheht.comcaihgnkedndgk.com
caihong5g.comcaihongbashi.netcaihongche.comcaihongjia.comcaihongjianzhan.comcaihongmeng.com
caihongqi.comcaihongsheying.com
caihongto.comcaihongx.com
+caihoo.comcaihuaw.com
+caiips.comcaij100.comcaijing365.comcaijingche.comcaijingmobile.comcaijingnews.net
caijingwu.comcaijinyuan.comcaijiruanjian.comcaijuanjuan.com
caike.comcaiku.cc
caiku.com
caikuai91.comcaikuaitoutiao.comcailele.comcailianpress.comcailiao.comcailiaoniu.comcailiaoren.comcailicai.com
cailutong.com
caimai.cccaimaiba.com
caimei365.com
caimitech.com
+caimmb.com
+caimogu.cccaimogu.netcaimomo.comcainachina.com
caing.comcainiao-inc.comcainiao-inc.netcainiao.comcainiaobaoka.com
cainiaojc.comcainiaojiaocheng.comcainiaoxueyuan.com
cainiaoya.comcainiaoyizhan.comcainongnet.comcainuan365.com
caipiaogu.comcaipintu.comcaipopo.comcaipucaipu.comcaipucn.comcaiqiuba.comcairongquan.com
+cairot.com
cairuijun.com
caisan.io
+caishen.ai
caishen66.com
caishenpo.comcaishenwang.onlinecaishijie76660.comcaisixiang.com
+caistv.comcait.comcait1981.comcaitazx2.comcaitpottercreativellc.com
+caitun.comcaituyou.com
caiu8.comcaiweiming.comcaiwu51.comcaiwuchina.com
+caixin.comcaixinfoundation.orgcaixinmedia.comcaixinonline.comcaiyicloud.com
caiyu.comcaiyuemedical.com
+caiyun.comcaiyunai.com
caiyunapp.com
caiyuncdn.com
caiyunhub.comcaiyunyi.comcaizhaowang.comcaizhihr.com
caj11.comcake400.com
cake6.comcalanovahotel.comcalawei.com
calb-tech.comcalculusdata.comcaldigit.netcaledoniancable.comcalendarli.comcali-light.comcallbei.comcallcenter88.com
+callda.com
callergen.comcallmekeji.comcallmysoft.comcallrui.comcaloinfo.comcalorietech.comcalt.comcalterah.com
calvinneo.comcamarks.comcamartsphotography.com
cambm.comcambodiafang.com
cambricon.com
cambridge.orgcamc.cc
camcap.uscamcard.comcame-online.orgcamelsee.com
camera360.com
+camhen.com
camilliar.com
+camnpr.comcamoryapps.com
campanied.lolcampanilechina.comcampbicycle.com
campingcn.comcampus-app.netcampuschina.org
campushoy.comcampusphere.netcampusplus.comcampusroom.comcamreizuxphd.comcamscanner.com
camsnetec.comcan-dao.comcan-lead.com
+can.tv
+cana.spacecanaan-creative.comcanadaae.net
+canasy.com
canbaojin.com
+cancda.net
cancer361.com
canchican.com
+candou.comcandyhaw.comcandylab.netcandypay.comcandystars.net
canet.comcanevent.comcanfire.netcang.com
+cangdu.orgcangfengzhe.comcangjiaohui.comcangmang.xyzcangoonline.comcangowin.comcangpie.com
cangqiang.comcangqiongkanshu.comcangshui.netcangshutun.comcangxiaoer.com
+cangya.comcangzhouhd.comcanhighcenter.com
+canhot.net
caniculab.com
+canidc.com
cankao100.comcankaoshouce.comcankaoxiaoxi.comcankaoxx.comcanlanjy.com
canmounet.com
+canpdu.comcanpoint.netcanrill.com
+cansee.netcansine.comcantoge.comcanvcan.com
+canway.netcanwayit.comcanwaysoft.comcanxingmedia.com
canyidian.com
canyin.cc
+canyin.com
canyin168.comcanyin2017.com
canyin375.comcanyin88.com
canyincha.comcanyincy.comcanyingroup.comcanyinzixun.comcanyon-model.comcanyouchina.com
canyuanzs.com
+caobao.comcaocaobusiness.cccaocaocustomer.cccaocaoglobal.comcaocaojourney.cccaocaokeji.netcaocaomarketing.cccaocaomedia.cccaocaoproduct.cccaocaopromotion.cccaocaoservice.cccaocaosx.comcaocaotravel.cc
caocaotrip.cccaocaotrip.comcaochai.comcaochai.netcaochen.net
+caogen.com
caogenb2b.com
caogenban.com
+caohai.comcaohaifeng.com
caohejing.com
caohejing.org
+caohua.com
caoke.netcaomall.netcaomeishuma.comcaomeixz10.xyzcaoniang.comcaoshiyabo.comcaotama.comcaotianmiao.comcaotu66.com
+caovan.com
caoxianfc.com
+caoxie.comcaoxile.com
+caoxiu.netcaoxudong.info
caoyudong.com
capablist.comcapillarytech-cn.comcapitalcloud.netcapitalonline.net
+capjoy.comcaplanking.comcapsuleshanghai.com
capvision.comcapwhale.comcar-metaverse.comcar0575.comcar2sharechina.com
+car388.com
carben.me
carbonscn.com
+carcav.com
+carcdn.com
cardaudio.comcardbaobao.comcardcmb.com
+cardcn.comcardinfolink.comcardniu.comcardniudai.com
+cardqu.comcardyang.comcare110.comcareerchina.comcareerqihang.com
careersky.orgcarefish.comcarelifefood.com
+careuc.com
+carezb.com
+cargai.comcargeer.comcargo001.comcargosmart.comcaribgalaxy.com
cariestop.com
+carimg.comcarisen.comcarivisa.comcarking001.com
carlinkin.com
carltonyu.com
+carmov.comcarnegiebj.com
+carnoc.comcarodpiano.com
caroyidao.com
+carp56.comcarrobot.comcarrotchou.blogcarrotchou.com
+carry6.com
+carry6.netcarrydj.comcars001.comcartimen.comcartoonwin.comcarutoo.com
+carxoo.com
carzd.comcarzone365.comcarzyuncle.comcas.org
cas01.comcasarte.com
+casbin.com
+casbin.org
+casboc.comcasctcp.comcasdoor.comcasdoor.org
+case91.com
+casear.net
+casece.orgcasemic.comcashbackok.comcashcatads.comcashtoutiao.comcashwaytech.comcasibase.comcasic-addsino.comcasic-t.com
casic.comcasic304.comcasic3s.com
casicloud.com
casicyber.comcaslease.comcasmita.com
casnb.comcasp.hk
casql.com
casqy.comcasszzy.com
+castbd.comcastelu.comcastiron-bathtub.comcastyum.comcasvino.com
casvm.comcasystar.com
+cat898.comcatalike.comcatchingdoll.com
catchwang.comcatchyrime.comcatdggga.comcatering-shizuoka.comcatfish-cms.com
+catguo.comcathassist.orgcathayagroup.com
catjc.comcatl.comcato-travel.comcatofes.comcattsoft.com
+cattsp.com
+cature.com
catus.xyzcatuscdn.xyzcatv.netcatv114.com
catyun.cc
+caua99.comcaufuyu.comcaup.net
+cauvet.com
+cav-ad.com
cavca.org
cawae.netcaxa.com
+cayica.com
+cayzlh.com
cazpw.comcbbn.netcbca.net
cbcechina.com
cbcie.comcbcloud123.comcbcsnote.comcbd0512.com
+cbd263.com
cbdcn.com
cbdio.com
cbe21.comcbea.comcbec365.com
+cbes21.comcbevent.comcbex.com
cbfau.comcbgcloud.comcbhb.biz
+cbi360.net
cbiao.com
+cbibyg.com
cbice.com
cbiec.com
cbiec.netcbigame.comcbinews.com
+cbismb.comcbivisa.comcbj1998.comcbjq.comcbjuice.com
cbjzw.orgcbmf.orgcbminfo.com
cbmwz.net
+cbn.mecbndata.comcbndata.orgcbnmall.com
cbnri.orgcbnweek.com
cboad.comcboe-web.com
+cbquan.comcbsbearing.com
cbsrc.comcbtimer.com
cburi.com
cbvac.com
+cbw111.comcbxg.icu
+cby.mecbzr.comcc-airshow.comcc-image.comcc-pharming.com cc.co
+cc0808.com
+cc11bh.com
cc128.com
cc360.net
cc55k.comcc667788cc.comcc7m.com
+cc8.cc
ccabchina.comccai.cc
ccaon.comccapbook.comccapedu.com
+ccartd.comccarting.com
ccasy.comccav.tvccb.com
ccbangong.com
+ccbcos.com
ccbft.comccbfund.comccbfutures.comccbhome.net
ccbike.cczzxworld.comccbleasing.com
ccbnd.comccbookfair.comccbpension.comccbride.comccbseoul.com
+ccbtfs.com
ccbxt.comccc-chn.com
cccbs.netcccc-capital.comccccc12kkkkk.comccccc33kkkkk.com51cccccccccccccccccccccccccccccccccccccccccccccc.cc
+cccdun.comcccf-cloud.com
ccchz.com
+cccitu.com
cccity.cc
+cccjjj.com
ccckq.comcccm-em120.com
+cccmat.com
+cccmtf.com
+cccnec.comcccovvv.comcccp.online
+cccpan.com
+cccppp.com
cccrx.org
+cccsql.comccctspm.org
+cccwaf.com
+cccwww.com
cccyun.cc
ccd86.com
ccdby.com
ccdol.comccea.pro
+cceato.comccedisp.com
+ccedpw.com
+ccedtu.comccee.com
cceea.net
cceep.comccement.comccen.net
ccepc.comcces2006.org
ccets.com
ccfeb.com
ccfei.com
+ccflow.org
ccgaa.com
ccgff.com
+ccgfie.com
ccgim.com
+ccgslb.com
+ccgslb.net
ccgxk.comcchaosheng.com
+cchccc.com
+cchcch.comcchezhan.comcchfound.org
+cchicc.comcchlgame.comcchorse.comcchorse.net
cchpu.com
+cciatv.com
+ccic-8.comccic.com
ccic2.com
cciccloud.com
ccice.com
+ccicgx.com
+ccichn.comccidcom.comccidconsulting.comcciddata.comcciddesign.comccidedu.comccidexpo.com
ccidgroup.comccidnet.comccidreport.com
ccidsmart.comccidthinktank.comccidwise.comccieh3c.com
ccigchina.com
ccihr.comccip.ren
ccipp.orgccit360.com
ccita.netccitimes.com
cciup.comccjkwjjedu.com
ccjoy.com
ccjoyland.comccjt.net
+ccjxcn.com
+ccjzzj.comcckefu1.comcckefu3.com
ccknbc.cccclawer.com
cclcn.com
ccle5.com
ccleliang.comcclexpo.com
+cclgpx.com
+cclimg.comcclinux.org
+cclndx.comcclolcc.com
+cclqme.xyzccluster.net
+cclycs.com
+cclyun.com
ccm-1.com
ccm99.com
+ccmama.com
ccmbv.comzzxw.net
+zzxmys.comccme.cc
+ccmfcm.comccmicroera.comccmn.netccmodel.comccmodel.netccmw.net
+ccn360.com
ccnee.com
ccnew.com
ccngx.comccnovel.comccnphoto.com
+ccnpic.comccnt.com
ccoalnews.com
ccoco.vipccoi.rencconn.cc
ccops.netccopyright.com
+ccostm.com
+ccotcm.com
+ccpaie.comccpc360.comccpgssd.comccpit-academy.orgccpit-sichuan.orgccpit-sx.org
ccpit-tga.org
ccpit.orgccpitbingtuan.orgccpitbj.orgccpitbm.orgccpitbuild.orgccpitcq.orgccpitecc.comccpitfujian.orgccpitgx.orgccpithebei.comccpithn.orgccpithrb.orgccpitjinan.orgccpitjs.orgccpitlight.orgccpitln.orgccpitnb.orgccpitqd.orgccpitsd.comccpittex.comccpittj.orgccpitxiamen.org
ccpitxian.org
ccplay.cc
+ccplay.com
ccpnt.org
ccpod.com
+ccprec.comccproxy.com
+ccps56.com
+ccqtgb.com
ccqyj.com
ccrgt.com
+ccrice.com
+ccrjkf.com
ccrjw.comccs.zone
+ccschy.com
ccsdj.comccshenghuo.com
ccsnpower.com
+ccssmm.comccst.cc
ccsuu.com
cct-solar.com
+cct365.net
+cctalk.com
+cctalk.net
cctaw.comcctb.net
cctbn.comcctc.cc
+cctcce.com
+cctcct.com
+cctcdn.comcctiedu.com
+cctime.com
+cction.comcctlife.com
cctocloud.comcctpress.com
cctry.comcctv-19.comcctv-22.comcctv-caijing.com
cctv-star.comcctv.comcctv0002.com
+cctv18.com
+cctv4g.comcctv5zhibo.comcctvcdn.net
+cctvcj.comcctvctpc.comcctvdyt.comcctvfinance.comcctvmall.comcctvpic.com
cctvsdyxl.com
+cctvse.netcctvweishi.comcctvxftx365.comcctvyscj.comcctw.cc
cctzz.netccutchi.com
ccutu.com
+ccv160.com
+ccv168.com
+ccview.net
ccwcw.com
+ccwcyw.com
ccwifi.ccccwl.net
ccwonline.com
ccwonline.net
+ccwork.comccwow.cc
+ccwqtv.com
ccxcn.com
ccxcredit.com
ccxjd.com
+ccybeta.cc
+ccydkj.comccynice.com
+ccysxd.com
ccyts.comccyunmai.comcczq.comcczq.netcd-auto.net
cd-bd.com
+cd-cxh.com
cd-hk.net
+cd-hss.com
cd-kc.com
cd-pa.comcd-psychologist.comcd-rail.com
cd-sd.com
cd-zc.com
cd120.com
+cd2120.com
cd23f.comcd37wan.comcd58.comcd6.com
+cdabon.com
cdacz.comcdadata.com
+cdadsj.com
cdairport.com
+cdajcx.comcdangel.com
+cdapex.com
+cdaten.comcdbaidu.comcdbdsec.com
cdbfb.net
+cdborz.com
+cdbpay.comcdbsdyk.comcdbsfund.comcdcc.inkcdccpit.org
cdcet.comcdcgames.netcdchuandong.comcdcoslm.com
+cdcxhl.com
+cdcxsd.com
+cdcyts.comcdcz.netcddengji.com
cddgg.com
cddgg.net
+cddjip.com
+cddlkj.net
+cddscj.com
+cddsgk.comcddys.me
+cde-os.com
cdedu.comcdeledu.comcdfanmu.com
+cdfcjg.com
cdfcn.comcdfeimi.com
cdfer.com
cdfgsanya.comcdfhnms.comcdfinger.comcdfmembers.comcdfortis.comcdfsunrise.comcdfuwuqi.com
+cdgdad.com
+cdggzy.comcdgjbus.com
+cdgmgd.com
cdgoufang.com
cdgtw.net
+cdgxfz.com
cdh3c.comcdhaiguang.comcdhfund.com
cdhld.comcdhr.net
+cdhsgb.comcdhtnews.com
cdidc.netcditv.tv
+cdjfwy.comcdjiaoan.comcdjingfeng.comcdjituan.com
+cdjnrc.com
+cdjsjx.com
+cdjxjy.com
+cdjzso.com
cdjzw.comcdjzwykj.comcdjzx120.com
+cdjzzg.comcdkf.com
+cdkjbg.com
+cdkrbj.com
+cdkyfc.com
cdlaobing.com
+cdlbmy.com
+cdlbyl.com
+cdlccc.com
+cdlchd.com
+cdleju.com
+cdlida.com
cdlingsou.comcdlinux.net
+cdlsym.comcdlvbao.com
+cdlxqn.comcdmcaac.comcdmddyf.comcdmfund.org
cdmoz.orgcdn-cba.comcdn-cdn.netcdn-dodo.com
cdn-files.net
cdn-gw-dv.netcdn-hotels.com
cdn-speed.com
+zzxhns.com
cdn-uc.cc
cdn-v.comcdn.funzzxfjxzz.com
zzxdc.com
zzxcy.comcdn.vin
zzxca.com
cdn08.comcdn1008.comcdn1218.com
cdn16.com
cdn20.com
+cdn20.info
cdn20.orgcdn2000.comcdn2020.com
cdn30.com
+cdn30.info
cdn30.orgcdn3344.com
cdn35.com
cdn40.com
cdn50.com
cdn56.com
cdn59.com
cdn60.com
cdn86.netcdn88.cc
cdn90.com
cdn90.net
cdn90.org
cdn99.com
+cdnaaa.netcdnb.netcdnbuild.comcdnbuild.net
+cdnbye.comcdnc.orgcdncache.comcdncache.net
cdncdncdn.com
cdncenter.com
cdncg.comcdnchatgpt.comcdnchushou.com
cdncl.net
cdnclouds.net
cdnczydwl.com
cdndd.net
+cdnddd.com
+cdnddd.net
cdndm.com
+cdndm5.com
+cdndm5.netcdndns1.comcdndns2.comcdndns2.net
cdndo.com
cdndoctor.com
cdndu.comcdnet110.comcdnetdns.netcdnetdns.vip
cdnetgdns.comcdnetworks.comcdnetworks.netcdnexus.com
cdnff.comcdnfly-ddos.site
+cdngia.com
+cdngogo.cccdngogo2.cc
+cdngot.comcdngslb.comcdngslb8.com
+cdngtm.com
+cdnhub.netcdnhwc1.comcdnhwc10.comcdnhwc2.comcdnhwc3.comcdnhwc5.comcdnhwc6.comcdnhwc7.comcdnhwc8.comcdnhwc9.comcdnhwcajk17.comcdnhwcatq08.comcdnhwcbni108.comcdnhwcbqs106.comcdnhwcbzj102.comcdnhwcchh18.comcdnhwccmz121.comcdnhwcead111.comcdnhwcedi10.comcdnhwcedt124.comcdnhwcggk22.comcdnhwcgnc118.comcdnhwcgqa21.comcdnhwchcg02.comcdnhwcibv122.comcdnhwcick110.comcdnhwcjlg112.comcdnhwcjog12.comcdnhwcjsb120.comcdnhwckfz116.comcdnhwckon103.comcdnhwcljk104.comcdnhwcllh11.comcdnhwclxu105.comcdnhwclxw05.comcdnhwcoem01.comcdnhwcohm19.comcdnhwcoph123.comcdnhwcprh113.comcdnhwcpsd13.comcdnhwcqgw115.comcdnhwcqir15.comcdnhwcqve117.comcdnhwcqwg14.comcdnhwctnm107.comcdnhwctxz24.comcdnhwcuim119.comcdnhwcupf06.comcdnhwcurq03.comcdnhwcvix16.comcdnhwcxcy07.comcdnhwczba04.comcdnhwczjt20.comcdnhwczks109.comcdnhwczmn114.comcdnhwczth23.comcdnhwcztu09.comcdnhwczxh101.com
+cdnidc.net
cdnjs8888.comcdnjson.comcdnjtzy.com
cdnle.com
cdnle.netcdnlinkcloud.comcdnlinking.comcdnmama.com
cdnmg.com
cdnok.com
cdnpe.comcdnqttdispatcher01.com
+cdnsvc.com
+cdntip.comcdntips.comcdntips.netcdnudns.comcdnunion.com
cdnvp.com
+cdnvpn.net
+cdnvue.com
+cdnwaf.netcdnyoyun.comcdnyt69.com
+cdoers.comcdonlie.com
+cdqcnt.com
cdqcp.com
cdqcw.net
+cdqcxy.com
cdqmw.net
cdqph.com
cdqss.com
cdrbj.com
cdrbs.net
cdren.com
cdren.net
cdronghai.comcdrsigc.com
+cdrtvu.comcdruzhu.comcds-seal.comcdsb.com
cdsb.mobi
cdscdscdn.comcdsenfa.com
+cdsgsz.comcdshangceng.comcdsixun.com
+cdsjjy.comcdsjtech.comcdskdxyy.comcdsledu.net
cdsme.com
cdsns.comcdspace.netcdssgift.com
+cdsuns.com
cdswx.net
+cdsxdd.com
+cdsxlc.com
+cdt-ec.com
+cdt-md.com
cdtaishan.comcdtfn2t.icucdtianda.com
+cdtlxx.net
cdtop.net
cdtyxx999.com
cduncname.comcdvcloud.comcdvisor.comcdweikebaba.comcdwulian.com
+cdxczl.com
+cdxrdz.comcdxuyang.com
+cdxwcx.com
+cdxwxy.com
+cdxydb.com
+cdydlx.com
cdyee.comcdyestar.com
cdyfy.com
+cdygdq.comcdyishi.com
+cdyllx.com
cdynt.com
cdyou.netcdyrjygs.com
+cdyrzc.comcdyushun.com
+cdyywz.com
cdyzhotel.com
+cdzdgw.com
+cdzdhx.com
cdzgh.com
+cdzgzs.com
+cdzhsj.comcdzhuoyu.comcdzikao.com
+cdzimo.comcdzixun.netcdzjryb.comcdzongtian.com
cdzp8.comcdzrjdgc.comcdzuche.com
+cdzvan.com
+cdzzhn.comcdzzxxe.com
+ce-air.comce04.com
+ce2293.com
ceair.comceairdutyfree.comceairgroup.comceaj.org
ceamg.comceawgez.com
ceba.techcebbank.com
cebcn.com
+cebike.comceblease.comcebpubservice.comcebu.vip
+cecb2b.com
cecbh.comcecc-cx.com
+ceccen.com
cecdc.com
cece-mall.comcece.comcece.lacecesat.com
cecgx.comcechoice.com
+cecisp.comcecloud.com
cecloudcs.comcecmath.comcecom.cc
ceconline.comceconlinebbs.com
+cecport.cccecport.com
+cectcc.comceda-fluid.com
cedachina.orgcedarhd.com
cediy.com
+cedock.com
+ceeger.com
ceeji.net
+ceepsp.comceeunion.com
+cef114.comcefc.co
cefv0f8o7.sbs
ceggd.com
cehca.com
+cehome.com
+cehuan.com
cehuashen.com
+cehui8.comcei1958.com
ceibs.educeibsonline.comceic.comceicloud.com
ceiea.com
ceigd.com
+ceitcl.com
+cekeis.com
cekid.comcelebpalace.com
celhr.comceliang.netcelinlawyers.com
+celiss.comcellixsoft.com
cells-net.com
cells-net.net
celwk.com
cement365.com
cementren.com
+cemyun.com
+cen-li.comcenano-china.com
+cenbel.comcenbohao.com
cencs.com
cengceng.chat
cengcloud.netcenjiasu.comcenn.com
cenray-ic.com
censh.com
centainfo.com
centaland.comcentanet.comcentauriglobal.comcententcymbals.comcentercmslinks.comcenterm.comcentong.com
centos.bzcentralsolomon.comcentrechina.comcentricsoftwarechina.comcentrincloud.comcentrixlink.comcentrmus.comcentrostuditaliani.comcentury21cn.comcenturycreation.comcenturyenglish.comcenturytrip.com
+cenvan.net
cenvandns.com
+cenwan.com
+cenwor.com
+cenwoy.comcenxilm.com
cenya.comceobiao.com
ceoeo.com
ceoim.comceolearn.com
ceook.com
ceotx.com
+ceowan.com
+ceowww.com
ceoxq.com
cepin.com
+ceping.com
ceping365.com
cepmh.com
+ceppea.netceppedu.com
+ceprei.com
+ceprei.orgcer.net
cerambath.orgceramicschina.comcere.cccerestools.com
+cernet.com
+cernet.netcernet2.netcersign.com
cersp.comces-transaction.comcesfutures.comceshanmi.com
ceshi.comceshi112.comceshigo.comceshigu.comceshiren.com
+cesipc.com
cespc.comcesu.net
+cet-46.com
+cetc33.com
+cetc52.com
cetccloud.comcetccloud.store
+cetcio.com
cetcmotor.comcetcssi.com
+cetgps.com
+cethik.com
cetqa.comceultimate.comceve-market.org
cevsn.com
ceydz.com
+ceyice.net
cf-china.info
cf-ns.com
cf-ns.net
+cf-ns.site
+cf-ns.tech
cf115.comcf69.comcfachina.orgcfanlost.com
+cfbond.com
+cfc365.com
+cfca-c.org
cfccd.comcfcf1958.com
+cfcglx.com
cfchi.comcfchint.com
cfcpn.com
cfcvy.xyz
cfd-china.com
+cfd163.comcfda.pubcfdp.orgcfdtlee.comcfej.net
cfeks.com
+cfgjwl.com
cfgpu.com
cfhfz.comcfhi.com
cfhpc.orgcfhuodong.cc
cfido.com
cfiec.netcfiecdns.comcfiecdns.net
cfimg.com
+cfjbqc.com
cfkdn.com
+cfkjgx.com
cflab.netcflm.com
+cfm119.com
cfmcc.com
cfmmc.comcfmna-tencent.com
+cfmoto.comcfnotes.com
cfogc.com
+cfpkv9.com
cfprefer1.xyz
cfprefer3.xyz
cfpsf.com
+cfscar.com
+cfsino.comcfss.cccfsuper.com
cftcredit.com
cftea.comcftest7.comcftest8.comcftsupport.comcftzqinzhou.com
cfucn.comcfunctions.comcfund108.comcfuture.shop
cfvvv.com
cfwaf.comcfxydefsyy.comcfxyfsyy.com
+cfxyjy.comcfxz.xyzcfyy.cccfzq.com
cg-ku.com
+cg-orz.com
cg009.comcg98.comcg99.com
cgabc.xyz
+cgacar.comcgadmob.com
cgahz.com
+cgangs.com
+cgartt.com
cgboo.comcgbwejianzhan.com
cgcountry.com
cgcss.comcgdeuvip.com
+cgdown.comcgdream.orgcgebook.comcgejournal.comcger.com
cgguy.com
cgiia.com
cgjoy.com
cgjoy.netcgke.comcgkjvip.comcglw.com
+cgmama.comcgmantou.com
cgmao.com
cgmcc.netcgmodel.com
cgmol.com
cgmxw.com
cgnjy.com
cgnmc.com
cgnne.com
+cgonet.com
cgown.com
cgpbatech.comcgplayer.comcgplusplus.com
+cgptwd.comcgreentown.com
cgris.net
cgsec.com
cgsfusion.com
+cgsoft.netcgtblog.com
cgtmu.comcgtn.com
cgtsg.com
cgtsj.com
cgtsj.orgcgtz.com
cguardian.com
cgufo.com
cguiw.com
cgvoo.com
+cgwang.com
cgwenjian.com
cgwic.comcgws.com
+cgxcig.net
cgxdm.com
cgxia.comcgxlzdm.comcgxm.net
+cgylke.com
cgylw.com
cgyou.comcgyouxi.comcgyu.comcgyx.tv
+cgzair.comcgzy.net
cgzyw.comch-auto.com
ch-gk.comch-guerrant.comch-tools.comch-water.com
+ch.com
ch028.netch12333.comch6k5zd77f.com
+ch9888.com
ch999.comch999img.com
+cha-tm.com
+cha127.com
+cha138.com
cha40.comchaba123.comchabeichong.com
chacd.com
chacewang.comchachaba.comchachawenshu.com
chache-cn.comchacheku.comchacheliang.comchachexian.com
+chacuo.netchadianshang.com
+chadoc.comchadown.com
chaej.com
chafanhou.com
+chafei.netchaguan.center
+chahua.org
+chahuo.com
chaic.comchaichefang.com
+chaicp.comchaiderl.comchaiding.comchaidongpower.comchaihezi.comchaijing.comchaimage.comchain-store.netchaincar.comchaincatcher.comchaindd.comchainedbox.com
chainknow.com
chainnode.comchainsql.netchaiqian88.comchaishiguan.comchaitin.com
+chaizz.comchajiage.comchajian5.comchajiandaquan.com
chajianxw.comchajiaotong.com
+chajie.com
chajn.orgchakahao.comchakahui.comchakonghao.comchakuaizhao.comchalaili.comchalangautozone.comchalcochem.comchalieco.comchallenge-21c.comchalwin.comchamcfae.com
+chamei.comchameiwang.comchameleon-ultimatepro.comchamiji.comchampconsult.comchampionunion.com
champsely.comchancel.ltdchandao.net
chandashi.com
chandixiu.comchang-xiang.comchangan.bizchangan120.netchangancap.comchanganfunds.comchangantaihe.comchangba-ktv.comchangba.comchangbaapi.comchangbaapp.comchangbaimg.comchangbalive.comchangbiyuan.comchangchun-ccpit.comchangda.lifechangdaore.comchangdunovel.comchangfa.comchangfengpacking.comchangfengsteeltube.comchangfon.comchanghe.techchangheauto.comchangheluqiao.comchangheng88.comchanghong-network.com
changhong.comchanghongit.comchanghu12333.comchanghualaw.comchanghuapower.comchanghuist.comchangingie.comchangjiangdata.comchangjiangjin.comchangjiangtimes.comchangjianxy.comchangjingtong.comchangker.comchangkezhe.comchanglihui.comchanglipeixun.comchangloong.comchangloong.netchangmeigj.comchangmengyun.com
changning.net'#changpingquzhongxiyijieheyiyuan.com
changpu3d.comchangqingshu.netchangsha-show.comchangshabdc.comchangshang.comchangshazrkj.comchangshengmobi.comchangshengshangye.comchangshiban.comchangshiwang.comchangshizu.comchangshunhuojia.comchangtong2800.comchangtounet.comchangtubus.comchanguanjia.com
changwang.comchangwankeji.comchangxiaow.comchangxie.comchangxingyun.comchangyan.comchangyifan.comchangyin-lab.comchangyonggame.comchangyou.com
changyoyo.comchangyuanwater.comchangyueba.comchangyushengwu.comchangzhinews.comchanjet.comchanjue.netchanluntan.comchanmama.comchannelbeyond.comchanningsun.bidchanpay.comchanpin100.comchanpinban.comchanpindashi.comchansemt.com
chanshiyu.comchansige.com
chanumber.comchanway.netchanwind.comchanxuan.comchanxuehezuo.comchanzhi.orgchanzuimei.comchao-fan.comchaoart.com
chaobohui.comchaobus.comchaodamould.comchaofan.comchaofanshuma.comchaofantian.comchaohuishou.com
+chaoji.comchaojibiaoge.com
chaojibuy.com
chaojifan.comchaojifangyu.comchaojihetong.comchaojituzi.netchaojiying.com
chaojiyun.comchaokaixin.netchaolady.comchaolean.comchaoliangkj.comchaoliuguan.comchaolongbus.comchaoluoluo.com
chaomi.ccchaonanclub.com
chaonanrc.comchaonei.comchaonenglu.comchaopaiyizu.comchaoren.comchaorenxiu.comchaosec.comchaoshanren.comchaoshen.ccchaoshengboliuliangji.comchaoshi168.comchaoskeh.com
+chaosw.com
chaov.comchaowanjoy.comchaoweb.comchaoxibiao.netchaoxin.comchaoxing.ccchaoxing.com
chaoxingv.com
chaoyi996.comchaoyisy.com
chaoyuesd.com
chaoyuyun.comchaozhenht.comchaozhiedu.comchaozhoudaily.comchaozuo.comchapangzhan.com
chapaofan.com
+chaping.tvchappell1811.comcharge-mobile.comchargerlab.comchargerlink.com
charmdeer.comcharmingglobe.comcharmkeytextile.comcharmsunfund.comcharsesdneyse.comchartboost-china.com
chashebao.comchashudi.comchatairc.comchatanywhere.techchatgptboke.com
chatgpter.com
chatm.comchatmindai.netchatnos.com
+chatqp.net
chatyygpt.com
chawo.comchaxinyu.net
+chaxun.bizchaxunfapiao.comchayanfamily.com
chayangge.com
chaye.com
+chayeo.com
chayu.comchayueshebao.com
chayuqing.comchazhaokan.comchazhengla.com
chazidian.comchaziyu.com
+chazuo.com
+chazuo.netchazuowang.comchbcnet.comchbdunt.com
chbml.com
chbtc.com
+chcedo.com
+chcnav.com
+chcoin.com
+chcpay.comchda.netchdajob.com
chdelphin.com
chdtv.net
+chdyou.netche-shijie.comche-youhui.comche.comche0.com
+che101.com
che12.com
+che127.com
+che168.comche2.com
+che300.com
+che314.comche6che5.com
cheaa.comcheapreplicawatch.comcheapyou.com
+cheari.comchebaba.comchebada.comchebaipishu.comchebianjie.comchebianjie.netchebrake.comchecar.mobichechaoxue.comchecheboke.comchecheng.comchechong.com
checi.orgcheck.cc
+checkip.pw
checkmath.netcheckoo.com
checkpass.net
checkzeit.com
+checom.netchediandian.com
+cheduo.comcheerfun.devcheerjoy.comcheeroad.comcheersee.com
cheersofa.comcheerspublishing.comcheetahfun.comcheetahgames.com
cheetahgo.netcheetahmobile.comchefafa.comchefugao.com
+cheguo.com
+chegva.comchehang168.comchehejia.com
+chehui.com
chekb.com
chekucafe.comchelaike.comchelangauto.com
chelifang.comchellex.com
+chelun.com
+chem17.comchem234.com
+chem31.com
+chem36.comchem365.netchem960.com
+chem99.com
chemalink.net
+chemao.comchemayi.comchembeango.com
chembible.com
+chembk.com
+chemcd.com
chemchina.com
+chemcp.com
chemcyber.comchemdrug.comchemgogo.comchemicalbook.comchemintimes.com
chemm.comchemmade.comchemnet.com
+chemrc.com
+chemsb.comchemsrc.comchemtour.comchemwith.com
+chemyq.comchen-design.comchen.fun
+chenag.comchenall.netchenapp.comchenbo.infochenduaomei.comchenduct.com
+chener.netchenfan.info
cheng-sen.com
cheng.xinchengcai.netchengchuanren.comchengdebank.comchengdechina.comchengdegroup.comchengdu-expat.comchengdun.comchengduworldcon.comchengduzhishang.comchengduzhouming.comchengezhao.comchengfeilong.comchengfengboli.comchengfengerlai.com
chenggnet.comchenggongguiji.comchenggonglvshisuo.comchengguw.comchenghct.comchengji-inc.comchengji1859.comchengjianjituan.com
chengjing.comchengkao365.com
chenglang.netchenglangyun.com
chenglin.namechenglinpak.comchenglispv.comchengliwang.comchenglou.netchengmei.gameschengpeiquan.com
chengrang.comchengrengaokaobaoming.comchengshidingxiang.comchengshiguanjia.comchengshijun.comchengshiluntan.com
chengshiw.comchengshu.comchengsmart.comchengtaijiaju.comchengtaizs.comchengtianxiajy.comchengtongjz.comchengtu.comchenguangblog.comchengwei.comchengweitx.comchengxiangqian.comchengxiangzhineng.comchengxinyouxuan.com
chengxuan.comchengyangyang.comchengye-capital.comchengyitex.comchengyucidian.netchengyushangba.com
chengyuwb.com
chengyuxi.comchengzhaoxi.xyzchengzhongmugu.ltdchengzhongmugu.vipchengzijianzhan.ccchengzijianzhan.com
chengzivr.comchengzz.com
chenhe.cc
+chenhr.comchenhui.org
+chenii.com
+chenjia.mechenjie.info
chenjiehua.mechenjinghealth.com
+chenjt.com
chenkeiot.com
chenksoft.com
+chenlb.comchenlianfu.comchenliangroup.com
chenlinux.comchenlinzuwu.comchenmomo.comchennianyoupin.com
+chenpe.comchenpishoucang.comchenplus.comchenpot.comchenroot.comchenruisoft.comchenruixuan.comchenruo.net
+chens.lifechenshipin.comchensuyang.com
+chenty.com
+chenva.com
chenwenwl.com
chenxi-sh.com'#chenxiangwenhuayanjiuweiyuanhui.comchenxiao.cc
chenxin99.comchenxinghb.comchenxingweb.comchenxinwood.com
chenxm.cc
chenxuehu.com
chenxuhou.comchenxunyun.com
cheny.orgchenyea.comchenyifaer67373.comchenyistyle.comchenyongjun.vipchenyongqi.comchenyou123.comchenyudong.com
chenyuemz.comchenyuzw.comchenyyds.comchenzao.comchenzhicheng.comchenzhongkj.comchenzhongtech.comcheonhyeong.com
cheoo.com
cheoz.comchepin88.comcherimm.comcherymanuals.comcheshenghuo.comcheshi-img.com
+cheshi.com
cheshi111.comcheshi18.com
cheshirex.comcheshizh.com
+chesir.comchesthospital.comchesudi.com
+chetan.com
chetiansi.com
chetodeng.comchetuanwang.netchetuobang.com
chetx.comchetxia.com
+chetxt.com
+chevip.com
+chewen.comchewulin.comchexian9.comchexiang.comchexiaoliang.net
chexin.ccchexinju.com
+chexiu.com
+chextx.com
+chexun.com
+chexun.net
cheyaoshi.comcheyian.comcheyipai.comcheyishang.comcheyisou.comcheynewalk.com
cheyou123.comcheyuan.com
+cheyun.com
+cheyuu.comchez360.comchezaiyi.com
chezhanri.com
chezhibao.comchezhubidu.comchezhutech.comchezhuzhinan.comchezizhu.com
+chezvi.comchfsmartad.com
chgcw.comchghouse.org
chgie.comchgjedu.com
+chglmp.comchgreenway.comchhblog.com
chhua.com
chhzm.com
+chi2ko.com
+chi588.comchianbaohan.com
+chiang.funchibanting.com
chichuang.comchickfrp.comchidaolian.comchidaoni.comchidaoni.netchidaotv.com
chidd.netchidowl.comchidown.com
chidudata.com
chiefmore.comchieftin.orgchihe.sochiheba.comchiji-h5.comchildjia.comchildlib.orgchillyroom.comchilunyc.comchiluyingxiao.com
chimatong.com
chimelong.comchimezi.comchims.cochina-10.comchina-3.com
china-315.comchina-ah.comchina-anhe.comchina-asahi.comchina-aseanbis.com
china-asm.comchina-audit.comchina-b.comchina-biding.com
china-caa.org
china-cas.org
china-cba.net
china-cbn.com
china-cbs.com
china-ccc.orgchina-ccie.comchina-ccii.com
china-ccw.comchina-cdig.com
china-cdt.comchina-ceco.com
china-ced.comchina-ceec-cooperation.com
china-cfa.orgchina-chair.comchina-channel.comchina-chuwei.comchina-cicc.orgchina-clbj.comchina-clearing.comchina-cloud.comchina-co.com
china-coc.orgchina-consulate.orgchina-core.comchina-cpu.co
china-cpu.com
china-csm.orgchina-d.comchina-designer.comchina-dingjie.com
china-drm.netchina-dt.comchina-ef.com
china-eia.comchina-embassy.orgchina-engine.netchina-entercom.comchina-enterprise.com
china-epa.comchina-erzhong.comchina-fire.comchina-fishery.comchina-flash.comchina-flower.comchina-g.comchina-galaxy-inv.comchina-gehang.comchina-genius.com
china-get.comchina-giant.com
china-gnd.comchina-gold.comchina-goldcard.comchina-greenfund.comchina-hechang.comchina-hhsj.comchina-highway.comchina-holiday.comchina-hongfei.com
china-hrg.comchina-huazhou.comchina-hxzb.com
china-hzd.comchina-invests.netchina-isotope.comchina-j.com
china-jit.comchina-jm.orgchina-kaihua.comchina-kaoshi.com
china-key.comchina-kids-expo.comchina-kids-fair.comchina-knobs.comchina-latv.comchina-lawoffice.com
china-led.netchina-liye.com
china-m2m.com
china-mcc.comchina-mile.comchina-moutai.comchina-mt.orgchina-nengyuan.com
china-nlp.comchina-obgyn.netchina-office-solutions.comchina-packcon.comchina-pcba.comchina-pengye.comchina-pharmacy.comchina-planet.com
china-pub.comchina-qiao.comchina-re.netchina-reform.org
china-ric.comchina-riscv.comchina-russia.orgchina-season.comchina-security.com
china-see.comchina-seeq.comchina-shimo.comchina-shjyx.comchina-show.netchina-shufajia.comchina-shugaung.netchina-sites.comchina-slate.com
china-sop.comchina-sorsa.org
china-sss.comchina-sz.com
china-thk.com
china-tin.com
china-tje.comchina-topplus.comchina-tower.comchina-toy-edu.orgchina-toy-expo.comchina-up.comchina-vcom.comchina-vision.orgchina-vn.comchina-vo.orgchina-wanlin.comchina-warping.comchina-waste.comchina-ws.org
china-wss.comchina-yida.comchina-yuli.comchina-yulin.comchina-zbycg.comchina-zhongda.netchina-zikao.com
china.com
+zzwtjx.comchina001.comchina12365.comchina17.netchina1baogao.comchina1f.com
china2000.org
china3-15.comchina30s.comchina35.comchina356.com
china3gpp.comchina4a.orgchina5e.comchina60.com
china6688.comchina724.comchina777.orgchina95.netchina95.xyzchina9y.comchinaacc.com
chinaadec.comchinaaet.comchinaagrisci.comchinaags.netchinaagv.comchinaairer.comchinaamc.comchinaang.com
chinaaris.comchinaartificialstone.comchinaasaservice.comchinaasc.orgchinaaseanenv.orgchinaaseanfertilizer.comchinaaseantrade.com
chinaasic.comchinaath.comchinaautosupplier.comchinaaviationdaily.comchinab4c.comchinabaike.comchinabaiker.comchinabaogao.comchinabaokan.comchinabaoke.netchinabbtravel.comchinabdh.comchinabdt.com
chinabeer.netchinabenson.comchinabeston.com
chinabgao.comchinabid315.comchinabidding.ccchinabidding.comchinabiddingzb.comchinabigdata.comchinabigwin.com
chinabike.netchinabimdata.orgchinabmi.comchinabn.orgchinabooktrading.comchinabreed.comchinabug.net
chinabus.infochinabuses.comchinabuy1002.comchinabym.com
chinabyte.comchinabzp.com
+chinac.comchinac3.com
chinacace.orgchinacache.comchinacache.netchinacaj.netchinacal-art.comchinacamel.comchinacampus.orgchinacarbide.com
chinacasa.orgchinacatel.comchinaccm.comchinaccnet.com
chinaccsi.comchinacct.orgchinacdc.comchinacdnb2b.com
chinaceot.comchinaceotv.comchinacfi.netchinacfo.netchinacft.orgchinachemnet.comchinachilun.orgchinachina.netchinachugui.comchinachuntian.comchinacib.comchinacid.orgchinacil.comchinacir.com
chinacity.netchinacitysprint.comchinacitywater.orgchinacld.comchinacleanexpo.com
chinacljt.comchinacma.org
chinacmnc.comchinacmo.com
chinacoal.comchinacomix.comchinaconch.comchinaconsulatesf.orgchinaconveyor.comchinacosco.comchinacourt.org
chinacpda.com
chinacpda.orgchinacpx.com
chinacqsb.comchinacrane.netchinacreator.comchinacrops.org
chinacses.orgchinacsf.comchinactv.comchinaculture.orgchinacustomsdata.com
chinacxjs.orgchinacyx.comchinadafen.comchinadailyglobal.comchinadance.com
chinadart.comchinadatatrading.comchinadazhaxie.comchinadbs.comchinadds.netchinadentalshow.comchinadep.comchinadforce.comchinadianji.comchinadidao.comchinadigit.org
chinadipl.com
chinadjba.com
chinadmoz.orgchinadns.comchinadns.orgchinadongchu.comchinadonghai.comchinadougong.comchinadra.com
chinadrtv.comchinadsl.netchinaduo.comchinadyt.comchinadz.com
chinadzfp.com
chinadzyl.com
+chinae.netchinaeastlaw.comchinaebizal.comchinaecnet.comchinaeda.orgchinaedu.comchinaedu.netchinaedunet.comchinaedunewsw.comchinaefu.netchinaega.comchinaehs.netchinaeinet.com
chinaeinv.comchinaembassy.atchinaepu.comchinaequity.netchinaesf.netchinaesm.comchinaet.net
chinaexam.orgchinaexpo365.comchinaexpressair.comchinafa.orgchinafarad.comchinafashionbao.com
chinafbdq.comchinafert-gov.comchinaffmpeg.comchinafiber.comchinafic.org
chinafilm.comchinafilms.netchinafinancenet.comchinafinanceonline.comchinafininfo.comchinafishtv.comchinafix.comchinaflashmarket.comchinaflier.comchinafolklore.orgchinafoodj.comchinaforklift.comchinafpd.netchinafph.com
chinafpma.org
chinaftat.org
chinafuda.comchinafudaoban.comchinafxd.comchinagames.netchinagayles.comchinagb.netchinagb.orgchinagba.comchinagdg.comchinagiftsfair.comchinaglassnet.comchinagoldcoin.netchinagoldgroup.comchinagongcheng.comchinagoods.comchinagp.netchinagps.ccchinagrandauto.comchinagrazia.com
chinagrid.netchinagrowthcapital.com
chinagslb.com
chinagslb.net
chinagsrc.comchinagungho.orgchinaguyao.comchinagwy.org
chinagwyw.orgchinagzn.com
chinagznw.comchinahacker.comchinaham.comchinahao.com
chinaharp.comchinahazelnut.comchinahbj.comchinahengying.comchinahho.comchinahightech.comchinahighto.comchinahighway.comchinahiron.ltdchinahiyou.comchinahj.clubchinahkidc.netchinahky.com
chinahnjs.comchinahorologe.comchinahorse.orgchinahpa.orgchinahqjjw.comchinahr.comchinahrd.net
chinahrgy.com
chinahrhq.comchinahrt.comchinahte.comchinahtz.comchinahuashan.comchinahuben.comchinahudong.comchinahvacr.comchinahw.net
chinahylq.com
chinahyyj.com
chinahzkj.com
chinaidaa.orgchinaidcnet.comchinaidcnet.netchinaido.comchinaidr.comchinaielts.org
chinaiern.comchinainout.comchinainsbrokers.comchinaiol.comchinaiprlaw.comchinairn.comchinairr.orgchinait.vipchinaitcapital.comchinaitlab.comchinajan.comchinajcz.comchinajeweler.comchinajinlong.comchinajinzhan.comchinajiuquan.comchinajjz.com
chinajnhb.comchinajoy.netchinajs120.com
chinajsxx.comchinajungong.com
chinajuva.com
chinajyhj.comchinajyxdh.com
chinajzqc.comchinakab.comchinakaoyan.comchinakewei.comchinakidville.comchinakingho.comchinakingland.comchinakingo.comchinakongzi.orgchinaksi.com
chinakyzl.comchinalabexpo.com
chinalabs.comchinalahigh.comchinalancoo.comchinalandpress.comchinalao.comchinalawbook.comchinalawedu.comchinalawinfo.comchinalawyeryn.comchinaleather.orgchinaledger.comchinaleeper.com
chinalibs.netchinalicensing.orgchinalicensingexpo.comchinalifang.com
chinalims.netchinalink-sh.netchinalink.tvchinalions.comchinaliriver.com
chinalive.comchinaliyou.comchinalm.orgchinalonghu.comchinalowcarb.com
chinalsjt.comchinalubricant.com
chinalure.comchinalushan.comchinaluxury.netchinaluxus.comchinalxnet.comchinamae.com
chinamags.orgchinamaincloud.com
chinamani.comchinamaohong.comchinamap.comchinamaven.comchinambn.comchinamca.comchinamcache.comchinamcloud.comchinamendu.comchinamenwang.comchinamerger.comchinametro.netchinameyer.comchinamingyan.netchinamining.comchinamishu.netchinamission.bechinamobile.comchinamobiledevice.comchinamobileltd.comchinamobilesz.com
chinamost.netchinamsa.orgchinamsr.com
chinamssp.comchinamusical.netchinamwh.comchinamworld.com
chinamypp.comchinanb.orgchinanbb.comchinanet-sh.comchinanet.ccchinanet88.comchinanetcenter.comchinanetidc.comchinanetsun-dns.comchinanetsun.comchinanev.netchinaneweast.comchinanewkey.com
chinanews.comchinaningbo.comchinanmi.com
chinanums.comchinaobp.comchinaoct.comchinaonward.netchinaopc.org
chinaopen.comchinaopticsvalley.comchinaore.comchinaott.netchinapantom.comchinapaper.netchinapastel.comchinapay.comchinapayhongkong.comchinape168.comchinapeelingmachine.comchinapeier.comchinapeople.comchinapet.comchinapet.netchinapharm.net
chinapipe.netchinaplasonline.com
chinaplat.comchinapm.orgchinapnr.comchinaports.comchinapost-life.com
chinapoto.comchinapowerbi.comchinapp.comchinapp.netchinapsy.comchinapubmed.netchinapusirui.comchinaqi.netchinaqingtian.comchinaqipeihui.comchinaqking.comchinaql.orgchinaqoe.netchinaquest.comchinaquickpcb.comchinaqw.comchinarayying.comchinardr.comchinardr.netchinaredstar.comchinaren.comchinarootdesign.comchinartlaw.comchinarun.com
chinarzfh.com
chinasaat.comchinasafety.net
chinasanc.comchinasantian.comchinasareview.comchinasatcom.comchinasb.orgchinasbm-eet.comchinasciencejournal.comchinascope.comchinascopefinancial.comchinascpjy.comchinascsoft.comchinaseed114.com
chinasexq.comchinashadt.comchinashangpinku.comchinashenglu.comchinashj.comchinashop.cc
chinashpp.comchinashuibao.comchinasie.com
chinasilk.comchinasiwei.comchinasmartpay.com
chinasnow.netchinasnw.comchinaso.comchinasofti.comchinasoftinc.comchinasoftosg.com
chinasosuo.ccchinasoushang.comchinaspringtown.com
chinasrif.comchinassl.comchinassl.net
chinasspp.comchinastationeryfair.comchinastoneforest.com
chinasufa.comchinasuntree.comchinasupercloud.comchinasuperwool.comchinaswimmer.comchinasws.com
chinasydw.orgchinatai.comchinatairun.comchinataiwan.orgchinatalent.orgchinatat.comchinatechinsights.comchinatelecom-ec.comchinatelecom-h.com
zzwro.com
+zzwqqx.comchinatelecomglobal.comchinatelecomhk.comchinatelecomiot.comchinatelling.comchinatet.comchinatex.comchinatex.netchinatex.orgchinatibetnews.comchinaticket.comchinatikfans.comchinatimber.org
chinatimes.ccchinatiner.comchinatiredealer.com
chinatlzm.com
chinatmic.comchinatongjia.comchinatopbrands.netchinatoplon.comchinatourguide.comchinatpm.comchinatpm.netchinatrace.orgchinatranslation.netchinatravel.netchinatravelacademy.comchinatraveldepot.comchinatruck.orgchinatrucks.comchinatsi.comchinatsp.comchinattl.comchinatungsten.comchinatupai.comchinatv-net.comchinatvc.com
chinatyco.comchinaufo.comchinaui.comchinauidesign.comchinauma.comchinaums.comchinaun.netchinaunicom-a.comchinaunicom.com
+zzwljc.comchinaunicomglobal.comchinaunionpay.comchinaunionpay.netchinauniversalasset.com
chinaunix.com
chinaunix.net
chinaunix.orgchinauo.comchinauos.comchinauos.netchinaups.comchinaus.comchinavalin.comchinavalue.net
chinavcpe.comchinavfx.netchinavid.comchinavideo.orgchinaviewstone.comchinaviolin.netchinavipsoft.comchinavisual.comchinavivers.comchinavr.netchinawanbang.comchinawanda.comchinawatchnet.comchinawbk.comchinawch.comchinawebber.comchinawebmap.comchinaweiyu.comchinaweizheng.comchinawenben.comchinawerewolf.comchinawie.comchinawindnews.comchinawiserv.comchinawitmedia.comchinawoodnet.comchinawr.netchinaws.netchinawudang.comchinawutong.comchinawutong.netchinawuyuan.comchinaxiaokang.comchinaxinge.comchinaxinport.comchinaxintu.comchinaxinye.comchinaxiv.comchinaxiv.netchinaxiv.orgchinaxpp.comchinaxq.comchinaxqf.comchinaxueqian.com
chinaxwcb.comchinaxy.com
chinaxzrc.comchinayadea.com
chinayarn.comchinaybx.comchinaygj.comchinayigou.comchinayigui.comchinayis.comchinayishuhua.comchinayk.comchinaymc.comchinayouji.comchinayounao.comchinayoxfc8otianye.comchinayq.comchinays.comchinayuanwang.comchinayulin.comchinayunlang.com
chinayyjx.comchinayyo.com
chinayzyh.com
+chinaz.com
+chinaz.netchinazbd.comchinazhixiong.comchinazichan.comchinazikao.com
chinazjph.comchinazjy.com
chinazkjc.com
chinazmhb.comchinaznj.comchinazns.com
chinaznyj.comchinazov.com
chinazwds.com
chinazwds.org
chinazxjc.comchinazxt.comchinazy.org
+chinca.org
chindices.comchine-info.com
+chinee.comchinese-no1.comchinese-tea-store.comchineseacc.comchineseafs.orgchineseall.comchinesechip.comchinesecio.comchineseconsulate.orgchineseembassy.orgchinesehongker.com
chinesejk.com
chinesejy.comchineselaw.comchinesemeter.comchinesemooc.orgchinesemoocs.orgchinesepaper-cut.comchineserose.comchinesetown.netchingkun.comchingli.comchingmi.comchinjpd.com
chinlingo.com
+chinrt.com
+chinsc.comchinsun-door.com
chint.com
chint.netchintautomation.comchinulture.com
+chip37.comchipcoo.comchipcreation.com
chipdance.com
chipdebug.comchipeasy.comchiphell.comchiphometek.comchiplayout.netchipmanufacturing.org
chiponeic.comchipown.com
chipsbank.comchipsec.comchipsgo.comchipsir.com
+chipup.comchipwing.comchipyun.comchiq-cloud.comchiralquest.comchisai.tech
chisc.net
chiser.ccchishine3d.comchishoes.comchitanda.me
chitu.comchitudexiaozhi.com
+chitus.comchivast.com
+chivox.com
chivoxapp.com
chiwayedu.com
chixm.comchixuyun.comchiyanjiasu.com
chiyekeji.com
chiyufeng.com
+chizao.com
+chizhou.ccchizhouchacha.comchizhoujob.comchizhouren.comchiznews.com
chjso.comchlingkong.com
+chlmfm.comchloe99.com
+chmecc.org
chmed.netchmgames.com
chmia.org
chmti.com
+chn112.com
+chn168.com
+chnart.comchnau99999.comchnbook.org
+chnchi.com
+chncia.orgchncomic.com
+chncon.com
chncopper.com
+chncpa.orgchncwds.com
chndesign.com
+chndoi.com
+chndoi.net
+chndoi.org
+chndtb.com
+chnews.net
chnfi.comchnfund.com
chngalaxy.com
chngc.netchnhace.com
+chnjet.com
chnlanker.comchnmodel.com
+chnmus.netchnmusic.org
+chnpac.com
+chnpec.comchnppmuseum.comchnpush.com
chnqifeng.comchnroad.com
chnso.com
+chnsuv.com
+chntel.com
+chocei.com
+chofei.com
chofn.com
chofn.net
chofn.orgchofnipr.comchoiceform.com
+chong4.netchongchi.comchongchuang.bizchongdeedu.comchongdiantou.comchongdk.netchongfabianli.comchongguanglawfirm.comchonghi.comchongjisyj.comchongjiyashiji.comchongkongwang999.comchongmingzhuce.comchongnengjihua.comchongqingdongjin.comchongqingkh.comchongqingyoupin.comchongso.com
chongsoft.comchongtaotao.comchongwenwen.com
+chongwu.ccchongwujiaoyi.comchongya.vipchongyejia.comchongyitang.orgchongyunpowu.comchongzhi.com
chongzuo.club
+chonka.comchontdoled.comchoosepickhere.comchooway.com
choqi.comchoubag.com
chouchou.clubchouchoujiang.comchoujue.netchoukang.comchoupangxia.com
+chouqu.com
chouti.cc
+chouti.com
+choyri.comchplayer.comchr.fan
+chrent.com
+chrice.netchrieschina.comchristophero.xyz
chrmn.com
+chroad.comchrome64.com
chrome666.comchromecj.comchromedownloads.net
chromefor.comchromegw.comchromeliulanqi.comchromezj.comchronusartcenter.orgchroyoo.com
+chrryk.com
chrstatic.comchs.pub
chsdl.com
chsgw.comchshcms.comchshouyu.com
chspu.com
chspv.com
chste.com
+chszzy.comchtf.comchtfund.com
chtgc.com
+chtmxp.com
chtpe.com
chtse.com
chtwm.comchu0.comchua.prochuairan.comchuaizhe.comchuan-s.comchuanbojiang.com
chuanboyi.comchuandaizc.com
chuandong.comchuang-fan.comchuang-pin.comchuang21.comchuangansou.com
chuangbie.comchuangcache.com
chuangcdn.comchuangchangnet.comchuangchenwangluo.comchuangcifang.comchuangdaxx.comchuangduyouyue.comchuangen.comchuangfeixin.comchuanggallery.comchuangji2009.comchuangjiangx.comchuangjianletu.com
chuangjie.comchuangjing.comchuangke.tv
chuangkem.comchuangkeup.com
chuangkit.comchuangli.netchuanglian.netchuanglinggame.com
chuangluo.comchuangmei8.comchuangruo8.com
chuangseo.comchuangshiwl.comchuangshiyuli.com
chuangtie.com
chuangtoo.comchuangx.org
chuangxin.comchuangxinapi.comchuangxinoa.comchuangxuan.xyzchuangyebaba.comchuangyehai.comchuangyejia.comchuangyejia.vipchuangyejmw.comchuangyi.cochuangyichong.comchuangyijisu.comchuangyimao.comchuangyiqifu.comchuangyisai.comchuangyiwh.comchuangyouqi.comchuangzaoshi.comchuanhai.netchuanjiaoban.comchuanjie.vipchuanke.comchuanmeixing.comchuanmeizy.comchuannan.netchuanpuyun.comchuanqi.comchuanshanqundao.comchuansong.mechuansongme.comchuantangjitrade.comchuantec.comchuantiegroup.com
chuantu88.comchuanxincao.netchuanye.com
chuanyifu.comchuanying365.comchuanying520.comchuanyinpx.comchuanyuapp.comchuanyunge.com
chuanzhen.com
+chuapp.com
chuban.cc
chubaodai.com
chubaohui.com
chubh.comchucaotang.com
chuchujie.comchudian365.com
+chufaba.me
chufw.com
+chuge8.comchugeyun.com
chugou360.comchuguo78.com
chuguohao.comchuhai-club.com
+chuimg.comchuinet.comchuisax.comchuishen.xyzchuixue.comchuiyue.com
+chuji8.comchujian.xyzchujing-electric.comchujuan.netchujunkeji.comchukong-inc.comchukonggame.comchukou1.comchule.ccchumacdn.com
chumanapp.comchumenwenwen.comchun-xiang.comchunai.asia
+chunbo.com
chunboimg.com
+chundi.com
+chundi.orgchunengauto.comchunfengapp.comchunfengxing.com
chunge188.com
chungeseo.com
chungkwong.ccchunhingplasticbags.comchunhuinongye.comchunjingban.netchunliangpai.comchunliao.netchunloo.comchunmen.com
+chunmi.comchunshen-group.com
chunsheng.comchunshuitang.comchunshuizhijia.comchunsuns.comchunxuanmao.comchunyiscdk.com
chunyu.mechunyu.mobichunyuyisheng.comchuqitc.com
+chuquan.mechurenjixie.comchuruisy.com
+chusan.com
chusenscm.com
+chuseo.comchushan.comchushang027.comchushibiao5.comchushihome.comchushiji.com
+chushou.tv
+chushu.org
chushu123.comchutianlaser.comchutianzhinu.com
chuxincq.workchuxindata.comchuxinglibu.comchuxingpay.comchuxingyouhui.comchuxinhd.comchuxinhudong.com
chuxinvip.com
chuxueyun.comchuyigao.comchuying.orgchuyouke.comchuyu.mechuzhaobiao.comchvacuum.com
+chw818.com
+chwlsq.comchxchips.com
+chxent.comchxumov.com
chxyq.com
chyfh.comchysoft.netchyw.pub
chyxx.comchzhkeji.com
chzhw.com
+chzybj.com
ci123.comci2.lat
ci800.com
ciallo.cc
+ciaoca.comciaxkzxy.comcibaike.com
+cibawl.comcibfintech.com
cibn-intl.comcibn.cccibn.comcibnlive.comcibnott.net
+cibntv.netcibnvst.comciboedu.orgcibonet.comcibresearch.comcibuser.com
+cic-js.com
cicaf.comcicc.comciccfund.comcicconline.com
ciccphoto.comciccwargame.com
+ciccwm.com
+ciceme.comcicfexpo.com
cicg.tech
+ciciec.com
+cicmag.com
cicoe.netcicphoto.comcict.comcidf.netcidgroup.comcidi.aicidiancn.com
cidschina.comciduoduo123.comcie-lgr.com
ciec-expo.com
ciect.com
cieet.com
cief-expo.com
ciepe.com
cietac-hb.org
cietac-sc.org
+cietac.orgcifalshanghai.org
cifco.netcifm.comcifnews.com
cifoo.com
+ciftis.orgcigadesign.comcigarambassador.comcignacmb-ipmi.comcignacmb.comcignacmbamc.comcignacmbuser.comciguang.comcihai123.comcihexpo.com
cihua.netciia-top.comciicgat.comciie.org
ciif-expo.com
ciiip.comciiplat.comcijiasu.comcijiyun.comcikelink.com
ciku5.comciliba.buzzciliba.lifeciliba5.xyz
cilin.org
cilishiye.com
+cilogo.comcim2025.net
cimamotor.comcimc.com
+cimcjm.comcimcreefertrailer.com
+cimen.clubcimictiles.com
ciming-bj.com
+ciming.comcimingaoya.comcimingsy.com
+cimsic.comcimtshow.comcinacom.netcinasoft.comcindasc.com
cindasoft.com
cinehello.com
+cingta.com
ciniao.me
+cinsee.com
+cinsos.com
+cinydi.com
cinyi.com
+cio114.com
+cio360.net
+cioage.comciomp-cggc.com
ciopharma.comciotimes.comciotour.comciou.com
+cip.cc
cipgtrans.comcipherupcloud.com
ciplawyer.com
cippe.net
+ciprun.comcipscom.com
+cipukj.com
cipunited.comcircday.comcircuitboardchips.comcirmall.comcirrowings.comcirs-reach.comcirunzhang.com
+ciscon.org
+cismef.comcisskwt.com
+cistds.org
+cit168.comcitahub.comciteaexample.comcitegalleries.comcitexpo.orgcitiais.com05bk.comcitic-wealth.com
citic.com
citicbank.comciticbankuser.comciticcapital.com
citiccard.comciticdameng.comciticguoanbn.comciticiam.comciticifh.comciticnetworks.com
+citics.com
zzwl.infociticsf.comciticsinfo.comciticsteel.com
+citisa.org
citiz.netcitizenmech.com
citreport.comcits-sz.net
+citscq.comcitscsc.comcitsgbt.com
+citsgs.comcitsguilin.com
+citshq.com
+citssh.com
+citsxa.com
+citszz.com
+citure.net
citvc.com
city12580.comcity199.com
city8.comcity8090.com
citybrain.com
+citygf.comcityhui.comcitylinker.comcitypaly.comcitysbs.com
+citysz.netcitytogo.com
+cityup.org
+citywo.com
+citywy.com
cityy.comciunofor.comcivilgun.com
civilness.com
civiw.com
+ciweek.comciweekforum.comciweekly.com
ciwei.netciweimao.comciweishixi.comciweiyuedui.com
+ciwong.com
+ciwong.net
+ciwork.netcixibank.comcixiedu.netcixiucn.comcixtech.com
cixuanfuw.com
ciyew.comciyocon.com
+ciyuan.menciyuanji.comciyuans.comciyynodegroup.cyoucizhixin.com
cizip.com
+cjasen.comcjavapy.com
+cjbeng.comcjcn.com
cjcnn.com
cjdcw.comcjdropshipping.com
cjdsp.com
cjdx1.com
cjftb.comcjhb168.comcjhospital.comcjhxfund.com
+cjienc.com
cjiit.com
+cjjd04.com
+cjjd05.com
+cjjd06.com
+cjjd07.com
+cjjd08.com
+cjjd15.com
+cjjd18.com
+cjjd19.com
cjjhb.com
cjjhk.com
cjjjs.com
+cjjnff.com
+cjjygr.com
cjk3d.net
cjkhd.com
+cjkjks.comcjkz.com
cjlap.com
+cjlulu.com
+cjm.so
cjmit.comcjmr.orgcjmx.comcjn.com
cjnis.comcjoaerot.sbscjol.comcjolimg.com
+cjrcsc.comcjs-lwh.lovecjsc.comcjsgegs.comcjshipin.net
+cjtmsp.com
cjveg.com
cjwlb.comcjx2.comcjxz.comcjycode.com
+cjyun.club
cjyun.org
cjyyw.com
+cjzcgl.com
cjzkw.com
cjzsy.com
cjzzc.com
+ck0771.com
ck100.com
ck180.net
ck586.com
ck921.com
ckair.comckan.tvckd-mbd.com
+ckd.im
+ckd.so
ckdxq.com
ckdzb.com
ckefu.comckernel.orgckeyan17.comckeyan17.netckeyedu.com
ckimg.comckjr001.com
+ckjryy.comckplayer.comcksd888.com
cksic.comcktqeiau.comcktshare.com
ckuai.comckvmrtfg.comckweax9zn5.comckxx.netckzhaoyaojing.comckzhijiaedu.com
+cl-acg.com
+cl-clw.comcl-kongtiao.com
+cl.app
+cl0438.com
+cl2009.com
+cl8239.com
cl868.comclady.ccclam-itc.com
clamc.comclamptek.com
+clanzx.netclaritywallpaper.com
clarivate.comclashroyaleapp.comclassinpaas.com
+zzwhtg.comclassmateer.comclasspassincn.comclasspod.comclasspodcdn.com
clayidols.comclb6.net
+clboss.com
+clbpay.com
clbu.club
clbug.comclbz666.com
clcgq.comclcindex.comclckblog.spaceclclibrary.com
clcmw.com
clcou.com
clcouncil.comclcwwyj.com
+cldbiz.com
+cldfsv.comclean-cn.comcleansebay.comclear-sz.comclear888.comclearaki.comclearcrane.comclearmediatech.comclearsky360.comclevercn.net
cleveroom.com
clewm.net
+clewxc.com
+clfcgc.comclfdked.icu
+clfile.com
+clfzsn.com
+clgcxs.com
+clgslc.comclhimalayanxx.comclhqcyx.com
+clhwzg.com
+cli.imclianjie.comclickadumobi.shopclickfuntech.com
clicksdiy.comclicksun.net
clickwifi.netclidone.comclient51.comcliffordtrading.com
cliim.com
cliim.net
clijc.comclimedic.comclinicalmall.com
clinicmed.netcliport.com
+clj178.comcljtscd.com
+cljtw8.comcljtzycw.comclk1.topcllcczx.com
clled.comcllk.net
clloz.com
+clngaa.comcloooud.comcloopen.comcloopen.net
+cloopm.com
closertb.siteclotfun.xyzclothes178.comclothjob.com
+clothr.comclotliu.comclouclip.comcloud-beijing.comcloud-control.topcloud-cube.net
cloud-dns.netcloud-frame.comcloud-hebi.comcloud-hub.co cloud-industry-delivery.sitecloud-links.netzzwenxue.comcloud-ningbo.comcloud-ordos.com
cloud-rtc.com
cloud-rtc.netcloud-scdn-ns.netcloud-scdn-ns.techcloud-scdn.comcloud-shenzhen.comcloud-shiyan.com
cloud-sun.comcloud-wuhan.comcloud-xian.comcloud-xm.comcloud-zhaoqing.comcloud-zhongwei.com
cloud21cn.comcloud301.netcloud56.netcloud887325.com
+clouda.comcloudajs.orgcloudangelfunds.comcloudanqing.com
cloudappl.comcloudbaoshan.com
cloudbase.netcloudbeibei.comcloudbility.comcloudbinzhou.com
cloudbool.comcloudcachetci.comcloudcc.comcloudcdn.net
cloudcdns.com
cloudcdns.netcloudcdnvip.comcloudcflare.comcloudchangde.comcloudchangsha.comcloudchangzhou.comcloudchaozhou.comcloudchengde.comcloudchengdu.comcloudchuzhou.comcloudcross.comcloudcsp.comcloudczs.comclouddalian.comclouddatong.comclouddcs.comclouddiffuse.xyzclouddig.comclouddn.com
clouddns1.vipclouddongying.comclouddream.netcloudencent.comcloudflare-cn.comcloudflareanycast.netcloudflarecn.netcloudflareglobal.netcloudflareinsights-cn.comcloudflareperf.comcloudflareprod.comcloudflarestaging.comcloudflarestoragegw.comcloudfoshan.comcloudfront-cn.netcloudfuqing.comcloudganzhou.comcloudgap.netcloudgfw.comcloudgfw.netcloudgoing.comcloudguangzhou.comcloudguarding.comcloudgx.netcloudhaidong.comcloudhefei.comcloudhengshui.comcloudhin.comcloudhost.linkcloudhosts.xyzcloudhua.comcloudhuaihua.comcloudhuizhou.comcloudhvacr.comcloudidaas.comcloudinnov.comcloudinward.com
cloudiplc.comcloudjinan.comcloudjinchang.comcloudjingzhou.comcloudjining.comcloudjiujiang.comcloudkirin.comcloudkunming.com
cloudleft.comcloudleshan.comcloudlijiang.comcloudlishui.comcloudluohe.comcloudluoyang.comcloudlvs.comcloudmeishan.comcloudmes.iocloudminds.comcloudmob.vipcloudmob.xyzcloudmountainproducts.comcloudnanan.comcloudnanjing.comcloudnanning.comcloudnantong.comcloudnapps.comcloudnet.worldcloudnetb2b.comcloudouc.com
cloudp.cccloudpense.comcloudpnr.comcloudquanzhou.comcloudrmt.com
cloudroom.comcloudsanya.comcloudsation.comcloudsee.comcloudsee.netcloudseeplus.comcloudseetech.comcloudserver01.comcloudses.com
cloudsgis.comcloudshanghai.comcloudshaoyang.comcloudshenfuxingqu.comcloudsigma.comcloudsiping.com
cloudsite.vipcloudskysec.com
cloudsohu.netcloudstencent.comcloudstudio.netcloudsuqian.comcloudtalkers.comcloudtangshan.comcloudtencents.comcloudtianjin.comcloudtomicro.comcloudtongchuan.comcloudtongliang.com
cloudtopo.comcloudtrans.comcloudtui.com
cloudvast.comcloudvdn.comcloudvogue.comcloudvse.comcloudweinan.comcloudwise.ai
cloudwise.comcloudxiangtan.comcloudxianyou.comcloudxining.comcloudxns.comcloudxns.netcloudyanan.comcloudyancheng.comcloudyantai.comcloudyee.comcloudyinchuan.comcloudyo.netcloudyouku.comcloudytrace.comcloudytrace.orgcloudyueyang.comcloudyuncheng.com
cloudyuxi.comcloudzhongshan.comcloudzhuhai.com
+clpcdn.com
clpga.org
+clqccy.comclqcgsgw.comclqctxc.com
clroi.com
+cls.ccclsa.com
+clsbhs.comclscd888.comclshanghai.comclsj.com
clssn.comclssnews.comclto.cccltt.orgclub-pc.com
clubcarev.comclubedosmiudos.com
zzwanshou.comcluerich.com
clwhk.com
clwjk.comclwytss.com
+clx360.com
clxlb.com
+clxsbj.comclxsczx.com
+clyfjx.com
+clyric.com
+clz.me
clzbl.comclzd.fun
clzqm.com
+clzqxp.comclzt.comclzyqche.com
+cm-iov.comcm-worklink.com
+zzvips.comzztyscl.com
+cm1881.com
cm233.com
+cm3721.com
cm442.com
cmacredit.org
cmaif.com
+cmaifz.com
+cmanuf.comcmb-leasing.comcmbajia.com
+cmbbao.comcmbchina.bizcmbchina.comcmbchina.netcmbchinawm.com
+zztxkj.com
+cmbimg.com
+cmbuat.comcmbwinglungbank.com
+cmbwlb.comcmbxgsx.com
cmbyc.comcmcc.incmccb2b.comcmcconenet.comcmcloud.orgcmclound.comcmcm.com
cmcmadmin.comcmcmapp.comcmcmcdn.comcmcmcmai.comcmcmiot.com
+cmcmpc.comcmcmsecurity.comcmcmserv.com
cmcmtrans.comcmct.tv
+cmct22.comcmd5.comcmd5.lacmd5.orgcmd8.comcmda.netcmdcxls.com
cmdrh.com
cmdschool.org
+cmdsir.comcmdw.vip
+cme021.com
cmea-crtc.comcmechina.net
cmedia360.com
+cmedns.com
cmeii.com
+cmejob.comcmenergyshipping.comcmes.orgcmf.bizcmf.ltdcmfchina.com
+cmfish.comcmfspay.comcmft.comcmfu.comcmfwiper.com
+cmgadx.com
+cmgame.comcmge.comcmgn.cc
cmgos.comcmgrasp.comcmhello.com
cmia.info
cmic.sitecmicapm.com
cmidc.net
cming.comcmiotcd.com
cmioy.com
cmjkw.comcmjz.net
+cmlong.com
cmlri.com
+cmmchn.com
cmmim.com
cmnxt.com
cmo2o.com
cmoct.com
+cmodel.com
+cmodes.comcmol.com
+cmowll.sbs
cmpay.com
+cmpedu.comcmqxysg.com
+cmread.comcmri.cccms1924.org
+cms258.comcmsblogs.comcmschina.com
+cmscmc.org
+cmseasy.cc
cmsfg.comcmsjournal.netcmsk1979.comcmskchp.comcmskcrm.com
cmsky.com
+cmstop.com
+cmswin.comcmt1993.comcmt7.com
cmtdi.com
+cmtech.netcmtopdr.com
cmtrq.com
cmtv1.com
cmu1h.com
cmugx.comcmuliang.comcmviking.com
cmvtc.comcmwb.com
cmwin.com
+cmxrcw.com
+cmypay.comcmyr.ltdcmys.cccmyunerp.comcmyynet.comcmzd.comcmzi.comcmzj.netcmzscgl.com
cmzyk.com
+0599yx.comcn-5.com
cn-ab.comcn-bowei.com
cn-boxing.comcn-c114.net
+cn-caa.comcn-cddc.com
+cn-chx.com
cn-em.com
cn-fe.comcn-food.netcn-healthcare.comcn-huar.com
+cn-lcd.com
cn-lingte.com
cn-msedge.net
cn-mw.comcn-natural.com
+cn-psy.comcn-railway.netcn-rcqc.comcn-roofexpert.com
+cn-sdf.comcn-soft.comcn-truck.comcn-visa.comcn-weida.comcn-zhentai.comzztline.com
zzthjixie.com
+zztfly.com
+cn.netzzt9.com cn.vc
+zzstep.com
cn0-6.com
cn006.com
+cn010w.com
+cn0434.com
+cn0713.com
+cn0779.com
+cn0851.com
+cn0917.comcn12365.org
cn168.com
cn18k.com
+cn2030.comcn22.net
+cn2599.com
+cn2che.com
cn314.com
cn357.comcn360cn.com
+cn365c.com
+cn365d.com
+cn365e.com
cn3wm.com
cn486.comcn49.comcn4e.comcn51.com
+cn5135.com
+cn6szx.comcn88.net
cn888.net
+cn8fre.comcn99.com
cnaaa.netcnaaa15.com
+cnaaa6.com
+cnaaa7.com
+cnaaa8.com
+cnaaa9.comcnacg.cccnaction.comcnad.comcnaf.comcnagcoin.comcnaicpa.org
+cnaidc.com
+cnaifm.com
cnaio.netcnaiplus.com
cnair.comcnal.com
cname-cdn.comcname123.netcname88.com
cnamegslb.comcnamexingzuoy.comcnanzhi.comcnaomeng.com
cnappsoft.xyz
cnats.comcnautofinance.comcnautonews.comcnautotool.com
cnbabylon.com
+cnball.net
+cnbang.netcnbaowen.net
cnbct.org
cnbidding.com
cnbiocell.com
cnbis.com
cnbis.orgcnbizmedia.com
cnbjx.com
+cnbksy.com
cnbkw.comcnblogs.comcnblogs.vip
cnbnl.com
+cnboat.com
cnbooking.netcnbooks.orgcnbp.netcnbuses.comcnbw114.com
+cnbysc.com
+cnbzol.com
cnbzs.comcnc-bga-oca.com
+cnc-gd.netcnc-school.comcnca.netcncaifu.com
+cncame.com
cncanghai.comcncbinternational.com
cncbk.vipzzsteel.com
+cnccac.com
cnccchina.com
+cnccdn.com
cncdn.com
+cncdnx.com
cncdomain.comcncecyc.comcncells.netcncflux.comcncgdns.comcncgdns.net
cncgw.orgcnchainnet.com
cnchangyi.com
cnchanran.comcnchemmy.comcncheng.com
cnchezhan.comcnchillers.com
cnchu.com
+cncico.comcncjichuang.comcncjishu.comcncjmjg.comcnclead.com
+cncljt.comcncloud.com
cncma.org
+cncmrn.com
cncms.com
+cncmun.comcncn.comcncn.net
+cncnbd.com
cncncloud.com
+cncncn.com
+cncnet.net
+cncnki.comcncolour.com
cncompute.com
cnconsume.comcncoolm.comcncopter.comcncotton.comcncourt.org
+cncovs.com
cncqcloud.com
cncrk.comcncrony.comcncrypt.com
+cncsen.com
cncsj.netcncsparetools.comcnction.comcnctrip.com
+cncwkj.com
+cnczjy.comcndailu.com
cndao.com
+cndata.com
cndatacom.comcndc-pl.com
cndds.comcndesign.com
cndezhong.com
+cndfdt.comcndfele.comcndfilm.com
cndhotels.comcndi-bj.comcndi.com
+cndids.comcndingxi.comcndl.vipcndledu.com
cndns.com
+cndns5.comcndongxiao.com
cndoornet.comcndoors.com
cndrealty.comcndsnet.com
cndss.netcndtour.comcndw.comcndy.org
cndzq.com
+cndzys.com
cne-motor.com
cnean.com
cnecc.com
+cnechc.comcnecport.comcnedres.org
+cneeex.com
+cnegov.com
+cnegov.org
cnelc.comcnelecom.netcnelite.org
cneln.net
cnemb.com
cnena.com
cneol-dns.netcnep001.comcnepaper.comcnepaper.net
+cnepub.comcnerlang.com
+cnetea.net
+cnetec.comcnetsec.com
cnevi.com
cnexp.net
+cnexps.com
+cneyoo.comcnezsoft.comcnfanews.comcnfantasia.com
cnfarasia.com
+cnfcyy.com
+cnfczn.com
+cnfdlt.com
+cnfeat.comcnfeelings.com
+cnfeol.comcnfiberhome.com
cnfin.com
+cnfina.comcnfirst.org
+cnfish.comcnfisher.com
cnfla.com
cnfol.comcnfolimg.com
+cnfood.com
cnforever.comcnforex.comcnfosale.com
+cnfpzz.comcnfq.com
+cnfrag.com
cnfrp.com
cnfrp.netcnfruit.com
cnfuhuaqi.comcnfuyin.org
cnfxc.com
cnfxj.org
+cnfyyj.comcnfzflw.com
cngal.orgcngaosu.comcngb.org
cngba.com
+cngbdl.com
cngin.com
+cngjtx.com
cngnu.net
+cngold.org
cngoldres.com
cngolf.tvcngrain.comcngreenfield.com
+cngsda.net
+cngslb.com
+cngslb.net
cngui.com
+cngulu.com
cngwv.com
+cngwzj.com
+cngxbj.com
+cngxjy.comcngxsmj.com
+cngxyi.com
+cngyff.comcnh5.netcnhacker.comcnhaifan.com
+cnhalo.net
cnhan.com
cnhanxing.comcnhaomen.comcnhaoshengyi.com
+cnhbql.com
cnhbstock.com
+cnhbtc.comcnhd.com
cnhhl.comcnhiker.comcnhis.cc
cnhls.comcnhlsxe.comcnhm.net
+cnhmsq.com
cnhnb.comcnhongke.orgcnhonker.comcnhowotruck.com
+cnhsjz.com
+cnhszx.com
cnhuadong.netcnhuanya.comcnhubei.comcnhutong.comcnhvacrnet.com
+cnhwjt.com
+cnhyjt.com
cnhzg.org
cnhzz.com
+cniao5.com
cnibx.com
+cnicif.com
+cnidea.net
+cniiib.com
zzsin.com
+cninfo.netcninfos.comcninnovatel.com!cninternetdownloadmanager.comcnipa-gd.comcnipa-hb.comcnipa-pesc.comcnipa-sc.comcnipa-tj.com
+cnipai.com
cnipr.com
cnisp.orgcnispgroup.comcnit-research.comcnitblog.comcniteyes.com
cniti.com
+cnitom.com
+cnitpm.com
cnitv.netcnix.cccnjccrusher.com
+cnjffb.comcnjfsilk.com
cnjingchu.comcnjiwang.comcnjizhe.comcnjj.com
cnjjl.com
+cnjjwb.comcnjkzxw.com
cnjlc.com
+cnjnsb.com
cnjob.comcnjournals.comcnjournals.netcnjournals.orgcnjpetr.org
+cnjsun.comcnjunzilan.comcnjurry.com
cnjxl.com
+cnjxol.com
+cnjyky.com
cnjzb.com
+cnjzjj.comcnk8.comcnkaile.com
+cnkang.com
+cnkefa.comcnkeyboard.comcnkgraph.comcnki.netcnki.vipcnkicheck.infocnkidoi.comcnkidoi.netcnkidoi.orgcnkinect.com
cnkingjoy.comcnkiorg.com
cnkis.netcnkivip.net
cnkix.com
+cnkizw.com
+cnklog.comcnknowledge.com
+cnkuai.comcnky.net
+cnlang.org
cnlaw.net
+cnldzc.com
+cnledw.com
cnlianjie.comcnlight.comcnlightnet.com
+cnlist.com
+cnlist.org
+cnlive.com
cnliveimg.com
cnllz.com
cnlng.com
cnlot.net
cnlso.comcnluolun.comcnmansi.comcnmarinefan.com
cnmattson.com
+cnmcom.com
cnmdy.com
cnmec.bizcnmeishu.comcnmeiwei.comcnmf.net
cnmhg.com
cnmia.org
cnmie.com
+cnmill.comcnmineqs.netcnminiorange.com
+cnmjcn.comcnmjcn.cyou
+cnmjcn.net
+cnmjin.net
+cnmmsc.orgcnmo.comcnmobile.net
+cnmods.net
+cnmods.org
+cnmooc.org
cnmsl.net
cnmsn.com
cnmsn.net
+cnmstl.net
+cnmtpt.com
+cnnage.comcnnaihuo.comcnnb.comcnnbfdc.comcnncguilin.com
+cnndns.com
+cnnerv.comcnnetsec.comcnneweragx.comcnnfootballclub.com
cnnic.net
+cnnmol.comcnnorip.org
cnnot.com
cnnpz.comcnns.net
cnnuo.comcnnx.net
+cnobol.comcnod.net
+cnoddt.com
cnoic.com
cnoil.comcnolnic.comcnolnic.netcnolnic.orgcnonline.org
+cnookr.com
cnool.net
cnops.xyz
cnosr.comcnoswiki.com
cnoutdoor.comcnovirt.com
cnpaf.netcnpaiwei.comcnpanda.netcnpatent.comcnpc-hy.com
cnpenjing.comcnpereading.com
cnpghouse.com
+cnpgjt.com
+cnphar.netcnpharm.comcnphotos.net
cnpickups.comcnpingpang.com
cnpkm.com
cnplugins.com
+cnpmjs.org
+cnpoli.comcnponer.com
cnpou.comcnpowdernet.comcnpowdertech.comcnpp100.comcnprofit.com
+cnpsec.com
+cnpubg.com
+cnpusi.comcnpv.comcnpx.netcnpython.comcnpythoner.comcnqc.comcnqd.netcnqiang.comcnqichun.com
cnqjw.comcnqr.orgcnquanjing.comcnradio.comcnraksmart.com
cnrancher.com
+cnrceo.comcnrcloudfm.com
cnrdm.com
cnrdn.com
cnreagent.com
cnree.comcnrencai.comcnrepair.comcnrepark.com
cnrft.com
+cnrhwq.com
+cnrj45.comcnrmall.com
cnrmobile.comcnrouter.comcnrunda.comcnrunlin.comcnrv.io
+cns.hk
+cnsaes.org
cnsal.com
cnsav.comcnsb.org
+cnsbjy.com
cnsc8.com
cnsce.net
+cnscee.comcnsciedu.comcnscore.com
cnsdb.comcnsdjxw.com
+cnseay.com
+cnseeq.comcnsesan.com
cnsfk.com
cnshipnet.com
+cnside.comcnsikao.comcnsilkworm.comcnsimeng.comcnsimin.com
+cnsiwu.comcnskyit.com
+cnsnpj.com
+cnsnvc.comcnso.org
cnsoc.org
cnsoe.com
cnsoftbei.comcnsoftnews.comcnsolomo.com
+cnsorl.comcnspeed.comcnsphoto.comcnssssl.comcnstock.comcnsudong.com
cnsug.comcnsun.cc
cnsun.netcnsundin.comcnsuning.com
cnsuv.com
+cnswds.com
cnswy.netcnsyjszy.comcnsynews.comcnsz.org
+cnszxw.comcnszyzz.comcntagore.com
cntaiping.comcntally.com
cntan.netcntangka.com
+cntapp.com
+cnteno.comcntexjob.comcntexnet.comcntheory.comcnthinkers.com
+cntofu.com
cntopgear.com
cntoplead.comcntplus.comcntrades.comcntranslators.comcntries.com
cntronics.comcntslawfirm.com
cntuw.comcntv.com
cntwg.com
+cnu.cccnuninet.netcnur.comcnutcon.com
cnuuu.com
+cnv168.com
cnvcs.comcnvf.comcnvn.net
cnvps.comcnwa.comcnwaking.comcnwansun.comcnwaternews.comcnwb.net
+cnwdsy.com
+cnwear.com
+cnwebe.comcnweblog.com
cnwebshow.comcnweiju.comcnweisou.comcnwenshi.net
+cnwest.com
+cnwgps.com
cnwhc.comcnwhotel.com
cnwindows.comcnwinenews.comcnwnews.com
+cnwsgj.com
cnwtn.com
+cnwuye.com
cnwxw.com
+cnxcjt.com
+cnxclm.com
cnxct.com
cnxds.com
cnxhacker.comcnxiangyan.com
cnxiantao.com
cnxianzai.com
cnxiaobai.comcnxiaoyuan.com
+cnxibu.comcnxieku.com
+cnxile.com
cnxinbiao.comcnxingoplastics.comcnxishui.netcnxk.com
+cnxklm.com
+cnxmxf.com
+cnxnmy.com
cnxos.comcnxuntu.com
cnxyk.com
cnxzm.com
cnyanglao.comcnyings.com
+cnyipu.comcnyixun.comcnyouhao.com
cnypa.orgcnys.comcnyu.comcnyuming.comcnyw.netcnywinfo.com
+cnyydj.comcnzazhi.net
+cnzdfm.com
+cnzdhg.comcnzhanting.comcnzhanzhang.com
cnzhengmu.com
+cnzhhy.comcnzhiyuanhui.com
+cnzhjk.comcnziyun.com
cnzjj.com
+cnzjol.comcnzlapp.com
cnzps.com
+cnzskj.com
+cnzsqh.com
+cnzsyz.comcnzweal.comcnzxsoft.com
+cnzxwh.com
+cnzyao.com
+cnzzla.com
+cnzznn.com
+cnzznz.com
co-effort.comco-farming.comco-inclusion.orgco-mall.netco-trust.com
co188.comco188cdn.comco1in.me
coahr.net
coalcloud.net
+coalcn.com
coalstudy.comcoantec.com
coaoo.com
coatingol.comcobenet.com
+coboak.comcocas.cc
cochemist.com
+cocimg.comcoco413.comcocoachina.comcocodiy.com
cocogoat.workcoconuet.comcocophp.comcocoren.com
cocos.com
cocos.org
cocos2d-x.orgcocos2d.org
cocos2dev.comcocos2dx.net
cocosgame.netcocostudio.org
+cocozq.com
cocss.comcodante.orgcode-abc.comcode-by.orgcode4apk.comcode666.com
+code84.com
codeages.workcodeaha.com
codebaoku.com
+codebe.orgcodebus.netcodebye.com
codechina.netcodecomeon.comcodedefault.com
codedream.xincodeeeee.com
codefine.site
codeforge.com
+codehy.comcodeidc.comcodekissyoung.com
+codekk.comcodelife.cccodemany.comcodemart.com
+codemm.netcodenews.cccodeonce.cccodepku.comcodeplayer.vipcodeplaygames.comcodeprj.comcodepub.com
+coder.workcoder100.com
+coder4.comcoder55.comcoderbee.netcoderclock.comcodercto.com
coderdock.com
coderhuo.techcoderli.comcoderplanets.comcoderprepares.comcodersec.netcodersrc.com
coderxing.com
coderyuan.comcoderzh.comcodes51.comcodesocang.comcodesoft.hkcodesoso.com
codess.cc
+codetc.com
+codewd.comcodeweblog.com
codewenda.com
codewoody.comcodex-watch.comcodezyw.comcoding-newsletter.comcoding-pages.com
coding.me
+coding.netcoding2live.com
codingapp.com
codingdao.comcodingke.comcodinglabs.org
codingsky.com
codingwhy.comcodingyang.comcodm.comcodming.comcodmwest.com
+codoon.com
codooncdn.com
+codrim.netcoelmont.com
coeusssyp.comcofco-capital.comcofco-trust.com
cofco.comcofcofuturesintl.comcofcoko.comcofcosp.com
+cofeed.comcoffee-hdl.comcoffee-script.orgcoffee08.com
coffeecdn.comcoffeeteaimagazine.com
cofly.com
+cofool.com
cofortest.com
+cogcpa.orgcogitosoft.comcogobuy.com
cogonline.com
+cogskl.com
cohim.com
+coilmx.comcoin007.comcoin163.comcoin333.comcoinall.livecoinall.ltdcoincsd.comcoindog.com
coinglass.comcoinnice.comcoins-carnival.comcoinsky.com
+coinvs.comcoinyue.comcojrvjp.com
cokll.comcokutau.com
coladrive.comcolahotpot.com
colasmart.comcoldextrusion.comcoldfunction.com
coldlake1.comcoldlar.comcoli688.com
colinbard.com
colineapp.comcolinker.com
+colipu.comcollege-ing.com
+colobu.comcolor-measure.comcolor365.com
colorbird.comcolorfulclouds.netcolorfulltech.netcolorimeter.comcoloros.comcoloros.net
+colorv.comcolourfulchina.comcolourlife.comcom-hs-hkdy.com
+com.fi
+com.tv
com4loves.comcomac.cc
comake.onlinecombofin.comcombomen.com
+combpm.com
+combss.comcombustibleice.xyzcomdeep.comcomebond.comcomefilm.comcomeken.comcomeorg.comcomercn.com
comestuff.comcomet.cccomeyes.comcomflowy.com
+comiai.comcomic520.comcomicdd.comcomicer.com
comicfans.netcomicst.com
+comicv.comcomicyu.com
+comiis.comcomingchina.com
+comlan.com
+comlbs.com
commchina.netcommedcell.comcommunicatte.com
comocloud.netcompanydns.com
compassedu.hkcompevt.comcompgoo.comcomplexstudio.netcomponentcn.comcomponentschip.comcomprame.comcomputeinit.comcomputer26.com
comra.orgcomsazms.comcomsenz.comcomseoer.comcomsharp.comcomway-mro.com
comweixin.com
comwin-sh.comcon-star.com
con3c.comconan06.comconbagroup.com
conchdate.comconchdesktop.com
+concox.net
+conele.com
conew.comconfluxrpc.comconfuciusinstitute.netcongcong.uscongrongfund.comcongtoukaishi.comcongyicn.comcongzao.comcongzhi.comconhagroup.com
+conoha.vip
+zzsiji.comconshow.comconslive.comconstao.comcontent4ads.comcontentchina.comcontentchina.net
zzshe.comcontrolinai.com
conuo.comconvergemob.comconvertermkv.comconvertlab.comconyedit.com
conyli.cccoo1read.com
+coobar.comcooboys.com
+coocaa.comcoocare.com
+coocox.org
+coodir.comcoofandy.comcoofans.comcooffee.net
cooh5.com
+coohua.comcookcai.comcookicut.comcookie4you.comcookiezhong.comcool-admin.comcool-de.com
cool-play.com
+cool80.comcoolact.net
+coolaf.comcoolapk.comcoolapkmarket.comcoolapkmarket.net
+coolaw.comcoolban.comcoolbcloud.comcoolbuy.com
+coolcar.cccoolccloud.comcoolcode.org
coolcode.techcoolcou.comcooldock.com
+cooldu.comcooleasy.netcoolecho.netcoolecloud.comcoolexe.com
+coolfd.comcoolgamebox.comcoolgua.netcoolkaba.com
+coolkit.cc
+coolkk.net
coolku.cc
+coollf.comcoolling.netcoolmitech.comcoolnull.comcoolook.orgcoolool.comcoolpad.com
coolpad.storecoolping.com
+coolqi.com
+coolsc.netcoolsdream.com
coolshark.comcoolsite.vipcoolsite360.comcoolsphoto.com
+cooluc.comcoolwarmsy.comcoolwei.comcoolxcloud.com
coolxigua.comcoolyun.comcoolzcloud.comcoomarts.com
+coomix.netcoomodel.comcoonmall.comcoonote.com
coooolfan.com
coooz.comcoophone.comcoorain.net
+cootek.comcootekos.comcootekservice.com
+coovee.com
+coovee.net
+coowor.com
+cooyun.com
+copcsc.orgcopotile.comcopyedu.comcopyfuture.comcopyswisswatches.comcopythelink.comcopywatchstyle.com
cor-games.com
+corari.comcorebai.comcoreesports.netcorehalo.comcorlercar888.comcorp-email.comcorpautohome.comcorpease.netcorpize.comcorpring.com
+coryes.comcos-show.com
+cos126.comcosbuluo.comcoschat.com
cosco.com
+coscon.comcoscoshipping.com
+cosedm.com
cosen.netcosfund.com
coshelper.com
+coship.comcosinedu.comcosineg.com
+cosize.comcoslinic.com
cosmoplat.com
+cosoar.com
cosofteck.comcosplay8.com
cosplayla.comcosyjoy.comcosz.comcotticoffee.comcotv.tv
+coubei.comcounect.com
couns.comcouplefish.comcouponover.infocouqiao.netcourage-magnet.comcoursegraph.comcousz-gd.com
+covcec.comcoverinteriores.comcovernim.comcoverweb.cccovinda.com
covtv.com
cowarobot.com
cowcs.comcowealth.comcowellhealth.comcowinfo.comcowlevel.net
cowrycare.comcowtransfer.comcoyotebio-lab.com
coyuk.com
+coyuns.netcoz9uiesr5zv6.comcozdyez2ap.comcp-keji.com
+cp127w.com
cp365.org
+cpajia.com
cpakg.com
cpass.com
cpbao.comcpcccac.com
cpcni.netcpcphone.comcpcw.com
cpdad.comcpdaily.com
cpdhd.com
cpdyj.com
cpecc.netcpeccgx.net
cpeol.net
+cpepgc.com
+cphfgg.com
+cphoto.net
+cphoto.org
+cpiano.comcpiaoju.comcpiccdn.com
cpicfunds.com
cpihualai.com
+cpitsh.org
+cpjltx.comcpm1000.com
+cpmiao.netcpo.xyz
cpo2o.com
+cpolar.com
cpolar.iocpolive.com
cpooo.com
+cpoqn.sitecpp-prog.com
+cpp114.com
cpp32.comcppblog.comcppc123.com
+cppcns.comcppdebug.comcppfoto.comcpph.comcppinfo.com
+cpplay.com
cpppc.org
cpppf.org
cppwh.com
cpqek.comcps1688.com
+cps800.comcpsbeijing.orgcpse.comcpsenglish.com
cpt-world.com
+cpt123.com
cptae.comcptn.tv
+cpu114.com
+cpu668.com
+cpubbs.com
cpudj.com
cpury.com
cpuxn.comcpvatgkx.com
+cpvjob.com
cpwlx.comcpython.orgcq-city.com
+cq-ct.tech
cq-office.netcq-rongjia.com
+cq-wnl.comcq315house.comcq3a.com
+cq5135.comcq6.comcq69.com
+cq6969.comcq8.com
cqaaa.com
cqaso.com
cqbafumen.comcqbdfeng.comcqbm2007.comcqbnedu.com
+cqbnrc.com
+cqbntv.com
cqbys.com
+cqc.so
+cqcaee.com
+cqcatr.comcqcb.comcqcbank.com
cqccn.com
cqcdc.org
cqcfe.comcqcitymedia.com
+cqcjnj.comcqcklib.com
+cqcmxy.com
+cqcoal.comcqcp.net
+cqcqcq.com
+cqcsic.comcqcy.comcqcyyjy.com
cqdai.comcqdailynews.com
+cqddzx.com
+cqdent.comcqdingqi.com
cqdingyan.comcqdj.cc
+cqdswx.comcqdting.com
cqdzw.com
+cqe.cc
cqeca.org
cqedo.com
+cqemme.comcqenergy.com
+cqfire.com
+cqfjly.com
cqfus.comcqfygzfw.comcqgc.comcqgewerv.com
+cqggzy.comcqgh.org
+cqglcj.com
+cqgmfw.com
+cqgnhg.comcqgz.com
cqh2o.comcqhansa.com
cqhaofeng.com
+cqhbzh.com
+cqhcbk.comcqhimalayanky.comcqhkcdns.comcqhpoldi.com
cqhwr.com
+cqhxgf.com
cqhyd.comcqhydraulic.com
+cqhyky.com
+cqhyrd.comcqhz510.comcqindex.comcqinstinct.com
cqioe.comcqiot.cc
cqipa.comcqit.com
+cqivip.com
cqjat.com
+cqjbrc.com
cqjet.com
+cqjiaz.comcqjj.netcqjjnet.com
+cqjltx.com
cqjnw.org
cqjob.comcqjy.com
cqjyhuida.com
cqjyn.comcqkdtui1.com
cqkeb.comcqkexun.com
cqkfb.com
+cqkjwx.comcqkqinfo.com
cqkundian.comcqkx.comcqkxhospital.com
+cqkytq.com
+cqleba.comcqlinrui.comcqliving.comcqlp.comcqlyckj.com
+cqmama.netcqmanfeite.com
cqmas.com
cqmcu.com
cqminghua.com
+cqmmgo.comcqmw.comcqnc.cccqncnews.com
+cqnews.net
cqnhn.comcqnkhz4j8nmhqp.com
cqpbx.comcqph.com
cqpinjian.com
cqpix.com
+cqpost.comcqqgsafe.comcqqigao.com
+cqqiyi.com
cqqnb.netcqqp.com
+cqqsyy.com
+cqqwds.com
cqqyn.comcqrc.net
cqrcb.comcqrcdsc.com
+cqrdcm.com
+cqrfym.comcqrm.com
cqrmb.comcqsckj02.com
+cqscmy.netcqshenou.comcqshipping.com
+cqslim.com
+cqslim.net
+cqslsc.com
+cqsmao.com
cqsms.net
+cqsoft.orgcqswxcy.comcqsxedu.comcqsztech.com
+cqtally.cocqtally.comcqtanlaoda.comcqtaotan.com
cqtea.com
+cqtits.com
+cqtnfs.com
cqtns.com
cqtransit.comcqtrend.comcqtresearch.com
+cqtrvl.comcqttech.comcqtyanglao.comcqtynpx.com
cquae.comcquc.net
cqudp.com
cqvip.com
cqvip.vip
+cqw.cc
+cqwbdq.comcqwenbo.com
cqwin.com
+cqwlzz.comcqwulong.net
+cqwzwl.com
+cqxayl.com
cqxcx.netcqxdfpr.comcqxh120.comcqxiehe.com
cqxingyun.comcqxinhua.com
cqxjr.net
+cqxpxt.com
cqxqz.com
+cqxsxt.com
+cqxyfl.com
+cqybhr.comcqyc.netcqyestar.com
+cqyfsk.com
+cqyhjy.com
+cqyhpx.com
cqyingang.com
cqyouloft.comcqyu.comcqyuzhoujx.comcqyznews.comcqyzqsy.comcqzcschool.com
cqzct.comcqzhanguan.comcqzhihaolaw.comcqzhongxingyuan.comcqzk.net
cqzls.com
+cqzoan.com
cqzq6.com
cqzww.comcqzyktqxxh.com
cqzyx.netcqzz.netcr-expo.comcr-power.com
cr11gcsgd.comcr11gee.com
+cr11ql.com
cr173.com
cr175.com
cr18g.com
+cr19gj.com
+cr6868.com
crabchina.com
craer.comcraftcontact.comcrandom.comcrane-china.cc
+crash.workcravatar.com
crazepony.comcrazyenglish.orgcrazyflasher.com
crazyming.comcrazymoneys.comcrazyones.worldcrazyphper.comcrazypm.comcrazyrtc.com
crazywong.comcrbeverage.com
+zzsgjj.com
+crc.hk
crc81.comcrcb966888.com
+crcgas.comcrcrfsp.com
crcsz.comcrct.com
crdyf.comcre.net
cread.comcreatby.comcreatecdigital.comcreatewf.comcreati5.comcreationventure.com
creavidia.com
crec4.comcrec4mc.comcrecg-jt.com
crecg.comcrecohe.com
crecu.comcredibleglass.comcredit-cras.com
credit100.com
credit315.orgcreditcn.comcredithc.comcreditsailing.comcreditzuji.comcreo-support.comcrepcrep.comcreplus.net
+crestv.com
+crewcn.comcrfchina.com
+crfsdi.comcrgecent.com
+crggcn.com
+crgkxl.comcrgy.comcri-grandera.com
+cri-on.com
criankara.com
criarabic.com
criberlin.comcribsas.comcric.comcric2009.comcricbigdata.com
crieasyfm.comcrienglish.comcriezfm.com
+crifst.com
crilondon.comcrimoon.net
crimoscow.comcrinductance.comcrinihaochina.com
+cririo.comcriseoul.comcrisprdx.comcrispstata.com
crisydney.comcritokyo.comcriwashington.com
crjfw.comzzsggzy.comzzsf.comcrlf0710.comcrlg.com
+crm.cccrm1001.com
crmch.comcrmclick.com
crmeb.com
crmeb.net
crmip.com
+crnews.netcrodigy.comcrodigynat.comcross-border-public.comcrossingstarstudio.comcrossmo.comcrosswaycn.comcrov.comcrown-chain.comcrowndth.com
+crowya.com
+crpaas.com
crpcg.com
crrcgc.cc
crrjz.com
+crs811.comcrsc.cc
crsky.comcrsn168.com
+crsyjt.comcruelcoding.comcrukings.comcrvc.com
crvic.orgcrx.pluscrx4.com
cry33.comcrym.cc
crystalcg.comcrystaledu.comcrystalhughes.comcryuantafund.com
+cs-air.com
+cs-cjl.com
+cs-pos.comcs-show.comcs-video.com
+cs0799.com
cs090.comcs12333.comcs27.comcs2c.com
cs2ccloud.comcs30.net
cs528.comcs53.com
+csadec.com
csair.comcsairdutyfree.comcsairholiday.com
csairshop.com
csapa.org
+csaspx.comcsau.com
+csc108.com
csc86.com
cscac.netcscan.co
+cscatv.com
cscdf.org
cscec.comcscec1b.netcscecst.comcsci.hk
+cscmgg.comcsct-china.com
csdc.info
csdeshang.com
csdewater.comcsdh.com
+csdiy.wikicsdn.comcsdn.netcsdnxiazai.xyz
+csdyjs.net
csdyx.comcse7.cccsea767.comcsebank.com
csemc.comcserveriip.comcserwen.com
cseve.com
+csflgg.com
csfounder.com
+csftyy.com
+csgfjc.com
+csgocn.netcsgokai.com
csgpc.org
+csgsxw.com
+csguan.comcsgwexpo.com
+csgxyl.comcshaodu.com
csharpkit.com
cshcp.comcshijian.com
+cshixi.com
+cshnkj.com
cshualian.com
cshufanyi.com
+cshxdc.com
+cshypg.com
+cshyqx.comcsic-711.comcsic-ljtech.comcsic612.comcsic6801.com
+csic76.comcsicmakers.com
csiea.net
csilp.com
csjcs.comcsjdeveloper.comcsjplatform.com
+csjsdz.com
csjvision.comcsjwang.comcskaoyan.com
+cskefu.comcskx.comcslfans.com
cslou.com
+cslyrc.comcsmadik.com
+csmall.com
+csmama.net
csmar.com
+csmbcx.comcsmc-cloud.comcsmedlab.com
+csmjzs.comcsmscon.comcsnbgsh.com
csnhw.com
cspbj.com
cspda.netcspengyuan.com
+cspiii.comcspplaza.com
cspro.org
+cspruc.comcsqc.cccsqnews.com
+csqqym.com
csqsg.comcsqtq3v.sbscsrcare.comcsrcbank.com
+csrcsc.com
csrda.com
csres.com
csrgm.comcsrlzyw.com
+css-js.com
+css3er.comcss6.com
css88.com
+cssaaa.com
cssbe.com
+cssbkj.comcsscmall.comcsseplastic.comcssf.comcssf.net
cssforest.orgcssg-ahi.comcsshjdxh.comcsshuobo.comcssj.fun
csslcloud.netcssmagic.netcssmoban.com
+cssmxx.com
cssqt.comcsstoday.net
cssyq.comcssyzxx.comcsszone.net
cstccloud.orgcstcloud.net
cstcq.com
cstea.org
+cstech.ltdcsteelnews.comcstianye.comcstimer.netcsto.com
+cstong.netcstriker1407.info
+csuboy.com
+csuedu.comcsundec.comcsur.funcsvclub.orgcsvw.com
+cswamp.comcsweigou.comcsweiwei.comcswf888.comcswqvzh.comcsxbank.com
+csxcdj.com
csxdf.comcsxingfutemple.orgcsxingya.com
csxinshun.comcsxinxu.comcsxr888.com
+csxsjc.comcsxtedu.com
csxww.com
csy17.comcsyestar.comcsyrtcs.com
csytv.comcsyunkj.comcsyuwei.comcsyuyism.comcszb556.comcszhonghui.com
cszit.comcszn120.comcszq.net
+cszsjy.comcszsths.comcszx.com
+cszykt.com
+cszzjc.com
+ct-cdm.comct-emall.comct-laser.com
ct108.comct52.com
ctaca.com
ctags.netctalive.com
ctans.com
+ctaoci.com
+ctaweb.org
ctb50.com
ctbjia888.com
+ctbpsp.com
ctbyq.netctc.lol
+ctc100.com
ctcdn.com
ctcdn.net
ctcdn.orgctcefive.com
ctcmo.com
ctcnn.com
+ctcnpa.com
+ctcsci.com
+ctcwri.org
ctcwz.com
ctdcn.com
+ctdisk.com
ctdns.net
ctdns.org
ctdsb.com
ctdsb.net
+ctdzsk.com
cteaw.comctecdcs.comctech-alpha.comctex.org
+ctexcel.cactexcel.com
zzsey.com
+ctexcel.fr
+ctexcel.us
+ctfhub.com
+ctfile.com
+ctfile.netctflife.comctfmall.comctfo.comctftools.com
+ctfund.com
+ctgapp.comctghealthy.com
ctghr.com
+ctghro.com
+cthcdn.com
+cthcdn.net
+cthhmu.comcthuwork.comcthuwork.netcthy.comcti-cert.com
+ctibet.comctiforum.com
ctiku.com
ctils.comctimall.com
ctime.com
+ctiot.infoctipckcx.com
ctjin.comctjituan.comctjsoft.comctkq.com
+ctlcdn.com
+ctlcdn.net
ctlife.tv
+ctmcdn.com
+ctmcdn.net
ctmon.comctn1986.com
ctnma.comctnyypt.comctnz.net
+ctocio.comctoclub.comctoutiao.com
ctqcw.comctracer.net
ctrcw.netctrip-ttd.hk
zzs5.infozzs5.comzzrseng.com
ctrip.com
zzrbl.comctrip.myctrip.sgctripbiz.comctripbuy.hk
ctripgslb.comctripins.comctripqa.com
ctripteam.com
+ctrlqq.comctryhan.com
ctsbw.com
ctsec.com
ctsgx.com
ctsho.comctsitravel.com
+ctsscs.com
ctssr.com
ctsto.com
ctszh.com
cttip.orgcttq.com
cttsd.comcttv.co
ctuaa.comctvpost.com
ctvwx.comctwx.net
ctwxc.com
+ctxcdn.com
+ctxcdn.net
+ctxcpa.comcty9.com
+ctycdn.com
+ctycdn.net
+ctycdn.org
ctykh.com
ctyny.comctyo.comctyuncdn.comctyuncdn.net
+ctzcdn.com
+ctzcdn.netctzg.com
+cu-air.comcu5gaia.comcuaa.netcuahmap.comcuav.netcubavcenter.com
cubaverde.com
+cubead.comcubejoy.comcubie.cc
+cubing.com
cubox.pro
cucdc.comcuchost.com
+cucldk.com
cuctv.com
+cueber.comcuebzzy.com
+cuekit.com
+cuelog.com
+cufeyk.comcug2313.com
+cugala.comcugstore.comcui1000.comcuihuan.net
+cuijia.net
cuijiahua.comcuiniaoedu.com
cuiniuhui.comcuiqingcai.comcuiru123.comcuirushi.com
cuiuc.comcuiv.comcuiweiju.cccuiweijuxing.comcuixingreen.com
cuixueshe.comcuiyongjian.comcuiyouxuan.com
cuizhi.mecujs.comcuketest.comcul-studies.comculaiwan.comculdata.comcumboly.com
cumen.funcumtenn.comcumulon.com
cunan.com
cuncc.comcuncunle.com
cuncx.comcunfang.comcunguer.com
+cunnar.comcunyoulu.comcunzhen.vip
cunzj.comcuobiezi.net
cuonc.com
+cuopen.net
cuour-edu.com
cuour.com
cuour.orgcupdapp.comcupdata.comcupddns.comcupddns.net
+cupdns.com
+cupfox.comcupfox.lovecupfoxx.com
+cupinn.comcuplayer.com
+cupmcn.com
cuqnptrj.shop
curlc.comcurtisasia.com
+cusdvs.com
+cusdvs.netcusteel.comcustomsapp.com
cut35.com
+cuteng.comcutepet-hk.comcutercounter.comcutieshop153.comcutowallpaper.comcutv.com
cuuhn.comcuvxrfwu.sbs
+cuz.cx
cuzz.sitecvammby.comcvb1.com
cvc898cvc.comcvchina.infocvchome.com
cvcri.com
cvftc.net
+cvicse.comcvicseks.comcvillazc.com
+cvmart.net
cvn-china.com
cvoit.com
+cvonet.com
cvoon.comcvpyqih.com
cvqrq.comcvrobot.net
+cvtapi.comcvte.com
cvtoutiao.com
+cvtvcn.comcwan.com
+cwbpsi.com
cwddd.com
cwdma.orgcwebgame.com
cwems.com
+cwestc.comcwgarnet.comcwitxoakk98d.com
cwiyq.comcwlchina.comcwliupaotea.com
cwmcs.comcwouzcmp.comcwq.comcwtc.com
+cwtele.com
cwxzx.com
cwyan.comcwz12123.comcx-a.comcx-smarthome.com
cx001.com
cx221.com
cx223.com
cx225.com
cx226.com
cx228.com
cx312.com
cx368.com
cx580.com
cx930.net
cxacg.comcxas.com
+cxbiji.com
cxbio.com
cxbsx.comcxbz958.com
+cxc233.com
cxcas.comcxcc.me
+cxcyds.comcxd-auto.com
cxdm-tech.comcxdtv168.comcxdz2000.comcxf1999.com
+cxfccs.com
+cxfuwu.com
+cxgame.netcxgaugrv.com
+cxgj56.com
+cxglmc.com
cxh99.com
cxhan.com
+cxhans.comcxhl365.netcxhr.com
cximg.com
cxisc.com
cxjbh.com
cxjrh.comcxjt.net
+cxkfwn.com
+cxkjjy.com
+cxlyzj.com
cxmld.com
cxmoe.comcxmt.com
cxmtc.netcxnykjy.com
cxory.com
cxqex.comcxql.netcxrczpw.comcxsdszx.com
+cxstgc.com
+cxsw3d.comcxta.comcxthhhhh.com
cxtld.com
+cxtuku.com
+cxumol.comcxw.comcxwl.com
cxwyf.net
cxxjs.com
+cxy521.com
cxy61.comcxy7.comcxybattery.com
+cxycsx.vip
cxydh.xyz
cxydw.net
+cxyfjy.com
+cxylfc.com
cxylx.com
cxyob.com
cxytiandi.com
+cxyule.com
cxyxiaowu.com
+cxyxwl.com
+cxyyls.com
cxyym.comcxz.com
cxz3d.comcxzg.comcxzw.com
+cxzyjt.com
+cy-cdn.com
cy-credit.comcy-email.com
+cy-isp.com
+cy-isp.net
cy-jm.com
+cy-mmm.com
+cy.com
+cy2009.com
cy365.comcy52.com
cy580.comcy88.com
cy887.com
+cyagen.comcyanhillcapital.comcyb-bot.com
+cyb800.com
cybaojian.comcybermedicine2000.comcyberv.shopcyberway-china.net
+cybofa.com
cybtc.com
+cybtc.infocyc2018.xyzcychaiqian.comcyclingchina.netcyclone-robotics.comcyclonemoto.com
+cycnet.com
cycoo.comcyctapp.comcyd5918.comcydiakk.com
cydow.com
cydp5.com
cyedu.orgcyegushi.com
+cyfeng.comcyfengchao.comcyflscb.com
cygse.comcyhm.com
+cyhone.comcyht168.com
+cyhx98.com
+cyicts.comcyie.com
+cyikao.comcyimking.comcyjcloud.com
+cyjhfm.comcyjiasu.com
cyjjw.net
+cyjnsy.com
cyjsh.com
+cyjysb.com
+cyjzzd.com
cyk-cable.com
+cykjgx.comcyktqdrp.comcylaowu.comcylink.bond
+cylong.com
+cym666.net
+cymuju.com
cynee.net
+cynnlx.comcynosurechina.comcynovan.comcynthianewman.comcyol.comcyol.netcyou-inc.comcyoupic.comcypatent.comcyphouse.comcypmedia.comcypresstel.com
cyprestar.comcyqyfyxh.com
+cyqyzx.com
+cyr168.com
cyruc.com
cys.worldcysq.comcystool.comcysy-cn.com
+cyt369.comcytcard.comcyts.com
+cytsdl.com
+cytsls.com
cytstibet.com
+cytuig.comcyuandao.com
+cyudun.net
cyuew.comcyuntech.com
+cyuyin.com
+cywetc.comcywl.org
+cywlxy.com
+cywyjj.comcyxigua.comcyxshop.com
cyxys.com
cyy18.com
+cyycdn.comcyypscl.comcyyself.name
+cyysjm.com
+cyyvip.comcyyz.orgcyzm.net
+cyzs97.com
+cyzywl.com
+cyzzzz.comcz-toshiba.com
cz-yk.com
cz128.comcz88.netcz89.com
+czb365.comczbanbantong.com
+czbank.comczbanker.com
czbcpaint.comczbq.net
+czbsfx.com
czbtv.com
+czbx18.comczcarbon.com
czcdt.comczchuanlin.com
+czchyz.com
czcid.com
+czclzc.com
+czcqly.comczctech.comczdaiwei.comczddbearing.comczdingming.com
czdlj.com
+czdrbz.comczech-visacenter.com
czedu.com
czepb.com
+czfcdp.com
czfcw.com
czfdc.comczfesco-mg.com
+czgcsb.com
+czggsj.com
czgjj.com
czgjj.netczgmjsj.com
czgongzuo.com
+czgtjt.com
czhaobiao.com
czhjs.com
+czhmjx.com
+czhtff.comczhuayuansuye.comczie.net
czifi.org
czitc.com
+czjake.com
+czjdgz.com
czjdu.comczjiangteng.com
czjilijia.com
czjju.com
+czjlsb.com
+czjoel.com
czjpw.com
czjsy.com
czjvs.icu
+czjyzx.net
+czkbdq.net
+czkctl.com
czkingdee.comczlchina.netczlingke.com
+czlkgy.com
+czlskj.com
+czlxgc.netczmc.comczmh.comcznengshuo.comcznewcom.comczongyi.com
+czopen.com
+czpbxc.com
+czpoly.comczpv.net
+czqqkj.com
czrjh.com
+czrmyy.comczsafjx.comczsbtjx.comczsenjie.com
czsfy.com
+czsldy.com
czsrc.comczsrmyy.com
+czswdx.com
czsxy.comcztaojiu.com
+cztour.com
+cztrjs.comcztv.comcztv.tv
cztvcloud.comczur.comczvv.net
+czwgpt.com
+czwsg5.comczwxbyq.com
+czwxtz.com
+czxixi.com
+czxsss.comczxy.com
+czyabo.com
+czybjz.com
+czyfxd.comczyl.ccczyongfeng.comczyoudao.com
+czypcb.comczys.art
+czyxba.com
czzqp.com
czzsw.comczzy-edu.comczzzbwg.comd-controls.comd-ctrip.com
+d-d.designd-heaven.com
+d-long.comd-techs.comd.cgd.designd00.net
d03jd.com
d05un7v1p.xyz
+d0igi8.xyzd10a.comd11a.comd163.net
+d17.ccd1cm.com
d1com.comd1dengju.comd1ev.comd1ld.comd1lx.com
+d1miao.comd1mm.com
d1net.comd1sm.netd1xf.netd1xn.com
d1xny.comd1xz.net
+d1y.ccd22a.com
+d2core.com
+d2film.comd2kdi2ss.com
+d2scdn.comd2shost.comd2ty.comd2ziran.comd37hw752kt.comd3c-v2-1sw.bizd3ch.comd3cn.net
+d3dweb.comd3eurostreet.comd3f.comd3games.comd3iz9md.com
d3skg.comd3tt.com
+d3zone.com
d4000.com
zzqzz.comd5h.netd5power.comd5render.com
d65d6.comd777.com
d7788.comd7vg.comd7w.netd8th.com
+d99net.netd9d1ix3y.xyzd9j8.comd9ym.comda-qian.comda-quan.net
zzqxs.comda3h.comda88.netdaanbar.comdaanche.com
daanjiexi.com
+daanwo.comdaba.comdabaicai.orgdabaidaojia.comdabaise.com
dabangong.comdabangsoft.comdabao123.comdabeiduo.comdabiaogeziyuan.comdabiaojituan.comdabieshu.com
+dabigu.xyzdabin69.com
dabingseo.com
dabjy.comdaboluo.net
dabpy.com
+dabusi.com
dacai.com
+dacang.ltddacankao.comdacankao.netdacaomei.com
daccc.com
daccf.com
dacfj.comdachanet.com
+dachao.comdachaokn.com
dachengge.comdachenglaw.comdachengnet.com
dachengzi.netdachuanchina.comdachuizichan.com
dachun.tvdacongmingdata.comdadaabc.comdadagame.comdadagem.xyz
dadajiasu.comdadajuan.comdadaojiayuan.com
dadaqipai.comdadayou.comdadclab.com
daddymami.netdadetong.comdadianstudio.comdadicinema.com
dadighost.comdadikid.netdadiwang.com
dadiyimao.com
dadou.comdadunet.comdaduoduo.comdaduofa.comdadushixiecheng.comdaerzhu.com
+daf-rs.com
+dafaji.comdafang24.comdafangtour.netdafangya.comdafanshu.com
+dafork.comdafu-zipper.comdagangcheng.com
dagao.netdagongcredit.com
dagongnet.com
+daguan.comdagufood.comdaguzhe.comdahainan.com
dahaiyang.comdahan-sports.comdahanghaiol.com
dahangsky.comdahangzhou.comdahanwl.comdahanyu.com
dahaoexpo.comdaheapp.comdahecube.com
dahei.comdaheng-image.comdaheng-imaging.comdaheng-imavision.comdahengit.comdahepiao.comdahongba.net
dahongtec.comdahongtool.com
dahouduan.comdahua-ferrules.comdahuaab.com
dahuabloc.com
dahuaddns.com
dahuagong.comdahualan.comdahuap2p.comdahuap2pcloud.com
dahuatech.com
dahuawang.com
+dahuhg.com
dahuifuwu.com
+dahulu.com
dahuodong.com
+dai-xi.com
+dai361.com
daibi.comdaichuqu.com
daicuo.cc
+daicuo.netdaidaicp.comdaidaipu.com
daidongxi.com
+daief.tech
+daigou.comdaiguaji.comdaihaobiao.com
+daijun.comdaikandq.comdaikela.comdaikuan.comdaikuanlilv.comdaili321.comdailianqun.comdailiantong.com
dailianzj.comdailiba.comdailijizhang.ccdailiweishang.comdailugou.comdailygn.comdailyqd.com
daimafans.comdaimajiayuan.comdaimami.comdaimasucai.com
daimawang.com
daimg.comdainiter.comdaishangqian.com
+daishu.comdaishujiankang.comdaishutijian.comdaisyfin.com
daita.reddaittotrade.com
daivc.comdaiwoqu.comdaixiaji.netdaixiaobao.com
daixiaomi.comdaixiaorui.com
daixiehyl.com
daiyanbao.comdaiyanmama.comdaiyinzi.comdaizitouxiang.comdajiabao.com
dajiachou.comdajiadu8.comdajiaka.comdajialaikan.comdajialawyer.comdajianet.comdajiang365.com
dajiangcp.comdajiangsai.orgdajiangtai.com
dajianhui.comdajianyouju.comdajiashequ.com
dajiashuo.com
dajiazhao.comdajiazhongyi.com
dajibacdn.comdajibapass.com
dajie.comdajieimg.comdajinan.comdajixie.com
+dajjqw.com
dajke.com
dajuntech.comdajuyuan.netdaka.net
+dakage.com
+dakahr.comdakamao8.com
+dakao8.com
+dakao8.netdakapath.comdakaruanwen.comdakejie.com
+dakele.com
+dalaba.comdalanmei.comdalanyouxi.com
dalao.netdalaosz.comdalelingtea.comdalianair-china.com
dalianiso.comdalianshengmi.com
daliansky.netdaliantyre.comdalianxianting.comdaliaolaser.comdaliapp.net
+daliha.comdalipan.comdaliuren.vipdalongkeji.com
dalongyun.comdalu.net
+daluma.com
daluo.comdaluwang.net
+dalvhe.comdalvlaw.com
damai.comdamaicheng.comdamddos.comdameisheng.comdameiweb.com
+dameng.comdamiercapital.com
damingweb.com
damiw.com
+damixs.bizdamndigital.comdamostar.com
+damotu.comdamoyang.com
damuchong.comdamuite.com
+dan-my.comdan-sing.com
+dan665.comdan8gui.comdanaicha.com
+danale.comdanaqsy.comdanbagui.com
danbaodan.comdance365.comdancerspointewinchester.com
dancf.comdancihu.com
dancingcg.comdandaiqh.com
dandan818.comdandang.orgdandanjiang.tv
dandanman.comdandanplay.comdandanplayer.comdandantang.comdandanvoice.comdandanz.com
dandanzan.com
dandanzkw.comdanding.fundandinghuayi.comdandongbank.com
+dandou.com
danews.cc
dang-jian.com
dang3.comdangaocn.comdangaoss.comdangbei.comdangbei.netdangbeiprojector.comdangbiao.comdangcdn.comdangdang.com
+dangdj.comdangerlong.shopdangguai.comdanghongyun.comdanghuan.comdangjian.comdangjianwang.comdangjinguiping.com
+dangpu.comdangtianle.comdangwan.comdangyuncheng.comdangzhi.comdangzhi.netdangzhu.netdanhuaer.comdanhuangyun.com
+daniao.orgdaniate.com
danilelxp.comdaningcenter.comdaningdaning.com
daniopack.comdaniuit.comdaniujiaoyu.comdaniushiwan.comdaniuwangxiao.comdanji100.com
+danji6.com
+danji8.com
+danji9.comdanjiang.comdanjuanapp.comdanjuanfunds.comdanjuantaxi.comdanjuantec.com
danke.comdankegongyu.comdankexiaoyuan.com
+danlan.orgdanlanlove.comdanlingfuyou.comdanlirencomedy.com
danlu.netdanmaku.live
+danmaku.tvdanmakupie.com
danmei.la
+danmei.org
+danmei.win
danmi.comdanming-ic.com
danmo.comdanmofun.com
danmoshui.com
danmu.comdanotest.com
+danpin.com
danqi.comdansegitmeni.com
+danteng.me
dantengge.orgdantuvc.com
+danxia.com
+danxin.netdanyang.comdanzhaowang.com
+dao123.com
dao42.com
dao50.com
daoapp.io
daoapp.medaocloud.iodaocloudapp.com
+daodao.comdaodaojizhang.comdaodaozz.comdaodian100.com
daodianfu.com
+daodoc.comdaododo.com
daoduoduo.com
daofengdj.com
+daoguo.comdaohang198.comdaohang4.com
daohang88.com
daohangtx.comdaohu123.com
+daohui.netdaohuo.shopdaoisms.orgdaojia-inc.com
+daojia.comdaojiale.comdaojialianmeng.comdaojishiqi.comdaokers.comdaokeyuedu.com
daokoudai.com
daokouren.org
daomengad.comdaomengg.comdaomicfo.comdaonong.com
+daopub.com
+daoqin.net
daoran.tvdaoru.indaoruimi.com
daoscript.orgdaoshui.com
+daotin.comdaotudashi.comdaovoice.iodaoxiangcun.comdaoxila.comdaoxila.net
+daoyig.com
+daoyu8.comdaozhao.comdapaizixun.com
dapan.comdapei.ccdapenti.comdapingshidai.comdapiniu.comdappdiscover.comdapustor.comdaqi.comdaqianduan.comdaqiao.hostdaqihui.comdaqing8080.com
+daqiso.com
daqizhong.comdaqsoft.com
+daquan.comdarczpw.comdarehui.comdarensky.comdarevip.comdarewayhealth.com
+darkmi.comdarknight.gamesdarkzonemu.com
+darmao.comdarongcheng.com
darryring.com
dartchina.com
+dartou.comdartrun.net
+daruan.comdarwinlearns.com
+dasctf.comdasdg.technologydashanghaizhuce.comdashangu.com
dashen520.comdashen56.com
dashengji.comdashenglaile.comdashengpan.comdashengzuji.comdashenquan.comdashentv.comdashgame.com
dashigame.comdashikou.com
dashitech.comdashiyou.comdashoucloud.com
dashubaba.comdashuju123.com
dasong108.comdasoujia.com
dassm.com
+dasung.comdasungtech.com
+dat881.comdata380.com
+data5u.comdata777.comdata985.comdatacanvas.com
datacname.comdatadragon.netdataesb.comdataeye.comdatafocus.aidatafun.vip
datag.vip
datagear.tech
datagrand.comdatahubtrack.comdatahuif.com
+dataie.comdatalearner.com
+datang.com
+datang.net
datangnxp.comdatangweishi.comdatangyouxi-inc.comdatangyouxia.comdatangyouxib.comdatangyouxic.comdatangyouxie.com
datangzww.comdataodu.comdataoke.com
datarelab.com
+datarj.com
+zzqudu.comdatasheet.hkdatasheet5.comdatasoldier.netdatastoragesummit.comdatatang.comdatathinking.comdatatist.comdatatocn.comdataxcrm.comdatayes.com
+datazt.comdatebao.com
+datepj.com
datesdata.comdatia-inspect.com
datianmen.comdatingmryuck.comzzquan9.comdatongtaxi.com
datuc.com
dav01.comdavdian.comdavid-packaging.comdavidlovezoe.clubdavincimotor.comdawaner.netdawangling.com
daweisoft.comdaweiyishu.comdawenbo.com
dawenming.comdawensk.comdawenxue.netdawenxue.orgdawnarc.comdawndiy.com
+dawnjs.com
+dawnlab.medawnled.netdawntech.netdawuhanapp.com
+dawuyu.comdawx.comdawx.net
+daxfix.com
daxia.comdaxianghuyu.comdaxianglingke.comdaxianglink.comdaxiangqun.netdaxianzuji.com
+daxicn.com
+daxiit.comdaxiongxueyixue.comdaxuecidian.comdaxuecn.comdaxueit.comdaxuepc.comdaxueshi.comdaxuesoutijiang.comdaxuesushe.com
daxuewang.com
dayaguqin.comdayainfo.comdayangliangyou.comdayangmotorcycle.comdayangmuye.comdayangshop.comdayanmei.comdayanzai.me
dayapress.com
+dayayu.comdayday.plus
daydaymap.comdaydayup123.com
daydx.comdaye.hk
dayee.com
dayesmart.com
dayezheng.com
+dayhao.com
dayhr.com
dayichang.comdayifund.orgdayihangqing.com
+dayila.net
+dayima.com
dayin.comdayin.la
+dayin8.comdayinhu.comdayinjiqudong.comdayinmao.comdayinpai.comdayinpiano.comdayong.name
dayoo.com
+dayrui.com
+daysou.com
dayss.com
daytokens.comdayu-group.comdayu-valve.comdayu.com
dayu.workdayuansouti.comdayucdn.com
+dayue8.comdayugame.netdayugslb.comdayukaoshi.comdayukeji.comdayuntongzhou.com
dayup.org
dayustudy.com
+dayuzy.com
+daz520.comdazahui123.com
dazhan123.comdazhangfang.comdazhangqiu.com
+dazhe5.comdazheda.comdazhenzimiao.comdazhewa.comdazhistudy.comdazhong.comdazhongbanben.com
dazhonghr.comdazhongkanche.com
dazhoumzj.comdazhoushan.comdazhouwater.com
dazhu1988.comdazhuangwang.comdazhuangyan.comdazhuanlan.com
+dazibo.comdazidazi.comdazijia.comdazoread.com
+dazpin.comdaztoutiao.com
dazui.comdazuichazi.comdb-cache.com db.ci
db162.comdb9w.comdb9x.com
dbank.comdbankcdn.comdbankcloud.asiadbankcloud.com
dbankcloud.eu
dbankcloud.rudbankedge.asia
dbankedge.netdbanote.com
dbbqb.comdbc2000.net
dbcdh.com
dbcsq.com
+dbcxz1.net
dbdna.com
+dbgeek.org
+dbh123.net
dbhhq.com
dbkan.comdbkuaizi.com
dblgf.com
dbljj.com
+dbm-sh.comdbmailserver.com
dbmaiyan7.com
+dbmall.comdbmeinv.com
dbnuo.comdbqf.xyz
dbqgg.com
+dbs724.com
+dbscar.com
+dbshop.netdbspc.clouddbss360.comdbtclub.com
dbyun.net
dbywenhua.com
dc-cn.com
+dc0792.com
dc568.com
dc625.comdcarapi.comdcarimg.comdcarlive.comdcarstatic.comdcarvod.comdcatgame.com
+dcb123.com
+dcdapp.com
+dcdkjx.com
dcdnx.comdcement.com
+dcetax.com
+dcg123.com
dcgqt.com
dcgsi.comdchotel.netdcic-china.com
dcits.com
dcloud.iodcloudlive.com
dclouds.cloud
dcloudstc.comdcmagcn.com
+dcmk17.com
zzqss.com
+zzqklm.com
dcpfb.com
+dcsapi.com
+dcshow.com
dcsjw.com
dcsme.org
dct-cloud.com
+dcxdtp.comdcxnews.com
dcxrm.comdcxx.vip
+dcybkj.comdcyiyao.com
+dczcsc.com
dczkj.comdczy168.comdd-advisor.com
dd-gz.com
+dd-img.com dd.ci dd.ma
dd001.net
dd008.com
dd128.com
+dd2007.com
dd369.com
dd373.comdd4.comdd666mir.com
+dd8828.com
+ddadaal.meddbiquge.ccddbiquge.com
ddbiu.com
ddcdn.comddcheshi.comddchong.com
+ddcits.com
+ddcsjw.com
ddd-china.comdddazhe.com
+ddddns.netddddocr.comddddyres.com
dddfe.com
+dddggg.comdddgong.comdddholdings.com
dddja.com
dddki.com
+dddwan.comdde-desktop.orgddedush.com
+ddfans.comddfchina.comddguanhuai.comddhy.com
+ddiaas.comddianle.com
+ddimg.mobi
ddimg.net
dding.netdding121.comdding133.com
+ddiqbh.com
+ddjjzz.comddjk.com
+ddjsyx.com
ddk-alink.comddkanqiu.ccddkanqiu.netddkanqiu.vip
+ddkids.com
ddkjt.comddkt365.com
+ddkwxd.comddky.comddle.cc
+ddlequ.com
ddmap.com
ddmer.com
+ddmogo.com
+ddnddn.comddnspod.com
+ddnsto.comddnx.com
ddong.com
ddooo.com
ddoor.netddos.com
ddosc.com
ddosendns.com
+ddosjq.xyz
ddove.com
ddpai.com
+ddpcgs.com
ddpoc.com
ddqcw.com
+ddqq73.vip
+ddsaas.comddsk.la
ddstarapp.com
+ddswcm.comddsy.com
ddt02.comddtk.vip
ddtsg.comddtugame.comddtxgame.comddun.comddunyun.comddurl.todduser.mobidduwork.com
ddvaj.comddw1931.comddweilai.com
ddwhm.com
+ddxhyl.com
ddxq.mobiddxs.cc
+ddxsku.comddxstxt8.comddyjapp.com
ddyqh.com
ddyun.comddyun123.com
+ddyvip.comddz.com
ddzbk.comddzf.cc
ddzhj.com
ddztv.com
ddzui.comddzuqin.com
+ddzyku.com
+de-ele.com
de-hilfe.blog
+de-moe.org
+de0.cc
+de1000.com
de123.net
+de1919.comde56.comdeaconhousewuxi.comdeadnine.com
deafchina.com
deahu.com
dealsbank.com
dealsmake.comdeansys.comdear520dear.com
+dearda.comdearedu.comdearisland.com
dearmsdan.comdeartree.comdearxuan.com
+deasun.comdeathearth.comdeau-cable.com
debao.comdebao123.comdeben.me
debug.moe
debugdump.com
+debugo.comdebuycn.comdecadet.lol
+decard.comdecentcapital.com
decerp.ccdechong.site
+dechua.comdeclous.comdecohome.ccdecoration.ltddecorcn.com
+decwhy.comdede168.comdedebiz.comdedecms.comdedecmsplus.comdededao.comdedeeims.com
+dedegg.com
+dedejs.comdedemao.comdedesos.com
dedezhuji.comdeeceal.com
+deehon.comdeelion.com
+deemos.comdeep-os.com
+deep56.comdeepbluenetwork.comdeepcloudsdp.comdeepepg.comdeepermobile.com
deepin-ai.com
+deepin.com
deepin.io
+deepin.orgdeepinghost.comdeepinmind.comdeepinos.org
deepinout.comdeepinstall.comdeepleaper.comdeeplearn.medeepoon.comdeepseek.com
deepsheet.netdeeptechchina.comdeer-express.com
+deerex.comdeerjet.com
+deerma.com
defcoding.com
+defoen.com
+defofy.com
+defvul.comdegitec-jiangyin.comdeguoguanjia.comdeguoyibiao.com
+dehe99.comdeheheng.com
+deheng.comdehengclinic.comdehongtech.com
dehsm.com
dehua.netdehuaca.comdehuasd.comdehuisk.com
+deifgs.com
+deikuo.comdejinfu365.com
dejiplaza.comdekeego.com
+dekekc.com
dekls.comdekonglife.com
dektw.comdekuncn.comdekunyy.com
dekyy.comdel.pubdelaiyun.cloud
delanauto.comdeli-tools.comdelib2b.comdelibao.com
delicloud.comdelin-sh.com
delinklab.comdelishi.com
deliworld.comdelixi-electric.com
+delixi.comdell027.comdellecs.comdellemc-solution.comdellfuwuqi.com
dellhpibm.com
+dellzj.com
delonggou.comdelphi-connect.comdelphijiaocheng.com
delphitop.comdelunyk.comdeluxewatchbox.com
+demage.comdemaxiya.comdemix.cc
+demixc.comdemizhongbao.com
demlution.comdemo1024.com
demo8.com
demodashi.comdemogic.comdemon.tw
demonlee.tech
+demoso.netdemososo.com
denachina.com
+deng88.comdenganliang.comdengbi8.comdengbiao.comdengdingsheng.com
dengguobi.comdenghao.orgdenghaoxuan.comdenghuo.comdengkanwen.comdengmoe.com
+dengni.orgdengpeng.me
dengta120.comdengtacj.comdengtadaka.comdengxiaolong.comdengxiaopingnet.comdeniulor.comdenon-proaudio.comdenopark.comdensesndysn.com
denson168.comdentistshow.comdenzacloud.com
+deosin.comdep-star.comdepailed.com
dependdns.com
+dephir.com
+deppon.com
+deppxp.netdeqingbank.comdercase.com
derekchou.comderenbs.comderucci.com
+deruxi.com
derzh.comdes8.com
desay.comdesaysv.com
+deserts.io
deservee.shopdeshaus.comdesheng-edu.comdesheng.netdeshenghonglan.comdeshicheng.comdesign-engine.org
design006.comdesignjiaoshi.comdesignmoma.comdesignsketchskill.com
designuuu.comdesignwithlove.orgdesignyunasai.comdeskcar.comdeskcity.comdeskcity.orgdeskguanjia.comdeskier.comdeskpool.comdesktop-calculator.comdesktopcal.com
desktopqa.com
+deskwc.comdesoonproduct.comdespiertocfilms.comdestoon.comdesunpv.com
detailroi.com
+detion.comdetu.comdetuyun.com
+dev-dh.com
+dev798.comdevashen.com
+devask.net
+devclub.cczzqiyou.com
+zzqfte.comdevelopers.pub
+devemi.comdevework.comdevexel-tech.comdevexel.comdevexpresscn.comdevicewell.com
devio.orgdevops-dev.comdevourad.com
+devpss.com
devqinwei.comdevsapp.netdevsiki.comdevtang.comdevui.designdevwiki.netdevzeng.comdeweisi.net
dewmobile.netdewu.comdewu.netdewucdn.comdewumall.comdexian.mobidexingrv.comdexinhr.com
dexinmobi.comdexinsg.com
+dexiya.com
dextercai.com
+dexuee.comdexunyun.comdeyangbk.comdeyatech.com
+deyayk.com
deyecloud.com
deyeehome.comdeyi.comdeyi.net
+deyicc.com
deyijijin.org
+deyiso.com
deyoulife.com
deyun.fundezhanyigou.comdezhong365.comdezhongmobi.comdezhoudaily.comdezhuyun.com
df-gd.comdf-nissanfl.comdf81.com
+df9377.comdf962388.com
dfcfs.com
dfcfw.com
dfcms.netdfcx-bj.comdfdaily.comdfdinsin.com
dfdjy.net
dfdtt.com
dfedu.com
+dfgiso.comdfh4g84f56.com
dfham.com
dfhon.com
+dfhtjn.comdfhy888.com
dfig0.com
+dfine.tech
+dfkhgj.comdfkj.cc
dflzm.comdflzmxs.comdfmc.comdfmcastrol.comdfmingya.comdfpk.com
+dfpost.comdfpz.net
+dfqcmy.com
dfrcb.com
+dfrlyy.com
+dfs168.com
+dfs800.com
dfshurufa.com
dfshw.comdfshysw.com
+dfsrcw.com
dfss-club.com
dfstw.com
+dfsyjm.com
+dftcdq.comdftq.netdftyyls.comdftzcgs.com
dftzj.comdfxq.com
dfxqc.com
dfxs1.com
+dfxwdc.com
dfxyw.com
+dfy027.comdfyanyi.com
+dfyapp.comdfyl-luxgen.com
+dfynet.com
dfyoo.comdfysscy.com
dfysw.net
+dfyuan.com
dfyxs.com
dfyyc.com
dfyzx.com
+dfzbsh.comdfzk.comdfzmzyc.comdfzxvip.com
dg-360lhx.com
dg-hanxin.comdg-mall.com
dg-niuniu.comdg-paas.com
+dg-xqd.comdg11185.com
dg114.com
dg121.com
dg456.com
dgbaineng.com
dgbap.com
dgbgw.com
dgchangan.com
dgchenghe.com
dgddh.xyz
+dgdita.comdgdq1688.com
+dgdydd.com
+dgegbj.comdgg.net
dggdk.com
dgggs.com
dgghy.com
+dggjqw.comdgguangfang.com
+dggvip.net
+dghgzm.comdghobo17.com
dghqmotor.com
+dginfo.comdgjiuqi.comdgjl168.comdgjoy.co
+dgjwsy.com
+dgjxmk.comdgjy.net
dgjyw.com
dgk2n.comdgkj888.comdglpool.com
+dglyjx.com
dglzd.com
+dgmama.netdgmedusa.com
+dgn.cc
dgndf.comdgnekon.com
dgnkj.com
+dgobch.comdgod.netdgouyijiance.com
dgpenghao.comdgphospital.comdgptjob.comdgq63136.icu
dgqjj.com
+dgrbcj.com
dgrcw.comdgrongkuang.comdgruizhi.comdgsbtjx.com
dgsenmiao.comdgsfweb.com
dgshifeng.com
+dgsltx.com
dgsme.org
dgspk.comdgt-factory.com
dgt25623.live
dgtle.comdgtn1718.org
+dgtpcj.comdgtuoyue.comdgujayx.com
+dgvbla.com
+dgw888.com
dgwap.com
+dgwlhj.com
+dgwtrl.com
+dgxbjg.comdgxinde.net
dgxue.comdgxzxjj.com
+dgyafu.comdgyanda.comdgyejia.com
+dgyhsb.com
dgykz.com
+dgytdz.comdgyuanyi.com
dgzaixing.com
+dgzcsy.netdgzhihongjx.comdgzhisen.comdgzj.com
dgzz1.comdgzz1688.com
+dgzzip.com
dgzzw.net dh.cxdh01.com
+dh0580.com
dh3037688.comdh33660.comdh3t.comdh5idnf.com
+dh7373.com
+dh7999.com
dh818.com
+dh9191.com
dh978.com
+dhasgf.com
+dhb.hk
+dhb168.com
dhboy.com
dhgsqjcnm.comdhguanye.com
+dhhqfw.comdhimavision.comdhj3413.comdhjt.comdhkk.ccdhkq120.com
+dhkqmz.com
+dhkqyy.com
+dhl-ch.com
+dhmeri.comdhmsnyy.com
dhppa.comdhqtech.comdhrcbank.com
+dhrest.comdhrest2.com
dhsky.org
+dhszyy.netdht5867.com
+dhuili.comdhvisiontech.comdhw-wiremesh.com
dhw22.comdhwooden.com
dhyct.comdhyjaqa.comdhyz.net
+di28nl.comdi38.comdi3fang.vip
di3ke.com
di7cn.netdiablohu.com
+diaidi.comdiaigame.comdialoguechinefrance.comdiamondfavour.netdiamondfsd.comdian-ai.comdian-stable.comdian.sodian123.comdian234.com
dian5.com
+dian68.netdianadating.comdianapp.com
+dianbo.org
dianbobao.com
dianbucuo.comdianchacha.comdianchouapp.comdiandanbao.comdiandao.org
diandaxia.comdiandian.comdiandianchong.comdiandianmeijia.comdiandiannuo.comdiandianqi.comdiandianshu.comdiandianwaimai.comdiandianxie.comdiandianys.comdiandianzhe.comdiandianzu.comdiandong.comdiandong365.comdiandongche.bizdianfengcms.comdianfuji.comdiangan.org
diangong8.comdiangongbao.comdiangongwu.comdianhen.comdianhong.comdianhou.com
dianji007.comdianjianggame.comdianjiangrcw.comdianjiangxin.ccdianjihr.comdianjiliuliang.comdianjin123.comdianjinghu.comdianjingzhe.comdianjipinpai.comdianjiqi.comdianjiruanqidong.comdiankeji.comdianlanbao.comdianlanyibiao.com
+dianli.comdianli08.com
dianli100.comdianliang8.com
dianlinet.comdianlut.comdianlut.netdianmiaoshou.comdiannaoban.comdiannaoxianka.comdianopen.com
+dianou.comdianpifa.comdianping.comdianpingba.comdianpushuo.comdianqiweixiu.netdianqizazhi.comdianranart.comdianremo1688.comdianrong.com
+dianru.net
dians.netdiansan.com
dianshang.comdianshanghy.comdianshangmulu.comdianshangyi.comdianshi.com
dianshige.comdianshihome.comdianshijia.comdiansu-cdn.netdiantads.comdiantonghudong.comdiantoushi.comdiantui.netdianwanhezi.comdianwannan.com
dianwantu.comdianwoba.comdianwoda.com
dianwoyou.com
+dianxi.netdianxian.netdianxiaobao.netdianxiaomi.comdianxin.netdianxinnews.com
dianxinos.comdianyingjie.comdianyingshow.comdianyingwenxue.comdianyong123.comdianyongqi.comdianyuan.comdianzhanggui.netdianzhangzhipin.com
dianzheli.comdianzhenkeji.comdianzhentan.comdianzhi.com
dianzhong.comdianzi6.comdianziaihaozhe.comdianzihetong.netdianzixuexi.comdiaoben.comdiaochapai.comdiaochapai.net
+diaocn.comdiaocnc.comdiaoding.biz
diaojiang.comdiaokeji.netdiaosaas.com
+diaosi.net
diaosiweb.netdiaosu20.comdiaosu9.comdiaosu98.com
diaosunet.com
+diaox2.com
diaoy.comdiaoyou.comdiaoyoupai.com
+diaoyu.com
diaoyu123.com
diaoyu365.com
diaoyuren.comdiaoyuwang.comdiaoyuweng.comdiary365.net
+diaxue.com
dibaotong.comdibchina.com
dibcn.com
+diboot.comdibunet.com
+dic123.com
dicaotang.com
+dichan.com
+dichan.net
dichanlao.com
dichanren.comdichedai.comdickschmidtbooks.comdicom365.comdictall.comdida110.comdida365.comdidabds.comdidacar.comdidachuxing.com
didao.com
didapaper.comdidapinche.comdidatravel.com
+didctf.comdiddgame.com
didi-food.comdidi.xin
didialift.comdidiapp.comdidiaustralia.blogdidibear.comdidichuxing.comdidichuxing.netdididadidi.comdididapiao.comdididi88.comdidiglobal.com
+zzpuke.comdidimobility.comdidiopenapi.comdidipai.com
didiqiche.comdidishijie.com
didispace.comdidistatic.comdiditaxi.comdidiwuxian.com
+didixk.comdidiyun.comdidiyun.orgdidiyunapi.com
diducoder.comdiebian.netdieclock.comdiemameishi.com
+diemoe.netdieniao.com
+dieqiu.comdierkezhan.comdiershoubing.com
+dietfd.com
+diexun.comdieyanli.com
+diezhan.mediezhan6.comdifanapp.comdifersports.com
+diffir.comdiffusefuture.comdiffusenetwork.com
+dig-gy.com
digcredit.comdigi-wo.com
+digiic.com
digirepub.comdigisky.comdigital-ren.comdigitalchina.comdigitalcloudshield.com
digitalcq.comdigitaldrew.netdigitaling.com
digitaljx.comdigitalvolvo.comdigitalwuhan.comdigitalwuhan.netdigitimetech.com
digitlink.netdigitser.netdigiwin.com
digiwoods.comdigiwork.com
digod.comdigoexpress.comdigu.com
digu.plusdigu365.com
digua.comdiguage.comdiguazu.comdiguobbs.comdihaobedding.comdihaowa.com
diihh.com
diiqu.comdijingchao.comdijiuban.comdijunsm.comdili360.comdili365.comdililitv.comdimei88.com
+dimeng.netdimensionalzone.comdimenspace.comdimocap.com
dimolabel.comdimpurr.com
dimsmary.techdimtown.com
+dinais.comdinaite2003.com
+dindin.comdingbang99.comdingcaicai.comdingcooltech.comdingdachuxing.comdingdandao.comdingdanggj.comdingdangjia.netdingdangnao.comdingdangsheji.comdingdatech.com
+dingdd.comdingdean.comdingdiange.orgdingdianku.comdingdiansk.com
dingdianxs.ladingdianzw.comdingding.comdingding.xindingdingdan.comdingdingdoctor.comdingdingkaike.comdingdone.comdingdongcloud.comdingdongebusiness.comdingdongmao.comdingdongxiaoqu.com
+dingdx.comdingefactory.comdingfang123.comdingfubang.comdinggou.org
dinghaiec.comdinghegc.comdinghengjc.comdinghuakuai.comdinghuaren.comdinghui.orgdinghuo123.comdinghuo365.comdinghuoche.comdinghuovip.comdingjijiudian.comdingkeji.comdinglia.comdingliangame.comdinglianhuanbao.com
dinglipin.netdinglongjx.comdinglutang.com
+dingoa.comdingqiaoks.com
dingqibao.comdingqidong.comdingqingyun.comdingrongjiashi.comdingrongxd.com
dingsheng.com
+dingso.comdingtalent.comdingtalk.comdingtalk.netdingtalkapps.comdingtalkcloud.comdingtangzqx.comdingteam.comdingwei.linkdingweilishi.comdingxiang-inc.comdingxinhui.comdingxinwen.comdingxiushipin.comdingxutonghui.comdingyantec.com
dingyao17.comdingyue-ele.comdingyueads.com
dingzhijl.comdiningcity.asiadinshangpictures.com
dinzd.comdiodecy.comdioenglish.comdiomasce.com
+dionly.com
+diopic.netdious-f.comdious.cc
dipephoto.com
+dipont.comdiqi.netdiqi.sh
+diqiuw.com
diqua.com
+dir001.com
dir28.comdirectui.comdis9.netdiscographyofbeats.comdiscountedkwatch.comdiscourse-studies.comdiscoversources.comdiscoveryriflescope.comdiscuz.chat
+discuz.com
+discuz.net
+discuz.org
+discuz.vipdiscuzfans.net
discuzlab.comdisenjn.comdishanhuanbao.com
+dishen.comdishuge.comdishuizhijia.com
+disimy.comdiskgenius.com
+dislux.comdislytegame.comdismall.comdistantmeaning.comdistinctclinic.com
ditai.funditan360.com
+dithub.comditian-tech.comditianshanhe.com
+ditiee.com
ditiefuli.com
+ditiem.comditiezu.comditiezu.netzznah001.comditu100.netdituhui.com
dituwuyou.com
+diugai.com
diumx.com
diuqi.netdiustou.com
diuta.com
diuut.com
+div.iodivcss5.comdivepai.comdiving-fish.com
+divizg.comdiwenbingxiang.net
+diwork.comdiwuyuan.com
dixintong.comdixonsdelight.com
+diyamh.com
+diybcq.com
+diybuy.net
+diycode.ccdiydiymall.comdiydoutu.com
diygogogo.com
diygw.com
diyhi.comdiyi789.comdiyiapp.comdiyibox.comdiyicai.comdiyidan.comdiyidan.netdiyifanwen.comdiyifanwen.netdiyigaokao.com
diyihuifu.comdiyiliuxue.comdiyinews.comdiyipaihang.comdiyishijian.comdiyitech.comdiyixiazai.comdiyiyou.com
+diyiyt.comdiyiyunshi.comdiyiziti.com
diymianmo.com
diymysite.comdiynova.com
+diyosl.com
+diypda.com
+diyring.ccdiywoju.com
diyyh.comdiz7.comdizalpharma.comdizhimei.comdizhuche.comdizzylab.net
+dj.net dj.tcdj10.com
dj134.comdj16.com
dj175.comdj63.comdj88.comdj89.comdj97.comdj99.comdjbgfit.comdjbh.net
+djbhjg.netdjbx.comdjcc.comdjcp099.com
+djcscs.comdjcx.ccdjdjapp.com
djdkk.com
djdsh.comdjduoduo.com
+djdyqn.comdjec.netdjeconomic.comdjf.com
+djf313.comdjfj.net
djfrj.comdji.comdji.netdjiavip.com
+djicdn.com
+djiops.comdjiservice.orgdjjlseo.comdjjw.comdjkhgy2.comdjkk.comdjkmghdjktk.cfd
+djkpai.com
djksq.com
djkxl.comdjlmvip.comdjlsoft.net
djnbg.comdjq1688.com
+djrhf0.com
djsh5.com
djstechpc.com
djstg.com
djtpf.com
djtpt.comdju8.comdjuu.com
djwcp.com
+djwjsj.comdjxcable.com
+djy517.comdjyalvji.comdjye.com
djyg.shop
+djyjob.com
djysx.com
djzhj.com
djznj.com
+djzr88.com
djzyg.comdk-lexus.comdkdangle.com
dkgyw.com
+dkhg23.comdkjahfkanf.comdkjiaoyang.com
dkjmy.com
dkkqz.com
+dklogs.net
dkmol.net
+dkntgc.com
dkrsq.comdksgames.com
dkskcloud.com
+dktzjt.com
dku51.com
+dky.cc
+dkybpc.comdkzt.comdl-huahong.com
dl-rc.com
+dl0728.com
dl158.netdl2link.com
dl321.netdl8z.comdlangchina.com
+dlb666.comdlbaohuang.com
+dlbbdk.com
+dlbgsc.comdlbh.net
dlbyf.com
+dlcaic.comdld.com
dld56.com
+dldlsw.com
dledu.com
+dler.cloud
dlezp.com
dlfederal.comdlfy-metalparts.comdlgouji.com
+dlgslb.net
+dlgwbn.com
+dlgxbl.comdlgzhtkk.com
+dlhwjq.com
+dlink.link
+dljczb.com
dljdy.comdljianbing.comdljierui.comdljishou.com
+dljlxx.com
dljrw.comdljs.net
+dlkldz.comdlkykycc55.com
+dllake.comdllhook.comdllttest.com
dllzj.comdlmianshuiche.comdlmonita.com
dlmtb.com
+dlmyzf.com
dlmzk.com
dlnel.com
dlnel.org
+dlonng.com
+dlosri.comdlphoschem.comdlpuwan.com
+dlqcgz.com
dlrkb.com
dls88.com
+dlsccn.comdlsjcsb.comdlsjj88.com
+dlsjyy.com
dlsqb.com
dlssa.comdlsstax.comdlsunworld.comdlszywz.comdltm.net
dltobacco.com
+dltsfh.com
+dltubu.comdlvalve.com
+dlw360.com
+dlw666.com
+dlwang.vip
+dlwjdh.com
+dlwmkj.comdlwx369.com
+dlxgjy.comdlxk.com
dlxww.comdlyy365.comdlzb.com
+dlzbxx.comdlzs-audio.com
dlztb.com
dlzyc.com
dm004.net
+dm0775.com
dm176.comdm21.com
dm300.com
dm321.netdm5.comdm67.comdm9.com
dmacg.net
dmaku.com
dmall.comdmallcdn.com
dmaow.com
+dmb168.com
+dmbcdn.com
dmcbs.com
dmcdn.com
+dmcgas.comdmchina1.com
+dmd968.comdmdaili.com
+dmeg88.com
+dmeiti.com
+dmeiti.net
dmeng.net
+dmfuns.com
+dmgapp.com
+dmgeek.com
dmggb.comdmgpark.com
dmguo.com
+dmhipi.com
dmhlj.comdmhmusic.comdmhy.com
dmiug.com
dmjnb.com
+dmjtxt.comdmjuups.com
+dmjvip.com
dmlei.comdmm.ink
dmooo.comdmozdir.org
+dmpans.comdmplugin.net
dmqst.com
+dmread.com
dmrta.com
dmssc.netdmtg.comdmvideo.mobidmvideo.netdmvideo.orgdmyouxi.com
dmyxj.comdmyz.org
dmzfa.comdmzgame.comdmzj.com
dmzj8.comdmzx.comdmzzbjb.net
+dmzzkz.com
+dn-diy.com
+dn.comdn23.com
dn580.com
+dn8188.comdna0772.comdnatupu.com
dnbbn.com
dnbbs.com
dnbiz.comdncable.comdncheng.com
dnfziliao.comdngswin7.comdngsxitong.comdngz.net
dnhcc.com
dnion.com
dnjsb.comjsjxh03.com
dnmcn.comdnnunion.com
dnole.com
dnparking.comdnpz.netdnqc.com
dnrenfang.comdns-diy.comdns-diy.netdns-dns.netdns-sky.comdns-url.comdns-vip.netdns.com
+dns.ladns.pub
+dns002.comdns0755.net
+dns100.net
+dns110.com
+dns123.netdns12345.com
+dns200.netdns2008.comdns2023.comdns2024.orgdns2028.com
+dns567.comdns6132.com
+dns666.comdns6868.com
+dns800.com
+dns819.com
+dnsany.comdnsapi12.comdnsbbzj.com
dnsce.com
+dnscnc.com
dnsdaquan.comdnsddos.com
+dnsdiy.comdnsdizhi.com
dnse0.com
dnse1.com
dnse2.com
dnse3.com
dnse4.com
dnse5.com
dnsfamily.comdnsfast.online
dnsff.com
+dnsfox.net
+dnsfwq.com
+dnsgtm.comdnsguest.comdnsgulf.netdnsh6666.com
+dnshot.netdnsidentity.com
dnsinside.net
dnsip.net
dnsis.net
+dnsjia.comdnsjiasu001.com
+dnslin.com
dnslv.comdnsmeasurement.com
+dnsmsn.com
dnsng.net
+dnsns5.com
+dnsns6.com
+dnsnut.com
dnsnw.comdnsoray.net
+dnsour.com
+dnspai.com
+dnspig.com
+dnsplus.co
+dnspod.comdnspod.mobi
+dnspod.net
+dnspod.orgdnspodh.comdnspood.netdnsppdd.com
dnsrw.comdnss.vipdnsserverhe.comdnssina.com
+dnstx88.cc
+dnsurl.net
dnsv1.com
dnsv1.net
dnsv2.com
dnsv2.net
dnsv3.com
dnsv3.net
dnsv4.com
dnsv4.net
dnsv5.com
dnsv5.net
dnsv8.net
dnsvcache.comdnsvhost.comdnsw7777.com
dnswa.com
+dnswhk.comdnswind.netdnsx9.cc
+dnsxdp.comdnsy8888.com
dnsyy.netdnszftp.com
dnszh.com
dnszw.com
dnv-group.comdnwxwww.comdnxp.net
dnxtc.netdnxttech.comdnzhuti.com
+dnzjds.comdnzp.com
+do-shi.com
do123.net
+do1618.com
+do1999.comdo35.com
+doabit.com
doata.net
dobe-game.com
+dobest.com
+dobosc.comdobunkan.com
+doc163.com
+doc361.net
doc88.com
doccamera.com
docer.comdocexcel.net
docin.comdocin365.comdockerinfo.net
dockerone.comdockerproxy.com
+dockone.io
dockx.appdoclass.comdocn.netdocodgroup.com
docpe.com
docschina.org
docsj.comdocsmall.com
+docsou.comdoctor-network.comdoctorbridge.com
doctorcom.comdoctorscrap.comdoctoryou.aidocuarea.org
+docx88.com
docxz.com
doczj.com
+dodjoy.com
dodo.link
dodo8.comdodobook.net
+dodoca.comdodocha.comdodoeasy.comdodoedu.com
+dodoh5.com
+dodomh.comdodonew.comdodovip.comdoergob.com
+doerhr.comdoerjob.comdoerjobdata.comdoewomnass.shop
+doffry.comdogecast.comdogecdn.com
dogecloud.comdogedns.comdogedoge.com
dogevideo.comdogfight360.comdogfuzhu.com
+doghun.com
doglg.com
dogmr.comdogwhere.com
+dogyun.comdoh.plusdoh.pub
dohuo.comdoii.ccdoit.am
+doitim.com
doiua.com
doki8.com
dolcn.com
dole.clubdolfincdnx.comdolfincdnx.netdolfincdnx.top
dolfindns.netdolfindnsx.comdolfindnsx.netdolfindnsx.top
+dolgma.com
+dolike.comdoll-leaves.com
doll-zone.com
+dollun.comdolphin-browser.comdolphin.comdolphinphp.comdomaingz.comdomengle.comdominoh.com
domob-inc.com
domob.orgdomobcdn.comdomobnetwork.comdomp4.ccdomyshop.com
+donews.com
dong-shou.comdong-xu.comdongannews.com
+dongao.comdongaocloud.comdongbao120.com
+dongbd.comdongbeishifandaxue.comdongbucaijing.comdongcai.netdongcaibaoxian.comdongcaijijin.com
dongchali.netdongchecha.com
dongchedi.comdongchediapp.comdongchehui.netdongcheng1.comdongcheng100.comdongcheng120.comdongchenghotels.comdongcheyun.comdongchuangipr.com
dongdalou.comdongdao.netdongdongaijia.comdongdongliu.comdongdongmai.comdongdongwenda.comdongdongyx.comdongdongzu.comdongeedu.comdongeejiao.comdongfahouse.comdongfang-wh.comdongfang.comdongfang77.comdongfangfuli.comdongfanglicaishi.comdongfangnews.comdongfangnuojin.comdongfangtech.netdongfeng-honda-ur-v.comdongfeng-nissan.comdongfeng.netdongfengem.comdongfengtc.comdongfengtrucks.comdongfund.comdonggaoshiye.com
+dongge.comdongguantoday.com
donghaidl.comdonghaifunds.comdonghao.orgdonghongzx.comdonghuangshanquan.comdonghui.techdonghuihospital.comdonghulvdao.comdongjian.ccdongjiao.ccdongjiaoapp.comdongjiaotn.comdongjiax.com
dongjinyu.com
+dongjun.ccdongjunhui.com
dongkafei.com
+dongke.org
dongkelun.comdongkouren.com
dongli720.comdonglingying.ccdonglinkeji.comdonglishuzhai.netdonglivillage.comdongliw.comdonglizhixin.com
+dongman.ladongmanxingkong.com
dongmanzx.com
dongmiban.com
+dongmk.comdongnanmaifeng.com
dongni100.comdongniao.netdongnienglish.comdongniyingyu.comdongputech.comdongqiniqin.com
dongqiudi.com
dongqiudi.net
+dongrv.comdongsentire.com
dongsenzs.comdongshengdasha.com
dongshiju.comdongshou.comdongshunxinxi.com
dongsport.comdongtai588.com
dongtaijt.comdongteng.ccdongting.com
+dongtu.com
+dongua.com
+dongwm.com
+dongxi.netdongxinghc.comdongxingkonggu.comdongxingnet.com
+dongxu.comdongyanggh.comdongyao.ren
dongyaods.comdongyaowuliu.comdongyin.netdongyixiang.com
dongyoutu.comdongyuansl.comdongyun.biz
dongyun01.comdongzhougroup.comdongzhuoyao.comdongzsec.comdonhonet.net
+donnor.com
donoo.net
donvv.comdoodoobird.comdoofull.com
+dooioo.com
+dookay.comdooland.com
+doomii.comdoonsec.comdooo.cc
+doooor.com
+doooor.net
door-expo.com
+dooreb.com
+doorhr.com
+doorzo.app
+doorzo.net
+doov5g.comdoowinfintec.com
dooya.com
dopic.netdora-family.com
+dorapp.comdorgean.com
dormforce.net
+dorole.com
dorrr.comdoseeing.com
+doserv.com
doservice.comdoshineapp.comdoshome.comdosk.win
+dosnap.com
dospy.com
+dossav.com
+dossen.com
+dostor.com
dosxs.comdot.pubdota2rpg.comdotamax.com
+dotcpp.comdotdotnews.com
+doteck.comdotgate.com
doticloud.comdotty-china.com
dotwe.org
+dou.bz
+dou.li
douba1688.com
douban.co
+douban.com
douban.fmdoubanio.com
+doubao.comdoubaozhidao.comdoubean.comdoubilm.comdoubimeizhi.comdoublestarmingren.comdoublewin123.comdoubo03.comdouboshi.netdouc.ccdoucang.comdoucehua.com
douchacha.com
douco.com
doudaihuo.comdoudang.comdoudehui.comdoudier.com
+doudou.com
+doudou.fun
doudou.indoudouad.comdoudoubird.com
doufan.tv
doufl.com
doufm.netdoufuyuedu.comdouglassclub.comdougongyun.com
+douguo.com
+douguo.net
douhan.li
+douhao.comdouhaogongyu.com
douhaomei.com
+douhua.netdouhuameiquan.comdouhuameiquan.netdouhuawenxue.com
douhuibuy.comdouhuomall.comdoukantv.comdoukeji.com
+doulai.com
doulaicha.comdoulaidu.ccdoulaidu.comdoulaidu8.ccdouleyun.netdoulongyun.comdouluodalu3.com
doumi.comdoumistatic.comdoumobsix.sitedounanhuahua.comdouniwan.org
doupai.cc
+doupay.comdoupocangqiong1.com
douqi.com
douquyyds.comdoushen.com
doushisan.com
+doutian.medoutianshequ.com
+doutub.com
doutuimao.net
doutukeji.comdoutushe.com
douwanweb.comdouxiangtao.com
+douxie.com
+douya2.comdouyabo.comdouyacun.comdouyapu.com
+douyar.com
douyi.com
+douyin.com
douyinact.com
douyinact.net
douyincdn.comdouyinclips.comdouyincloud.netdouyincloud.rundouyinec.comdouyinfe.comdouyinhanyu.comdouyinliving.comdouyinmusicclips.comdouyinmusicpromotion.comdouyinmusicvideo.com
douyinpic.comdouyinshortvideo.comdouyinstatic.comdouyinvideo.netdouyinvod.click
douyinvod.comdouyinxs.comdouyongtuan.com
douyou100.com
douyu.comdouyu.tv
douyuscdn.comdouyushepin.comdouyutv.com
douzi.com
douzihuyu.comdouzijiasu.comdov.moe
dovechina.comdovesky.com
dovov.comdowater.comdowebok.com
dowei.comdoweidu.comdowell-health.comdowhere.com
+down123.cc
+down123.medown199.comdown568.com
down6.comdownabc.comdownbei.com
+downcc.com
downcodes.com
downerapi.com
+downfi.comdownhand.com
+downi9.comdownjoy.com
+downke.com
+downkr.comdownkuai.com
downloads.ltd
+downok.com
+downos.com
+downpp.com
+downqa.comdownsave.comdownxia.comdownxing.com
+downxy.com
+downya.com
+downyi.com
+downza.com
+downzz.comdowv.comdoxo.fun
doxue.com
+doxygen.io
doyee.comdoyoimg.comdoyonoc.com
doyoo.netdoyoudo.com
doyouhike.netdozer.ccdozview.comdp.techdp2u.com
dpaih.xyzdpangzi.com
+dpbilb.xyz
+dpcafc.com
dpcq1.net
dpcxp.com
+dpcyjt.com
dpddo.com
+dpdfsd.comdpeeghn.comdper.com
+dpfile.comdpifloor.comdpin100.comdplayerjsvideo.com
dplor.com
+dplord.comdplslab.com
dpqct.comdpsoidf.com
+dptech.comdptechnology.net
+dpurat.comdpw.pub
dpw202501.comdpwl.netdpxphoto.comdpxq.comdpy8.com
dq123.com
dq247.comdq3c.com
dq800.comdq99.netdqccc.cc
dqccc.com
+dqcccc.comdqdaily.comdqdg.ccdqdgame.comdqf14u8573.com
dqguo.com
dqhui.com
dqiis.comdqjob88.com
+dqoooo.comdqpi.net
dqpkb.com
dqrailing.comdqscfospytjg13.app
+dqshdj.com
+dqshjt.com
dqsjt.comdqsq.net
+dqtsbj.com
+dqtzdt.com
dqycw.com
dqyfapiao.comdqyq.com
+dqzboy.com
dqzjz.com
dr-jm.com
dr-ku.com
dr009.comdraftstatic.comdrageasy.comdragon-guide.netdragon-hotel.comdragonballcn.com
dragonest.com
dragonlab.org
dragonlcm.comdragonnewsru.comdragonparking.comdragonsea-china.comdragontrail.comdragonwell-jdk.iodrakeet.com
dramx.com
drartisan.com
drasy.netdraveness.medrawyoo.com
drbdp.com
+drcact.comdrcbank.com
drcg8.com
+drclvs.comdrcuiyutao.comdream-loft.com
dream.rendream211.comdreamad.mobidreamcast.hkdreamchasercapital.comdreame.techdreamersall.comdreamershop.com
dreamkite.net
dreammeta.net
dreamo100.comdreampiggy.comdreams-travel.comdreamswood.comdreamsz.netdrearry.comdreawer.comdress008.com
drgou.comdrice.ccdrinkmagazine.asiadrip.imdripcar.com
driver114.comdriverdevelop.comdrivergenius.comdriverzeng.comdrivethelife.comdrjy6688.com
+drli.groupdrlmeng.com
drm-x.com
+drmaml.comdrmhoud.comdrockart.comdroi.comdroibaas.comdroitstock.comdropsec.xyz
+drouma.com
+drp321.com
+drpika.com
drry.sitedrscrewdriver.com
+drscrm.comdrstour.com
drsxy.com
drtyf.comdrugfuture.comdruggcp.net
druid.vipdrunetherlands.comdrupalla.comdrupalproject.org
+drv.twdrvi.net
+drvsky.com
ds028.comds123456.comds5f.com
+ds6489.com
dsary.comdsb.ink
+dsblog.net
dscbs.comdscq.com
dsdod.com
+dseman.comdser.com
dsfdc.com
dsfjh.vip
+dsfzcz.comdsgaokao.comdshigao.com
dshrc.comdskb.codskystudio.com
+dslbuy.com
dslt.tech
dslyy.com
dsmxp.com
dsmyiyuan.com
+dsmzyy.com
dsmzyy120.com
+dsn300.com
dsnpz.com
dsnzyy120.com
dsook.com
+dspwhy.comdsq.comdsspinfo.com
dsstudio.techdssz.com
zzmyt.comdstfsbc.comdsti.netdswenku.comdswjcms.com
dswmt.com
dswql.com
dswqw2025.com
+dswzxh.comdsx2020.com
dsxys.pro
dsyun.com
+dsz.ccdszw.netdt-stor.com
dt123.net
dt830.comdtcj.com
dtcms.netdtcoalmine.com
dtcxw.com
+dtdcjt.netdtdream.com
+dtdxcw.com
dtfcw.com
dtidc.com
dtime.comdtjh-bj.com
+dtjzfs.com
dtlty.com
dtmdl.comdtmuban.com
+dtnews.net
dtrcb.com
+dts007.comdtsmndu.comdtstack.comdtstatic.com
+dtston.comdttc-icp.comdttt.net
+dtuosh.com
+dtuyun.com
dtxmw.comdtxn.net
dtxww.com
+dtxxhh.com
+dtyhgj.com
+dtysky.moedtyunxi.com
dtyzg.comdtzj.comdu-xiaomai.com
+du11du.com
du175.com
+du6quy.comdu7.comdu8.comdualaid.com
dualspace.comdualspacetech.comduan.red
+duanju.funduanlonggang.comduanmale.comduanmeiwen.com
+duanqu.comduanrong.comduanshu.comduantian.comduantuixiong.comduanwenxue.com
+duanxb.comduanxiansen.comduanxin321.comduanxin520.comduanxuetang.comduanzaixian.vipduanzao001.comduanzikuaizui.comduanziya.comduanziyuan.comduapp-preview.com
duapp.netduba.comduba.netdubaike.comdubairen.comdubao123.comdubbo.io
+duble.live
dubprince.com
dubyc.com
ducafecat.comducafecat.techduckyset.com
+dudong.comdudongsheji.com
dudubashi.comdudujuzi.comdudutalk.com
+duduyu.net
+duelcn.comdugulingping.comduguying.net
duhao.net
+dui.aidui1dui.comduia.com
duiai.comduibiao.comduibimao.comduiduipengds.com
duijie666.comduikuang.com
duimg.com
+duimin.comduiopen.com
duipu.com
+duishu.comduitang.com
duitianhe.com
duizhuang.comdujiabieshu.comdujiaoshou.org
dujin.orgdujixiao.com
+dujiza.comdujun.iodukechiang.comduketop1.comdukharo.com
+dukuai.comdule.cc
dulesocks.com
+dulife.comdulightapp.comdullong.com
dullr.comdulwich.org
+dumall.comdumasoftware.comdumeiwen.comdumi0898.comdumpapp.comdun-mfy-cdn.com
+dun.ladun.tax
dunankeji.comdunbaigo.comdungeon-server.comdungkarime.comdunhuang.com
dunjiaodu.comdunkhome.comdunstanhardcastle.comdunsuan.comdunwang.com
duoao.comduobaoyx.com
+duobei.com
duobeiyun.netduobiyi.comduocaish.com
duocaitou.comduocengban.orgduochang.cc
+duodaa.comduodanke.comduodele.comduodian.comduodianbao.netduodiwan.com
duoduo123.com
duoduo365.comduoduobang365.com
duoduocdn.comduoduodashi.comduoduoshipin.vip
duoduoyin.comduoduoyouli888.comduoduozb.comduoduozhifu.com
duoduwang.comduoerpharmacy.com
duofriend.com
duogouhui.comduohuanbao.com
duohui.co
duoic.comduokaima.comduokaiwang.comduokaiya.com
duokaiyun.com
+duokan.com
duokanbox.com
duoke.netduokebao.netduokebo.com
duoku.comduola.meduolaa.asiaduolabao.comduolabaocdn.comduoladayin.comduolahua.comduolaika.comduolaima.com
duolapiao.comduolatom.comduolayunwang.com
duole.comduolebaohuang.comduolebh.comduolebo.com
duolegame.comduolegd.comduolegj.comduolegouji.comduolemahjong.comduolemajiang.comduolemao.comduolepdk.comduolephz.comduolesj.comduolesk.comduolexq.com
duoliucui.comduoluodeyu.comduomeng.funduomeng.netduomeng.org
duomi.comduomiao.produomiapp.comduomicheng.com
duomijuan.comduominuo.comduomiyou.com
+duomni.comduomu.hkduomu.tvduonvlangceo.com
+duopao.com
duopei.cc
+duopei.xyz
duopingka.com
duoqu.com
duorenwei.com
+duorou.com
duorou.meduorouos.com
+duosai.com
duose.comduosenfashion.comduoshan.comduoshoubang.comduoshuo.comduososo.com
duost.com
+duotai.net
duotegame.com
+duotin.comduotoupiao.com
duotuscdn.com
+duowan.comduowanns.comduoweisoft.comduowenlvshi.comduoxiadian.comduoximh.comduoxinqi.comduoxuanyundian.com
+duoxue.comduoyewu.com
duoyi.comduoyinsu.comduoyoumi.com
+duozhi.comduozhishidai.com
duozhuayu.com
duozhuayu.net
duoziwang.comdup2.org
+duquge.orgdur9.comduread8.com
durongjie.com
dusao.vip
+dusays.com
dusdn.com
dusdn.netdushangself.site
dushaofei.com
dushewang.comdushicn.comdushifen.comdushiliren.net
dushu.comdushu.iodushu263.comdushu365.comdushu369.comdushudaren.comdushuge.net
+dushui.rendustess.comdustglobal.com
dustit.medusulang.comdute.medutenews.com
+dutype.comduuchin.comduunion.comduwenxue.com
+duwenz.comduwenzhang.com
duxiaomai.netduxiaoman-int.com
duxiaoman.comduxiaomanfintech.comduxiaomanfund.comduxiaomantech.comduxiaoshuo.com
duxiu.com
duxuetang.comduyandb.comduyao001.comduyaonet.comduyixing.comduyunshi.comduzelong.com
duzhe.comduzhoumo.comdv37.comdv58.comdvagent.com
dvbbs.net
dvbcn.com
dvbei.com
+zzmyrz.com
+dvd5s5.com
dvd85.com
dvd94.comdvdc100.com
dvidc.com
+dvkors.com
+dvmama.com
dvmission.com
+dvr163.comdvrdydns.comdvsadive.com
dvvvs.com dw.la
+dw4.co
dwdds.comdwgwatch.com
dwhub.net
dwidc.comdwinput.com
dwion.comdwiz882.com
+dwjkgl.com
dwjoy.com
+dwjpwf.com
dwjxz.comdwmoniqi.com
+dwntme.com
dwoke.comdwq.comdwrh.net
+dwsedu.comdwsgases.comdwstatic.comdwstock.comdwt.life
+dwtedx.com
dww11.comdwxw.net
dwxyamaha.com
dwy0.shopdwz.date
+dwz.lc
+dwz.mk
dwzjd.com
+dx-job.com
dx-marine.comdx-tech.comdx00.netdx10000.comdx114118.com
dx168.com
+dx2008.comdx86.com
dxbei.com
dxcci.com
dxclinics.comdxda.comdxdl1688.com
dxdlw.com
+dxe520.com
dxecs.comdxf6.comdxfblog.comdxgg.codxguanxian.orgdxhuafu.net
dxiazaicc.com
+dxinzf.comdxjh.netdxjs.comdxlfile.comdxm-cdn.comdxm-int.com
dxm-yibai.comdxmjinr.com
+dxmlcf.comdxmlcfintech.com
+dxmpay.com
dxmstatic.com
+dxmyqh.com
dxnky.comdxnwyjw.com
dxqyy.comdxrc.com
+dxsaxw.com
dxsbb.comdxsclass.com
dxsdb.com
dxsdermyy.com
+dxshtb.comdxsk.com
dxsng.comdxsport.comdxsrmyy.com
dxsvr.com
dxszx.com
dxton.comdxuan-robot.com
+dxuexi.com
dxwei.com
+dxwfgg.com
+dxwxdc.com
+dxxxfl.comdxy.com
+dxy.medxy.net
dxyan.orgdxyb.com
+dxycdn.com
dxyer.com
dxyff.com
+dxynly.comdxys.pro
dxzhz.com
+dxzk88.comdxzq.net
dxztc.comdxzx.comdxzy163.com
dxzzd.com
+dy1108.comdy163.cc
dy172.com
+dy1905.net
+dy2018.comdy3j.comdyaintcbmace.com
+dybeta.com
dycar.net
+dycars.com
dycdn.com
dycic.netdycloud.run
dycloudbk.comdycom365.com
dycyw.com
dydata.iodydt.net
+dydytt.com
+dye-ol.comdyee.orgdyets-cn.com
+dyf.hkdyfc.netdyfm200.comdyg-hec.com
+dygang.comdygangs.comdygf.com
+dygjmr.comdygmotor.com
dygod.org
dygzs.comdyhengli.comdyhgames.com
dyhjw.comdyhongshun.com
dyhuidong.comdyhxgame.comdyidc.ccdyie.net
+dyjdcz.com
dyjqd.comdyjqlrj.comdyjs.com
dyjw.info
+dyjymy.comdyketai.net
+dykz66.comdylc.comdyly.comdylyghm.comdymexhealthcare.comdymusictape.comdymusicvideo.com
+dyo985.vip
dyonr.comdyqc.comdyqm888.com
dyrbw.com
dyrcb.net
+dyrjjt.comdyrs.cc
+dysday.comdysgydlc.com
dyshf.comdyshortvideo.com
+dythmy.com
dytss.comdytt789.comdytt7899.com
dytt8.com
dytt8.net
+dyttcn.comdyuthic.comdyvideotape.com
dywfi.com
dywxs.comdyxldjy.comdyxsdwm.com
dyxtw.comdyxuexin.comdyxw.comdyxz.ladyys.comdyysoft.net
dyzdx.com
dyzpw.comdyzs163.comdyzsart.com
dyzxw.org
dz-ailive.com
dz-ic.netdz-x.netdz-z.com dz.tt
+dz0566.comdz11.com
dz137.com
dz169.comdz19.net
+dz1982.comdz31hao.comdz88.comdz98.comdzabosn.com
+dzbake.com
dzbarcode.comdzbchina.com
dzblo.comdzboligang.com
dzbxk.com
dzcbk.comdzcj.tv
dzcjw.comdzcmedu.comdzcolor.comdzdelong.comdzdesign.cc
dzdiy.comdzdu.com
+dzdvip.comdzfc.com
dzfxh.com
+dzglsb.net
dzgxq.comdzh.linkdzhlive.com
+dzhope.comdzhqexpo.com
dziuu.comdzjc.com
dzjkw.net
dzjrc.com
dzkbw.com
dzlaa.com
dzljy.com
+dzllzg.com
dzmdq.comdzmhospital.comdzng.comdzoptics.com
+dzp.tvdzpc.net
+dzpezp.comdzpk.comdzpklite.comdzpknews.com
dzqc.linkdzqu.com
+dzr120.com
dzrbs.com
dzronghui.com
+dzsaas.com
dzsaascdn.comdzsc.comdzsg.comdzshengchi.comdzsm.com
+dzspzx.com
+dzsrcw.com
dzssy.com
+dztcbj.comdztv.tvdzty365.comdztz168.comdzvv.comdzw3.com
dzwad.com
+dzwebs.net
dzwindows.com
+dzwork.netdzwtjsj.com
dzwww.com
dzwww.netdzwy.comdzxw.net
+dzxxzy.com
dzxzh.comdzy.link
dzyap.com
dzybk.com
dzyqc.com
+dzyule.com
+dzyysb.com
dzyzj.com
+dzz.cc
+dzzgsw.com
dzzoffice.com
dzzui.com
+dzzy88.comdzzyisp.come-10031.com
+e-3lue.come-adcon.com
e-bidding.orge-bq.come-bq.orge-buychina.come-celap.come-chinalife.come-cloudstore.com
e-cookies.net
+e-cspc.com
e-cuc.com
+e-eway.come-fangtong.come-flyinc.com
+e-ging.com
+e-ging.net
+e-gooo.come-guofu.come-hongw.come-hqins.com
e-jjj.com
e-jlt.come-kawai.com
+e-kays.come-lining.come-mallchina.come-micromacro.com
e-nci.come-net.hke-onekey.com
e-peilian.come-picclife.come-pointchina.come-power.vipe-ruikd.come-seenet.com
+e-sleb.come-sscard.come-tecsun.come-tiller.com
e-tui.net
+e-ufnb.com
+e-xina.come-ye2017.com
e0514.com
e0575.com
e0734.come077.come118114.com
+e12345.com
e1299.come12e.com
e1988.come1evh0lp4n.come213155.com
e21cn.come22a.com
+e23dns.nete24c.come253.com
+e2capp.com
e2edesign.come2esoft.com
e2say.com
e360e.come365mall.com
+e3j.coe3ol.com
e4008.com
e4221.come521.com
e5618.come5865f69dee0.xyze5hc.come5n.com
+e5tech.come64.fune65u.come68cname.come763.com
+e76660.com
e7890.come7cn.nete7e6.net
+e7e7e7.com
+e7lang.com
e7wei.com
e836g.come84p8174c7.come890.com
e9797.com
e9898.com
+e99999.come9x51y8t91.com
e9zd1.sbs
ea-retina.com
ea360.comea3w.com
eabax.comeachinfo.comeachnet.comeachsee.comeachwave.com
eadgy.orgeadianqi.comeaeb.com
+eaecis.comeafifaonline2.comeaglebgm.comeagleyun.comeagllwin.com
+eaibot.comeaka365.com
eal-ceair.com
+eallcn.comeallerp.comeallone.com
+eamimi.comeamn.neteanfang.comeap2.netearth-science.net
earth2037.comearthedu.comearthstar-cloud.comearture.org
easck.com
eascs.com
easea.neteasebar.neteaseconvert.comeaseeyes.comeasemob.comeaserun.comeasesale.comeaseslb.com
easetuner.com
+easeus.comeaseyedelivery.comeasilysend.comeasitcn.com
easiu.comeasonad.com
+eassos.comeast-side-ny.comeast.neteast263.comeastall.comeastar-group.comeastbest.comeastbuy.comeastchinafair.comeastcom-sw.comeastcom.comeastcom.siteeastcompeace.comeastcoms.comeastday.comeastdesign.net
eastdrama.com
eastdushi.comeasteat.comeastecloud.comeastent.comeastern-tek.comeasternalong.comeastforever.comeastftp.net
+eastfu.comeasthome.com
+eastib.comeasticloud.com
+eastjq.comeastled.comeastlen.comeastlending.comeastmannplastics.com
eastmoney.comeastmoneyfutures.comeastmoneyloans.comeastmoneysec.comeastobacco.com
eastpharm.comeastsilver.comeastsoo.comeasttone.comeastups.comeastwin-zc.comeastwinn.comeastyule.comeasugar.comeasy-all.neteasy-china.comeasy-dotnet.comeasy-eai.comeasy-ent.comeasy-h5.comeasy-linkholiday.com
easy-mock.comeasy-signing.comeasy163.neteasy2world.comeasy361.comeasy888.com
+easyar.comeasyarvr.comeasyball.neteasybug.org
easyclean.funeasydarwin.orgeasyder.comeasydo.workeasydoc.neteasyfang.comeasyfapiao.comeasygame2021.comeasygametime.comeasygovm.comeasyhaitao.comeasyhexo.comeasyhin.comeasyidc.comeasylaa.comeasyliao.neteasylinkin.comeasylinkin.net
easymorse.comeasymule.comeasynet.vipeasypakk.comeasypayx.comeasyreadtech.comeasyrecovery.cceasyrecovery.neteasyrecoverycn.comeasyscholar.cceasysofthome.comeasyswoole.com
easytifen.comeasytimetv.comeasytite.comeasytocn.comeasytouch-manager.com
easytouch.comeasytrip.comeasyv.cloudeasywza.com
+easyzw.com
eatuo.com
eavic.comeawh.com
eaydu.com
eayou.com
+eayuan.com
+eayyou.comeazytec-cloud.com
+eb-ind.com
eb111.neteb80.com
ebadu.netebaidutv.com
+ebaifo.com
+ebaina.comebaixing.com
ebama.netebangchina.com
+ebanma.comebanshu.netebaoquan.orgebaotech.comebasset.comebchina.comebchinaintl.comebchinatech.com
ebdan.net
+ebdoor.com
ebfcn.com
ebfortune.com
ebgic.com
+ebhbjo.com
ebibi.com
ebico.comebidbid.comebigear.comebiobuy.com
ebioe.comebiomall.com
ebiotrade.comebioweb.comebjfinance.comebjservice.comeblockschina.com
ebnew.comebocert.comebookmen.comebopark.com
eboxmaker.comebpftravel.com
ebrun.comebscn-am.com
ebscn.com
ebscohost.com
+ebseek.com
ebsfw.com
+ebtang.comebtrust.comebuckler.com
+ebuy16.com
+ebways.com
ebyte.com
ec-ae.comec-cloudtech.comec-founder.comec-world.com
+ec.comec07yxgd11.comec3s.comec51.comec66.comec8j.com
ecadi.comecaidian.com
+ecaihr.comecamzone.cc
ecapp.orgecaptechnology.com
+ecaray.comecare365.comecarechina.comecartoon.netecarxgroup.comecbcamp.com
ecboo.com
ecbos.com
+eccang.comeccc-china.com
+eccdnx.comeccn.comeccnmall.comecco-market.com
+eccpos.com
+ecctaa.com
ecdnx.comecdpower.net
ecduo.com
+eceibs.com
+eceibs.neteceibs20.comecej.comecer.comecerdns.comecerimg.com
ecezt.com
ecgci.comecgoods.comecgtool.comechanceyun.comechangye.com
+echao8.comechargenet.com
echarpile.com
echatsoft.com
+echead.comechemsrc.comechepiao.comechiele.comechinacareers.comechinacities.com
echinagov.comechinatobacco.comecho-isoftstone.com
echo.coolecho188.comechoing.techechoteen.comechu-cable.com
echuandan.comechuaren.comeci-everconn.com
eciawards.orgecice06.com
ecigdaily.com
+ecigoo.comecinnovations.com
+ecitic.com
+ecitic.net
eciticcfc.com
ecjobhome.com
+ecjson.comeckgxbfa.com
+eckwai.comecloud-gdu.com
ecloud.hkecmagnet.comecmoban.comecmould.comecnu.net
+ecnuas.comecnudec.comeco-seavol.comeco-system.xyzecoalchina.com
ecocn.orgecodreamers.comecolesenet.comecoliving168.comecom-lightapp.com
ecombdapi.com
ecombdimg.comecombdpage.comecombdstatic.com
ecombdvod.comecomoter.comecondents.cloud
+ecool.siteecoplastech.com
ecoprint.tech
ecorr.orgecouser.netecovacs.com
ecp-cloud.com
ecp-cloud.net
+ecp888.com
ecphk.com
ecplf.com
ecppn.com
ecpsrplus.comecqd.com
ecqun.com
ecrrc.com
+ecs004.comecs6.com
+ecsage.net
ecscoupon.com
+ecscpu.com
+ecshop.com
ecshop123.com
+ecsits.comecsponline.com
ecsxs.com
+ectrip.comecukwai.comecustmde.com
+ecv360.comecvv.comecwan77.net
ecydm.comecyj.net
ecyti.com
ecyzm.comeczuafam.comed2k.viped2kers.com
ed2kk.com
eda-china.comeda1024.comeda2.com
+eda365.com
+eda365.netedaboss.com
+edadoc.com
+edagit.comedai.com
+edaibo.com
+edaili.com
+edaixi.comedaizhijia.com
+edajob.comedaocha.comedata100.com
edatahome.com
+edatop.comedawiki.comedazhang.comedb-tech.com
edb29.com
edcba.com
+edcdfg.com
+edcfda.com
eddic.neteddycjy.com
ede35.comedefang.netedenblis.comedesson.comedge-byted.com
+edgefn.netedgegslb.com
edgekey88.netedgemec.comedgeone.appedgeonedy1.comedgesrv.com
edhic.com
+edi198.comedianda.comedianshang.comediantec.comedianyun.comedianzu.comedifier.com
+edimob.comedingzhuan.com
+edisec.netedisk.cceditorjianying.com
edk24.com
edlcaster.com
edmcn.net
edmseller.comedns.comedo-bijiben.comedodocs.com
+edojia.com
edong.comedongeejiao.comedongli.netedongyun.com
edoou.comedowning.net
edozx.com
edqgk.comedragongame.com
edrawsoft.comedream-tech.comedsionte.com
+edspay.comedt2017.comedt2018.comedtsoft.comedu-book.com
+edu-cj.com
+edu-nw.comedu-shanghai.net
edu03.comedu0851.com
+edu201.comedu24o1.comedu24ol.comedu4399.com
+edu510.com
edu5a.com
edu63.com
+edu777.com
edu84.com
edu84.net
edu88.comeduapaashwc.com
eduardoam.comeduartisan.com
educg.net
+educhn.neteducoder.net
edudc.net
edudh.neteduease.com
+eduego.com
eduei.com
eduei.net
eduglobal.comeduglobalchina.comedui.fun
+eduiso.com
+edujia.comedujianshe.com
edujiaoyu.comedumail.pubedumine.net
+eduour.com
edupm.com
+edurck.com
+edushi.comedusoho.comedusoho.net
edusy.net
+edutao.comedutime.netedutrackconsult.com
edutt.comeduu.com
eduuu.comeduwenzheng.comeduwest.com
eduwo.com
eduwx.comedux.designeduxiji.net
eduyf.com
eduyo.comeduzhai.net
+eduzhi.com
eduzhixin.com
eduzs.net
edwiv.comedxmy.cc
+ee-nav.com
ee0t1.vip
ee123.net
+ee1234.comee68.comee77777.com
+ee8828.com
eeban.com
eebbk.com
eebbk.neteeboard.comeechina.comeecn.cc
eecnt.comeecourse.com
eecso.comeedevice.com
eedns.comeee-eee.comeee4.com
+eeedri.com
eeedu.neteeeeeef998.buzz
eeeen.comeeeetop.com
eeeff.comeeeknow.com
eeeqi.neteees.cc
eeetb.com
+eefans.com
+eefcdn.comeeff.neteefocus.comeehk.neteehomee.comeehu.com
+eeio99.com
eeioe.com
eelly.com
eelve.com
eema.infoeemcfun.com
eenzo.com
eeook.com
eeparking.comeepw.com
eeqiu.comeeskill.comeeso.net
+eestar.com
+eet.cceetoday.com
eetop.comeetrend.comeetrust.comeevision.comeeworld.com
+eeworm.comeexiaoshuo.com
+eexing.com
eeyaa.neteeyd.com
eeyxs.com
eeyys.com
eezml.com
+ef-cdn.com
ef360.com
ef360.net
efala.netefang.tv
efangwang.comefapiao.comefashionchina.comefashioncloud.com
+efe.cc
+efeihu.comefengji.org
+efesco.comeff-soft.com
+effapp.comefficient.hk
efivestar.comefly.cceflybird.com
eflycloud.comeflydns.netefnchina.comeforclub.comefotile.com
+efount.comefoxconn.comefpp.com
+eftime.com
+efucms.comefueloil.com
+efuncn.comefunent.com
efunq.com
efusc.comefwh.com
efxef.comefy-tech.com
egainnews.comegbt.netegcmedia.com
egeel.comegfb2221.com
+zzmscg.comeghimalayanak.com
+egjqgs.com
+egoint.comegongzheng.comegood995.comegoonet.comegotops.com
+egou68.com
egouz.comegovsum.comegpctiz.comegqkxzd.comegreatworld.comegret-labs.org
egret.comegrowads.com
egsea.com
egshuyuan.com
+egt365.com
eguangjie.comeguantao.comeguqwhvg.comegwealth.hk
egxlx.com
ehafo.com
+ehaier.comehaiwang.com
ehanglian.com
ehangtian.comehaoyao.com
+ehaoyao.usehclglobal.com
ehcoo.comehealthcareforum.com
+ehedco.com
+eheren.comehetech.comehhsrfn.com
+ehijoy.comehinvest.hkehnasia.comehnchina.com
+ehome5.com
+ehome8.comehomeclouds.comehomeday.com
ehouse411.comehousechina.comehoutai.comehowbuy.comehowbuy.netehsy.com
ehtcn.comehtttop.com
+ehualu.comehuarun.comehuatai.comehuataifund.comehub.netehui.netehuijing.com
+ehujia.com
+ehuoke.comehuoyan.com
ehutu.com
+ehuzhu.com
+ehvacr.com
ei6nd.comeiafans.comeiccmall.com
eickaopei.comeicodesign.comeicp.net
+eicuhq.xyz
eiczz.comeid-sft.com
eidcenter.comeidlink.comeidtokencloud.comeightbridge.comeightedu.com
+eigpay.comeihtfire.com
eiicn.com
eiimg.com
+eiisys.com
eiixx.comeijiucq.comeilieili.cceimoney.comeingdong.com
+einkcn.comeinsteintiles.comeintone.comeiot.comeismowe.com
eisoo.com
eiz56828e.sbs
+ejamad.com
ejcms.com
ejcop.comejdrone.com
+ejdyin.com
+ejectu.com
ejeegroup.comejhimalayanje.com
+ejiacn.comejianmedia.comejiawang.ccejiayou.com
+ejiayu.comejie.me
ejiecheng.comejinqiao.comejinshan.net
ejion.net
ejmrh.comejoy.comejoy365.com
ejoy365hk.comejrfood.com
ejrsp.com
+ejsoon.wineju.comejudata.comejuhome.com
+ejujiu.comejustcn.com
+ejy365.com
ek1ng.comek6.com
ekaid.comekaidian.comekan001.comekang99.comekangji.comekaobang.comekaoyan.comekaoyan365.comekclubinternational.com
+ekecdn.comekmic873o6vkza.comeks0451.comeksoi7mwa4fa27.comekuaibao.com
+ekumao.com
ekuzy.comekwangs.comekweixin.comekxx.netelabinfo.comelabpic.comelaiter.com
elane.com
+elanso.com
elanw.comelawoffice.netelbmodel.com
+eldamu.com
+eldawa.com
+ele.me
+ele.to
+ele001.com
ele12.comelec100.comelecfans.comelecfans.netelecinfo.comelecrystal.comelecshop.comeleduck.comelefang.com
elelx.comeleme.ioelemecdn.comelement3ds.comelementfresh.com
elenet.meelephant-base.comelephantrobotics.com
elex-tech.netelexcon.comelfartworld.com
elfinbook.com
elfjs.comelht.com
+elian5.com
elianhong.com
elianmeng.vip
+elicht.comelichtmedia.comelikeme.comelikeme.neteling.me
+elita.workelitecrm.comeliwang.com
elkpi.com
ellechina.comellemen.comelliotxing.com
ellll.comelmerlxy.comeloancn.com
elong-edm.com
elong.com
elong.netelongshine.comelongstatic.comelontest.comeloonggame.com
eloongsun.com
+elpcon.com
elpwc.com
+els001.comelsenow.com
elsz5.xyzeltmall.comeltt.org
eltws.com
+eluxiu.comeluying.comelvgufen.com
+elvshi.comelvxing.netelxk.comem86.net
+emadao.com
+email.fundemaileds.comemailflame.comemailuo.comemailxqq.comemakerzone.comemall001.comemao.comemao.netemas-poc.com
+emasmr.comematong.com
emaup.comemax.cc
+embcom.netembed.cc
embedfire.comembedhq.orgembedmcu.comembedsky.comembedtrain.org
+embedu.orgembedunion.comembedway.comembest-tech.com
embryform.com
+embsky.comembyvip.org
emcbj.comemcsosin.com
+emeiju.com
+emeixs.comemengju.com
emepu.comemerald.comemergencyexit.xyzemfuture.comemilechouriet.com
emjob.comemlinix.com
emlog.net
+emmm.space
emmmn.com
+emodor.com
+emoji6.comemojimobile.comemots.ccempornium.meemqx.comemqx.netemr-volces.com
ems-audio.com
+ems517.comemsec.hk
+emsepc.comemshost.com
+emshua.com
emsym.com
+emtana.com
emtcm.comemtronix.comemtx.com
+emu999.net
+emuban.com
emuch.net
+emugif.comemui.com
emui.tech
emuia.comemulatedlab.com
+emumax.com
+emupic.com
emushroom.net
+emw173.com
emwan.com
+emyard.comemzexzfp.com en.tmen51.com
+en8848.com
en998.com
+enacdn.bizenacdn.info
ename.com
ename.netenaw-almg3.com
enbamaoyi.comenbowang.comenbrands.comencthinking.comendianpp.com
endress.storeenec.net
+enelcn.comenergy-root.comeneskanter.com
+enet16.com
+enet16.netenet360.comenet369.comenetedu.comenfi.vipenflame-tech.comenfodesk.com
enforever.com
eng24.comengeniustec.comengincosar.comengineeringvillage.comenglish163.comenglishmasterclub.com
engloncar.com
engpx.com
+engr-z.com
enguo.comengz.net
enhku.com
enianteam.com
enicn.com
+enjoy.link
enjoy1992.comenjoy3c.comenjoydiy.comenjoyfe.comenjoyglobal.netenjoying3d.comenjoykorea.net
enjoymeet.comenjoyyue.com
+enjoyz.com
+enketu.comenkichen.comenkj.comenlightent.comenlistsecurely.comenlistsecureup.com
enmonster.comenmotech.com
enmuo.com
+enn-ng.com
ennew.comennobay.com
+ennpet.comennresearch.com
ennweekly.com
enoya.comenpapers.com
enpht.comenproscm.com
enqoo.com
+enread.com
enrlb.com
enroo.comenroobbs.comenrz.comens4.comenshide.comenshijob.comenstylement.com
+ent001.com
+ent120.comentengll.com
enterdesk.com
enterdesk.net
+enunix.comenvisioncn.comenxicled.comenyamusical.comenzj.comeoaluminium.com
eoaoo.comeoeandroid.com
eoemarket.com
eoemarket.net
+eoffcn.comeoivisa.com
+eolink.comeolinker.comeomgames.net
eomoy.com
eonun.com
+eoofoo.com
+eooioo.com
+eoopoo.com
+eooqoo.com
+eoouoo.com
+eoovoo.com
+eoozoo.com
eoqom.comeoriver.comeorygadw.com
+eorzea.moeeosantpool.comeoss-hj.comeostatic.comep-china.net
+ep-eia.comep12.com
epaas.netepaiclub.comepailive.com
+epajin.comepalfish.comepandian.comepanshi.comepassway.comepay.com
+epbiao.comepchina.com
epcnn.comepcservicio.com
epcsw.comepd3.com
epday.comepeaksport.comepeimall.comepeiyin.comepermarket.com
epesr.comepet.comepetbar.comepetpet.comepexpo-asia.comephen.me
+epian1.comepichust.comepinautomation.comepinduo.comepinduoduo.com
+epinga.comepinhoo.com
epinv.com
+epinzu.com
+epjike.comepjob88.com
epkey.com
+eplove.com
epnaz.sbs
epoos.com
eprcw.com
+eprezi.comepsonconnect.comepstsoft.comeptchina.com
eptsz.comepub360.com
epubchina.com
+epubit.comepweike.comepwitkey.comepwk.com
epzcw.com
+eqding.comeqh5.com
eqidi.comeqie.com
eqifa.com
+eqigou.comeqingdan.com
+eqixiu.comeqiyingxiao.com
eqmis.com
+eqmobi.com
+eqnvip.comeqoavtbu.comequdong.netequipmentimes.com
eqxiu.com
+eqxiu.mobi
+eqxiul.com
eqxiuzhan.comeqyn.com
+eqz.ccer07.comer8gmvwi54p5x1.comeraclean.comeran123.comeranet-dns.com
+eranet.com
+eranqi.com
erapp.run
+erbadu.comerbi941.com
erbingimg.comercc.ccercoabv.comerdaicms.com
erdangame.xyzerdangjiade.com
erddv.com
erdiamond.comerdianzhang.comerdong.siteerdosrcb.comerentalcarpro.com
ereoo.com
+ereter.comereuiib.com
erfang-ic.comerg2008.com
erg3r.com
ergcb.comergecdn.com
+ergedd.comergediandian.comergeduoduo.comergengtech.comergengtv.comergouzi.fun
ergvx.comerhua.ccericdeng.net
erichfund.comericracher.com
+eriqua.comerji.comerji.hkerji.neterjianglin.comerjiren.comerke.com
+erkuai.com
+erldoc.comerlo.vip
erlou.com
+ermain.com
ermao.com
+ermiao.comernaonet.com
ernest.me
+ernxzc.com
+eroacg.comerongdu.com
+erp321.com
+erp321.net
erpang.ccerpingge.com
erpwd.com
erro.life
ersantian.com
ershicimi.com
ershouhui.com
ersjk.com
+ersoso.comert.icu
+ert295.comert7.comertmineq.comertonggushi.comertongkongjian.comertongtuku.com
ertoutiao.comerumesukopi.comerun360.comerxin360.comerya100.com
+eryajf.neteryanet.comeryyutu.com
es-soccer.com
es100.com
es123.comes2q.comes9e.comesa2000.comesafenet.com
+esavip.com
esayworld.comesc.show
escdn.com
escjy.com
esdaxiagu.comesde.ccesemseo.comesensoft.com
+esfimg.comeshangle.com
+esheep.comeshenlin.comeshimin.comeshiyun.infoeshop-switch.comeshopb2c.comeshow365.com
+eshufa.comeshukan.com
eshuu.com
eshzp.com
esilk.netesinidc.comesipark.com
esisroldh.org
esjlf.com
+esjson.com
+esk365.comeskimall.com
esky8.comeskysky.comeslosity.comesm8u7oe9ci5.comesmartwave.comesmod-beijing.com
esnai.com
esnai.net
esni.tech
esnpc.com
+esoboy.com
esoho.orgeson.orgesoo.org
+esound.vip
+esouou.com
esoyu.comespeedpost.comesplus.clubespnlol.comesr.com
essaystar.com
+essbjs.com
essca.comessclick.com
+essemi.comessencefund.com
+ession.com
essjj.comesstglobal.com
+essurl.com
+esswye.com
essxp.com
essyy.comestelchina.com
estory365.com
+estr82.comestrongs.comestudychinese.com
esugimoto.com
+esun21.com
+esun88.comesuniao.com
+esunny.comesurging.com
esutc.sbs
eswin.comeswincomputing.com
+eswlnk.com
eswxj.com
eswzx.comesy.orgeszmall.com
+esztsg.org
+esztyg.com
+eszwdx.com
eszyb.comeszzxxz.comet-fine.comet59.com
et998.cometagrfid.com
+etagri.cometao.com
etaog.cometaswisswatch.com
etccenter.com
etcchebao.com
etcsd.com
etczs.net
+etelux.cometernalsakura.cometernalsys.cometescape.com
+etest8.com
+eteste.com
etf.group
etf88.com
etg56.comethainan.com
ethan.pubethercap.comethfans.orgetian365.com
etiantian.com
etiantian.netetimeusa.cometiv.meetjournals.com
+etlong.cometmchina.com
etmoc.cometmwanju.com
+etocrm.cometomlink.com
eton-tech.cometongdai.com
etongguan.cometongli.com
+etonjx.cometonkidd.cometool.cc
+etoote.com
+etoote.netetoplive.cometoptour.cometoubao.cometoujie.com
etowz.cometp095rr.xyz
+etpass.cometpowers.cometrack01.cometrack02.cometrack03.cometrack04.cometrack05.cometrack07.cometrack08.cometradegx.cometranshare.cometrd.org
+etrump.net
+ets100.com
etsc-tech.com
+etsoon.cometsstar.cometstock.net
+ett.cc
ettbl.orgettdnsv.comettshop.cometu6.com
etuan.com
etudu.com
+etuoyi.cometwgzkce.com
etxcs.com
etycx.cometyy.com
etyyy.com
+etz927.cometzj.net
etzzy.com
eu4cn.comeub-inc.comeuci-software.com
eudic.net
+eudovb.com
+euejia.com
+eueueu.com
eueui.comeufc.org
+eugnnn.com
+euhhob.com
+eui.cc
euibe.com
euino.com
+eulike.comeulixos.comeumt.comeuratao.comeureka.name
+eurkon.comeurochinesedaily.comeuropapa.com
zzmingtai.comeuropewatch.comzzmetro.comeursell.comeusercenter.comeushophq.com
ev123.com
ev123.net
ev3ds.comev98.com
+eva001.comevacellbio.comevacg.coevan.xin
+evancg.comevask360.com
evcar.com
+evcard.com
+evcard.vip
+evdays.comeve.moeevebattery.com
+evening.meever9527.comeverbaas.comeverbox.neteverbright.comeverdns.comevereasycom.comeveredit.net
+everet.orgevergrande.comevergrandeauto.comevergreen-plastics.com
everisker.comeverknight.netevernakedcake.comeversino.comeverstar.xyz
everstray.comeversun-chn.comeverybodygame.comeverybodysuo.comeverychina.comeverydo.com
everyinch.neteveryonejun.comeveryouthtech.comevestemptation.com
+evewan.comevfchina.com
evget.comevgezphv.com
evhui.com
evideostb.comevileyesaint.comevilwind.fun
evinchina.comevjkkti.comevketang.comevkworld.net
+evlook.comevoc.comevotrue.com
evpartner.comevv1.comevzhidao.comevzs.comew-wirestripping.comew52.comew80.comew80.netew80yun.comew9z.com
ewaga.com
ewang.comewaninfo.comewarecomputer.com
ewatt.com
ewceo.comewdcloud.com
ewdtx.comewebeditor.netewebsoft.com
+ewecha.comewei.com
+eweiqi.com
eweis.comewen.coewenyan.com
ewide.netewidecloud.comewidewater.comewidewater.netewie.netewin007.comewinall.comewku.com
ewoka.comewomail.comeworksglobal.comeworldship.com
ewozr.comewpeinfo.com
+ewqcxz.com
+ewsaas.com
+ewsdxc.comewstudy.com
+ewt360.com
ewteacher.comewtp.comewtp.org
ewzum.com
ex-silver.com
ex-starch.com
+exam58.com
+exam76.com
exam8.comexamcoo.com
+examda.com
examebook.com
examk.com
+exampx.com
examw.com
+exands.comexaphotons.com
+exasic.com
exbaotuan.com
+exbapp.com
exbot.net
+excake.comexcalibur.link
+excbio.com
+excean.com
+excel8.comexcel880.comexcelcn.com
excelhome.netexcelpx.com
+exchen.netexcm.net
+exd.design
+exdoll.com
exeedcars.comexetools.com
exexm.comexezhanqun.com
+exfree.comexgpykzm.com
+exhera.comexia.xyzexiaoba.com
+exinee.comexmailgz.comexmailqq.com
exmoo.com
exmrw.com
exnpk.comexntech.com
+exo-mk.com
+exound.com
exp99.com
expba.com
+expdns.net
+expin.siteexpingworld.com
expiredns.netexpirenotification.comexpirepausedns.com
expku.comexpoeye.netexponingbo.com
+expoon.comexpoooo.comexpoquan.com
+expotu.comexpowindow.comexpresscompanynetwork.com
expreview.com
+expsky.com
exsvc.netext2fsd.comextbrand.com
extech-sh.comextfans.comextron-tech.com
extscreen.comextstars.comexuanfang.ccexuanpin.comexuanshi.com
+exuekt.comexuezhe.comexxstar.com
+ey-app.com
ey100.comey3g.comey99.comeyangguang.comeyangmedia.com
eyangzhen.comeyao168.comeyaobei.comeyasglobal.comeyasgloble.com
eyatv.com
+eybook.com
+eycfhb.com
eycms.net
+eydata.net
eydns.com
+eye024.com
+eye027.comeye0712.comeye0731.comeye0746.comeye0770.comeye0771.comeye0773.comeye0774.comeye0775.comeye0776.comeye0777.comeye0779.com
+eyeabc.comeyee.com
+eyejin.comeyeofcloud.comeyeofcloud.neteyepetizer.net
+eyesar.comeyeshenzhen.com
eyeso.net
eyhsj.com
eyili.comeyingchuang.comeyingyubao.comeyoodns.comeyou.comeyou.net
eyoubaidu.comeyoucms.comeyourbusiness.comeyprint.com
eyuangong.comeyuconnect.comeyugame.comeyunidc.comeyunker.comeyunzhu.com
+eyuyan.com
eyuyan.la
+eyuyao.com
+eyuzhu.com
+eywedu.com
+eywedu.net
+eywedu.org
+eyy168.com
+eyyyye.comeyzeafp.com
eyzqi.xyzeyzuhmea.sbsez-leaf.com
+ezagoo.com
+ezaiai.comezca.orgezchip.techezcname.com
ezcpt.com
ezcun.comezdnscenter.com
ezeroshop.com
+ezfuns.com
+ezgckg.com
ezhangdan.comezhangu.comezhayan.comezhicai.comezhijiantuoluo.comezhiwan.comezhu.com
ezhuchina.com
ezhun.comezindie.com
eziot.comezitong.comezlippi.com
ezliushao.com
ezloo.com
+ezlost.comezne.neteznowdns.comeznowdns.netezone-h5.com
ezonsport.com
ezpro.proezreal.cool
+ezrpro.com
+ezsmth.com
eztcn.com
+eztest.orgeztvnet.com
+ezucoo.com
ezviz.com
ezwan.comezwanjia.com
ezxar.xyzezyotkp.com
+f-0.cc
f-dou.com
f-insight.comf-stack.org f.bizf.cxf008.com
f0580.com
f0758.comf09qgja1.comf1-shanghai.comf139.com
f1688.comf1c.lolf1zd.com
f2dbf.com
+f2time.comf315.cc
+f32365.com
f3322.net
f3322.orgf41g.comf455.comf499.comf52o04oylrbmfw.comf537.com
f5432.com
+f54321.comf5cs.comf5gh.comf5sd.comf5yx.comf61a.comf61b.comf6yc.com
f7777.netf7ed.comf836.comf971.comfa-today.com
fa-tojoin.com
+faakee.com
faanw.com
+fabang.comfabao365.comfabaofoundation.comfabaogou.com
+fabiao.comfabiaoqing.comfabigbig.comfabu.iofabu114.comfaburuanwen.comfabuzhushou.comfacaishiyi.com
+facang.com
+facash.comface-plus-plus.comface100.netface2ai.comfaceboer.comfacebooksx.com
facecloud.netfacehufu.com
+faceid.com
facephoto.comfaceplusplus.comfacernt.com
faceu.com
+faceu.mobi
faceu.net
+faceui.com
faceunity.com
fachcloud.com
facri.com
factchina.com
factj.comfactube.com
+fadada.comfadaren.comfadesky.comfadfunds.com
fadior.ccfadoudou.com
fadsc.comfadu.cc
fadui.com
fafa9.comfafachen.com
+fafacn.com
+fafaku.comfafawang.com
+fafeng.com
+fafuli.comfagaoshi.com
+fageka.com
fagua.net
fahai.comfahao.ccfahuolianmeng.com
faidev.cc
+faidns.comfaihdusr.comfaimallusr.com
faioo.com
+faipod.comfair1688.com
fairguard.netfairguard.tech
+fairhr.comfairygui.comfairysen.comfairysoftware.com
fairytest.com
+faiscm.com
+faisco.com
+faisys.com
+faiusr.comfaiusrd.com
faiww.comfajiayun.comfajihao.com
+fakeloc.ccfakeluxurywatches.comfalconsending.comfalomall.com
faloo.comfameile.netfameirui.comfamen163.comfamen88.comfamenbaike.com
+famens.com
+famens.vipfamensi.com
+famicn.com
+famige.comfamiliacanina.comfamilyincloud.comfamilykoloro.comfamilylifemag.comfaminuo.comfamiyou.comfamousoffice.comfamulei.comfan-lun.com
+fan-md.comfan-tastic.funfan-xun.com
fan88.com
fanai.comfanbaike.com
fancl-vip.comfancyecommerce.comfandcode.com
fandengds.comfandian.comfandiankeji.com
fandongxi.com
fane8.comfanerkongjian.com
fanfannet.com
+fanfou.comfang-te.com
fang-zhou.comfang.comfang.xinfang24k.com
+fang33.comfang668.com
+fang91.com
fang99.cc
+fang99.comfangbaoqiang.netfangbei.org
+fangbx.comfangcang.comfangcece.comfangchan.comfangchanhz.com
fangcheji.comfangchengbao.comfangchengbaoapp.comfangchengganglvxingshe.comfangchip.com
fangcloud.comfangdaijisuanqi.comfangdaquan.com
+fangdd.comfangdichanceo.comfangdonggroup.com
+fangdr.comfangdudu.com
+fangfa.netfanggeek.comfangguchaju.com
fanghuafu.comfanghuihui.comfangjia.com
fangjiadp.com
fangkeduo.netfangkewang.com
+fangko.com
fangkuai.linkfangkuaiwang.comfangkuaiyi.com
+fanglb.com
+fangle.comfanglei8.com
fanglimei.com
fanglinad.comfanglist.comfanglitong.com
+fango8.comfangpaiwang.com
+fangqk.comfangrun.comfangshanzi.comfangshapot.comfangshengaxle.com
+fangsi.netfangstar.comfangtan007.comfangtangtv.com
+fangte.comfangtoo.comfangtoon.comfangtuwang.com
+fangtx.comfangwei315.com
fangweima.comfangwuyouxuan.comfangwuzaixian.comfangxiaobao.netfangxiaoer.comfangxin.comfangxinbao.comfangxinbiao.comfangxinmai.comfangxinzhuomian.com
fangxuela.com
+fangyb.com
+fangyi.comfangyiai.comfangying.tvfangyou.comfangyouquan.comfangyouw.comfangyuan028.comfangyuan365.comfangyuanhp.comfangyunlin.comfangyuyuan.com
+fangzd.comfangzew.comfangzhengip.comfangzhengshufa.comfangzhenxiu.comfangzhipeng.comfangzhouad.comfangzhoulawyer.comfangzhouqihang.comfangzhouzi.comfangzongguan.com
fanhai-hk.comfanhai8.comfanhaib.comfanhaic.comfanhangame.ltd
fanhaoyue.comfanhonghua.netfanhougame.comfanhtech.comfanhuaholdings.comfanhuan.comfanhuan.orgfanin.ccfaniuwenda.comfanjianhome.com
fanjinyan.comfanjunyang.zone
fankebang.comfankhome.com
fanli.comfanli001.netfanlibei.com
fanlicome.comfanlihe.comfanlihi.comfanlihotels.com
fanlisaas.comfanlitou.comfanmugua.netfannaojiputi.com
+fanooo.comfanpaijidian.comfanpanjidain.com
fanpusoft.comfanqiang.comfanqianzhushou.com
fanqie.imfanqiejiang.netfanqienovel.comfanqieopen.comfanqieopenpic.comfanqieopenstatic.comfanqieopenvod.comfanqier.com
fanqiesdk.comfanqiesdkpic.comfanqiesdkstatic.comfanqiesdkvod.comfanqietianqi.comfanqietuan.comfanqievv.comfanqiewin10.comfanqiexitong.comfanquanwang.comfanruan.comfanruanclub.comfanryes.com
+fans35.com
fans8.comfanshicekong.comfanshui.netfansiji.comfansimg.comfansjoy.netfansobattery.comfansoon.com
fansx.comfansyes.comfantablade.comfantaiai.com
fantaicdn.netfantalovelife.clubfantanggame.comfantasticbin.com
fantatech.com
fantawild.com
fante.comfantnet.comfantong.comfantsida.comfanttec.com
+fantuan.hkfanuc666.comfanuchdf.com
fanw8.comfanwantianyu.com
fanwe.com
fanwen118.comfanwenbaike.comfanwenq.comfanwenzhan.comfanxian.comfanxiang.com
fanxianma.comfanxiaojian.comfanxing.comfanxingshidaitech.com
fanxuefei.comfany-eda.comfany-online.com
fanyantao.comfanyeda.comfanyedu.com
fanyi.comfanyiba.net
fanyibase.comfanyigou.comfanyigou.netfanyijia.comfanyiqi.netfanyishang.comfanypcb.com
fanyu.com
+fanyu.workfanyuip.comfanzehua.comfanzhewenhua.xyzfanzhidu.comfanzhiyang.comfapharm.com
+fapiao.com
fapiao365.comfapiaobang.comfapselc.com
faqianjia.com
faqingtie.com
+far123.comfar2000.comfaradayfuturecn.comfareastcontainers.comfarenhui.com
farennews.comfarerdak.com
+farfir.com
+farisl.com
+farmkd.comfarmsec.comfarsee2.comfarsightdev.comfas-bee.comfasensor.comfasggjt.com
fashaoyou.netfasheng.org
fashengba.comfashilawfirm.comfashionszshow.comfashiontrenddigest.comfashuounion.comfasionchan.comfast-pregnancy.comfast.imfast666ioceywit93h8a.com
fastadmin.netfastcdn.com
fastchina.net
fastdo.cc
+fastgz.comfastidea.ccfastidea.mefastindexs.comfastliii.comfastmirror.netfastmirror.orgfastmis.com
fastmock.sitefastmovie88.comfastmyna.comfaston56.comfastonetech.comfastoper.comfastposter.netfastreportcn.com
fastsdwan.comfastsoc.comfastsoso.ccfaststatics.com
+fat999.comfatangmedia.com
fatbobman.comfateadm.comfatedier.comfatfreader.comfatherai.com
+fatiao.profatu.cc
fatvg.comfaussefrance.comfaussemontrerolex.com
+favang.com
+favdeb.comfavopen.comfavoritefoodcompany.com
favorites.renfaw-benteng.com
+faw-vw.comfawaitui.com
fawan.com
+fawulu.com
fax52.com
+faxdns.com
+faxdns.netfaxianjingpin.com
faxianlaw.comfaxianpindao.com
faxingbao.comfaxingchina.comfaxingcn.comfaxingsj.comfaxingtupian.comfaxingzhan.com
faxiufang.com
+faxsun.com
+faxuan.net
faxy-tech.com
+fayifa.com
+fayiyi.com
fayufaguo.comfayunla.comfazhijx.comfazz.fun fb.mu
fbaichuan.com
fbank.comfbghrcqggrksty.comfbi.collegefbirdsmall.com
+fbjsgf.comfbkjapp.com
+fblife.com
fblsj.com
fbook.netfbsjedu.comfbtvnews.comfbuy365.comfbwlxwo.com
+fbxslw.comfbyvalve.comfc-adobe.xyz
fc-aliyun.xyzfc-cloud.xyzfc-smartglobal.xyzfc-smartserver.xyzfc-smartsystem.xyz
+fc0531.com
+fc0633.com
fc571.com
fc811.comfcachinagsdp.comfcaehnlx.sbsfcai.com
fcapp.runfcb16888.com
fcbox.comfcbs999.com
fcbsgroup.comfcbu.com
+fcchbj.comfccs.comfccscar.com
fcczp.com
fcg01.comfcg0770.com
+fcgasj.com
fcgby.com
+fcgcgs.comfcgdawanmatou.comfcgdxzs.comfcgfcjy.comfcgfzjy.comfcggnrl.com
+fcggsj.comfcghbxx.comfcghfnm.comfcgjhsp.com
+fcglib.comfcgmaple.comfcgsaps.comfcgsnews.comfcgstzjt.com
+fcgsxl.comfcguoan.com
fcgxt.comfcgxywl.comfcgzjchy.com
+fcgzph.comfcgzrkq.comfcgzrzyqxyj.comfcjjdbsc.com
fcjob.netfcjob88.comfcjuxian.com
fckpw.comfclassroom.com
+fcldaf.com
fcljt.comfcln.net
fclouddns.netfcloudpaas.com
fcnes.com
+fcpawn.com
+fcpiao.com
+fcport.com
fcpowerup.comfcrc114.comfcs1.comfcsc.com
+fcstor.com
fcszc.comfctaiwan.com
+fcvvip.comfcw0633.com
fcwei.com
fcxxh.org
fcyhw.com
+fcz360.com
+fczlsc.comfczx.comfd-trust.com
+fdbatt.com
+fdcyun.comfdczbstatic.com
fdddf.com
+fdeent.org
fdemo.comfdevops.com
+fdfhtl.comfdh6up750n.com
fdjzu.com
+fdkm88.comfdlbeckwai.com
fdleckwai.comfdlt.net
+fdmhmm.com
fdooo.comfdpx.comfdqfsdhb.cfdfdqh360.comfdrdzzuv.sbs
fdttgroup.comfduggvqeeorp.com
fdxww.comfdzq.com
+fdzzjs.comfe-cable.com
fe-mm.comfe2x.cc
fe520.comfe8fssm3nq.site
feadi.comfeanton.comfecmall.comfecn.netfecshop.comfedfby13.comfedlearner.netfedte.cc
+fedtop.com
+feeair.com
feeclouds.comfeed.ccfeedcoop.netfeedcoopapi.com
+feedou.comfeedsky.com
+feedsp.com
+feedss.com
+feeeco.com
feehi.com
+feejii.com
feekr.comfeelcars.comfeelchat.net
+feelec.netfeelingmarine.com
+feemoo.vip
+feepan.com
+feeyan.com
feeye.comfeeyeah.com
feeyo.com
+feeyun.com
+fegine.comfeheadline.com
+fei580.com
+feiair.comfeibajiasu.comfeibaokeji.comfeiben-starter.comfeibians.comfeibing.techfeibisi.comfeibisi.org
+feibit.com
feibo.comfeichangrice.comfeichangsu.comfeichong.netfeicool.com
feicui168.comfeicui99.comfeicuishuo.comfeicuiwuyu.comfeidacrusher.comfeidaep.comfeidaoboke.comfeidavalve.comfeidazuanji.com
+feidee.com
+feidee.netfeidieshuo.com
+feidou.com
feie.workfeierlaiedu.comfeifandesign.comfeifanindustry.com
feifantxt.netfeifanwangg.com
+feifdx.com
+feifei.comfeifeiboke.comfeifeixitong.com
feifeiyu.club
feiffy.ccfeifustudio.comfeige.ee
feigo.fun
feihe.com
feihonghb.comfeihu.me
+feihuo.comfeihutaoke.com
feijing88.comfeijipan.com
+feijiu.netfeijiubaowangluo.com
+feijix.comfeijizu.comfeikongbao.com
feiku.comfeiliao.comfeiliks.comfeilixi888.comfeilu.ccfeilvway.comfeimalv.comfeimanzb.com
feimao666.comfeimaolihao.com
feimaoweb.com
feimaoyun.comfeimayun.comfeimooo.comfeimosheji.comfeimoustex.netfeinews.comfeiniao.name
feiniaomy.comfeiniaowangluo.com
+feiniu.com
+feinno.com
+feiphp.com
+feipin.comfeipinzhan.com
+feiq18.com
+feirar.comfeiri-lube.comfeiruikeji.comfeisaidi.com
+feisan.net!feishu-3rd-party-services.comfeishu-boe.netfeishu-pre.net
+feishu.netfeishuapp-cdn.net
feishuapp.com
feishucdn.com
feishudoc.comfeishuhuiyi.comfeishuimg-boe.comfeishuimg-pre.com
feishuimg.comfeishukacdn.comfeishumeetings.comfeishuoffice.com feishuopenplatformrecord.com
feishupkg.comfeishuvc.comfeishuwx.netfeistech.com
feisu.comfeisuwx.orgfeisuxs.comfeitent.comfeitianwu7.comfeitsui.com
feituo126.comfeiwentianxia.comfeixiansoft.comfeixiaoqiu.comfeixiaoquan.comfeixiong.tv
feixue666.comfeixuege.comfeixueteam.net
feixunvip.xyzfeiyang.com
+feiyang.hkfeiyang233.clubfeiyangholiday.comfeiyangstar.com
feiyiblog.comfeiyin2016.com
+feiyit.com
feiyu.comfeiyuapi.com
feiyue.onlinefeiyueconglin.com
feiyun.ccfeiyunjs.comfeiyunxiazai.com
feiyuteam.com
+feizan.comfeizhaojun.com
+feizhu.comfeizhuke.com
feizhupan.com
feizhuqwq.com
feizutrip.comfelicitysolar.com
+feling.net
+felink.comfelix021.comfemrice.comfenbaner.net
+fenbei.comfenbeijinfu.comfenbeitong.com
fenbi.com
fenbu.net
fenby.comfencescn.com
fenchuan8.com
fenduotie.com
+fenfen.comfenfenriji.comfenfenwz.comfenfenzh.ccfeng.comfeng.pub
feng1.com
+feng89.comfengakj.com
fengba888.comfengbao.com
fengbaowo.com
fengbohan.comfengbolive.comfengcaijiaju.comfengchaowang.vipfengchengroup.comfengchizixun.comfengchuanba.comfengchui.ccfengchusheng.comfengcms.com
+fengcx.com
+fengdu.comfengduqi.comfengduxiaoshuo.com
+fengdz.comfengedu.comfengeek.comfengeini.com
+fengex.comfengfeng.ccfenggouhui.comfenghenever.com
fenghong.techfenghuaju.ccfenghuidongman.comfenghuoyunji.comfengimg.com
fengj.com
fengji.me
+fengji.netfengjiawang.net
fengjierc.comfengjing.comfengjinketang.com
+fengjr.com
+fengjx.comfengkeji.comfengkuangzaoren.comfengkui.net
+fengli.comfengliankeji.comfengligroup.comfenglil.comfenglingroup.comfenglinjiu.comfengmanginfo.com
fengmaniu.comfengmeng.netfengmidata.com
fengnayun.comfengniao.comfengniaohd.comfengniaojr.comfengone.comfengpengjun.comfengpintech.comfengread.comfengshangweekly.comfengshankeji.comfengshi8888.comfengshui85.comfengshuidashuju.comfengsung.comfengtai-china.com
+fengtai.tvfengtalk.comfengtao365.comfengtaochanglai.com
fengtianz.comfengtingsmart.comfengtouwang.com
fengtupic.com
fengwanyx.com
fengwatch.com
fengwenyi.com
+fengwo.com
fengwohao.comfengwusp.comfengxian110.comfengxianrc.comfengxiaotx.comfengxing007.comfengxinglihua.comfengxuan.cofengxuelin.com
+fengyan.ccfengyang.funfengyitong.namefengyubf.com
fengyun21.comfengyuncad.com
fengyuncx.comfengyunmusic.netfengyunpdf.comfengyushan.comfengzegroup.comfengzhan.vipfengzhangame.net
fengzixbs.comfengzusw.com
fenha.netfenjiji.netfenking.club
fenlei168.com
fenlei265.com
fenleidao.com
+fenliu.netfenmach.comfennessy.hkfenqile.com
+fenqix.com
fenqubiao.comfens.me
fensebook.comfenshua123.comfensishenghuo.comfenxi.cc
fenxi.com
fenxi.orgfenxiangdashi.comfenxianglife.comfenxiyi.com
fenxm.com
+fenxmi.comfenxuekeji.com
fenyu.netfenyucn.com
+fenzhi.comfenzijr.comfeotech.com
+fequan.com
+ferlie.netferlytc.comferro-alloys.comfersese.comfescoadecco.comfescogroup.com
feso.techfestaint.comfetion-portal.comfetiononline.com
fetionpic.com
+feucnp.comfeverassets.netfevermi.com
fevte.com
feydj.comff54.inkff63.com
+ff8828.comffalcon.comffan.com
ffasp.comffbuddy.com
+ffcell.com
+ffeeii.comffepower.comffff.ccffis.me
+ffjjsj.comffmarket.comffmomola.comffns.ruffpedia.com
ffphb.com
ffpk.asiaffpw1688.com
ffqpx.com
+ffquan.comffsgame.com
ffsky.comfft.plus
+fft123.com
fftub.comffxivhuntcn.com
ffzww.com fg.ccfgba.netfgcndigital.comfgeekcloud.com
fgfed.com
+fghi34.com
+fgidna.comfgjhyfujtyru.worldfgjhyfujtyru.xyzfgkj.ccfglt.net
+fgnwct.comfgo-teamup.comfgo.wikifgowiki.comfgtxnews.com
+fh1551.comfh21.comfh21static.comfh77.comfh77.netfh86.com
fh888.com
+fhb971.com
+fhd001.com
fheb-four.comfheb-six.com
fhekl.com
+fhgame.com
+fhldns.com
+fhldns.net
fhlun.com
+fhmion.comfhmv.comfhoverseas.comfhrl2018.com
fhrlw.comfhsfilm.com
+fht360.com
fhtao.comfhtj.com
fhtlw.com
fhtre.com
+fhwlgs.com
fhxct.com
fhxsy.comfhycedu.com
fhycs.comfhyx.comfhyx.hkfi-play.com
+fi0.ccfi94.comfibercrops.com
fiberhome.comfiberhomegroup.comfibocom.comfibodata.comfibrlink.net
ficochina.net
ficowshen.com
+fiehff.comfieldcommunicator.netfieldschina.com
fifcm.app
+fifedu.com
+fiffif.com
+fifsky.comfiinote.comfiio.comfiio.netfilcochina.comfile001.comfilediag.comfilfox.infofillersmart.comfillseo.comfilm-yuelongchina.com
filtonbcn.comfily.fun
+fim34s.com
fimmu.com
fimvisual.com
fin-shine.comfinaltheory.me
financeun.comfinancialstreetforum.comfinchina.comfinclip.com
finderweb.netfindhro.com
+findic.com
findic.kr
findic.tw
findic.usfindlawimg.comfindlinked.com
findmyfun.xyzfindoout.comfindshu.net
+findxk.com
+findxz.comfindyou.xin
+findzd.com
+finebi.comfineidc.comfinelybook.com
+finer2.comfinereport.comfinereporthelp.com
finetopix.com
+fineui.comfinewatchcare.comfineway.comfinewyx.comfineyoga.comfinger66.comfingerflyapp.comfingerstylechina.comfingertc.com
fingu.com
fingu.netfinjetchemical.com
+finndy.com
finogeeks.com
+finovo.comfinshell-cib.comfintechinchina.comfintechquan.comfinupfriends.comfinupgroup.comfinzfin.com
+finzjr.com
+fir.imfir.vipfiradio.netfire-api.comfire233.comfire2333.comfire24h.comfirebirdprint.comfiredata119.comfireemblem.netfireemulator.comfireflyacg.com
+firepx.com
firerock.techfiretry.comfireval.comfirevale.com
firhq.comfirstdrs.comfirstfood-cn.comfirstheartbeat.netfirstlinkapp.comfirstonesource.comfirstp2p.comfirstproduction.net
firwinds.site
fiscan007.comfish.vin
fish2bird.comfish3000.comfishapi.com
+fishcn.comfisherac.comfishfay.comfishflying.netfishin2boat.comfishing-sinkers.comfishingjoy.comfishings.bizfishlee.netfishmobi.comfishros.com
fishs.comfishtui.com
fishyoung.comfit-start.cofit-time.com
fit2cloud.comfitbrittnutrition.comfitit100.com
fitoneapp.comfittentech.com
fivecakes.com
+fivedo.netfivestarcompanions.comfivestarsolar.comfiwffw.buzz
+fix666.comfixdown.com
+fixhdd.org
+fixsub.net
fiyta.comfj-atfz.comfj10010.comfj133165.com
fj173.net
+fj2000.comfj3c.netfj96336.com
fj987.com
+fjadba.com
fjber.com
+fjbgwl.com
+fjc001.com
fjcee.com
fjcfv.com
fjcid.comfjcoffee.org
+fjcoop.com
+fjcqjy.com
+fjctyz.net
fjcyl.com
fjcyl.orgfjdaily.comfjdc.xyzfjdf.vipfjdh.com
fjeca.com
fjfoxiang.comfjfstdjk.com
+fjgdwl.comfjgkedu.com
fjguanyue.com
fjgwy.org
fjhcw.com
fjhps.comfjhxbank.comfjhxcaee.comfjii.com
+fjjcjy.comfjjltgyl.comfjjsp01.com
+fjjszg.com
fjjyt.net
+fjkqyy.comfjlb.comfjlh.comfjly.com
fjmlh.com
+fjmstc.com
+fjndwb.com
fjnet.com
+fjotic.com
fjpca.com
fjpta.com
+fjptfk.com
+fjptzx.comfjptzyt.comfjqionghai.com
fjsdn.com
fjsen.com
fjsfa.org
fjsfy.comfjsj.com
+fjsmjj.com
+fjstfc.com
+fjstjt.com
fjsxyqygl.com
fjtelecom.comfjtianya.comfjtv.netfjty1688.com
fjutu.comfjvs.orgfjwr.xyzfjxiehe.comfjxisuzi.comfjxn.comfjybyjjysos.com
fjycw.com
+fjyklc.comfjyunba.com
+fjyxdm.com
+fjyxgl.comfjyy.orgfjzixun.com
fjzol.com
+fjzyxx.com
+fjzzyz.net
fk100.com
fk445.com
fk446.com
fk447.com
fk662.com
fk882.com
+fkblog.org
fkcaijing.com
fkdex.com
fkdmg.com
fkdxg.comfke6.com
fkgou.comfkhdview.com
fkhongdan.com
fklhb.com
+fklngy.com
+fktool.comfkw.com
+fkw100.com
fkwatchtw.comfkxs.net
fkygo.com
+fkyuer.com
fkyun.com
fkyxt.comfl-game.net
+fl0632.com
fl160.com
fl168.com
fl365.com
+fl5.co
fl580.comflachina.comflamecdn.comflamesky.orgflamingcold.comflan1688.comflappingjet.comflaredup.com
+flash8.netflash8f.comflashgame163.com
flashgene.comflashkrypton.comflashmemoryworld.comflashv8.comflashwar.comflashwolfcn.comflashyc.net
+flatsh.com
flawcache.comflc.bet
+flc528.com
flclb.com
flduo.com
+fle078.com
flebm.com
fleetlogd.com
flexifont.com
+fleyun.comflhimalayandn.com
flidc.net
+fliggy.com
fliggy.hkflikfill.comflintos.comflip.funfliplus.com
flmgr.net
flmwp.comfloatingislandapps.com
floatmaze.com
flockypet.comflojqei.comflomoapp.com
flooc.comfloorb2b.comflorentiavillage.com
flower188.comflower33.comflowerknows.coflowever.netflowlbkj.comflowportal.com
flpsz.com
flpwb.com
fltau.com
+fltcsb.com
fltrp.comfluke-ig.comflutterchina.club
flvcd.com
flvpw.com
flvsp.com
+flvurl.netflxc.net
+flxdns.com
flxnj.comflxz.comfly-exp.com
+fly139.comfly1999.com
+fly2lan.ccfly3949.com
fly63.com
fly84.com
+fly998.com
+flyadx.com
flyai.com
flyancctv.com
flyco.com
+flycua.comflydigi.comflyenglish.com
+flyert.comflyertea.com
flyertrip.comflyfishx.comflyfunny.com
flygo.net
+flygon.netflyhand.com
+flyine.net
flyme.com
flyme.net
flymeauto.comflymeos.comflymeyun.com
flyml.netflymobi.bizflymodem.netflymopaper.com
flypetrel.com
flypy.comflysand.com
flysheeep.com
flytcloud.comflytexpress.comflyy.fun
flyzyblog.netflzc.com
+flzhan.comfm-uivs.com
fm058.com
+fm0754.com
+fm0758.com
fm120.com
fm365.com
+fm3838.com
+fm4399.com
fm520.com
fm918.net
fm960.net
fmapp.com
+fmbimg.com
+fmc123.comfmcf.cc
+zzmama.net
+fmd360.comfminers.comfmjzfwb.com
+fmkefu.com
+fmkjfw.com
fmmob.com
fmpan.com
+fmsdlb.comfmsh.com
+fmssrc.comfmswift.net
fmtt6.xyz
fmwei.com
fmwhahaha.com
fmy90.comfn-mart.comfn-tech.com
+fn.comfn01.vip
fn010.comfn02.vipfn03.vip
fn301.vip
+fnconn.com
+fnedge.netfnetlink.com
fnf-foods.comfnfcutlery.com
+fngz01.comfnji.comfnjiasu.com
fnjsq.comfnkq.comfnkslift.com
fnkvision.com
+fnmobi.com
fnnas.com
fnnsh.com
fnrcw.com
+fnrczp.comfnscore.com
fntbp.comfnvip100.com
fnysb.com
+fob123.com
fobmy.comfobshanghai.comfocalbrand.comfocalhot.comfocc.cc
+fochot.comfoconec.com
focus-efc.comfocus-eloan.comfocus-fusion.comfocuschina.comfocusjs.com
focussend.com
+fodaba.comfodexin.com
+fodian.net
+fodlab.com
fofa.infofofa.so
+fofcn.tech
fofen.comfogcloud.io
foghj.comfoguanghui.org
foioo.com
fojiaonet.comfojiaoyongpin.comfolidaymall.comfolij9nry5cxy8.com
folou.comfomen123.comfoneplatform.com
fonfu.appfongmong.comfongser.net
+fonian.comfonsoft.netfonsview.comfont.im
font6.com
+fontke.comfontong.comfoodaily.com
+foodbk.comfoodciexpo.com
+foodjx.com
+foodkz.comfoodmate.net
+foods1.com
+foodsc.net
foodspace.netfoodszs.comfoodu14.comfoofish.net
+fooher.com
+foojoo.com
fookunion.comfookwood.comfookyik.comfooleap.org
foomx.comfoooooot.comfootballbit.shopfootbig.comfootcdn.com
fooww.com
+foqian.comfor-compass.comfor-she.comfor-your-home.com
+for512.com
for68.comforbeschina.comforbetty.com
forbuyers.comforcecreat.comforcemz.netforcger.comforcloudcdn.comford.com
+fordgo.comforeignapi.comforenose.comforerunnercollege.comforesealife.comforeseamall.comforesightfund.com
+foresl.comforestfood.comforestpolice.orgforeverflourishtherapy.comforevermemo.comforeveross.com
forface3d.comforgame.com
forindata.comforkeji.comforkliftnet.comforlinx.comform-create.comformtalk.net
fornature.comforrealbio.comforrelaxing.comforshine.net
+forsou.comforthxu.comfortiortech.com
fortunebs.netfortunepdc.com
fortunevc.comfortwashingtonstallions.comforwardgroup.comforwe.storeforyone.comforyougroup.com
foryuanbo.com
+fos.cc
+foscam.comfoshanaosibo.comfoshanmuseum.comfoshannews.comfoshannews.netfoshanplus.comfoshanpower.com
fosss.org
fosun-uhi.com
fosun.comfosunholiday.comfosunmetal.comfosunpharma.comfothlaw.com
+fotile.comfotileglobal.comfotilestyle.com
fotoe.comfotomore.comfotoplace.ccfotosay.comfototuan.comfoumeng.comfounder.com
founderbn.comfoundercentury.comfounderchip.comfoundereagle.com
founderff.com
founderfu.com
founderic.comfounderinternational.com
founderit.comfounderpcb.comfounderpod.com
foundersc.comfoundertech.comfoundertype.comfoundgroup.netfounpad.comfountask.comfour-faith.com
fovmy.comfow.inkfox-studio.net
+fox008.comfoxconn.com
+foxera.com
+foxirj.comfoxmail.com
+foxphp.com
foxswatch.comfoxtable.com
foxuc.com
+foxwho.com
foxwq.com
+foxzld.com
+foyuan.netfozhu920.comfpcn.netfpdclub.net
fpdisplay.com
fpdvision.comfpftllc.com
zzlvjuren.comfpga-china.comfpgabbs.com
fpgaw.com
fphis.com
fphs5.com
fpliu.com
fpoll.netfpplskc.comfps7.com
+fpsace.com
fpwap.comfpxz.net
fq688.com
+fqapps.com
+fqfang.com
+fqfilm.comfqgj.netfqis.xin
fqjob.net
+fqlook.comfqnovel-op.comfqnovel.com
fqnovelim.com
fqnovelop.comfqnovelpic.comfqnovelstatic.comfqnovelvod.com
fqpai.com
+fqsckq.comfqworld.org
fqwqx.com
fqxdw.comfqxs.org
zzluohang.comfr-trading.com
+fr2007.comfractal-technology.comframemaker.comfrancissoung.comfranckfw.comfrancochinois.comfransty.comfranzsandner.comfraproperty.com
frdic.com
fread.comfredamd.comfree-863.comfree-api.com
+free-e.netfree-eyepro.comfree-img.comfreebuf.com
+freebz.netfreecat.workfreedgo.comfreedirlist.comfreedom2021.vipfreefrp.netfreegeeker.comfreehead.comfreehpcg.comfreeidea.win
freejishu.com
freekaobo.comfreekaoyan.com
freekeyan.comfreelycode.comfreelynb.com
freelynet.com
freemancn.com
freemdict.comfreemindworld.com
freemoban.comfreemudgame.com
+freeoa.netfreeqingnovel.comfreericheyes.comfreeshoppingchina.comfreessl.orgfreestyle666.com
zzllq.comfreetiku.comfreeuid.com
+freevm.com
freewhale.netfreeydch.comfreeyun.com
+freezl.netfrensworkz.com
freqchina.comfresh-ideas.cc
freshhema.com
freshippo.comfreshippomarket.comfreshnewsnet.com
frhdw.comfrhelper.com
friendeye.comfriends-exchange.comfriendship-match.comfright-tattoo.comfringe-zero.comfrlh168.comfroglesson.comfrombyte.comfromgeek.comfromshandong.comfromwiz.comfrontgatecanada.comfrontjs.com
frontopbd.com
frontopen.com
frontwize.comfrost-s.comfrostchina.comfrostwell.cc
frostwell.netfrostwing98.comfrtgraphite.comfruitday.com
frysb.com
+frytea.comfs-10010.com
+fs-ade.com
+fs-czx.comfs-eliza.com
+fs0757.com
fs121.com
+fs1982.com
+fs1999.comfs31.com
fs315.orgfs58.com
+fs7000.com
+fsabwy.comfsbankonline.com
+fsbdjc.comfsbinfei.com
+fsbqgd.com
fsbredbud.com
+fsccjy.comfscinda.com
+fscjkj.net
fscjx.com
fscm.tech
+fscmjt.com
+fscsps.comfsdafvdfu6796.asiafsdaton.comfsdss672.comfsdxzhpt.comfsecity.comfsemouse.comfseport.com
fsesa.com
+fsfsfz.com
+fsfund.comfsgechao.com
fsggb.com
+fsghgt.comfsgplus.comfsguangjun.com
+fsgzhg.com
+fshczf.comfshd.comfshh1688.comfshj118.com
fshsl.comfshuiren.com
fshzg.com
fsigc.com
fsjgchina.comfsjinlan.com
fsjoy.com
fsjrl.comfsjsdtc.comfsky.pro
fslgz.comfslinker.com
fsllq.com
fslsg.com
fsltsmhjq.com
fslyx.com
+fsmama.comfsmcled.com
fsmeeting.com
fsoet.com
fsohu.comfsoptronics.comfsoufsou.com
+fspage.com
+fspcdn.comfspinqiu.com
+fsrlsn.comfsruibin.comfsshenneng.com
fsspc.comfssptjj.comfstaoci.com
fstcb.com
fsthr.com
+fstrhb.com
fsukj.comfswchina.comfsxchina.comfsxinfengyi.com
fsxinquan.comfsxshjz.com
fsxsj.netfsyanhe.comfsygroup.com
+fsyhlz.com
+fsysyy.com
+fsyule.net
fsyyy.comfszhihuiyan.comfszhiko.com
+fszyjx.comft.tech
+ft0573.comft12.comft22.com
ft300.comft39.comft3e.comft98.com
ftaro.comftbj.netftcauction.com
ftcgj.com
ftcoaster.comftcwifi.com
+ftd.nz
+ftfast.com
+ftfund.comftfx.ink
fthformal.com
fthgz.comfthimalayandb.com
+ftium4.comftlcloud.comftls.xyzftmespro.comftoc.com
+ftsafe.comftsfund.com
ftuan.com
ftxad.comftxgame.com
ftxia.com
ftxsoccer.comftzn.netftzx.comfu-guan.comfu57.com
+fuanna.comfubangauctions.comfubaofei.comfubonplastic.comfucantec.comfuchen33.comfuchengshicai.comfuchuangyu.com
+fucol.clubfudaiapp.com
fudajishu.com
+fudajn.comfudakang.comfudanglp.comfudanmed.comfudanpress.comfudasafe.comfudian-bank.com
fudong188.comfudongdong.comfuduxuexiao.com
fuedf.orgfufeng-group.com
+fufuok.com
+fugary.comfuguantang.com
fugui.netfuhai360.comfuhancapital.comfuhanziben.comfuhaodaquan.orgfuhaoku.com
+fuhefu.com
+fuheng.orgfuhouyin.com
fuhuibao.club
+fui.im
fuiou.comfuioupay.com
fujfu.comfujiabin.comfujiangames.com
fujianmei.comfujianrc.com
fujiansme.comfujianyinruan.comfujinjiazheng.comfujinotrade.comfuju1.tvfuka.ccfukangqipai.com
+fukeha.comfukexie.comfulantv.comfuli1024.comfuliansheng.com
+fuliao.com
+fuliba.com
+fulijd.comfulimin.org
fulin.org
+fuling.comfulingwx.comfulinxiuxian.comfuliquan.comfulishemusic.com
+fuliti.com
fuliw.netfull-way.com
+0598rc.com0598job.com0598777.com0598128.com0597seo.com
+0597ok.com
0597music.com
+0597kk.com
+0596fc.com
+0595rc.com0595job.com0594sneaker.com0594hyw.com0594fake.com0594.com
+0592xl.com
+0592jj.com0592dsw.com
05927.com0591job.com
+058idc.com057x.com
+0579fw.com0579com.com
05790.com0578zhaopin.com0578rencai.com
0577qiche.com0577job.com
+0577hr.com0577home.net0577cnw.com0577365.net0577-it.com
+0575qs.com0575life.com0575bbs.com
0575.host0574nbjg.com0574bbs.com0573ren.com0573fang.com
+0571zp.com
+0571ok.com
+057191.com
+0570zs.com
+0570fc.com057.com0566job.com
+0566cn.net0564abc.com0563job.com
0561house.com055e8qn69j.com0559tea.com
+0559fc.com
+0558zp.com0555dsw.com
+0554zp.com0554shdz.com0554news.com0553zsw.com0552jie.com
+0552hf.com
+0551wl.com
+055178.com
+055110.com0550.com
+0546tx.com0546fdc.com
+0543hr.com
+054057.com053c.com
+0539fc.com
+0537yz.com
+0537ys.com0536weixin.com
+0536qz.com
0535-0411.com0533.net0533.com05321888.com
+053217.com0532.com
+0531wt.com0531wenxiu.com0531soso.com
+0531lx.com
+0531jb.com
+053135.com0531.com
052yx.com0528012.com
+0527zz.com
05273.com
+0523zz.com
+0523zp.com
+0523tx.net
05236.com0523114.com
051jk.com0518home.com
0517w.com
+0517cw.com0517.net
0516k.com
+0516ds.com
0515yc.tv0515smw.com0515auto.com
+051591.com0514.com
+0513zs.com0513011.com0513.org0513.net0512118114.com
0510syedu.com
+051058.com 05.gd04r0e3w2ac.com04qfw7m68o.com04ip.com
04com.com
+0479xx.com0472.com0470fcw.com
0470a.com0460.com0456yun.com
+0455zd.com0454.cc0453.com
0452e.com0451nkw.com0437.com
+0431cn.com0430.com0427.com
0421wcbzk.com0411zssy.com
+0411hd.com
0411e.com
+041101.com0411.com04075k2xgr.com03wy.com03tc.com03supin.com03k.org
+03fdcw.com
03fcw.com03dq.com
03964.com
+0391fc.com0379wan.com0379pfw.com0379home.com
+0378zz.com
+0374zx.com
+037398.com
+037201.com0371wang.com
0371jixie.com
036yx.com0368.com
+0357hz.com
0356f.com
+0355fk.com0354rcw.com0352fang.com0351fdc.com0351data.com
035110000.com
0335e.com
+033033.com0328.com0316yun.com0316.cc0311wifi.com
+0311hd.com03118888.com0311.cc
+0310it.com0310.co030mall.com
+030303.com02wq.com
02wan.com
02shu.com02pew65z89.com02lu.com02lb.com02a5ji7vso.com
029zp.com029yljj.com
+029yjy.com
+029xxw.com
+029wsw.com
+029shw.com029lvwo.com029k.com029judao.com029jiuda.com
+029900.com
+029558.com028yyyy.com028wzjs.com028sjkj.com
+028pxw.com
028px.com
028office.com028ltzx.com028kuaidai.com
028ip.com
028hr.org028honghai.com028hema.com
028desite.com028brother.com0283home.com
028-xhxgt.com
+027zpw.com027zikao.com027zhan.com
027zb.com
027yx.com027wcbyy.com027tytpf.com027tianlong.com
+027qyy.com
+027one.com027jsxh.com
+027idc.com
027hy.com027hxzy.com027htxt.com027hpit.com027hpedu.com
+027hhl.com027g3nkf40.com
+027eat.com027down.com027cloud.com
+027chx.com027chwl.com
027chuxun.com
+027art.com027aige.com027accp.com
027965888.net0279.net02766667777.com
02727.com02712122.com0270.cc
+026idc.com
025zp.com
025xl.com
025sc.com
025nj.com025kaiyi.com
025ct.com
02516.com
+024zxw.com
+024jsq.com024huada.com
024hh.com024heyi.com
+024fzy.com024fuwu.com
024fuchan.com024frde.com
+024eps.com
024bj.com
+024888.net0245.cc
02405.com
023zp.com
+023yts.com
023up.com
023sm.com023gmdk.com
+023fyy.com
+023dns.com
+023dir.com023cq.cc
+023086.com022v.com022sunny.com022shui.com022s.com
+022net.com
022meishu.com0221155.com
+022003.com
021zhuang.com021yongzhuo.com
+021wfz.com
021tk.com
021sports.com
+021ren.com021phone.com021lawfirm.com
021jingwu.com021jingwei.com
021ja.com
021images.vip
021images.com021hunbohui.com021huaying.com021gjhb.com021east.com021dzjx.com
021dx.com021dianyuan.com
+021byb.com
021bolang.com
02163.com02156506666.net0214.com021.net021.com021-zszx.com
+021-tp.com
020zp.net020zhucegongsi.com
020ym.com
+020suv.com
+020job.com020h.com020bdqn.net
020banjia.net
+020883.com0208.com020.net020.com01zhuanche.com01zenith.net
01yun.com01yuanma.com01yo.com01wb.com01w.com
01teacher.com01rv.com01p.com01ki.com
01jzw.com
01jplink.site
01isp.net
01isp.com
01hub.com01hr.com
+01hour.com
+01home.com
01hklink.site01faxing.com
01dou.com
01caijing.com
01bzw.xyz01bzw.us
01amlink.site01811ma.com
016sf.com
+0158by.com
01401.com
+014.cc0138.com
01368.com0135135.com0123456789.com0123401234.com011.com010zaixian.com
010lf.com010jianzhan.com010fang.net
010dsmzyy.com
010dh.com010dell.com
+010cns.com010bjzs.com
010bianhu.com010b.com01095113.com01058511989.com
+010237.com0101ssd.com0101shop.com0101semi.com
0101e.com0101cdn.com
+010155.net
010123456.com
01-cf.com00y9334535.com00wv.com
00txt.com00tu.com
+00tera.com00shu.la
00shu.com00mi.com00it.net00ic.com
00cha.net
00cha.com
00cdn.com00bx.com009y.com
+009job.com0098118.com
0090u.com008sport.com
008gj.com0086org.com
0086l.com
00817.com
+007szx.com
+007swz.com007shoes.com
007qu.com007card.vip
00791.comfullics.com
fulllinks.comfullluckcalendar.comfullmetalnas.asiafullstack.love
+fulou.lifefultree.comfulu.com
+fumake.comfumi.comfumiaoyinpin.com
fumin.comfumu.comfumubang.comfumuhui.com
+fun.tv
+fun2ex.com
+fun4go.com
+funcdn.comfunctionads.comfund001.comfundebug.comfundebug.net
fundog.ccfundrive.com
+funenc.com
funengscm.comfuneralchain.comfunfungolf.com
fungj.comfuni.comfuni365.comfuninput.com
funiutang.net
+funjsq.comfunletu.com
funliving.com
funnull01.vip
funnull31.com
funnull33.comfunnullv27.comfunnullv28.comfunnullv29.com
funnycore.comfunnyplaying.comfunpaer.com
funplay66.comfunqipai.comfunsens.comfunshareamusement.comfunshion.comfunshion.netfunshion.tv
funshipin.comfuntouchos.comfuntoygame.comfunwear.com
+funxun.comfunyard-hotels.com
+funyqq.comfupin832.comfuqi368.comfuragon.comfurama-beihai.com
furenkeji.com
furongedu.comfurrybar.comfurrychina.comfuruijiaju.vipfusaide.com
fushengal.comfusiling.comfusion-inte.com
fusion.designfusionappl.comfutaike.netfute.comfutianlvshi.com
futu5.com
+futuau.comfutuesop.comfutufin.com
+futuhn.comfutuniuniu.com
+futunn.comfutureengineer.orgfutureprize.orgfuturescircle.comfuturescontest.comfutustatic.com
fututools.com
fututrade.comfututrustee.comfuwa.org
fuwai.comfuwaliuxue.comfuweivision.com
fuweiwang.com
fuwit.comfuwj.comfuwo.com
+fuwuce.comfuwucms.com
fuwuqinet.com
+fuwuqu.com
+fuxila.com
fuxinbank.comfuxinghf.comfuxingtech.comfuxingwang.comfuxunpay.comfuyangtv.comfuyaogroup.comfuyaozb.comfuyaozhubao.com
fuych.netfuyinchina.com
fuyingdai.comfuyingyanke.comfuyiwang.netfuyou.onlinefuyou888.com
fuyoubank.com
fuyougame.comfuyoukache.comfuyuan5.comfuyuanmoyu.com
fuyuanshu.comfuyuehotels.comfuyuncc.comfuyuncun.comfuyunjiasu.comfuyuzhe.com
+fuzadu.comfuzamei.com
fuzeetech.comfuzegame.com
fuzfu.net
+fuzhhc.comfuzhimao.comfuzhou61.comfuzhoufashi.comfuzhuangwang.comfuzhugo.comfuzianet.com
+fvfvxs.com
fview.com
fvo2o.comfvti.comfw-12365.comfw365.online
+fw4.co
+fw4.me
+fwcfwg.comfwcranes.comfwcx315.comfwdq.com
fwdqw.com
fwfly.comfwhzxxgbyy.com
fwkpf.com
+fwlxtc.com
+fwqbdn.com
fwqtg.net
fwsir.com
+fwtoys.comfwvv.net
fwxgx.comfwxhvvd.com
+fwzjia.comfx-jgworks.com
+fx-plc.com
fx120.netfx168api.comfx168vip.comfx3q.com
fx678.com
fx678.netfx678img.comfx678red.com
fx696.com
fx898.comfxbaogao.com
+fxcdev.comfxclass.net
+fxcsxb.comfxcw.comfxdp.comfxe0898.com
+fxeyee.com
fxgz8.com
fxian.org
+fxiang.comfxiaoke.com
+fxjia.shop
+fxkedu.com
+fxkjnj.comfxl1950.com
fxlbb.com
fxlbl.comfxltsbl.com
+fxm.sofxngpih.comfxo2opt.com
fxpai.com
fxpan.com
fxqrf.comfxsw.net
+fxtrip.comfxtrips.com
+fxw.la
fxwst.comfxxw.net
fxxww.netfxxz.comfxzb.vip
fxzhj.comfxzhjapp.com
+fxzygc.comfy-data.comfy-game.com
fy027.com
fy169.netfy2d.comfy35.comfy65.comfy98.com
fyaaz.org
fyage.com
fyapi.net
+fybiji.com
fybxw.com
fycpu.com
fyddj.comfyddjys.com
+fydeos.com
fyeds.com
+fyeds0.com
+fyeds1.com
+fyeds2.com
+fyeds3.com
+fyeds4.com
+fyeds5.com
+fyeds6.com
+fyeds7.com
+fyeds8.com
+fyeds9.com
+fyeedu.net
fyfch.com
+fygame.com
+fygdrs.com
+fygift.com
+fygmbc.comfygsoft.com
+fyigou.com
fyjsz.net
fylcg.com
fyluo.comfymall0.comfymall1.comfymall4.comfymall7.comfymall9.com
fymallqa0.com
fymallqa1.com
fymallqa2.com
fymallqa3.com
fymallqa4.com
fymallqa7.com
fymallqa9.com
fynas.com
+fynews.net
+fyrcbk.comfyrexian.com
+fyrwzz.com
+fysfzk.com
+fysjbj.comfysoft3.com
fytcw.comfythbkj.comfytxonline.comfytz.net
fyuanpack.comfyun.ccfyun.org
+fyvart.com
fywip.comfywx.cc
+fyxfcw.com
+fyxxcl.com
+fyxxwb.comfyxz.com
fyydnz.ccfyyljkgl.comfyyy.com
fyyyc.com
fyzku.comfz-aefi.com
+fz0752.com
fz222.com
fz2sc.com
fz597.com
fzahw.com
+fzaqjy.com
fzbbk.com
fzbidding.comfzbingo.comfzccpit.org
+fzcpos.com
+fzcyjh.com
fzddg.com
+fzdmag.comfzdzyun.com
fzele.comfzengine.comfzentertainment.comfzfinancing.com
fzfrp.com
+fzfzjx.com
+fzg360.com
+fzggyl.com
fzghy.comfzithome.com
fzjcznkjw.com
+fzjdct.com
fzjxr.com
fzjxw.com
fzkjg.comfzl7.com
fzlawyers.net
+fzlbar.com
+fzlean.com
fzlft.com
fzlol.com
+fzmama.netfzmeetdecor.com
+fzn.cc
+fzrsrc.comfzsdtkq.com
+fzshbx.org
+fzslyy.com
fztheater.com
fzwcn.com
+fzwhzn.com
+fzwtqx.com
+fzwtxx.comfzwx365.comfzwxxcx.comfzxiaomange.comfzxm.comfzxyyqd.com
+fzyfan.com
+fzyfan.net
fzyfs.net
fzyun.netfzzhaobiao.comfzzhuoyi.comfzzqcdn.comg-biomed.comg-cores.comg-medon.com
g-var.com
+g12345.comg12e.comg188.netg1d.netg1yx.comg2.linkg2h3.comg2us.com
+g2work.com
+g32365.comg3bocaitong.comg3d.org
g3img.com
+g3user.com
+g3voip.com
g3wei.comg4weixin.comg55m94b1za.comg59p.comg5h4.comg5kj.comg6hmfy1ttg.com
g768r.com
g77775555.com
g80mx.com
+g87c9y.com
g88885555.com
g88886666.comg983.comg9china.com
ga001.com
ga002.comgaaamee.comgaapqcloud.comgac-capital.comgac-nio.com
+gacfca.comgacfcasales.comgacfiatauto.com
+gaclib.netgacmotor.com
+gacrnd.comgacsofinco.comgadanhua.comgaeadata.comgaeamobile.net
+gafata.com
gafei.comgafencuchina.com
+gagaga.icugagaga.tech
+gagahi.comgagaslklxjasdkafj.comgahwilertaxservice.com
gahxt.comgai.net
gaiabiohx.com
gaiamount.comgaiaworkforce.comgaibang365.com
+gaibar.com
gaibieshu.net
+gainda.netgaineng.net
+gainet.com
gaini.netgainscha.com
+gairuo.com
gaitu.comgaituba.comgaitubao.comgaitubao.netgaituya.comgaixingchang.com
+gaixue.comgaiyadajidali.comgaiyazhanlan.comgaizhui.com
+gala-v.comgalaxix.comgalaxy-geely.comgalaxy-immi.comgalaxyasset.comgalaxycarepair.comgalaxydreams.sitegalaxyfont.comgalaxyinfo.comgalaxyns.netgalinharoxa.comgallopgazelle.com
galqs.com
+galsun.com
galudisu.info
galvincdn.com
gamder.ccgamdream.comgame-as.comgame-client.comgame-props.comgame-reign.com
game10000.comgame112233.com
game12315.com
+game13.com
game2.comgame234.comgame345.comgame3vs7novel.com
game5.comgame5399.comgame5iw.comgame773.com
+game78.comgame798.comgame80s.comgame900.com
game95.cc
+game9g.comgameabc.comgameabc2.comgameabc2.netgameapp.club
gamebaike.comgamebar.comgamebean.comgamebean.netgamebee.netgamebonfire.comgamebto.comgamebuns.comgamecat.fungamecatstudio.comgamecomb.com
+gamed9.comgamedachen.com
+gamedo.org
gameducky.comgameegg.comgameexp.com
gamefeile.com
+gamefk.com
+gamefm.comgamegamept.com
+gamege.com
gamehaopu.comgamehome.tvgameinns.comgameitop.comgamejym.comgamekee.comgamekezhan.comgamekuaishou.comgameley.comgameloop.comgameloop.fungameloveman.comgamemale.comgamemcu.comgamemei.comgamenow.club
+gameol.com
+gamepf.comgamepingce.com
gamerboom.comgameres.com
gamerhome.com
gamerhome.net
gamermake.comgamersky.comgamersky.netgamerstorm.com
+gamesh.comgameshr.comgamesifu.comgamesir.comgamestarfield.com
gametanzi.comgametaptap.comgametdd.comgametea.comgametea.netgamethk.com
gametrees.com
+gamett.net
gameweibo.comgamewifi.netgamexdd.comgamexhb.comgamexun.com
+gamexz.comgameyisi.com
gamfe.comgammatimes.com
gamutsoft.com
gamux.orggan-ren.com
gandi.netganduee.comgangduotech.com
+ganggg.com
gangguan8.com
gangguana.comganghaowang.comgangjiajieli.comgangpaibao.com
gangqinpu.comgangqinxiansheng.comgangshenglian.comgangyuan.com
+gangzi.org
ganhuoche.comganhuodaquan.com
ganji.comganjiangrc.com
+ganjin.comganjistatic1.comganjistatic2.comgank-studio.comgank.iogankang.comgankaosheng.com
gankgames.com
+gankh5.com
ganlj.com
ganlongjt.com
ganlv.orgganlvji.com
+ganniu.com
+ganode.org
+ganpco.com
ganqi.com
ganqi.net
ganqing10.com
ganso.netgansuairport.com
gansulong.comgansumuseum.comgansuyouxi.com
gantanhao.com
gantanhao.vip
+ganwan.com
+ganxb2.com
ganxi.comganxianw.comganxianzhi.win
+ganyu8.net
+ganzhe.com
ganzhishi.comgao-shou.com
+gao.bogao.comgao4.comgao7.comgao7gao8.com
+gaobei.comgaobiao.xyzgaocangyun.com
gaocegege.comgaochun.info
+gaoda8.comgaodabio.comgaodage.comgaodangbiao.com
gaode.comgaodilicai.comgaoding.comgaoduanqianzheng.comgaodugj.comgaoduguoji.com
+gaodun.comgaodunwangxiao.com
gaofang.cloudgaofangcache.comgaofangm.comgaofangz.comgaofans.comgaofeie.com
+gaofen.comgaofenplatform.comgaofushuai.com
gaogpress.comgaogulou.comgaohaipeng.com
gaohangip.com
gaohr.com
+gaoimg.com
gaoji.ren
+gaojie.comgaojihealth.comgaojipro.com
+gaokao.com
gaokao365.com
gaokao789.comgaokaobaoming.comgaokaohelp.comgaokaomeishu.com
gaokaopai.comgaokaoq.comgaokaozhiku.comgaokaozhitongche.com
+gaokin.comgaokong.orggaokowl.com
gaokw.com
+gaokzx.comgaolihanjie.com
gaolouimg.comgaomeluo.comgaomizixun.com
+gaomon.netgaopaiwood.comgaopeng.comgaopinimages.comgaopost.comgaoqingdianshi.comgaoqinghua.comgaoqingpai.comgaoqiwenda.comgaoqixhb.com
gaore.comgaosafe.com
+gaosan.comgaoseng.com
+gaoshou.me
gaoshouvr.comgaoshouyou.comgaosiedu.comgaosivip.comgaosouyi.com
gaosu.comgaosudu.com
+gaotang.cc
+gaotie.netgaotieshike.com
gaotu006.clubgaotu100.comgaotuxueyuan.comgaowoip.comgaoxiaobang.comgaoxiaojob.com
gaoxin123.comgaoxincarbon.com
gaoxinedu.netgaoxinkc.com
gaoyawang.comgaoyizaixian.com
gaoyoujob.comgaozhaiedu.comgaozhidazhuan.comgaozhongwuli.com
gaozhouba.comgaozi365.com
+gap.hkgapitech.comgara.ccgarden-aquarium.comgardencn.comgarleden.com
+garmin.comgarmuri.com
+garnoc.com
+garphy.com
+garply.comgarrico.com
+garyee.comgas-analyzers.comgas-turbine-parts.com
+gas775.com
gasfw.com
+gasgfi.com
+gasgoo.com
gashr.com
gaspeedup.comgasshow.comzzlirui.com
gaszx.comgatclub.comgate-dhgames.comgateface.comgather-dns.comgathernames.comgatymciu.com
+gavill.comgavindesign.comgaxgame.comgaxrmyy.com
gaywb.comgazellegames.net
gb324.comgbase8a.comgbasebi.com
gbdex.com
gbgba.com
+gbhome.com
+gbi324.com
gbiac.net
+gbicdn.com
+gbicom.comgbii324.com
+gblhgk.com
gbofd.comgbox.pubgbox.run
+gbphar.com
+gbpjam.comgbsrobot.comgbstape.com
gbt88.com
gbtma.comgbtranswins.com
+gbw114.comgbym.netgbzc6688.com
gc-zb.com
+gc0771.com
+gc1616.comgc39.com
gc600.com
gccdn.netgcchina.com
+gccmgw.com
+gccrcw.comgccwsry.site
+gcdcrs.comgcgd.net
gchao.com
gchbs.com
gchhotels.comgcihotel.net
gcimg.netgcjc.com
+gcjlkj.comgcjr.com
gckychina.com
+gcl-et.comgcld.xyz
+gclhgc.comgcloudcs.comgcloudcstest.comgcloudcstestonly.comgclouddolphin.com
gcloudgbs.com
gcloudsdk.comgcloudsvcs.comgcmc.ccgcok.comgcoreinc.com
+gcores.com
gcs66.com
+gcsmjo.xyz
gcstorage.comgcsz.netgctianshanxh.com
+gctong.com
+gctwds.com
+gctzsh.com
gcwduoduo.com
+gcwith.com
gcyts.com
+gcyy08.comgczp.cc
gczyg.comgd-chenxing.comgd-hskj.com
gd-id.comgd-linux.comgd-linux.org
+gd-ntn.comgd-tianchen.com
+gd1580.com
gd165.com
+gd2000.orggd32.comgd32mcu.comgd3n.com
+gda086.com
+gdadjs.com
+gdadri.com
+gdahua.com
gdapi.net
gdasqjob3.com
gdatacube.net
gdbbk.comgdbenke.com
+gdbhnk.com
+gdbita.com
+gdbljd.com
gdbmh.com
+gdbsjd.comgdbyhtl.net
+gdbzkz.com
+gdbzkz.org
gdcci.com
gdcct.com
+gdcdsh.com
+gdcgkg.comgdchess.com
gdcic.net
+gdcjtd.comgdcocodemer.com
+gdcoop.com
+gdctcd.com
gdcts.com
gdctsvisa.comgdcxc2c.com
gdcyl.org
+gdczyy.com
+gddata.net
gddcm.comgddg.cc
gddhn.comgddikasi.comgddmsmc.com
+gddqfs.com
+gddqfs.net
+gddtop.com
+gdeams.comgdebidding.comgdefair.com
gdems.comgdevops.com
gdfenxiao.com
+gdfgq.clubgdfplaza.comgdfs.com
+gdfshx.comgdgassoc.com
+gdggkf.com
+gdgrsw.comgdgudong.comgdguozhi.com
+gdgwyw.comgdgzhengzhou.comgdhaoma.com
+gdhbsh.com
+gdhcsh.comgdhdbxg.com
+gdhfny.com
+gdhjzs.comgdhwater.comgdhy0668.comgdi5ap2ikn.comgdie.com
+gdinfo.net
gdiso.com
+gdjdky.com
+gdjdxy.comgdjinge.comgdjingte.comgdjiutu.com
+gdjktk.com
+gdjshd.com
+gdjsxh.comgdjuhan.comgdjuntai.com
gdjyw.comgdkepler.com
gdkjb.com
gdkjw.comgdks168.com
+gdkszx.com
+gdkz88.comgdlighting.com
gdlinefly.com
gdlingjie.net
+gdlins.comgdliontech.com
+gdlsgz.comgdmagam.com
+gdmain.comgdmm.com
gdmoa.org
gdmschina.com
+gdmuah.comgdmuseum.com
+gdnfzb.com
gdniubang.comgdomall.com
gdong.comgdou.comgdpengquan.com
gdpia.comgdpyrtvu.com
gdqianyou.comgdqynews.comgdrc.comgdrc360.comgdrc365.com
gdrcu.com
+gdrfyy.comgds-services.comgdsa.com
+gdscse.net
+gdsday.comgdsdays.comgdsdwan.com
+gdshcm.comgdshisha.com
+gdslwl.comgdsports.net
+gdsrcw.com
+gdssqc.comgdstlab.comgdsuxie.com
+gdswgc.comgdswine.com
+gdsxgd.comgdsytech.comgdszjgdj.org
+gdszkw.com
+gdszsl.com
gdtai.comgdtaihao.com
+gdtcyy.com
gdtengnan.com
gdtex.comgdtextbook.comgdtianshanoa.comgdtichy.com
+gdtone.comgdtongda.comgdtongjiang.comgdtravel.com
gdttc.comgdturui.sitegdtz888.comgdu-tech.com
+gduaee.com
+gdunis.com
gdupi.comgdutbbs.comgdvolunteer.net
gdwca.com
gdwld.comgdwlife.com
gdwse.com
gdwxy.com
+gdwxyf.com
gdxfl.comgdxindun.com
+gdxise.com
+gdxmsx.comgdxscode.comgdxy.vip
+gdxych.com
+gdygsk.com
gdyunxiao.comgdyunyin.net
gdyxc.com
+gdz.co
gdzgy.com
gdzhiding.comgdzhongshan.comgdzjlyw.comgdzp.org
+gdzrlj.comgdzs2018.ccgdzs2018.vipgdzskj.tech
+gdzsxx.com
+gdztbz.comgdzuoxie.com
+gdzxgj.com
+gdzxmm.comgdzz114.com
gdzzz.com
ge-garden.net
ge100.comge3rge43r6.comgeality.com
geapu.com
gearfront.net
+gearkr.comgeautos.com
gebertech.comgebilaoshi.com
gebinlong.com
+gebiqu.com
+gec123.comgeci345.com
+gecimi.comgedi2099.com
+gedou8.comgedoumi.comgedu.org
+geeboo.comgeebook.com
+geedai.com
geedu.comgeeetech.com
geeeu.comgeejing.com
geek-docs.com
geek-papa.comgeek-share.com
+geek32.comgeekbang.comgeekbang.orggeekbangtech.comgeekcar.comgeekcar.netgeekdata.comgeekdaxue.cogeekdive.comgeekefu.comgeekercloud.comgeekerconsulting.comgeekfans.comgeekiron.comgeeklab.workgeeklei.comgeekluo.com
geekmaker.comgeekman.vipgeeknev.comgeekpark.netgeekplayers.comgeekpwn.orggeeksblog.ccgeektcp.comgeektutu.com
geeku.netgeekwom.comgeekxia.comgeekxue.comgeekzhao.me
+geekzl.comgeelevel.comgeely-motors.comgeely-test.com
geely.com
+zzliot.comgeely.pe
+zzlcjj.xyzgeelycv.comgeelydesign.comgeelyholding.com
geelylaos.comgeelyminiprogram.comgeelyph.comgeelysc.comgeelyswedenholdings.comgeement.com
+geeqee.comgeermunews.com
geeseteam.comgeespace.comgeetest.comgeevisit.comgeewaza.com
+geexek.com
+geeyep.com
geezn.comgegedao.comgegejia.comgegeyingshi.comgehaowu.com
+gei.pwgei6.comgeicloud.comgeihuasuan.com
+geihui.comgeilicdn.comgeilijiasu.comgeilijiasu.netgeimian.comgeiniwan.comgeisnic.com
geizan.cc
+gejiba.com
+gelaha.comgelicang.net
+gelics.comgelinya.com
+geliqi.net
gelonghui.comgelu.me
+gelufu.comgemac-cn.com
gembotech.comgemchina.comgemdale.comgemii.ccgemini-galaxy.com
gemini530.net
geminight.comgeminiultra.websitegemled-tech.comgempoll.comgemuedu.comgenbaike.com
+genban.orggendan5.comgendantong.comgeneralwatertech.comgenerosbio.comgenesis-rock.com
geneskies.com
genetalks.comgeneworldcn.comgengchuangz.comgengfuwang.comgenghai.comgengleyuan.comgengnie.comgengsan.comgengshangpin.comgengzhongbang.com
+geni4s.com
+genial.vip
geniatech.comgeniuscn.com
geniusite.comgenobank.orggenomeditech.comgenrace.com
genscript.com
+gensee.comgenshin.ripgenshinimpact.moegenshuixue.comgenuway.comgeo-compass.comzzkk.cc
+zzkcjq.com
+zzjxbg.com
geo2k.comgeogsci.com
+geohey.com
+geoidc.comgeometryauto.com
+geons.hostgeospatialsmart.comgeovisearth.comgepresearch.comgepubbs.comgepuwang.netgequdaquan.netgerenjianli.comgerhard-china.comgermanbasifu.comgeruihuate.com
gesanghua.orggescosteel.comgesedna.com
gesep.com
geshitong.net
+geshui.com
geshui100.comgeshui99.comgeshuiw.comgestagpu.com
gesuo.com
geswl.com
get-shell.comget.vip
+get233.com
getbs.com
+getcai.comgetelighting.com
getfeishu.comgethover.com
+getiis.comgetiot.tech
+getip.namegetkwai.comgetlema.com
getmaomao.comgetmarkman.comgetquicker.netgetrebuild.comgetsays.comgetsurfboard.comgettopacoustic.comgetu.fun
getui.vipgetulab.com
+getvidi.co
+gewala.com
+gewara.com
+geweng.comgewu.vc
+gewuer.comgewuzhixiang.com
gexiao.megexiaocloud.comgexinda.com
+gexing.com
gexing.megexings.comgexingzipai.com
geyawatch.com
geyevalve.comgeyo.comgeyoukj.com
+gezida.com
+gezila.comgezipu8.netgf-cloud.comgf-funds.com
gf-metals.com
gf-nj.com
+gf.app gf.cc
gf139.comgf7979cn.comgfan.com
gfanstore.com
gfcdn.xyz
+gfcity.comgfcname.comgfcvisa.com
+gfd178.com
gfdj99665.comgfdndxyl.com
gfdns.net
gfdsa.net
+gfdwsx.com
gfedu.com
+gffirm.com
gffwq.com
gfglb.com
gfh82.comgfhealthcare.com
gfivfbjve.netgfjl.orggflz.com
gfmpv.comgfnormal00ab.comgfnormal00ac.comgfnormal00ad.comgfnormal00ae.comgfnormal00af.comgfnormal00ag.comgfnormal00ai.comgfnormal00al.comgfnormal00am.comgfnormal00ao.comgfnormal00ap.comgfnormal00aq.comgfnormal00ar.comgfnormal00as.comgfnormal00at.comgfnormal01aa.comgfnormal01ab.comgfnormal01ac.comgfnormal01ad.comgfnormal01af.comgfnormal01ag.comgfnormal01ah.comgfnormal01ak.comgfnormal01al.comgfnormal01am.comgfnormal01an.comgfnormal01ao.comgfnormal01ap.comgfnormal01aq.comgfnormal01ar.comgfnormal01as.comgfnormal01at.comgfnormal02aa.comgfnormal02ab.comgfnormal02ac.comgfnormal02ad.comgfnormal02ae.comgfnormal02af.comgfnormal02ag.comgfnormal02ah.comgfnormal02ai.comgfnormal02aj.comgfnormal02ak.comgfnormal02al.comgfnormal02am.comgfnormal02an.comgfnormal02ao.comgfnormal02ap.comgfnormal02aq.comgfnormal02ar.comgfnormal02as.comgfnormal02at.comgfnormal03aa.comgfnormal03ab.comgfnormal03ac.comgfnormal03ad.comgfnormal03ae.comgfnormal03af.comgfnormal03ag.comgfnormal03ah.comgfnormal03ai.comgfnormal03aj.comgfnormal03ak.comgfnormal03al.comgfnormal03am.comgfnormal03an.comgfnormal03ao.comgfnormal03ap.comgfnormal03aq.comgfnormal03ar.comgfnormal03as.comgfnormal03at.comgfnormal04aa.comgfnormal04ab.comgfnormal04ac.comgfnormal04ad.comgfnormal04ae.comgfnormal04af.comgfnormal04ag.comgfnormal04ah.comgfnormal04ai.comgfnormal04aj.comgfnormal04ak.comgfnormal04al.comgfnormal04am.comgfnormal04an.comgfnormal04ao.comgfnormal04ap.comgfnormal04aq.comgfnormal04ar.comgfnormal04as.comgfnormal04at.comgfnormal05aa.comgfnormal05ab.comgfnormal05ac.comgfnormal05ad.comgfnormal05ae.comgfnormal05af.comgfnormal05ag.comgfnormal05ah.comgfnormal05ai.comgfnormal05aj.comgfnormal05ak.comgfnormal05al.comgfnormal05am.comgfnormal05an.comgfnormal05ao.comgfnormal05ap.comgfnormal05aq.comgfnormal05ar.comgfnormal05as.comgfnormal05at.comgfnormal06aa.comgfnormal06ab.comgfnormal06ac.comgfnormal06ad.comgfnormal06ae.comgfnormal06af.comgfnormal06ag.comgfnormal06ah.comgfnormal06ai.comgfnormal06aj.comgfnormal06ak.comgfnormal06al.comgfnormal06am.comgfnormal06an.comgfnormal06ao.comgfnormal06ap.comgfnormal06aq.comgfnormal06ar.comgfnormal06as.comgfnormal06at.comgfnormal07aa.comgfnormal07ab.comgfnormal07ac.comgfnormal07ad.comgfnormal07af.comgfnormal07ag.comgfnormal07ah.comgfnormal07ai.comgfnormal07aj.comgfnormal07ak.comgfnormal07al.comgfnormal07am.comgfnormal07an.comgfnormal07ao.comgfnormal07ap.comgfnormal07aq.comgfnormal07ar.comgfnormal07as.comgfnormal07at.comgfnormal08aa.comgfnormal08ab.comgfnormal08ac.comgfnormal08ad.comgfnormal08ae.comgfnormal08af.comgfnormal08ag.comgfnormal08ah.comgfnormal08ai.comgfnormal08aj.comgfnormal08ak.comgfnormal08al.comgfnormal08am.comgfnormal08an.comgfnormal08ao.comgfnormal08ap.comgfnormal08aq.comgfnormal08ar.comgfnormal08as.comgfnormal08at.comgfnormal09aa.comgfnormal09ab.comgfnormal09ac.comgfnormal09ad.comgfnormal09ae.comgfnormal09af.comgfnormal09ag.comgfnormal09ah.comgfnormal09ai.comgfnormal09aj.comgfnormal09ak.comgfnormal09al.comgfnormal09am.comgfnormal09an.comgfnormal09ao.comgfnormal09ap.comgfnormal09aq.comgfnormal09ar.comgfnormal09as.comgfnormal09at.comgforward.orggfoxsoft.net
gfqxa.comgfrtrttweet.com
+gfslgy.com
+gfttek.com
+gftuan.comgfun.me
gfund.com
gfvip00aa.com
gfvip00ab.com
gfvip00ac.com
gfvip00ad.com
gfvip00ae.com
gfvip00af.com
gfvip00ag.com
gfvip00ah.com
gfvip00ai.com
gfvip00aj.com
gfvip00ak.com
gfvip00al.com
gfvip00am.com
gfvip00an.com
gfvip00ao.com
gfvip00ap.com
gfvip00aq.com
gfvip00ar.com
gfvip00as.com
gfvip00at.com
gfvip01aa.com
gfvip01ab.com
gfvip01ac.com
gfvip01ad.com
gfvip01ae.com
gfvip01af.com
gfvip01ag.com
gfvip01ah.com
gfvip01ak.com
gfvip01al.com
gfvip01am.com
gfvip01an.com
gfvip01ao.com
gfvip01ap.com
gfvip01aq.com
gfvip01ar.com
gfvip01as.com
gfvip01at.com
gfvip02aa.com
gfvip02ab.com
gfvip02ac.com
gfvip02ad.com
gfvip02ae.com
gfvip02af.com
gfvip02ag.com
gfvip02ah.com
gfvip02ai.com
gfvip02aj.com
gfvip02ak.com
gfvip02al.com
gfvip02am.com
gfvip02an.com
gfvip02ao.com
gfvip02ap.com
gfvip02aq.com
gfvip02ar.com
gfvip02as.com
gfvip02at.com
gfvip03aa.com
gfvip03ab.com
gfvip03ac.com
gfvip03ad.com
gfvip03ae.com
gfvip03af.com
gfvip03ag.com
gfvip03ah.com
gfvip03ai.com
gfvip03aj.com
gfvip03ak.com
gfvip03al.com
gfvip03am.com
gfvip03an.com
gfvip03ao.com
gfvip03ap.com
gfvip03aq.com
gfvip03ar.com
gfvip03as.com
gfvip03at.com
gfvip04aa.com
gfvip04ab.com
gfvip04ac.com
gfvip04ad.com
gfvip04ae.com
gfvip04af.com
gfvip04ag.com
gfvip04ah.com
gfvip04ai.com
gfvip04aj.com
gfvip04ak.com
gfvip04al.com
gfvip04am.com
gfvip04an.com
gfvip04ao.com
gfvip04ap.com
gfvip04aq.com
gfvip04ar.com
gfvip04as.com
gfvip04at.com
gfvip05aa.com
gfvip05ab.com
gfvip05ac.com
gfvip05ad.com
gfvip05ae.com
gfvip05af.com
gfvip05ag.com
gfvip05ah.com
gfvip05ai.com
gfvip05aj.com
gfvip05ak.com
gfvip05al.com
gfvip05am.com
gfvip05an.com
gfvip05ao.com
gfvip05ap.com
gfvip05aq.com
gfvip05ar.com
gfvip05as.com
gfvip05at.com
gfvip06aa.com
gfvip06ac.com
gfvip06ad.com
gfvip06ae.com
gfvip06ag.com
gfvip06ah.com
gfvip06ai.com
gfvip06aj.com
gfvip06ak.com
gfvip06am.com
gfvip06an.com
gfvip06ao.com
gfvip06ap.com
gfvip06aq.com
gfvip06ar.com
gfvip06as.com
gfvip06at.com
gfvip07aa.com
gfvip07ab.com
gfvip07ac.com
gfvip07ad.com
gfvip07ae.com
gfvip07af.com
gfvip07ag.com
gfvip07ah.com
gfvip07ai.com
gfvip07aj.com
gfvip07ak.com
gfvip07al.com
gfvip07am.com
gfvip07an.com
gfvip07ao.com
gfvip07ap.com
gfvip07aq.com
gfvip07ar.com
gfvip07as.com
gfvip07at.com
gfvip08aa.com
gfvip08ab.com
gfvip08ac.com
gfvip08ad.com
gfvip08ae.com
gfvip08ag.com
gfvip08ah.com
gfvip08ai.com
gfvip08aj.com
gfvip08ak.com
gfvip08al.com
gfvip08am.com
gfvip08an.com
gfvip08ao.com
gfvip08ap.com
gfvip08aq.com
gfvip08ar.com
gfvip08at.com
gfxaa.comgfxcamp.com
+gfxtr1.comgfxy.comgfyseed.comgfzihua.comgfzj.us
gg-lb.com
+gg-led.com
gg122.net
+gg1994.com
+gg8828.comggac.netggaiyan.com
+ggbamy.comggbanfu.com
+ggbygx.comggcimbar.comggcj.comggcname.comggcx.com
+ggcykf.com
+ggdata.comggdlcdn.com
ggecc.com
+ggecgc.com
ggemo.com
ggeye.com
+ggfcyy.com
+ggfsfy.com
+ggfswy.com
ggg42.com
+ggg868.com
+gggbbg.com
gggcn.com
+gggfyl.com
+ggghny.com
gggqa.com
+gggzhi.com
+gggzpw.comgghappy.com
+gghb.cloud
+gghcgg.com
gghjb.com
+gghosp.net
gghs.info
gghualong.comgghx120.com
+gginto.com
+ggjcpm.com
+ggjpay.com
ggjrw.com
+ggjsjx.com
+ggjstz.com
+ggjszp.comggjt.com
+ggjtfw.com
+ggjtjt.com
+ggkrdz.comggl.comgglenglish.com
gglkw.net
gglmg.comggmlechi.com
ggmsw.com
+ggmymy.com
ggnet.com
+ggnops.com
+ggnqmy.com
+ggo.laggo.netggoplay.com
+ggowan.comggqdnkyy.com
+ggqule.comggqunshanmuye.comggqx.com
ggrcw.com
ggren.net
+ggrsmy.com
+ggsfcw.comggshfmy.com
+ggshmy.com
+ggslxs.comggsq.ccggszlmy.com
+ggt667.com
+ggtiku.com
+ggtime.com
ggtjx.comggtst88.com
ggwan.com
ggwan.netggweijie.comggwxmuye.com
ggwzpf120.com
+ggxarq.comggxdsmzx.com
ggxhx.comggxiaolinmy.comggxinzhitaimy.com
+ggxjhk.com
+ggxsjz.com
ggxue.comggxx.net
ggxxe.comggy.net
+ggy775.comggyoupinshu.comggyouyu.com
ggysc.com
+ggysfw.comggyx666.com
+ggzbbj.comggzc.net
ggzgc.com
ggzha.com
+ggzhaf.comggzuhao.com
gh-fm.comgh-reagent.comgh6.orggh8s.com
ghatg.com
+ghboke.com
+ghbxrj.com
+ghc168.com
+ghcxzb.com
+ghglzx.comghgy.comghibliwiki.orgghitest.comghjbh123.com
ghk9irokp.sbsghlawyer.netghlearning.com
+ghlshb.com
+ghlykj.com
ghmba.com
ghmcchina.comghmd448.comghmisnet.comgho5.com
ghost-him.comghost008.comghost11.comghost123.comghost64.comghostchina.comghostsf.comghostw7.comghostwin10.net
ghostwin7.netghostxp2.comghostxpsp3.net
+ghp.cighproxy.comghpy3333.com
ghpym.com
+ghrlib.comghs.net
ghsd16888.com
+ghsmgs.comghsmpwalmart.com
+ght.me
+ght120.comghtianshancn.com
+ghtzgs.comghwgame.comghxi.com
ghxsw.comghyg.com
ghzhushou.comghzs.comghzs666.com
+giabbs.com
+giaimg.comgiant-cycling-lifestyle.comgiantcdn.comgiantgd.com
giantkone.comgiaog-xiaobailgaong.com
gibcp.com
gibzz.xyz
+giccoo.comgicp.net
+giexya.comgif5.netgifcool.com
+giffox.comgifhome.comgifshow.comgiftres.comgiftsbeijing.comgifu-pr.comgiga-da.comgiga-science.comgigaget.com
gigbl.comgihg.com
+gihiji.comgiho.com
+giikin.com
giiso.com
gijsq.comgildata.comgilieye.comgillmoversuae.comgiltbridge.com
giltworld.comgimcyun.com
+gimhoy.comgimmgimm.com
gimoo.netgincode.icugingerbreadstudio.ccginlong.comginshio.org
+gionee.com
+gionee.net
+gioner.comgiordano.comgiraff3.comgirls-frontline.comgirlsfighters.com
girlw.netgiscafer.com
giser.netgiserdqy.comgissaas.com
+gissky.net
git-repo.infogit-star.comgitbook.netgitcafe.inkgitcafe.netgitclone.comgitcode.comgitcode.net
gitee.comgitee.io
+gitfz.sitegithang.com
github-zh.comgithub5.comgithubim.comgithubusercontents.com
gitiu.com
+gitlib.comgitlore.com
gitmirror.comgitnavi.comgitnoteapp.com
gitom.com
gitpp.com
+gitsea.comgitshell.comgitv.tvgityuan.com
gityx.com
+giveda.com
+giwkgb.com
giyu8.com
gizaworks.comgizwits.comgjb9001b.com
+gjbaek.rengjceshi9.com
gjcha.com
+gjcoil.com
+gjcweb.comgjds.vip
gjdwh.com
+gjdwzp.com
+gjfmxd.com
+gjgzpw.comgjhgroup.comgjj5.com
+gjjcxw.com
+gjjnhb.com
+gjjsbz.comgjmbwxpt.comgjmbwxzx.com
gjmrk.com
+gjnlyd.com
gjpdh.com
+gjrwls.com
gjsc.infogjsj.com
gjsun.com
+gjtjjp.comgjtt.netgjw.com
+gjw123.comgjwl123.comgjxh.orggjxx.com
gjxzq.comgjyblog.com
gjydz.comgjyfish.com
gjyuxiang.com
gjyys.com
+gjzsbz.comgjzy.com
+gk-net.comgk-z.com
+gk.inkgk.link
gk100.com
gk114.comgk99.com
gkbnj.com
gkcdz.com
gkcyc.com
+gkczgs.comgkfb.com
+gkhxtc.com
gki88.com
gkkxd.comgklx.net
+gkmems.com
gkmhq.comgkmotor.com
gkong.comgkoudai.com
+gkpass.com
gkqct.com
gkqcw.comgkrpgtee.comgkshuju.comgktianshanjd.comgkwo.netgkxd.com
gkyly.com
+gkzhan.comgkzj.net
+gkzpfw.com
+gkzppt.com
+gkzqxc.com
gkzxw.comgkzy.com
gkzyb.com
gkzzd.com
gkzzy.comgl-data.comgl-inet.com
+gl-jdy.com
+gl-mes.com
gl-qf.com
+gl-uav.com
gl102.com
gl114.net
gl170.com
gl17u.com
+gl1993.com
gl258.com
gl2mt.comglab.online
gladdigit.com
+glajzl.comglamever.comglamourred.comglanimaltrade.com
glanu.com
glasercom.comglass-ciac.comglassbottleproducer.com
glasseasy.com
+glavo.siteglawyer.netglb3.comglb4.comglb6.com
glbaishen.com
+glbdns.com
+glblkq.comglby118.com
glbyhotel.comglbyjdjt.comglcanyin.net
+glcape.com
glcct.com
glcht.comglchunchao.comglchuyun.com
+glcits.comglclcsy.com
+glcszy.com
glcwd.comgldaewoo.com
+gldrjc.com
+gldxjc.com
+gleasy.com
+glecan.com
gleyy.com
+glface.comglfangzhen.comglfdfcyy.com
+glflyy.com
+glfpii.com
+glfund.com
+glfyfs.com
+glfyjg.comglgangyu.com
+glgcsj.com
+glgczk.com
glgda.com
+glgdst.comglgeneng.com
glggh.comglgh.org
glghy.com
+glgnmt.com
glgoo.com
glgoo.net
glgoo.orgglgsoft.com
glgst.com
+glgtzc.com
+glgyzn.com
+glgzlq.comglhbyyzc.com
+glhcjs.com
+glhckj.comglhclv-kool.comglhcoptical.com
glhdq.com
+glhfmy.com
+glhfsy.com
glhhl.com
+glhmgs.com
+glhmmr.com
+glhnkj.comglhospital.com
+glhrjs.com
+glhrzx.comglhsylqx.comglhtpcb.comglhuade.comglhuashi.comglhuayue.comglhwxclyxgs.com
+glhycy.com
glhygjlxs.com
glhzhotel.com
+glhzzx.com
glicon.design
glifegame.com
+glinfo.comglinkmedia.com
glinksure.comgljcdjxy.com
+gljcss.com
+gljdjt.comgljiatianxia.comgljiayu.comgljieli.comgljinbao.com
gljinfeng.comgljinhui.comgljinjiabg.com
gljinshan.comgljiqing.comgljkfhq.com
+gljkzg.com
gljlw.com
+gljsbl.com
+gljshy.com
+gljshz.com
+gljsjl.com
+gljtkg.comgljtxjy.com
+gljygd.com
+gljykj.com
+gljyrj.com
+gljzgs.comglk7.com
glkdworld.com
+glkpjx.com
+gllcit.com
+gllfyy.com
+glljsh.com
glljy.comgllshan.com
+gllstz.com
+glltjx.com
gllty.com
glludiyan.com
gllue.comgllue.me
gllue.net
+gllxsb.com
+gllycs.com
+glmama.comglmapper.com
+glmayo.com
glmbc.comglmingke.com
glmmodels.com
glncn.com
glnewstar.com
+glnftx.comzzjunzhi.comglobal-harbor.comglobal-idc.net
global-jf.comglobal-ks-cdn.comglobal-leader.comglobal-scsl.comglobal-trade-center.comglobal56.comglobalaccentchinese.comglobalbuy.ccglobalcompressor.comglobaldangdang.hkglobaletrust.comglobalharborec.comglobalhardwares.comglobalimporter.netglobaliot-summit.comglobalizex.com
globalmil.comglobalpingbao.comglobalscanner.comglobalsigncdn.com
globalslb.netglobalso.com
globalso.siteglobalsources.comglobalstech.comglobalx-nest.com
globebill.comglobecancer.comglobeedu.comglobrand.comglobrand.net
+glodon.comglofang.com
gloraledu.comglorygarment.comgloryre.com
gloryview.com
+glorze.com
+glosku.comglowapp.funglowapp.vipglowmem.comglpenhui.com
+glping.net
+glplyf.com
+glqcxh.comglqh.com
+glqshb.comglquanji.comglrcjob.com
glrcw.com
glreading.comglriverside.com
+glrmyy.comglruixin.com
+glsadt.comglsanhua.com
glsanyang.comglsdhnt.com
+glsgmr.comglshimg.comglsmy024.comglsq.comglssgolf.com
+glsstm.comglsxdlkj.com
+glsxhz.com
+glsyjd.comglsyjgs.comglsytzjt.com
+glszfl.com
+glt365.comgltailianhotel.com
gltif.com
gltjk.com
+gltnmy.com
gltop.com
gltsg.com
+glttjz.com
gltvs.com
gltx.techgluebon.com
+glvroc.comglvs.comglwangcheng.comglwuhong.com
+glwxsj.com
+glwyhd.com
+glxccm.com
+glxcjt.comglxd.com
glxfc.com
+glxhzs.comglxiaoyaohu.comglxinhu.com
+glxkbz.com
glxlawyer.com
+glxrck.com
+glxsyx.vip
+glxtny.com
+glxwdb.com
+glxxjx.comglxyjqx.com
+glxyjx.com
+glxyrn.com
+glyhjc.com
glyhy.com
glyjk.com
+glylgg.com
+glyltl.com
glyongsen.com
glyslydjq.comglyummy.comglyuxing.com
glyxc.comglyxjtgc.com
+glzcqy.com
+glzdgx.comglzeasun.com
+glzfst.comglzh-szzx.siteglzhcyy.com
glzip.comglzizhu.com
+glzj88.com
glzjtmsjq.com
glzmn.com
glzon.comglzrflx.com
+glzsjc.com
+glzssf.com
+glzthz.com
glztj.com
+glzyjt.com
+glzzjy.com
+gm-scm.com
+gm1.cc
gm193.comgm3.win
gm825.com
gm825.netgm86.comgm88.comgm99game.netgmacsaic.com
gmatg.comgmcc.netgmcchina.netgmcmonline.com
gmdun.comgmed.ccgmedata.comgmedtech.comgmem.ccgmfc.ccgmfintl.com
gmgc.infogmgm668.com
gmhub.comgmhuijin.com
+gmhysj.comgmi1001.comgmilesquan.com
gmiot.netgmjk.com
gmm01.com
+gmmch5.comgmmicro.com
gmmsj.com
+gmmtcc.comgmoe.ccgmonline-all.comgmpanel.com
gmpbj.comgmquickapp.com
+gmrmyy.com
gmsec.netgmsolid.com
gmssl.org
gmswl.com
+gmsyun.com
gmt-china.org
+gmt-cn.com
gmtgx.comgmtv.cc
gmtzy.com
+gmugmu.com
+gmwiki.com
+gmxmym.rengmyihua.com
gmz88.com
gmzhushou.comgmzi.comgmzm.org
gn168.com
gnber.comgndaily.com
gneec.com
+gneec3.com
+gneec4.com
+gneec5.com
+gneec7.comgneeccloud.com
+gneedu.com
gnehr.com
gnete.com
+gnetis.com
gng92.com
gnhpc.comgnice-it.comgninstruments.com
+gnitif.com
+gnnzfw.comgnrcbank.com
+gnrnye.comgnssinfo.comgnssopenlab.org
gnvip.netgnway.cc
gnway.com
gnway.orggnwllab.comgnyy.cc
gnzad.comgo-admin.comgo-gddq.comgo-goal.comgo-home.net go.cc
go007.com
go108.com
+go1314.comgo2aaron.com
+go2map.com
go2yd.com
go300.com
+go5.cc
+goalhi.comgoalmobi.com
goalonez.site
goapk.comgobanma.comgobasearcher.comgobelieve.iogobelike.net
+gobivc.comgocarjourney.comgocashback.comgocchina.com
gocea.netgoceshi.comgochego.comgocn.vipgodaily.orggodasai.comgodbiao.comgodblessyuan.comgoddelivery.comgoddessxzns.com
godgy.xyz
godic.net
+godida.com
+godiy8.comgodo.pub
+godoor.comgodotcn.com
godsendcn.comgodsheepteam.com
godsignal.comgodweiyang.comgodwolf.com
goeasy.io
goepe.comgoertek.com
goetheslz.com
gofarqzyy.comgoforandroid.comgoframe.orggofreeplay.com
gofrp.org
+gogbuy.comgogo.sogogo123.comgogo123.netgogoauc.comgogofly.comgogokid.com
gogolinux.com
gogooffer.comgogopzh.com
+gogoqq.com
+gogoup.comgohighfund.comgoho.cogohoedu.comgohomesafe.orggohomesh.com
+gohong.com
+gohugo.orggoing-link.comgojiaju.com
+gojira.netgojiscm.comgokaigai.comgoke.com
+gokols.com
+gokuai.com
golangapi.comgolanger.comgolangw.com
golangweb.com
golaravel.comgold-dragon-castings.comgold-seagull.com
+gold-v.com
+gold58.comgold678.com
+goldav.net
golday666.com
golday999.comgolday9999.com
+goldbj.comgoldbox.vipgolden-bamboo.comgolden-book.comgolden-infor.comgolden3t.netgoldenad.netgoldenear.clubgoldengreengolf.comgoldenholiday.com
goldenhome.cc
goldening.comgoldenname.comgoldenseaair.com
goldentom.comgoldgrid.comgoldhoe.com
goldksoft.com
goldmadon.comgoldmantis.comgoldmarkrealestate.comgoldstonepack.comgoldsunchn.comgoldsunmachinery.comgoldsupplier.comgoldwaterhk.com
+golfvv.com
+golink.comgolinksworld.com
golive-tv.comgolivetv.tv
golue.comgomaeps.comgomeart.com
gomecloud.com
+gomegj.comgomeholdings.comgomehome.comgomeplus.comgomo.comgomocdn.comgomvyxvm.comgoneplayhand.shopgonever.comgong-xin.comgong123.com
gongbaike.com
gongboedu.com
gongboshi.comgongcdn.com
gongchang.comgongcheng168.comgongchengbing.comgongchou.comgongfubb.com
gongfudou.comgongfugw.comgongheshengshi.comgongji58.comgongjiao.comgongjiao160.comgongjiaomi.com
+gongju.comgongju5.comgongjuji.netgongjux.comgongkaoleida.comgongkong.comgongkong001.comgongkongbpo.comgongkongedu.comgongkongjia.comgongkongke.comgongkongmall.comgongkongsaas.comgonglve.netgongmo1688.comgongmutang.comgongnou.comgongoqi.comgongpin.netgongpingjia.comgongshang120.com
gongsi.gs
gongsibao.comgongsijiaoyi.comgongsizhijia.comgongwuxing.comgongxiangcj.com
gongxiao8.comgongxuanwang.comgongxueyun.com
gongye360.comgongyefengshan.comgongyeku.comgongyelian.com
gongyeyun.comgongyeyunwang.com
gongyi.la
+gongyi.xingongyicn.orggongyidaily.comgongying.bizgongying405.comgongyingshang.bizgongyingshi.comgongyipuhui.comgongyishibao.comgongyixiang.comgongyou.comgongyouhui.comgongyoumishu.com
gongzhao.workgongzhou.comgongzhou.netgongzicp.comgongzuobaogao.xyzgongzuoshouji.netgongzuoyun.org
+gonsun.comgonvvama.net
goo17.comgooagoo.com
+gooann.com
+goobye.netgood-display.comgood-game-network.comgood-import.comgood.ccgood1230.comgood321.netgood519.comgoodally.hk
+goodao.netgoodapk.comgoodbaby.comgoodbabygroup.com
goodbaike.com
goodcloud.xyzgoodcti.com
+gooddr.com
+gooddu.comgoode-china.comgoodealwigs.comgoodera8.comgoodesocket.comgoodgongshi.comgoodgupiao.com
+goodid.com
+goodix.com
+goodjd.comgoodjili.comgoodk88.comgoodkejian.comgoodlcm.comgoodluckcalendar.comgoodlukyeveryyear.comgoodmorening.comgoodnic.net
goodonecn.comgoodprogrammer.orggoodrain.comgoodread.comgoods-brand.comgoodsid.comgoodstudydayup.comgoodswisswatch.com
+goodtea.cc
goodtech.live
+goodtp.com
+goodwe.comgoodwillresource.comgoodyoungtea.comgoodzuji.comgoofish.com
+googcc.net
+googvv.comgoolink.orggoonemei.com
gooo8.comgooogua.comgooooal.com
gooood.hkgoootech.com
+goootu.com
+goosai.comgoosail.com
gooseeker.comgootoai.comgoowine.com
gooxi.com
gooyo.com
goozp.com
+gopedu.com
+gopeed.comgoplaycn.com
+goproxy.iogorebuy.comgoregxa.comgorelay.xyzgorichox.com
gorouter.info
gorse.com
gosailgis.com
goselling.comgoshijia.comgosinoic.com
gospelwin.comgost-pct.comgosuncdn.comgosuncdn.net
+gosunm.com
+got001.com
+got002.com
goten.com
goto-game.comgoto-game.mobi
goto-game.orggotobath.comgotocdn.comgotocoding.com
+gotodn.comgotohui.com
+gotohz.comgotohzrb.com
+gotoip.netgotoip1.comgotoip11.comgotoip2.comgotoip3.comgotoip4.comgotoip88.comgotokeep.comgotolink.netgotonav.comgotonets.com
gotopsoft.comgotostudyroom.comgotoubi.com
gotozhuan.com
+gotran.com
gotvg.comgoubrand.comgouchezj.comgoufang.com
goufw.comgougoujp.comgougoumh.com
+gouhai.com
+gouhao.comgouhaowang.com
gouhua.ccgouhuasuan.shop
goujianwu.comgoukuai.com
+goulew.comgoulong.com
+goumee.com
+goumin.comgoupsec.comgoupuzi.comgourmet114.com
+goushh.com
gouso.com
gousu.com
gouwanmei.com
gouwo.com
gouwudang.comgouwuke.comgouwule.comgouwuyu.comgouyoukeji.com
govfz.comgovisionox.netgovmade.com
govqcloud.com
+govuln.com
+gow100.com
+gowan8.com
goweb1.cc
+goweb2.net
+goweb3.netgoweike.netgowhich.comgowinamc.comgowincms.comgowinlease.comgowithmi.com
gowlc.netgowonganinn.comgoxytrbz.com
+goyihu.com
goyoo.com
gozap.comgozongroup.com
gp-tm.comgp123.cc
+gp1903.com
+gp1907.com
gp241.com
gp259.com
gp451.comgp51.comgp88888.com
gp891.comgpai.net
gpautobid.com
+gpbeta.com
+gpboke.com
gpbtravel.com
+gpcang.com
+gpcqjy.com
+gpd.hkgpdi.com
gper.club
+gpfang.netgpl-express.comgplayspace.com
+gplqdb.com
gplus-lab.com
gpmro.comgpmycez.com
gpnewtech.comgpowersoft.com
+gppapp.com
+gpqnrc.com
+gps009.netgps8.com
gpsgx.netgpslook.netgpsonextra.net
gpsoo.net
+gpsptp.com
gpspw.net
+gpsrcw.com
+gpsspg.com
gpsuu.comgpszlsc.comgpticket.orggptjike.comgptkong.comgptshops.ai
+gpubgm.com
gpuez.comgpuztrvt.comgpxiv5kew4mvk.com
gpxxz.comgpxygpfx.comgpxz.com
gpxzw.com
+gpydxl.comgq60.com
gqgkj.comgqjd.netgqjx.net
+gqk.tvgqprgkr.com
gqqsm.comgqsj.cc
+gqsoso.com
gqsou.com
+gqt168.com
gqtpw.com
gqxtq.comgqzewmsk8yma18.comgr3xuaov74khb.comgra-moissanitesorg.comgrablan.comgrabsun.comgracece.com
gracg.com
gradaimmi.com
gradgroup.com
gradgroup.netgraduallylift.comgrafytek.comgrainedu.comgrainstorage.netgrandinsight.comgrandloong.comgrandomics.comgrandordesign.comgrandqueen.comgrandsail-servomotor.com
grapchina.orggraphene.tvgraphmovie.com
graueneko.xyzgravity-engine.comgray-ice.comgrcbank.comgrchina.com
grdsv.comgreat-future.comgreatbit.comgreatesting.comgreatld.comgreatopensource.comgreatops.netgreatran.com
greatroma.comgreatsk.comgreatsolid.comgreatssp.comgreatstargroup.comgreatstartools.comgreatwallmusic.comgreatwallships.comgree-jd.comgree.comgreebox.comgreen-sz.comgreen12306.comgreenchengjian.comgreencompute.orggreendh.comgreenhua.comgreenism.netgreenjk.comgreenlandsc.comgreensince.comgreenspiritstudio.comgreenswolf.comgreentomail.comgreenwaychina.orggreenwood-park.comgreenxf.comgreenxiazai.com
+greepi.comgreeyun.comgrender.com
+grescw.com
gretf.comgreycdn.net
+greyli.comgreywolfns.com
grfyw.comgrg2013.comgrgaoren.comgrgbanking.comgrgreecv.comgrgsecurity.com
grgvision.comgrgyintong.comgrid2048.comgridsum.com
gridy.com
+grikin.com
grinm.com
+grirem.com
grksc.com
+grmxdy.com
groad.net
grouk.comgroup-purchasing.com
group-spl.comgroupfangyuan.comgroupjx.comgrouplus.comgrowatt.comzzjsled.comgrowthepoch.comgrpindex.com
grstz.com
grt-china.com
grtsports.comgrumplesgroup.comgruntjs.net
grvud.comgryltop.comgryu.net
grzmz.comgrzq.comgrzyfey.com
zzjianyun.com
gs090.comgs12122.comgs14.com
gs1cn.org
zzidc.com
+gs2012.com
+gsadds.com
gsafc.comgsafety.com
+gsaxns.comgsbankchina.comgsbankmall.comgscblog.com
gscdn.pub
+gscidc.netgsdk.tv
gsdpw.com
+gsdtfx.comgsdyjsgs.com
gsensebot.comgsfilter.net
+gsflcp.com
gsfrj.comgsfybjy.com
gsfycloud.com
gsfzb.comgsgdsgh.cfd
gsgs10086.comgsgundam.com
+gshhqy.com
+gshmzs.comgshqqcx.shopgshuaxingxx.com
gsi24.com
+gsicpa.net
gsidy.comgsjb.com
gsjie.com
gsjth.com
+gsjtky.comgsjy.netgsjy.xyzgskfzxyy.com
+gskjpt.comgsktraining.com
+gskwai.comgslbdns.comgslbdns.net
gslmw.net
gslsj.comgsmpers.comgsmuban.comgspaceteam.com
gspst.com
gsqstudio.com
gsrcu.com
+gsrecv.com
gssbh.com
+gssdlv.com
+gssfgk.comgssjyxrmyy.comgssltxrmyy.com
gsspn.comgsstscrbyy.com
gst-china.net
+zzhybz.comgstarcad.com
gsthq.com
gstjs.comgstonegames.com
gstzc.comgstzyyy.com
gsuus.comgswjxjzx.comgswz.comgsxb.net
+gsxcdn.comgsxservice.com
gsxtj.comgsydxzyy.comgsysportwear.com
gsyth.comgsyxjyw.com
+gsyygh.com
gszhaopin.com
+gszlyy.com
gszph.comgszq.com
gszsc.com
gszyi.com
gszyr.comgszytcm.com
gszyy.com.*gt-99-js-ii-i1-0o-j9-o0-1i-0o-sd-hg-kj.com
+gt-key.com
+gt-oil.comgt-semi.com
gt520.comgtadata.comgtan.comgtanhao.com
+gtarsc.com
+gtaxqh.com
+gtcedu.com
gtcim.com
gtdgc.comgtdlife.comgter.netgtetern.com
+gtfund.com
gtfuv.com
+gtgres.com
gti56.com
+gtibee.com
gtimg.comgtja-allianz.comgtja.comgtjadev.com
+gtjaqh.com
+gtjazg.com
+gtjgzt.com
+gtlggy.com
+gtlrxt.comgtm-a1b2.comgtm-a1b3.comgtm-a1b4.comgtm-a1b5.comgtm-a1b6.comgtm-a1b7.comgtm-a1b8.comgtm-a1b9.comgtm-a2b2.comgtm-a2b3.comgtm-a2b4.comgtm-a2b5.comgtm-a2b6.comgtm-a2b7.comgtm-a2b8.comgtm-a2b9.comgtm-a3b1.comgtm-a3b3.comgtm-a3b4.comgtm-a3b5.comgtm-a3b6.comgtm-a3b7.comgtm-a3b8.comgtm-a3b9.comgtm-a4b1.comgtm-a4b2.comgtm-a4b3.comgtm-a4b4.comgtm-a4b5.comgtm-a4b6.comgtm-a4b7.comgtm-a4b8.comgtm-a4b9.comgtm-a5b1.comgtm-a5b2.comgtm-a5b3.comgtm-a5b4.comgtm-a5b5.comgtm-a6b1.comgtm-a6b2.comgtm-a6b3.comgtm-a6b4.comgtm-citycloud.comgtm-host.comgtm-i1d1.comgtm-i1d2.comgtm-i1d6.comgtm-i1d7.comgtm-i1d8.comgtm-i1d9.comgtm-i2d3.comgtm-i2d4.comgtm-i2d6.comgtm-i2d8.comgtm-i2d9.com
+gtm-we.comgtm.pubgtmlufax.comgtmly-lyilgily.com
gtmsh.comgtn9.com
+gtobal.com
gtpromall.com
gtpso.comgtqtiad.work
gtqzg.comgtrukxeo.comgts.work
+gtsnzp.comgttxidc.com
+gtuanb.comgtuu.comgtwrmdxo.com
gtxp2.com
gtycn.netgtyztpt.com
+gtzszy.comgtzy123.com
gu166.com
guabu.comguaguasheng.com
guaguo.ccguahao-inc.com
+guahao.comguahaoe.comguahaowang.comguaiguai.comguaihou.com
guaileicp.comguailuo.comguailuzi.comguaini.blogguaiquaner.siteguaitoo.com
guaixueke.comguaixun.com
guajibao.clubguajibao.meguajibaola.com
+guajob.comguakaoba.comguan.com
guan5.comguanaitong.com
+guance.comguanchangnongmu.com
guanchao.site
guanchiad.comguancibaoku.comguandan.comguandan.mobiguandang.netguandata.comguandianle.comguandongyucang.com
guang.com
guangbali.comguangbao-uni.comguangbo.netguangdauser.comguangdianyun.tvguangdiu.comguangdonggames.comguangdonglong.comguangdongrc.comguangdongyunchen.comguangdv.com
guangfeng.comguangfulingyuan.comguanggao.com
+guanghe.tvguanghuayigou.comguangjiaohui888.comguangjie5u.comguangjieba.comguangjinghb.comguangjiubusiness.comguangjiucompany.comguangju123.comguangjumedia.comguangka.com
guangkatf.com
guangli88.comguanglikou.comguanglilvyuan.comguanglingroup.comguanglongsoft.comguangmamuye.comguangshantang.vip
guangsuss.comguangtuikeji.comguanguigroup.com
guanguser.comguangwaifu.comguangxi910.comguangxibaobao.comguangxicarbon.comguangxichunhui.comguangxigames.comguangxiguizun.comguangxiguozhi.comguangxihaihui.comguangxihongji.com
guangxiip.comguangxijiazhi.comguangxijinhang.com%!guangxilindakejimeiliyaoshang.comguangxilonghua.comguangximinhang.comguangxinengyuan.comguangxipubeihuaheng.comguangxiqimei.comguangxiqingrun.comguangxircw.comguangxisanhe.comguangxishangfu.com#guangxishuizhiyangzhigongsi.comguangxisichujiadao.comguangxixinchan.comguangxixinyan.comguangxixinyuwanzixun.comguangxiyijie.comguangxizbq.comguangxizhonghui.comguangxizhutingqi.comguangyinghj.comguangyinglvxing.comguangyuanjt.com
guangyuhb.comguangyv.comguangzhitui.comguangzhou-logistics.comguangzhou-marathon.comguangzhougy.comguangzhouyibo.comguangzhouzaiyu.comguangzjiaq.comguanhaobio.comguanhou.com
guanhuaju.com
guanjiajf.comguanjianfeng.com
guanjunjg.comguankaijiaju.comguankou.netguankuimjg.comguanlannet.com
guanli360.com
guanliyun.com
guanmeikj.comguanngxu.comguanpark.comguanplus.comguanquanapp.comguanrenjiaoyu.comguanshanbaodian.comguanshang1998.comguanshangyu.ccguanshenggz.comguansre.comguanting.comguanvip8.comguanwang.ccguanwang.comguanwangbao.comguanwangdaquan.comguanwangshijie.comguanwangyun.comguanwuxiaoer.com
+guanxf.comguanxiaokai.comguanxingyun.comguanxintec.comguanxxg.comguanyinshan.com
guanyiyun.comguanzhongrc.comguanzhu.mobiguanzhulian.comguanziheng.com
guapaijia.com
guardease.comguardrailchina.comguatedu.com
guatuwang.comguazhuan.comguazi-apps.com
guazi.comguazipai.comguazistatic.comguazixs.comguba.comgubo.org
gucciblog.net
guccistar.comgucheng.comgucn.com
+gucun.info
gucunpark.netguczkbdq.comgudeapp.comgudemanage.comgudi.ccgudong.site
guduodata.com
gufengmh9.com
gug66.comgugeanzhuangqi.comgugeapps.net
+gugezg.com
+gugong.net
gugu5.com
gugud.comgugudang.comguguread.com
gugushuzi.com
+guguyu.com
guguyuyin.comguguzhu.comguhai66.comguheshuyuan.comguhuozaiol.com
+gui333.com
gui66.com
guibi.comguibook.com
guicaiyun.comguichanghj.comguichuideng.comguichuxing.com
guidechem.comguideir.com
guideofsh.comguiderank-app.com
guiderank.org
guifan.ccguifeng.net
+guifun.comguigang688.comguiganganlan.com
guigu.org
guiguangw.comguiguzhongguo.comguihaikj.comguihejr.com
+guihua.comguihuangfood.com
guihuayun.com
guiji.comguijianglvyou.comguijingchina.comguijinghotel.com
guijinshu.com
guijitech.com
+guijob.com
guikai888.comguikangmaterials.comguikuan.com
guilin.laguilinaohu.comguilincyjt.comguilinhd.comguilinhengda.com
guilinihg.comguilinjiaqi.comguilinjizhuangxiang.comguilinlife.comguilinlv.comguilinoutdoor.comguilinpharma.comguilinruntai.comguilinsongyu.comguilintianhu.comguilintravel.comguilinzhiyuan.comguiluohuang.com
guimamuye.comguimengjob.comguimengning.comguimengshangeng.comguimilu.comguimipay.netguinsoft.com
guipeibao.comguipeng168.com
+guipin.comguiqingkeji.com
guiqv.comguirong.comguishai.comguishangtong.comguishanhotel.comguishequ.comguisteel.com
+guitan.comguitang.com
guitongmy.comguitu18.comguiwang.orgguiweilian.com
guixiaozi.com
+guixue.comguiy208.xyzguiyicai.comguiyuhuanbao.com
guiyuntai.comguizeco.comguizheng.netguizhenghe.comguizhenwei.comguizhougames.comguizhounaishili.comguizhoushengyang.comguizhutanglao.comgujianba.comgujinshici.comgujiushu.com
+gujiyx.comgukaifu.comgukaihu.com
gukun.comgulandscape.comgulinglong.comgulinrongmei.comgullmap.comgulltour.comgulou120.com
+gulove.comgulu.tvgulu001.com
+gulugj.com
+gululu.comgulxursg.com
+gumade.com
+gumang.com
+gumaor.comgumengya.com
+gumiji.comgumingnc.comgumo.progumodels.comguo7.com
guo98.comguoanaz.comguoanele.comguoanqi.comguoaoqiyuan.com
+guoaso.com
guobaihui.com
guobaoyou.comguobensd.com
guobiao99.comguoboshi.comguocaiqinghai.comguochaos.comguocuijingju.comguodahulian.com
guodegang.orgguodingnet.comguodongbaohe.comguodongtech.comguodongtechnology.comguodouw.com
guodu.comguodu.hkguodushidai.com
+guofen.comguofenchaxun.comguofenchaxun.netguofeng.comguofenkong.comguoguo-app.comguoguomh.comguohanlawfirm.comguohaokeji.comguohongxin.comguohua88.comguohuapharm.comguohuayule.com
+guoing.com
guoji.bizguojiang.tvguojianglive.comguojidaigou.com
guojimami.comguojing-tech.com
guojiseka.comguojixuexiao.comguojixuexiao.orgguojiyujiaxueyuanzongbu.com
guojj.comguojled.com
guojusoft.comguokang.com
guoketest.comguokeyun.com
guokr.comguokr.io
guokr.net
guoku.comguolaiwanba.com
guole.fun
guoli.comguoliangjie.comguolianglab.orgguolier.comguolin.techguolong365.comguolongplastic.comguoluonews.com
guolv.com
guomai.ccguomeikuaidi.comguomiaokeji.com
guomin999.com
guomu.com
guopc.comguopeiwang.comguopika.comguoping123.com
guoqi.orgguoqinwang.com
guorentao.comguorongfei.comguoruiinfo.comguoruijx.com
+guoshi.com
guoshusir.comguosujt.comguotailiangyou.com
guotv.comguowaidiaocha.comguowaitianqi.comguoweitong.comguowenfh.comguowuwushu.com
guoxiehao.comguoxinlanqiao.com
guoxinmac.comguoxinqh.com
guoxintek.com
+guoxue.com
guoxue123.comguoxuedashi.comguoxuedashi.netguoxuemeng.comguoxuemi.com
guoxuwang.com
+guoyang.ccguoyangtech.comguoyaozhenxuan.comguoyi360.comguoyice.com
guoyu.comguoyuanliang.comguoyuejituan.comguoyunjc.comguoyunkeji.comguoyusec.comguoyutec.comguozaoke.comguozeyu.com
guozh.netguozhanjiaoyu.comguozhen.net
guozhenyi.com
guozhihua.net
guozhivip.com
guozi.orgguoziyx.com
+gupang.comgupaoedu.com
gupei.com
gupen.com
gupiao135.comgupiao8.comgupiaowajue.comgupiaozhidao.comgupowang.comgupt.net
gupuu.com
gupzs.com
guqiankun.com
guqiu.comguqu.netgurieslrhjsfh.shopgurukeji.comgushequ.comgushi.ci
gushi.comgushi365.comgushiai.comgushici.comgushici.netgushicimingju.com
gushiciqu.comgushidaquan.ccgushiju.netgushiwen.org
gushufang.comgusiyuan.comgusspro.comgusucaishui.comgususoft.comgusuwang.com
+guteke.comgutianfood.comgutlighting.com
gutou.comgutx.org
guwan.comguweimin.comguwendao.netguwenxs.comguwenxuexi.comguwu121.com
+guxunw.comguyerconcrete.comguyi.ccguyiying.com
guyizisha.comguyuehe.com
guyuehome.comguyuenglish.com
guyungame.com
guyut.comguzaosf.comguzhang.comguzhangting.comguzhilin.comguzhongtrade.com
+guziyy.com
+gvacdn.comgvcr9zaemdzh.com
gvfgd.comgvi-tech.comgvlocalization.comgvmocpc.comgvnpjzn.comgvoiceplat.comgvt2-cn.comgvwyuik.com
gvzen.com
gw-ec.comzzhuiyu.comgw2cddpt2hao.online
gw2sc.com
+gw4.ccgw66.vip
+gwamcc.com
+gwauto.com
gwbfc.comgwblighting.com
+gwdang.com
+gweike.comgwell.ccgwfsy.rogwgl168.com
+gwi.cc
gwidc.comgwin-cn.comgwjakzzx.comgwjinan.comgwkvepgc.comgwm-global.comgwmapp-h.com
gwmfc.comgwmsoft.com
gworg.com
gwoversea.com
+gwozai.com
gwpdi.com
gwpstools.com
+gwsdns.comgwtt.comgwwg.comgwy.comgwyclass.com
gwyoo.com
gwyou.com
+gwypxw.com
gwyzk.com
gwzft.com
+gwzwfw.com
+gwzyxh.comgx-antai.com
gx-aozhan.comgx-biosensor.com
gx-ds.net
gx-etrans.com
gx-fx.comgx-hengyuan.com
gx-hm.com
gx-lc.comgx-newmedia.comgx-royalpartners.comgx-stbd.comgx-vlink.com
gx-wl.com
gx-xc.comgx-xjyx.comgx-yidaiyilu.com
gx-zy.comgx10010.comgx12333.net
gx163.comgx1g.comgx3j.net
+gx4485.com
+gx5127.com
gx516.comgx51766.comgx5f.comgx79.comgx81jxzl.com
+gx8899.comgx966888.com
gxaas.net
gxabd.net
+gxacjs.com
+gxacto.com
gxadt.com
+gxadwh.com
+gxaedu.com
+gxahjy.com
gxaid.com
+gxaids.comgxaijun.comgxairlines.com
+gxaist.comgxaixier.com
gxalt.comgxaltcl.comgxanchen.comgxankao.com
+gxanlu.com
+gxantu.comgxanxun.com
gxany.comgxanyun.comgxaohua.com
+gxaoma.comgxar.com
gxarl.com
+gxasjc.com
+gxasjn.comgxawjmy.com
+gxaxjy.com
+gxaxpc.comgxaxtbw.com
gxayn.com
+gxazfw.com
+gxb.io
gxb2b.net
gxbaichen.comgxbaidu.net
gxbaidutg.comgxbaifugch.comgxbaikuang.comgxbaixun.com
+gxbakj.comgxbaozhiyue.comgxbasic.comgxbbwsw.comgxbbwyl.com
gxbcf.comgxbcgjg.com
+gxbcjc.com
+gxbckj.com
+gxbdcx.com
+gxbdtx.com
gxbeiente.comgxbenxin.com
+gxbest.xyz
+gxbeyy.comgxbf.net
+gxbgdl.com
+gxbglz.com
+gxbgtf.comgxbhgas.com
+gxbhjg.com
+gxbhlg.com
+gxbhly.net
+gxbian.com
gxbiandao.com
gxbidding.com
gxbie.comgxbihongkeji.comgxbinhai.comgxbiyang.com
+gxblfs.comgxblnongye.com
+gxbltz.com
gxbml.com
+gxbmmy.com
+gxbngs.comgxbochi.comgxboning.comgxbotlan.com
+gxbqba.comgxbqggzz.com
+gxbqkj.comgxbr668.com
gxbre.com
gxbrm.comgxbs.net
gxbsc.comgxbscbh.com
+gxbsfj.comgxbsjsgc.com
+gxbsky.com
+gxbsnx.comgxbssyy.comgxbstlxx.comgxbsyjsw.com
+gxbtjt.com
+gxbtka.com
+gxbtnz.com
+gxbtsc.com
+gxbtsy.com
+gxbtxc.com
+gxbygs.com
+gxbyjx.comgxbyjxc.com
+gxbykj.comgxbyrcb.com
gxbys.com
gxbyw.com
gxbyx.com
+gxbzjx.com
gxcae.com
gxcaining.comgxcaiyiduo.comgxcampus.comgxcards.comgxcareer.com
+gxcast.com
+gxcatv.com
+gxcbjs.comgxcbljt.com
+gxcbzn.comgxccblg.comgxccedu.com
+gxccjt.com
gxcdc.comgxcddcs.com
gxceg.com
gxcei.com
+gxcerc.comgxcexxzx.com
+gxcfjx.com
+gxcgbd.com
+gxcgmf.com
+gxcgzh.com
gxch-tech.comgxch168.com
gxchanghe.comgxchangjiangpn-jinnuo.comgxchaoye.com
+gxchbf.com
+gxchem.comgxchengjian.comgxchengmei.comgxchengyun.comgxchlrf.com
gxchr.comgxchuanghua.comgxchuangrong.comgxchuanlan.comgxchuen.com
gxchunmao.comgxchuxin.com
gxcic.net
+gxcimc.comgxcj.ccgxcj.net
+gxcjcl.com
gxcjgt.cc
+gxcjjt.com
gxcjn.com
+gxcjtc.com
+gxclkj.com
+gxclzz.com
+gxcmgr.comgxcmicc.comgxcmkfm.com
gxcml.comgxcncec.com
+gxcnjs.com
+gxcnjx.comgxcodemaker.com
+gxcors.comgxcounty.comgxcq188.com
gxcqm.comgxcr.cc
+gxcrcw.com
gxcrh.net
+gxcrhj.com
+gxcrjm.comgxcrzxgs.comgxcschem.com
+gxcscm.com
gxcsf.com
+gxcsfc.com
+gxcskj.comgxcsmed.com
+gxcsmx.com
+gxcsqj.comgxcsycj.comgxcsypm.com
+gxcszm.com
gxctc.net
gxctd.com
+gxcthb.com
gxcti.com
+gxctwl.com
+gxctzb.com
gxcuiping.comgxcvuedu.comgxcw.com
+gxcxhb.comgxcxxny.com
+gxcxyx.com
+gxcyaq.com
+gxcygs.comgxcyhjt168.com
+gxcyzs.com
+gxcz88.com
gxczm.comgxcznews.comgxcznews.net
+gxdadu.comgxdahua.comgxdairy.comgxdajin.comgxdajixiong.com
+gxdake.comgxdalonghu.comgxdanbao.comgxdangan.comgxdansi.comgxdanzo.com
+gxdaos.comgxdaosheng.com
gxdartrun.comgxdashun.com
+gxdbdl.com
gxdbxrmyy.com
gxdco.net
+gxddcs.com
+gxddtz.com
+gxddzl.comgxdegas.comgxdetdq.comgxdexin.club
+gxdfjt.com
+gxdfzx.com
+gxdhgy.com
+gxdhhb.com
+gxdhyy.com
+gxdiba.comgxdicai.com
gxdig.comgxdingyi.comgxdingyu.comgxdkjmy.com
gxdkx.com
+gxdkyr.net
+gxdljz.comgxdltech.com
+gxdlxy.com
+gxdlzl.com
+gxdmds.comgxdmjxc.com
+gxdmsq.com
gxdmtrade.com
gxdmw.com
gxdnf.com
gxdnu.com
+gxdong.comgxdongce.comgxdongfangshi.comgxdonghong.com
gxdongjin.com
gxdongkai.comgxdoulaibo.com
gxdoz.com
+gxdqtg.com
gxdrh.com
+gxdrmq.com
gxds1.com
gxdse.com
+gxdsjz.comgxdslyy.com
gxdslyyls.comgxdsoms.com
+gxdsxf.com
+gxdsyl.comgxdtchem.comgxdtiot.com
+gxdtjl.com
+gxdtsc.comgxdunhuang.com
gxdunshen.comgxduomeishi.com
+gxduyi.com
gxdx5.com
+gxdxbj.comgxdxcredit.com
+gxdxdt.com
+gxdxgc.com
+gxdxjs.com
+gxdxlk.comgxdxlxs.com
+gxdxwd.comgxdxzkb.comgxdycpa.com
+gxdygs.com
+gxdygx.comgxdyxjd.com
+gxdyxx.com
+gxdyyj.comgxdzchjc.comgxea.com
gxeaq.comgxecard.com
gxecm.com
gxeec.com
+gxegoo.com
gxehy.com
+gxeits.comgxej.netgxelang.comgxenews.com
gxeph.com
gxept.com
+gxeqjx.com
gxeqx.com
+gxerke.com
+gxeszx.com
gxevc.com
gxewa.com
gxfag.com
gxfaj.comgxfangchan.comgxfanghu.com
gxfanlian.comgxfanlu.com
gxfanxing.comgxfanyayoga.com
gxfcq.com
+gxfdcw.com
gxfengjie.com
gxfenglei.comgxfengxiang.comgxfengxingjq.com
+gxffjt.com
+gxfgsm.com
+gxfhjs.com
+gxfhny.com
+gxfhxx.comgxfi.net
gxfigroup.com
gxfin.comgxfinfr.com
+gxfjly.com
gxflm.com
+gxflpg.com
+gxflzx.comgxfm.net
+gxfmmy.com
gxfnt.comgxforestry.com
+gxfrhb.com
+gxfsms.com
+gxfssy.com
+gxfsty.com
+gxfswl.com
gxfsxrmyy.comgxfsyljt.com
gxftu.orggxfushun.comgxfuxue.comgxfuyuan.comgxfxhjwy.com
+gxfxly.com
gxfxm.com
+gxfxwh.com
+gxfxzb.com
+gxfybj.com
+gxfygd.com
+gxfygp.com
+gxfygs.com
gxfysteel.com
+gxfyzx.com
gxfzf.com
+gxfzjt.comgxfzkkj.com
+gxfzpg.comgxfzyjs.com
+gxgaia.com
+gxgama.comgxgangji.com
gxgangxin.comgxgangyuan.comgxganhua.com
gxgaoling.com
gxgaotong.comgxgaoyao.comgxgaoyou.com
+gxgaty.com
gxgba.com
+gxgbdb.com
+gxgbkj.com
+gxgbky.com
gxgbx.comgxgcedu.comgxgcfscl.com
+gxgcjs.comgxgczxjt.com
+gxgczy.comgxgd192.com
+gxgdbg.com
+gxgdhg.comgxgdjjyy.comgxgdlsp.com
+gxgdpg.com
+gxgdyy.com
+gxgdyz.com
+gxgeek.comgxgentle.comgxgf.net
+gxgfsh.com
+gxgfsj.comgxggcmc.com
+gxggdq.com
gxggfhsmy.com
+gxgghx.com
gxggm.com
+gxggmy.comgxggryjy.com
+gxghfs.com
+gxghjt.com
+gxghpg.comgxghsnzp.comgxghyysc.com
+gxghzh.comgxgj.com
+gxgjgc.com
+gxgjgg.com
gxgjh.com
+gxgjjl.com
+gxgjjt.com
+gxgjny.com
+gxgjzy.comgxgkcat.comgxgkzzr.comgxgl588.com
+gxgldx.com
+gxglft.comgxglgcjs.com
+gxglhd.com
+gxglhx.comgxgljhgc.com
+gxgljy.com
+gxglkg.comgxglnykj.comgxglory.comgxgltzjt.com
+gxglyl.com
+gxglys.com
+gxglzj.com
+gxglzs.comgxgm.net
+gxgmgc.comgxgmjhc.com
+gxgmtx.comgxgndxdl.comgxgoldpool.comgxgongyinglian.comgxgoodfirst.com
gxgov.netgxgp123.com
gxgpo.comgxgpxny.comgxgpzhtc.com
+gxgqdz.com
+gxgqsn.comgxgrasp.com
+gxgree.comgxgrtech.com
+gxgryy.com
+gxgsgl.com
+gxgsgs.com
+gxgshb.comgxgswlhy.com
+gxgsxy.com
+gxgsyy.com
+gxgszb.com
+gxgtdg.com
+gxgtdl.comgxgtghy.comgxgtsykj.com
+gxgttt.comgxgtxny.com
+gxgtzb.com
+gxgtzx.comgxguanghui.comgxguangxin.com
gxguangyi.com
gxguantai.comgxguanyu.comgxguerte.comgxguicheng.comgxguijiu.comgxguimei.com
gxguining.com
gxguiping.comgxguiren.comgxguirun.comgxguite.comgxguixiaoshu.com
gxguixing.com
gxguiyang.comgxguiyanjichu.comgxguoda.comgxguoen.com
gxguohuan.com
gxguojian.comgxguojingjiuye.com
gxguoyang.comgxguoyuanjituan.com
+gxguyu.com
+gxgwmb.comgxgwuxe.comgxgwykh.com
+gxgwyw.org
+gxgxjc.com
gxgxncplm.com
+gxgxun.com
+gxgyfy.com
gxgyh.comgxgymsxx.com
+gxgyrq.comgxgyyclc.com
+gxgyyy.com
+gxgzlm.com
+gxgzrl.comgxgztyy.com
gxgzy.com
+gxgzzn.comgxhaibao.com
+gxhalw.com
gxhanbell.comgxhanhe.comgxhanlin.comgxhansen.com
gxhaojian.comgxhaorun.comgxhaozhi.comgxharui.com
gxhb8.comgxhbcyxh.comgxhbedu.com
gxhbs.comgxhc120.com
+gxhc18.com
+gxhcbb.com
gxhcgroup.com
+gxhcht.com
+gxhclw.com
+gxhcmr.com
+gxhcnf.com
+gxhcpl.com
+gxhcwy.com
+gxhcyk.com
+gxhczx.com
+gxhdaf.comgxhddigital.com
+gxhddj.com
+gxhddq.comgxhdqjn.com
+gxhdsy.comgxhealth.xin
+gxheda.comgxhefei.comgxheguan.comgxhejia.comgxhengda.com
gxhengxjc.com
+gxhepu.comgxheyumaoyi.comgxhezhixin.com
+gxhfba.com
+gxhfdl.comgxhfdqsb.com
+gxhfyy.com
+gxhfzx.comgxhg.net
+gxhghg.com
+gxhgjm.com
+gxhgkj.com
gxhgx.net
+gxhgzb.com
+gxhgzc.comgxhh.com
gxhhb.com
+gxhhgc.com
+gxhhgs.com
+gxhhhb.com
+gxhhig.com
+gxhhjj.net
+gxhhjk.comgxhhmed.comgxhhtech.comgxhhzsjt.com
gxhigreen.com
gxhis.com
gxhis.netgxhiyuan.com
+gxhjbw.com
+gxhjjt.net
+gxhjky.com
+gxhjly.com
+gxhjsh.com
+gxhjsz.com
+gxhjwy.com
gxhjzbcyy.com
+gxhjzx.com
gxhkd.com
+gxhkdq.comgxhkdyf.com
+gxhkgy.com
+gxhkjc.com
+gxhkjt.comgxhl.com
gxhlc.com
+gxhljx.comgxhlqzj.com
+gxhlun.com
gxhlx.netgxhly168.com
+gxhmba.com
+gxhmcm.comgxhmdjt.com
+gxhnyt.com
+gxholy.comgxhongchuan.comgxhonggang.comgxhongjing.comgxhongning.comgxhongshimuye.comgxhongyunsi.comgxhongzh.com
+gxhope.orggxhospital.comgxhouse.com
+gxhovi.com
+gxhpjx.com
gxhpxrmyy.com
gxhqh.com
+gxhqjy.comgxhqtest.com
+gxhqwh.comgxhqxmgl.comgxhrcjz.com
+gxhrkj.com
+gxhrtc.com
+gxhsba.com
+gxhsdc.xyzgxhsjgs.com
+gxhsjs.netgxhsltd.com
+gxhsry.comgxhsshj.com
gxhsshjzl.comgxhstars.comgxhsxcl.comgxhsxxkj.comgxhsykj.com
+gxhszb.com
+gxhtjc.com
+gxhtjx.com
gxhtl.comgxhtour.com
+gxhtsw.com
+gxhtte.comgxhuabao.comgxhuachi.comgxhuachuang.com
gxhuadong.comgxhuadu.comgxhuaen.comgxhuahui.comgxhuanbaojt.comgxhuapei.comgxhuaqi.comgxhuaqu.com
+gxhuar.com
gxhuashuo.com
gxhuaxing.comgxhuaxintech.com
gxhui.comgxhuicuibencao.comgxhuifa.comgxhuihuang.comgxhuiji.comgxhuijvtong.com
gxhuiming.com
gxhuitong.comgxhuiwanger.com
gxhuolong.comgxhxbook.com
+gxhxgg.com
gxhxgroup.com
gxhxh.comgxhxjjn.comgxhxysgs.comgxhxyyjt.comgxhxzyh.comgxhyart.com
+gxhydq.com
+gxhyey.com
+gxhygg.com
+gxhyhs.comgxhykglass.com
gxhym.com
gxhyq.comgxhyscl.com
+gxhysm.com
+gxhyww.com
+gxhyxf.com
+gxhyxt.comgxhyz168.com
gxhyzixun.com
+gxhyzx.netgxhzgjyy.comgxhzjsgc.comgxhzsbwg.comgxhzsqyg.comgxhztqt.com
+gxhzxk.com
+gxhzxw.com
+gxhzyd.comgxhzzgx.comgxi.ink
+gxiang.net
+gxiang.org
+gxibvc.net
gxic.clubgxic.net
gxicc.net
+gxicpa.com
gxidc.com
gxidi.com
gxind.com
gxinf.com
+gxinfo.org
gxinfotec.com
gxipo.net
+gxjajc.com
gxjaw.com
+gxjbhb.com
gxjbk.comgxjbykj.com
+gxjbyy.com
+gxjcbf.com
+gxjccj.com
+gxjckc.com
+gxjcqt.comgxjcxcl.com
+gxjcxy.com
gxjcy.com
+gxjcys.comgxjczlsb.com
+gxjdcb.com
+gxjdgc.comgxjdgczx.comgxjdgyxx.com
+gxjdxs.com
+gxjeyy.com
+gxjf99.com
+gxjfdz.com
gxjfx.comgxjg199.com
+gxjgdj.com
+gxjgea.com
+gxjggj.com
+gxjghy.comgxjgjjc.comgxjgjstzjt.com
+gxjgjt.com
+gxjgyj.comgxjgyjgs.comgxjgzcb.comgxjgzppc.com
+gxjh56.com
+gxjhcj.comgxjhgczx.com
+gxjhgd.com
+gxjhgs.com
+gxjhgy.comgxjhjcw.comgxjhjczl.comgxjhjdsb.com
+gxjhjs.com
+gxjhky.com
+gxjhsj.comgxjhtea.comgxjhygs.com
+gxjhzj.comgxjiahua.comgxjiangyong.comgxjianhong.com
gxjianlan.comgxjianrong.com
gxjiantuo.com
gxjianxin.comgxjianyi.comgxjiaohang.comgxjiasheng.comgxjiatai.com
gxjichang.comgxjiebai.com
gxjiefeng.comgxjiejiang.com
+gxjien.comgxjigeng.comgxjigeyuan.com
+gxjihu.comgxjinan.comgxjinchahua.comgxjingsheng.comgxjingtong.comgxjingu.comgxjinhai.comgxjinhuiauto.comgxjinjiang.comgxjinsu.comgxjinsui.com
gxjintong.comgxjintu.comgxjirui.comgxjiufa.comgxjiuxincpa.comgxjiuyi.com
gxjiuyi99.comgxjiwei.com
+gxjixu.comgxjiyong.com
+gxjiyu.com
gxjjb.comgxjjfds.comgxjjfjt.com
gxjjg.com
+gxjjgy.com
gxjjh.com
+gxjjjs.comgxjjkyy.com
+gxjjyb.comgxjkamc.com
gxjkgroup.com
+gxjkhj.com
+gxjkjg.comgxjkjyjc.com
+gxjkwy.com
+gxjkzx.com
+gxjl99.com
gxjla.com
+gxjlbw.com
+gxjljz.com
+gxjlkj.com
+gxjlnm.com
+gxjlrc.com
+gxjlsc.comgxjm.vipgxjmggs.com
+gxjmxx.com
+gxjmxy.com
+gxjmzg.comgxjnbgzx.com
+gxjowy.com
+gxjpfs.com
+gxjpjs.com
+gxjpjy.com
+gxjptw.com
+gxjqcj.com
+gxjqgs.com
gxjqt.com
+gxjqyy.com
+gxjrxy.com
+gxjrzl.comgxjs.net
+gxjs99.comgxjsd56.com
+gxjsfs.com
+gxjshu.com
+gxjsjz.comgxjsstjt.comgxjstkj.com
+gxjsws.comgxjsxny.comgxjsxszn.comgxjt.netgxjt001.com
+gxjtaq.com
+gxjtjx.comgxjtkyy.com
+gxjtpg.com
+gxjtsa.comgxjtscm.comgxjtsjy.com
+gxjttz.comgxjttzjt.comgxjtyab.comgxjtysxx.comgxjuancheng.com
gxjub.com
+gxjugu.com
+gxjuhw.comgxjunan.com
gxjunding.comgxjunhe.comgxjunliang.comgxjuntai.com
+gxjwgd.com
gxjxcloud.com
+gxjxsy.com
+gxjxwh.com
+gxjxzx.netgxjycjsb.com
gxjyd.comgxjyfdc.comgxjyfkj.comgxjygljt.comgxjyh.store
+gxjyhb.com
gxjyjs168.com
+gxjyjt.com
+gxjyjz.comgxjyxxw.com
gxjyy.com
+gxjyzl.comgxjyzyw.comgxjz123.com
+gxjzcy.com
+gxjzdt.com
+gxjzht.comgxjzhxd.comgxjzj-hotel.com
gxjzj.com
+gxjzjc.com
+gxjzjl.comgxjznet.comgxjzw12315.com
gxjzy.comgxjzzbdl.comgxkaifan.comgxkangfu.comgxkangtian.comgxkaoba.com
+gxkcjc.com
gxkcmy119.com
+gxkcsb.comgxkdefy.com
+gxkdjc.com
+gxkdjd.comgxkdjsq.comgxkefei.comgxkehong.comgxkelite.comgxkesui.com
gxkfl.com
gxkfy.com
+gxkhjt.com
+gxkhkj.com
gxkhn.comgxkhxxcl.com
+gxkiwi.com
gxkjd.comgxkjdns.comgxkjdsj.com
+gxkjec.com
+gxkjhb.com
+gxkjjt.com
gxkjl.com
gxkjs.com
+gxkjsw.com
+gxkjyw.com
+gxkjzy.comgxkl.com
gxkld.com
+gxklyy.comgxkmkny.comgxkongshan.comgxkorbel.com
+gxkqjt.com
+gxkqty.com
+gxkrqz.com
+gxkrui.com
gxkrx.com
+gxkrzc.com
+gxksdl.com
+gxksdt.com
+gxksjx.net
+gxksxf.com
+gxktdl.com
+gxktzk.com
+gxktzx.com
gxkuaiman.com
gxkunzhen.com
+gxkxsj.com
+gxkxsw.com
+gxkyjc.com
+gxkyxy.com
+gxkzxx.comgxlanbowang.comgxlanco.comgxlancogroup.com
gxlanlian.comgxlansheng.comgxlanta.comgxlanya.comgxlaren.comgxlbang.comgxlbbwg.com
+gxlbgf.com
+gxlbgz.com
gxlbi.com
+gxlbmy.comgxlbsjfh.comgxlbzszy.com
gxlcclean.com
+gxlcgy.comgxlcjsjt.comgxlclsyf.com
+gxlcms.comjsjs.org
gxlcwater.com
+gxlcxs.comgxld168.com
+gxlddq.com
gxldgjgpj.com
+gxldjs.comgxldled.com
+gxldpc.com
+gxldzn.com
+gxleba.com
gxlecheng.com
gxlek.comgxlelin.com
+gxlfzl.com
+gxlggj.com
+gxlgwl.com
+gxlgxx.com
+gxlgxy.comgxlh168.com
+gxlhcx.comgxlhgjg.com
+gxlhhb.com
+gxlhjc.com
+gxlhxn.comgxlianci.comgxliangjian.com
gxliangla.comgxlianguan.comgxliangyun.comgxlianye.comgxlianying.com
gxlib.comgxlifengnongzi.comgxlihua.com
+gxlimu.com
gxlinfeng.com
+gxliri.comgxlituo.comgxliucan.com
gxliuhang.comgxliuqiaojidian.com
gxliuyuan.comgxlixin.comgxliyugs.com
+gxljgc.com
gxljh.com
+gxljjt.com
+gxljjz.com
+gxljxs.com
+gxljyt.comgxlk.net
gxlke.com
+gxlkjy.com
gxlkl.net
+gxllcb.com
gxllh.com
gxllsw888.com
+gxllxl.com
+gxlmjt.com
+gxlmzs.com
+gxlndq.com
gxlongbao.comgxlongfa.comgxlonsen.com
+gxlove.vip
gxlps.com
gxlpy.comgxlqgcy.com
+gxlqjs.com
+gxlqkg.com
+gxlqsd.com
+gxlryl.com
+gxlscf.com
+gxlsfy.com
+gxlsfz.comgxlsgjg.com
+gxlsnm.com
+gxlstc.comgxlswhg.com
gxltbaoan.comgxlteng.comgxltgjg.com
+gxltjj.com
gxltm.comgxltmyjt.com
+gxltrc.com
+gxltzy.comgxluhai.comgxlulian.comgxluogui.comgxluyujt.comgxluyun.comgxlvjian.comgxlvtong.comgxlvwang.comgxlwdsslgy.com
+gxlwjx.com
+gxlwjz.com
+gxlwlc.com
gxlwt.com
+gxlxgg.com
gxlxkj.cc
gxlxs2008.net
+gxlxsn.com
+gxlxxl.comgxlxyun.com
+gxly66.com
gxlyb.com
+gxlycq.com
+gxlycs.comgxlycwb.comgxlyghy.comgxlygyl.comgxlyhbkj.com
+gxlyjs.com
+gxlyjt.com
+gxlynk.comgxlzbbw.com
+gxlzck.comgxlzcyjt.comgxlzdyc.comgxlzgcc.comgxlzgdjt.com
+gxlzhm.com
+gxlzlk.com
+gxlzpc.com
+gxlzsh.comgxlzsmk.com
+gxlzst.com
+gxlztz.com
+gxlzwl.com
gxlzxrmyy.com
+gxlzxt.com
+gxlzzc.com
+gxlzzh.netgxma123.com
+gxmacc.comgxmailu.comgxmanyy.comgxmaocai.com
gxmbh.com
gxmbs.com
gxmdgroup.com
+gxmdjt.comgxmeiao.comgxmeiduo.comgxmeike.comgxmetalking.com
+gxmggg.com
+gxmiao.com
gxmiaoshu.com
gxmingshi.com
gxmingyun.comgxmj.org
+gxmjyy.com
+gxmjzs.comgxmk.net
+gxmlba.com
gxmld.comgxmlyjy.comgxmmhgs.com
+gxmmkt.comgxmoking.comgxmq-bd.com
+gxmqhb.comgxmscbs.com
gxmsg.com
+gxmsgy.comgxmtzn1658.com
+gxmuch.comgxmuwmfy.comgxmuyfy.com
+gxmuzi.com
gxmxc.com
+gxmxin.com
+gxmyjc.com
+gxmykj.comgxmylink.comgxmytzsn.com
gxmzb.net
+gxmzcl.comgxmzjwy.com
+gxmzkj.com
+gxmzly.comgxmznzs.com
gxnantong.com
+gxnapd.com
gxnas.com
+gxnbjc.com
+gxnccq.com
+gxncgd.comgxnctzjt.comgxndcxswyxgs.com
+gxnddq.com
+gxndgg.comgxnftwny.comgxnfxny.com
+gxnfyk.com
+gxnhjk.com
+gxnjqj.com
+gxnjsy.com
gxnjy.com
+gxnjzj.comgxnk.comgxnkjgnc.comgxnkxjry.com
+gxnkyy.com
+gxnkyy.net
+gxnmkj.com
+gxnmzj.com
+gxnncj.comgxnnclt.comgxnndghb.comgxnndqt.comgxnnedu.com
+gxnnfx.comgxnnhexiexinli.comgxnnhhdzkjyxgs.com
+gxnnip.com
+gxnnjn.comgxnnjqgg.com
+gxnnjw.comgxnnkfzx.com
+gxnnks.comgxnnlsz.comgxnnlyd.comgxnnmudz.comgxnnncp.comgxnnsdyy.comgxnnshjt.com
gxnnsmfbl.comgxnnsng.com
+gxnnsy.comgxnntfx.comgxnnthch.com
+gxnntn.comgxnntybaiyi.com
+gxnnws.comgxnnxgx.comgxnnxny.com
gxnnybskq.com
gxnnyihui.comgxnnyxjx.com
+gxnnzj.comgxnongmu.comgxnpzbx.com
+gxnsjt.com
+gxntcy.com
+gxntjz.comgxnumba.com
+gxnwjt.com
+gxnxbg.com
+gxnxgd.com
+gxnydq.com
+gxnymt.com
+gxnzjz.com
+gxnzzy.comgxoc168.com
gxoem.comgxok.com
+gxosjc.comgxostec.com
gxota.com
gxota.net
+gxotsc.comgxouguan.comgxoulian.comgxouwen.com
+gxp.ccgxpanda.comgxpangbo.com
gxpbs.com
gxpeh.com
+gxpfyy.comgxpgfood.com
+gxpgft.com
+gxpggj.com
+gxpghj.com
gxpgy.com
gxphj.comgxpingen.com
+gxpinn.com
+gxpjzs.com
+gxpljt.com
+gxpnzp.com
+gxpost.com
gxppw.comgxptids.com
+gxptkc.com
+gxptyy.comgxpu.com
+gxpuke.comgxpuning.com
+gxpuyi.com
+gxpykj.com
+gxqcjs.com
gxqcw.comgxqddfxf.com
+gxqdkj.comgxqfjzzs.com
+gxqgjx.comgxqgjzgc.com
+gxqhcm.com
+gxqhjc.comgxqhtec.com
gxqianhan.comgxqianrong.comgxqianshuo.comgxqianyuan.comgxqiaoyuan.com
+gxqiba.com
+gxqihu.comgxqihuan.comgxqingchang.comgxqinmai.com
gxqintang.comgxqiyang.comgxqiyuan.com
+gxqkcm.com
+gxqljt.com
+gxqllc.com
gxqlt.com
gxqmk.com
+gxqnjc.comgxqqxcl.com
+gxqrhb.com
+gxqrjy.com
+gxqrkj.comgxqs.org
+gxqsnz.com
+gxqszl.com
gxqtgroup.comgxqtszxc.com
+gxqxxf.com
+gxqygc.com
+gxqyjy.com
+gxqykj.com
+gxqymc.com
+gxqymy.com
+gxqzdx.com
+gxqzez.com
+gxqzfz.com
gxqzk.com
+gxqzrm.com
+gxqztz.netgxqzxjh.com
+gxqzxw.comgxqzxyd.com
+gxqzyz.com
+gxqzzy.comgxrahswhysg.comgxrasafety.com
gxrayhome.comgxrc.com
+gxrcda.com
+gxrcgs.comgxrcosta.com
+gxrcpx.com
gxrcw.com
+gxrczc.com
+gxrczc.net
gxrdgroup.com
+gxrdjy.com
gxrenheng.com
+gxrfjt.com
gxrfy.com
+gxrfys.com
+gxrgjd.com
+gxrgwl.com
+gxrhdl.com
+gxrhjy.comgxrijia.com
gxrjf.com
+gxrjyy.com
+gxrkyy.com
+gxrmrl.com
+gxrmzs.com
+gxrnzb.com
+gxroad.com
gxrongpin.comgxrongwang.com
gxrongxin.comgxrongzheng.com
+gxrqmb.comgxrqsjhz.com
gxrsb.net
+gxrsjc.comgxrskyy.com
gxrsmllab.comgxrtbtc.com
gxruiheng.comgxruipai.comgxruisheng.com
gxruizhen.com
gxrunteng.com
+gxrxdt.com
+gxrxsy.comgxrxsyjz.com
+gxrygc.com
gxrzd.comgxrzgczj.comgxrzgczx.com
gxsad.net
gxsag.com
gxsailian.com
gxsamwell.comgxsanan.comgxsanchuan.com
gxsanleng.comgxsanli.comgxsanyi.netgxsanyo.com
+gxsbcj.comgxsbfdc.com
gxsby.com
+gxsbzz.com
+gxsc88.comgxscbxg.com
+gxsccl.com
+gxscjn.com
+gxscjx.com
+gxsckj.net
gxscq.com
+gxscse.com
+gxscsw.com
+gxscwy.com
+gxscyg.comgxsd.net
+gxsddz.com
+gxsdem.com
+gxsdpx.comgxsdxxjs.com
gxsdy.com
+gxseal.com
+gxsejy.com
+gxsell.comgxsenge.netgxsenhao.comgxsenjiong.com
gxsenzhou.com
+gxsfcm.com
+gxsfht.com
+gxsfjd.com
+gxsfzs.comgxsgcgpt.com
+gxsggc.com
+gxsgip.com
+gxsgys.comgxshangbeng.comgxshangjia.comgxshanglong.com
gxshangti.comgxshangyou.comgxshanyixing.com
+gxshbs.com
+gxshck.com
+gxshdl.comgxshebei.comgxshenglin.com
gxshenglu.comgxshengwei.comgxshenlizhiyao.comgxshenmiao.comgxshenyi.com
+gxshgk.comgxshile.com
gxshiteng.comgxshixinde.comgxshizheng.comgxshizhi.com
+gxshjy.com
+gxshjz.com
+gxshny.comgxshoufeng.comgxshouji.com
+gxshrf.com
+gxshty.com
+gxshua.comgxshuairun.comgxshudao.com
gxshuibao.comgxshunshun.com
gxshunxiu.comgxshwlw.com
+gxshxc.com
+gxshxf.comgxshxlpx.com
+gxshyy.comgxshz01.comgxshzyzs.com
+gxsika.com
+gxsilk.com
gxsjc.com
+gxsjgs.comgxsjmilk.com
+gxsjmy.com
+gxsjsd.com
+gxsjtz.com
+gxsjwh.com
gxskf.com
gxskm.com
+gxsksw.com
+gxsksy.com
+gxslbj.com
+gxslcc.com
+gxslty.com
+gxslyj.com
+gxslyy.com
gxsme.net
+gxsmkt.com
+gxsngc.com
+gxsntp.com
+gxsnzw.com
+gxsodl.com
+gxspas.com
+gxspri.comgxsq119.comgxsqmydc.com
+gxsrkj.com
+gxsrtz.com
+gxsrwl.comgxsrxlzxyxzrgs.com
+gxss20.com
+gxssmg.com
+gxssnn.com
+gxssrs.comgxstarship.com
gxstd.com
+gxsthb.comgxsthnt.com
+gxstkw.com
+gxstzx.comgxsubat.com
+gxsuda.comgxsunwin.com
gxsut.comgxsuyun.com
+gxswgd.com
+gxswim.com
+gxswsw.comgxswzps.com
+gxsxbj.com
+gxsxhw.com
+gxsxyy.comgxsy.orggxsycpa.com
+gxsydg.com
+gxsygg.com
+gxsyzs.com
gxszf.net
+gxszga.com
+gxszgp.com
+gxszjf.com
+gxszjk.com
+gxszyy.comgxtagrm.com
gxtaiping.com
gxtaiqicz.comgxtaishi.comgxtaiyinuo.com
+gxtalc.comgxtangmi.comgxtc2018.comgxtcdpp.com
+gxtckj.com
gxtcq.comgxtcsys.com
gxtdg.com
+gxtdrf.comgxtenger.comgxtengsong.comgxtesjy.comgxtf108.com
+gxtfgg.com
+gxtfmy.com
+gxtfxx.comgxthcpa.comgxthxxkj.comgxthy168.com
+gxthyy.com
gxtianlan.comgxtianmiao.com
gxtianpin.comgxticket.com
+gxtizi.comgxtjddc.comgxtjksj.comgxtjsnzg.comgxtk.com
+gxtkzx.com
+gxtlgd.comgxtljnhb.comgxtltzjt.com
gxtmh.comgxtmhzx.com
+gxtmrs.com
+gxtmsy.com
gxtnc.com
+gxtodo.com
gxtonghui.comgxtongji.com
gxtongpai.com
gxtongtai.com
gxtongyin.com
gxtongzhu.comgxtopart.comgxtp2021.com
+gxtrgs.comgxtrwhy.com
+gxtskq.com
+gxtslr.com
+gxtsny.com
+gxttcc.com
+gxttjs.com
+gxttjt.comgxtuanyuan.comgxtuipin.comgxtuliao.comgxtuoen.comgxtuoyi.com
gxtuscity.com
+gxtxjk.comgxtxpec.comgxty.comgxty.ltdgxtycpa.com
+gxtydt.comgxtydzqy.com
+gxtyjc.com
+gxtykj.com
gxtyw.com
+gxtywj.comgxtyymxcgs.com
+gxtzgg.com
gxtzh.net
+gxtznn.com
+gxtzpx.comgxtztech.com
gxucreate.comgxue.net
gxufl.com
gxufz.com
gxuit.com
gxumi.com
+gxupdi.com
gxups.com
gxuzf.comgxvideo.netgxvmall.comgxvolardda.com
gxwanchao.comgxwanchuan.com
gxwanchun.com
gxwbl.com
+gxwcll.com
+gxwcwl.com
+gxwdgg.com
+gxwdjt.comgxwdtech.comgxweibo.net
gxweipeng.comgxweite.com
gxwellsun.com
gxwenlian.comgxwenzhong.comgxwffdc.com
+gxwgdq.com
+gxwgjf.com
+gxwhsy.com
+gxwhwy.com
+gxwjkj.com
+gxwjky.com
gxwjs.comgxwjwswkj118.com
+gxwjxl.com
gxwjxsbcj.comgxwjyllh.com
+gxwkhb.comgxwkxcl.comgxwmj168.comgxwmpco.com
+gxwofi.comgxwogan.comgxwohua.com
+gxwoqi.com
+gxwqwh.com
+gxwskq.com
+gxwsxt.com
+gxwtai.com
+gxwtba.comgxwtrlzy.com
gxwtt.com
+gxwtzy.comgxwudun.comgxwuyan.com
+gxwuzi.comgxwx.comgxwxbjsy.com
+gxwxjy.com
+gxwxjz.comgxwxtyn.com
+gxwxzy.com
gxwys.com
gxwzgroup.com
gxwzhh.co
gxwzj.com
+gxwzjt.com
+gxwzjx.comgxwzlhh.com
+gxwzsz.comgxwzxhyq.com
+gxwzyl.com
+gxxaws.com
gxxbx.comgxxbysy.com
+gxxbzm.com
+gxxbzs.com
+gxxdbp.com
+gxxdit.com
+gxxdpc.comgxxdsmzj.com
+gxxdzx.comgxxfbfg.com
+gxxfgg.com
+gxxfky.com
+gxxfsl.comgxxfslbz.com
gxxfz.com
gxxgg.com
+gxxgle.com
gxxgpower.com
+gxxgrj.com
+gxxgty.com
+gxxh58.com
gxxhb.com
+gxxhcy.com
+gxxhgj.com
gxxhgroup.com
+gxxhgs.com
+gxxhgw.com
gxxhn.com
+gxxhsd.comgxxhtax.comgxxhtsj.com
+gxxhtx.comgxxhtzp.comgxxhyjjt.com
gxxhz.com
+gxxhzp.comgxxiangxing.comgxxiangyi88.comgxxiaofu.comgxxiaolong.netgxxiaotutu.com
gxxielang.com
gxxijiang.comgxxilin.com
gxxin.comgxxinbo8888.com
gxxinchai.comgxxingfu.comgxxingxing.com
gxxingyao.comgxxinhui.comgxxinrui.netgxxinxiang.comgxxinye.comgxxinyi.comgxxinyuruilin.comgxxinzhihai.comgxxiyuanep.comgxxjc168.comgxxjchem.com
+gxxjcz.com
+gxxjnc.comgxxjpco.com
+gxxjry.com
+gxxjsy.com
+gxxkai.com
+gxxkgs.com
+gxxkhj.comgxxkslgy.com
+gxxldl.comgxxlhkj.com
gxxlk.com
+gxxlkj.com
gxxls.com
+gxxlyc.comgxxlzxs.comgxxlzyc.comgxxmglzx.comgxxmjjs.comgxxmyjs.com
+gxxndz.com
+gxxpgd.com
+gxxqsm.com
+gxxqwh.com
gxxrf.com
+gxxrwl.comgxxrxmgl.com
+gxxrzb.com
+gxxshj.com
gxxsn.com
+gxxstz.com
gxxsy.com
+gxxszx.com
+gxxszy.net
+gxxtdt.com
+gxxtlq.com
+gxxtzg.comgxxuyang.comgxxw.com
+gxxwjs.netgxxy.onlinegxxydhb.com
gxxyh.net
gxxyhwhcb.com
+gxxyny.comgxxyrbc.comgxxyybc.comgxxyydl.com
+gxxyzx.comgxxzbjy.comgxxzbzh.com
+gxxzlx.comgxxztcm.com
+gxxzwd.comgxyaan.tech
+gxyali.comgxyanggong.com
gxyasuoji.com
+gxybsw.com
+gxybyy.comgxyc.net
+gxycdp.com
+gxycjy.com
+gxycwh.com
+gxycwy.comgxycykj.comgxycysw.comgxyd.com
+gxydbg.comgxydbgjj.comgxyddyf.comgxydeye.com
+gxydfs.com
gxydh.com
gxydn.com
+gxydsc.comgxydspm.comgxydtaxi.com
+gxydxf.comgxyefang.comgxyejun.com
+gxyesf.com
+gxyete.com
+gxyfck.com
+gxyfkj.com
gxyfm.comgxyfqxcx.com
+gxyfxc.com
+gxygfc.com
+gxyglw.com
+gxygys.com
+gxyhdq.comgxyhgcjcxxw.comgxyhgsgl.comgxyhjgjt.com
+gxyhjt.comgxyhkaolin.com
+gxyhmy.netgxyhtyy.com
+gxyhtz.com
+gxyhxx.com
gxyicheng.comgxyidao.com
+gxyide.com
gxyih.comgxyingchuang.comgxyingdi.com
gxyinglun.com
gxyingyue.comgxyinniyuan.com
gxyintian.comgxyinyulanyingguigang.comgxyipin.comgxyishi.comgxyixin.com
gxyiz.comgxyj.com
+gxyjcy.com
+gxyjdc.com
+gxyjhb.com
+gxyjjz.com
+gxyjmc.com
+gxykjd.com
+gxylct.comgxyldfyy.com
+gxylfs.comgxylgyx.comgxylink.com
+gxyljd.com
+gxyljf.com
+gxyllc.com
+gxylms.comgxylnews.comgxylpgs.com
gxyls.comgxylsjsp.comgxylswkj.comgxylwszkjjt.comgxympay.com
+gxymyl.com
+gxynjx.comgxynlts.com
gxyoj.comgxyonggu.comgxyongjiehb.comgxyongsheng.comgxyongzhitai.com
gxyos.comgxyoupinzhi.com
+gxypdc.com
+gxypjj.com
+gxypjy.com
+gxypnh.com
+gxyqjc.com
+gxyqtg.com
+gxysbt.com
+gxysbz.comgxysccsh.com
+gxyshg.com
+gxyskz.comgxyslkj.com
+gxysqj.com
gxyss.comgxytdyf.com
+gxytgc.com
+gxythb.net
gxytk.com
+gxytsy.com
+gxytzx.comgxyuanan.comgxyuanfeng.comgxyuanhe.comgxyuansheng.com
gxyuanyun.com
gxyuchuan.comgxyuehe.comgxyuetonggy.comgxyuheju.comgxyunhua.comgxyunsen.comgxyunsheng.comgxyunxiang.comgxyuqiaoshiye.comgxyushengwenhua.comgxyushuo.comgxyuyun.comgxyx168.comgxyx1688.com
+gxyxdl.com
+gxyxjt.com
+gxyxlx.com
+gxyxph.com
+gxyxsh.comgxyxtkj.comgxyxxny.com
+gxyxyy.com
+gxyykj.com
+gxyyun.com
+gxyyyc.comgxyyzwy.comgxyz120.comgxyzcdc.com
+gxyzcm.comgxyzems.comgxyzhbkj.comgxyzhhb.com
+gxyzjc.comgxyzrmyy.com
gxyzt.com
gxyzxf119.com
+gxyzyy.comgxzanwen.com
+gxzbfm.com
+gxzbhw.com
+gxzbkj.com
+gxzbzh.com
+gxzbzy.comgxzc888.com
+gxzcab.com
+gxzcfd.com
+gxzchz.com
+gxzcjh.com
+gxzckj.com
+gxzclq.comgxzcpsw.com
gxzcs.com
gxzcsteel.comgxzctec.com
+gxzdsj.com
+gxzdyg.comgxzecai.com
+gxzepu.com
+gxzero.comgxzesen.com
+gxzfjg.com
+gxzfnz.com
+gxzfqj.com
+gxzfzx.com
+gxzfzy.com
+gxzgdl.com
+gxzggc.com
+gxzggs.comgxzghsp.com
+gxzgsy.com
gxzgt.com
+gxzgtz.comgxzh.ltdgxzh666.comgxzhanyi.com
+gxzhdq.comgxzhenghua.comgxzhenhang.com
gxzhentao.com
gxzhenyue.com
+gxzhgz.comgxzhicui.comgxzhihui.comgxzhisai.com
gxzhixing.comgxzhiyuanxing.comgxzhizhi.com
gxzhizun.shop
+gxzhjj.com
+gxzhkj.com
+gxzhlw.com
+gxzhnm.comgxzhongshui.com
gxzhongta.comgxzhongzhai.comgxzhoushang.com
gxzhp.com
+gxzhpm.comgxzhshxx.com
+gxzhtt.comgxzhunchengbg.com
+gxzhye.com
+gxzhzb.com
+gxzhzn.com
+gxzhzy.comgxziheng.comgxziyun.comgxzj-metal.com
+gxzjjs.comgxzjjtgs.com
gxzjy.com
+gxzkjt.com
gxzkl.com
+gxzkxh.com
gxzky.com
+gxzkzs.com
+gxzlcs.com
+gxzldt.com
+gxzljt.com
+gxzljx.net
+gxzlnm.com
+gxzlsb.net
+gxzlyg.com
+gxzlzw.comgxzm.vip
+gxzmjg.com
+gxzmlm.com
+gxzmrl.comgxzmtech.com
+gxzmzz.com
+gxznym.com
gxzongjun.com
+gxzoxn.com
+gxzpjx.com
gxzpw.org
+gxzrdk.com
+gxzrjc.com
+gxzrxf.com
gxzsc.com
gxzscloud.com
+gxzsgl.comgxzsjzsj.comgxzslfz.com
+gxzsnm.com
+gxzspg.com
gxzssmart.comgxzstsg.comgxzstzjtgs.com
+gxzsyy.comgxzsyyls.com
+gxzszw.comgxzt.comgxzt.netgxzt148.com
+gxzt99.com
+gxztbf.comgxztjzgc.com
+gxztzs.comgxzunwei.com
+gxzunx.comgxzuojiang.com
+gxzwhw.com
+gxzwjt.com
gxzwk.com
+gxzwxx.com
+gxzxgl.com
+gxzxht.com
+gxzxmy.net
+gxzxrh.comgxzxslaw.com
+gxzxyl.netgxzy.com
+gxzydl.comgxzydljl.comgxzyfood.com
+gxzyfs.comgxzygygs.com
+gxzyhb.comgxzyhjd.com
+gxzyjl.comgxzyjsgc.com
+gxzyky.com
gxzymodel.com
+gxzypg.com
gxzyt.net
+gxzytx.comgxzyxysy.com
+gxzyyt.com
+gxzyzb.com
gxzzcheng.comgxzzcpa.com
gxzzd.comgxzztkj.comgxzzxin.com
gy-center.net
+gy-ggy.com
+gy.com
gy1688led.com
+gy794c.comgy7n.com
gy818.com
+gyb086.com
gybcq.comgycf.com
+gycode.com
+gydfsy.comgydongli.com
+gyersf.comgyfensuiji.com
+gyfwyy.com
+gygmhs.com
+gyhapp.com
+gyhb68.comgyhimalayanul.comgyhj.orggyhm.ccgyip.net
+gyjc88.comgyjiangyuan.com
+gykghb.com
gylaq.com
+gylcxo.xyz
gyljc.com
+gymama.comgymbo-online.com
gymsj.com
+gymxbl.comgymy.cc
gyncb.net
gynsh.net
+gypmsl.com
gypserver.comgypzkat.com
gyqcw.comgyqj888.com
gyqqd.com
+gyqzby.com
+gyr.cc
gyrsy.com
gyscw.com
+gysdzy.com
gyshwl.onlinegysk.com
gysou.comgysq.orggystarch.comgystatic.com
gystc.com
+gytcwb.com
gytsg.netgytvvoi.comgyuancdn.com
+gywygl.comgyxdkjdl.com
+gyxuan.comgyxx.comgyxx365.comgyyb.com
gyypw.com
+gyyuli.com
+gyzfbz.net
+gyzsgd.comgyzy.comgz-begreen.com
+gz-cmc.comgz-cube.comgz-dazo.comgz-ejoy.comgz-goam.comgz-guestshow.comgz-junan.comgz-lodihair.com
gz-notary.com
gz-xinghe.comgz-xinyu.com
+gz.com
gz007.net
+gz0668.com
gz121.comgz12301.com
gz300.com
gz304.com
gz360.com
+gz4399.comgz4u.net
gz528.com
gz583.comgz85.comgz91.comgzanquan.comgzaptech.net
gzasp.net
gzate.com
gzbaibian.netgzbaozhilin.comgzbeaton.com
gzbic.com
gzbio.netgzblssly.comgzbt020.com
gzbzsport.comgzch120.com
gzch12333.com
gzchangke.comgzchangzhe.com
gzchj.netgzchupai.comgzcn.net
+gzcppa.com
+gzcxhd.com
gzcycling.com
gzdai.comgzdaily.com
+gzdata.net
gzdbx.com
gzdensity.comgzdingyu.com
gzdingyue.com
gzdingyun.com
gzdjy.org
gzdli.com
gzdongmin.com
gzdsw.com
gzdtcy168.com
+gzdysx.com
+gzenxx.com
+gzexpo.comgzfc.net
gzfengmao.com
+gzfezx.com
gzfin.comgzfirst.comgzfjwzhs.comgzfrldz.comgzfsnet.com
+gzgajy.com
+gzgdwl.com
+gzgljx.comgzgreatsun.comgzguangjia.comgzgx020.comgzhaigu.com
+gzhakj.com
+gzhand.com
gzhangcha.comgzhatao.comgzhc365.comgzhd.net
+gzhd56.com
+gzhdcs.comgzhe.net
gzhengdou.comgzhfydgc.com
+gzhifi.com
gzhkl.comgzhornet.comgzhotelgroup.com
+gzhphb.com
+gzhtdz.comgzhtinfo.com
+gzhttp.com
+gzhuake.ccgzhuayan.comgzhuiwan.comgzhuize.com
+gzhysy.com
+gzhzcj.comgzhzy888.com
gzidc.com
+gzj568.comgzjc2016.com
+gzjgpy.comgzjhotel.com
+gzjiaw.comgzjiema.com
gzjingsha.com
gzjinsong.comgzjinyinjc.comgzjisikj.comgzjiunuo.com
+gzjpad.com
gzjqd.com
+gzjtjx.com
+gzjtjy.comgzjunyu.com
+gzjuqi.com
+gzjykj.comgzjyypt.com
gzjzc.com
+gzkcsj.comgzkeeyun.com
+gzking.comgzkunmao.com
+gzkz88.comgzlandunxx.com
+gzlarc.com
gzlex.comgzlingli.comgzliyuanhb.comgzlujiao.comgzlutong.com
gzluxlife.com
+gzlwrc.comgzlyhlawyer.comgzlz307.com
+gzlzfm.comgzm1.com
+gzmama.com
+gzmath.comgzmc668.comgzmediaclick.comgzmeichang.comgzmiden.comgzmiyuan.comgzmjhzs.com
gzmpc.com
gzmri.com
gzmtr.comgzmtrticket.comgzncstudios.com
+gznemo.com
gznet.com
gzngn.com
+gznict.comgznotes.comgznw.comgznxbank.comgzpeite.com
gzpfs.comgzpg.net
gzpma.comgzprobig.com
gzpts.comgzpy120.net
gzqbd.comgzqiche.comgzqixun-tech.comgzqljxd.com
+gzqsts.comgzqunsheng.com
+gzqxxz.net
+gzrand.com
gzrch.comgzrishun.com
gzrkt.comgzrobot.comgzrobots.comgzrtnet.com
gzshaudio.comgzshuangbao.comgzshuangyue.comgzshuimh.comgzshujuhui.com
gzsj.livegzsjyzx.comgzsq.comgzsrmyy.comgzsrunda.comgzstarship.com
gzstv.com
+gzstyq.com
+gzsums.netgzsunny.comgzsw168.comgzszgas.comgztaiyou.com
+gztalx.com
+gztcdj.com
gztea.vipgztfgame.com
+gzthrc.com
gztime.ccgztopkt.com
gztoptour.comgztotem.comgztrseo.com
+gzttjt.comgztv.com
gztvu.comgztwkadokawa.comgztxedu.com
+gztyre.comgztyyedu.comgztz.orggztz120.comgzuc.net
gzuni.comgzv6.comgzw.netgzwanbao.comgzwangshang.comgzwanju.comgzwarriortech.comgzwcfjd.com
+gzwcjs.comgzweicai.com
+gzweix.com
+gzwhir.comgzwonbo.com
+gzwrit.com
+gzwrjt.com
+gzwzhw.com
gzxdd.com
gzxdf.com
+gzxf35.com
gzxfj.comgzxianc.com
+gzxict.comgzxijiu.com
+gzxjgc.com
+gzxszf.comgzxulang.comgzxwtjy.com
gzxxm.com
+gzxzht.com
+gzxzjy.com
+gzyajs.comgzyancheng.com
+gzycdy.com
gzych.vipgzycsjgs.com
gzyct.comgzydong.com
gzyhg.vipgzylhyzx.comgzyouai.comgzyowin.comgzyqtlxs.com
+gzyqwl.netgzysbpay.comgzysykm.com
gzyuanlai.comgzyucai.com
+gzyxls.comgzyz699.comgzzarts.com
+gzzbgs.com
gzzhanmei.comgzzhitu.comgzzhrong.com
+gzziri.comgzzkzsw.com
+gzzldq.com
+gzzlfw.comgzzlgame.comgzzmedu.com
gzzoc.comgzzongsi.com
gzzoo.com
gzzqy.netgzzx.cc
h-college.comh-heguo.com
h-shgroup.comh-ui.neth-world.comh-zl.net
h0588.com
h0591.com
h0758.neth12.neth128.comh13.mobih1bz.comh20357d.xyzh231.comh26pr402d.shoph2ex.comh2gl.comh2ml2l.shop
h2o-china.comh2os.comh2vm.comh3c.comzzhuanruan.com
h3cfuwuqi.com
h3dns.net
+h3ue2s.com
h3wog.com
h3yun.com h4.cc
h4088.com
h4532.comh5-share.comh5-x.com
+h5-yes.com
+h5.neth51h.com
h5495.comh55u.com
h5abc.comh5aiwan.com
+h5anli.com
h5app.com
h5avu.comh5cn.com
+h5data.comh5ds.com
h5eco.comh5faner.comh5gamecdn.clubh5gd.comh5gdsvip.comh5gdvip.comh5in.net
h5jun.com
+h5king.com
+h5kuai.comh5ky.comh5le.comh5ma.comh5mc.com
h5mgd.com
+h5mota.comh5mugeda.com
h5no1.comh5po.com
+h5shuo.comh5taotao.com
h5tpl.comh5uc.com
+h5util.com
h5war.comh5youxi.comh5yunban.com
+h61889.com
h6688.com
h6969.com
h6app.com
+h6room.comh6ru.neth7ec.com
h803w.comha97.comhaawking.comhabadog.comhabbygames.com
+habwjc.comhac-ker.nethach-hanna.comhack-gov.comhack0nair.me
+hack50.comhack520.com
hack6.com
+hack99.com
+hackav.comhackerav.com
hackernews.cchackhome.com
+hackhp.com
+hackhw.comhacking-linux.comhackinn.comhackjie.comhackline.net
hacknical.com
hackp.comhackpascal.net
+hackrf.nethackroad.com
hackworry.com
+hackxz.com
+hackyh.com
+hacori.com
+hacpai.comhaczjob.comhadalfoundation.org
hadax.com
+hadewu.com
+hadobi.com
+hadsky.com
haers.com
+haguan.com
haguworld.comhaha168.com
+haha33.comhaha360.comhaha365.comhaha9911.com
+hahack.comhahaertong.com
hahaha.cc
hahaha365.com
+hahait.comhahasou.comhahaurl.comhahawen.com
hahayouxi.comhahazhao.com
hahon.com
+hahour.com
+hai360.com
haianbank.comhaianedu.net
+haianw.comhaianzhuangshi.com
+haibao.com
haibao123.xyzhaibaobaoxian.comhaibaoyl.comhaibaoyouxi.comhaibeinews.comhaibian.comhaiboinvest.comhaibowh.comhaiboyi.comhaica.cchaicent.comhaichangchina.comhaichangoceanpark.comhaichen-logistics.comhaichufang.com
haici.com
haicj.comhaicoder.net
haidaibao.comhaidaike.comhaidaoteam.comhaidaotrip.com
haidaozhu.com
+haidii.comhaidilao.comhaidilao.nethaidilao.ushaidimao.comhaidubooks.comhaidutouzi.net
haier-ioc.com
haier.comhaier.hk
haier.net
haiercash.comhaiershequ.comhaiersmarthomes.com
haierubic.comhaieruplus.comhaierzhixiang.comhaifangbao.comhaifangbest.comhaifanwu.com
haige.comhaigeek.com
haigehome.com
haigouyan.com
haigui001.comhaihaiyu.com
haihetour.comhaihuishou.com
+haijia.orghaijianchuxing.comhaijiangzx.comhaijiaonet.comhaijiaoshi.comhaijiasu.comhaijingfang.cchaijudoc.comhaijunda.comhaikeoutdoor.com
haiketrip.comhailiang.comhailiangedu.comhailiangip.comhailiangxinxi.comhaililiang.comhailongfoods.comhailouw.comhailuoai.comhailuowu.comhaima.mehaima001.comhaimacloud.com
haimaiyun.comhaimaoji.comhaimawan.comhaimeilight.com
haimi.comhaimian.com
+haimin.nethaimini.com
haina.comhainajc.com
+hainan.com
+hainan.nethainan0898.nethainanairlines.com
hainancom.comhainancp.comhainandc.comhainanfp.comhainanfz.comhainanjiuzi.comhainanwangdai.comhainanyouxi.comhainanyumu.comhainawater.com
hainiaowo.com
+hainic.com
+haining.tv
hainingit.comhainingnews.nethainiubl.comhainiuxy.comhainuotech.com
+haipal.comhaipengtoy.comhaipuzhiwu.comhaiqianghm.comhaiqingyanyu.com
haiqisoft.com
haiqq.com
haiqu.vip
+hair43.com
hair8.nethairbobo.com
hairenren.comhairuichem.comhairunce.comhairunmedia.comhairunpictures.comhairxmf.comhairycrabs.comhaisenyouxi8.comhaishengfrp.com
+haishui.cchaishun.com
haishuokj.comhaishuu.com
haisongta.comhaitaibrowser.comhaitaichina.comhaitakuajing.com
haitao.co
+haitao.com
haitao369.com
haitaohub.comhaitaoj.com
haitaolab.comhaitaoqq.comhaitaotong.comhaitaozu.orghaitianhome.com
haitl.comhaitong.comhaitongjiaoyu.com
haitou.cc
haitou360.com
haitoujia.comhaituie.com
haituncun.comhaitunshenghuo.com
haituntui.comhaitunvoice.comhaitunwallet.comhaitunzhibo.comhaitunzixi.comhaituoqi.com
haitutech.com
haiwaicat.comhaiwaihuafei.comhaiwaimoney.comhaiwaioo.com
haiwaiyou.comhaiwaiyoujia.comhaiwangbuyu.comhaiwanxinxi.comhaiweili.comhaiwell.comhaiwen-law.comhaiwenky.comhaixiahuagong.comhaixianlai.nethaixin5.comhaixindichan.com
haixinews.comhaixingbangfu.comhaixingcloud.com
haixinhui.comhaixinpatent.comhaixiulive.comhaixiumv.comhaixiutv.comhaixiuvv.comhaixuan.com
+haixue.comhaixuemeili.comhaixunw.comhaixuyun.comhaiyang.nethaiyi701.com
haiyingmt.comhaiyingshuju.comhaiymobi.comhaiyuangabion.comhaiyuangabiou.comhaiyue.info
haiyun.mehaizhanweb.comhaizhenzhu.comhaizhikj.com
haizhlink.com
haizhoumo.comhaizhuyx.com
haizitong.com
+haizol.comhajt-cn.comhajw.comhakaimg.comhakchina.comhakonespring.com
+halade.comhalcyonz.com
+halead.comhalfrost.comhalfsug.comhalixun.com
+haliyy.comhalloar.comhallofix.comhalobear.comhalomobi.comhaluan2u.comhaluoha.comhaluolinks.comhamedal.com
hamir.net
hamu.site
han-ju.cchanamichi.wikihanbaodawang.comhanboshi.com
hanbridge.orghanchao9999.comhancibao.comhancloud.com
hanclouds.comhand-china.com
handanjob.comhandanw.comhandanyz.comhandday.comhandelic.com
handelsen.com
handfunds.comhandian027.com
handisele.com
+handme.nethandone.com
handongkj.com
+handpk.comhandsfree.work
handu.comhanduyishe.comhandyfriendship.comhanergy.comhanergymobileenergy.comhanfang8.com
+hanfei.nethanfeiyl.comhanfengcars.com
hanfugong.comhanganxian.comhangbohaorun.comhangchow.orghangdaowangluo.comhangdaxinli.comhangduhc.comhangfkj.com
hangfushi.com
+hangge.comhanghaimeng.comhanghang.comhanghang666.comhanghangcha.comhanghangohye.comhangjiayun.comhangjizulin.comhangkong.comhangmaquan.comhangpai.orghangpu-topsys.comhangqing.orghanguangbaihuo.com
+hanguu.com
hangw.comhangxinyiqi.xinhangxun100.com
+hangyan.co
hangye365.comhangzhiqiao.comhangzhoufcw.comhangzhouluohu.comhangzhoumengfa.comhangzhouqisheng.comhangzhoutianqi114.comhangzhouyiyao.comhangzhouyq.comhangzhouzhiqi.comhangzyuyuan.com
+hanhai.nethanhaiqikan.comhanhanfx.com
+hanhua.com
hanhuatin.comhanhwlab.com
+hanjea.comhanjianbing.orghanjiaying.com
+hanjie.bizhanjimeixue.com
+hanjjl.comhanju-tv.orghanjutv.com
+hankai.renhankaikeji.comhankeer.orghankemaoyi.comhanking.com
hankunlaw.comhanlangjituan.com
hanlefang.net
+hanlei.org
+hanlin.comhanlin.presshanlindong.com
+hanlka.comhanlunjx.com
+hanmaa.comhanmads.comhanmaidj.comhanmaker.com
hanmeilin.com
+hanming.cc
hannahlay.com
+hannor.com
+hannto.com
+hanpian.tv
hanqinghb.com
hanquansu.com
hanschen.sitehanshengjian.comhanshow.comhansight.comhansiji.com
hanslaser.net
+hansme.comhansondecor.comhanspub.org
hansrobot.comhansuku.comhansunic.comhanswine.net
hantang59.comhantangxintong.comhanterry.comhantian.xyzhantinghotels.com
hantongrc.comhantongsteel.comhanvitools.com
+hanvon.comhanvonmfrs.comhanvontouch.com
+hanweb.comhanweimetal.comhanwenzhongyi.comhanwujinian.comhanwujinian.net
hanximeng.comhanxinsheng.comhanyanseed.com
hanyi.comhanyi.studio
+hanyou.comhanyougame.comhanyouwang.comhanyu.mehanyuguoxue.comhanyulaoshi.comhanyuwatch.com
+hanyya.comhanzhesh.comhanzhong123.comhanzify.org
hanziguan.comhao-shangliang.comhao-sheng-yi.com
+hao.ac
+hao.gghao.inkhao0770.com
hao120.cchao123-hao123.com
+hao123.com
+zzhaoz.com
+hao123.net
hao123.sh
hao123img.comhao123n.comhao1258.com
+hao163.com
+hao181.com
+hao184.comhao1996.com
+hao1cm.com
hao22.com
+hao222.net
+hao224.com
hao24.com
+hao245.com
+hao251.com
+hao268.com
hao315.cc
+hao315.com
hao315.tv
+hao352.com
+hao353.com
+hao360.com
+hao394.comhao5.net
+hao528.com
+hao568.comhao6.com
+hao695.comhao7188.com
+hao753.com
hao76.com
+hao774.com
hao86.comhao8dai.comhao9669.com
haoad.org
+haoamc.com
+haoayi.xyz
haoban123.comhaobangscm.comhaobanyi.com
haobiaoke.com
+haobtc.com
+haocaa.com
+haocai.comhaochang.tvhaochangyou.comhaoche1.comhaocheedai.com
haochehui.comhaochengda.nethaochi6.comhaochijixie.com
+haochu.comhaodanku.com
haodaquan.com
haodekuai.comhaodevps.comhaodewap.com
haodf.com
haodf.orghaodiany.com
haodiaoyu.comhaodingdan.com
+haodiy.nethaodns123.cchaodns999.cchaodongdong.com
+haodou.com
+haodro.comhaoduhe.com
+haoduo.viphaoduobao6.comhaoduofangs.comhaoduojiaju.com
haoduorou.net
haoerdeng.comhaoeyou.com
haofabiao.com
haofakeji.comhaofang.nethaofang007.comhaofang5.comhaofangkankan.comhaofangyu999.com
haofenshu.comhaofenxiao.net
+haofly.net
haofz.comhaoge500.comhaogongzhang.comhaohaizi.comhaohan-data.comhaohanfw.com
haohanguo.comhaohanjx.comhaohanpower.techhaohaomy.comhaohaotuan.com
haohaowan.com
haohaoxiu.comhaohaoxiuche.comhaohaoyx.com
haohaozhu.comhaohaozhu.mehaohead.comhaohiyou.comhaohongfan.comhaoht123.comhaohuan.com
+haohuo.xinhaohuoa.com
+haohxs.com
haoib.comhaointl.com
haoinvest.comhaoji.mehaojiameng.net
+haojiao.cchaojiaolian.comhaojing.org
+haojit.comhaojixie.cchaojixiong.comhaojiyiruye.com
+haojue.com
haojue163.comhaojunbest.comhaoka88.comhaokale.com
+haokan.com
haokan123.comhaokan5.comhaokanzhan.com
haokebang.nethaokecheng.comhaokejie.comhaokeyun.vip
+haokoo.com
haoku.net
haokuaiya.comhaolangtech.com
haolawyer.com
haole.comhaoled9999.comhaolexiang.comhaolidayiliao.com
haolietou.com
haoliners.nethaolints.com
+haoliv.comhaolizi.nethaolongsci.comhaolvlv.com
+haolyy.com
haoma.comhaoma123.comhaomagujia.com
+haomai.net
haomaishe.comhaomaishou.comhaomaiyi.comhaomaku.comhaomaohaogou.com
+haomee.nethaomeili.nethaomenke.comhaomifi.comhaomijie.comhaomingguan.com
+haommn.comhaomo-tech.comhaomove.com
+haomzl.comhaonames.com
+haonic.com
haonongzi.com
haopeixun.com
haopianyi.com
+haoqdl.comhaoqiao.comhaoqikan.comhaoqixingstem.com
haoqq.comhaoqu99.comhaor233.com
haoranbio.com
haorc.comhaoread.comhaoreagent.com
haorencai.nethaorooms.comhaoruanmao.comhaoruiyx.com
haosd.comhaoseals.comhaosenchina.comhaosenglobal.comhaoservice.com
haosf.com
+haosf5.comhaoshangqi.com
haoshanxi.comhaosheng168.comhaoshengboli.comhaoshengmall.com
haoshenqi.comhaoshici.comhaoshipin123.comhaoshiqi.nethaoshsh.comhaoshudi.comhaoshunjia.com
haoshunjx.comhaoshuo.com
haositone.com
+haosix.com
haoso.com
+haosou.com
+haosou.net
haosou360.com
haoss.viphaostay.comhaosulu.com
haote.comhaotgame.comhaotianhuyu.comhaotihui.comhaotijin.comhaotongjixie.comhaotoufa.com
haotougao.comhaotougu.comhaotoys.com
+haotui.comhaotukankan.com
haouc.com
haowa.comhaowaicaijing.comhaowandeni.comhaowang.shophaowanok.comhaowanxi.com
haowanyou.com
haowen100.comhaowenbo.com
haowenshi.com
haowu.com
+haowu.link
haowusong.comhaowutuijian.comhaowuyunji.comhaowuyx.com
haoxg.nethaoxiake.comhaoxiaoguo.net
haoxingcn.comhaoxinpinggu.comhaoxintaikj.com
haoxinwei.comhaoxipu.com
haoxitong.com
+haoxiu.nethaoxiyou.com
+haoxue.com
+haoy99.com
+haoyao.com
haoyao163.comhaoyaofs.comhaoyaogo.comhaoychuang.comhaoyingjixie.comhaoyintong123.comhaoyisheng.comhaoyishu.com
haoyishui.com
+haoyong.cc
haoyou666.comhaoyoufa.com
haoyouidc.comhaoyouqian.comhaoyouyinxiang.comhaoyouyuan520.comhaoyuanfurniture.comhaoyuanxiao.comhaoyue28.comhaoyuepu.comhaoyun13.comhaoyun56.comhaoyunbb.comhaoyunlaisz.comhaoyunma.comhaoyuntech.comhaoyunwuyou.com
haozai120.comhaozaishop.comhaozhai.comhaozhanhui.com
haozhebao.com
haozhexie.comhaozhuan.viphaozhuji.net
haozi.net
haozi.org
haozi.xyz
+haozip.com
+haozjj.com
+haozke.com
haozu.com
haozuojia.comhapi123.net
+hapids.com
hapingapp.com
hapjs.org
+haplat.nethappi123.comhappigo.comhappy-ti.comhappychang.nethappycodeboy.comhappyelements.comhappyeo.comhappyev.comhappyhlddz.com
happyjuzi.com
happykey6.comhappylivelife.comhappymmall.comhappynic.comhappypingpang.comhappyplaygame.nethappysky.org
happystudy.cchappytimenet.comhappyux.com
happywalk.nethappyya.comhaqu.com
haquan.ccharbin-electric.comharborhousehome.com
+hardcc.comhardcoresir.net
+hardkr.com
hardspell.com
hariogame.com
+harmay.comharmight.comharmony3.com
harmony4s.com
harmonyos.comharmonywatch.comharpost.comharpping.comharryhorsemedia.comharrynull.tech harrypottermagicawakened.com
harvestcm.comharvesthanger.comharvestpawn.comharworld.com
hasaf.com
hasea.com
hasee.com
hasee.net
+hasivo.com
+haslab.orghasoltd.com
+haspig.comhassbian.comhassfull.com
hasstatic.comhatanggame.comhatangqp.comhatangyx.com
hatcabana.net
+hatfav.comhatjedu.com
hatlonely.com
+hatoem.comhaval-global.comhave.ink
+havefun.imhavevisa.com
+havewo.comhawaiiantreeplantation.comhawanyx.com
+hawbel.comhawkeye.funhawkhai.com
+haxdjx.com
haxiu.com
+hayeen.comhayseen.comhazq.com
+hb-163.com
hb-ecloud.comhb-green.com
hb-hengda.com
hb-ly.com
hb-ws.com
+hb0561.com
+hb0771.comhb10000.comhb10000sale.comhb1000kv.comhb110.cchb114.cchb12333.com
hb191.comhb2h.comhb30.com
hb3rm.com
+hb3z1s.com
hb500.comhb6.orghb96369.comhb96568.com
hbaas.com
+hbadei.com
hbagd.com
+hbahyy.comhbanbao.comhbbaidu.comhbbidcloud.com
hbbidding.com
+hbbnqy.comhbbst99.com
hbbsw.viphbbutler.com
+hbbxpx.comhbbzyys.orghbca110.comhbcclaw.com
hbccp.orghbccpit.org
+hbccza.com
hbcdc.comhbcg.cc
+hbcggj.com
+hbchen.com
hbchy.net
hbcjh.net
+hbcjlq.com
hbcjw.com
+hbcjxx.comhbclqcw.com
hbcms.comhbcofco.comhbcourt.org
+hbcszb.comhbct-wiremesh.com
+hbctjk.com
hbcwt.com
+hbcxpm.comhbcyclub.comhbcydlqc.comhbdangyang.com
+hbddrn.com
hbdhy.com
hbdjk.com
+hbdmia.com
+hbdssb.comhbdtjqj.com
hbdx-kdyy.com
+hbdzcg.comhbeducloud.com
hbekt.com
+hbepec.com
hbewq.comhbfesco.com
hbfie.org
+hbfire.comhbfootball.com
+hbfuya.comhbfy.com
+hbfybj.com
+hbfyhb.com
hbfzb.com
+hbgajg.comhbgbdst.com
+hbgcxj.comhbgdsfy.com
+hbgdwl.com
+hbgktl.com
+hbglky.comhbglobal.comhbgr.net
hbgrb.nethbgsetc.com
hbgwy.orghbgydxw.com
hbgzh.comhbha027.comhbhande.comhbhaolinju.com
+hbhcdn.com
+hbhdhd.comhbhm.net
+hbhmxx.comhbhongrunxwy.comhbhqzyc.com
+hbhtcm.com
+hbhtxx.comhbhuipu.com
+hbhxbb.com
hbhyychem.comhbhz.net
+hbicpa.org
hbidc.nethbifeng.comhbinitiate.com
hbisv.comhbjcgjg.com
+hbjcgy.com
+hbjdxt.com
hbjhc.com
+hbjhpx.com
hbjia.net
hbjinnong.comhbjinshenglan.com
+hbjjrb.comhbjk114.com
+hbjkjt.com
+hbjlhw.comhbjomay.comhbjsinfo.comhbjtfwxh.comhbjubao.com
+hbjxjy.orghbjxjyw.com
+hbjxym.comhbjyjmzg.com
+hbjzgw.com
hbjzx.com
+hbjzzx.com
hbkqw.com
hbksw.comhbky.com
+hbkyby.com
hbkzw.com
+hblccy.com
+hbldwx.comhblhfrp.com
+hbliti.com
+hblryz.com
+hblszq.comhblszzs.com
+hbltzb.com
+hblykj.com
+hbm360.com
hbmajiang.comhbmchina.com
hbmes.com
hbmingjie.com
+hbmmtt.com
hbn68.com
+hbnews.net
hbnewsoft.com
+hbneww.comhbnholdings.com
hbnxb.nethbooker.comhbpangu.nethbpengxi.com
+hbpic5.comhbpictures.comhbptzsbw.comhbpukang.comhbpx.net
hbqhy.com
hbqnb.com
+hbqtgg.com
+hbqydz.com
hbqyj.org
+hbqyxy.com
hbrbmedia.comhbrc.comhbrchina.orghbrchinese.orghbrcxcl.comhbrd.nethbrebond.com
+hbrfxh.com
+hbriso.com
hbrsks.cohbruiao.comhbruicai.comhbrunlin.com
+hbryzx.net
+hbrzkj.com
+hbs-nd.com
hbscd.com
+hbscsb.comhbsdenterprise.com
+hbsdjl.comhbsfedu.comhbshengbangwl.comhbshgzx.comhbshichang.com
+hbshls.comhbshunyougd.com
hbsia.org
hbskw.comhbslndx.comhbsmservice.comhbsocar.com
+hbsoft.nethbsogdjt.com
hbsql.comhbsrjyy.com
+hbssfw.com
+hbsszx.comhbstars.com
hbsti.com
+hbstoo.com
hbsunlink.com
+hbswkj.comhbswmyyxgs.com
+hbsxls.com
+hbsygw.comhbsz120.comhbszbykj.com
+hbszfw.comhbszlcc.com
+hbszsv.com
+hbsztv.com
hbszzd158.com
+hbszzk.com
+hbszzx.com
+hbtcmu.com
hbtcw.com
hbtengniu.com
+hbtljg.com
hbtobacco.com
+hbtqzx.com
hbtxbaidu.com
+hbtycp.com
+hbweid.comhbwh.nethbwhcyw.com
+hbwhjj.com
hbwjs.comhbwlykt.comhbww.org
hbxdf.comhbxhxkj.com
hbxingchi.comhbxiyuan.com
+hbxmcy.com
hbxot.com
+hbxtzy.com
hbxxy.comhbxyjob.com
+hbxytc.com
+hbyczk.com
+hbydsg.comhbyeson.com
+hbyidu.com
+hbyjfs.com
+hbynet.nethbyouyunyouke.com
+hbyoyo.com
+hbyscn.comhbysfhm.com
hbyuanhao.comhbyunxi.net
hbyunyang.nethbyybwff.com
+hbzaxh.comhbzbjxzz.com
hbzbw.com
+hbzgjx.comhbzh.net
+hbzhan.comhbzhhbsb.comhbzhjxzz.comhbzhonghai.comhbziwei.com
+hbzjjk.com
+hbzjrx.com
+hbzjzb.com
hbzkj.comhbzknet.comhbzkzxw.com
+hbzncz.com
+hbzqzx.com
hbzsb.com
hbzst.com
hbztn.comhbzuojia.com
+hbzw56.com
+hbzywh.com
+hc-byq.com
+hc-cdn.com
hc-ph.comhc-software.com
+hc-sre.comhc-testing.comhc01.com
hc121.comhc23.com
hc360.comhc39.com
hc3yy.com
+hc6756.comhc79.comhc9.com
hc943.comhcaj.com
hcbbs.com
hcbuy.com
hcc11.com
+hcciot.comhccpcba.com
hcctm.comhcdamai.com
+hcdblg.com
hcdiy.comhcdsctq.com
+hcdyhr.com
+hcepay.com
+hcesal.com
+hcfang.nethcfc168.com
hcfcc.com
+hcftyy.comhcgdctq.comhcgroup.comhcgtcxj.com
+hch518.comhchbblg.com
+hchbsb.comhchezhu.comhchlidc.comhchliot.comhcicloud.comhcinfo.techhclonely.comhclouder.comhcmiraefund.comhcmofen.comhcnaimo.com
hcnamecdn.comhcnamecdns.com
hcnamedns.com
+hcqcxj.com
hcqfw.org
hcqixinhb.com
+hcqxbj.com
hcrlm.comhcschengtou.com
hcsdhgjzx.comhcshebao.com
+hcsilk.comhcsjddc.comhcsound.comhcsvipc.com
+hcswgx.com
hctxf.orghcty.com
hcwebsite.comhcwh.ltd
+hcwiki.comhcwkcxj.com
+hcx123.com
hcx99.com
hcxcw.com
+hcxwdb.com
hcxxy.com
hcxy6.com
hcxym.com
+hcyacg.comhcycctq.com
+hcydit.com
hcyea.com
hcykt.com
+hcypzy.com
+hcyxxx.com
+hcyzdc.comhczc.comhczfgjj.com
hczm1.com
hczm2.comhczq.com
+hczshb.com
+hczxmr.comhczypay.com
hczyw.comhd-english.comhd-english.net
+hd-tvb.com hd.gg
hd027.com
hd123.com
hd123.nethd12333.com
hd199.com
hd199.nethd3p.comhd8y.comhdanheng.com
hdavchina.comhdb.comhdbaichuan.com
+hdbgjt.com
+hdbits.orghdbizhi.comhdchina.org
+hdcmct.org
hdcms.nethdcolorant.comhdcy123.com
hdd-group.com
+hddata.nethddgood.com
hddid.comhddlion.comhddolby.comhddznet.comhdeexpo.com
+hdem12.com
hdeso.com
+hdfimg.comhdgogogo.com
+hdh.im
+hdhgzx.com
+hdhjtz.com
+hdhome.orghdhospital.com
hdhui.com
+hdj.me
hdjingwei.com
+hdjxpx.comhdjy678.com
+hdk527.comhdkcsjxh.com
+hdksjp.com
hdl-watch.comhdlcdns.comhdlchina.com
+hdletv.com
+hdlogo.comhdlstage.comhdltest.com
hdmnw.comhdmooncake.comhdmtv168.comhdmv.org
+hdnd01.com
hdp88.com
+hdpyqa.com
+hdpyqc.com
+hdpyqd.com
hdrcw.com
hdsay.nethdsdyyy.comhdsky.me
hdslb.com
hdslb.net
hdslb.org
+hdsmgw.comhdsq.cchdsx36hb.comhdsx39hb.comhdsx83hb.com
+hdtgtm.comhdtmedia.comhdtonghe.com
+hdtyre.comhduofen.comhdurl.mehduzplus.xyz
hdvbg.com
hdwbcloud.comhdwbsaas.com
hdwebpyqa.com
hdwebpyqe.com
hdwjc.comhdwtpay.com
+hdwyxx.com
hdwzz.com
+hdxdbj.com
+hdxing.net
+hdxweb.com
+hdxxnl.comhdxynet.comhdyouxi.com
+hdytjt.comhdyujiu.comhdyunxin.comhdyxgame.com
hdyxi.com
+hdzbgs.comhdzc.net
hdzcwlian.com
+hdzmls.comhdzp.com
+hdzxyy.com
he-ku.com
+he-nan.com
+he-one.comhe1j.comhe29.com
heacn.nethead-way.comheadconsultant.com
header.ccheading123.comheadphoneclub.comhealthan.nethealthcareol.nethealthcareyun.comhealthgv.comhealthjd.comhealthr.comhealthybaike.com
healthych.com
+heanyo.comhearstchina.comheart-game.comheartide.comheartinsti.comheating-sh.comheatingtrace.comheavenlywind.cchebangdianzi.comhebaodai.comhebbank.com
hebbc.org
hebbr.comhebbrain.com
hebca.com
+hebcar.comhebei.cmhebeibiaoqing.comhebeieb.comhebeifanlin.comhebeifeimeng.comhebeigwy.orghebeihazhi.comhebeihualang.comhebeijd.comhebeiminglan.comhebeinongzi.comhebeisaixin.comhebeishuangning.comhebeiyouxi.comhebeizhouji.comhebeizuqiu.nethebgtjt.com
+hebi99.com
+hebisf.com
hebiw.com
+hebjxw.com
hebl.namehebmusic.com
hebnx.comhebolaw.com
hebooming.com
+hebotc.comhebradio.com
hebsg.nethebshanggu.com
+hebtig.com
hebtv.comhebxyjt.comhebzljx.com
+hec-al.comhec-changjiang.comhecai360.com
hecaijing.com
hecdn.com
hecdn.nethechangquan.comhechangshipin.com
hechengbb.comhechiguotou.comhechijinxin.com
hechuang.infohechuangxinxi.xyzhechuann.comheclife.comheclouds.com
hecoe.comhecpharm.comhedalao.comhedaoapp.comhedaweb.comhedejituan.comhedesoft.comhedgehogbio.comhedgehogrock.comhedongli.comhedpump.comhedu.netheduibu.com
+hedysx.comheeeeeh.comheeeepin.comheehee.club
+heenee.com
+heerit.comhefagear.comhefei.cchefeifc.com
hegii.comhegouvip.comhegsryjq.comhehagame.comhehejin.com
hehesheng.comheheshouyou.com
+hehesy.comhehewan.com
+hehooo.comhehouse.comhehu.comhehuapei.comhei.red
+heibai.orgheibaige.comheibailianmeng.comheibandongcha.comheibantiku.comheibaow.com
+heicha.comheicheng51.comheidaren.comheidiankeji.comheigaga.comheiguang.comheiguang.net
+heihei.comheiheiyuyin.comheijiao.netheijiaovip.com
+heijin.orgheilanhome.com
+heilei.comheilongjianggames.com
+heiluo.com
heima.comheimabao.com
+heimac.netheimadao.com
heimadata.com
heimai666.comheimajijin.comheimalanshi.com
heimaohui.com
heimaoseo.orgheimaoseojishu.com
heimaoshe.comheimayijiancai.com
heimaying.comheimeiai.comheimeng.net
heimizhou.com
heiniubao.comheiniufeiye.comheinote.com
heinw.com
heirenlei.comheisener.comheisezhizhao.com
+heisha.netheishao.netheishenhua.comheishou.org
+heitao.comheitao2014.com
heitaosan.comheitiane123.com
heitu.com
heitukeji.com
heiwangke.net
heixi.com
+heiyan.com
heiyan.la
+heiyan.orgheiyan8.comheiyange.com
heiyanimg.com
+heiying.ccheiyu.space
heiyuewan.comheiyunxitong.comheizhushoes.com
hejiu2016.comhejizhan.com
hejugroup.com
+hejujk.com
hejun.comheketai.comhekewang.comhekouxin.comheku.org
+hel168.com
helensbar.com
+heliang.cchelianhealth.com
helianwap.comhelight.infohelijia.comhelingqi.comhelipay.comhelishun.comhelitzc.comheliuhao.comheliuyan.comhelixph.comhello-fpga.com
hello-inc.com
hello1010.comhellobanma.comhellobi.com
hellobike.com
hellobiye.comhellobtc.comhellocq.net
hellodive.comhellof1.comhelloflask.com
hellogame.nethellogithub.comhellogitlab.comhelloglobal.com
hellogslb.comhellohnb.comhellohuohu.comhelloimg.comhelloinstruments.com
hellojava.com
hellokang.nethellokid.comhellokidvip.com
hellololi.comhellomeowlab.com
hellomida.comhellonitrack.comhellopcb.comhellorf.comhellostreetcat.comhellotalk8.comhellotw.com
helloweba.com
helloweba.nethellowebfont.comhellowgame.comhelloworld.nethelloxjn.comhelloxkb.comhelloyao.com
+helo11.comhelperaddress.comhelpmeng.comhelpmepick.nethelpson.comhelpton.com
helptousa.comhelpweixin.com
helqc.comhelunyun.comheluowenhua.nethelywin.comhemahuashi.comhemaish.com
+hemajs.comhemamax.com
+hemanc.comhemanzi.com
+hemaos.comhemaread.comhemaxiaofen.com
hemayouxi.com
hemayouxi.nethemayun.com
+hemayx.comhempelgroup.com
+hen360.comhenan100.comhenanart.comhenanbojin.comhenance.comhenancme.nethenanfucai.comhenangames.com
henangeli.comhenanjianling.comhenanjubao.comhenanmijigui.comhenansha.comhenansyj.comhenanyikayi.com
henbt.com
+hencin.comhencoder.comhenduofang.com
+heng98.comhengan-instruments.comhengancaifu.comhengaodebj.comhengbogroup.comhengchang6.comhengchangda.comhengdafuji.comhengdawatch.comhengdawenbo.com
hengdayun.comhengdianfilm.comhengdianworld.com
hengdulaw.comhengfujz.comhenggufood.com
henghe666.comhenghongjixie.comhengjiafish.nethengjiecdn.comhengjiu-pt.com
henglilai.viphenglong888.comhengqian.comhengqifeng.comhengqijy.comhengqikuaiji.comhengruisensor.comhengshan01.comhengshengpark.comhengshuilaobaigan.nethengshuiyake.comhengtai-law.comhengtaiboyuan.comhengtiansoft.comhengtianyun.comhengtongjuice-usa.comhengxiangtaji.comhengxinjinshu.comhengxinyongli.comhengxueedu.comhengyan.comhengyemould.comhengyimining.comhengyishihua.comhengyoux.comhengyudata.comhengyuefund.com
henha.comhenhaoji.com
henku.comhenkuai.comhenkung.comhenluoli.com
henmimang.com
henri.renhensctai.com
+henzan.com
henzanapp.comhepalink.com
hepan.com
hepan.orghepartshome.comhepatox.orghepingtieli.comhepmall.com
+hepost.comhepu123.com
+hepurc.comhepuwang.comhepuweilai.com
+hepuxw.comheqingloong.comhercity.comhercules-logistics.comhercules-micro.comherdacdn.com
herdcloud.comherdsric.comhere120.comhere325.comherllamo-med.comherllamo.comherocoming.com
+herohr.netheroicyang.comherosanctuary.com
heroskate.com
herostart.com
heroworld.netherrywatch.comherstime.comherta.space
+herton.nethertzhu.comheshanghuitong.com
heshecasa.com
+heshui.comheshuyun.comhesiyivr.comheson10.comhesongwang.com
+hesppe.comhessianhealth.com
heta.tech
hetang365.comhetao101.com
+hetaoa.com
hetaoapis.comhetaobiancheng.comhetaocdn.comhetaointernal.comhetaolin.comhetaousercontent.comhetaoxingqiu.com
hetianlab.comhetianyu.cc
hetongamp.comhetunzu.comhetusoft.comheu8.comhewaner.comhewascreen.com
heweather.com
heweather.nethewebgl.comheweifurniture.comhexaamc.comhexagonsemi.comhexchip.com
hexdo.com
+hexian.ltdhexianrc.comhexiaoxiang.comhexicomtech.comhexilai.comhexindai.comhexinli.orghexinyu.comhexmeet.com
hexun.com
zzhaofang.comhexuncaizhi.com
hexuu.com
heyang.cc
heyang365.com
+heycan.comheycode.comheydayinfo.comheyi.comheyiguoyuan.comheyingcn.comheyinguanli.comheyinshiliu.com
+heymeo.net
heymeowfm.comheymore.comheyou51.comheyplus.com
+heyria.com
+heytap.comheytapcloud.comheytapcs.comheytapdownload.comheytapimage.comheytapmobi.com
heytapugc.com
+heytea.comheythings-iot.comheyuan5.comheyuanstone.comheyun100.comheyunnet.comheyuyhw.comheywhale.comheywoodsminiprogram.comheyyouyu.com
hez70.comheze.cchezebus.com
+hezegd.comhezelawyers.org
hezeribao.comhezhidongli.comhezhouhuatong.com
hezhoujcy.comhezi.com
hezi.sitehezibook.com
hezibuluo.comhezijia.com
hezxs.com
hf-aw.comhf-cups.comhf-iflysse.com
+hf0779.comhf10000.comhf12345.vip
hf365.com
hf777.comhfabiao.com
+hfanss.comhfbaogao.comhfbaozi.com
+hfbeta.com
hfbtv.comhfbz.comhfchunyu.comhfchzyy120.comhfcxyly.com
hfdaoyuan.com
+hfdedu.com
+hfdsgs.com
+hffhgc.com
+hffund.com
hfgip.com
hfgjj.comhfhaopu.com
hfhmw.nethfhouse.com
hfhyw.comhfi-health.com
hfish.net
hfjnz.com
hfjsj.comhfkeheng.comhfkenfan.com
+hfkjsd.com
+hfkktt.comhfksmdl.comhflbysm.com
+hfleda.net
+hflp88.comhflwpq.sitehflz.com
+hfmama.comhfmoney.comhfnuola.comhfoj.net
hfplg.comhfqgmagnet.com
hfqinhang.com
hfray.comhfrc.net
+hfrcbc.com
hfrqh.comhfrsggff.com
+hfsava.com
hfsid.com
hfssw.comhfsunway.com
+hfswcz.com
+hft-sz.comhftfund.comhfthink.com
+hftogo.comhfx.nethfxcfiberoptic.com
hfxst.comhfyestar.com
hfykd.comhfyouqi.comhfyt365.comhfyuqin.comhfyylcy.com
hfzhengxu.com
hg-daigou.comhg12333.com
+hg2693.com
+hg5177.comhg56999.com
hg707.comhg87.com
+hg8880.org
+hga994.com
hgaas.com
hgcha.comhgcitech.com
hgepc.com
+hgfdrf.com
hghsd.comhgimage.com
hgitv.com
+hgj668.com
+hgjart.comhgjl.nethgjx.comhglaser.com
hgmai.comhgnc.net
+hgobox.comhgptech.com
hgqrx.comhgskyray.comhgszyyy.com
+hguduo.com
hgyjs.comhgyx.cc
+hgzcjt.comhgzk.com
hgzkb.com
hgzrt.com
+hgzyxy.comhh-gltd.comhh-medic.comhh-pcbs.com
+hh-pmp.comhh-post.com
hh010.comhh112233hh.comhhailuo.com
+hhbnnk.com
hhbraider.com
+hhbwff.com
+hhcjjy.comhhcn.comhhcx-led.com
hhczy.com
+hhdglm.comhhdx120.comhhf2008.comhhfbqzgs.com
+hhfdjz.com
hhfxw.com
+hhh233.net
+hhh800.com
+hhh885.com
+hhh888.comhhhg258.com
hhhoo.com
+hhhstz.comhhhtfdj.comhhhtfin.comhhhtnews.comhhhtscf.com
+hhhtyg.comhhjctest.com
+hhjgqh.comhhjsyxh.comhhju.comhhkaobo.com
hhkin.com
+hhking.comhhl1916.comhhlz108.com
+hhmage.com
hhmajiang.com
+hhpcbs.comhhpj.net
+hhpmzp.com
+hhqhhh.comhhrcard.com
hhrdc.com
+hhsilk.comhhtravel.com
+zzh789.comhhup.com
+hhuubb.com
+hhuubb.net
hhuus.comhhvv.com
hhwenjian.com
+hhwl88.com
+hhxdkj.com
+hhxhhh.comhhxnyqc.com
+hhycdk.comhhygame.comhhygames.com
hhytm.comhhyungu.comhhyy.comhhyy100.com
+hhzm88.com
hi-54.comhi-books.comhi-cloud.net
hi-davids.com
+hi-gtd.comhi-lead.comhi-linux.comhi-mantech.com
+hi-roy.com
hi-sm.com
hi-spider.comhi-trend.com
+hi0755.net
hi138.com
+hi1718.com
+hi2000.com
+hi2000.net
hiaal.com
hiagr.comhiaiabc.comhiao.com
hiapk.comhiascend.comhiascend.net
hiavr.com
+hibace.com
+hibace.net
hibbw.net
hibea.com
hibelarus.comhibixin.com
hibogroup.com
hibor.net
hibor.org
+hibose.nethibt.net
hibtc.orghibusiness.com
+hibuzz.nethiby.cdhiby.com
hibymusic.com
hic.cloud
hicamelia.com
hicat.nethiccupx.xyz
+hiceon.com
+hichao.comhicheng.nethichina.comhichina.nethicitech.com
hiclc.comhicling.comhicloud.com
+hicnhm.comhiconey.comhiconics-zn.com
hicoo.nethicosmo.comhicp.net
hicss.net
hiczp.comhid98ys.com
+hidery.comhidesigncloud.comhiditie.com
hidna.net
hidva.comhiecheimaetu.comhiencode.comhienshi.comhiersun-hdp.comhiersun-ido.com
hiesquire.com
hifangjia.comhifengli.comhifi168.comhificat.comhifidig.comhifidiy.net
+hifime.net
+hifiok.comhifishuo.comhifiveai.com
hifkw.com
hifkw.xin
+hifly.mobihifly.tv
hifortune.net
+hifpga.comhifreud.comhifuntv.comhigeshi.com
+higgmm.nethigh-defense-163.comhighdigitizing.comhighenergyaerospace.comhighfel.com
+highgo.comhighlightoptics.comhighlionceramic.com
+highlm.com
highsharp.comhightopo.comhighwayguitar.comhigoldgroup.net
higon.comhiguchi.xyz
hiheartgo.com
+hihell.com
hihocoder.comhihonor.comhihonorcdn.comhihonorcloud.com
+hihope.org
+hii-go.com
hiido.net
+hiifong.cchiigame.net
hiiibrand.com
+hiiyun.com
hijiaoshi.com
+hijoys.com
hik-cloud.comhik-park.com
hikailink.com
hikcreate.com
hikerfans.com
+hikihj.comhiklife.comhikmall.com
+hikoon.com
+hikops.comhikparking.comhikrobotics.comhikstor.comhikstorage.com
hikunpeng.com
hikunpeng.nethikvision-jl.com
hikvision.com
+hikyun.comhilantu.com
+hilbcd.comhilemic.com
hilfv.com
+hiliad.comhilllei.comhillstonenet.comhillyton.com
hilo8.comhiloletswin.comhiloong.comhilunwen.com
hima.auto
+himado.comhimadotest.comhimaker.comhimalaya.com
himalaya.coolhimanufacture.com
himarking.comhimawari-japan.comhimehear.com
himeidian.com
himengyou.comhimetoo.com
+himisw.comhimmpat.com
+himofi.comhimorfei.comhin.coolhinabian.com
+hinavi.nethindlish.comhingecloud.com
hinpy.comhintsnet.com
hiofd.comhiopensource.com
hiosu.com
hioug.com
hiowl.xyz
hiparking.com
+hipcam.nethipcapi.com
hiphi.comhiphop8.comhiphotonics.com
+hipiao.comhippoanimation.comhippter.comhipring.nethipu.com
+hirede.comhiregex.comhiregistry.com
+hireye.com
+hiroop.com
hirosspac.comhirossz.com
hirtk.com
+his.shhis2nd.lifehisavana.comhiscene.comhisdnoc.comhisense-home.comhisense-plaza.comhisense-syxs.comhisense.comhisensehitachi.com
hisensekf.com
hishouhui.com
hisilicon.comhisiphp.comhislota.com
hismarttv.com
+hisoft.comhisofts.comhisonracking.comhistorychina.nethisugar.comhisupplier.comhit-shop.hk
+hit180.comhitachi-helc.com
+hitalk.com
hitalkers.com
hitbot.cchite.mehitevision-solution.com
hitfmfans.com
hitgk.com
hitnology.comhitnslab.nethitouch.com
hitoupiao.comhitozumi.comhitrip.info
hitui.com
+hitutu.comhitv.com95hiuo08jnsoo00bytu32shcs555aa1564dvfguiio0o0885432.comhiveshared.comhiveview.comhivi.comhivictor.nethiwafer.com
hiwaysemi.com
hiwbb.comhiwebgl.com
hiwechats.comhiwemeet.com
+hiwiyi.comhiworld.com
hixgo.comhixianchang.comhixiaoe.com
hixiaoman.comhiyd.com
hiyongche.comhiyouib.comhiyouqu.com
+hiyun.sitehiyun.tvhizaoan.comhizg.orghizh.nethizhecheng.comhizhiche.comhizj.net
hizom.com
hizyw.comhj-bits.com
+hj-dog.comhj-ienergy.comhj-mail.com hj.vc
hj110.com
hjapi.comhjasiancenter.com
hjbbs.com
hjbxw.com
+hjcadc.com
+hjchee.comhjcjifen.com
+hjckjt.comhjclass.comhjcm.nethjd111.shop
+hjd123.comhjdhdduekcdie.com
+hjdict.com
hjdns.com
hjdns.net
+hjdshop.cc
hjdzn.com
hjenglish.com
hjf56.com
hjgcd.com
+hjgtjt.com
hjhrcloud.comhjhuojiachang.com
hjido.comhjiesuan.comhjjg.comhjjh.comhjjunhua.comhjkhjkl.com
+hjkklj.com
+hjksjx.comhjpp.nethjr-exchange.com
hjren.com
hjtag.comhjunkel.com
hjvep.com
+hjw169.com
+hjwsky.comhjwxcps.com
hjxhg.com
+hjxsjx.com
hjxtv.comhjy1314.comhjyanxue.comhjygame.comhjyl.orghjz4.com
+hjz518.comhk-island.hk
hk-jztzjt.comhk-tencentclb.comhk-titan.com
hk-vstart.com hk.uy
hk515.net
+hk8668.com
hkaco.com
hkaik.com
+hkaima.com
+hkance.com
+hkance.xyzhkanews.comzzguifan.comhkbchina.com
hkca.clubhkcgart.comhkcna.hkhkcoalition.com
hkcpr.com
hkcts.comhkctshotels.comhkctsmembers.com
+hkcwdc.com
hkd82.com
hkdfc.com
hkdfgroup.comhkexpressworld.comhkfc.hk
hkfcchina.com
hkfdi.comhkfe.hk
+hkfljt.comhkg3g299r4.comhkgcloudcs.com
hkgcr.com
+hkgj07.comhkglink.xyz
hkgol.com
+hkinsu.com
+hkjapp.comhkjsrent.comhkklock.comhkkltdns.comhkkuaiyixiu.com
+hklego.comhklmoto.comhklmxcx.com
+hklsqc.com
+hkm168.com
hkmeinian.com
+hkmipo.com
hkmjd.com
hknet-inc.com
hkoke.com
hkpanamie.com
hkpep.com
hkpnu.comhkproperty.com
hkqbh.comhkroyal.com
+hkscxh.comhkserversolution.comhkstv.tvhkszetsair.comhkt4.comhktheone.com
hktkz.comhkvisen.comhkwb.net
+hkxbjt.com
hkxen.comhkxy2022.com
+hky360.comhkyukai.vip
+hkyykq.com
+hkzlcm.comhl-brushes.comhl95.comhl95001.com
hlapi.comhlb2020.com
+hlbcks.comhlbeixiu.comhlbeixiu.nethlcdn.cc
+hlchsw.com
+hlclgd.com
+hlcode.net
+hld558.com
+hldbtv.com
hldgp.comhldhuanbao.com
+hldjob.com
+hldjz8.com
+hldmzg.comhldnews.comhlej.com
hlexp.com
hlgad.com
hlgcj.comhlgdata.com
+hlgnet.com
+hlgnet.net
hlhmf.com
+hlhqdj.comhlhs.cc
hlhyc.comhlideal.comhljbcgs.comhljcqjy.comhlje.nethljhgckj.comhljiasen.com
+hljjjb.comhljjkfp.comhljjytkj.com
+hljnzy.nethljpost.comhljradio.com
+hljrcc.com
+hljsdm.comhljsfjy.com
+hljsph.com
hljszjxhw.com
hljtv.com
+hljucm.net
+hljxgs.com
hljyestar.comhljyqnj.comhljyushi.com
+hljyzy.com
hljzl.icuhlkd.pro
+hlkkwl.comhlkncse.comhlktech.comhlkznsb.comhllinks.comhllives.com
+hlljcc.comhlltuozhan.com
+hlmbbs.comhlmmold.com
hlnhw.com
hlnmg.com
+hlnpic.com
hlo-trade.com
+hloong.comhlpretty.net
+hlqcnx.com
hlqiaojia.com
+hlread.com
hlsdq.comhlshihui.com
+hltmsp.comhltx.net
hlupr.com
+hlwarp.com
+hlwidc.com
+hlwwhy.com
hlxky.comhlxstipark.comhlxsykd.comhlxy.com
+hlybar.com
hlyds.com
hlyiq.com
+hlytec.com
hlyy8.comhlzaojia.comhlzq.com
+hlzqgs.comhm-3223.net
hm120.com
+hm152n.comhm16888.net
hm169.com
+hm5988.com
hmback10.shophmdx.nethmervjk.comhmgj.comhmgreat.comhmhliot.comhminvestment.comhmjblog.comhmjc.org
hmlan.com
+hmlcar.com
+hmltec.com
+hmmryk.com
hmnst.com
hmoe.link
+hmplay.com
+hmrczp.com
hmsce.org
hmsem.com
+hmsemi.com
+hmszkj.com
hmtgo.com
+hmting.com
+hmtrhf.comhmwh.xyz
+hmwzjs.comhmx-led.comhmx3556y0o.comhmxw.comhmxx.net
+hmysem.comhmz.com
hmz66.comhmz8.comhmzixin.comhmzs.nethmzx163.comhn-cbec.comhn-membrane.com
hn-pc.com
+hn0746.com
hn165.com
hn1uzzfd.shop
hn21z.comhn96520.comhnacargo.com
+hnacty.com
hnaee.com
+hnafxh.comhnagroup.comhnagroup.net
hnair.com
hnair.net
+hnaiya.comhnangel.com
+hnapay.comhnartces857.live
+hnaues.com
hnayg.comhnbaili.net
hnbidding.com
+hnbits.com
hnblc.com
+hnbljy.comhnbrush.com
+hnbwsd.comhnccpit.org
hncfa.comhnchaosu.comhnchips.comhnchuangxiangkj.comhncj.com
+hncjrc.xyzhncloud.com
+hncmsx.comhncourt.orghncreate.comhncsmtr.comhncsvod.comhncytxly.com
+hndbsp.com
hndca.com
hndeguang.com
+hndfbg.com
+hndlks.comhndnews.com
hndpf.org
hndpx.com
+hnds88.com
+hndscg.comhndt.comhndxzte.com
hnedition.com
hnemb.com
hnetn.comhnfa.orghnfapiao.com
hnfdx.com
hnfjz.com
+hnfles.com
hnfxg.com
+hnfygg.comhnfyqmj.com
+hnfysg.com
+hngbjy.com
hngbw.com
+hngchj.com
+hnggzy.comhngh.orghngoldcorp.comhngpmall.com
+hngqjc.com
hngscloud.com
+hngsmm.comhngtrust.com
hngwg.com
+hngwzk.com
+hngyzx.org
+hnh.cchnhflqgc.com
+hnhjgd.comhnhnled.com
+hnhxin.com
+hnhxxk.com
+hnhyfm.com
+hnhylx.com
+hnhyrc.com
hnhyt.com
hniec.org
hniic.com
hnijunhai.com
+hnisca.org
hniso.net
+hnisvc.com
+hnjcly.comhnjfpark.comhnjg.comhnjiabao.com
+hnjing.com
+hnjing.net
+hnjkjn.com
hnjkw.nethnjshzy.com
hnjudarhr.comhnjuhuo.comhnkljnxh.comhnks.com
+hnksgf.comhnktgame.com
+hnktzz.com
hnkzy.com
hnlat.com
+hnlbdl.comhnleisu.com
hnliangku.com
+hnlipu.com
+hnlshm.com
hnlxq.com
hnlyy.com
+hnlzhd.com
hnlzw.net
+hnmdtv.com
+hnmfbw.com
+hnmgjr.com
+hnming.com
+hnmjjt.nethnmlqianpan.comhnmrffm888.com
hnmsg.com
hnmsw.com
+hnmudi.comhnmuseum.com
+hnmyhk.comhnnbwdiaosu.comhnninglian.comhnnx.com
hnnxs.comhnnzwhyy.comhnoceanrace.com
hnofc.com
hnpfw.com
hnpic.comhnpolice.comzzguest.comhnqfseed.com
hnqic.com
hnqingnuo.comhnqinshi.com
+hnqjbh.com
+hnqlhj.com
+hnqljj.com
+hnqljt.com
hnqnw.comhnquxing.comhnquyou.com
+hnrcjl.comhnrcjob.com
+hnrcsc.com
+hnrcsc.nethnredcross.com
+hnrich.net
hnrmb.comhnrmtjg.com
hnrpc.com
+hnrsks.comhnrszhjc.com
+hnryly.com
+hnsbxl.comhnsdzjy.com
+hnsfdc.comhnshengben.com
hnsite.cchnsiwei.com
+hnsjrd.com
+hnsktc.com
+hnskxy.com
hnsoftedu.com
+hnsong.net
+hnsqtg.comhnsrmyy.comhnst.org
hnstguolu.net
+hnsyda.com
+hnsyhm.com
hnsyu.net
+hnsyyq.com
hnszn.com
+hntbpm.com
+hntchq.com
+hntcmc.net
hnteacher.net
hntiannuo.net
hntianyue.comhnticai.comhntican.com
+hntkg1.com
hntky.comhntncdn.com
hntobacco.comhntv.tv
+hntxxy.com
+hnukai.com
+hnwbxx.com
hnwcl.comhnwd.com
+hnwdhk.com
hnwisecom.com
+hnwlcm.com
+hnwlxh.net
+hnwngp.com
+hnwsbz.com
hnwtv.comhnwwsjzx.com
+hnwyxx.com
hnwz8.comhnwzinfo.com
hnxdf.comhnxdsly.comhnxfpfb.com
+hnxlbj.comhnxljkj.com
+hnxmht.com
+hnxttv.comhnxunch.com
hnxuntang.com
hnxxc.com
hnyanglao.comhnyaosi.comhnyc998.com
hnydf.net
+hnyfkj.com
hnyichang.comhnyingfang.comhnyinhan.comhnyixiao.comhnyl.xyz
hnylstone.com
hnyouneng.com
hnyuanyou.comhnyuedu.comhnyunji.comhnyunsutong.comhnyunzhiyi.com
hnyuyuhui.com
hnyzfwlkj.comhnzhangkun.comhnzhaobiao.comhnzhijiang.comhnzhouyi.com
hnzhy.com
+hnzjdc.com
+hnzjip.com
+hnzjyl.comhnzm.vip
hnzoc.com
hnzqw.com
+hnzrsc.com
+hnzsbw.com
+hnztfs.comhnztqzjx.com
+hnzxyy.comhnzycfc.com
+hnzywh.xyzhnzyxckj.comhnzyydx.com
+hnzyzx.com
+hnzzlh.comho7k.comhoau.nethobalab.comhobby-eagle.net
hobbyboss.com
hocheymed.com
+hocode.com
+hocodo.comhodiasflavor.comhodo170.com
+hodoop.com
+hoehub.comhogatoga.nethogesoft.com
hohlp.comhoho666.com
+hohode.com
hoing.net
+hojonn.com
hokori.online
holaq.com
+holdhr.com
holdsteel.comholdtwo.comholiland.com
+holine.com
holkx.comholleykingkong.comhollischuang.comhollisterco.comhollycrm.comhollysource.comhollysys.comhollyuc.com
hollywant.com
holmesian.org
holoalpha.com
+holoem.comholteksupport.com
holymalls.comholyxiongan.com
zzgjj.comzzgdapp.comhome0311.comhome0538.comhome0668.comhome133.comhome178.com
home4love.comhome616.com
+home77.comhome898.comhomearch.com
homearch.shophomearch.storehomearch.viphomeartschina.comhomebehind.comhomecdn.comhomecloud-lab.comhomed.me
+homedo.comhomeinframes.comhomeinmists.comhomeinns.comhomeintour.comhomeking365.comhomekingcdn.comhomekoo.comhomekoocdn.comhomelandol.comhomesir110.comhometeda.comhometex114.comhometexjoin.comhometol.com
+homevv.comhomey-household.comhomeyao.com
hommk.com
+homolo.com
+homolo.nethomylogistics.com
homyu.comhonco88.comhonda-sundiro.com
honee.nethonesty-environ.comhonf.nethong-lawfirm.com
hong-shun.com
+hongbao.shhongbao.showhongbeibang.com
hongbeicn.comhongbizi.org
hongbo-sh.com
hongbo100.comhongboom.comhongbowang.net
hongcesys.comhongchangpawn.comhongchef-zj.com
hongchisw.comhongda-steeltube.com
hongdatec.comhongdaym.comhongdefund.comhongdezk.com
+hongdi.icuhongdian.comhongdianfund.comhongdongpumps.com
hongdoufm.comhongdoulive.com
+hongen.com
hongfeihr.comhongfengyandu.comhongfengye.comhonggebang.comhongguogame.comhongguoyouxi.comhonghaibengye.com
honghailt.comhonghe-tech.com
hongheiku.comhonghuotai.comhonghusaas.comhonghusoft.comhongjia138.comhongjiang.infohongjibp.comhongjiegz.sitehongjiejia.comhongjin2.comhongjing.comhongjingedu.comhongjinleather.comhongkang-life.comhongkongairlines.comhongkongcache.com
+hongku.comhongkun-tech.comhongkunjinfu.comhonglans.comhonglimingbiao.com
honglipai.net
honglulan.com
hongmeiti.com
hongmeiti.net
+hongmen.cchongmen.comhongmianzhihui.comhongmitech.com
+hongmo.xyzhongmoka.com
+hongmu.com
hongniang.comhongpig.com
hongqi.tvhongqiangmjg.comhongqimold.comhongqipharma.comhongqipress.comhongrenzhuang.sitehongrida.comhongrinongye.com
+hongru.comhongruihuanjing.com
hongruike.comhongsanban.comhongsat.comhongsegs.comhongsehuoxian.comhongsejiqing.comhongshang-led.comhongshi-tech.com
hongshi88.comhongshigroup.com
hongshizi.orghongshn.xyzhongshu.comhongshunet.comhongshunth.comhongshuxiao.com
hongsong.club
hongsong.infohongsungifts.comhongtaijixie.comhongtaiscp.comhongtastock.comhongtelecom.comhongttel.comhongtu-xinghan.com
+hongtu.net
hongtucad.comhongweblog.com
+hongwu.comhongxiangzaixian.comhongxiaolong.com
hongxin18.comhongxinglin.comhongxingshangye.comhongxingzhonggong.comhongxingzn.com
+hongxiu.cchongxiu.com
hongyan-e.comhongyan.infohongyangxiezi.com
hongyanhr.comhongyanjin.comhongyanliren.comhongyaomall.comhongyeliehun.comhongyewangluo.comhongyewuyang.comhongyi5.com
hongyikun.comhongyimarine.com
hongyimro.comhongyirong.com
hongyu-qi.comhongyuanqh.comhongyue.comhongyuejiu.comhongyugz.comhongyumedical.comhongyunduo.comhongyunsheng.com
hongyuntx.comhongyunvren.com
hongyuzps.com
+hongze.net
hongzetai.comhongzhigongzuowang.comhongzhoukan.com
+honhan.ltdhonkaiimpact3.comhonkaistarrail.com
+honlyu.com
honor.com
honorfair.com
honorfile.comhonpery.comhonson-china.comhonsonch.comhonstarmemory.com
honsuntec.comhonycapital.com
honyfunds.comhonyone.comhonyuan.nethoo6wee7ghh0mmm.com
hooan.nethoodinn.comhoodong.com
hooenergy.com
hooh5.comhookbase.comhookdll.com
+hoolai.comhoolaigames.comhoolee8.comhoolinks.comhoolo.tv
+hoonup.comhoop-archi.com
hoopchina.comhoopugames.net
+hoosho.comhooshun.comhooya.hkhooyagroup.com
+hooyoo.comhopebank.comhopebeauty.comhopebiol.comhopecool.com
+hopeda.comhopehook.comhopenoah.comhoperun.comzzgcjyzx.com
+hopexr.comhophingfood.com
+hopoot.com
+horain.nethoran.cchorchips.comhori-gz.com
+hori3d.com
horigames.com
+horion.comhorionsw.com
+horizon.ai
+horizon.cchorizonfuelcell.comhorizonrcg.com
horju.comhorn-yacht.comhorphoto.comhorsechinaone.comhorti-expo2019.comhortor-comic.com
+hortor.net
hortor002.com
hortor005.com
hortor020.comhortorgames.com
+hosane.com
hosgs.com
hoshungrp.comhosizoraworks.org
hoslen-sh.comhosn168.com
+hosory.comhosowin.comhospite.comhost888.nethostadm.nethostbbs.nethostbuf.comhostdie.comhostidc.nethostkvm.com
+hostloc.mehostmastered.net
hostmonit.comhostxen.comhot0755.com
+hotalk.comhotborn.comhotchenghong.com
hotdb.comhotdrama.cchoteamsoft.comhoteastday.comhotelcis.comhoteldig.comhotelgg.comhotelvi.comhotelyunos.com
+hotent.com
+hotent.xyz
hotgamehl.com
hotkd.com
hotkey123.comhotkidclub.comhotking.com
+hotlcd.comhotlinegames-jp.nethotnewx.com
+hotoos.com
hotozixun.com
hotpotstq.com
+hotpub.comhotread.comhotsales.nethotsnow.clubhotsoonapp.comhotsoonapp.nethotsoonvideo.comhotsoonvideo.net
hotsoonzb.com
hotsoonzb.net
+hotssp.com
hotstoday.comhottechsemi.com
+hottui.comhotwatchsreplica.comhotwind.nethotwindbox.com
hotxf.com
houcaller.com
+houdao.com
+houdao.nethoudask.comhoudewl.comhoudong999.comhoudunwang.comhoufaka.comhouhoucn.comhoujiji.com
houjt.com
+houkai.comhoukuanshop.comhoulangsports.comhoungfuh.comhouniaotrip.com
+houpue.com
houqinbao.com
+houqun.nethouquner.comhourt-cert.comhouse086.comhouse178.comhouse365.com
+house5.nethouse510.comhouse86.comhouseimg.comhouseppp.com
houshaoan.com
+housoo.comhouwuedu.com
+houxue.comhouyicaiji.comhouyuantuan.comhouzhibo.comhouzhiwang.com
+houzi8.comhouzislkdjfkldsdsd.com
hoverlees.com
hovertree.comhovfree.comhovthen.comhowardwchen.com
+howbuy.comhoweipharm.comhowelllighting.comhowjoin.comhowlapm.com
+howsci.comhowtoing.com
howxm.com
+howzhi.com
+hoxing.com
hoxue.comhoyakeji.comhoyibox.xyz
hoyo.link
+hozest.com
hozin.comhp-marathon.com
hp123.com
hp888.com
+hpblog.net
hpc.cloudhpccake.comhpccube.com
+hpearx.com
hpeft.comhpelpdl.com
hpglw.com
+hph123.com
hphow.com
hpigc.comhpjd.com
hpmif.com
+hpnfjx.comhpoi.nethpphhealthcloud.comhprt.comhprx.comhpshuju.com
+hpstore.cc
hptea.comhptrace.com
hpuoj.com
+hpv112.com
hpwjs.comhpwu.com
hpwxc.com
hpy93.com
+hpyiqi.comhpyk.comhpzhatu.comhq-minerals.com
+hq0564.com
hq114.net
+hq2011.comhq88.comhqbd.com
hqbnb.com
hqbsh.com
hqbuy.comhqbuycdn.com
hqc-china.comhqcanyin.comhqcbeip.com
+hqchip.comhqcr.com
+hqdlsn.com
+hqdoor.com
+hqepay.comhqew.comhqew.nethqewimg.com
hqfastner.com
+hqgjzz.comhqgq.comhqh5.comhqhl.net
hqhot.com
hqidi.comhqjy.com
hqpcb.comhqps.comhqresearch.org
hqsec.com
hqsgw.comhqsmartcloud.com
hqsoft.cc
hqthw.comhquu.nethqvchina.com
hqwhw.comhqwx.com
+hqxlad.com
+hqygyg.comhqyj.com
+hqyjng.comhqyjsuccess.comhqys.nethqytgyh.com
hqyun.com
+hqyxbj.com
+hqyxjy.com
hqyzx.com
+hqzbcn.comhr-channel.com
hr-mp.comhr-self.com
hr-welink.com
hr002.com
+hr0571.com
+hr0715.com
+hr0915.com
+hr1000.comhr10000.com
hr135.com
+hr2003.comhr2trainer.com
hr369.com
hr448.com
hr510.com
+hr5156.com
hr558.net
hr668.comhr78.net
+hr9000.com
hr987.com
hrayw.com
hrbaodian.com
hrbar.com
+hrbbcf.comhrbeduy.com
+hrbesd.comhrbjianchewang.comhrbmama.comhrbmilan.com
+hrbswx.com
hrbtv.net
+hrbuyu.com
hrbyafeng.comhrbzdty.comhrbzhsd.com
hrcfc.com
hrday.com
+hrdnkj.comhref.lu
+hrexam.comhrfc.net
hrflc.comhrfoods.com
hrggx.comhrgrobotics.com
+hrgsmz.com
+hrgxyy.comhrhuiyi.comhrhy365.comzzfriend.com
hrloo.com
+hrm100.comhrmarket.net
+hrmooc.com
hrmtgroup.comhro-beauty.comhroot.co
hroot.com
hrpackage.com
hrpsuzuki.com
hrrsj.com
+hrs100.comhrsalon.org
hrsay.com
hrsee.comhrteachu.comhrtechchina.com
+hrtfin.comhrtn.nethrtx.comhruikang.comhrvvtbv.com
hrwuu.com
hrxiongan.comhrxz.comhrzy.cchs-defense.com
hs-fe.comhs-outlets.com
+hs.neths10000.com
hs13z.net
hs313.net
hs326.com
hs499.comhs65.comhs85.com
+hsakyy.comhsay.com
hsayi.com
hsbdc.comhsbianma.com
+hsbiao.com
hscbw.comhscn.com
hsdatalab.com
hsdbg.com
hsdcw.com
+hsddyy.com
+hsdfzp.comhsdmall.comhsdprefabcontainerhouse.comhsehome.comhsehome.orghsez.net
+hsfund.comhsfzxjy.sitehsg2oi3c.com
hsgjj.comhsgjysj.com
hsguangyu.com
hshan.com
+hshdyw.com
+hshhlj.comhshl360.comhshs.com
+hshsjy.com
+hshton.comhshuiyi.comhshw.comhshy.net
+hsigus.comhsiuyang.nethsjk.com
hsjkaoyan.comhsjlrhy.comhsjpgzx.com
+hsjrhy.comhsjy.com
hskun.com
hsleu.comhslight.nethslvshan.com
+hslxhl.com
hsmdb.com
hsmob.com
hsmrt.com
hsoow.comhspeletizadora.com
+hspfmz.comhspm.nethspress.net
hsqhfunds.com
+hsqjfw.comhsqt888.comhsrc.tv
+hsrjtk.com
+hsrnsw.com
+hsrtd.club
hssdk.comhssdtest.com
+hssemi.comhssenglish.com
+hssgly.com
+hssjyj.com
+hsslab.com
hssrc.com
+hssyxx.com
+hsszfx.comhst.comhst1966.net
+hstars.nethstczkj.com
+hstong.comhstpizza.comhstspace.com
+hstyre.comhsutimes.comhsuyeung.comhsweb.me
+hswkzy.com
hswmb.com
+hswyvz.com
+hsxedu.com
+hsxjjs.comhsxt.comhsxt.net
+hsxxad.comhsy2.comhsyaguanjg.comhsyanyi.com
+hsybyh.com
hsysupply.comhsyuntai.comhsyunyi.comhsyyf.me
hsyymusic.com
hsyzg.net
hszhizhen.nethszk.org
hszq8.com
hszsb.org
+hszsfz.comhsztbzx.comhszw.orghszxlzx.com
hszy8.comhszzsyzx.net
+hszzzx.net
+ht-cao.com
ht-ep.com
ht-rc.comht-saae.comht-tech.comht-yoga.com
+ht0775.com
+ht1832.com
ht500.comht88.comht9.com
+htai51.comhtaizhou.comhtanwang.com
htaocloud.com
+htbaba.com
+htback.comhtbenet.net
+htbmsc.com
htc-media.comhtcases.com
htcis.nethtcxfund.comhtd2000.com
+htdata.comhtdtire.comhteacher.net
hteos.com
+htexam.com
+htexam.net
htfcn.comhtffund.comhtfoxit.comhtfpartner.com
htfutures.com
+htg520.com
htgbn.com
+htgjjl.com
+htgkdz.comhtguosheng.com
htgwf.com
+htgwlc.comhtgz456.comhti-instrument.com
htidc.com
+htimgs.comhtinfor.com
+htinns.comhtinnsjm.comhtjinju.comhtjs.net
htjsq.comhtjxsbfw.comhtkaoyan.com
+htknow.comhtky365.com
+html51.com
html5code.nethtml5dw.com
html5mark.com
html5plus.orghtml5train.comhtml5tricks.com
+htmlai.comhtmleaf.com
htmlsucai.com
+htmycn.com
+htnice.com
htong.comhtoo.vip
htool.com
htqyy.comhtranslate.com
+htsamc.comhtsc.com
htsec.com
+htsham.comhtslauto.com
+httdsj.com
htths.com
httingshu.comhttpcanary.com
+httpcn.comhttpsok.comhttpssl.comhtucloud.comhtudata.comhturl.cc
+htv123.com
+htvaas.com
htwed.com
htwld.comhtwx.net
+htx.cc
+htxgcw.com
htxrc.com
+htxxpx.com
htycs.com
htyhm.com
htyou.com
htyrh.comhtys.cchtyssdf.com
htyswzzgw.com
htyunwang.com
htzdj.comhtzdznjs.com
+htzhgd.com
+hu.com
hua-chips.comhua-lan.comhua-yong.comhua.com
+hua108.comhuaaiangel.comhuaaojiaoyu.com
huaaosoft.com
huaaotech.com
huaat.comhuabaike.com
+huaban.com
+huaban.net
huabanimg.com
huabanpro.comhuabbao.comhuabeicw.com
huabeipay.comhuabian.com
huabianyl.com
huabo.nethuabocam.com
huabokeji.com
+huabot.com
huacaijia.comhuacaobk.comhuacaole.comhuacaoshumu.nethuacemedia.comhuachengenjoy.com
huachenit.comhuachenyuanyang.com
huachuang.funhuaci.cchuacolor.comhuada120.comhuadabz.com
+huadan.comhuadehyd.com
huadiansc.com
+huadie.comhuadonghospital.comhuadongmedia.comhuadream.com
huadun315.com
huaduocai.nethuaease.net
+huaeda.comhuaer.cc
huaerzi.storehuafang.comhuafeng.com
huafengaw.comhuafens.com
huafer.cchuagolf.comhuagujs.comhuaguoshan.comhuagupai.comhuahaijiaju.comhuahaizm.com
huahanart.comhuahanbook.com
+huahao.com
huahengsk.com
huahonggk.com
huahua777.comhuahuacaocao.com
huahuahua.net
+huahuo.comhuai.gg
+huaian.comhuaibaobei.comhuaibei.com
+huaicai.cc
+huaien.com
+huaihai.tvhuaihaixiang.com
huaijiufu.com
+huaimg.com
+huaimi.com
huain.comhuainanhai.comhuainannet.comhuainanren.nethuainet.com
huairui59.comhuaisimida.com
huaixin88.com
huajia.cchuajiakeji.comhuajialishe.comhuajianmed.comhuajiantong.comhuajiao.comhuajiaow.comhuajieai.comhuajifen.com
huajin100.comhuajing-inf.comhuajingsec.comhuajuan.net
huajuanma.comhuajuanyun.com
huajx.comhuake-weixin.comhuakeyun.com
huakpower.comhualady.comhualaikeji.comhualala.comhualan-tech.com
+hualet.orghualewl.nethualiandie.comhualiandressing.com
hualiantv.comhualianxin.comhualingjiangong.com
+hualis.comhualiuniversity.comhualongxiang.com
+hualu5.comhualumedia.com
hualuwood.com
hualv.com
+huaman.pubhuamanlou.cchuamaobook.comhuamaoshuo.comhuameili.nethuameiyuezi.comhuamengxiaoshuo.com
huami.com
huamu.comhuan-tai.comhuan.tvhuananauctionctf.comhuananfanyi.com
huananzhi.comhuanbao.comhuanbaoscx.comhuanbeieloan.comhuanbeiloan.com
huancai88.comhuandie.com
huane.nethuang-jerryc.comhuang-jiang.comhuangbaoche.comhuangbaoquan.comhuangbowei.comhuangchujunyulong.com
huangchun.nethuangdaojiri.orghuangdc.comhuangea.com
huangfusl.nethuanggao.nethuanggaole.comhuangguanluo.com
+huangh.comhuanghaicollege.comhuanghaiting.comhuanghanlian.com
huanghedz.com
huanghelou.cchuanghepiao.comhuangjiemin.comhuangka.comhuanglei.mehuangli.comhuangliangbo.comhuangniu.in
huangpucn.comhuangqi1688.comhuangshaotian.comhuangwei.mehuangwei.prohuangxin.devhuangxinwei.com
huangyao.workhuangye.net
huangye88.com
huangye88.nethuangyixiaoshuo.comhuangyuehe.comhuangyuhui.nethuangyunkun.comhuangzz.xyz
huanhaoba.comhuanhuanhuishou.comhuanhuanxin.comhuanhuba.comhuanidc.com
+huanju.nethuanjutang.com
huanjuyun.comhuankkk.comhuanlang.com
+huanle.com
huanle800.com
huanlecdn.comhuanlefish.comhuanleguang.comhuanletang.com
huanlewan.nethuanlingxiuxian.com
+huanlj.com
huanmusic.comhuanong1688.comhuanongdao.comhuanpeng.comhuanpingge.comhuanqiu-ltd.comhuanqiu.comhuanqiu.orghuanqiuauto.comhuanqiuchuguo.comhuanqiujiemi.comhuanqiukexue.comhuanqiumil.comhuanqiutape.comhuanqiuw.comhuanqiuyimin.comhuanqu-tec.comhuanqunquan.comhuanrong2010.comhuansengifts.comhuanshoulv.com
+huante.comhuantest.comhuantour.comhuanwen.com
+huanxi.comhuanxia.comhuanxingedu.comhuanxio.comhuanxiongdd.comhuanxiyl.comhuanyingzq.comhuanyou365.com
huanyouji.comhuanyuantech.com
huanyudns.comhuanyule.com
huanyumid.comhuanyutv.comhuanzhu101.com
huanzhucv.com
huaoe.com
huaon.comhuaougas.com
+huapai.comhuapiaoliang.comhuaqiangbuy.comhuaqiaobang.comhuaqidigital.com
+huaqin.com
huaqinchi.comhuaqingkeji.net
+huaqiu.comhuaraytech.comhuarenyingyu.comhuarenyizhan.com
huari.comhuarongdao.comhuarongled.com
huaruicom.comhuas.cohuaseyx.com
huash.comhuashangcbbtv.comhuashangtop.comhuashen-edu.comhuasheng100.comhuashengchn.comhuashengdaili.comhuashenghaoche.comhuashengjia100.comhuashengls.comhuashengtoutiao.com
huashi-sh.comhuashi6.com
huashibus.comhuashichang.com
huashideh.com
huashijie.arthuashilm.com&"huashipharmacymtalionlineybpay.comhuashitong.nethuashphoto.comhuashu-inc.comhuashuitax.comhuashunxinan.nethuasimtour.com
huasiwood.comhuasongwang.comhuasuhui.comhuasyun.com
huatai-pb.comhuatai1993.comhuatengsci.comhuatianxiangsu.com
huatu.comhuatugz.com
huatuo007.comhuatuowenda.comhuatuoyf.com
huaue.com
+huawan.comhuawangzhixun.com
huawanyun.comhuawei-3com.comhuawei.asia
+huawei.com
huawei.eu
huawei.ruhuaweiacad.comhuaweiapaas.com
huaweiapi.comhuaweicloud-dns.comhuaweicloud-dns.nethuaweicloud-dns.orghuaweicloud-idme.comhuaweicloud-smn.comhuaweicloud-smn.nethuaweicloud.comhuaweicloudapis.comhuaweicloudlive.comhuaweicloudsite.comhuaweicloudwaf.comhuaweidevice.com
huaweidun.comhuaweielab.com
huaweiief.com
huaweiita.comhuaweils.comhuaweimall.comhuaweimarine.comhuaweimarketplace.comhuaweimossel.comhuaweioneaccess.com
huaweirom.com
huaweirtc.comhuaweisafedns.comhuaweishop.net
huaweisre.comhuaweistatic.comhuaweiuniversity.com
huaweiyun.com
huaweizdl.comhuawenfanyi.comhuawenonline.com
huawenwin.comhuawote.com
huaxi.nethuaxi100.com
+huaxia.comhuaxia77.comhuaxiabeidou.comhuaxiabenshan.comhuaxiaf.comhuaxiajianyan.comhuaxiald.comhuaxiangdiao.comhuaxiangzhizao.comhuaxianpai.comhuaxiao5.comhuaxiaobaokeji.comhuaxiapawn.comhuaxiataike.comhuaxiazi.comhuaxinbaojie.com
huaxincem.comhuaxincredit.comhuaxing.comhuaxingchem.com
huaxintec.comhuaxiong.comhuaxirc.com
+huaxiu.ink
huaxj.net
huaxuezoo.comhuaxunbaili.comhuayang.nethuayanghui.nethuayaody.comhuayicn.comhuayidiaosu.comhuayijiahe.comhuayilawfirm.comhuayimedia.com
huayiming.com
huayingrc.com
huayingsc.comhuayinjapan.com
huayinlab.comhuayishebei.comhuayitongtai.comhuayiweibo.com
huayiwork.com
huayiyuan.com
+huayou.comhuayoumengze.comhuayoutianyu.comhuayuanlcd.comhuayuchaxiang.com
huayue119.com
huayuejob.comhuayufilter.comhuayulandmarkhotel.com
+huayun.comhuayunshuzi.comhuayunyy.comhuayuplastic.comhuayuzj.comhuazhen2008.comhuazhen2008.nethuazhengcaiwu.comhuazhengwuye.comhuazhenjiaoyu.comhuazhongcar.comhuazhongcnc.comhuazhongtimes.com
+huazhu.comhuazhuanapp.comhuazhucorp.comhuazirc.comhubashihuo.comhubcyts.comhubei88.comhubeibbs.nethubeici.comhubeidaily.nethubeigongfu.com
hubeihome.nethubeiip.comhubeikj.comhubeipbx.comhubeiweizan.comhubeiwsd.comhubeixuekao.comhubeiyanjiusheng.comhubeiyongtai.com
hubiao168.com
hubing.onlinehubsound.com
hubstudio.viphubu.comhubulab.com
+hubwiz.com
hucdn.com
huceo.com
huchaowei.comhucheng100.comhuchi.cc
hudai.com
+hudbbs.com
+hudong.com
hudong100.com
hudong100.net
hudong100.orghudongad.comhudongba.com
hudongcdn.comhudongku.net
hudou.nethudsonfirecolo.com
hudunsoft.com
huduntech.comhuelead.comhuenhuenfood.comhufangkeji.com
hufangyun.comhufe.cchugd.comhugecdn168.comhugecore.nethugeland.comhugetall.com
hughg.com
hugobingo.comhuhanba.comhuhexian.com
huhoo.com
huhoo.net
huhua.nethuhuang.net
+huhudi.comhuhuguanjia.com
huhustory.comhuhutian.comhuhutong315.com
huhuxiong.comhui-ben.comhui-chao.comhui.net
hui10.com
hui10.net
+hui100.com
hui43.com
+hui712.com
+hui800.com
+hui800.net
+huians.com
+huibag.comhuibiaoinfo.com
huibo.comhuicaishui.net
huiche100.com
huicheimg.comhuichengip.com
huichengy.comhuichewang.comhuichuangjialife.comhuichuangzhanlan.com
+huicx7.comhuida18.com
+huidan.nethuidang.comhuidaocaishui.comhuidazhe.vip
+huiddo.comhuide-medical.comhuideyecai.comhuidian.nethuidongnet.com
huidu.com
huidu.nethuidu001.comhuiemall.com
+huierp.comhuieyes.comhuifachina.comhuifacms.comhuifayun.comhuifengxinxi.comhuifenqi.com
huifu.comhuifudashi.comhuifusihai.comhuifutz.comhuifuzhinan.comhuigaiji.comhuigao-magnetics.comhuigezi.orghuiguanwang.comhuiguiyong.comhuih110.comhuihaha.comhuihaicenter.comhuihaicn.comhuihaiyang.comhuihe56.comhuihefz.comhuihestone.comhuihezx.com
huihua365.comhuihua8.com
huihuaren.com
huihuitong.hkhuii.cchuiidea.com
+huiji.wikihuijiame.comhuijiaoyun.com
huijidata.comhuijie.shop
huijiewei.com
huijimall.comhuijistatic.comhuijitrans.com
huijiwiki.com
+huiju.coolhuijucn.comhuijuyun.comhuila88.comhuilaimi.com
+huilan.comhuilanyujia.com
huilianyi.comhuilintyre.comhuilitao.comhuilitc.com
huiliubao.com
huilm.com
+huilog.comhuilongsen.comhuilongtech.com
huilvwang.comhuilvyankuang.com
huilw.com
+huilyn.comhuim.com
huimaiche.comhuimaihs.com
+huiman.nethuimeisports.comhuimeiyp.com
huimengya.com
huimin111.comhuimincz.com
huimingcn.comhuimingjia.comhuiminshop.comhuimwang.com
huinaimei.com
huing.net
+huinkj.net
huinongtx.com
huion.com
+huiqia.nethuiqiyu.com
huiqk.comhuiqudsp.comhuiqunchina.comhuiquzu.com
+huiris.comhuiruanzhuang.comhuirui1688.com
+huisem.comhuishangbao.comhuishangol.comhuishengaudio.comhuishenghuo.inkhuishengqianzhushou.comhuishida.comhuishoubao.comhuishoubaojiadan.comhuishoujiuwu.comhuishoushang.com
huishuaka.comhuisituo.com
+huisky.com
+huisou.comhuisuanzhang.comhuisuoping.com
+huitao.nethuitaodang.comhuitaoyouhui.comhuitogou.comhuitongqingsuan.comhuitoubj.com
huitouche.com
huitouyan.comhuitouyu.comhuitouzi.com
huitu.com
+huitu8.com
+huitun.com
+huiurl.com
huivo.comhuiwang.nethuiwenda.com
huiwo.comhuiword.com
+huiwww.comhuixiang360.comhuixiangtiandi.com
huixiaoer.com
huixiaoer.nethuixineducation.com
+huixing.hkhuixingsoft.comhuixinli.comhuixinyt.com
huixinyun.comhuixuanjiasu.comhuixueba.net
huiyan315.com
huiyankan.comhuiyanw.comhuiyaohuyu.com
+huiybb.com
+huiyda.com
+huiyi8.comhuiyiabc.comhuiyiai.nethuiyijh.com
huiyingde.com
huiyinxun.com
huiyizhuo.com
+huiyou.comhuiyu.vchuiyuandao.comhuiyuanjia.nethuiyuantang.com
huiyuanyy.comhuiyucn.comhuiyuehz.comhuiyumedia.com
huiyunsec.xyzhuiyutools.com
huize.comhuizecdn.comhuizhaofang.comhuizhek.comhuizhengmopei.comhuizhihuyu.comhuizhijiaxun.com
huizhilin.com
huizhilin.net
huizhimob.comhuizhouf.com
huiziyuan.nethuizone.comhuizuche.comhuizucloud.comhuizuoyuezi.comhuizustore.com
hujia.orghujiang.comhujibbs.comhujingnb.comhujinjj.com
hujiuzhou.com
+huke88.com
+hukeck.com
+hukecs.comhukecwx.comhukefjb.comhukehyh.com
+hukelc.com
+hukenb.comhukesxm.com
+hukewq.comhukexyy.comhukou021.com
hulai.comhulianfang.comhulianmaibo.comhulianwangchuangye.com
+huliku.com
hulinhong.comhulixin.com
+huliyx.com
huluboshi.com
+huludz.comhuluip.tech
huluo.comhuluoyun.comhulusaas.com
+hulusi.comhulutrip.com
huluwa.cc
huluwa365.comhuluwa8.comhuluxia.comhuluxia.net
+huluzc.comhumaiyouxi.comhumanplustech.comhumanrights-china.orghumbletg.com
humengyun.comhumensec.com
+huming.comhummcars.com
hunancatv.com
hunaniptv.comhunanliantong.comhunanpea.comhunantv.comhunanzhibo.comhunanzp.comhunational.com
+hunbei.comhunbei1.comhunbei2.comhunbei3.comhunbei4.comhunbei5.com
hunbohui.info
+hunbys.com
+hunche.nethundredcent.comhundsun.com
+hundun.net
hundx.comhunger-valley.comhunheji.org
hunjuwang.comhunli100.comhunlihu.comhunlihunli.comhunliji.comhunlimao.comhunlipic.comhunmiao.com
hunsh.nethuntchance.comhuntermailfocus.com
+huntic.comhuntkey.comhuntkeydiy.comhuntsbot.com
hunuo.comhunyinyiyuan.com
+huoban.comhuobanhuyu.comhuobanjs.comhuobanmall.com
huobanniu.comhuobanxietong.comhuobaowang.comhuobaoweishang.comhuobaoyx.comhuobi.io
+huocai.com
+huochai.cchuochai.mobi
+huoche.comhuoche.wikihuocheci.comhuochehuan.comhuochepiao.comhuochepiao.nethuocheso.com
huodao.hkhuodong.org
huodong.storehuodonghui.nethuodongjia.com
huodongju.comhuodongpro.comhuodongquan.nethuodongshu.comhuodongwang.comhuodongxing.comhuodongzhongguo.comhuoduan.com
+huofar.comhuofutp.com
huogz.comhuohao8.com
+huohoo.comhuohu123.com
huohuacdn.comhuohudun.com
+huohuo.comhuohuolife.com
huoji.comhuojiaba.comhuojitui.comhuoju365.comhuokebao.net
huokeying.com
huokeyuan.com
+huolala.cohuolala.work
+huolan.net
+huolea.com
huoli.comhuolieniao.com
huolieyun.comhuolinhe.comhuolishaonianwang.com
+huolug.com
huomakeji.com
+huomao.comhuomaqun.comhuoming.com
+huonan.nethuopinyuan.com
huopu.comhuoqibao.comhuoquge.com
+huosdk.com
+huoshan.cchuoshan.clubhuoshan.comhuoshancdn.comhuoshangroup.comhuoshanimg.comhuoshanlive.comhuoshanparty.comhuoshanstatic.comhuoshante8.comhuoshanvideo.nethuoshanvod.comhuoshanxiaoshipin.nethuoshanzhibo.comhuoshanzhibo.nethuoshen.com
huoshen99.comhuoshi.shop
huosu.comhuosubtc.com
+huotan.com
+huowan.comhuowanes.comhuoxing.com
huoxing24.com
huoxingzi.com
+huoxun.com
+huoyan.com
huoyan.iohuoyanio.comhuoyantu.comhuoyanyunying.comhuoyfish.comhuoyinetwork.comhuoyuan.mobi
huoyuandl.com
huoyugame.comhuoziyin.com
hupan.comhupanedu.comhupo.comhupo.tvhupozhidao.comhupu.comhupu.gghupu.iohupucdn.comhupujrs.com
hupun.com
+hurbai.comhurricane618.mehurricanechip.com
hurun.nethusenji.comhushangcaifu.comhusiyang.comhust-laser.com
hust-snde.com
hust-wuxi.comhust.cchust.onlinehustcad.comhustedu.techhustlife.comhustlzp.comhustmei.comhustnews.com
+hustoj.comhustonline.net
hustp.com
hustsofc.techhustunique.comhustwenhua.net
+hustxb.com
+hustyy.comhusubao.comhutaojie.comhutaolinight.com
+hutaow.com
+hutegy.com
hutew.comhutong-school.com
hutongcdn.com
hutoufeng.net
+hutui9.com
+hutuii.com
+hutusi.com
+huuhoo.comhuwaibbs.comhuwaizb.com
huwatech.club
huway.comhuweihuang.com
huweishen.com
huwi8.com
+huwokf.lolhux6.com
huxiaofan.com
huxiaoshi.comhuxijizhongguo.comhuxingroup.com
huxiu.com
+huxiu.linkhuxiucdn.comhuya.comhuyahaha.com
+huyajs.com
+huyall.comhuyanapp.comhuyanbao.comhuyanjie.comhuyaohui.com
+huyaos.comhuyaruanwen.comhuyatvns.comhuyayue.com
+huyizh.comhuyn.comhuyouxiong.comhuyueidc.comhuyuekj.comhuyuncdn.comhuyuning.com
+huyuxx.com
+huzhan.comhuzhao1.comhuzheng.orghuzhongxin.comhuzhoumj.comhuzhoumuseum.comhuzicaotang.comhvacstar.comhvcnitl.com
hvdiy.com
+hvread.com
+hvtong.com
hw-ai.com
hw-tm.com
+hw100k.com
hw3static.com
hw555.comhw99.comhwactive.comhwad.nethwadmin.comhwagain.com
hwait.comhwangda.com
+hwashi.comhwasmart.comhwastro.comhwasunpharma.comhwbaoan.com
+hwccpc.comhwcdnsre.comhwcloudlive.comhwclouds-dns.comhwclouds-dns.nethwclouds.com
hwclouds.mobihwclouds.nethwclouds.orghwcloudsite.comhwcloudvis.com
hwcpb.comhwcrazy.com
hwehs.comhweimall.comhweventgrid.com
hwfcw.com
hwgis.com
+hwhidc.comhwht.com
hwjyw.comhwlchain.com
hwlifting.com
hwlpz.comhwocloud.com
+hworld.com
hwpan.com
hwqcn.com
hwrecruit.com
hwsem.com
hwshu.comhwsupplychain.comhwtelcloud.com
+hwtrip.com
+hwtzdl.com
hwwt2.com
hwwt8.com
hwxda.com
hwxfc.com
hwxjp.com
+hwxnet.comhwxuanliuqi.com
+hwyxxx.com
+hwzyjt.com
hwzzw.comhx-r.com
hx008.net
hx110.comhx1h.com
+hx2car.comhx2cars.comhx36.net
+hx5658.com
+hx8886.comhx99.net
hxage.comhxbdf120.comhxbdxled.com
+hxbsth.com
hxbus.net
hxc-power.com
hxcdn.net
+hxchem.net
+hxchya.comhxclouds.comhxct.comhxct.ltdhxdi.com
+hxdkfp.comhxdkj88.com
+hxdspa.comhxdtekf.com
+hxehkx.comhxen.comhxepawn.com
+hxfilm.com
hxfjw.comhxfy888.com
+hxgame.net
hxgqw.comhxgs.nethxgwott.comhxhaoyu.comhxhlwjy.com
+hxhost.com
hxiangjia.com
hxing.com
hxinq.comhxjbcdn.com
hxjbh.com
+hxjiot.com
+hxjiqi.comhxjsjkj.comhxjwang.com
hxjxs.com
+hxjxsw.com
hxkba.comhxkj.cchxkj.viphxkq.orghxkqyxzz.net
+hxland.com
hxlbc.com
+hxledu.com
+hxljjt.com
hxlot.com
hxlsw.com
+hxltcj.comhxmeishi.com
+hxmlyy.com
+hxnews.comhxny.com
+hxnygx.com
hxpdd.com
hxposuiji.com
hxppw.com
hxq123456.comhxqc.com
hxqc.mobi
+hxqcgf.com
+hxqcjt.comhxqgczx.com
hxqnj.org
+hxqssc.com
+hxr100.comhxrc.comhxsd.comhxsd.tv
hxsec.com
+hxsgjk.com
hxsme.org
+hxspjt.comhxstrive.com
hxsts.comhxt5.comhxtk.com
+hxtrip.com
+hxwglm.com
+hxwybc.comhxx.net
hxxkw.org
hxxl6.comhxxsljd.com
+hxy365.com
+hxydup.com
hxyjw.comhxys.com
+hxytea.com
hxytw.comhxyw.net
hxyxt.com
+hxyyad.com
hxyyw.comhxz.inkhxzq.nethy-express.com
hy-la.com
hy-zr.comhy01888.comhy05190134.com
hy123.com
hy1234567.com
+hy2046.comhy233.tv
hy628.comhy681097.cc
+hy8881.com
hyagv.com
hyahm.comhyaimed.comhyakkaryouran.date
hyauh.icu
hyb2b.com
+hybase.comhybbtree.comhybg84417227.com
hycdn.com
hycfw.com
hycgy.comhyckjic.comhycn.comhydarts.comhydbest.com
hydcd.com
hyddd.comhydz999.com
+hydzfp.comhydzswyxgs.com
hyedu.com
+hyexpo.com
hyext.comhyey.com
hyfutures.com
+hyfxbj.com
+hyggfx.com
hygoldcup.comhygy361.com
hyham.com
+hyhcdn.com
+hyhjzc.com
+hyhl66.com
hyhro.com
hyhuo.comhyhygame.com
hyhyn.com
+hyimmi.com
hyipchina.com
+hyj999.com
+hyjgxx.comhyjp.net
+hyjxmx.com
+hykang.comhykcsoft.comhykj.cchyl1.tvhylanda.comhylandslaw.com
hylik.nethylname.com
hym68.com
+hymall.net
hymcu.comhymicrosystem.com
+hymlbj.comhynetek.com
+hynews.net
hyngj.comhynixic.com
+hynpay.comhynuantong.com
hyocr.com
+hyouda.com
hypefolio.com
hypefolio.nethyper.shhypercachenet.comhypercachenode.comhypergryph.comhypersilicon.com
+hyppmm.comhypyimei.com
hyrainbow.com
hysec.com
+hyseim.comhyshengnian.org
hyshi.nethysteeltube.com
+hyt368.com
hytcshare.comhytd.com
+hytera.com
+hytzqb.comhyundai-chhm.comhyundai-hmtc.comhyuuhit.comhywh1999.comhyx.inkhyxiang888.xyzhyxny888.com
hyy99.comhyyf.nethyyl.net
hyyoa.com
+hyypjs.comhyyscgs.com
hyyun.comhyzcservice.comhyzhcdn.com
+hyznjs.com
hyzqu.comhyzqxsb.com
+hz-alw.comhz-etest.comhz-expo.com
hz-gn.comhz-hospital.comhz-jsyg.comhz-medicine.comhz-moon.comhz-tire.com
hz-winone.com
+hz-xin.comhz-zjsh.com
hz3ds.com
+hz5800.comhz66.comhz6z.comhz8z.net
hza01.com
hzaee.comhzaiguojiang.com
hzairport.comhzallina.comhzamcare.comhzapuqi.com
+hzbcdp.comhzbh.com
+hzbhjy.comhzbianqing.comhzbianqu.com
+hzbike.comhzbk.nethzbohai.com
+hzbook.comhzboxing.comhzboxuan.comhzc.comhzcbparking.com
hzccb.nethzccnet.comhzcd120.com
hzcda.comhzcdhcyy.comhzcdycyy.comhzcdyyhc.comhzcdyyyc.comhzcekong.comhzchengdun.comhzchengdun.net
+hzchgj.com
+hzcmdq.com
hzcnc.comhzcopyright.comhzcourse.comhzcphotonics.com
+hzctxh.com
+hzcybb.xyzhzdajiangdong.com
+hzddwk.com
+hzdgjc.com
hzdjr.com
hzdjy.comhzdledu.com
+hzdlrj.comhzdq.comhzdtv.tvhzdx.com
hzecsemir.com
+hzefjs.comhzeg.com
+hzelec.com
+hzeyun.comhzfc.cchzfeiyao.com
+hzfolo.com
+hzfpay.comhzfucai.nethzgh.org
hzgjj.com
+hzgmwl.com
+hzgrow.com
hzguojiao.com
+hzgwzn.com
hzgxr.comhzgzsoft.comhzh0775.comhzh1.com
+hzhadx.comhzhanbo.comhzhcloud.comhzhengtong.com
+hzhfzx.com
+hzhike.comhzhisoft.com
+hzhlpt.comhzhltec.comhzhongou.com
+hzhqdj.comhzhr.comhzhx.com
+hzhyqp.com
hzins.com
hzins.nethzj7.com
+hzjbzg.com
hzjcp.comhzjiantong.com
+hzjie7.comhzjingxian.com
hzjiuyimo.comhzjizhun.com
+hzjlcs.com
+hzjlxx.com
+hzjmjl.comhzjmled.com
+hzjqhy.comhzjunglepay.com
+hzjywl.nethzjzmed.com
+hzkayo.com
+hzkcck.com
hzkln.com
+hzkshx.comhzkuangxiangzi.comhzlange.comhzleshun.comhzlingxing.comhzljlyy.com
hzlug.org
+hzmama.net
hzman.nethzmantu.com
hzmba.com
+hzmogo.com
+hzmxkj.nethzmylike.com
hzncc.com
+hznews.com
+hznk91.com
hznsh.com
+hzntjt.com
+hznx65.icu
+hznzcn.comhzou.net
hzpgc.com
hzpwe.com
hzpzs.nethzq.life
hzqfy.comhzqiuxue.com
+hzqjdz.net
+hzqlpt.comhzqx.com
+hzqxbg.comhzr1.comhzranqu.comhzrc.com
hzredream.com
hzrib.com
+hzrjkf.comhzrobam.com
hzrsl.com
+hzs2sc.com
hzsaifang.comhzsanjiaomao.com
+hzsaso.com
hzsbz.comhzsdyfzfxxx.com
+hzsgjj.comhzsh666.com
hzshanjie.com
hzshudian.comhzslgzx.comhzstad88.com
+hzstar.com
hzstlzxyy.comhzt2006.com
hztek.com
hzthinker.net
+hztosz.com
+hztygd.com
+hztzkj.nethzvillas.com
+hzwaye.com
hzwer.com
hzwf.link
hzwhbcyxh.comhzwindpower.com
+hzwluo.com
hzwmw.com
hzwsa.comhzwsjyjt.comhzwtech.com
+hzwwbj.com
hzwyx.nethzxdship.comhzxiangshang.com
hzxiaobao.comhzxinglong-ip.com
hzxiyuege.comhzxsjgxx.comhzxuanming.comhzxuhong.comhzxy888.com
+hzxyns.comhzxywlkj.comhzyestar.com
+hzyhzp.com
+hzyidc.comhzylpco.com
+hzyoka.comhzyoushu.comhzyuedu.comhzyuewan.comhzywinf.comhzyz.net
+hzyzhp.comhzzhaobiao.com
hzzhileng.com
+hzzhyl.com
hzzkj.nethzzp.com
+hzzrmc.com
+hzzsfs.comhzzuyin.comhzzx365.com
i-27.name
i-520.net
i-bei.comi-bigdatas.neti-click.comi-excellence.comi-f.work
+i-fanr.com
i-firefly.comi-haitao.com
+i-hifi.comi-lewan.comi-m.devi-manji.comi-markit.com
i-matcher.comi-md.com
+i-mock.comi-modec.comi-mofang.com
i-morefun.com
i-now.com
i-oranges.com
+i-same.com
i-shu.com
+i-size.comi-study.neti-tetris.comi-tongfang.comi-xiaohaibao.comi-xinnuo.comi-xoron.com
i-z-e.comzzfreshair.com
zzfmw.comi007.vip
i0349.com
i0597.com
i0734.com
i0746.comi075.com
i0766.com
i0898.org
i100e.comi11r.comi121.net
+i16949.comi171.com
i1766.com
i1bpx.sbs
+i1dian.com
+i1r.cc
i2863.com
i2abc.com
i2eas.comi2ya.comi360mall.com
i3839.com
+i3abox.com
+i3cilx.com
+i3done.com
i3dpworld.com
+i3geek.comi3gt.com
+i3smot.com
+i3v.cc
+i3yuan.com
+i3z.cci4px.comi4t.comi51game.com
i52tt.com
i5399.comi56r.com
+i588ku.comi5a6.comi5i6.net
i5mai.com
i5tea.com
+i66wan.comi67m.com
i6879.comi72.comi77p94y6yi.comi7fh.comi7gg.com
+i7play.comi7wx.com
i8001.com
i8956.comi8cn.com
+i8i8i8.comi8tq.com
+i9.org
i91pv.com
i9978.net
i9rht.com
+i9star.comia-shenzhen.comiaddata.com
+iadmob.comiadmore.com
iaeac.org
iai-robot.com
iaion.com
+iaixue.comialicdn.com
+ialloc.com
iambanban.comiambocai.comiameduwork.com
iamfisher.net
+iamjzs.com
iamle.com
iamlintao.comiamshuaidi.comiamsujie.com
+iamtxt.com
iamwr.com
+iamxcb.comiamxiaoming.net
iamxk.com
+iandun.comianvisa.comiaocwbk.com
+iaoyou.com
+iapijy.com
+iapolo.com
+iappad.com
iappdaily.comiapprank.comiapps.imiappsafe.comiappstoday.comiapptry.comiarlejz.comiars-wuhan.comiartsee.comiask-media.comiask.comiask.iniat-auto.comiautodaily.com
iautodraw.comiautopress.com
+iavira.com
+iaviva.comiavlife.com
+iaxure.com
iazhi.comib-china.comibaba88.comibabyjoy.comibabytxt.comibadboy.net
+ibaiji.orgibailve.comibaitiao.comibaizhu.comibanana.club
+ibanbu.comibanggo.comibangkf.com
ibangquan.com
ibangtiao.com
+ibanma.netibanquan.comibantang.com
+ibanyu.comibaobay.com
ibaoji.cc
+ibaoji.comibaossl.com
+ibaotu.comibaoxiu.netibaralioho.comibayapp.com
ibb2b.comibbwhat.com
ibcet.org
ibczy.comibdxigualive.comibdxiguavod.comibeidiao.comibeifeng.com
+ibeiig.comibeiliao.com
+ibeiou.com
+ibennu.com
+ibenxi.comibestapp.comibestfanli.com
+ibestv.comibeta.meibianma.com
ibicn.comibidian.com
ibiji.comibimuyu.com
ibingniao.comibiquge.info
+ibiquge.laibiquge.netibiquges.com
ibiquges.infoibiquke.com
+ibiquku.laibiquxs.infoibiquxs.netibiquzw.infoibireme.comibixiaxs.com
ibkcn.comibkstore.com
+ibl520.com
+iblimg.com
iblog.renibloger.net
iblue.comiblue.me
ibluefrog.comibluesocial.com
ibmcampus.comibmfwqdl.com
ibmhz.comibmwclub.com
+ibodao.comiboohee.com
+ibook8.com
+ibooker.cc
ibookstar.comibornclinic.comibox.artiboxpay.com
+ibr.ccibreader.comibreeno.comibroadlink.comibruce.info
+ibscdn.com
+ibtsat.com
+ibuick.com
ibuscloud.comibuychem.com
+ibw.ccibx8.com
ibytedapm.comic-king.com
+ic-ldo.com
ic-valley.comic2china.comic37.comic72.comic98.comic9cube.comica-alliance.orgicafe28.net
+icafe8.com
+icafe8.neticai.vipicaidao.com
+icaifu.com
+icaile.comicall.meican365.neticandata.comicaneasy.comicangshu111.com
icanvideo.comicardfinancial.comicaredbd.comicasiso.comicastlewar.comicax.org0073.comicbc-at.comicbc-cz.comicbc-ltd.comicbc-uk.comicbc-us.comicbc.aeicbc.be
zzfly.netzzfeilu.com
zzfcw.com
zzepa.org
zzect.com
+zzdtec.comzzdl.comzzdh.netzzdengji.com
zzded.comzzd.pub
+zzcszx.com
+zzcomm.com
zzcm5.com
zzcm2.com
zzcm1.com
+zzcjxy.comicbc.deicbc.euicbc.jpicbc.lu
icbcalmaty.kzicbcamg.comicbcasia.com
+zzcjby.com
+zzcdsl.comicbcina.com
icbcindia.com
+icbcit.comicbclondon.com
icbcme.ae
icbcmoscow.ru
+icbcmy.com
+icbcnz.comicbcpanama.comicbcparis.fr
+icbcpl.comicbcstandard.comicbcstandardbank.comicbcstandardresources.comicbcstandardsecurities.com
icbcswiss.comicbcthai.comicbcwallet.com
+icbkfs.com
+icbkus.com
icbuy.comicc.link
+icc365.comiccchina.comiccessh.orgiccgame.comiccgame.net
icchaoren.comiccidchaxun.comiccircle.comiccsmart.com
iccsz.comiccvlog.com
+icdeal.com
+icdemi.com
icdn2.comicdream.com
icdt-conf.comice.workice1000.org
+iceasy.com
+icebear.meicebound.ccicecloud-car.comicedropper.comiceflowsoft.comicefoxgame.comicehotisland.comiceinto.com
icekr.comicekylin.online
+icemle.orgicentown.com
+icepie.neticesimba.comicesofts.comicetorrent.orgicevirtuallibrary.com
+icevpn.org
icewingcc.com
+icfans.com
icfcc.comicfgblog.com
icfqs.com
icfusions.com
icgoo.neticgu.comicgvisa.comich8.comichacha.com
ichanfeng.comichang8.com
ichangtou.com
ichangyan.comichanyu.comichaoshangyue.comichaotao.comichaotu.comichat800.comichatcn.comichdata.comicheese.netichehaopei.comichehome.comichenfu.comichengli.com
ichengyun.netichennan.comicheruby.netichezhan.com
ichika.cc
ichinaceo.comichinaenergy.com
ichongdao.comichuanglan.com
ichuangye.comichuanyi.com
ichuguang.comichunqiu.com
+ichunt.com
ichzh.com
iciba.com
iciba.neticicicic.com
icignacmb.com
+icinfo.neticirculation.comicitymobile.comicitypf.com
+icixun.comiciyuan.comicjiemi.comicjs.ink
+ickeep.comicketang.comickey.cc
+ickimg.comiclicash.comiclickstatic.com
icljt.comicloud-power.comicloudcity.comicloudgslb.comicloudnative.ioicloudnews.neticlouds.workicloudv6.com
icloudwaf.comicmartonline.com
+icme14.orgicminer.com
+icmomo.com
icmp.linkicmsdev.com
icnal.com
+icncpc.com
+icnjob.com
icnkr.com
icnpt.comicntv.tvicntvcdn.comico-deli.comicoat.ccicoc.bzicoc.ccicoc.inicoc.meicoc.vc
icocg.comicodelogic.comicoderobot.com
icofchina.com
+icom5g.comicomuimi.comiconfans.comiconfans.org
iconntech.comicoolby.com
icoou.com
icoremail.net
icos8.com
+icosky.comicostapp.comicourse163.comicourse163.orgicourses163.comicourses163.org
icourt.cc
+icp100.net
icp21.com
+icpapi.com
+icpcdn.com
icpcw.comicpdaili.com
icpdf.comicpeexpo.com
icphu.com
+icpisp.neticpkuaiban.neticplishi.comicqmwrhm.com
+icqone.comicrazyidea.com
+icroom.comicrosschina.comics-sec.com
+ics.designicshanghai.comicsisia.com
icslx.com
icsoc.net
icson.com
+icspec.comicstreet.com
+icsuns.com
icswb.com
ict18.com
+ict361.com
ict88.com
+ictcsr.org
+ictdns.funictdns.storeictdns.tech
+ictehi.comictest8.com
icthb.com
+ictlce.com
+ictown.comictpaas.com
ictun.comictuniv.comiculture.cc
icver.com
icvip.com
icxbk.comicxinli.comicxuqjw.comicy-capital.comicz.comiczhiku.com
+iczoom.comid-bear.comid-photo-verify.comid4r.comid4r.net
ida-a.orgidaasksyun.com
+idachu.com
idacn.org
idadt.com
+idafen.com
idailycar.com
+idaima.comidanpianji.comidaocao.com
idatacube.comidataforces.comidatage.comidatagx.comidataway.comidatawz.com
+idayer.comidbhost.comidc-icp.comidc-status.comidc.net
+idc002.com
+idc021.com
+idc027.net
+idc029.com
+idc123.comidc1680.com
+idc180.com
+idc218.com
idc31.com
idc35.comidc4.com
+idc400.com
idc45.com
+idc789.com
+idc917.com
idcay.comidcbest.com
+idcbest.hk
idccenter.net
idcchacha.com
+idccom.net
+idccun.com
+idcdoc.com
idceb.com
idcengine.com
idcfengye.comidcgcloudcs.com
idchh.com
idchz.com
idchz.net
+idcicp.com
idcicpdns.com
idcjf.com
idckx.comidcloudbase.com
+idcnic.comidcoffer.comidcquan.com
+idcsec.com
+idcser.com
idcsh.comidcsmart.com
idcsp.com
+idcspy.com
+idcspy.net
idcss.com
idctq.com
idcug.com
idcum.net
idcun.com
idcvendor.com
+idcvip.net
idcwn.com
idcwp.com
idcys.com
idcyunwei.orgidczone.netidd1.com
idea-king.orgideabody.comideacarbon.orgideacms.netideagou.com
idealbags.comidealcontrol.comidealeer.comidealjj.comidealseed-wh.comidealshanghai.comideanote.ccideapool.tvideappt.comideazhao.comideebank.comideepin.comidejian.comidejian.netiden123.comidesktopcal.comidevbase.com
idevz.org
idgvc.com
idianchou.comidianfa.comidiankj.comidianshijia.com
idigi.netidlegog.comidloves.com
idmzj.com
+idn100.com
+idname.com
idnscloud.comido-love.com
+ido512.com
+idoacg.comidocbank.com
idocv.com
idodb.comidol001.comidolmoba.comidolranking.info
+idolyx.comidom.me
idong.renidongde.com
idongdong.comidongmai.comidongniu.com
idonguapi.comidooshu.comidosend.comidotools.comidoupiao.com
+idouqu.com
+idourl.comidouyinliving.comidouyinpic.comidouyinstatic.comidouyinvod.com
+idouzi.com
+idoyun.comidqqimg.com
idreamsky.comidreamsoft.comidrools.com
idrwl.com
idscn.net
idshi.com
idsky.net
+idspub.netidsuipai.com
+idtcdn.comidtechwh.comidu9.com
iduba.comidukaqi.com
iduo8.com
iduochong.comiduodou.comiduokan.net
idwzx.com
idzmb.com
ie515.com
ie525.com
ie815.com
ie915.com
ie935.com
ie977.com
ieasn.com
+ieasou.comieasy123.com
ieasytech.comieayoio.com
iecdn.com
+iecidc.com
+iecity.comiecnews.com
iecnu.com
+iecool.comiecworld.com
ieduchina.comieechina.comieee-jas.netieee.org
ieeepower.comieeewifi.com
ieepa.org
+iefang.com
+iefans.net
iefrd.com
+iegcom.com
iegee.netiegourl.com
ieisystem.com
iejiu.comieliulanqi.netieltsabc.comieltschn.comieltsonlinetests.comiemailforce.comiemblog.comiemouepk.comienglish.storeienjoys.comienjoys.mobi
iepcn.com
+iepose.com
+ieppcn.comieqkypcq.com
iesdouyin.com
iesdouyin.net
ieshs.com
ieshs.net
ieshu.comieshuodong.netieshuoshan.comieshuoshan.net
iessay100.comietdata.comietheivaicai.comietheme.comiewb.net
iewie.org
+iewoai.com
iewzx.comiexpress123.comiexx.com
ieyecloud.com
iezuo.com
+ifabao.comifabiao.comifaclub.comifanbei.comifangarden.comifangka.com
ifanr.comifanr.inifanrcloud.com
ifanrprod.com
ifanrprod.netifanrusercontent.com
+ifanrx.comifareast.comifatrabbit.com
+ifaxin.com
+ifaxin.orgifconfig.cc
+ifdian.net
+ifedge.comifeehei.xyzifeilian.com
+ifeimo.com
ifeng.comifengcdn.comifengcu.comifenghui.comifengimg.comifengli.com
ifenglian.com
ifenglife.com
+ifengo.comifengpai.comifengqun.comifenguo.comifengweekly.comifengwoo.com
+ifensi.com
+ifenxi.comifenxiang.cc
ifere.com
ifeve.com
ifindever.comifintechnews.comifireeye.comifireflygame.com
ifiretech.comifitbox.com
+ifjing.comifkz256x3p.com
+iflow.work
iflyaiedu.comiflyauto-solution.comiflydatahub.comiflydocs.comiflygse.comiflyhealth.comiflying.comiflyink.comiflyiot.comiflynote.comiflyread.comiflyrec.comiflyresearch.comiflysec.comiflytek.com
iflytekin.comiflytektstd.comiflytoy.comifma-china.orgifmicro.com
+ifmobi.comifmtech.com
+ifnews.comifonelab.net
+ifonts.com
iforce-ad.comiforce-media.comifoxfactory.comifqcihp.comifreecdn.com
ifreecomm.comifreedom001.com
ifreetalk.comifreeurl.comifreewallpaper.comifresh.mobiifromvr.com
ifseclabs.com
+ifshot.com
ifszf.comifundstore.comifunmac.comifutest.comifutureworks.com
+ifuyun.com
ifxsb.com
ifxtx.comifzxs.cc
ifzzw.com
igaichong.comigame007.comigame58.comigamecj.comigandan.comiganggu.com
igao7.com
+igaoda.com
igaosheng.com
+igbill.comigckgrmf.sbs
igdzc.comigea-un.org
igeak.comigeciku.comigeekbar.comigeidao.com
+igelou.com
igenetech.comigengmei.comigeshui.comigetget.comigevin.info
iglda.com
iglqh.com
+igo180.com
igo52.com
igome.com
+igomkt.com
+igooma.comigoomall.com
igoyx.com
+igptex.comigreatdream.com
+igs35k.comigta.vip
igtm-a101.com
igtm-b101.com
igtm-c101.com
igtm-e101.comigtm-meeting-tencent.comigtm.pub
+iguaka.com
iguangdiu.comiguanyu.comiguazutraffic.xyz
+iguder.com
+iguitar.meiguming.netigumo.cciguoguo.netiguopin.comiguoplay.comiguowan.comiguoyin.comiguxuan.com
+igwfmc.comigxbaidu.net
igxzm.com
ihacksoft.com
+ihaier.com
+ihaima.comihaique.net
ihaiu.comihanbridge.comihang360.comihanghai.comihanhua.comihani.tvihanshi.comihaohaoxuexi.com
+ihaoma.icu
+ihaoxi.comihaozhuo.com
+ihappy.vipihappystudio.com
ihasl.comihdt.tv
ihdty.comihealthcoming.com
ihei5.com
+iheima.com
+iheima.net
ihello.cc
+ihelpy.net
+ihemuu.com
ihengheng.com
+ihenji.com
ihepa.comihggccampaign.comihint.me
+ihisce.com
+ihitui.com
+ihitun.comihkk.netihlimtv.com
ihoey.comihomefnt.com
ihomesoft.netihongde.comihongma.comihongmeng.techihongpan.com
ihongqiqu.comihonker.comihotchip.comihou.com
ihowguide.com
+ihr360.com
ihrscloud.com
ihst8.comihstatic.comihtcboy.comihtmlcss.comihuaben.comihuan.me
ihuanling.comihuanque.comihuayou.netihuazhan.netihui.comihuidian.com
+ihuigo.comihuipao.comihuisida.net
+ihuman.comihumand.comihungyi.comihuntto.com
+ihuoli.comihuoqiu.comihuoshanimg.comihuoshanlive.comihuoshanstatic.comihuoshanvod.comihuoyan.com
+ihupai.com
ihupo.com
ihuyi.com
ihwrm.com
+ihx.ccihxlife.com
ihying.cc
ihykb.com
ihypo.net
ihzzy.com ii.td
ii010.com
ii090.comii35.comii77.comiianews.comiiaq.net
iibechina.comiibq.com
+iicats.com
iicha.comiicheese.comiicp.net
iidns.com
iigs9.com
iii80.com
+iiiaaa.com
+iiiimg.com
iiijk.comiiiview.netiijjc5.lifeiijmhghty.shop
iikanfang.com
+iikeji.comiikuzhan.comiikx.comiinorii.comiiolink.com
iiong.comiipcloud.comiipiano.com
iirii.comiirpwigs.comiis7.comiis7.netiis8.comiischool.comiisfree2.comiisp.comiispbdy.comiissbbs.comiissnan.com
+iitang.com
iitcp.com
iitol.com
+iituku.comiivd.net
iivey.com
iiycy.comiiyi.comiiyibbs.com
+iiyiyi.comijac.net
+ijh.ccijia120.comijia360.com
+ijiaji.comijiandao.com
ijiangyin.comijianji.com
+ijiatv.com
+ijicai.comijie.comijiebao.comijiedian.com
+ijiela.comijindun.comijingdi.comijinshan.com
ijinzhuan.com
ijishu.ccijiujiao.com
+ijiwei.com
+ijiwen.com
+ijizhi.comijjnews.com
ijnqc.com
+ijq.tvijsi.org
ijson.comijsp.netijuanshi.com
ijuer.comijuhepay.comijunhai.comijunxun.com
ijuwu.comijuzhong.com
+ijycnd.comijzhang.com
ik123.comik3cloud.comikadanismanlik.com
+ikafan.comikaixun.com
ikaka.comikanchai.comikandian.com
ikang.com
ikantu365.comikaoguo.comikaolaa.com
+ikaros.run
+ikb.vcikcd.net
+ikcest.org
ikcrm.comikcw.comike-global.comikebukuro777.org
+ikecdn.comikeguang.comikemeng.com
ikepu.comiketian.comikhimalayaniq.com
ikjds.com
+ikjtao.com
ikjxc.com
ikjzd.com
ikmoo.comikmt.net
iknow1314.com
+ikonfx.com
ikongjian.comikongjun.com
+ikonke.com
+ikoori.com
ikozn.comikqtcbva.com
iksea.comiku8.comikuai8-wifi.com
+ikuai8.comikuaicai.comikuaimi.comikuajing.com
ikuju.com
+ikunac.com
ikunlunaq.com
ikupan.meikvoaxzw.com
+ikx.meikyy.cc
+ikzybf.com
+ilab-x.comilabilab.com
+ilaisa.comilaitui.comilangqu.com
+ilanni.com
+ilanx0.netilanyao.comilanzou.comilaoyou.com
+ilaw13.com
+ilaw66.com
ilawpress.comilazycat.comileapcloud.com
ileci.comileedarson.comileehoo.com
ileju.comileopard.comileshua.com
+ilewan.comiliangcang.comilianwo.comilianyue.comilibrand.comilidubj.netilifesmart.comilikemanga.com
ilinekesy.comilingdai.com
+ilinki.net
ilinkmall.comilinkone.com
ilinksure.comilinuxkernel.com
+ilinye.com
+ilinyi.net
+ilishi.com
+ilishi.netiliuliu.com
+iliutu.comilivehouse.comilixiangguo.com
iliyu.com
+ilkeji.comilll.xyzillumpaper.com
ilmgq.com
iloft.xyz
+ilohas.com
iloli.bid
iloli.xinilongre.com
ilongterm.comilonhoo.comilove.bf
iloveanan.comilovefishc.comilovey.live
ilovezuan.comilsungf.comiluckysf.netiluezhi.com
+ilufan.comiluhang.comilustrepro.comiluvatar.aiilux.aiilv6.com
ilxdh.com
ilxtx.com
+ilydjk.com
+ilz.me
im-cc.com
im-ch.com im.ci
im286.com
im286.netim2maker.com
im323.com
im520.com
im577.comim5i.comim9.com
+imaccn.comimachina.comimaegoo.comimageaccelerate.comimageedu.comimagehub.ccimagelol.comimageoss.comimageplusplus.comimageplusplus.netimagepy.orgimagerjt.comimages-amazon.comimages-cache.com
+zzcdnx.comimagestoryai.comimagetotxt.comimaginde.comimagineadtech.com
+imahui.com
+imaibo.netimaijia.com
+imaitu.comimalljoy.com
+imalun.com
imandarin.net
imangodoc.com
imao2.com
imaojiang.comimarketchina.com
+imarkr.com
imaschina.comimatlas.comimayitxt.comimbackr.comimbeiyu.com
imblog.in
imbtk.comimcapptest.com
imcec.orgimcn.meimdadui.comimdo.co
+imdodo.com
imdst.com
+imedao.comimedicalai.com
imedp.com
+imeete.com
+imeete.netimeete1.comimeete2.comimeete3.comimeete4.com
imefuture.com
+imeidb.comimeihei.comimeirongyi.com
imeishike.com
imeitools.comimeitou.com
+imelai.comimeme.tv
imeyahair.comimf.orgimfirewall.comimfooww.com
img-space.comimg-sys.comimg.inkimg.run
+zzccom.com
+img005.com
+img168.netimg16888.comimg4399.com
+img4me.com
+img898.comimg8e93zy6bg.comimgbed.link
+imgcdc.comimgcdn2.com
+imgchr.comimgcook.comimgdianying.comimgdianyingoss.comimge.cc
+imgeek.net
+imgeek.org
+imgets.com
imgii.comimgikzy.com
imgkr.com
imglefeng.comimglink.win
imgmarket.netimgo.tvimgscdn.com
imgse.com
+imgsha.comimgsina.comimgsohu.com
+imgtex.com
imgtg.com
imgtu.com
+imgurl.org
imhan.com
imhdr.comimhuchao.com
imiaomeng.comimibaby.netimicang.comimicome.com
+imifun.com
+imiker.com
imile-inc.comiminisd.comimishare.com
+imitui.comimixpark.comimjiayin.com
+imkero.netimkevinyang.com
+imkira.com
imlaidian.com
+imlazy.inkimlianai.comimliuyi.comimmfast.comimmi520.comimmiexpo.comimmivip.comimmolvapro.com
+immomo.comimmomogame.comimmotors.comimmufeng.comimmusician.com
+imnerd.orgimnight.com
imnks.comimobile-ent.com
+imobon.comimochen.com
+imoduo.comimoe.me
imoe.tech
+imoeer.com
+imoemh.com
+imofan.comimoffice.com
imohu.com
imoke.org
+imomoe.comimoo.com
imooc.com
+imoocc.comimoonfm.com
+imopan.com
imosi.com
+imotao.comimou.com
+imoxiu.comimp3.netimpcochina.comimperfectionstudio.comimperial-vision.comimperialsprings.comimpk.ccimpnails.comimportingtochina.comimpratec.com
impta.comimqianduan.comimqq.com
+imququ.comimquzan.comimrfresh.com
imrobotic.comimsharecenter.comimshu.ccimshusheng.comimsilkroad.com
imsle.com
imspm.com
+imsuda.com
imsun.net
imsxm.com
+imtuan.comimudgame.comimugeda.com
imuke.com
imummybiz.comimuo.com
imvictor.tech
+imwaco.comimwallet.comimweb.io
+imweia.comimwexpo.com
+imwork.netimwukong.com
imwzh.com
+imx365.netimxh.com
+imxie.club
imxingzhe.com
+imxpan.com
+imycdn.comimycloud.com
+imydns.netimys.netimyshare.comimyuedu.comimyushu.com
+imzego.comimzhanghao.comimzhongxin.comimzhuomo.comimzy.ink
+in-cen.comin-driving.com
in-en.com
+in-int.com in.th
in001.comin66.com
+in6way.com
in800.com
in853.com
in955.com
in9ni.com
inabr.com
inanguapi.cominanrenbang.cominbeing.netinbilin.cominbooker.com
+inboyu.com
+inc365.com
+incake.netincensechina.cominch.red
inchitech.com
+incker.comincloudexpo.comincopat.com
incsg.cominctrip.comind-app-comp.comind-map.com
+ind9ed.comindexea.comindexedu.comindexedu.netindexfor.funindexmob.com
+indics.comindielight.net
indienova.com
+indier.com
indmi.comindochinatraveladvisor.comindogiga.comindostarschool.com
+induta.comineisure.cominekoxia.com
inengyuan.cominesa-it.cominetech.funinetgoes.cominetmaster.netinewhope.cominewoffice.com
inewskeji.com
+inezha.cominfarts.netinfertilitybridge.cominfineon-autoeco.com
infini-ai.cominfinisign.cominfinitescript.cominfinity8ball.cominfinitynewtab.cominfinitytab.cominfo-insur.cominfo-monitor.cominfo.cc
+info10.cominfo110.com
+info35.cominfobidding.cominfobigdata.cominfocloud.ccinfocomm-journal.cominfohpc.cominfoier.com
+infong.netinfoobs.com
infoq.cominfoqstatic.cominforbus.cominforguard.netinformrack.cominforsec.orginfosoft.cc
+infovc.cominfowuxi.com
infoxgame.cominframe.mobi
+inftab.cominfuseku.xyzinfyniclick.com
infzm.coming10bbs.com
ingageapp.com
+ingags.comingaoyt.bizingcore.com
+ingdan.com
+ingeek.comingenic.com
+ingkee.comingping.comingping.netingzhong.com
inhdd.cominhe365.cominheweb.cominhuawei.com
ini3e.comini5.cominibiru.cominicoapp.com
inidc.net
+ininin.cominitialview.cominitroot.cominja.cominjectionmachine.cominjoinic.cominkankan.cominkanke.com
inkcc.net
inkcn.cominke.cominke.tvinkeygo.cominkonote.cominkthingprints.com
+inktok.com
+inkuai.com
+inkwai.com
inlaylink.com
+inleft.cominlighting.orginlishui.com
inliuzhou.cominluckcalendar.com
+inmeng.net
inmuu.cominmyshow.cominneed.club
+innocn.cominnocomn.cominnodealing.com
innofidei.cominnohere.cominnojoy.cominnolcon.com
+innomd.orginnomddesign.com
+innopro.cc
innotechx.cominnotron.cominnov-xsystem.cominnovatedigital.cominnoveronline.com
innovidcn.cominnovisgroup.cominnvitor.cominoherb.cominoneh5.cominoteexpress.cominovance-automotive.cominovogen.com
inpla.netinplayable.com
inputmore.com
inqan.com
+inrice.cominrugao.cominsagee.cominsarticle.com
inshotapp.cominsmoin.cominsnail.com
+insneu.com
insp.loveinspeed.bizinspirecloud.cominspmobi.com
+inspur.cominspurcloudoss.cominspuronline.cominspurpower.cominsta360.cominstafogging.cominstallgreat.cominstome.cominsun-china.com
inswindow.com
insxz.cominsytone.comint-agri.comint2018.com
+int800.com
+intaek.com
intalidvp.comintcache.netintcredo.com
+intdmp.comintecol-10iwc.comintegrity-funds.comintekey.comintel-space.comintelcupid.comintelligen.ltdintelligentmanufactory.comintelvisioncn.cominter-credit.net
inter1908.netinteractivebrokers.hkinterface003.comintergreat.cominternationalbrand.netinternbird.cominternetke.cominternettrademark.cominternetworld.cloudinterotc.netintertid.cominterval.imintimeplus.comintimerent.comintlgame.com
intlqydd.infointlscdn.comintltencentcos.comintmedic.comintmian.comintohard.comintomod.comintopet.comintostarry.comintovfx.com
+intowz.comintozgc.com
+intple.comintramirror.comintsavi.comintseamultiply.com
+intsig.netintsweet.com
+intwho.cominudpbi.com
+inuobi.com
inuu6.com
inuyasha.loveinverter.soinvescogreatwall.cominvest-data.cominvestgx.cominvestoday.netinvestorscn.cominveststkitts.orginvocean.com
+invoee.cominvzible.cominwaishe.com
+inwatch.cc
+inxedu.com
inxni.cominzone-auto.cominzotek.comio55.com
+ioa365.com
ioage.comiocdn.cciocrest.com
ioe-times.comiofange.comioffershow.comioffice100.comioikypzw.comioiosafe.com
ioiox.com
ioiox.net
+iok.laiol8.comioneball.com
+ionewu.com
ionichina.com
+iooeoo.com
+iooqoo.comiooyfeaq.sbsiop.orgiopenhec.comiophthalmology.netiopiopl.com
ioqoo.com
iorca.netios-auto.net
+ios222.com
ios98.com
+iosask.com
ioser.fun
iosfengwo.com
ioshacker.netiosi.vip
iosmu.com
iosre.comiosrxwy.com
iosvip.cc
ioswg.comiosyyds.com
ioszn.comiot-online.comiot-tencent.comiot.moeiot0.netiot1001.com
+iot101.com
+iot688.comiotachem.com
+iotbay.comiotfair.net
iotku.com
+iotmag.comiotmore.comiotmrvr.com
+iotpai.com
iotrouter.comiots.vip
iotweixin.com
+iotwrt.comiotxing.com
iotxx.com
+iouluo.com
+iousas.xyz
+iowiki.com
+ioxray.comioxunyun.com
+ip-cdn.comip-guard.net
+ip-soc.com ip.la
ip008.com
ip138.com
ip192.comip33.com
+ip3366.net
ip518.comip66.net
ip669.comip77.netip87.comipackbynewstep.comipadown.comipadump.comipadview.comipaiban.com
ipail.comipalfish.comipalmap.comipampas.com
+ipanda.com
+ipanda.netipandao.comipandata.comipangcai.comipanocloud.com
+ipanta.comipaochaxun.com
+ipaomi.comipaotuan.comipapark.com
+ipason.comipay.so
ipaylinks.comipbaohe.com
+ipc-sh.net
+ipcfun.comipchaxun.comipchaxun.net
+ipcmen.com
+ipcodm.comipcorecatalog.comipctest.comipcwifi.com
ipcxz.comipdaili.comipdatacloud.com
ipddz.comipdfmaster.comipdftool.com
+ipdsms.comipduoduo.ccipduoduo.comipdz.me
+ipease.net
ipehr.com
+ipehua.comipeijiu.com
ipengchen.comipengtai.comipengtao.comiperson.xyz
+ipetct.com
ipexp.com
ipfeibiao.com
ipfen.comipfsbit.com
+ipgoal.comiphonediule.comipin.com
+ipinba.comipingyao.comipip.netipjingling.comipjisuanqi.com
ipktv.comipku.comiplascloud.comiplay11g.comiplay365.comiplaypy.com
iplaysoft.comiplcnetwork.comiplusmed.com
ipmay.comipmi.cc
+ipmost.comipmotionmc.com
ipmph.com
+ipo.hk
+ipo.laipo1688.comipo3.com
+ipoceo.comiposeidongame.com
ipple.net
ipplus360.comippzone.comipqcrhf.com
+ipr114.net
+ipr123.com
+iprchn.comiprdaily.com
iprdp.netipresst.com
+iprtop.com
iprub.com
iprun.comips8.com
+ipsebe.comipshudi.com
+ipsmap.com
ipssh.netiptalent.com
iptrm.comipts.com
+iptvlm.comipuu.net
ipv4.hostipv4dns.com
ipv6-test.comipv6dns.com
ipv6radar.comipv6testingcenter.comipyy.com
ipzps.comipzuiduo.com
+iq.com
iq123.comiqalliance.org
+iqbuud.lol
iqcrj.com
+iqdedu.com
iqdii.com
+iqdnet.com
iqhmh.com
iqianggou.comiqianjin.comiqianyue.comiqidian.comiqihang.com
iqilu.com
+iqilun.comiqinbao.com
iqing.comiqingguo.comiqingua.comiqinzhou.com
iqiqz.com
iqishu.la
iqiyi.comzzc9.com
iqiyiedge.com
iqiyiedge.netiqiyih5.comiqiyipic.comiqoo.com
iqshw.comiqtianshanmw.comiquanba.comiquanben.netiquanfen.comiquanwai.comiquaveizeeru.comiquegui.com
+iquhuo.comiquickfish.com
iquicksee.comiqujing.com
+iqunix.comiqunix.storeiqupdate.comiqushai.com
iqxbf.com
+iqxedu.comiqycamp.comir7c5l0b7ezzh1lq.asiairain.iniranmahanair.comiranshao.comiraoping.com
iraye.net
+ircmnr.comireader.comireader.liveireader.mobiireadercity.comireaderm.comireaderm.net
ireadweek.comireadyit.com
irealbest.com
irealcare.com
irealtech.comirecyclingtimes.com
iredwhale.comireeda-tech.comirelandvisacenter.comiremaker.com
iremax.hk
+iremax.netiresarch.comiresearchad.comiresearchchina.comirest.tvirestapp.com
irexy.com
+irf.cciridescent.ink
+irising.meirlianmeng.com
+irober.comirockbunny.com
+iroing.comironfishchina.comirongbei.comironghui.comirootech.com
irouteros.com
irskj.com
irsnp.comiruanmi.comiruidian.comiruixing.com
+irukou.comirunner.mobi!irvinevillageorthodontics.comirwtghk.comis-programmer.comis36.comisay365.com
+isay365.hkisay365.netisay365.orgisayabc.com
+isbdai.orgisd.com
isdox.com
isdpp.com
iseafood.shopisealsuite.com
+isecsp.com
+iseead.comiseedog.comiseekids.comisenruan.com
+iseoku.comisf.ink
isfashion.comisfirst.netisgo.com
+ish168.comishaanxi.com
ishaibiao.com
+ishala.com
+ishang.netishanghome.com
ishangman.comishangtong.comishangu.com
ishansong.comishaohuang.comisharebest.comisharepc.comisheely.com
+isheet.net
+isheji.comisheji5.com
ishell.ccishenbao.com
ishengxue.com
ishenping.comishenyou.comishipoffshore.comishoujizhuan.com
ishouping.comishowchina.com
+ishowx.comishubao.orgishugui.comishuhui.comishuhui.net
ishuirong.comishuiyun.comishumei.comishuocha.com
+ishuqi.comishuquge.comishuquge.laishuquge.org
isigu.com
+isijiu.com
+isilent.meisilicontech.comisiluke.netisiluke.orgisimcere.comisinosig.comisixiang.com
+isixue.com
+isjike.com
+iskpay.comiskryou.comisky000.comiskyjoy.com
iskylinem.comiskyone.comiskysoft.com
islandren.comislhavdq.sbsisli.cc
islide.cc
isluo.comismartgo.comismartware.comismdeep.comisme.pub
+ismisv.com
ismx8.comisnnapp.comiso-est.comiso-iso9000.comiso2004.comiso37001rz.com
iso9001rz.comisobar.tech
+isocgw.netisoftstone.com
isogx.comisolves.comisoo.cc
isoqh.comisorange.comisorenzheng.org
+isotoo.comisoucai.com
+isoudy.com
+isoyes.comisoying.com
isoyu.com
isozhijia.com
+isp.cxispcache.netispecial.xyz
ispqcloud.com
ispservice.cc
isrcb.com
isres.comisscloud.comissconline.com
issedu365.com
issicooee.com
issjj.com
issks.com
+ist-zl.comistimer.com
+istpei.comistrongcloud.comistudyinchina.org
istylepdf.comisuanyun.comisudaji.com
+isuike.com
+isummi.comisun.orgisurecloud.net
+isuzhou.me
isvee.com
isvjcloud.com
isvjd.com
isvup.com
iswbm.com
+isweek.com
iswifting.comiswx.net
isxtv.comisyour.loveiszy.xyzit-bound.comit-crazy.net
it-hr.net
it007.com
+it0772.netit120.cc
+it1352.com
it163.com
it165.net
it168.com
+it2021.com
+it2168.com
it322.com
it376.com
it399.com
it478.com
it506.com
it525.com
it528.com
it578.com
it610.com
it666.com
it689.comit69.net
it707.comit7t.com
it918.com
it985.comit9g.comita-alliance.com
itab.link
itaic.orgitailai.comitaiping.com
itakeeasy.comitakutf.comitalentclc.comitalyvisacenterd.com
itamt.com
itangbole.com
itangyuan.comitanlian.com
+itanzi.comitao.com
+itaoke.org
itaokecms.comitaored.comitaotuo.com
+itavcn.com
itbaizhan.comitbegin.com
+itbilu.com
itblw.com
+itboth.com
+itbour.com
itboy.net
+itbulu.com
itbuy.com
+itbyte.net
+itcdlf.com
itchaguan.comitcm.comitcn.ccitcodemonkey.com
itcpn.net
itctoy.online
itczh.comitdabao.com
itdai.comitdaogou.com
itdcw.comitdevnow.com
itdks.com
itdog-dns.com
itdog.com
+itdog.plusitdoisp.com
+itdoor.net
itdos.com
itdos.netiteblog.comitechate.com
+itedou.com
iteer.netitek-training.comitellyou.comitensoft.comiter168.com
+itest.info
itetc.orgitexamprep.com
iteye.comitfactormodels.com
itfanr.ccitfaster.com
+itfeed.com
itfenghui.com
itfly.net
itfsw.com
itfw5.comitgd.netitgeeker.net
+itgege.comitgemini.net
itgochina.com
itgoodboy.com
itgsa.comitgzsfxx.comithaowai.com
+ithard.com
+itheat.comitheima.comitheima.netithenticatecn.com
ithey.com
+ithome.com
+ithome.net
ithor.com
ithor.netithothub.com
ithov.comithuangw.com
itiankong.com
itiankong.net
itianliao.comitiexue.net
+itiger.comitigergrowth.comitigergrowtha.com
+itilxf.com
+itilzj.comitingwa.comitit.io
itjoy.net
+itjspx.com
+itjuzi.comitkoudai.comitlu.orgitlz.netitmakes.comitmanager.clubitmanbu.com
+itmind.netitmoocs.com
itmop.com
itmqk.com
itmsm.com
+itmuch.com
+itmuke.comitmyhome.com
itnan.netitnb.cc
itnec.orgitnihao.com
itnpc.com
itnxs.com
itoec.orgitogame.com
itoka.com
+itokit.com
+itokoo.comitonghui.com
itonglian.comitopcoupon.comitopers.comitophis.comitopplay.comitopsdk.com
+itotii.com
itotolink.netitouchchina.com
+itougu.com
+itoumi.comitoutiao.coitoutiaoimg.comitoutiaoliving.comitoutiaostatic.comitower-soft.com
+itoyfx.com
itpeo.net
itpon.com
itpow.com
itppi.org
itpub.net
itpux.com
itpwd.com
itqaq.com
itqlz.com
itrace.cc
itrid.com
itrip.comitrolexshop.com
itruelife.com
+itruke.com
itrus.comitruscloud.comitrusign.comitry.com
+its114.com
+itsapu.com
itsdz.com
+itshai.comitshubao.comitsiwei.comitsk.com
+itslaw.comitsmephoto.net
+itsoku.com
itsto.com
itsun.com
+itsvse.com
ittellyou.com
+ittime.comitto100.comittribalwo.com
ituad.comituchong.com
itugo.com
+ituite.com
+iturco.comitutu.tvituu.net
ituun.com
ituut.com
itvbox.cc
itvcn.com
+itvssp.comitwanger.com
itwlw.comitwork.clubitwulin.comitxe.net
+itxia.club
itxst.com
itxueyuan.com
+itxuye.comityears.comityg.com
+itying.com
+ityizu.com
itylq.com
ityouknow.com
+ityun.tech
ityxb.comitzhengshu.comitzhimei.com
itzhp.com
itziy.com
itzjj.comitzm.com
itzmx.com
itzmx.netiu18.comiu95522.com
iuban.com
+iucars.com
iucdn.comiuctrip.com
+iufida.com
+iuhtg8.com
+iuinns.com
iuiu.site
iujkm.com
iuktb.com
+iumemo.comiuni.com
+iuoooo.com
+iuplus.com
+iusmob.com
+iuynfg.comiv06.comiv2i.com
ivali.com
ivanli.ccivaoqph.com
ivban.comivcheng.com
ivd-cloud.comivdchina.orgivemusic.netiventoy.comiverycloud.comivfuture.comivideostar.comiviewui.com
ivipi.comivistang.comivixivi.com
+ivknow.com
ivocaloid.comivolces.comivqamtkr.com
+ivrwan.com
ivsky.com
ivu4e.comivvajob.comivweb.io
ivwen.comivxiaoyuan.comivy-school.org
+ivybaby.me
ivycoffee.com
+ivydad.com
+ivypha.com
+ivypub.orgivyschools.com
+ivysci.com
+ivysun.net
+ivywing.me
iwala.netiwan4399.com
+iwan78.comiwanbei.comiwanboy.com
iwangding.comiwangnan.comiwanoutdoor.com
+iwanws.com
+iwanyl.com
+iwapan.com
+iwasai.com
iwatch365.com
iway-tech.com
+iwc999.com
iwcoo.com
+iwe.la
+iwebad.comiwebchoice.com
+iwecan.netiwecxafv.com
+iweeeb.comiweek.lyiweekapi.com
+iweidu.netiweixiu120.com
iweju.comiwellen.com
iweme.net
iwen1.comiwencai.com
iwenchuan.comiwenson.com
+iwgame.comiwhalecloud.com
+iwhqmk.comiwhr.com
iwin10.cc
+iwin10.netiwingchina.com
iwiscloud.comiwjw.com
+iwmmob.comiwncomm.com
+iwooji.com
+iwopop.comiwordnet.com
iwordshow.com
iwpai.comiwshang.comiwshuma.comiwuchen.comiwurexs.infoiwurexs.netiwurexs.org
iwuyou189.comiwwwwwi.com
+iwxapi.comiwyv.com
iwyvi.com
iwzbz.com
iwztc.com
iwzwh.com
iwzwy.comixacztl.com
+ixbren.netixdc.org
ixdzs.com
ixepu.comixfc.netixgvideo.comixianlai.com
+ixiao9.comixiaochengxu.ccixiatxt.com
+ixiede.com
+ixigua.comixiguan.comixiguapi.comixiguavideo.com
iximo.comixingfei.comixinglu.comixingpan.comixingyan.comixinqing.com
+ixintu.comixinwei.com
+ixinwu.comixinyou.com
ixiqi.comixiumei.com
+ixiway.comixixili.comixizang.comixmu.net
+ixpsge.com
+ixs.la
ixsch.comixsz.comixuanshu.netixuenong.comixueshu.com
+ixueyi.com
+ixueyi.net
+ixunke.com
ixy68.comixzgkzps.comixzzcgl.comiy51.comiyangxi.com
iyaou.com
iyatt.comiyawoqu.com
iyaxi.com
+iyaxin.com
iyaya.com
+iyaya.info
+iyb.tm
iycdm.com
+iycsky.com
iydsj.comiydu.net
+iyeeda.com
+iyeele.com
iyemao.cc
+iyenei.com
+iyeren.comiyincaishijiao.comiyingdi.comiyingji.com
iyint.com
iyiou.com
iyiqi.comiyishengyuan.com
iyitu.com
iyiyu.com
+iyiyun.com
+iymark.comiyocloud.comiyoimar.com
iyong.comiyongpdf.comiyooread.com
+iyoubo.comiyoucai.comiyoudui.comiyouhun.comiyoujia.comiyoujiao.net
+iyoule.comiyouman.comiyouqian.comiyouxia.comiyouxin.comiyouxun.comiyouzhe.com
+iyruan.comiytc.netiyuanpei.cciyuedan.comiyuedian.com
iyuezhang.netiyunbao.comiyunbiao.comiyunmai.comiyunshu.com
iyunv.comiyunxiao.com
+iyunzk.com
+iyuren.com
iyuxiyang.com
+iyxing.com
iyxku.com
iyyin.com
+iyz168.com
izacholsm.comizaodao.com
izazamall.comizb.pubizdatatech.com
+izenith.coizestchina.comizetvetv.com
izgfu.com
izhailong.comizhanchi.comizhangan.com
izhangchu.comizhangheng.comizhaohe.com
+izhaoo.comizhaowo.comizhenxin.comizhihuicheng.netizhihuo.comizhikang.comizhiliao.comizhiqun.comizhishi.comizhixiu.comizhuanfa.com
+izhuce.comizhuose.comizhuyue.com
+izihun.com
iziyo.comizjj.com
izmzg.com
+izobrt.com
izpan.com
izpec.com
izstz.com
+izsvip.comizt8.comiztdtgdo.sbsiztigcpk.com
iztwp.com
iztzq.comizuanla.com
+izuche.com
izuchebao.com
izuchecdn.comizuiyou.comizumicn.comizyz.org
j-dun.comj-gsexpress.com
j-h-k.com
j-smu.com
+j-test.comj0g0.com
j1998.comj1health.comj216kb3i487c9h5.buzzj2ee.cc
j3677.comj3cx.com
j4321.comj5k6.comj66.net
j6n29.com
j6pay.com
j7994.comj881p924q2.comj9dq.com
j9pic.comja-cloud.com
+jaadee.com
+jaadee.net
+jabizb.comjabrehoo.com
jackeylea.com
jackon.me
jackxiang.comjacky-blog.comjackyang.me
jackytong.comjackyyf.comjackzhu.com
jade-home.comjade-museum.com
jadeclass.comjademond.netjadetowerccrc.com
jadyf.com
+jae.sh
+jaeapp.com
+jaecdn.comjaeger-hello.com
+jaeosc.comjafeney.comjaja123.comjajgstx.com
jajjd.com
+jakeai.comjakegame.com
jakehu.me
jalorsoft.comjamanetwork.com
jamcz.comjamidol.comjammyfm.com
+jamoxi.comjampotgames.com
+janbao.net
+jandan.com
+jandan.net
jane7.com
+janezt.comjanmeng.com
janpn.comjanrain.bizjanrainservices.comjapanhr.comjarencai.com
jarhu.com
+jarods.orgjarvisw.comjasolar.comjason-z.comjasongj.comjasongzy.comjasonsemicon.comjasonwatches.comjasperxu.comjava-er.comjava.comjava1234.comjava2000.netjava2class.netjavaapk.comjavaboy.orgjavacui.com
+javaer.xyzjavaeye.comjavafxchina.netjavamilk.orgjavanav.comjavashuo.comjavatang.comjavaweb.shopjavawind.netjavaxxz.comjavazhiyin.com
+javazx.com
+javbuy.xyz
javier.io
jaxcx.com
+jay.tg
jayce.icu
jayfc.comjayfu.tk
jayjw.com
+jayxhj.com
+jazlxs.comjazzyear.com
jb100.com
+jb1000.comjb51.ccjb51.comjb51.net
jbaier023.comjbaobao.comjbb.onejbcz.tvjbddoors.com
jbdkj.com
+jbdown.com
jbelf.com
jbers.com
jbhtp.comjbjc.orgjblogistics.comjboscience.com
jbote.com
+jbpmhk.com
jbpzs.com
+jbryun.com
+jbs-kj.comjbsd008.com
+jbsx88.comjbt.ink
jbtxy.net
jbwtm.comjbxy.comjbzj.comjbzwread.com
jbzyk.com
jbzyw.com
jc-ai.com
jc-dl.netjc-saas.com
+jc0531.com
jc170.com
jc315.comjc35.comjc56.com
jc808.comjc85.comjcancer.orgjcashore.comjcbjbcak.comjcbq.net
jcccw.com
jccmn.com
+jccpay.com
+jccsoc.com
jccug.comjcdd.comjce8.com
jcedu.org
jcf94.com
jcgcn.com
jcgcw.com
jcgjb.comjchat.iojchl.com
jchla.comjchunuo.com
+jchxmc.com
+jcjjwx.com
+jckjsc.comjcku.com
jclab.netjcloud-cache.comjcloud-cache.netjcloud-cdn.comjcloud-live.comjcloud-oss.com
+jcloud.comjcloudcache.comjcloudcache.netjcloudcs.comjclouddn.com
jclouddns.com
jclouddns.netjcloudec.comjcloudedge.comjcloudedge.netjcloudgslb.comjcloudgslb.net
jcloudimg.com
jcloudimg.netjcloudlb.comjcloudlb.netjcloudlive.comjcloudlv.com
jcloudoss.comjcloudresolve.comjcloudresolve.netjcloudss.comjcloudstatic.comjcloudstatic.netjcloudvideo.comjcloudvideo.net
jcloudwaf.comjcloudwaftest.comjcloudwaftest.net
jclps.com
jcmob.net
+jcnano.comjcnk120.comjcno.netjcodecraeer.comjcpeixun.com
jcqzw.comjcrb.comjcsb.net
jcscp.org
jcsfs.com
jcsjt.com
+jcstem.com
+jcsy66.com
jctmj.netjctrans.com
+jcu.cc
+jsjslk.com
jcwgk.com
jcwgo.com
+jcwjdg.comjcwxiao.com
jcyad.com
jcyai.com
jcyes.com
+jcyspt.comjcystny.comjcyx2019.comjczb.vipjczc.vipjczh100.comjczhijia.comjczhiyao.com
jd-88.com
+jd-app.com
+jd-bbs.com
jd-df.com
jd-ex.com
jd-ex.net
jd-fm.comjd-link.com
jd-zd.com jd.cozzbzwlkj.com
+jd.com jd.hk jd.id jd.rujd.shop
jd100.com
jd120.com
jd123.vipjd360.hkjd5.comjd8jd7jcjahcjaskcsksc.com
jdair.net
jdallianz.com
jdapi.comjdb-food.comjdb-ware.com
+jdb100.com
jdbbs.com
jdbhw.com
+jdbjba.com
+jdbpcb.comjdbusiness.comjdcache.comjdcaipu.com
jdcapital.com
+jdccie.com
jdcdn.com
+jdcf88.comjdcloud-api.comjdcloud-api.netjdcloud-edu.comjdcloud-elite.comjdcloud-elive.comjdcloud-livebuy.comjdcloud-mail.comjdcloud-openapi.comjdcloud-oss.comjdcloud-scdn.netjdcloud-scdn.techjdcloud-scdndns.comjdcloud-yd.comjdcloud.comjdcloudcache.comjdcloudcache.netjdcloudcdn.comjdcloudcdn.net
jdcloudcs.comjdclouddns.comjdclouddns.netjdcloudedge.comjdcloudedge.net
jdcloudlb.com
jdcloudlb.netjdcloudlive.comjdcloudlive.netjdcloudnaming.netjdcloudresolve.comjdcloudresolve.netjdcloudshop.comjdcloudsite.comjdcloudstatic.comjdcloudstatic.netjdcloudstatus.comjdcloudstatus.netjdcloudvideo.comjdcloudvideo.netjdcloudwaf.com
+jdcmmc.comjdcmoly.com
jdcontent.comjdcq.net
+jdctky.comjdd-global.comjdd-hub.com
jddaojia.shopjddapeigou.comjddb.netjdddata.comjddebug.com
jddglobal.comjddj.comjddmoto.com
jddtv.com
jddyl.com
jdedu.netjdemall.com
+jdf999.comjdfcloud.com
jdfeijing.com
jdfinance.com
+jdfmgt.com
+jdfryl.com
jdfschool.com
jdfw1.com
+jdgogo.com
+jdgslb.com
+jdgslb.net
+jdgwdq.comjdh.comjdhmediajd.com
jdhuafeng.comjdhyplay.comjdis.org
jdiy.club
jdjingmai.com
jdjinrong.comjdjob88.comjdjrdns.comjdjygold.com
jdkcb.comjdl.com
jdlgw.com
+jdlhpt.comjdlingyu.comjdmk.xyz
jdmwk.com
+jdnews.netjdon.com
+jdongl.com
jdpay.comjdpaydns.com
+jdplay.com
jdpta.com
jds-china.com
+jdsafe.comjdsbnza.com
jdsha.com
jdsmartkf.comjdss.cc
+jdtiot.com
jdtjy.com
+jdtxgc.com
+jdvisa.com
+jdw001.comjdw2.comjdwgame.comjdwl.com
+jdwmfj.comjdworldwide.com
jdwx.info
+jdwxwz.com
+jdwxzp.comjdx.comjdxc.net
jdxfw.com
jdxlt.comjdxyydf.com
jdxzz.comjdy.com
+jdycdn.com
jdyfy.com
jdylb.com
+jdynew.com
jdyou.com
jdypf.comjdzdeyy.com
jdzeduyun.comjdzj.com
jdzjw.com
jdzmc.com
jdzol.com
jdzol.netjdzwang.comjea-asia.com
+jeacar.comjeagine.comjean.cdjeanphy.onlinejeanssalon.com
+jeawin.com
jeawincdn.com
jectronic.comjedi-games.com
jedjk.com
jedoo.com
jeeanlean.com
+jeebei.com
jeecg.com
jeecg.org
+jeecms.comjeee.ltd
+jeejen.com
+jeepay.vipjeeplus.orgjeequan.com
+jeesci.comjeeseen.comjeesite.comjeewong.com
+jeeyaa.comjeffdingzone.comjeffjade.comjeffreyitstudio.comjeffstudio.netjegotrip.com
+jehudf.comjelleybrown.comjellow.clubjellow.sitejellymoo.comjellythink.comjeminay.com
jemincare.comjemydaz.com
jenglishj.comjenno-cn.comjeongen.com
+jeoshi.com
jeqgi.xyzjereh-network.com
jerei.comjeremycn.comjerryzou.comjescard.comjesdatools.com
+jesiro.comjesselauristonlivermore.comjesselivermore.com
jestq.com
+jet-ok.com
+jethoo.comjetionservice.comjetmobo.comjetneed.com
+jetsum.com
+jetsum.net
jev0n.comjewellery.goldjewellworld.comjewelrycustomize.comjewelryseeds.comjewelryshanghai.com
jexus.orgjeyi.comjeywatch.com
jf-biaotw.comjf-motor.com
+jf1898.com
jf258.com
jf311.com
jf900.comjf9p.com
jfapv.net
jfbcb.comjfbuilding.comjfcaifu.com
+jfcdns.com
jfcgf.com
jfcoo.comjfdaily.com
+jfdown.comjfduoduo.com
+jfdzfm.com
jfedu.net
+jfewle.com
+jfgjwl.com
jfgou.comjfh.comjfhzfsn.com
+jfinal.com
+jfinfo.comjfj3419.comjfklqhh.com
jfpal.comjfq.comjfrogchina.comjfsc.comjfshare.com
+jfsmgs.comjfstatic.comjftianshancn.comjfvf855.xyzjfwb.comjfwypay.comjfxiaopaoqi.comjfydgame.comjfyf.ccjfyiyao.com
+jfyskw.comjfz.comjfzhiyao.com
jg058.com
+jg1060.com
+jg1994.com
jgcarbide.com
+jgcgmb.com
+jgchat.net
+jgcqgf.comjgdq.org
jgdun.com
+jgew3d.com
+jgfarm.com
+jgg.hk
jgg09.com
+jggame.net
jggjj.comjghstar.com
+jgjapp.comjgjsoft.comjglm.cc
jgmqc.com
+jgscct.comjgsdaily.comjgtc315.comjguo.comjgvnews.comjgwsoft.com
+jgxlzd.comjgxyai.chat
jgxzy.comjgy.com
+jgyljt.com
jgyun.netjgzx.org
jgzyw.comjh-dzcl.com
+jh-uav.com
+jh3737.comjh3j.comjh8k.comjhaoyou.comjhcb.net
jhcfz.comjhcheku.com
jhcms.comjhctbank.com
+jhdmro.comjhdpower.com
+jhdxjk.comjhedu.tvjhfl.com
jhforever.comjhfsata.comjhgolfcarts.comjhgroup525.com
+jhgtgb.comjhgujia.com
+jhhygl.comjhjt.xyzjhjunda.com
jhkao.com
+jhltsl.comjhm2012.com
+jhmnew.com
jhnsh.com
+jhnsyh.com
+jhonge.net
+jhonse.comjhqshfly.comjhrcbank.com
jhscm.com
+jhscrm.comjhssapp.com
+jhszyy.com
jhtcgroup.com
+jhtmsf.comjhu.edujhuanbao.comjhuishou.comjhwaimai.com
jhwdp.comjhwvjjw.com
+jhxcms.com
jhxms.comjhygame.com
jhyhf.com
jhyongyou.com
+jhypcy.comjhytech.com
+jhzgwx.comjhzhizao.comjhzhuji.com
+jhzpgw.comji-dian.com
+ji-pai.com ji.ciji36.netji7.comji7.netjia.com
jia12.com
+jia360.com
+jia400.comjia86.cc
+jiaads.comjiaapps.comjiabaiwang.netjiabangcnc.comjiabaoyuanlin.comjiabasha.com
+jiaben.com
jiacai001.comjiacaitc.comjiachangshichutieqi.comjiachong.comjiadafoods.comjiadapaper.comjiadingjiaxiao.comjiadingqiang.com
jiadounet.comjiaduijiaoyou.comjiaduobao.rujiae.comjiaenderen.comjiafang168.comjiafenqi.comjiagedan.com
+jiagle.com
jiagouyun.com
jiaguhome.comjiagulun.comjiagumen.comjiaguowenhua.comjiaguwenxf.com
+jiaheu.comjiahuacinema.comjiahuaming.comjiahuanweiye.com
+jiahui.comjiahuism.com
jiain.net
jiaji.comjiaji28.netjiajia-china.com
jiajia.tvjiajiakt.comjiajianhudong.comjiajiao114.comjiajiaoban.comjiajieyujinshu.comjiaju.cc
jiaju.comjiajuimg.comjiajuketang.comjiajumi.comjiajurenwu.comjiajuservice.comjiajuwo.comjiajuzhuliu.com
+jiakao.comjiakaobaodian.comjiakaodashi.comjiakaokemuyi.comjialanling.comjialaxin.ccjialebao.cc
jialei168.com
+jialez.comjialiangad.com
jialianzg.comjialidun.comjialinep.com
jialingmm.net
jialiwood.comjialiyoukuang8.comjialongsports.comjialvzc.com
jiamei123.comjiameng.com
jiamengdp.comjiamengfei.comjiamiantech.com
jiaminghi.comjiamingwenhua.com
jiamisoft.comjian-jie.comjian.net
+jian27.comjianada-qianzheng.comjianai.love
jianai360.comjianavi.comjianbaizhan.comjianbaolife.comjianbihua.cc
jianbihua.com
jianbihua.orgjianbihua360.comjianbihuadq.comjianbing.com
+jianbo.funjiancai.comjiancaik.comjiancepaper.comjianchacha.com
jianchihu.netjianchuangwang.com
jiandaima.comjiandan.netjiandantianqi.comjiandanxinli.comjiandaopay.comjiandaoyun.comjiandati.comjiandiao.comjianeryi.comjianfei.comjianfei.net
jianfeiba.comjianfeibaike.comjianfeidaren.comjianfengstudio.comjiang11.com
+jiang7.comjiangbeijituan.comjiangbeishuicheng.comjiangchaochina.comjiangcp.comjiangduoduo.comjiangguimei.asiajiangguo.netjianghaiqu.netjianghaosm.comjianghehuagong.comjianghui.xyzjiangjiaolong.comjiangjiuren.comjiangjizhong.comjiangkk.comjianglinminingindustry.com
jiangmama.netjiangmin.comjiangongdata.com
jiangongw.comjiangpaipinpai.comjiangpinjiangxin.comjiangqiaomuye.comjiangqimeixue.comjiangque.com
jiangruyi.comjiangshancpa.comjiangshanlihong.comjiangshi.orgjiangshi99.comjiangsugqt.orgjiangsugwy.orgjiangsumobile.com
+jianguo.tvjianguopuzi.comjianguoyun.com
jiangwang.netjiangweishan.comjiangxianli.comjiangxinstu.com
jiangxiol.comjiangxueqiao.comjiangyan.tvjiangzidushu.comjiangzikanshu.comjiangziyuedu.comjianhangcaifu.comjianhaobao.comjianhen.netjianhill.comjianhui.org
jianianle.comjianjian.tvjianjiaobuluo.com
jianjutec.comjiankang.comjiankang123.netjiankanghebei.comjiankangju.comjiankangsn.comjiankangyouyi.com
jianke.cc
+jianke.com
+jianke.netjiankesw.comjiankong.comjiankunchina.com
+jianlc.com
+jianlc.netjianli-sky.com
+jianli.comjianli88.comjianli9.comjianliao.com
jianliben.com
jianliduo.comjianlika.comjianlisheji.com
jianlixiu.comjianloubao.comjianlow.com
+jianlw.comjianmeng.netjianmite.com
+jianmu.run
jianmuhub.com
jianniang.comjianpaimeiye.com
jianpian.infojianpu2.comjianpu8.comjianpu99.netjianpuw.com
jianq.comjianqi88.com
jianqi88.mobijianqi88.netjianqiaochina.comjianqiyl.comjianran360.com
jianshe99.com
jiansheku.com
jianshen8.comjianshenmi.comjianshiapp.comjianshiduo.comjianshionline.comjianshu.com
+jianshu.iojianshu.techjianshuapi.comjianshukeji.com
+jiansu.orgjiansuji001.comjiansujihm.comjiantufuwu.comjiantuku.comjianwang360.comjianweidata.com
jianweisn.com
jianweitv.comjianwenapp.comjianxi-materials.comjianxinyun.comjianxiyasi.comjianyanjia.comjianyewx.comjianying.comjianyixinli.com
jianyu360.comjianyujiasu.com
jianyuweb.com
+jianyv.com
jianzeppt.comjianzhan110.comjianzhan580.comjianzhanbao.netjianzhangongsi.comjianzhi8.com
jianzhian.comjianzhibao.comjianzhidou.comjianzhikeji.comjianzhimao.comjianzhiwangzhan.comjianzhiweike.netjianzhiyixin.comjianzhong-edu.comjiaoben.net
jiaobu365.com
jiaobuser.comjiaochengji.comjiaochengzhijia.com
jiaoda306.comjiaodian.pub
+jiaodj.comjiaodong.netjiaofei123.comjiaohuilian.comjiaohusheji.net
jiaojiang.com
+jiaokf.com
jiaoliuqu.comjiaomai.com
+jiaoman.ccjiaonan.netjiaonizuocai.comjiaoping.comjiaoqiuqingxi.netjiaoshoubang.comjiaoshouhuayuan.comjiaoshouwang.com
jiaow.com
+jiaoyf.comjiaoyian.com
jiaoyibao.com
jiaoyimao.comjiaoyin.comjiaoyisuo.co
jiaoyixia.com
jiaoyizhu.com
jiaoyu361.comjiaoyuangroup.com
jiaoyudao.com
jiaoyumao.comjiaoyuwo.comjiaoyuz.com
+jiapin.comjiapu.tv
jiapujidi.comjiapuvip.comjiaqianglian.comjiaqianlee.comjiaqilixiang.xyz
+jiaren.orgjiarendress.com
jiarenvip.comjiarenzs.comjiaronghuahome.comjiasale.com
+jiasaw.comjiashejianyan.comjiashiguoji168.comjiashuangkuaizi.comjiashuba.comjiashule.com
jiasou.ccjiass.cc
+jiasu.work
jiasubook.comjiasucai.comjiasufei.comjiasuhui.comjiasule.comjiasule.netjiasule.orgjiatejijin.comjiatengflycdn.comjiatianxiazhuangshi.com
+jiatop.com
+jiatui.com
jiatx.com
+jiawei.xinjiawentrans.com
+jiawin.comjiawonongye.comjiawuzhanzheng.orgjiaxianggame.comjiaxianghudong.comjiaxiangxm.comjiaxiao100.comjiaxiaozhijia.comjiaxiaozhilian.comjiaxichina.netjiaxincloud.comjiaxingren.comjiaxinxuetang.comjiaxiweb.comjiaxuejiyin.comjiayans.net
+jiayaw.comjiayi56.com
jiayin618.comjiayinjd.comjiayouhaoche.comjiayouxueba.com
+jiayu.yogajiayu0x.comjiayuan-law.comjiayuan.comjiayuanzhang.com
jiayudata.com
jiayuehua.comjiayuhongwedding.comjiayusx.comjiazhao.comjiazhao7.com
jiazhi.onlinejiazhichem.comjiazhongkeji.comjiazhoulvke.com
jiazhuang.comjiazhuang6.comjiazile.comjiazunwj.com
jiazuo.cc
jibai.comjibao.onlinejibencaozuo.comjibi.netjibing57.com
+jibite.funjicaibao.com
jicaifund.comjicaixinke.comjice.io
+jiceng.orgjichangbus.comjichangdaba.com
jiche.comjicheng.netjichengzao.netjichuangke.com
+jiclip.com
jicon.net
jidacheng.com
jidaihome.comjidanpu.comjidantuoshebei.com
jidao.renjidaola.comjide.comjidekan.com
+jideos.comjideshe.comjidi.com
jidian.imjidianwang.com
+jidivr.com
jidiw.comjidujiao.com
jidujiasu.com
+jie-wu.comjieanjiaotong.comjiebaodz.comjiebide.xin
+jiecao.comjiechengcehui.comjiechengcloud.comjiediankeji.comjiefadg.comjiefanglinli.net
jiefu.netjiefuku.comjiegames.comjiegeng.com
+jiegon.com
jiehun021.com
jiehun027.comjiejichengshi.comjiejing.fun
jiejingku.netjiekenmould.com
+jiekon.com
+jiekou.ltdjielibj.comjieligo.netjieling.netjielong-printing.com
+jielong.cojielongguanjia.comjiemaiyang.com
+jiemeng.twjiemeng8.comjiemian.com
+jiemin.com
jiemo.netjiemodui.comjiemoselect.com
+jienyl.com
+jiepai.netjiepaids.com
+jiepei.com
jieqi.com
+jieqian.cojieqibg.comjieqinwang.comjierili.comjieruchaosheng.comjiese91.comjieshangwei.comjieshengit.com
jieshimt8.com
jieshu.mejieshui8.comjieshuwang.comjietu365.comjietuhb.comjietuosh.com
jietusoft.com
+jiewan.net
jiexi.netjiexilaiba.comjiexingtai88.comjiexitz.com
jiexunyun.net
jieyan110.com
+jieyang.la
+jieyou.comjieyougame.comjieyoulai888.com
+jieyue.netjieyuechina.comjieyuechina.net
jifang360.com
jifang365.comjifenapp.comjifenfu.netjifengba.com
+jifenh.comjifenyi.comjifenyouhuidui.comjifenzhi.comjigao616.comjiguangdaili.comjiguangdanci.comjiguanglan.com
jiguo.com
+jihai8.comjihaoba.comjihegui.com
jihex.comjihexian.comjiheyun.com
+jihisy.com
jihot.comjihuachina.com
jihuanshe.comjihubear.comjihui88.comjihujiasuqi.comjihulab.comjihuoma.comjihuoyx.com
jijia.comjijiagames.comjijian.linkjijiang5.comjijiaoyu.comjijidown.comjijie168.com
jijigugu.clubjijing.sitejijinhao.comjijitec.comjijiyouxuan.comjijuduo.com
+jijuhb.comjikabao.comjikaicai.com
jike.city
jike.infojikedata.comjikefan.comjikegou.net
jikeiot.cloudjikejiazhuang.comjikejidi.com
jikejishu.comjikemac.com
jikeq.comjikewan.comjikexiaojiang.comjikexiu.comjikexueyuan.com
jikipedia.com
jilaihuyu.comjilailawyer.comjilaoshi.comjileniao.net
jiliguala.comjilingames.comjilingwy.orgjilinpujiyiyuan.com
jilinwula.comjilinxiangyun.comjiliyun.comjiluchengshi.comjiluzhe.netjilvfaka.com
+jimakj.com
jimeisilk.comjimeius.com
+jimeng.comjimeng.mobijimetec.comjimi168.com
+jimicn.comjimifashion.com
+jimihu.comjimilier.com
jimistore.comjimjordanlivinglyrics.comjimoedu.net
+jimonet.ccjimu.comjimubox.com
jimuc.comjimucake.comjimufund.comjimuhezi.com
jimujiazx.com
+jimuyk.com
jin-huang.net
jin10.com
+jin10x.comjin2huan165.vipjinanguanggao.comjinanhualian.comjinanqianji.comjinanxww.comjinbaiteng.comjinbaobeiqiming.com
jinbaoidc.com
jinbaonet.comjinbi-an.comjinbiaochi.comjinbiaohui.com
jinbiaojv.comjinbifun.comjinbilianmeng.comjinbitou.netjinbondt.comjinbuguo.comjincaicaiwu.comjincaihn.comjincaocw.com
+jincdn.comjinchanqunale.comjinchengdingjs.comjinchengjt2011.com
jinchuang.orgjinchuanhb.com
jinchutou.com
+jincin.comjindaixx.com
jindangit.comjindaoshangwu.comjindianweb.comjindianyishi.com
jindidata.comjindidq.com
+jinding.cc
jindingfm.comjindongneng.comjindongsoft.com
jindun007.net
jindunfan.com
jinduoduo.netjinenrunze.com
jinerkang.com
jinet.orgjinfan-keji.com
jinfangka.comjinfengkou.comjinfengpaint.comjinfengwine.comjinfenla.com
jinfh.netjinfuzi.com
jing-xian.comjingangfuhui.com
+jingbo.netjingbotech.com
jingc.comjingcai360.netjingcaipaint.comjingchang.tvjingchengwl.comjingchuhao.com
jingchurc.comjingdajiance.comjingdaka.comjingdata.comjingdeyx.comjingdiancha.netjingdianhuayu.comjingdianju.comjingdianlaoge.comjingdianxitong.comjingdiao.comjingdigital.comjingdong.comjingdongdaili.comjingdongjinrong.comjingdongyouxuan.comjingdukaoyan.com
+jingdw.comjingfentui.comjinggon.com
jinggu-ag.comjingguan.aijinggui.comjinghaishop.comjinghangapps.comjinghooo.comjinghua.comjingjia.netjingjia.orgjingjia6.comjingjiamicro.com
jingjiang.com
jingjiasc.comjingjiawang.comjingjie360.comjingjiezhileng.comjingjiu.comjingjusc.comjingkaiyuan.comjingkan.net
jingkebio.comjingkeleici.comjingkeyiqi.comjingkids.comjinglawyer.comjingliangad.comjinglingbiaozhu.comjinglou8.comjingluemall.com
jingluole.com
jingmeiti.comjingmen.comjingoal.com
+jingos.comjingpai.comjingpaidang.comjingpinhui.com
jingpinke.com
+jingpt.comjingqizhitongche.comjingrongshuan.comjingruigroup.com
+jingsh.comjingshanbus.comjingshibianhuren.com
jingshicd.comjingshistudy.comjingshun-wl.comjingsocial.comjingtanggame.com
jingtao58.comjingtuitui.comjingtum.com
jingua168.comjinguanauto.comjinguilvyou.comjinguizy.comjingujie.comjingutrust.com
+jingvo.comjingwacenter.comjingwei.linkjingweizhichuang.com
jingwuhui.comjingwxcx.com
+jingxi.comjingxianglawfirm.com
jingxinad.comjingxinhdf.comjingyakt.comjingyanben.comjingyanbus.comjingyangzhijia.comjingyanlib.comjingyanshu.comjingyeco.comjingyeqian.com
jingyi186.comjingyinb.comjingyingyicheng.com
jingyougz.com
jingytech.com
+jingyu.comjingyuan.comjingyuelaw.comjingyuxiaoban.com
jingyuyun.comjingzhengu.comjingzhi5.comjingzhoulawyer.comjingzhunyunting.com
jingzhusz.comjinhaisujiao.comjinhe-energy.com
+jinher.comjinheshiye.comjinhongchina.com
jinhongnl.com
+jinhu.infojinhuatv.comjinhuawatch.com
jinhuazhe.comjinhusns.comjinianbi.comjinianbishequ.com
jiniance8.comjiningjj.com
+jiniu.work
jiniutech.comjinjianbio.comjinjiang-group.comjinjiang.comjinjianginns.comjinjie.techjinjiedu.com
+jinju8.com
jinjunmei.net
jinkaijia.com
+jinkan.org
jinke.comjinkedatex.comjinkejoy.comjinkeluo.com
+jinkex.comjinkezhexin.comjinkopower.comjinkosolar.comjinkoubaodian.comjinkoucaigou.com
jinku.comjinlaiba.comjinletx.comjinlianchu.comjinlinghotel.comjinlinghotels.comjinliniuan.comjinlishenghuo.com
jinliyang.net
+jinliyu.ccjinlongzhai.comjinluzl.com
jinlvkeji.com
+jinlyb.comjinmalvyou.com
jinmao-ti.comjinmao88.comjinmaodigital.comjinmaopartners.comjinmaozs.comjinmenrc.com
jinmi.comjinming.netjinmixuetang.com
jinmogame.com
jinmuinfo.com
+jinnong.cc
jinpanlab.comjinpengecologyhotel.com
+jinpin.xyzjinpupvc.com
jinqi2023.comjinqianguan.com
jinqianma.comjinqiaojob.comjinqiaolian.com
jinqiaopu.com
jinqiexia.com
jinqingdz.comjinqunla.com
jinri.redjinridandong.comjinridiaoyu.comjinriguanzhu.cc
jinrilife.comjinrirm.comjinrishici.comjinritemai-inc.comjinritemai.comjinritoutiao.comjinriwushi.comjinrong-online.comjinrongbaguanv.comjinrongdianli.comjinrongren.netjinrui-tech.comjinruimedical.comjinruism.comjinruitc.comjins-cn.com
+jinsdk.com
jinse.com
jinsebook.comjinsehuaqin.comjinshacapital.comjinshakemei.comjinshanapi.comjinshandaolu.comjinshangdai.ccjinshangdai.comjinshangji.comjinshanglawfirm.com
jinshanju.comjinshare.comjinshasitemuseum.comjinshengceramics.comjinshengtang.netjinsheyi.comjinshier66.comjinshisoft.comjinshuju.cojinshuju.comjinshuju.netjinshuju.orgjinshujuapp.comjinshujucdn.comjinshujufiles.comjinshuluoshui.comjinshun.comjinshuschool.comjinshutuan.comjinsiwei.comjinsuizhongye.comjintaimall.comjintajx.comjintdev.com
jintelisi.com
jinti.com
jintiango.comjintianjihao.comjintiankansha.mejintone.comjintouep.comjintouwangdai.comjintuituiapp88.com
jinwaimai.com
jinweitec.com
+jinwin.netjinxianglian.netjinxidao.comjinxinqh.com
jinxiu266.comjinxiu8.comjinxuliang.com
jinxun.ccjinyaco.comjinyawei.comjinyidun.com
jinyindao.comjinying.comjinyongwang.com
jinyoukai.comjinyuan.projinyuanbiochem.comjinyuancopper.comjinyuangejiaju.comjinyuesc.comjinyueya.comjinyunal.com
jinyunweb.com
+jinyuzd.cc
+jinzhao.me
jinzheled.comjinzhidagl.comjinzhoubank.comjinzhucaifu.com
jinzhuguo.com
+jinzjy.comjinzunjy.com
+jioluo.comjiongcun.comjiongji.comjiongtoutiao.com
jiongyaya.com
jionz.comjiou.mejiouyun.comjipd.comjiping.site
jipinsoft.comjipinwww.com
jiqid.com
jiqie.com
+jiqike.comjiqimao.com
jiqirenku.com
+jiqish.comjiqizhixin.com
+jiqrxx.comjirengu.com
+jiri10.com
+jiri28.comjirongyunke.net
jirou.comjirry.me
jisapower.com
jisec.com
jishengzl.comjisheyun.com
+jishi3.comjishicloud.comjishicn.com
jishirili.comjishiyuboke.comjishubai.comjishuchi.com
jishukong.com
jishulink.comjishusongshu.com
+jishux.com
+jisi17.comjisikaer.comjisu-cnd.comjisuanke.comjisuanzt.comjisuapi.comjisuchaxun.comjisuchou.comjisuclouds.com
+jisuim.comjisuimg.comjisujie.comjisukandian.comjisunton.comjisuoffice.comjisupdf.comjisupdfeditor.comjisupdftoword.com
+jisupe.com
jisuqiang.com
jisuqiang.netjisutodo.com
+jisutp.com
+jisuts.comjisutui.vipjisuwebapp.com
+jisuwz.comjisuxia.com
+jisuye.comjisuyilaixingpiyan.com
jisuzyimg.comjita.funjita.im
jita5.com
+jitaba.net
jitadaren.comjitadog.com
jitailian.com
+jitake.comjitangcn.com
+jitao.techjitapai.comjitashe.orgjitavip.comjitayuan.comjitgame.com
jitu5.comjitucdn.comjitukaisuo.comjituofuture.com
jituotech.comjituwang.com
jitwd.com
jiu-b.comjiuaizhihe.comjiubaju.comjiubawan.comjiucaicaijing.comjiucaigongshe.comjiuchenglaw.comjiuchet.shopjiuchutong.comjiucool.org
+jiuday.comjiudezixun.comjiudianjiu.comjiudianyongpin.comjiudingcapital.com
jiufuquan.comjiugang.comjiugangbid.comjiuhantang365.comjiuhewj.comjiuhua0566.comjiuhuaiwenxue.comjiuhuang.com
jiuhuashan.ccjiuishizanjin.com
jiujiange.comjiujiangjx.comjiujitsuphiladelphia.comjiujiuhuyu.com
jiujiuwan.comjiujiuyong.comjiujiuyunhui.comjiujiuzu.com
+jiujun.netjiujunqifu.com
jiuku.comjiulesy.comjiulishi.com
+jiulku.comjiulong-muyuan.com
+jiulve.com
jiumaojiu.com
jiumaster.com
+jiumei.comjiumei8.comjiumeisheng.comjiumentongbu.comjiunile.comjiuniok.com
jiupaicom.comjiupingz.comjiuq.comjiuqianwan.groupjiuqianwanjituan.comjiuqijz.com
+jiuquan.ccjiuqucloud.comjiuquhe.comjiurong.comjius.netjiuse.cloudjiuse2.cloud
jiushechi.com
jiushiadx.comjiushigong.comjiushixing.comjiushoubiao.com
+jiushui.tv
jiusi.netjiusibz.comjiusihengyuan.comjiusili.comjiusitm.com
+jiusko.comjiusongjiankang.comjiutong100.com
jiutu.net
jiuwa.net
+jiuwan.comjiuwang.shopjiuwanshan.net
+jiuwei.netjiuweige.comjiuwo123.comjiuxian.comjiuxianfeng.comjiuxiaobao.vip
jiuxihuan.net
jiuxinban.comjiuxing.comjiuxing818.comjiuxusb.comjiuyan.infojiuyanchuanmei.comjiuyang.comjiuyangongshe.com
jiuyao666.comjiuyaowangluo.comjiuyejia.comjiuyezhinan.comjiuyi120.comjiuyichuanqi.comjiuyiwenhe.com
jiuyue919.comjiuyuehuyu.com
+jiuyuu.comjiuzhaigou-china.comjiuzhang.comjiuzheng.com
jiuzhenge.com
jiuzhilan.comjiuzhinews.com
jiuzhouzb.comjiuzhuanzhuan.comjiuzungame.comjiweichengzhu.comjiweixin168.comjiwu.comjiwudai.comjixiang800.comjixiangjili.comjixiangyou.comjixianku.com
jixiao100.comjixie100.net
+jixie5.com
jixie5188.comjixiehonghong.comjixiejiaoyu.comjixieshi.comjixieshigong.comjixiewz.comjixinbbd.com
+jixixx.comjixuanw.comjixunjsq.comjixunlyq.com
+jiyecm.com
jiyik.com
+jiyili.netjiyin-tech.com
jiyin2020.comjiyixcx.com
+jiyiyq.comjiyou-tech.comjiyoujia.com
jiyouwang.comjiyuncn.comjiyunhudong.comjiyunhudong.net
jiyuntang.com
+jiyusi.com
+jizhan.comjizhangzhuce.comjizhazha.comjizhiba.comjizhida.comjizhihd.com
jizhimobi.comjizhiyingxiao.netjizhiyouke.comjizhouyoupin.comjizhuba.comjizhuomi.comjizhutaoke.com
+jiziyy.com
+jj-inn.comjj20.comjj55.com
+jj57365.ccjj59.com
jj831.comjj99.icu
+jjbang.com
+jjbank.net
jjbbs.com
jjbhn.comjjbisai.comjjbnews.xyz
+jjbzhx.com
jjcbw.com
jjccb.com
+jjcclt.com
jjcdn.com
jjcoffetel.ccjjcoffetels.comjjcould.com
jjcto.com
+jjdede.comjjdiaoyu.comjjdqshy.com
jjdw1.com
jjdzc.com
jjecn.comjjfinder.com
+jjfuzu.com
+jjg630.comjjgjy.ccjjglobal.com
+jjgsxc.com
jjh11.comjjhb.comjjhgame.comjjhgamedns.comjjhh.comjjhlkqn.comjjhuifu.comjjhuigou.com
jjhuolang.comjjhuoyan.com
jjidc.comjjiehao.com
+jjinfo.com
jjisp.com
+jjj.ee
+jjjaaa.com
+jjjllk.comjjjoystudios.com
jjjpv.com
jjjx9.com
jjkeq.comjjkjnet.comjjkk.orgjjkucunxie.com
+jjldbk.com
+jjldxz.com
+jjlhbs.com
jjlvu.comjjmatch.com
jjmfc.comjjmh.com
+jjmjtv.comjjmkids.com
jjmmw.comjjnz.comjjonline.org
jjppt.comjjqj.netjjr.vip
+jjsedu.orgjjshome.com
jjsip.comjjtfyjy.comjjtianshangi.com
jjtonline.comjjtravel.com
+jjttjx.comjjw.com
jjwbc.com
jjwli.com
jjwxc.com
jjwxc.net
jjwxc.org
+jjxwzk.org
jjxxk.com
+jjxyls.com
+jjy118.com
jjycw.net
+jjygym.com
jjyl12349.com
+jjypyz.comjjys188.comjjyz360.com
jjzdm.comjjzfgjj.com
+jk-bms.com
jk-px.com
+jk.com
jk126.comjk2h.com
+jk37du.comjk3a.comjk51.com
jk520.net
jk724.comjk90.comjkangbao.comjkb7.com
+jkbexp.comjkbl.comjkc8.comjkcn365.comjkcorkpads.com
+jkcsjd.com
jkdsz.comjkerwvxbottom.storejkfwvip.com
jkfy5.com
+jkh-ym.com
+jkhapp.com
+jkhcfz.comjkhds872.comjkhealth.vip
jkimg.net
jkjiekuan.com
jkjzt.com
+jkkefv.comjkl6.com
+jkllbd.com
+jklsjm.comjkpan.ccjkpj.com
jkqdl.com
jkqingman.comjkqivrs.com
jkrcw.netjksdhgu.com
+jktcom.com
+jktong.comjktower.com
+jkunbf.com
+jkuntp.com
+jkwlyx.comjkwxw.cc
+jkx.cc
jkxds.net
+jkxedu.com
+jkximg.comjkxw168.com
jkydt.com
jkykyy110.com
+jkypeg.comjkzhilu.comjkzl.comjkzn365.com
+jl0435.com
+jl0775.comjl1mall.com
jl519.comjl54.orgjl78.comjl7y.com
jladi.com
+jlakes.orgjlandmeditech.com
jlaoj.comjlaqjdjt.com
+jlbhtc.com
+jlbkjt.comjlbtrip.comjlc-bbs.comjlc-cnc.comjlc-code.comjlc-fpc.com
+jlc-gw.comjlc.comjlccpit.com
+jlcerp.com
jlcfa.com
jlcsj.com
+jlcsmt.com
+jldjam.com
jlfjz.com
jlg66.comjlguorui.comjlguowen.comjlgxmob.com
+jlgyjj.com
jlinh.com
+jljgdj.org
+jljnkj.comjljob88.comjlkj.ccjllihua.comjlltxgbxyjy.com
jlmhw.comjlmuban.comjlonline.com
jlpay.comjlq.comjlqsugar.com
+jlrcom.com
+jlriza.com
jlsc13168.comjlsdzgckcy.comjlsebhyy.com
+jlsegx.com
+jlsemi.comjlsjsxxw.com
jlspr.com
jlstt.comjlszykj.comjltchina.com
jltrq.comjltyjxzz.com
jlxfw.com
+jlytzk.comjlzhongdong.com
jlzkb.comjlzsoft.com
jlzyz.comjm-machines.com
jm1ph.com
+jm2046.comjm233333.comjm3f.comjm3q.com
jmads.net
jmbbs.com
+jmbloc.com
jmbon.com
jmch12333.com
jmd-china.comjmd-leatherbag.com
+jmdedu.com
jmeii.com
+jmeizs.com
jmgle.comjmgo.com
+jmhapp.com
jmhd8.comjmhs.netjmj1995.com
jmjc.tech
jmjxc.com
jmjzy.comjmkjmob5.xyzjmkx.com
jmlanguan.comjmmuseum.comjmnk300.comjmonline.org
+jmp.gdjmqy.comjmrb.com
jmrcw.comjmrqpkd.comjmrsksj.org
jmsqw.comjmstatic.com
+jmsxsw.comjmtd0531.com
jmtnt.com
jmtsg.comjmwqouiblonde.cloud
jmwww.net
+jmxckj.com
jmxiangyi.com
+jmxlmc.comjmxw.net
jmyna.net
+jmynhc.com
+jmzcgs.com
jmzgo.com
jmzns.comjn-bank.com
jn001.comjn123456.com
+jn1535.com
jn172.comjn80.comjnbbbyy.com
+jncarw.com
+jncfcj.com
+jncgzl.com
jncqj.com
jncrv.fun
jncyx.com
+jndfzt.com
+jndssd.comjndvisa.com
+jndwyy.com
jndyn.xyz
jndzx.com
jnesc.comjnexpert.comjnfhweb.com
+jnfxny.comjngaobo.com
jnghm.com
jngjj.netjngl.net
+jnhfsl.comjnhongyun9.comjnhouse.com
+jnhwcw.com
+jnhxzc.com
+jnhzxx.comjnjfwzhs.com
jnjingxin.comjnjj.com
+jnjpkj.comjnjywyi.comjnkason.comjnky.com
jnlab.comjnlc.com
+jnlgzs.com
+jnltwy.com
+jnmama.com
jnmkj.comjnnc.com
jnnews.tvjnpfsoft.com
+jnpjyy.com
+jnrain.comjnruilun.comjnshijia.com
jnshu.comjnskqyy.com
+jnslyy.com
+jnstdc.comjntinchina.com
+jntyhl.com
+jnw.ccjnwb.net
jnwenlian.com
+jnxdgs.comjnxtzdh.com
+jnydgm.comjnyestar.comjnzcsyj.com
+jnzfsp.com
jnzhuoxin.comjnzl.com
jnzongchi.com
+jnzqcj.com
+jnzycw.comjo-cloud.comjo43.comjoaquinchou.comjob0663.comjob0768.comjob10000.comjob1001.comjob11580.com
+job120.com
+job168.com
+job256.com
+job263.com
job36.com
+job4ee.com
+job510.comjob5156.comjob5588.com
+job592.com
+job910.comjob9151.comjob9981.comjobbole.com
+jobcdp.com
jobcn.comjobczrc.com
jobdogame.comjobeast.com
jobef.comjobgojob.com
jobhb.com
jobi5.comjobinhe.net
jobjm.com
jobjy.comjobloser.comjobosoft.vip
+jobpin.comjobsalon.netjobsdigg.comjobsitechina.com
+jobsun.comjobtiku.comjobtong.com
jobui.com
jobuy.com
+jobvvv.comjobxinpg.com
jobyp.com
jocat.comjocund-gift.com
joe92.comjoessem.com
joey-rose.comjohe.ltd
+johhan.com
+johnlz.com
johogames.com
+johome.com
+johope.comjohouse.com
+joiest.comjoinchitchat.comjoindata.net
joinf.com
joiningss.com
joinkchem.com
joinquant.comjoinsen.comjoinsuns.comjoint-harvest.comjointforce.comjoinusad.comjoinway.comjoinwaylawfirm.comjoinwee.com
joit.infojojo000.vipjojoread.comjojoreading.comjokecommunity.comjokecommunity.netjoker.lijokerdig.comjolimark.comjollylifelhq.comjoloplay.comjomabrandonline.comjomocdn.netjomodns.comjomodns.net
+jomoxc.com
+jomoxd.comjonllen.com
jonln.com
jonny.vip
+jonsbo.com
+jonvie.comjooancloud.com
+joobot.com
+jooioo.com
+joojcc.com
+joojen.comjoojtech.com
+joojzz.comjoomla.workjoomobx.com
joooz.com
+joouoo.comjoowhee.comjoox.com
+jooxoo.com
+jooyoo.net
+jooyuu.comjoozone.com
joqoo.comjosephcz.xyzjoshreso.com
joshua317.comjosncdn.com
jotop.net
jouav.com
+joudou.comjourlib.org
journalmc.com
journeyui.comjourserv.comjouypub.comjovcloud.comjovetech.comjovision.comjovisionai.comjovmall.com
jowto.comjoy-air.com
+joy110.comjoy5151.com
+joyact.com
+joyami.com
+joyapi.comjoyb75.site
+joybuy.com
joybuy.es
+joydin.com
joyes.comjoyfire.netjoygames.comjoyglue.com
+joying.com
joyingbox.comjoyingtrip.comjoyinvleah.comjoyj.com
joylawyer.comjoymeng.com
joyncleon.comjoynext.comjoyoget.comjoyoung.comjoyours2019.com
+joyowo.com
joyshebao.comjoyslink.com
+joyssl.comjoysung.comjoytest.orgjoytourvip.comjoytrav.comjoytraveller.comjoytunescn.comjoytype.comjoyu.com
+joyuai.com
+joyulf.com
+joyuyx.com
+joywii.net
+joywok.comjoyy.comjoyyang.comjoyyinc.comjoyyued.com
jozne.comjp-moco.com
+jp.com
+jp0663.comjp95.com
jpanj.com
+jpbeta.netjpchinapress.comjpcoalboss.com
jpedo.com0-6.com
jperation.com
+jpfmor.com
+jpg.cm
jpghd.comjpgjzzs.comjpgreat7.com
jphot.net
jpisp.com
+jpivfw.comjpjc315.comjpkcnet.com
jpkix.comjpmorganchina.com
jpmsg.com
jpnettech.comjpnlink.xyzjpopsuki.eujpplanking.comjprtyun.com
jpsdk.comjpshuntong.comjpsmile.com
jpsto.com
jptab.comjpthome.comjpwb.ccjpwb.net
+jpwind.comjpwindow.com
jpwky.comjpwxapp.com
jpxue.com
jpxzm.com
jpyoo.com
+jpyssc.comjpyuncai.com
jq-school.comjq22.comjq33.com
+jqcool.net
jqdzw.comjqgc.com
jqgcw.com
+jqhtml.comjqi7tvvs.xyz
+jqkgjt.com
jqncp.comjqpress.comjqr.comjqr5.com
jqrkc.com
jqrzhijia.com
+jqsite.com
jqskygame.comjqtxxedk.com
jquan.ink
jquee.com
jquery123.comjqueryfuns.comjquerywidget.com
jqwag.xyzjqwater.com
jqwwq.comjqzhuangshi.com
+jqzjop.comjqzplat.comjqzw.comjr-soft.com
jr123.comjr18.comjravity.com
jrczu.comjrdaimao.com
jrecchina.com
jrekg.com
+jrexam.com
jrfcg.com
+jrgang.com
jrhot.comjrj.com
jrjiekuan.comjrjingshan.comjrjr.comjrkantv.com
+jrlady.com
+jrlm81.com
+jrlxym.comjrmf360.com
jrmianban.comjrnba.cc
jrntv.comjrqiwen.com
jrqzw.net
jrstv.funjrstv.online
jrszw.comjrtaiji.net
+jrteck.comjrtgroup.net
jrtx.sitejrwenku.com
jrxzj.com
+jryccm.com
+jryghq.com
+jrysdq.com
+jryssj.com
jryzt.comjrzj.comjrzp.comjs-aerfa.comjs-code.com
js-jinhua.comjs-lottery.comjs-shenghang.comjs-weilong.com
js.designjs04999.com
+js0573.comjs11183.comjs118114.com
js165.comjs3.orgjs3n.com
js7xc.com
+js8.in
js811.com
+js8333.com
+js9499.comjs96008.com
jsahj.com
+jsanbo.comjsbaidu.comjsballs.comjsbc.comjsbestop.comjsbexam.com
jsbgj.comjsboxbbs.com
jscdn.ink
+jscdn9.comjscdwlw.com
+jsceou.com
jsche.netjschiko.comjschunxing.comjscj.comjsclearing.com
+jscmjt.com
jscnc.net
+jscsdr.com
+jscsfc.comjscssimg.com
jscts.com
+jscz55.comjsd-jasper.com
+jsd.ccjsd2021.comjsdaima.com
jsdas.com
+jsdcly.com
jsddz.net
jsdesign1.com
jsdgb.com
jsdmirror.com
jsdqk.com
+jsdsad.comjsdun.ccjsduopin.net
+jsdz16.com
jsdzb.com
jseduinfo.comjseepub.com
jseoptics.comjser.iojsf1990.site
jsfof.com
+jsform.comjsform3.com
jsfw8.comjsfycdn3.com
+jsgbds.comjsgc168.comjsgcbank.com
+jsgdsb.comjsggwhy.comjsgh.org
jsgho.netjsgjksl.comjsgogogo.comjsgoldenbridge.com
jsgongwei.com
jsgrb.com
+jsgsyy.comjsguolv.com
+jsgwyw.orgjsgyrcb.comjsh.comjshaman.com
jshanchao.comjsharer.comjshbank.comjshcsoft.comjshdata.com
+jshddx.com
+jshdwh.comjshealth.com
+jshgfm.com
+jshkht.comjshmrcb.com
jshnh.com
+jshqjt.comjshrconsult.comjshrtfl.comjshsoft.com
jshuachen.comjshuafu.comjshy.comjshy1688.comjshytec.com
+jshyzh.com
+jshyzh.net
jsifa.orgjsiteec.orgjsjclykz.comjsjdrcb.com
+jsjdzf.com
+jsjffj.comjsjiami.comjsjiaojian.comjsjinfu.com
jsjjy.com
jsjkx.comjsjs.cc
+gxlcpp.com
05sun.com
+dnmall.comjsjyrcb.com
+jsk365.com
+jskale.com
+jskhfm.comjskjcms.com
+jsklcy.com
+jskpcg.orgjsks-ya.com
jskuajing.com
jskwt.com
+jslcjt.comjsldweb.comjslegal.com
+jslink.com
jslottery.com
jslpk.com
jslvzhigu.com
+jslwzk.com
jslxs.comjsly001.com
+jslyjc.com
jsmfk.com
+jsmian.com
+jsmjys.comjsmo.xin
jsmsg.com
jsmxw.comjsnaier.comjsningyi.com
jsnol.comjsnx.net
jsnxs.com
jsocr.comjson.icu
+jsonin.comjsososo.com
+jsp158.com
jsp51.com
+jspang.comjspatch.comjspeople.com
jsphp.netjsplayground.netjspp.comjspxcms.com
+jsq886.com
jsqiuying.comjsqlawer.comjsqq.net
+jsqstg.comjsqt.comjsrc.com
jsrcu.com
+jsrdgg.com
+jsrdxl.comjsrmzscl.com
+jsrrcb.com
+jsrsrc.comjsruiyin.com
jsrun.net
jsrun.pro
+jsrxjt.com
jssaikang.com
+jssalt.comjssbaoxian.com
+jssbjt.com
jssdh.com
jssfx.comjsshfcw.com
+jsshow.netjssling.comjssnrcb.com
+jssoar.com
+jsssrj.com
jsstbcgsw.comjssutong.com
+jssuty.comjsswordshop.com
+jssytc.com
+jstfdz.comjsthjsgc.com
+jstide.com
jstor.orgjstore.site
+jstour.com
+jstoys.net
jstti.comjstucdn.comjstv.com
+jstxdm.comjstxrcb.net
+jstyny.com
+jstzjy.netjstzrcb.com
+jsw118.com
+jsw988.com
jswebcall.comjsweixiu.com
+jswjkj.net
jswmw.comjswonderful.com
+jswpq.cyoujswrhjkj.comjswspocapi.com
jswtc.net
jswwl.com
+jswxhy.comjswxmax.comjswyglw.com
jswyw.comjsxat788.comjsxbxcl.com
+jsxcra.comjsxfedu.com
+jsxggx.comjsxhrcb.com
jsxht.com
jsxhw.orgjsxhxmhj.com
jsxiaoguo.com
jsxiaoshi.com
jsxinfeng.comjsxinfly.comjsxionghuojxzz.com
jsxmw.com
+jsxxzh.comjsxy.biz
+jsxz66.com
+jsxzty.com
+jsybjz.com
+jsycsy.com
+jsyf88.com
+jsyghw.com
+jsyhxl.comjsyinba.comjsyixin.com
jsyks.com
jsypj.comjsysafe.comjsyun.ccjsyunhao.comjsyunmy.comjsyxrcb.com
+jszbtb.comjszc0773.com
jszdlssws.comjszg.orgjszhaobiao.comjszhongyoutang.comjszjscl.com
+jszkrz.com
jszks.com
jszks.net
+jszlyy.com
+jszmly.comjszn.ink
jszpw.net
jszwz.net
+jszygs.com
jt-it.com
jt56w.comjt62.com
+jtamac.com
jtamc.com
+jtbole.comjtbtech.com
jtcjd.com
jtfengtou.comjtggame.comjtgjg168.comjtgloble.com
+jtgzfw.com
jthailang.com
+jthcsx.com
jtimg.com
+jtj-kr.com
+jtjr99.comjtlw.com
jtlzx.comjtm-food.comjtm.pub
jtnsh.comjtpipeline.com
jtrhc.funjtrobots.comjtsglawyers.comjtso.net
+jtsp98.comjtss1688.comjttv.net
+jttzsy.com
+jtv123.comjtvpeuu.comjtwmall.com
+jtxys8.com
jtyjy.com
jtyxh.com
ju-jingyi.com
+ju1212.comju51.comju81.ccjuaiyou.comjuanbao.comjuangua.com
+juanpi.com
+juanta.comjuanyunkeji.comjuanzan.com
+juapp9.comjuaq.comjubaihuijia.comjubaiye.comjubaopay.com
jubaozang.comjuben68.comjuben98.com
+juc365.com
+jucanw.comjucelin.com
jucha.com
jucheng01.net
juchengvi.comjuchuangbio.comjuchuangfushi.com
+jucool.comjucuiwangluo.com
judehahh.tech
judns.comjudong-1.comjudouapp.com
juduoping.com
+jue.sojuebankongjian.com
+juecan.com
juedui100.comjueduilingyu.comjuefeng.com
+juehuo.com
juejin.imjuejinchain.comjuejinqifu.com
+juemei.comjuemuren4449.com
juequling.comjuesheng.com
+juewei.comjuexiang.comjuexiaotime.comjuexinw.com
+jueywo.comjufaanli.com
+jufair.com
jufeng313.comjufengcompany.comjufengshang.comjufengwuxi.comjufoinfo.com
+jugezi.com
jugongdan.comjuguifu.comjuguize.comjuhaihui.comjuhaokan.orgjuhaokanya.com
+juhaom.comjuhe.comjuheweb.com
+juhome.net
juhuasuan.comjuhui581.comjuhuicloud.comjuhuiwan.comjuhuiwan.netjui.orgjuiceevapes.comjuicefs.com
juj66.comjujayoupin.comjujianggcz.com
jujiangkk.comjujiangktz.comjujiaobaby.com
jujiaonet.com
+jujias.comjujienet.com
+jujin8.comjujinwater.com
+jujiu8.com
jujoy.comjujumao.com
jukan.netjukandiannews.comjuke200.comjukebao.comjukejia.comjuketai.net
jukuu.comjulaibao.comjulanhp.com
julanling.com
+julecn.comjulefun.comjuliang8.comjuliangcili.comjuliangyinqing.comjuliangyinqing.net
juligroup.comjulihun.com
+julive.comjuliyuemeng.comjulydate.comjulyedu.comjulysong.comjumanlou.com
jumbo-wpc.com
+jumbot.net
+jumdfd.com
jumei.comjumeinet.comjumengco.com
jumengren.com
jumengtbs.netjumi-cdn.comjumi.com
+jumi18.comjumin.cc
juming-xz.com
+juming.com
+jumold.com
+jumore.comjump-center.com
jump-game.comjump301.comjumpjumpcat.com
+jumple.com
+jumppo.comjumpserver.orgjumpserver.xyzjumpstar-tech.com
jumpw.com
jumpwgame.com
+jumpwo.com
+jumubp.com
+jun.la
+jun360.comjun4.com
junankeji.comjunanshengwu.comjunao147.com
junaotiyu.com
junce.comjuncyun.comjundacheng.comjundaobaoan.com
+jundui.net
jundushan.com
+junews.netjuneyao.comjuneyaoair.comjuneyaoairlines.com
+junezx.comjunfalipin.com
junhe.com
junjiahao.comjunjing.netjunjingsuodao.com
junjue888.com
junka.com
+junlee.net
+junlian.mejunlong.plusjunlongtech.com
+junmin.orgjunmoseo.com
junnanhao.comjunpengtouzhi.xyz
junph.com
+junpin.com
junpin360.comjunpinclub.comjunpinghui.com
junpinhui.com
junpinzhi.comjunqing.renjunqing360.comjunrunrenli.comjunsaozg.comjunshanggame.com
junshencm.com
+junshi.comjunshi81.com
junshi881.com
junshidao.comjunshifuxin.com
junshijia.comjunshis.com
junshishu.comjunshitt.comjunsunchina.comjuntongtian.com
juntu.comjunwu262.comjunxilinux.comjunyao.tech
junyimeng.comjunying.comjunyisj.comjunyudns.comjunyuewl.com
junyushop.com
+junzhi.comjunzhuan.comjunziboxue.comjunzimen.com
junziqian.com
junziyize.com
juooo.com
jupintuan.comjupiterlauncher.com
jupup.comjuqi.comjuqianwh.comjuqingla.comjuqingw.comjuqk.netjuquanquanapp.com
jurcc.net
juren.comjurenqi.com
+juroku.netjurongfangchan.comjurongrencai.com
+juseey.com
jushequan.com
jushewang.comjushigj.comjushiwangedu.comjushuitan-inc.com
jushuitan.com
jushuitan.net
+jushuo.com
+jusiot.comjusoucn.com
jussevent.comjusssportsvenue.comjusstickets.comjussyun.comjust-plain.funjust4coding.com
just4fun.sitejust998.comjustalkcloud.comjustbbs0.comjustbilt.comjustbon.comjustbrainpeak.com
+justep.com
justering.com
justinbot.com
justjavac.comjustmyblog.netjustpodmedia.com
+justsy.comjustwe.sitejustylepro.com
jutao.com
+jutean.comjutengjiqi.comjutingshop.com
+jutone.comjutongbao.onlinejutuike.com
jutuilian.com
+juturn.com
+juubei.comjuvefans.comjuwa.net
juwan.comjuwangmedia.comjuwanshe.comjuweixin.comjuwuxian.com
juxia.comjuxieyun.comjuxin.tvjuxinguanjian.comjuxinhuizhi.comjuxizhineng.com
+juxuan.netjuxuecms.comjuyanbao.comjuyanwenjuan.comjuyebwg.com
juyingele.comjuyingonline.comjuyouqu.com
juyouquan.net
juyoutang.com
+juyoutv.cc
juyouxuan.vipjuyuansolar.comjuyutube.com
+juzhen.com
juzhen.iojuzhentech.comjuzhi720.com
juzhiyuan.comjuzhongjoy.com
+juzicy.com
juzifenqi.com
juzilicai.com
juzimi.cc
+juzioo.comjuziseo.com
juzistore.com
+juzisy.com
+juzivr.comjuzix.iojuzizhoutou.net
juzone.ccjuzzi-ec.comjvbhotel.com
jvcxp.comjvdebao.com
+jvgnwn.sbs
jvmai.comjvniubi.com
jvpin.vip
+jvrong.comjvshangwang.com
jvshi.netjvtianshanuu.com
jvyou.net
jw100.net
+jw1588.comjwappgc.comjwbf.onlinejwbl.com
+jwdili.com
jwdns.comjwetech.com
jwfun.comjwgb.netjwgf.comjwick-switch.com
jwipc.com
+jwl100.com
+jwnote.com
+jwsaas.com
jwsem.com
jwshy.comjwsm123.com
+jwview.com
jwwey.com
+jwygou.com
jwyun.net
jwzhn.comjx-bank.comjx-lhmy.com
jx-nc.com jx.lajx09.comjx116114.com
jx139.comjx163-cname.com
jx163.com
jx188.com
jx366.xyz
+jx3box.comjx3mogu.com
+jx3pve.comjx3tong.comjx3yymj.com
jxage.comjxausoft.com
jxawe.org
+jxbhwl.com
+jxbond.comjxbscbd.comjxc4.com
jxcar.com
jxcat.comjxcb.net
jxcca.net
jxccb.comjxcdkjfz.com
jxch12333.com
jxchaguan.comjxcsedu.com
jxcua.comjxcwejianzhan.com
+jxdcnc.comjxdcost.comjxdhhbhg.comjxdiguo.com
+jxdxxt.com
jxdyf.com
jxedt.com
jxedu.netjxeduyun.com
jxetv.comjxexpressway.com
+jxfeng.com
jxfls.com
+jxfrjs.comjxft.netjxg1.com
+jxg866.com
+jxgcxy.net
jxgdw.comjxgtzxc.com
+jxgxlc.comjxh2000.net
+jxhmjx.comjxhswhcb.com
jxhuahang.comjxiaolan.comjxicloud.comjximage.com
+jxjatv.com
+jxjbmy.com
+jxjdgy.com
jxjee.com
jxjia.net
jxjianwei.com
+jxjmzc.com
jxjob.netjxjt666.com
jxjx6.com
+jxjyzy.comjxkaixiangji.com
+jxkjzb.comjxkp.com
jxksw.net
+jxlgjd.comjxln.com
zzbtv.com
+jxlpjt.com
jxlvs.comjxlwgame.comjxlyhbd.comjxmj.com
+jxmlkd.comjxmrfire.com
+jxmy18.comjxndxuebao.comjxnjlxh.com
jxnxs.com
jxnyc.net
jxold.com
jxorg.comjxphone.com
jxpta.com
jxqcw.com
+jxqyfw.comjxrcw.cc
+jxrsrc.com
jxrtv.com
+jxrtvu.com
+jxscct.comjxsg.comjxsgfzx.comjxshangyou.comjxshengqi.sitejxshyzhx.comjxsilkpark.comjxsj-vtech.comjxsj2sy.comjxsjgjt.comjxsjypt.comjxslsyy.com
+jxslyw.comjxsrfdc.com
+jxsrjt.com
+jxssjx.com
+jxssjy.com
jxstm.com
+jxsuji.comjxswzjx.com
+jxsxdp.comjxszlfl.comjxszxyjhyy.comjxt1314.com
+jxt189.com
+jxtech.net
jxthz.netjxtransfer.comjxtutechan.comjxtvbbs.comjxtvshop.com
+jxtwkj.comjxtxzzw.com
+jxtyzx.org
jxtzw.comjxunicom.com
jxveg.org
+jxw123.comjxw12328.com
jxwmanage.com
+jxwmsj.comjxwz.netjxx7.com
jxxdf.com
+jxxfzx.com
+jxxhdn.com
+jxxhsd.com
+jxyczs.com
+jxyhys.com
+jxysyz.comjxytech.comjxyueqi.comjxyuging.comjxzl.cc
jxzyx.comjy-mach.com jy.cc
+jy0604.com
+jy0832.com
+jy1991.com
jy391.com
jy510.com
+jy5201.comjy6d.com
jyacg.com
+jyacht.comjyaochi.comjyarton.com
+jyb.me
+jybase.netjyblife.com
jyboo.com
jybqa.comjycbank.comjycinema.comjycloudgslb.comjycloudgslb.net
+jycxgw.comjydc.com
jydoc.com
jyecc.com
jyeoo.com
jyeoo.net
+jyfcyy.com
jyfda.net
+jyfund.comjyfwyun.comjyg-lighting.com
+jygjsq.comjyglass.netjygo.ccjygsdyrmyy.comjyguagua.com
jygyl.comjygz.com
+jyh007.com
jyhcd.com
jyhmz.com
+jyhome.com
+jyhwcl.comjyhyfintax.com
+jyhzsc.com
jyimg.com
+jyin53.comjyip.net
+jyjhkj.com
jyjjc.comjyjk.comjyjt668.comjyjxlt2009.net
+jykm88.comjykuaidi.comjyl1688.com
jyl88.com
jylms.com
jyltx.comjylw.com
+jylxbc.com
+jymcgc.com
jymcn.com
jymdq.com
jymhb.comjymredu.com
+jynews.net
jyoptical.comjyoptics.comjypc.orgjypecdn3.comjypipes.com
jypmm.com
jyqcw.comjyqingfeng.com
jyqkx.com
jyqxz2015.comjyrd.com
+jyrlzy.comjyrq.netjys0755.comjysd.comjyshare.com
jyshoubao.com
jyskuaiji.com
jysld.comjysmtech.com
+jysper.netjysq.netjyss.comjyss.netjyssjxc.comjysyyey.com
+jysyzk.comjytaier.com
+jytcdq.comjytjsgyp.comjytrump.com
jytwp.comjywanrun.com
+jywlcm.com
jywvs.com
jywxq.comjyxdyzx.comjyygsltwjv.cyou
jyyun.com
jyz99.comjyzc.com
+jyzysp.com
jyzzx.com
jz-hy.com
+jz-ins.com
+jz-job.com
+jz0045.comjz08.com
jz100.com
jz177.com
jz182.comjz26666.comjz36666.comjz5u.comjz6.com
+jz6868.comjz68888.comjzb.com
jzbar.net
jzbdc.comjzcbank.com
+jzchou.comjzclassroom.com
+jzcmfw.comjzcxptm.comjzdaodao.com
jzdlgroup.com
jzdwh.comjzedu24.com
jzerp.comjzfz.netjzg12315.comjzgcjsysjzz.comjzgcjszz.com
+jzgczz.com
jzhfz.com
jzhkr.com
jzita.comjzj2009.comjzj9999.comjzjgift.comjzke.com
+jzkjjt.com
jzkoo.net
+jzmbti.com
jzmob.com
+jzmsmj.comjzmt.net
+jznyjt.com
jzongguan.com
+jzpbuy.comjzpu.comjzqlyptall.comjzrb.comjzrc.netjzsadlkfadf.comjzsc.net
jzsc8.com
jzsec.comjzsgzmhjyxgs.comjzsjyksy.comjzsousuo.com
jzsszyjzx.comjzsxinyudianqi.comjzsyishu.com
+jzszdq.com
jztey.com
+jztmgy.com
+jztsjx.comjztsjyxx.comjztvnews.comjztvxmt.comjztylxx.com
jztzw.netjzwxfrp.com
+jzxjcf.comjzxs.comjzygczx.com
+jzyqyb.comjzyx.comjzyxxkj.com
+jzzfyw.com
jzzhw.comjzzx.com
+jzzypt.com
k-2-i.comk-boxing.com
+k-kbox.com
k-res.net
+k-xian.com
k03yj.sbs
k0898.com
+k08h27.xyz
+k0rz3n.comk12.vip
k12kc.com
k12zx.comk165.comk166.orgk18.comk1u.comk2ma.comk2os.com
k3072.comk366.comk369.comk390.xyz
k3cdn.com
k3yes.com
k469q.sbsk518.comk5n.comk61.orgk666.com
k67kk.appk6uk.comk73.comk780.comk7h.lol
+k8.com
k8008.comk8azeicxy4idx.comk8sj.com
k8smeetup.comk8stech.netk913.comk9h5.comk9techsupport.comka20.com
+kaaass.net
+kaadas.com
+kaayou.com
+kaayou.net
+kaayun.comkaba365.comkabapay.comkabasiji.com
+kabitu.com
kaboy.net
kabu1.comkachecn.comkacheren.com
+kacper.funkada.comkada163.com
+kadang.comkadingding.comkaeryun.comkafangtech.com
+kafeng.com
kafvr.com
+kagirl.netkai-asia-hk.comkai-ying.comkaiba315.comkaibanglaw.comkaiboer.comkaichejiqiao.comkaichengschool.com
kaidanbao.comkaidany.comkaidianbang.comkaidicloud.com
kaifabang.com
+kaifae.comkaifage.com
kaifakuai.comkaifama.comkaifamei.comkaifangkecheng.com
kaifapiao.comkaifaxhl.comkaifaxueyuan.comkaifayun.com
kaifu.com
+kaifu1.com
kaifubiao.comkaifubiao123.comkaifuzq.comkaige68.com
kaigongyi.com
+kaiguo.com
kaihei.cokaihu51.com
kaihuaeva.comkaihuia.comkaijia-smt.com
+kaijia.comkaijiage.comkaijieunion.comkaikeba.com
kailang17.comkailing.pub
kaimen360.com
kaimg.comkaipanla.com
kaiqiancq.com
kaiqiu.cckairui.techkairunjinshu.comkaisacst.comkaisagroup.comkaishangroup.comkaishigo.com
kaishikan.comkaishuhezi.com
kaishujia.comkaishustory.com
kaitai668.comkaitaibh.comkaitaku.xyz
kaiteer17.com
kaitianad.comkaitiancloud.com
+kaiting.cc
+kaivps.comkaiwenda.comkaiwind.com
+kaixia.com
+kaixin.comkaixin00.com
kaixin001.com
kaixinbao.com
kaixindou.netkaixinguopiao.comkaixinguopiaowu.net
kaixinhui.com
kaixinhui.netkaixinit.comkaixinlu.comkaixinzuqin.com
kaixue.io
kaiyanapp.comkaiygame.com
+kaiyi.cool
kaiyinedu.comkaiyuan.com
+kaiyuan.mekaiyuanbusiness.comkaiyuangroup.cckaiyuanhotels.comkaiyuanweilaikeji.comkaiyuedoors.com
kaiyueyun.com
+kaiyun.com
+kaiyun.net
kaiyun360.comkaiyunhth1.comkaiyunwu.netkajicam.comkajishou.comkaka.com
kaka3.comkaka996.com
+kakacl.net
+kakadm.comkakalili.comkakamobi.comkakappt.com
kakashuzi.net
+kakatx.com
kakayigui.comkakayuy.net
kakucloud.comkalading.comkalazan.com
kalcaddle.comkalegou.comkalifang.comkalponik.com
+kaluli.comkameng98.com
kamenwang.comkami.vip
kami5.com
+kamidm.comkamidox.com
kamisamak.comkamokamogo.comkamopos.com
+kamtao.com
kamwu.com
+kan.cckan0512.comkan3721.com
kanbaobei.comkanbing.net
+kanbox.comkanchao.comkanchuan.comkandaoni.comkandian.comkandian.net
+kandian.tvkandian5.comkandianshi.comkandianzixun.comkandzww.comkanfangjilu.com
kanfeidie.comkang-ye.com
kang-zhuo.comkangagws.comkangaiweishi.com
+kangame.tvkangbaifoundation.comkangbatv.comkangbidz.comkangbixing.comkangcdn.comkangchun.comkangdajiuzhou.comkangdalawyers.comkangdns.com
kangepian.comkanggou.comkanggui.comkanghao123.com
+kanghe.com
+kanghu.netkanghuayun.comkanghui.com
kanghuicy.comkanghuwang.comkangjian888.comkangkang.comkanglaohui.com
+kangle.netkanglmarket.com
+kanglu.comkangpeining.com
+kangre.com
kangshuai.bizkangsibeauty.comkangtaiwang.comkangtor.com
+kanguo.com
kanguowai.comkangwogx.comkangxi55wlsf.comkangxidi.comkangxin.comkangxinzhiyuan.comkangyiqiye.comkangyuntang.com
+kangze.comkangzhi.comkangzhiqiao.com
+kanimg.com
kaniuquan.comkanixiaoxia.com
+kanjia.comkanjian.comkanjianlishi.comkanjianxinli.comkanjuba1.com
kanjuqing.com
+kankan.com
+kankan.runkankan365.cckankancity.com
kankanews.comkankanmi.comkankannews.comkankantu.comkankanyn.comkankanyulewang.comkankanzhijian.comkanketv.comkankezw.comkankun-smartplug.comkanluzhe.com
+kanman.comkanmeinv.comkanmogu.com
kannb.comkanniao.com
kanongyun.comkanqibao.comkanqiye.com
kanqq.com
kanqu.comkanrang.com
+kansdk.com
+kansea.comkanshangjie.comkanshijie.cc
+kanshu.comkanshu5.netkanshu8.netkanshuge.com
kanshuhai.com
kanshushi.com
kansp.com
+kantao.net
kantianqi.netkantiantang.com
+kantop.netkantsuu.com
kantu.com
+kanxue.comkanyihui.comkanyouxi.comkanyouxi.tv
kanzhekou.comkanzhun.comkanzuixian.com
+kao750.comkao8.cc
kaoaa.comkaobeitu.comkaochong.comkaodaojy.com
kaodongli.comkaoersi.com
+kaogua.comkaojionline.comkaojuan.com
kaola.comzzbtool.comkaola100.comkaolacam.netkaolacdn.comkaolafm.comkaolafm.netkaolazhengxin.com
+kaonaw.comkaopenhs.comkaopu001.comkaopubao.comkaopubao.netkaopushangcheng.comkaopuyun.comkaopuyun.net
+kaoqin.comkaoqintong.netkaoqinyi.com
+kaoruo.comkaoshenzazhi.com
kaoshi110.net
kaoshi365.comkaoshibaike.com
kaoshibao.comkaoshibb.comkaoshidian.comkaoshizixun.comkaosite.comkaostedu.comkaotipai.com
+kaotop.comkaowana.comkaowang.com
kaowx.com
+kaoyan.com
+kaoyan.org
+kaoyan.run
kaoyan001.com
kaoyan1v1.com
kaoyanbox.net
kaoyancas.com
kaoyancas.netkaoyango.com
kaoyanjun.comkaoyanking.comkaoyanmiji.comkaoyansiji.comkaoyaya.comkaozhiye.com
+kap666.com
kaquanbao.com
+karger.com
kargocard.comkarlzhou.comkarolina-kedrova.com
karrytech.com
kartlover.comkascend.com
+kashen.comkaspersky-labs.com
kasscloud.comkataliya.netkatongji.com
katvr.comkatyusha.net
kava-auto.com
kavaparts.com
kaven.xyzkavience.comkawahdinosaur.com
+kawoka.comkayajiuhui.com
kayougame.comkaytrip.comkaytune.comkazakcnr.comkazhifu.comkazithai.com
kazusa.cckb9.comkbccvwz.com
kbcdn.com
kbcmw.comkbdfans.com
+kbgogo.com
kbgok.comkbiao.mekbiquge8.com
+kblcdn.com
kblin.com
kbngy.comkbrightlaw.com
kbscd.netkbscloud.com
kbsml.comkbw2018.comkbwq.com
kbyun.com
+kc0011.netkc87.comkcbebank.com
+kccidc.com
kcdn0.comkcdnvip.com
kcfei.comkchance.comkchezhan.com
+kchile.comkchuhai.com
+kciptv.com
kcjyyjzzs.com
+kcjzsc.com
kcloudidc.comkcm.ltd
+kcm120.com
+kcouxp.com
+kcqcjt.com
kcrcb.comkcrea.cc
+kcwiki.org
+kcyuri.comkczhaosheng.com
+kczjlb.com
kd-hw.com
kd010.com
kd100.com
kd120.com
kd128.comkd58.comkd69.vip
+kd9000.com
kdadj.comkdatacenter.com
kdatu.com
kdcawards.com
+kdclub.net
kdige.com
+kdkefu.com
kdlgs.comkdmedic.com
kdnet.net
+kdniao.comkdpt.net
kdrmd.comkdroid.clubkdslife.com
+kdt.im
kdued.comkdun.comkdweibo.comkdx.mobi
kdzwy.comkdzxedu.com
+ke.comke51.comke6.comke6payux9q4pih.comke82.comke86.comke8izx.tokyoke8u.comkeai.icu
keaiq.comkean1688.com
+keaopt.comkebango.comkebaohuanwei.comkebenku.comkebi.biz
kebingzao.comkebitpiano.comkeboyunxiao.com
kebvalves.comkechengkeli.comkechuang.orgkechuangfu.comkeda-digital.com
+keda-u.comkeda.comkeda.funkedabai.com
+kedang.net
kedaotech.com
+keddoo.comkede.com
kedefamen.comkedi.cc
kedianduo.com
kedou.com
keede.comkeenbow.comkeenonrobot.comkeensky.comkeep.com
keepc.comkeepcdn.comkeepchen.comkeepfrds.com
+keepke.comkeepmobi.com
keepnight.comkeepyoga.comkeerdapower.comkeerqinmuseum.com
keerworld.comkeetalks.com
+keewin.comkefeijn.comkefenxi.comkefusoft.comkefutoutiao.com
+kefuzu.comkege.comkehanedu.com
kehou.com
+kehu51.comkehua360.comkehuaapp.com
+kehuda.comkehuzhichi.comkehuzhichi.netkeilfcy.comkeinsci.comkeji100.net
kejian.design
+kejids.comkejihai.comkejihub.comkejijie.net
kejik.comkejilie.comkejimeixue.com
+kejimt.comkejingyuan.comkejinlianmeng.com
kejinshou.com
+kejiqi.comkejishou.netkejitai.comkejitian.comkejiwang.cckejizhen.comkejudati.com
+kekaku.com
kekaoxing.comkekaoyun.comkeke289.comkekebaby.com
+kekedj.com
+kekejp.comkekenet.com
+kekeoo.com
+kekepx.com
kekeshici.com
kekexueba.com
kekeyuyin.com
+kekkyy.com
+kekoku.com
kel99.com
keladuoww.com
keladuoyy.comkelanjt.comkeldamedical.com
kele8.comkelehuyu.com
+kelepi.comkeleqiu.com
+kelete.comkelibiao.com
+kelink.com
kelon.comkelong-powder.comkelongding.comkelphome.comkelu.orgkeluokelie.comkeluyjs.com
+kema66.comkemaicrm.com
keman.comkemasheying.comkemavip.com
kemiaotai.comkemicro.com
kemov.com
ken-china.com
+ken.io
+kename.com
kenbochen.com
kendingde.comkendryte.com
+kenfor.com
+kenfor.net
kengatoki.com
+kengic.comkengwan.com
keniu.com
+keniub.comkeniuxy.comkenjieer.comkenkapacking.com
kenshu.cckenshuhu.comkenshuju.comkentier.comkenuonet.comkenweini.comkeoaeic.orgkeouaxbw.comkepingtong.comkepusky.comkeputech.comkepuyanxue.comkequcps.com
ker58.comkercoras.comkerlala.com
kernel-sh.com
kernel.cckernelnote.comkerneltravel.netkerntech-asp.com
keruibell.comkeruilai.com
keruilait.com
+keruna.com
+kerust.comkeruyun.comkeruyun.net
kesci.com
keshenwei.comkeshizhongguo.com
+kesion.comkesiyunlai.com
kesong.co
kesong520.comkesonic.comkesucorp.com
kesum.com
ketangpai.comketechdigital.comketingkeji.comketingzhuangxiu.com
ketuimage.comketuoweilai.comkevinems.comkevinjiang.infokevinlq.com
kevke.comkewu.cckewucool.comkexianggroup.comkexin001.com
kexing100.comkexingchem.comkexinguoji.comkexinhaoma.orgkexinyun.orgkexu.com
kexue.comkexue.fmkexuezixunzzs.com
+kexuna.comkey-iot.comkeyboardancer.comkeyboardingonline.net
keycom-ip.com
+keydak.comkeydatas.com
keyde.com
keygotech.comkeyibao.com
keyigroup.comkeyipump.com
keyislove.com
+keylol.com
+keymoe.com
+keyoou.com
keyray-hk.comkeyshot.prokeytoix.vipkeyuejiazheng.comkeyuhome.comkeyunchaxun.comkeyunidc.com
keyunsoft.com
+kezehb.comkezhaozhao.com
+kezhi.tech kf.aikf5.com
kf911.com
+kf9977.com
+kfadx.tech
kfagi.com
kfang.xin
+kfb126.com
+kfb163.comkfcbest.com
kfcdn.com
+kfcjrl.com
kfcms.com
kfdcc.com
+kffone.com
+kfhome.com
+kfj.cckfjd.com
kfmanager.com
+kfothf.xyzkfqizhongji.com
+kfw001.com
+kfzimg.comkg-gold.com
+kg.com
kg551.com
kg552.com
kg554.com
kg770.com
kg771.com
kg774.com
kg884.com
+kghbcn.com
kgimg.comkgogame.comkgou.cckgrestrg.comkguowai.comkhdatasolutions.com
khdmn.com
khdmw.comkhfwedu.com
+khlysc.com
+khotyn.comkhqihuo.comkhs1994.com
khuzc.comkhworidtour.com
+khysct.com
ki-pa.com
kiaic.comkibinggroup.com
kicontech.com
kid17.com
+kidbra.xyzkiddopal.comkidikidi.netkidsccshow.comkidscoding8.comkidsdown.com
+kidseq.netkidsfoto.netkidsthomas.comkidsyun.comkidulte.comkidulty.com
kiiik.com
+kiijoy.com
+kiinii.com
kikitamap.comkikoplay.funkikusuitape.com
kilamanbo.comkililife.com
+killdb.com
+kiloai.comkimberley-technology.comkimi.pub
+kimiss.com
+kimiss.netkimiter.com
+kimleo.net
kimqi.net
+kimsom.com
kimxz.comkina.cckindeditor.net
kindlelib.com
kindobest.comking-capital.com
king-rain.comkingandwood.comkingarad.comkingbank.comkingboritape.comkingborn.orgkingbos.comkingbrother.comkingcheergame.com
kingcloud.comkingcloudad.comkingclouddns.comkingdee-soft.comkingdee.comzzbs.orgkingdee.orgkingdeemall.comkingdeestar.comkingdeeyun.com
kingdeezx.com
kingdelgc.comkingdom-ceramic.comkingdomfishing.comkingdraw.com
+kingdun.cckingdun.netkingexplorer.com
kingfulai.comkinggoo.comkinggrid.comkinghomechina.comkingidc.netkinginfo.comkingkaid.comkingland119.comkinglandtech.net
kingliton.comkingmagic.co
+kingmb.comkingnare.comkingnet.com
kingnetdc.comkingnettech.comkingoit.comkingonpack.comkingpower-cn.comkingque.comkingreader.comkingrein.comkingroot.netkings3d.comkingsemi.comkingsoft-office-service.comkingsoft.comkingsoft.netkingsoftstore.com
+kingst.orgkingstarmedical.com
kingtysin.comkinguid.comkingwaywoods.comkingwisoft.comkingyon.comkingzom.com
+kinhom.comkinlong.com
+kinpan.com
kinpn.comkinpoway.com
+kinqee.com
+kinsec.comkintiger.com
+kinval.comkinzhan.com
kinzoncap.com
kira.cool
+kirgen.comkirin-tech.comkirincloud.net
kirinmach.comkirinvm.com
kirkcloud.comkiscoca.com
+kisdee.com
+kisops.comkiss998.com
kisskisso.com
+kissyj.comkissyui.com
kiswo.com
+kit-lee.me
kitic.net
kitiu.comkitstown.com
+kituin.fun
kiwa-tech.comkiwenlau.com
kiwifarms.netkiwifarms.stkiwisec.com
+kiyuu.club
+kj-pcb.comkj1d.comkj3.com
kjb2c.com
kjcdn.comkjchina.comkjchuang.com
+kjcity.com
+kjcxpp.com
+kjcyfz.comkjdb.org
+kjdvsg.comkjeport.comkjghyjy.com
kjimg.com
+kjiuye.com
+kjjcrm.comkjjl100.comkjkd.comkjkp.comkjks.net
+kjkxun.com
kjmte.com
kjmti.com
+kjr365.com
+kjsdh6.com
kjsng.com
kjson.comkjsv.comkjt.comkjtianshanxu.com
+kjw.cc
+kjwlxt.com
kjycx.comkjyicdn.comkjykcdn.com
+kjzhan.comkjzj.com
kjzpg.org
+kjzxtk.com
kk169.comkk30.comkk30.netkk3g.netkk556677kk.comkk667788kk.comkk888888kk.com
kkabc.com
kkapp.comkkcache.net
kkcapture.com
kkcdn.net
kkcha.comkkcharge.comkkcodes.com
kkcoo.comkkdaxue.com
kkddosdns.com
+kkdict.comkkdnsv1.comkkdownload.com
kkeji.com
kkeye.com
+kkfesw.com
+kkguan.comkkh-global.comkkhaitao.comkkid.vip
kkidc.com
+kkikan.comkkj2.com
kkjiaofei.comkkk5.comkkkd.com
+kkkggk.com
+kkkwww.com
kkkxj.comkklishi.com
kklxj.com
kkmar.comkkmh.comkkmicro.com
kkmop.com
kkmwt.com
kknss.com
kkoot.com
kkpan.com
kksmg.comkksofts.comkkt.comkktijian.com
kktv1.com
kktv5.com
kktv8.comkkuryat.comkkuu.com
+kkvv77.comkkwafdns.comkkwan.cckkx.net
+kkx999.comkkxspboe.sbs
kkxxiazai.com
kkyoo.com
kkyp.shopkkyuedu.com
+kkzhan.comkkzj.com
kl1l5.com
kl321.com
kl688.com
+klandk.comklchemicals.netklclear.com
kldjy.comklhuyan.comklianfa.com
+klicen.comklinlee.com
kliwu.comkljiyou.com
kljtc.com
+kllife.com
klmh5.com
klmnf.comklmy118114.comklmybbs.comklmyssn.com
klniu.com
+klpbbs.comklqy.com
kltgt.com
+kltong.com
+klub11.com
klunf.com
+klv5qu.com
klvtu.com
klwxq.comklx-tech.comklxuexi.com
+km.com
km169.netkm18.net
+km1818.com
+km5858.com
kmail.com
+kmaoxx.com
kmapp.net
+kmbdqn.comkmcenter.org
kmcha.com
+kmcits.comkmcits0716.com
kmcsg.comkmcxedu.comkmd8888.com
+kmdctz.com
+kmdjfo.xyzkmdn.net
kmdns.netkmediedu.com
+kmeecc.com
+kmeitu.comkmf.comkmfengli.com
+kmg-jd.com
+kmgcpf.net
+kmgg88.comkmguolv.com
kmgut.com
+kmhdjz.com
+kmhwtz.com
+kmhybz.com
kmlcl.com
kmlhh.com
kmljk.com
+kmmama.comkmplayercn.comkmpwgxzy.com
+kmqsaq.com
+kmread.comkmrihxo.comkmrijie.com
kmron.comkms.pubkmsfybjy.com
kmszy.com
kmteruite.com
+kmvideo.cckmvxwedy.com
+kmw.cckmw.com
kmway.comkmxg.net
kmxkh.com
kmxqt.comkmxszaoautomatic.cloud
kmxyj.comkmyanyou.comkmyestar.com
+kmzscc.comkmzx.org
kn120.com
kneng.net
+knewbi.comknewone.com
knewsmart.com
+kneyvz.xyz
knight-un.comkninebox.com
knnnd.comknockdream.com
knotesapp.com
+know88.comknowingclouds.comknowingcloudvip.comknowingyun.comknownpcb.comknownsec.comknowsafe.comknowsurface.comknowyourself.cc
knoya.com
knscq.comknsheng.com
+knsyxw.com
kntn.tech
knvps.com
+knzlcq.comko0.comkoagzrxt.comkoal.comkoalacam.netkoalareading.com
koalasolo.com
koba8.comkobeandkdshoes.comkobold1855.comkobox.tv
kocla.comkodcloud.com
kodmp.com
koduo.com
+koenli.comkofficemart.com
kofuf.comkofunion.net
kogfc.netkoiclub.netkoikreative.comkoinocn.comkok.pluskolarmy888.com
kole8.comkolrank.comkolstore.com
+kolyun.com
+komect.com
+kometo.com
+koncoo.com
konekomoe.com
+konfan.net
+kongao.comkongapi.comkongdao.comkongduan.comkongfou.net
+kongfz.com
+kongge.com
+konggu.netkongjianjia.comkongjie-zhaopin.comkongjie.comkongjieshijie.comkongjitang.comkongjun.comkonglei.comkongliankj.comkongming-inc.comkongqinengrebeng.comkongquecheng.comkongqueyuzd.cckongrong.comkongsun-hldgs.comkongtiao163.comkongtiao365.comkongwu2022.comkongzhi.net
kongzhiji.com
kongzhong.com
konka.comkonkamobile.comkonkek2.comkonotaku.com
+kooaoo.com
+koobai.com
+koocdn.comkoodudu.comkoofang.com
+koofun.com
+koogua.comkook.vipkookong.comkoolbao.comkoolcenter.comkooldns.comkoolearn.com
koolproxy.comkoolyun.com
+koomao.comkoopass.com
+koorun.comkooshui.comkooteam.com
+koovin.com
+koovoo.com
+kooxoo.com
+kopebe.comkopitokein.comkopiurerolex.comkoplayer.comkoreabt.com
koreaxing.com
+korirl.comkorosensei.comkorqqr1l13.comkortatb.comkotaqkew.comkotei-info.comkotex-km.comkoto.com
kotoo.com
+koubei.comkoubeikc.comkouchouwang.net
+koudai.comkoudai8.com
koudaigou.netkoudaili.comkoudaionline.comkoudaionline.netkoudaipe.comkoudaitiku.comkoudaitong.comkoudashijie.com
kouer.com
kouer.netkouhao8.com
+koukao.net
+koukao.org
+kouke5.com
koukousky.comkoukuko.comkoumakan.cckouming.netkouqiangba.comkoushare.com
kouss.com
+kouxin.com
+kouxin.netkouyu100.com
kouzi.comkovemoto.comkowa-dental.comkowa103.comkox.moe
koyuki.cckpanda.wiki
kpblw.comkpjushi.com
kpkpo.com
kpkpw.comkplanet.vip
kpoll.netkprepublic.comkpt5.com
+kpwcmb.comkpxmsbtw.com
kpy28.xyzkpymlycm.com
kpzip.com
kpzip.netkpzs.comkq36.comkq39.com
kq520.netkq7.comkq81.comkq88.com
kqapi.com
kqgeo.com
kqger.comkqidong.com
+kqj123.com
kqjdw.com
+kqlink.com
kqmmm.comkqpgstxx.comkqqy.comkqw.comkqwh231122.comkqwiuyzm1nsz35wo.buzzkqxtxpwy.com
+kqzlzx.comkqzp.netkr-cell.com
kr126.com
+krahag.com
krbattery.comkrbk.com
+krd168.comkrdrama.com
krenzheng.com
krffn.comkrioqxi.com
kriszhang.com
+kriweb.comkrones-group.com
+krones.comkrpano.techkrplanking.comkrqcitie.com
krszf.com
krtdl.comkrzb.net
krzhs.comkrzwymfr.com
+krzzjn.com
+ks-cdn.comks-cdn1.comks-cdnv6.com
+ks-fag.comks-live.com
ks-spring.com
+ks1688.com
ks321.com
ks365.orgks51.comks5u.comzzboiler.comksapisrv.comksbao.cc
ksbao.com
ksbbs.comksc-test.com
kscac.comkscbigdata.cloudkscbpkf.com
+kscdns.comkschuangku.comkscloudapi.comksco.cc
+kscord.com
+ksdedu.com
+ksdhgy.comksdq0514.com
ksedt.com
+ksense.com
+ksfang.com
ksgnr.com
+kshahn.com
kshaoteng.com
kshot.com
+kshtxf.com
+kshuwx.com
+kshwtj.com
ksjgs.comksjhaoka.com
+ksjxgs.comkslijian.com
kslyt.com
+ksmend.com
+ksmiai.comksmingl.com
+ksmjmj.com
+ksmmed.comksmobile.comksmobile.netksmq5a9kxzmr.com
+ksnows.com
+ksoapp.com
+ksokay.com
ksops.com
ksord.comksosoft.com
+kspays.com
kspkg.com
ksqdq.comksrc001.com
ksren.comksrenfan.com
ksria.comksrmtzx.comksruanjian.comkss4.com
+kst-cn.com
+kst100.com
kstao.comkstnjscl.comkstore.spacekstv.com
ksudi.comksupdate.com
kswcd.com
+ksxfgc.comksxianda.com
ksxiuneng.com
+ksydns.com
ksydx.com
ksyiqiwan.com
ksyna.com
ksyun.com
ksyun.netksyunad.comksyuncdn-k1.comksyuncdn-k2.comksyuncdn.comksyuncdnv6.comksyuncs.com
ksyungslb.comksyungslb2.comksyunv5.comksyunv6.comksyunv7.comksyunwaf.com
+ksyxmc.com
+kszbwz.comkszhuanjia.com
kszpw.com
kt007.com
kt250.com
kt286.comkt40.comkt5u.comktallong.com
+ktang1.com
ktazg.com
+ktbiao.comktc-med.com
ktcupdate.com
+ktdl696.cc
+ktdl699.cc
+ktdl705.cc
+ktdl708.cc
+ktdl709.cc
+ktdl710.cc
+ktfdsb.com
+kting.infoktkt.com
+ktlshu.vipktlstbg.com
ktmap.comktmv.comktovztie.com
+ktplay.com
ktrcn.com
+ktstny.com
+ktswjt.comktv.com
ktvc8.comktvdaren.com
ktvme.com
+ktvsky.com
ktvxg.com
ktwap.net
+ktwbhn.comktxuexi.com
+kty235.comktyunlianjie.com
+ku2048.netku25.com
ku33a.net
ku3c.shopku6.net
+ku6cdn.com
+ku6img.com
+ku6vms.comku82.comku90.com
ku987.com
kuaaa.com
kuabaobao.com
kuacg.com
kuadu.com
kuafugame.comkuai-fei.com
kuai-ying.comkuai.ma
+kuai65.comkuai666aa8e43gomqhzeg.comkuai666bj7tu65rkdz82.com kuai666bjeve6ks43qyw4vc8.comkuai666bjs3gsymi6v4h5pz.comkuai666e9rqs5wumk7at3.comkuai666gki3osg54rx7a.comkuai666gkq3semv1r34.comkuai666i4rmp7c5i16hb.comkuai666kysktrxmwici27.comkuai666m6vgmorxw77vb5.comkuai666ogv754urmpb4.comkuai666trqtauks5ht6x.comkuai666vs5aq9o3ytdgp.com
kuai7.com
kuai8.comkuaiads.comkuaiapps.comkuaibiancheng.comkuaibiao2000.comkuaicad.comkuaicha365.com
kuaichale.comkuaidadi.com
kuaidaili.com
+kuaidi.com
kuaidi100.comkuaidihelp.com
kuaidilab.comkuaidizs.comkuaiduizuoye.com
kuaiduwen.com
+kuaiex.comkuaifaka.comkuaifaka.netkuaifan.shopkuaifawu.comkuaifeng.comkuaifuinfo.com
kuaigames.comkuaigeng.comkuaiguohui.com
+kuaih5.comkuaihaodai.comkuaihecaishui.comkuaihou.comkuaihuw.com
+kuaihz.com
+kuaiji.com
kuaiji.so
kuaiji521.comkuaiji66.comkuaijianji.comkuaijilunwen.comkuaijinniu.comkuaijipeixunlg.comkuaijishizi.comkuaijisishu.comkuaijitong.comkuaijizheng365.comkuaikan.ink
kuaikanad.com
kuaikaoti.comkuaikuaicloud.comkuaikuaidai.comkuaikuaiyu.com
+kuaila.com
kuailails.com
kuailaiwz.comkuaile-u.comkuaile8.com
kuaile800.comkuailedo.comkuailekaishi.comkuailelunwen.comkuailetongyao.comkuailexs.com
kuailexue.comkuailezu.comkuailiyu.comkuailiyu.netkuailon.comkuailvzaixian.com
+kuaimi.com
+kuaimi.netkuainiaochong.comkuaipandata.comkuaipao.runkuaipao8.comkuaipianer.com
kuaipiyun.comkuaipng.comkuaiqin.com
kuairen88.comkuaishangkf.comkuaishebao.comkuaishiedu.comkuaishou.comkuaishouapp.comkuaishouapp.netkuaishouapps.comkuaishouba.comkuaishougroup.comkuaishoupay.com
kuaishuku.net
kuaishuru.net
+kuaisu.comkuaisujiasu.netkuaisushu-cnd.com
kuaisuyun.comkuaitijian.com
kuaitu.cc
kuaitu666.comkuaitui365.comkuaiwan.comkuaiwenyun.comkuaixiazai.comkuaixue.comkuaixun360.comkuaiyan.comkuaiyiad.comkuaiyilicai.comkuaiyingxiao88.comkuaiyingyong.vipkuaiyizu.netkuaiyong.comkuaiyoujia.comkuaiyoumei.net
kuaiyouxi.com
+kuaiyu.comkuaiyugo.com
kuaiyundi.com
kuaiyunds.comkuaizhan.com
kuaizhang.comkuaizhaogong.comkuaizhe.comkuaizhihui.comkuaizhou123.com
kuaizi.cokuaizitech.netkuaizupu.com
+kuaizy.comkuajing.com
+kuajing.hkkuajingmaihuo.comkuajingnet.comkuajingyan.comkuajinzhifu.com
+kuakao.com
+kuakao.netkuake666.com
+kuake8.comkuakeba.comkuaming.com
kuandaige.comkuanfans.comkuanfutong.com
kuang-chi.com
kuang-chi.org
kuangchan.bizkuangjijia.comkuangjiwan.com
kuangming.comkuangshitech.comkuangstudy.comkuangwan.tvkuangxiangit.comkuangyi.comkuangyuantrade.comkuanhuacheng.com
+kuanye.net
kuark.comkuashou.com
kuashuonk.comkubey.cckubikeji.comkuboluo.com
kuche.comkuchechina.comkuchuan.comkucunguanli.online
+kudapp.com
kudianvip.comkudiaoyu.comkudingyu.com
kudou.org
kuems.comkufangwuyou.comkufaxian.comkuge.cc
kugoo.com
kugou.comkugou.la
kugou.netkugou.tvkugou666cdn.com
kugouipv6.com
+kuhdew.com
kuhii.comkuhimalayandp.com
kuicc.com
+kuigkj.com
kuihe.comkuihuakeji.com
+kuihuo.com
kuike.ltdkuiniuca.comkuishiba.comkuishuling.comkuiziqiyun.comkujiale.comkujiang.comkujiang.netkuka-xj.comkuka001.comkukahome.com
kukankeji.comkukasofa.comkuke.com
+kuke99.com
kukecloud.com
+kukseo.comkuku123.com
+kukuda.net
+kukulv.comkukumai.comkukupig.comkukushouhou.comkukushow.com
kukuw.comkukuxiu.com
kuledushu.comkuleiman.comkulekeji.com
+kulemi.com
kulengvps.comkuletco.comkuli.renkuliwang.net
kuman.comkumanju.com
kumao.vipkumaoyun.comkumeiwp.comkumi.com
+kumiao.com
kumiao.tv
+kumiao.vipkumifeng.com
kun-pharm.comkundihulan.com
+kunduo.comkunenaspanish.comkungfucloud.comkungfuenglish.comkunguankeji.comkunkkawu.com
kunkundev.comkunkunyu.comkunlun-cdn.comkunlunaq.comkunlunar.comkunlunca.com
kunluncan.comkunlunce.com
kunlundns.comkunlunea.com
kunlungem.com
kunlunger.comkunlungr.com
kunlunhuf.comkunlunjk.com
kunlunjue.com
kunlunjyk.comkunlunle.comkunlunli.comkunlunno.comkunlunpi.comkunlunra.comkunlunsa.comkunlunsc.comkunlunsl.comkunlunso.comkunlunta.comkunlunvi.comkunlunwe.com
kunmingbc.comkunmingkanghui.comkunpo.cckunst-x.comkuntaihotel.comkunyun8.com
+kuo-yi.com
+kuobuy.com
kuocaicdn.com
kuocaidns.comkuocaitm.net
kuocaiyun.com
kuoo8.com
kuosanyun.comkuosheng.comkuosheng.net
kuotu.comkuozhan.netkupaisky.com
kupao.comkuparts.com
kuqin.comkureader.comkureselkobiler.comkurobbs.comkurogame.comkurogame.xyzkurogames-global.com
kurogames.comkurokingdom.comkuroko.infokurukurumi.comkurz-sh.comkusayra.shop
kusdk.comkushanfudaojixie.comkushuzw.comkusnc17.comkuso.xyzkusouji.com
kutianxia.comkutinai.comkutj.comkutongji.com
+kutuan.com
kuuke.com
kuvun.com
+kuwan8.comkuwanapp.com
kuwanbang.comkuwanjitar.com
kuwen.net
kuwuu.com
kuwwz.comkuxi100.comkuxiaoji.comkuxiaomiao.comkuxiaomiao.net
kuxiaozhu.comkuxiuktv.comkuxuexi.comkuy8.com
kuycs.comkuyh.com
+kuyibu.comkuyin123.comkuyinxiu.comkuyinxiuxiu.comkuyinyun.com
+kuyiso.comkuyouyun.comkuyumall.comkuyunbo.clubkuzhange.comkuzhazha.comkuzhengame.com
+kv-kva.comkv6om4zs5i47.comkvamerfx.com
kvegg.comkvenjoy.comkvfumdr.com
kviso.comkvogues.comkvov.com
+kvps85.comkvrmicit.comkvucxko.comkwai-group.comkwai-pro.comkwai.comkwai.netkwai.xyzkwai666.com
kwaiadapp.comkwaiads.comkwaibusiness.comkwaicdn.comkwaicdnx.comkwaie65eu4gvs1943.comkwaiekow98icxsp7fz.comkwaiesovc9xgzfcmt.com
kwaigobuy.com
kwaigroup.comkwailai.comkwailala.comkwailbs.comkwailine.comkwailocallife.comkwailocation.comkwairga8upiycbiv.comkwairia4qs5e76v52z.comkwairpoewaum3s9z41.comkwairr9aw56vso581r.comkwairtc.comkwaisczway7r4tz7m8.comkwaiselfcdn.comkwaishop.comkwaishouapp.comkwaishouapp.netkwaitalk.com
+kwaitv.comkwaiww7t3qi8x217.comkwaixiaodian.comkwaiying.comkwaiymx64war5a7f.com
+kwaizt.com
kwgaewsl.shop
+kwimgs.comkwkf.comkwong-tech.com
+kws123.com
kwtgs.com
kwtzn.com
+kwudor.com
+kwx.gd
kwxjh.netkwxpobrw.comkx-turbo.com
kx001.com
+kx1978.comkx1d.com
kx516.com
kx778.comkx7p.com
kxapp.com
+kxapps.com
+kxb100.com
kxbox.comkxceping.comkxdaili.com
kxdao.com
kxdpm.comkxdw.com
kxfsw.com
kxgcw.comkxiaoshuo77.com
+kxinyk.comkxji.com
+kxjsys.comkxkzrcke.comkxlc.comkxll.com
kxmas.com
kxmrg.com
+kxq520.comkxqo2ev.com
kxscience.comkxstykrgx8z3.comkxt.com
kxtjt.com
kxtoo.com
kxtry.comkxtseal.net
kxtui.com
kxtwz.comkxx2.com
kxxsc.com
kxxxl.com
kxyyf.com
kxzmw.comky-express.comky.liveky01020.comky107.coky151.co
ky5yx.com
ky7yx.com
ky958.com
+kybapp.com
+kybapp.net
+kybcrm.com
+kybimg.com
+kyboye.com
+kybyun.com
kych5.com
kydev.netkye-erp.comkye.vipkyedu.cckyemall.com
kygf1.com
kygf3.com
kygf5.comkyhtech.com
+kyjlhz.com
kyjxy.comkylc.comkyleduo.comkyligence.iokylin-os.comkylinlot.com
kylinmobi.comkylinos.comkylinpet.com
kymjs.com
+kyo.hkkyoceraconnect.com
kyppt.com
kyptm.com
kyslb.com
+kysnxt.comkytijian.comkyubwsx1g5.comkyv5.comkyw4y0s.comkywiremesh.comkyx16888.comkyxdloan.com
kyxsw.orgkyy6.comkyyj.netkyzf.net
+kyzhpt.comkyzs.com
kyzyj.com kz.cc
kz8yx.com
kzgui.com
kzjtv.comkzqs.com
+kzread.comkzrqicae.com
+kztpms.comkzwr.com
kzyzz.coml-kingmall.coml-zb.com l.bizl069.coml0v0.coml10vvyj349r.shopl1yu.coml2h.sitel2t7.cc
l360qwfgg.com
l3gt9.coml68.netl799vk4qe2.coml7audiolab.coml85r.coml99.com
+la-bbs.net
la-chinata.hk
la-mo.comla-technology.comlab-easttitan.com
+lab-rm.com
lab-z.com
+labagd.comlabbang.comlabbase.net
+labbuy.net
+labfan.comlabgogo.comlabisart.comlabixiao.xin
labku.com
+labno3.comlaborlawtime.com
+labpyx.comlabuladong.onlinelabview.helplabxing.com
labzj.comlacaoshi.comlacesar.comlacocrea.comladiyoga.com
+ladjzs.com
+lady75.comlady8844.comladybirdedu.com
ladydaily.com
ladyjaded.com
+ladyol.comladystr.comlaf.run
+lafaso.comlafayettewines.comlafy.orglafybjy.com
lagou.comlagouevents.com
lagoujobs.comlagowang.com
+laguke.comlahm2018.comlahuashanbx.comlahuobao56.com
+lai-ai.comlaianbbs.com
+laiba.shoplaibeiparking.com
laibokeji.com
+laibot.comlaichon.comlaichou.comlaichuanfeng.comlaicodecor.comlaidacai.com
laidingba.comlaidudu.com
+laifen.netlaifeng.com
laifu.netlaigame7.netlaihema.com
+laihua.comlaijiarong.com
laijiawen.com
+laikan.comlaikanxing.comlaikanxs.com
laike.netlaikeerp.comlaiketui.com
lailaihui.com
+lailin.xyzlailinzhihui.comlailook.netlaima-tech.comlaimaidi.com
+lainzy.net
+laipei.net
laiqi.net
laiqm.comlaiqukankan.com
laiqy.com
laird-tek.com
+laisai.comlaisesupply.comlaishikouqiang.comlaishui.info
laisizuji.com
laisj.comlaituia.comlaituijian.netlaiwang.comlaiweishang.com
laiwo.com
laiwu.netlaiwumedia.comlaiwuyizhong.comlaixiangzuji.comlaixindianzi.com
laixiu.cclaixiukeji.com
laixs.com
laixueedu.comlaixuexi.cclaiyagushi.com
laiye.comlaiyetxt.comlaiyifen.com
laiyouhui.netlaiyouxi.comlaiytech.com
+laizee.com
laizhouba.net
laizi.net
+lajixs.com
+lakala.com
+lakecn.comlakwdian.com
+lalaba.comlalaedu.comlalawaimai.com
lalkk.comlamabang.comlamahui.comlamaison-arting.comlamajie.com
+lamall.comlamaqun.com
lambda.hklamborlogistics.com
lamiu.com
+lamost.orglamoton.com
lampchina.net
lampouomo.com
lamsg.net
+lamuba.com
lamyu.comlan-bridge.comlan-lin.comlan-ning.comlan1001.comlanbing510.infolanbinimall.com
+lanbts.comlanbula.com
+lancdn.com
lancecity.netlancern.xyzlanchenglv.com
lancn.netlancome-beauty.comlancong.net
lanconvey.comlancunwater.comland136.comlanda-solenoid.com
+landai.comlandaiwood.comlandasky.com
landchina.com
landed.cc
landi.comlandian.viplandian.xyzlandiannews.comlandiaoshike.comlanding-med.com
landingbj.comlandintheair.com
landitrip.comlandizs.com
+landjs.comlandmedium.comlandraco.comlandray.com
landroads.com
landscape.viplandscapehr.com
landspace.com
+landtu.com
+landui.com
landuicdn.comlandunxiaofang.comlandzestate.com
+landzg.com
+landzy.com
+lanecn.comlanelim.com
lanfanapp.comlanfeicastle.comlanfeitech.comlanfeiwine.comlanfeng.net
+lanfou.comlanfucai.comlanfucaijing.com
lanfw.com
lang8.net
+langao.comlangchao.comlangchengzhixin.comlangfang.comlangfangfc.comlanggine.comlangkawipower.com
+langke.com
langke.tvlangkoo.comlanglang.cclanglangjiajiao.com
langlangy.comlanglib.comlanglive.com
langmanzg.com
langnisen.com
langqing.clublangren001.comlangren8.comlangrencard.comlangrenclub.comlangrensha.netlangruiyun.com
langsong.site
+langtao.cclangtaojin.comlangtze.comlanguangdy.com
+langxi.xyzlangxingys.comlangxiyuyou.com
+langya.orglangyabang.comlangzezs.com
+langzi.fun
lanh.lovelanhaicaijing.com
lanhaizhi.comlanhao.name
lanhu.comlanhuajituan.comlanhuapp.comlanhuhu.com
lanhusoft.com
+lanin.techlanindex.com
lanje.com
lanjie100.com
lanjie520.comlanjing5.comlanjingads.com
lanjinger.com
lanjingfm.comlanjings.comlanjingtmt.comlankecloud.comlankeji.comlanlanlife.comlanlanwork.com
lanlv.com
+lanmao.comlanmao88.hklanmao99.hklanmaokeji.comlanmaos.comlanmicloud.com
+lanmit.com
+lanmon.netlanosso.comlanou3g.com
lanpanpan.comlanpuele.com
lanpv.com
lanpw.com
+lanpye.com
lanqb.com
lanqi.com
lanqibing.comlanqingkeji.comlanqiudi.com
+lanrar.com
+lanree.comlanreelh.comlanrenbijia.comlanrenclub.comlanrenexcel.comlanrenmb.comlanrentuku.comlanrenzhaofang.comlanrenzhijia.comlanrenzhoumo.comlanruitech.comlansancn.com
+lanscn.comlansedongli.comlanshanweb.comlanshauk.comlanshenniao.comlanshizi.comlansors.comlansscl.comlansun-pumps.comlantian-hotel.com
+lantian.tvlantiangufen.comlanting123.comlantinglou.comlantujx.comlantushiji.com
+lanuss.comlanvote.com
+lanwei.orglanwoncloudfilm.comlanwuzhe.comlanxinbase.comlanxincn.comlanxincomputing.comlanxing.netlanxing123.comlanxiniu.comlanxiongsports.com
+lanxum.comlanying.sitelanyingwang.comlanyuanxiaoyao.comlanyunbrand.com
lanyuncms.com
lanyunone.com
+lanyus.comlanyusf.com
lanzhisky.com
lanzhouvw.comlanzhuwh.com
lanzn.com
+lanzog.comlanzong6.com
+lanzou.comlanzoub.comlanzouc.comlanzoue.comlanzouf.comlanzoug.comlanzouh.comlanzoui.comlanzouj.comlanzouk.comlanzoul.comlanzoum.comlanzouo.comlanzoup.comlanzouq.comlanzous.comlanzout.comlanzouu.comlanzouv.comlanzouw.comlanzoux.comlanzouy.com
+lanzov.com
+lanzun.net
lanzv.com
+lao.si
laobaicai.netlaobaigan-hs.com
laoban100.comlaobandq.comlaobanfa.comlaobangban.comlaobanmail.com
laobi.icu
laobingmi.comlaobuluo.comlaobuxie.com
+laocen.com
laodaoyun.com
+laodong.me
laodong66.com
laodongfa.com
laodublog.com
+laoduo.netlaoduzhe.comlaofengwei.comlaofu.onlinelaofuxi.com
laofuzhou.net
laoge.xyzlaogongshuo.com
laogu.com
laohu.com
+laohu8.com
laohuabao.comlaohucaijing.comlaohutao.comlaohuyun.comlaojiuxitong.comlaojuhui.com
+laolai.comlaolaomiyou.comlaoliang.net
laoliboke.com
laolieren.comlaolieren.shoplaolishi.cclaoliuceping.comlaoluoshouji.netlaoma.cc
laomaotao.orglaomaotaopan.com
+laomoe.com
laomu.netlaonanren.cclaoniushuju.comlaoqiange.clublaoqianzhuang.com
+laoren.comlaosiji.comlaosilaisi.lifelaosunit.comlaotiaomao.comlaotongguan029.com
laowalens.comlaowangappxy.xyzlaowangshengge.comlaowuxx.comlaoxiangji.comlaoxiezi.comlaoxuean.comlaoxuehost.comlaoxuehost.netlaoxuezhuji.comlaoy.netlaoyaoadfsdfadfsdf.comlaoyaoba.com
laoyi0773.comlaoyoujiaju.com
laoyouyun.comlaoyouzhibo.com
laoyuanji.com
laoyuegou.comlaoyuge.comlaozicloud.com
laozongyi.com
laozu.com
+laozuo.orglapc.cclapin365.comlapulace.com
lapwz.xyzlaravel-admin.orglaravel-china.orglaravelacademy.orglarenla.com
large.netlark-passport-qa-sg.netlarkapp.com
larkcloud.com
larkcloud.net
+larkfn.comlarkmeetings.comlarkoffice.comlarkofficeapp-boe.comlarkofficeapp-pre.comlarkofficeapp.comlarkofficeboe.comlarkofficecdn.comlarkofficeimg.comlarkofficepkg.comlarkofficepre.comlarkroad.com
larkrooms.comlarksuite-pre.com
larksuite.com
zzbds.netzzbd.orglarksuitecdn.comlarksuiteimg-boe.comlarksuiteimg-pre.comlarksuiteimg.com
+larkvc.comlarryms.com
larscheng.comlarsonlimited.comlaruence.com
lascn.net
laserfair.com
+lashou.com
lasji.netlasmasas.comlast2win.com
lastdream.net
lastline.techlategege.comlatepost.com
latexeasy.comlatexstudio.netlatin100.comlatitudeda.com
lattebank.com
lattecake.comlattefinance.comlattice.viplaungee.comlaurelfilms.com
+lauyoo.com
+lavago.comlavandehotels.com
+lavapm.com
lavaradio.comlaw-lib.comlaw-star.com
law01.netlawasst.comlawbang.com
lawbridge.org
+lawbus.netlawinfochina.comlawipcompass.comlawlingyun.com
lawnewscn.comlawrencetsui.comlawtimeimg.com
+lawxin.com
lawxp.com
+lawyee.com
+lawyee.net
+lawyee.orglawyer-wangjiawei.comlawyerbridge.comlawyermr.comlawyerpass.comlawyershanghai.net
+laxiao.com
+laxmok.comlayaair.comlayabox.comlayoutad.com
+laysky.com
layui.comlayuicdn.comlayz.net
zzbbs.comzzbblys.com
+lazada.comzzbaike.comzzay.net
lazada.sg
lazada.vn
+lazcdn.comlaze.cc
lazyaudio.comlazybios.com
lazycat.cloudlazydim.comlazyren.comlazystones.com
lb-yz.comlb5.comlbarnstockimages.comlbbb.cc
lbbee.com
+lbbniu.com
+lbctjt.com
+lbctrl.com
lbd-group.com
lbd99.com
lbddd.comlbdj.com
+lbesec.com
+lbgttc.com
+lbhdbl.comlbhlvtbaf.store
+lbinin.com
+lbjljc.comlbjn.cc
+lbjsfz.com
+lbjtjt.com
lbkaiguan.com
lbkrs.com
+lbmobi.comlbojwsy.comlbrencai.com
lbsdermyy.com
lbsdj.com
+lbsdmy.comlbsmshop.comlbspays.comlbsrmyy.com
+lbswjt.com
lbszx.com
lbtek.comlbv1.com
lbwbw.com
+lbx777.com
lbxcn.comlbxcrmyy.comlbxdrugs.comlbxdyfgx.comlbxjkyf.com
+lbycwx.comlbyeyaji.com
lbzuo.comlc-cn-e1-shared.comlc-cn-n1-ayaqc.comlc-cn-n1-npxfk.comlc-cn-n1-shared.comlc-cn-n1-thovg.comlc-news.com
+lc044.love
+lc1001.com
lc123.net
+lc1618.com
lc787.comlcatgame.com
lcbdf.net
lcbtv.comlccareer.com
lccdn.net
lccmw.com
lccyy.comlccz.com
+lcddjm.comlcdfweqweqwe.comlcdhome.net
lcdtz.comlcdushi.comlcdwejianzhan.comlcdwiki.com
+lcdzjy.com
lcdzswjnc.com
lcfby.com
lcfcw.com
+lcfile.comlcfw.colcgdbzz.org
+lcgjbj.com
lcgod.comlcharge.com
lchii.com
lchot.comlciuyou.comlcjh.comlckeshun.com
lckfb.com
+lckiss.com
lckj.asialclawyer.org
lcloudcdn.com
+lcmhbl.comlcnichia.com
+lcofjp.com
lcoss.comlcouncil.com
lcpdu.comlcqixing.com
lcqjsjxxx.com
+lcqwdz.comlcrcbank.com
+lcread.comlcrq.net
+lcspzx.comlcsrmyy.com
lcsrw.com
+lcsssg.com
+lcsyzp.comlctech-inc.comlcux.netlcvlife.com
+lcxwfc.com
+lcxzyy.com
+lcycgg.com
lcyff.com
lcylcy.cclcyp.net
+lcyrny.com
lcysc.com
+lcyyfj.com
+lczbgc.comlczm.comlczq.comlczyjsxx.com
+lczyun.com
lczyy.com
ld-pd.com
ld-powder.com
+ld0766.comld12366.com
ld173.com
ld246.comldaq2005.comldbc.net
+ldbmcs.com
ldcc.site
ldcms.com
+ldd.me
lddengine.com
lddgo.net
+ldfdcw.comldgbetq.lolldgdhhu.lol
+ldgrlx.sbs
+ldgs0i.lolldgsitg.lol
+ldgslb.com
+ldgslu.lol
+ldgtlz.lolldgyscu.lol
+ldgzn6.lol
ldhrd.com
ldj-edujy.comldkj-zs.com
+ldkqyy.com
ldmap.net
ldmnq.comldplayer.netldqiztr.com
ldqxn.comldseals.comldshijie.com
ldshj.com
+ldsink.com
+ldszpx.net
ldtec.com
ldteq.comldwxiao.comldxiang.com
+ldycdn.com
ldydh.com
ldygo.comldyh666.comldyz365.comle-feng.com
+le-wan.com
+le.comle365.cc
le5le.comle8.com
le890.com
leachchen.com
+leacol.com
lead-expo.com
+leadal.com
+leadal.netleadamc.comleadbbs.com
leadclimb.orgleadcoretech.comleader-e.com
leader609.com
leader755.comleaderhero.comleaderlawyer.com
+leadge.comleadlan.comleadong.comleadsec.clubleadshiptech.com
leadstong.com
leadvsion.com
leadwaytk.com
+leadyo.comleaferjs.comleaforbook.comleafword.comleagcard.com
leagpoint.comleagsoft.comleakeyun.comlean.renleangoo.comleanote.com
leansoftx.comleanwind.comleanyon.comleap-pc.com
leapahead.vipleapfive.com
leaping.gamesleapmie.com
leapmotor.comlearn-quantum.comlearndiary.comlearnfuture.comlearning-archive.orglearningsj.comlearsun.com
leatherhr.com
leb-china.comlebanban.com
+lebang.com
+lebang.net
+lebilp.comlebinwl.comlebocode.com
+lebome.comleboweb.com
lecai.comlecai08.com
+lecake.comlechain.comlechange.com
leche.com
lechebang.com
lechengdz.comlechinepay.comlechuangzhe.comlecloud.comlecloudapis.comlecoinfrancais.orglecomposites.comleconiot.com
lecoo.comlecuntao.com
+led118.com
+led661.comledanji.com
+ledcax.comledchina-sh.com
+ledctl.comlede.comledemai.comledguhon.comledhyzm.com
ledianduo.com
ledianyun.com
lediaocha.comledo.comledouwan.comledouya.com
+ledsdk.com
ledth.comledu.comledu365.comleduimg.comlee-tieguo.com
+leeaon.com
leeco.comleefanmr.com
+leehon.com
+leeleo.vipleenzhu.comleeon.meleepoint.netleeshen.netleesoar.com
+leesou.comleetcode-cn.comleetcodechina.com
+leevol.com
leevy.netleewiart.com
lefang365.comlefanglj.com
+lefeng.comleffercode.com
+leftfm.comleftlady.comleftshadow.com
+leftso.comlefuzuwu.com
legendsec.com
legendtkl.com
+zz9ivb.comlegou456.comlegowechat.comlegu.cclegu168.comleguelc.com
+leguyu.comleha.comlehaigou.comlehaitv.comlehe.comlehecai.comlehibay.com
+lehihi.comleho.com
lehu.hostlehuadisplay.comlehuipay.comlehuiso.com
+lei001.com
leibei.cc
leiboyiqi.comleidazhifu.com
leidianip.comleifengshi120.com
+leigod.comleihetg.com
+leihuo.net
+leijun.comleikeji.comleilei3dprinter.comleileiluoluo.comleilong158.com
leimi.comleimingtech.comleimingtelab.com
leimudata.comleiniao.comleiniao365.comleining-shield.comleiouxiong.comleiphone.com
leipi.orgleishen-lidar.comleishencloud.comleishenhuyu.com
leishouwin.ccleisnael.comleisoon.com
leisu.comleisu123.comleisuapi.comleisurelypanda.com
leitaibio.comleiting.com
leitingcn.comleitingjunshi.comleitool.com
leiue.comleixiaofeng.net
+leixue.com
leiyanhui.comleiyunge.comleiyunge.net
lejiachao.com
+lejian.comlejianweike.comlejiaolexue.comlejingxuan.comlejj.comleju.comlejunwl.com
lekannews.com
+lekevr.com
lekkrrlel.comlekoukou.com
+lelaer.com
lelai.comlelbzwa.comlele-lezhong.comlelecdn.com
+leleda.com
+leledp.comlelehuyu.comleleketang.comlelelala.netlelepyq.com
+leletv.com
+leletv.net
+lelewl.comlelinly.com
lemai.comlemaker.com
+lemall.com
+lemedu.comlemeitu.com
lemeng.centerlemengcloud.com
+lemicp.comlemiwan.com
lemiyigou.comlemo360.comlemobar.com
+lemoes.comlemonban.comlemonpiggy.comlemonplus.asialemonttt.comlemonyd.com
+lemote.com
lempstack.comlemurbrowser.comlenauth.comlenbenelectric.comlenciel.comlendy520.comlenfocus.comlengcanghe.comlengcat.com
+lenget.comlenglengyu.comlengliwh.comlengshuiji.orglengxiaohua.com
lengyankj.comlengzzz.com
lening100.com
leniugame.com
leniy.orglenosoft.net
lenovator.com
+lenovo.comzz96269.com
+lenovo.netlenovocloudos.comlenovoeservice.comlenovogame.com
lenovohci.comlenovohuishang.comlenovoimage.comlenovomm.comlenovomobile.comlenovonetapp.comlenovonowgo.comlenovoprinter.comlenovoprinter.netlenovosj.comlenovots.com
lenovouat.com
lenovowap.comlenovows.com
lenovozdl.com
+lensuo.com
+lenwoo.comlenzhao.comleo-mannequins.comleo.moe
leoao-inc.com
leoao.comleoartmannequins.comleoboard.comleocode.netleolin86.comleonblog.net
+leoogo.comleopump.comleowu.onlineleozwang.comlepaicm.comlepaiok.com
lepiaoyun.com
leptv.comleqi.us
+leqian.comleqiaobh.comleqiaobhyy.com
+leqiku.comleqiuba.comlequ.com
lequ7.comlequanip.com
+lequgo.comlequyuanyi.com
lequz.com
+lequzh.com
+lercar.com
+lergao.com
+lergle.com
leric.net
+lerist.devlers123.comlers168.comlers168.netlersang.com
lerye.comlesejie.com
leshangzx.comleshanvc.comleshi123.comleshiguang.comleshizyimg.com
+leshow.comleshuazf.comleshuwu.comlesimao.net
+lesjob.comleslie-cheung.com
+lesofn.comlesports.comless-bug.com
less-more.netlessisbetter.site
+lestcg.com
+letabc.com
letaikeji.com
letang666.com
letaofang.netletbonchina.comleteuav.comletfind.comletianbiji.comletianshanec.comletinet.com
leting.ioletotur.com
+letou8.comletouba.comletoursport.comlets-study.comletsebuy.comletsfilm.orgletsgaga.comletsinno.comletsvisa.comlettercloud.netletuinet.comleturich.orgletushu.comletv.com
letv8.comletvapp.netletvcdn.com
letvcloud.comletvimg.com
+letvlb.comletvlive.com
+letvps.com
letvstore.comletwind.com
letwx.com
letyo.com
leuok.comlevc.com
+levect.comlevel8cases.comlevelinfinite.com
+levenx.comlewaimai.com
+lewang.ltd
lewangame.net
+lewbin.comleweibo8.comleweicn.comlewen.la
+lewenba.cclewenlou.la
+lewenn.comlewenqu.comlewenxsw.com
+lewifi.comlewujian.com
lexar.comlexiaigame.comlexiang-asset.com
lexiangla.comlexiangzuji.com
lexin.comlexinchina.com
lexpq.com
lexue.com
lexueying.com
lexun.com
lexun.netlexuntimes.comleya920.com
+leyaep.com
leyantech.comleyaoyao.comleyaoyao.org
+leyard.com
leybc.comleyi007.comleyifan.com
+leying.com
leying365.comleyingtt.comleyishandong.comleyixue.com
+leyonb.comleyoujia.com
leyouquan.comleyue100.comleyun001.comleyuncp.com
leyungame.comleyunge.comleyuxyz.com
leyuz.com
lezai.com
+lezhao.com
lezhi.comlezhi99.comlezhibo.comlezhiot.comlezhiyun.comlezhuan.comlezhuan168.comlezhuan365.comlezhudai.comlezhufenqi.com
+lezhun.comlezi.com
+lezuan.netlezuan9.comlezuocai.com
lf126.net
lf127.netlfacdwm.comlfan.net
lfang.com
lfbxw.comlfcharge.com
lfcmw.com
+lfdjex.comlfex.comlfhacks.comlfhospital.netlfhsheng.com
+lfhygl.com
+lfjsly.com
+lfjx88.com
+lfkjgh.comlfksqzj.com
+lflwpq.com
lfmxc.com
lfppt.com
+lfqysm.com
lfszk.com
+lftdzd.comlfungame.com
lfwin.com
lfwx1.com
lfx20.comlfxpxzn.comlfyx.inklfyzjck.comlfzx.net
+lg1024.com
lg198.com
lg199.com
+lg5.colg5.com
lgbzj.com
lgcdz.comlgctshanghai.comlgdisplayproduct.comlgdxtech.com
+lgexam.comlghd111.comlghlncl.com
lgimg.com
lglmf.com
lglmf.netlgmi.com
+lgo100.com
lgpic.comlgpj.netlgrcbank.com
+lguohe.comlgwy.net
lgxly.comlgyudiao.com
+lgzowo.com
lgzzu.com
lh-lx.comlh.link
lh168.netlh17.netlh75.com
+lhao88.com
lhasa.icu
lhave.com
lhbgchina.comlhcreditevaluation.comlhcy168.com
+lhdbgs.com
+lhdown.com
lhdxz.com
lhg35.com
+lhh.la
+lhhycm.com
lhjyy.com
+lhjzlw.com
+lhkaye.comlhl.zonelhl7.comlhmp.cclhp-cdn-game.onlinelhp-cdn-update.online
lhratings.comlhrbszb.comlhs-arts.org
lhs11.com
lhs99.comlhsdjxy.com
+lhsoso.com
lhswx.comlhszyxx.com
+lhwill.com
+lhwytj.com
+lhxhwl.comlhy1.xyzlhyiliao.comlhzq.com
li-ca.comli-ning.comli-world.comli.auto
li1995.onlineli63.comli91.comliageren.com
+lialiu.comlian-ou.comlianaibashi.comlianaibiji.comlianchuang.com
liancsoft.com
+lianda.funliandaomobi.comliandaquan.com
liande.cclianezs.comlianfawy.comlianfengwh.comliang520.com
liangchan.netliangchanba.comliangduiban.comlianggao.comlianghaobang.comlianghuadashi.comliangjan.comliangjiangbashu.comliangjianghu.comliangjihui.com
liangjiu.shopliangka.vipliangkun.netliangle.com
lianglong.orglianglunshijie.comliangnuo.comliangpinbiji.comliangpinriyu.comliangqikeji.comliangrisheng.comliangshunet.comliangtiancun.comlianguowang.comliangwanjianshe.comliangwei.ccliangxinyao.comliangye-xo.xyzliangyi.com
liangyuan.comliangzhishu.comliangzidongli.comliangziheikeji.com
liangzuji.comlianhaikeji.comlianhanghao.comlianhecang.comlianhejiaju.comlianhengtec.comlianhepaimai.comlianhjz.comlianjia.comlianjianxsw.com
lianjiasm.com
+lianjie.inlianjingdq.com
lianjixia.comliankaa.com
liankebio.com
+lianku.xin
lianli168.comlianlian.comlianlianlvyou.comlianlianpay-inc.comlianlianpay.comlianliantao.netlianliantaoshop.com
lianlianz.comlianlife.comlianmeng.la
lianmeng.link
lianmenhu.com
lianmishu.com
+lianni.com
+lianok.comlianouyiyuan.comlianpian.netlianpuie.com
lianpunet.com
+lianqi.netlianshijie.comlianshun.ccliansuo.comliantianhong.com
+liantu.comliantuobank.com
liantuofu.com
+lianty.comlianwen.comlianwifi.comlianwo8.comlianxiangcloud.comlianxianjia.comlianxinapp.com
lianxinkj.comlianxueqiu.com
+lianyi.comlianyins.com
lianzhong.comlianzhongmingyuan.comlianzhongyun.com
lianzhuli.com
liao1.com
+liao98.com
liaobagua.comliaocheng.ccliaochuo.comliaodajituan.comzz91.com
+liaogu.com
+liaogx.comliaojiu.netliaokeyu.comliaokong.comliaoliao.comliaoningmoduo.comliaosam.comliaoshenrc.comliaotiantu.comliaotuo.orgliaowei.netliaoxiwenhua.comliaoxuefeng.comliaoyuanchats.comliaoyuanedu.orgliaozhai.tv
lib4d.com
+lib520.comliba.com
+liba88.comlibaclub.com
libai.com
+libai7.comlibaidns.com
libaishuo.comlibao007.comlibaopay.comlibawall.comlibertynlp.com
libforest.com
libguides.com
+libinx.comlibisky.com
+liblib.artliblib.cloud
libmk.comlibomarathon.comlibreofficechina.org
+libsou.com
+libssh.com
+libsys.net
+libtop.comlibvideo.comlic-bcbc.com
licai.comlicai18.com
+licaie.comlicaifan.comlicaigc.comlicaike.comlicaiker.comlicaimofang.comlicaixu.comlicancan.com
+licaoz.com
licat.comlichangtai.comlichangtao.com
+lichee.prolichenglove.com
lichengwu.netlichenjy.comlichong.worklichuang.renlickeji.comlickscreen.comlicomsh.com
licqi.comlicstar.netlida100.comlidakang.comlideapower.com
lidepower.comlidewen.comlidihuo.com
liding.me
+lidodo.comlidoooo.comlidw.comlie.iculiebao.liveliebaoh5.com
liebaoidc.com
liebaopay.comliebiao.comliechan.comliedaoshou.com
+lieguo.com
lieguozhi.comliehunwang.com
+liehuo.netliehuosoft.comliejin99.com
lieju.com
lielb.comlielema.comliemingwang.com
+lienew.com
+liepin.comliepincc.comliepinoverseas.com
+lierda.comlierfang.com
liermusic.comlietou-edm.comlietou-static.com
+lietou.com
lietou007.com
lietuwang.com
liewen.cc
liewen.laliexing-ai.comliexing.comliexiulive.com
+lieyou.comlieyouqi.comlieyuncapital.comlieyunwang.comliezhun.comlif8.com
lifan.comlife365.comlifebook.redlifediary.shop
+lifeeu.comlifegatemedicine.com
+lifegc.com
lifeng.inlifeofguangzhou.com
lifesense.comlifetimecables.com
+lifetm.comlifetmt.comlifetmt.netlifetmt.org
+lifeup.vip
+lifevc.com
lifevccdn.comlifeweeker.com
+lifeyk.com
+liffmp.comlifotronic.com
lifox.netlifushop.com
+lifves.com
+lighos.comlight-player.comlight3moon.comlightalk.comlightcss.comlighte-tech.comlightgx.comlighthg.comlighting-china.netlightingchina.com
lightinit.comlightky.comlightlygame.com
lightonus.comlightpassport.comlightstrade.comlightxi.comlightyy.com
+liguda.com
+liguhd.com
liguosong.comlihaoshuyuan.comliheng1688.comlihetong.comlihongcctv.com
+lihtao.com
lihua.comlihuadonghua.com
lihuasoft.net
lihui.net
+lihuia.comlihun66.com
+liigou.comlijiabaijc.comlijiabrasstube.comlijianan.comlijiangbooks.comlijiangcun.comlijiangriver.comlijiejiaju.comlijigang.comlijinghua.clublijingquan.netlijinxincai.comlijinzhang.comlijishi.com
lijizhong.comlikamao.com
likangwei.comlikeacg.comlikebuy.comlikecha.comlikechuxing.com
+likecs.comlikeface.comlikefar.comlikefont.com
+likeji.netlikejianzhan.comlikelic.com
likepoems.comlikeshare-tech.comlikeshuo.com
+liketm.comliketry.comlikewed.comliking.site
likingfit.comlikoujiaju.com
+likuli.com
+likuso.comlili.cclilin-electric.comlilinwei.com
lilishare.com
+lilisi.com
+lilith.comlilithgame.comlilithgames.comlilosrv.com
lilvb.com
lilygo.cclilysamericandiner.com
lilysgame.comlimaoqiu.com
limax.comlimebenifit.comlimewtea.com
+limian.com
+limiku.comliminglight.comliminjie714.com
liminwang.comlimit-animation.comlimless.comlinakesi.com
linaoyiqi.com
+linban.comlinbaoshuwu.comlinchangyu.com
+lincoc.comlindapatent.comlindybag.com
line-gate.com
line0.comlinearbuyic.comlinearmotor.netlineartracklight.com
+linecg.com
+linecg.netlineget.sitelinekong.comlinelayout.comlinestartech.comlinewell.comlinewow.com
+linfan.comlinfeicloud.comlinfeng.techling-shi.com
lingaoren.com
lingb.net
lingbao-e.comlingceu.com
lingd.comlingdai.name
+lingdi.netlingdiankanshu.colingdianksw.comlingdong.netlingdongwuliu.comlingdu.lovelingduan-sh.comlingdunwang.comlingduohome.comlingduzuji.com
+lingdz.comlingfengyun.comlingganjia.comlinghit.com
linghitai.comlinghuidzsw.com
lingji666.comlingjiaocheng.comlingjing.comlingjingxingzhe.comlingjiptai.comlingjoin.comlingkaba.com
+lingki.netlingkou.comlingkou.xyz
lingkuyun.com
+lingla.comlinglingkaimen.comlinglong.devlinglongart.comlinglonglife.comlinglongtech.comlingmeijie.com
lingmovie.comlingnanpass.com
lingosail.comlingostarcdn.com
lingphone.net
lingquanb.comlingrengame.com
+lingrn.com
lingruipc.comlingshangkaihua.comlingshi.comlingshimiyu.comlingshoujia.comlingshulian.comlingsky.comlingsoul.comlingtan.vip
lingtaoke.com
+lingti.comlingtiao.com
lingtings.com
lingtong.infolingtool.com
+lingtu.comlingtuan.com
lingualeo.comlingumob.comlinguoguang.com
lingw.net
+lingwh.comlingwu66.com
lingxi360.comlingxianfund.comlingxicloud.comlingxigames.comlingxingcai.comlingxingkj.com
lingxmall.com
+lingyi.orglingyiitech.comlingyiliebian.com
lingyinsi.com
lingyinsi.orglingyuan.designlingyue-digital.comlingyuecloud.comlingyuedianzi.comlingyun.netlingyun5.com
lingyunip.comlingyunquan.comlingyuok.comlingzhanwenhua.comlingzhilab.comlingzhitech.comlingzhtech.comlinhaiwangdai.comlinhuatz.comlinhuiba.com
+lining.comlining0806.com
linjia.me
+linjie.org
linjieapp.com
+linjin.netlinjunlong.comlink-ai.tech
link-nemo.com
+link27.comlink2lib.comlink2shops.comlink3.cclinkadsapi.com
linkbook.tech
linkbroad.comlinkbux.com
linkchant.comlinkchic.comlinkchina.hklinkdesign.tech
linkdialy.comlinkease.comlinked-f.com
linkedbyx.comlinkedhope.comlinkedin-event.comlinkedkeeper.comlinkedme.cc
linkedsee.comlinkenfaqiu.com
linker.cclinkernetworks.comlinkeye.netlinkfinancier.comlinkflowtech.comlinkfruits.com
linkfunny.comlinkgou.com
+linkh5.com
+linkh5.xyzlinkheer.com
linkiebuy.comlinkingcloud.com
linkingme.comlinkist.netlinknewideas.comlinkoing.com
linkontek.comlinkpai.comlinkpro.techlinkrall-trk.comlinkresearcher.comlinks-china.comlinkscue.comlinksdao.com
linksgood.comlinkshop.comlinksoon.net
linkstars.comlinkstec.com
linksunet.comlinktech.hklinktmd.comlinktom.net
+linktt.comlinkudp.com
linkunbin.comlinkunjc.comlinkvfx.com
linkwebll.comlinlikuaipao.comlinlongyun.com
linlongyx.comlinmi.cclinmujianghome.com
linni.comlinnsea.comlinnyou.comlinovel.net
linovelib.com
linpx.comlinquan.infolinqujob.comlinroid.comlinruanwangluo.com
lins-bros.comlinshang.comlinshigong.com
linsn.comlinstitute.netlintai.techlintcode.com
+lintey.com
lintongrc.comlinuo-paradigma.comlinuopv.comlinuser.comlinux-code.com
linux-ren.org
+linux.zonelinux178.comlinux265.com
+linux5.net
+linux6.comlinux78.comlinuxba.comlinuxbaike.comlinuxbaodian.comlinuxboy.net
linuxcool.comlinuxde.net
linuxdiyf.comlinuxdot.netlinuxea.com
linuxeden.comlinuxeye.comlinuxfly.org
linuxgogo.comlinuxidc.comlinuxidc.netlinuxmi.comlinuxmingling.comlinuxpanda.techlinuxpk.comlinuxprobe.comlinuxrumen.comlinuxsir.comlinuxso.com
linuxtone.orglinuxyunwei.comlinuxyw.comlinwenfa.com
linx-info.comlinxingyang.netlinxinke.com
linyafeng.comlinyang.comlinyekexue.net
linyi.netlinyiren.comlinyizhizhiyuan.comlinyouquan.netlinyufan.com
linzhou.storelinzhuotech.com
linzhuxin.comlinzihy.comlion1ou.techlionaka.com
lionelliu.com
+lionit.netlionmobo.comlionmobo.netlionsgx.com
+lipian.com
+lipiji.comlipilianghang.com
lipin.comlipin010.comlipin51.comlipin58.comlipinduihuan.com
lipro.com
lipro.netlipu.net
+lipush.comlipuxixi.comliqinet.comliqinyi.com
+liquan.com
+liqucn.comliquidnetwork.com
liqun.vip
liqunshop.com
+liqwei.com
lirenliye.comliriansu.com
+liriji.com
+lirui.name
lis99.com
lisdn.comlisheng.goldlishengstone.comlishi-test.com
+lishi6.com
+lishi7.comlishibk.comlishichunqiu.comlishicloud.comlishiip.com
lishiming.netlishiren.comlishirenzhi.comlishixinzhi.comlishiyixue.comlishizhishi.comlishouhong.comlishuhang.melishuhao.ltd
+lishui.comlishuichayuan.comlishuma.comlishuodq.comlisinit.com
lisizhang.comlisp123.comlistary.netlistarypro.com
listeneer.comlistenpa.comlistentide.comlistentoworld.com
listenvod.comlistong.comlisz.melitangkj.com
+litaow.comlitchon.comlite-miniprogram-1.comlite-miniprogram-5.comlitecoin.inklitecoin.renlitefeel.comlitemob.netliteng-industry.com
litian268.com
liticool.club
litilala.sitelitilala.xyz
litipumps.com
lititop.group
+litofu.comlitongsupply.comlitongtech.com
litpo.com
litten.melittle-sun.com
littleboy.netlittlefoxgroup.comlittlehero.xyz
littleqiu.netlittleroost.netlittlesheep.comlittleswan.comlituo666.comlituohj.com
liu-kevin.comliuayuan.com
liubaiapp.com
liubaocha.com
+liubo.liveliuchengguanli.comliuchengtu.comliuchengtu.netliuchuo.net
liudan520.comliudanking.comliudaoxiang.comliudatxt.comliudatxt.orgliudayadan.com
+liudon.com
+liudon.org
liudu.comliufanggroup.comliugao.cloud
liugejava.comliugezhou.online
liugj.com
liugm.comliugong.com
liugongac.com
liugongam.comliugonggroup.comliuguofeng.com
liuhaolin.comliujiajia.meliujian666.comliujiangblog.comliujiaoyidai.comliujijun.com
liujinkai.com
+liujto.comliujunworld.com
liujy.com
+liukai.netliukebao.com
+liulan.netliulan7.netliulanmi.comliulanqi.comliulanqi.net
liulantao.comliulian.comliuliangcanmou.comliuliangdada.comliulianggo.comliuliangguo.comliuliangjie.comliuliangka.proliulianglf.comliuliangmima.vipliuliangzu.comliulianqi123.com
liulin.cc
liulishuo.comliulishuo.work
liuliushe.netliuliuxing.com
liulj.com
liulv.netliumapp.com
liumeinet.com
liumh.comliumuzulin.comliumwei.org
liumx.comliunian.infoliunianbanxia.com
liuqh.iculiurust.comliushidong.comliusibo.comliusteel.comliusu-kyimm.comliusu.meliusugy.com
liusuping.comliut.xyz
liuts.com
liuvv.com
liuwo.com
liuxianan.com
liuxiaoer.comliuxiaofan.comliuxing.comliuxingw.comliuxinli.com
liuxiting.com
liuxuchao.com
+liuxue.com
liuxue114.com
liuxue360.comliuxue51.netliuxuegang.siteliuxuehksg.comliuxuehr.comliuxuekw.com
liuxuesmd.comliuxuetown.com
liuxueyun.comliuxuezx.com
liuxx.comliuyang.comliuyangfcw.comliuyanzhao.comliuyifei.cc
liuyimin4.comliuyixiang.comliuyude.comliuyuechuan.comliuyunliumeng.comliuyuntian.comliuzaoqi.comliuzhihang.comliuzhixiang.comliuzhosoft.comliuzhoufushan.comliuzhoukaichuang.comliuzhouleiyi.com
liuzhourm.comliuzhousteel.comliuzhuni.comliuzongyang.com
+liuzuo.comliuzy88.comlive-era.com
live-voip.com
+live123.cclive800.comliveapp.inklivecdnstatic.com
livechina.comlivecourse.comliveinau.comliveincy.com
+livejh.com
+liveme.comlivemediav.comlivemook.comlivesone.netlivesupport24x7.com
+liveuc.netlivevideostack.comlivotre.com
liwai.comliweicar.comliweijia.comliweijituan.comliweiliang.com
liwenzhou.comliwinon.com
+liwojx.comliwoxiao.com
liwucheng.comliwucun.comliwumaoapp.comliwushuo.com
lixcx.com
+lixfaf.comlixiang.comlixiangcaifu.comlixianghuanbao.com
lixiangoa.comlixiangshu.netlixianhezi.com
lixianhua.com
lixiaocrm.com
lixiaolai.com
lixiaoskb.com
lixiaoyun.com
lixiaozhe.comlixinapp.comlixinger.comlixingyong.com
lixuan360.comlixueba.com
lixueduan.comlixuejiang.comliyan365.comliyang1.com
liyangbit.comliyanggroup.comliyangic.comliyangliang.meliyangtuopan.comliyangzone.com
liyanmobi.com
liyaochao.comliyinewmaterial.com
liyingfei.comliyingtech.comliyinka.com
liyu8.comliyuan99.comliyuan99.vipliyuanheng.comliyuanhospital.comliyuanresort.com
+liyujn.comliyunshuwu.comliyuplay.comliyx.netlizaike.comlizhaoblog.comlizhealthfirst.comlizhehaozhongyi.comlizhenauto.comlizhenwang.com
lizhi.comlizhi.fmlizhi.io
+lizhi.shoplizhi110.comlizhidaren.com
lizhifilm.comlizhifm.comlizhijitang.com
lizhilive.comlizhiqi.comlizhiqiang.namelizhiqp.comlizhiweike.com
lizhongyi.comlizi.comlizi.twlizihang.comlizikeji.viplizilaw.com
liziqiche.comlizitongxue.com
+liziwu.netlizixin.coollj-audio.comlj-bank.comlj-group.com
lj168.com
ljbao.net
ljcdn.com
ljhks.com
ljhks.netljia.comljia.net
ljimg.com
+ljjcyy.com
+ljjgdj.orgljjiaju.com
ljjlb.netljjq.com
+ljk.cc
ljlcd.comljlj.cc
ljlqw.comljmeng.site
ljqdq.com
+ljqhju.com
ljqxjjhbc.com
ljraj.com
ljrbw.com
ljsdk.comljsy2017.comljtx.com
+ljutdu.xyz
+ljw113.com
+ljwebs.com
ljwit.com
ljwlz.com
ljxww.com
+ljzfin.com
lk361.com
+lkblog.net
+lkcash.com
+lkcgyl.comlkchemical.comlkcoffee.com
+lkgame.com
+lkgshq.comlkhaowu.com
lking.icu
+lkjujm.comlkkbrand.com
+lkkcdn.com
lkker.com
+lkkued.comlklposji.net
+lkmcdk.comlkme.cc
lkong.com
lkong.netlkqihang.comlkssite.vip
+lkszj.info
+lkuaiy.com
lkyou.com
ll-hao123.comll11.com
+llcat.techlldahong.com
+llever.com
+llewan.com
llgjx.com
llgkm.com
llguangli.comllguangli30.comllhlkftzjt.com
llidc.com
llinkslaw.comlljgame.com
lljsq.net
lljyx.comllku.com
+llliii.com
+lllomh.comllmworld.net
llpdf.com
llqsq.com
llqzj.netllrj.net
llrsz.comlls.moe
+llsapp.com
+llscdn.com
+llsops.com
llsserver.comllssite.comllsttapp.comlltaohuaxiang.com
+lltllt.com
lltlp.comlltoken.com
llttc.com
+llx168.comllxj119.comllxx.cc
llxzu.comllycloud.comllzg.com
lm263.com
lm335.com
+lm9999.com
lmacc.comlmagneseshop.com
+lmanmo.com
lmanucell.com
+lmbang.com
lmbct.com
+lmbest.com
lmbus.com
+lmdk01.comlmdouble.com
lmeee.comlmf9.com
+lmgg01.com
lmjd2.app
+lmjtgs.comlmjx.net
lmjzd.comlmlc.comlmm8.comlmnsaas.comlmonkey.comlmqt.comlms.publmschina.netlmtutou.comlmtw.com
+lmubbs.com
+lmwlhh.com
+lmwljz.com
+lmylgs.comlnamphp.comlnbaiyun.com
+lnbdsc.com
lncbp.com
+lncjxy.comlncldapi.com
lncnw.com
+lndhdx.com
+lndhjx.com
+lndwkj.com
lneab.com
+lnemci.com
lnest.com
+lnfssy.com
lnfzb.com
+lngche.com
+lnglwl.com
lngqt.com
+lnhddq.com
+lnhygy.comlnicc-dl.com
lnicp.com
+lninfo.com
+lnitec.com
+lnjzxy.comlnkdata.com
+lnkdjt.com
lnlib.netlnlotto.com
lnmtc.comlnok.netlnpenger.com
lnpjw.com
lnqwe.comlnrbxmt.com
lnrcu.com
+lnrsks.com
+lnrxzs.comlnsenhai.com
+lnsent.comlnsgczb.com
+lnsqxj.xyzlnsrmyy.comlnsyrjwz.com
lntenghui.com
lntnyhgaq.com
lntvu.com
+lntycp.com
lnwoo.com
lnxmt.com
+lnxysf.comlnyahui.com
+lnydjt.com
lnyhj.com
+lnyxcj.comlnyyzyxy.com
lnzcj.com
lnzhongka.comlnzikao.com
+lnzsks.comlnzy-edu.com
lo-li.iculo97.comloac.cc
loansliml.comlocal-ip.onlinelocalizecdn.comlocatran.com
locez.comlockchat.applockfans.com
+lockin.comlockinchina.comlocklauncher.comlockscreenimg.comlocnavi.comlocojoy.com
+locoso.com
locoy.comlocoyposter.com
+locren.com
+loctek.com
+locvps.com
+locvps.netlodashjs.com
loexu.com
+loftcn.com
+lofter.com
loftshine.com
+logacg.comlogclub.com
+loghao.comlogi.imlogi100.comlogicdsp.com
logiseasy.comlogo-emblem.comlogo123.comlogo123.netlogo888.com
logo9.net
+logoaa.comlogobiaozhi.comlogodao.com
logodashi.comlogohhh.com
+logoly.prologopay.com
+logoqq.comlogoquan.comlogoshe.com
logosheji.com
+logosj.com
+logowk.comlogozhan.comlogozhizuowang.com
+logphp.comlogwing.com
lohaa.comlohalink.com
lohas-art.com
lohaslady.comlohasor.com
lohjs.com
+loho88.com
loioo.com
+loj.acloji.comloke123.com
lokenchem.com
+lokyi.name
lol99.com
+loldan.com
loldk.comloldytt.org
+loldytt.tv
lolgo.netloli.by
+loli.cloudloli.eeloli.net
loli.wikiloliapi.comlolicon.teamloliloli.moeloliloli.netlolitawardrobe.com
loljy.comlolkeng.com
lollipopo.com
+lolmax.com
lolmf.com
lolmz.com
+lolphp.comloltmall.comlolwz173.com
lolxy.comlolyculture.netlomoment.comloncent.com
+loncin.comloncinindustries.comlondon9999.comlonelystar.org
+lonery.comlong.ge
long5.com
long7.com
+longaa.com
longanlaw.com
+longau.comlongbenren.comlongbridgeapp.comlongcai.comlongchangjixiekeji.com
longcheer.comlongchen80.comlongchunbajiao.comlongclouds.comlongcore.comlongdaoyun.comlongdear.comlongdear.net
longdezhu.comlongdian.comlongduwang.comlongfor.com
longfu360.comlongguanjia.so
+longhan.cclonghoo.net
+longhu.netlonghua.netlonghufengyun.comlonghuiren.comlonghuquan.com
longhuvip.comlongigroup.comlongjcun.comlongjiazuo.comlongjisz.comlongjitour.comlongjunjiayuan.com
longk.comlongkui.sitelongkunjituan.comlongkuntech.comlonglijituan.comlonglingas.comlonglinyougou.com
+longluo.melongmaosoft.comlongmarchspace.comlongmeng.comlongmenhongfu.comlongming.com
longnanke.com
longo.ltd
+longoo.comlongpokeji.comlongquan-baojian.comlongquecdn.com
+longre.comlongruo.comlongsan.comlongshangrc.com
longsheng.comlongsheng.pwlongsheng988.com
longshine.comlongsok.comlongsto.com
longsunhd.comlongsys.comlongtaifoods.comlongtask.com
longtian.infolongtugame.com
longtuohy.comlongtuojixie.com
longu.comlongwenedu.comlongwiki.orglongwin.orglongwintoys.comlongwisedata.comlongwisepr.comlongxi-tech.net%!longxialjkashdiuhozhjksadlkfj.comlongxianwen.netlongxinglong.comlongxingweilai.com
longxinli.comlongxuan.renlongygo.comlongyin.net
longyu.cclongyucq.com
longyuedu.comlongyusheng.org
longyutec.comlongzhu.comlongzhulive.com
+longzu.com
lonhcloud.netlonleaf.comlonlife.orglonmedcn.comlontengsteel.comlontiumsemi.comloocall.comloocode.com
loodd.com
+looeen.com
looeo.com
+looeoo.com
+loogoo.com
+loohuo.com
look8.com
+lookao.comlookbaby.com
lookbravo.comlookchem.comlookcss.comlookgame.comlooking-car.comlookr.cc
+looktm.comlooktmt.comlookvin.com
loome.netloonapp.comloongdriving.comloongnix.comloongnix.orgloongshine.comloongsin.comloongson.orgloongsonclub.comloongtravel.comloongxy.comloonlog.comlooquan.comloorain.com
+loovee.com
+loowoo.comlooyuoms.comlooyush.comlopetech.netlopmall.com
lopss.com
+lopwon.comlorefree.comlorienk.com
+loring.xyzlos-angeles-escorts-4u.comlosergogogo.comlossyou.comlostali.comlostdeer.xyzlostphp.comlostsakura.com
+lot-ml.com
+lotbur.xyzlotevision.comlotianshangx.com
+lotlab.org
+lotour.com
+lotour.net
lotpc.com
+lotpen.com
+lotsmv.comlottery-sports.comlotusair.net
lotusdata.com
lotut.com
lou86.com
loubobooo.comlouding.com
louge.ltd
louislivi.com
+loukee.com
+loukky.comloulansheji.comloulanwang.com
+loupan.com
+louruo.comloushao.net
+loushi.com
lousj.com
lousw.comlouwangmuye.com
+louyue.comlovcuty.comlove.tvlove21cn.comlove3721.comlove5209420.comlove85g.comloveabc.net
+lovean.comloveapp.com
lovebizhi.com
lovebuy99.com
lovedword.comloveforvenus.comlovefree.cc
lovehaimi.comlovehhy.netlovehifi.comloveinhere.com
loveinhtw.comlovejavascript.comlovejia.winlovelacelee.comloveliao.comlovelive.toolslovelixiang.comlovelyping.comlovemojito.com
lovengame.com
loveniwed.comloveota.com
+lovepd.com
+loverr.xyzlovesec.com
loveshang.comlovesoo.orglovestu.com
loveteemo.comloveuav.com
lovev.comlovewith.melovgiin.comlovology.com
loxpo.com
loxue.comloyalvalleycapital.com
loyar.comloyi.net
loying.ccloyo.ccloyvy.cc
+lp.fyilpcheng.com
+lpcues.com
lpetl.com
+lpgjkd.com
+lph119.com
+lpllol.com
lpoml.comlpou.online
+lppoll.comlppz.comlppzimg.comlpq1688.com
lprcx.com
lprogram.site
+lpsckf.comlpsign88.com
lpswz.com
lpszl.com
+lptiyu.comlpxinjuhui.comlpxinke.comlpxt.com
+lpzine.com
lq-bm.comlq5u.comlqaafgq.com
lqabr.comlqbj.com
+lqbj66.com
lqbrb.com
+lqgrdj.com
lqhualang.comlqjob88.com
lqlst.com
lqpos.viplqqm.com
lqrcb.com
+lqsbcl.net
lqsilicon.com
+lqszxy.com
+lqtzjy.comlqxshop.comlqyaopin.com
+lqyfsx.comlqzh.me
+lqzwdj.comlqzwsqy.com
+lr-amm.comlr-link.com
+lr8888.com
lrc99.comlrcb.net
lrcku.com
lrdcq.com
+lrhold.net
lricn.com
lrist.com
+lrkdzx.comlrkj.net
lrlvs.com
+lrs001.com
lrscloud2.com
lrscloud3.comlrts.me
lrvin.com
lrykv.comls-doll.com
ls-gb.com
ls-wq.comls.link
+ls0513.com
+ls1018.com
ls102.com
+ls1935.com
ls605.com
ls666.comlsbankchina.comlsbchina.com
lsbin.com
+lsbtly.com
lsccb.com
+lscstz.comlscsw168.com
lsdzk.com
lsewj.com
lsfcj.com
lsfyw.netlsg3.comlsgenius.comlsgrandtheatre.comlsgw.comlsgwebmall.com
lsgzn.comlsh-cat.com
+lshitv.com
lshou.com
lshzj.comlsij3km.comlsit.net
+lsjgcx.com
lsjkj.com
+lsjlp8.comlsjo.comlsjrcdn.com
+lsjxck.com
+lsjxww.com
lsjyhy520.comlskejisoft.com
lskyf.com
lslfs.comlslihai.comlslkkyj.com
+lsmtjy.com
lsoli.com
lsoos.comlsplayer.com
+lsqpay.com
lsqqy.com
lsrbs.netlssggzy.com
lssjt.com
+lsszgh.comlst1000.com
+lstazl.com
+lstest.comlstt-app.comlsttapp.comlsttappmoney.comlsttapppro.comlsttappspace.comlsttappweb.comlsttappworks.com
lsttmoney.comlsttnews.comlsttonline.comlsttpro.comlsttrich.comlsttweb.com
lsttworks.com
+lstwtf.xyzlstx.viplsun.netlsuoled.comlsup.net
lswfw.com
lswld.com
+lswlsw.com
lswqw.comlsxuantong.com
+lsxxkj.netlsxz.org
+lsyart.com
lsyhh.comlszj.com
+lszjyj.comlsznkyy.comlszp.cclt-info.netlt-tree.com
lt-uv.comlt3c.com
lt7293333.com
ltaaa.com
ltaaa.netltao.comltd.com
+ltdcdn.com
+ltdlqz.com
ltdmq.comltesting.net
+ltfwzs.com
+ltggzy.comlth.xyz
ltidc.com
ltimg.net
+ltjczx.com
+ltkqjt.comltl5210.comltld.net
ltnic.com
ltoit.com
+ltopto.com
ltp-cloud.com
+ltp.ailtplayer.comltpower.net
+ltsbbs.comltsc.vipltsf.comltsj2005.com
ltski.com
+ltswxy.comlttconn.com
+lttmgc.com
+lttvip.com
ltwkw.comltwy.com
+ltxjob.comlty.funltyears.com
+ltzsjt.com
+lu.comlu0.comlu17996.comlu35.comlua.ren
lua99.comluan.maluaninfo.comluanren.com
luastudio.net
+luatos.comluba360.com
luban.cab
lubandata.comlubangd.comlubanjianye.comlubanlebiao.comlubanner.comlubanpm.com
lubanshop.comlubanso.com
lubansoft.com
+lubanu.com
+lubiao.com
+lubotv.comluboyun.comluchuang.comluchuanquan.com
+lucian.run
luciaz.melucifer.ren
+lucifr.comluck-number.com
luckeeinc.comluckforcalendar.comluckincalendar.comluckincoffee.coluckincoffee.comluckincoffeecdn.comlucklnk.comluckmail.net
luckup.cclucky286.comlucky8k.comluckyair.netluckycoffee.comluckyop.comluckysf.netluckyxp.net
+lucode.netlucy365.comlucycat.xyzlucydraw.comludashi.comludashicdn.com
+ludedc.com
ludengtyn.com
+ludeqi.comludiban.com
ludongnet.com
ludou.org
ludoworld.netludu319.comlueasygi.comluedian.com
+luexpo.com
+lueyue.com
+luezhi.com
lufangjia.comlufaxcdn.comlufengwuliu.net
lufengzhe.comluffy.cc
luffycity.comlufunds.comlugangsoft.com
+lugick.comlugouqiaojiu.comluguisc.comluguosucai.comluhao198.comluhaoche.comluhehospital.comluhu.coluhua.cc
luhuaseed.com
lujiaming.com
lujianxin.com
lujingtao.com
+lujiya.com
lujun9972.winlukachen.comlukafei.com
+lukiya.com
lukou.com
lukuanart.comlul8.comlula.fun
+lulala.com
lulaoshi.infolulinux.com
+lulu77.comlulufind.comluluhong.com
+luluju.com
+lum114.com
lumai.netlumanman1688.comlumen-chip.com
+lumiai.com
+lumin.tech
lumingtec.comlumiunited.comlumosfun.com
lunar2013.comlunchong.com
+lundao.publunkuokeji.com
lunlunapp.comlunwengo.net
lunwenlib.comlunwenschool.comlunwenstudy.comlunwentong.comlunwenxiazai.comlunzima.netluobo020.comluobo360.comluobotou.org
luobowin8.comluoboxia.comluochen.com
luochenyl.comluochenzhimu.comluodian.comluodingzhicdn.comluodw.cc
+luofan.net
+luofei.org
luogu.orgluohanacademy.comluohanyu.ccluohuedu.netluointo.comluojiaci.netluojiji.comluojilab.comluojiweiye.comluokuang.com
+luolai.comluolai.techluolaoguai.comluolatu.com
luoli.netluolicloud.comluomanyueqi.comluomapan.com
+luomor.comluoo.net
+luoohu.com
+luooqi.com
+luoqiu.comluoqiuzw.comluoshendao.com
+luoshu.comluoshuanchangjia.com
luosi.comluosifen888.comluosika.comluosimao.comluotiannews.comluotianyi.vc
luotuo101.comluotuobang.netluotuoshop.netluowandianzi.comluowave.comluoxiang.com
luoxudong.com
+luoxue.comluoyechenfei.com
luoying66.comluoyuanhang.com
+luoyue.org
luozhiyun.comluozhongxu.com
luozongle.com
lup2p.com
lupaworld.comluqidong.comlure123.comlurefans.comlurelogs.comlurenshuwx.comlurun68.com
lusen.com
luseng.cc
lushaojun.comlushifu.net
lushu.comlushuyu.sitelusongsong.com
+lussac.net
luster3ds.comlustervision.comlustre-pharma.com
luszy.com
lutao.com
luteng888.comlutongda.com
luv66.comluwei.meluweiwater.com
+lux315.comluxe.ccluxe.co
luxee.comluxemon.comluxiangdong.com
luxiangwu.netluxianpo.com
+luxiao.com
luxiaoche.comluxiwang.comluxshare-ict.com
luxtarget.comluxuqing.comluxury-ceramics.comluxury-theme.comluxury2008.comluxurybrandmall.comluxurychina.orgluxurymany.comluxuryshopwatch.com
luyanghui.comluyanhui.comluyecanyin.com
+luyihr.comluyijiaoyu.comluyinla.comluyinzhushou.com
luyor.netluyouqi.com
luyouwang.com
luyouwang.netluyouxia.com
luyusheji.comluyusoft.com
+luzexi.comluzhouok.comlv74.comlv96.com
+lvanol.com
lvbad.comlvban365.comlvbang.techlvbangdanbao.comlvbeijingtour.comlvbenma.comlvbitte.comlvcchong.comlvchanghuanbao.comlvchayun.comlvchehui.comlvcheng.com
lvcheng23.comlvchicar.com
lvdao.funlvdawei.com
lvdhb.comlvdongip.com
lvdoutang.com
lvdxs.com
lvfang.cclvfangwang.net
lvgou.com
+lvgset.comlvguang.net
lvjhx.comlvjiaoya121.comlvjinsuo.comlvjiwang.comlvjuelaw.comlvjunzx.comlvjuwangfc.com
lvke.wikilvkhouse.com
+lvkun.sitelvlian5.com
lvluowang.com
+lvlvcn.com
lvlvlvyou.com
lvmae.comzz8j.com
+lvmama.comlvmenglvye.com
+lvmifo.comlvmotou.comlvmushan.comlvnengliang.comlvpai114.comlvpin100.com
+lvping.comlvqingqichangjia.com
lvren.comlvruanjian.comlvsanxia.comlvse.comlvsenbao.comlvsexitong.comlvseyouxue.comlvshidaxia.com
lvshiguan.comlvshiminglu.com
+lvshou.comlvshunmuseum.org
lvsongguo.com
lvtds.comlvtingzs.com
lvtu8.comlvtudiandian.com
+lvtuwa.com
+lvtuwl.com
lvwan.com
+lvwang.comlvwenhan.com
lvwmb.comlvxiaoer.net
+lvxing.netlvxxing.comzz8888bb2222.comlvye.comlvye.org
lvyestudy.comlvyetong.comlvyidoor.comlvyinba.comlvyou168.netlvyou521.comlvyoubei.comlvyoukan.com
lvyounong.com
+lvyouw.net
lvysz.com
lvyuanpam.comlvyuetravel.com
+lvzeep.comlvzheng.com
lvzhuwang.com
+lw0591.com
+lw0634.net
lw208.com
+lw5188.comlw54.comlw71.com
lwccc.netlwcj.comlwd3699.com
lwdjc.com
+lweasy.comlwebapp.comlwfengji.net
+lwfjmj.com
+lwfmzh.com
+lwgfwz.com
lwgsw.comlwguitar.comlwhouse.com
lwinl.com
+lwinst.com
+lwjhql.comlwjl.comlwlm.comlwlocks.com
lwlzy.com
lwons.com
lwork.com
lwrcb.com
lwsay.comlwshuku.infolwtylqx.comlwurl.to
+lwxgds.comlwxstxt.com
zz618.com
+lx.pub
+lx.run
lx138.comzz34.com
lx598.com
lxapk.com
lxbbt.comlxbtrip.com
+lxcdns.com
lxcvc.com
lxdas.com
lxdfs.com
lxdms.com
lxdns.com
+lxdns.info
lxdns.net
lxdns.org
lxdus.com
lxdvs.com
+lxdvs.info
lxdvs.orglxdvsss.com
lxdws.com
+lxf.melxg2016.comlxhkair.comlxhuwai.comlxhuwai.net
+lxi.melxin007.com
+lxjapp.com
lxjep.com
lxkj.sitelxlinux.net
+lxs123.com
+lxs678.comlxsales.com
lxsjm.comlxtchina.comlxtuig77.comlxtuyoo.comlxtuyoogame.comlxtuyou.comlxw1234.com
lxway.com
lxway.net
+lxwlcn.comlxx-inc.comlxxm.com
lxyai.comlxybaike.comlxydemo.onlinelxydoor.com
+lxyedu.com
lxyes.comlxyl539.comlxyllawfirm.com
+lxyswl.com
+lxzjjt.comlxzrmyy.comlxzzyyy.com
+ly-eps.comly-qiche.com
+ly-sky.com
+ly.com
+ly1by1.com
ly200-cdn.com
ly200.comly2y.com
+ly39zx.com
ly522.comly93.cc
+lyagyd.comlyancafe.comlyancoffee.comlyangchuanbo.com
+lyauto.comlybdfqh.com
+lyblog.net
lybol.com
+lybtmy.com
lybus.com
lycdw.comlycheer.net
+lyclhy.com
lyd-china.comlyd6688.com
+lydaas.comlydconn.com
+lydezx.netlydhb888.com
lydsy.com
lyduanzao.com
lyecs.comlyfc.comlyfc001.com
lyfff.com
+lyfsgy.comlyfz.netlyg.live
+lyg001.com
lyg01.netlyg12371.com
+lyg321.com
+lyg800.comlygdfrcb.com
+lygfdc.com
lyggm.com
lyghi.com
+lygjdf.comlygmedia.comlygnews.comlygou.cclygrffw.com
lygtravel.comlyh8888.com
+lyhb88.comlyhendry.com
+lyhero.com
+lyhhdz.com
lyhkh.comlyhomestayinn.comlyhuadu.comlyhx.netlyjinaojixie.com
+lyjltx.comlyjunshi.comlyjwatch.com
+lyjyfw.netlyklchem.com
lykxm.com
+lylhkq.com
lylme.comlymy1684.comlynkco-test.com
+lynkco.comlynlzqy.com
lyobs.comlyou123.com
+lyouoa.comlypd.com
lypdl.comlyps.net
lypy.info
+lypyxx.comlyrc.cclyric-robot.com
+lyrics.runlyrunxiang.comlys61413145.comlysafety.com
lyshangdu.com
lyshenglu.com
lyshengwu.comlysk.net
lyskx.net
+lysqzs.comlysteel.comlysy360.com
+lysyzx.com
lythw.comlytning.xyz
lytoufang.com
lytpw.comlytq.com
+lyunle.comlyunweb.com
lyunx.com
+lyvnee.comlywanban.com
lywdm.comlywenlv.comlywf.me
+lywhxy.com
lywqw.net
+lywtpx.com
lywww.com
+lywxww.com
+lyxyxx.com
lyy99.com
+lyyapp.comlyyzyfs.com
+lyz810.com
+lyzaix.comlyzfgjj.com
+lyzhhj.comlyzp100.com
lz-qs.com
lz-redeem.comlz-risun.comlz-veoliawater.comlz12328.com
lz310.com
lz520.net
+lzabcd.com
+lzahzn.comlzailin.com
lzane.comlzarays.com
+lzbank.comlzbaosteel.com
+lzbcjt.com
+lzbhmy.com
+lzbzzc.com
+lzc369.com
lzcasting.comlzcbnews.com
lzccb.comlzcf.net
+lzcgty.comlzchcnc.com
lzchenhui.com
+lzchjs.com
+lzcits.com
+lzcrjs.comlzctbyq.com
+lzcyjt.com
lzdchotel.com
+lzdcic.comlzdd.com
+lzdfxj.com
+lzdjjd.com
lzdql.com
+lzdsmy.comlzdsqcysgs.comlzdxdyyy.com
+lzdymy.com
+lzdyyy.comlzepoch.com
+lzetyy.com
+lzeweb.com
lzfaj.com
+lzfans.comlzfcjys.com
+lzfdjt.com
lzfjq.com
+lzflqc.com
+lzfqty.comlzfssp2007.com
+lzftah.comlzfyhgm.com
+lzfzct.com
+lzghmy.comlzgjcxkj.comlzgjschool.comlzgm.com
lzgps.com
+lzgryy.com
lzhanghai.com
lzhaoteng.com
+lzhdtk.com
+lzhean.comlzhf.comlzhg.xyzlzhhuinong.comlzhjuszs.comlzhl.online
+lzhmmr.comlzhongdian.com
lzhpo.comlzhszhyy.com
+lzhtwl.comlzhuali.comlzhuigangkeji.com
lzhuinong.comlzhygame.com
+lzhyjd.comlzihospital.comlzimall.com
lzjcm.comlzjiajuw.comlzjianlong.comlzjiechuang.comlzjingda.com
+lzjldj.com
lzjmw.com
lzjoy.comlzjp.netlzjufeng.com
+lzjuhu.com
lzjyy.com
+lzkajc.com
+lzkczy.comlzkjedu.comlzklkqyy.comlzknpco.com
+lzkojj.com
lzl98.com
+lzlatc.com
+lzlcba.com
+lzlczg.com
+lzlgyy.com
+lzlhpq.comlzliuda.comlzlj.com
lzljc.comlzlmyyl.com
+lzlrxx.comlzlsfjt.com
lzlsl.com
lzlsy.comlzltong.comlzltool.comlzlxylsf.com
+lzlygs.com
lzmachine.netlzmaoliu.com
+lzmbhj.com
+lzmckq.com
lzmei.com
+lzmgkj.comlzmljdzx.comlzmoyin.com
lzmun.comlzmy123.com
+lznbjz.com
lznetease.comlznuoli.com
lzoam.com
lzolm.comlzorient.com
+lzpaqt.com
+lzpfei.com
lzppt.com
+lzqjjx.com
+lzqjsm.com
+lzqnlw.com
+lzqpwh.comlzqqpcts.com
+lzqxjx.comlzranqi.com
lzrfc.com
+lzrfhg.com
+lzrimd.com
+lzrkjx.com
+lzrmzx.comlzro.netlzsajzl.com
lzsansong.comlzsb.org
lzsey.comlzseygs.com
+lzseyy.com
+lzsfdq.com
lzsfy.com
lzsgh.com
+lzsgmf.comlzshucai.netlzsjhjx.com
lzsjr.comlzskqyy.comlzslgcj.comlzslong.comlzsmedia.comlzsmxzy.comlzsq.net
+lzsrsj.com
lzsunspot.comlzswmsj.comlztb.com
+lzteli.comlztuteng.comlztv.tvlztvnet.comlztx123.comlzvw.com
+lzw.melzweidaoyou.com
+lzwfbj.comlzwi.fun
lzwls.com
+lzwnjd.com
+lzwopu.com
+lzwsgs.comlzwx.com
lzwyg.comlzxbook.com
+lzxder.xyz
+lzxfmc.comlzxinjiu.comlzxinwenwang.comlzxishaj.com
+lzxjet.com
+lzxlgg.com
+lzxnqt.com
lzxqm.comlzxy.com
+lzyczs.comlzyd.com
+lzydby.com
lzyec.comlzyfoods.net
+lzygpm.com
+lzyhcy.comlzyhdyf.com
+lzyhjg.comlzyingyu.com
lzyisheng.comlzyizhu.comlzykfzx.com
+lzyljd.com
+lzylkf.com
+lzylqc.comlzyoushang.com
+lzyrwz.com
+lzytbl.com
lzyts.comlzyuantong.com
lzyun.vip
+lzyxfs.com
+lzyxfs.netlzyxsoft.net
lzyyy.comlzyz.fun
+lzyzbz.com
lzyzx.netlzyzxzyy.comlzzf.comlzzg365.comlzzgljj.com
+lzzhdq.com
+lzzhhq.com
lzzhongke.com
+lzzkzs.comlzzlsoft.comlzznbyq.comlzzrgas.comlzzy.net
lzzyy.comm-finder.com
m-rainbow.com m.biz
zz314.com m0.hk
+m1.run
m1315.comm176.netm186.netm188.com
m1905.com
m1938.com
+m1book.comm1ok.com
+m1page.comm1world.com
m1xia.comm2ez.com
+m2mlib.com
m2mzy.com
m2pjo.appm3-cloud.com
m3guo.comm3mk7nyo17.com
m3pk6po2q.netm448.comm4vmsozi62ifz.comm5bn.comm5stack.com
+m6.runm6tza3ip7x8zr1.comm7686d7aw5.com
+m78.com7hwocyo67.com
+m8.comm818.com
+m9.run
m90cc.comm937.comm9c7ayme59tp.comma-china.com
+ma.run
ma3office.com
+ma3you.commaa.plusmaanhui.com
+maasdk.com
mabangerp.commabaozhuyun.commabibook.com
+mabiji.commabotech.com
+mac.so
+mac169.com
+mac189.com
mac69.com
mac89.com
+macabc.comzz123456789.xyzmacapp8.com
macappbox.commacappx.com
macat.vipmacaucentral.commacauchenguangji.commacaumonthly.netmacauo2o.com
macaupass.commacbang.netmacblanc.com
macchiato.xyzmaccms.site
maccmsbox.commaccura.commacdaxue.commacgene.commacgood.com
machaojin.com
machenike.commachine-information.commachine-visions.com
machine35.commachloop.ccmachloop.commachloop.netmachmall.com
machunjie.com
macjb.com
mackentan.commackext.com
+macmao.com
+macno1.com
+macocn.com
macoshome.commacpeers.com
macrolake.commacrosan.commacrosilicon.commacrounion.com
macrowing.com
macrr.commacs.vip
macsc.commacshuo.com
+macsky.netmacv.commacw.com
macxf.com
+macxin.com
macxz.commacz.com
maczd.com
+maczhi.com
maczj.com
maczl.com
mad-infeed.jpmadaicaifu.commadailicai.com
madaomall.commadboxi.com
+madebl.commadefuns.commadeinchinastone.commadewei.com
madio.netmadisonboom.commadissonline.commadmalls.commadouvip.commadsrevolution.netmaemo.ccmaerdancdn.com
mafa.techmafaogs.commafengs.commafengwo.commafengwo.netmaff.commag10000.com
+mag998.commagcloud.net
+magedu.commagentochina.orgmagewell.commagfx-jbkk.commagi.commagic-school.commagicdata.iomagich5page.commagicleaders.com
magicneko.commagicnetmall.commagicspinning.commagicw3.commagicwatchface.commagicwinmail.com
magma.ink
magomarca.com
+magook.commagtechjournal.commaguang.net
magvision.com
mahjongai.netmahjongcup.commahjongcup.netmahoupao.com
mahua.com
mahuatalk.commahui.memai.com
+mai.tnmaianhao.com
maibaihuo.commaibangbang.netmaibaokeji.com
maibuymai.com
maibw.netmaichawang.com
+maiche.com
maiche168.commaicheme.com
maichuang.net
maicn.netmaicuole.commaidang.cool
maidangao.com
maidelong.com
maidengju.netmaideyi.commaidi.me
maidiancy.commaidige.commaidingmao.commaidixun.commaidiyun.com
+maidoc.commaidong100.com
+maidou.commaidouke.commaidrom.net
+maiduo.com
maie.name
+maifcw.com
+maifjb.com
+maigoo.com
maihaoche.com
maihaowan.com
maihaoyou.commaihuwai.com
+maijia.com
maijiakan.commaijiaw.commaijichuang.netmaijiemedia.commaikami.vip
maikr.commail163.commail4399.commaila88.commailbusinfo.commaileds.commailehudong.commailejifen.com
mailetian.com
mailianou.com
mailixing.commailizc.com
mailpanda.commailshanguo.commailyun.netmaimaidx.ccmaimaimaiw.commaimaiyouhuiquan.commaimemo.commaimemostatus.commaimiaotech.commainaer.com
maine1688.commainlandip.commainlineoffcial.commainone.commainshe.commaintao.commainwww.commainyeah.com
maipu.com
+maiqun.vipmaiqunwang.commairoot.commaisanqi.commaiscrm.commaiseed.com
maishebei.commaishitv.com
maishou88.com
maishoumm.commaisorn.com
+maisry.net
+maissn.com
maisu.vipmaisucai.com
+maitao.commaitaowang.commaitegao.commaitianquan.com
+maitix.com
+maitix.netmaitu.ccmaituan.commaitube.com
maiwe.com
+maiwei.commaiweikj.commaixhub.commaixiaba.commaixiang.netmaixiaodao.commaiya91.commaiyanju.commaiyaole.commaiyuesoft.com
maizer.pw
+maizhi.commaizhuanbao.commaiziedu.commaizigm.commaizipo.com
+maizuo.commajia99.commajiamen.commajiang520.commajilive.commajor-epoch.commajorsec.commajsoul.commaka.im
maka.mobi
makaevent.com
makaidong.com
makaiqian.com
+makeapp.co
makeblock.com
+makecn.net
+makedie.memakefang.commakefont.commakelie.commakelove.la
makeoptim.commakepic.netmakepolo.commakepolo.netmakerbio.com
makeronly.commakeronsite.commaketion.commakeweiyuan.commaking.linkmakuwang.commala123.commalabeibei.commalagis.com
+malait.commalajikuai.commaldiveszh.com
+maldun.com
malei.netmales120.commalifenlawyer.commalimalihome.netmalingguzhai.commaliquankai.commaliuliu.commall-builder.commall.com
mallchina.net
mallchina.orgmallcoo.netmallhaha.commallocfree.commallshow.netmallstaroa.commallzhe.commallzto.com
+malmam.com
malmlaser.com
+malong.com
malsmiles.com
maltm.commama100.com
+mamacn.commamahao.commamahuo.commambike.commambofello.com
mamcharge.com
+mamecn.commamicode.commamilist.com
+mamioo.com
mamsh.orgmamumall.comman.yogaman6.orgmanagershare.commanaiyi.commanamana.net
+manben.commanboker.commanchengpiaoxiang.commanction.commandao-tech.commandaom.commandaow.commandarinedu.orgmandarinhouse.commandashu.com
mande-car.commandian.commandiankan.commandudu.commanduhu.commanduwu.com
manew.commanewvr.com
+manfen.netmanfen5.commanfrottoclub.com
mangafuna.xyzmanganesenanhai.com
mangg.commangguo.commangguo168.commangguonews.commangjianghuole.com
mangocity.commangoebike.commangoent.com
mangogame.commangolm.commangomob.net
mangpielb.commangren.commangrovetreesanya.commangtuhuyu.commanguo42.commangxia.commangxuewang.commangzitian.commanibnb.commanifesize.lolmanincrisis.com
manjiwang.commankebao.commankewenxue.ccmanlaxy.commanlinggame.commanlinwood.commanluoni.com
manluotuo.com
manmanapp.com
manmanbuy.commanmango.com
manmankan.commanmeilp.commanmeng168.com
manmu.netmannian.com
+manogk.com
manongdao.commanonggu.commanongjc.commanongzj.com
+manosp.com
manpianyi.commanpowergrc.commanrong.win
manshaoco.commanshen.net
manshitea.commantewei.commantianfei.netmantusy.commanulife-sinochem.commanwuxian123.commanxiu-law.commanyacan.commanyibaojie.vipmanylaw.com
+manyoo.netmanyoujing.netmanyoukeji2024.com
manyoumao.commanyupay.commanzhan.commanzu365.com
+manzuo.commanzuocaipu.commao-shen.commao.fan
+mao.li
maobob123.commaobotv.commaobugames.com
+maodou.com
maodouapp.commaodouketang.commaoercdn.com
maofengwl.commaoflag.netmaogang.commaogepingbeauty.com
maogp.commaogumaogu.com
maogx.win
maoha.commaohaha.com
maohongdz.commaojiuxs.commaokangbio.commaokapu.com
+maoken.com
maoln.com
+maolog.com
maomaoche.com
maomaojie.com
maomaoxue.commaomaoyuanma.com
+maomob.commaopaoya.commaopuyouxi.com
maoqitian.commaoqiumail.commaoshanf.commaoshanger.com
maoshu520.com
+maotao.net
maotuying.com
maoxia007.commaoxinhang.com
maoyachen.com
+maoyan.com
+maoyan.lolmaoyanqing.com
maoye-smd.com
maoyi.bizmaoyidi.commaoyigu.commaoyingaipu.commaoyisw.com
maoyiwang.commaoyouxi.commaoyuankeli.com
+maoyun.com
maoyun.tvmaoyuncloud.com
maoyundns.commaozhuar.commaozhuashow.com
map17.com
+map456.com
+map456.net
+mapabc.com
+mapbar.com
+mapeng.net
+mapgis.com
mapgx.commaphuan.com
mapks.commaple-game.com
maple.ren
+maplef.netmapmapping.com
mappn.commaptalks.commaqingbo.commaqingxi.com
maqinnews.commararun.commarathonbm.commarine-dancer.commarinedancer.commarioall.commarioin.commariowap.commaritime-dg.commarkdown.xyz
markdream.commarketingconv.commarketingforce.commarkiapp.com
+markji.commarkjour.commarkmall.commarkmiao.commarknum.commarkorchem.com
marksmile.commarmot-cloud.com
maro6.com
+marry5.commars-block.commarshotspot.commarstor.com
+marstv.commartech365.commartin8023.commartincl2.memarto.cc marvelunlimitedresources.com
+maryek.netmas-omkj.commas10010.com
mas300275.commasadora.jpmasadora.net
masastack.com
+mascaw.com
+masdjy.com
+maseek.com
masej.commaseven.com
mashang98.commashangmai.commashangshijie.commashangxue123.com
+mashiro.memasikkk.com
+masjfc.commasjinquan.commaslong.commaspiece.commass-evo.commassclouds.commasscrunch.commassestech.commaster-ioowe-iwww.commastergo.com
masterlab.vip
mastersay.commastersim123.commastertimes.netmastodonhub.commastudio.org
masyi.com
masyunrui.commat-rev.commat-test.com
matao.commatchupexpo.commatchvs.commateair.com
mater-rep.com zz.cimath168.com
+mathcn.commathfan.com
mathleague.hk
+mathoe.commathpretty.commati.hk
matistyle.com
matlabsky.com
matoaudio.com
matocloud.com
matongxue.commatpool.commatpool.netmatrixerse.commatsuri.site
+matt33.commattia88.commattressmachinery.netmauu.me
+mawei.livemawentao.commawhome.com
max-c.com
+max232.net
maxdo.netmaxfor-tool.com
maxgj.net
+maxhub.com
+maxhub.vipmaxiang.info
+maxiang.iomaxiaobang.com
maxiaoxin.netmaximfiber.com
maxing128.commaxitas.com
+maxjia.com
+maxket.com
maxlu.netmaxng.cc
maxok.commaxowen.com
+maxpda.com
+maxqiu.commaxreader.la
maxreader.netmaxscend.commaxthon.commaxuscloud.commaxviewrealty.commaxwealthfund.com
maxwi.commaxxipoint.commay.ltd
+maya09.commaya777.commayabot.commayahuashi.com
+mayatu.com
maybe2016.commaycpay.com
+maycur.commaydeal.commaydo.groupmayerse.commayi.com
mayiangel.commayicms.com
+mayihr.com
+mayiic.com
+mayima.netmayishebao.commayishoubei.commayitek.commayitxt.com
+mayiui.com
mayiw.com
mayiwenku.commayiwsk.com
+mayiyx.commayizhuanlan.commaylove2333.com
mayshijia.commayswind.netmayunbj.commaywant.commaywonenergy.commazakii.commazc.org
mazey.net
+mazhan.commazhen.techmazhongyou.com
+mazida.com
mb-go.commb2p.commb5u.com
+mbabao.commbachina.commbadashi.com
mbadbaedu.com
+mbajyz.com
+mbalib.com
mbalunwen.netmbanggo.commbaoxian.net
mbazl.commbb0760.com
+mbb180.com
mbbrowser.commbcloud.commbd.pubmbgbook.commbgo.com
mbian.commbiaohui.commbinary.xyzmblaudio.com
+mbldbb.commblu.com
+mbmcus.com
+mbokee.com
+mbsifu.com
mbsky.com
mbtxtt.cc
mbwxzx.hk
mbysrobot.com
mbzhu.netmc-ccpit.com
mc-dj.commc-f.commc-test.commc-xborder.com mc.cc
mc361.commc7pcz7.commc91.com
mcake.com
+mcbang.com
mcbbs.net
+mcbeam.pro
+mccbim.commcchina.com
+mcchou.com
+mcd.ccmcdchina.netmcdsusan.commcdusiv.commcdvisa.commcearnmore.com
mcecy.commcfound.net
+mcfsji.commcfun.tv
mcfxw.com
mchat.com
+mchifi.com
+mchweb.net
mcidc.net
mcit.techmcjd.netmcjiansuan.cyou
+mckuai.com
mcmarkets.com
mcmarkets.netmcmaster-asia.commcminglie.cyou
+mcmssc.com
+mcmusic.hk
mcobj.commcoo.cc
+mcooks.com
mcool.com
+mcpeach.ccmcpemaster.commcpmaid.commcqy.net
mcqyy.com
mcsafebox.commcu-home.com
+mcufan.com
+mcuisp.com
+mcusky.commcuzone.com
mcuzx.net
mcw99.commcwell66.commcwshop.com
+mcx666.com
mcxzs.com
+mcyhfl.com
+mcypls.commczhihui.com
mczyz.com
+md-pms.com
zz-zigzag.com
md025.com
md5ma.com
+mdbimg.com
mdckj.com
mdddg.com
mddgh.com
+mddq05.commdeasydiagnosis.com
mdeer.commdfkyiyuan.com
mdhjs.com
+mditie.com
mdj2y.commdjyadi.commdjzryl.com
mdkj1.commdl.ink
mdmmm.com
+mdnice.commdouvip.com
+mdouwz.com
mdpda.com
+mdsmos.com
+mdsyzx.commdtu.com
+mdvdns.com
mdvoo.commdwyservice.commdy-edu.com
mdybk.com
mdydt.netmdyseducation.orgmdyuepai.com
+mdzgjx.commdzx.netme-city.com
+me.comme1.ltd
me360.com
me361.com
+me4399.com
+meadin.com
+meazhi.commeb.commebo.com
mebtf.commechatim.commechina.org
mechr.commechrevo.com
mecoxlane.com
med-water.com
+med126.com
med66.commeda.ccmedcaren.commedeming.com
mediastory.ccmediatek.commediavorous.commediaxinan.com
medicalqc.com
medicexam.netmediecogroup.com
medifinit.commeditrustbroker.commeditrusthealth.commedlinkchina.com
medlinker.com
medlinker.net
medme.netmedmeeting.orgmedproad.commedstarcorp.commedtion.commedwant.commeechao.com
meegobeta.com
+meegoe.commeekdai.com
+meeket.commeeo.iomeeshow.com
+meet99.com
+meetbf.commeetfave.commeethall.com
+meeting.someeting666.commeetingmeet.com
meetingrj.commeetlawyer.commeetsite.commeetuvip.com
meetwhale.commeetxian.commeetyoumuseum.commeetzoom.net
mefcl.commefenglife.com
mefenlife.com
megaemoji.commegagamelog.commegagenchina.commegalithwatch.com
+megcup.commegethosdigital.ccmegobike.commegomap.com
+megou8.com
meguo.commegvii-inc.com
+megvii.commei-shu.commei-shu.netmei.commei1.com
mei1.infomeia.memeianjuwang.commeiaoju.commeibai14.commeibaiwu.commeibanla.com
meibg.com
+meican.commeicanstatic.com
meichibao.commeichuanchuan.commeichuanmei.commeidaifu.commeidanylon.com
meidaojia.commeide-casting.commeidebi.commeidecloud.commeideng.netmeidunyipin.commeidusacloud.commeierbei.commeifang.commeifang8.commeigeinc.com
meigewall.com
meigongla.commeigongyun.commeiguanjia.netmeiguiauto.com
meiguiwxw.commeiguixs.netmeiguo-qianzheng.commeiguogouwu.commeiguoxiaoxue.commeiguoxq.commeiguozhuji.commeigushe.com
meih5.com
meih5.netmeihaotoutiao.commeihekoubw.commeiheups.com
meihouyun.commeihu99.commeihua.infomeihuainfo.commeihuboyue.com
meihudong.com
meihutong.commeijia51.commeijia66.com
meijiacun.com
meijiaedu.commeijialove.commeijiandaojia.commeijianpin.commeijiashang.com
meijiavip.commeijiebijia.commeijieclub.commeijiedaka.commeijiehang.commeijiehezi.commeijiequan.commeijieu.com
meijiexia.commeijiezaixian.commeijiezaixian.netmeijingjie.com
+meijiu.com
meijufans.com
meijuniao.net
+meijuq.commeijust.commeijutt.com
+meijutt.tv
meijuwuye.commeijuzj.commeika360.commeikai1979.commeikankeji.com
+meikao.commeikeda.net
meikoasdn.com
meikongte.com
meikr.com
+meiktv.commeiku123.commeilandianzi.commeiletao.com
meili-inc.commeili-oh.commeili43.commeilibaobao.commeilichengren.commeilidongnanya.commeiligx.commeilijia.com
meilijian.commeiling.com
meilishuo.com
meilishuo.net
meilisite.commeiliwan.commeiliworks.commeiliwu.com
meiljiaqi.commeilunmeijia.com
meilvtong.commeimeidu.commeimeifa.commeimeio.commeimeiriji.commeimianjiafang.commeiming8.commeimingbao.netmeimingteng.commeinenggou.com
meinuo123.com
meinv.com
meiobrand.commeionetech.commeip0.memeip4.me
+meipai.com
meipaixiu.com
+meipian.memeipian2.commeipingmeiwu.commeipuapp.commeiqiausercontent.com
meiqinedu.com
meiqiu.memeirenchong.commeiritv.netmeirixz.commeiriyiwen.commeirong.netmeirongchuang.commeirongshanghai.commeishai.commeishanjob.commeishanren.commeishe-app.com
meisheapp.com
meishesdk.com
meishi.ccmeishi13.commeishichina.commeishij.netmeishijr.commeishilife.com
meishiqin.commeishiwangluo.commeishow.com
+meishu.com
meishu163.com
meishubao.com
meishunet.commeishuquan.netmeisubq.commeisupic.commeitangdehulu.commeitanjianghu.com
meite.commeitegou.commeitianhui.commeitianzuche.commeitifagao.com
meitq.com
meitu-int.com
meitu.commeituan.commeituan.net
meitubase.com
meitudata.commeitumobile.com
+meitun.com
meituncdn.commeituo.shop
meitushop.commeituyun.commeiweibf.commeiweis.commeiweishudan.commeiwpkpu.com
+meixie.com
meixincdn.com
meixiong5.commeiyaapp.commeiyacup.com
+meiyan.commeiyan.techmeiyanstatic.com
meiye.art
meiyedana.commeiyi.aimeiyinji.vipmeiyixia.commeiyixinrui.com
+meiyou.com
+meiyue.commeiyujt.netmeiyuko.com
meiyuwang.commeizhan.commeizhanggui.ccmeizhou.commeizhou.netmeizhuhotels.commeizitu.net
meizu.com
zz-invest.com
meizu.netmeizuapi.commejorrelojes.com
meke8.commeldingcloud.commelizhi.commelon-eptc.com
+melove.netmemblaze.commemewan.commemeyin.commemeyule.com
memfiredb.commemorieslab.commemoryhere.commemoverflow.commems.mememsconsulting.commemseminar.com
memuu.com
+men.ci
menchuang.biz
menci.xyz
+meng2u.com
meng3.commeng800.commengaite.com
+mengat.commengchenghui.commengdaovip.commengdian.commengdie.commengdoc.commengdoctor.commengdodo.com
+mengfm.commenggang.com
menggaole.commenghuimengtu.com
menghunli.commengjiagames.commengjianjiemeng.commengkang.netmenglan.commenglangroup.commenglechong.commenglegame.commengmax.funmengmei.orgmengniang.tv
mengniu99.commengniuarla.com
+mengou.netmengqingpo.com
mengqiuju.commengsang.commengshitec.com
+mengso.com
mengte.onlinemengtian.commengtuiapp.commengwuji.net
+mengxi.com
mengxiang.commengxiangeka.commengxintianxia.commengxyz.commengyou.orgmengzhou.commengzhuangxiu.commengzhuboke.commenhu.iomenksoft.com
+menpad.commenpiao.com
+menqiu.commentamob.commentorsc.com
mentrends.commenubarx.app
+menwee.com
menww.com
+menwww.com
+menxue.commenyuannews.com
+meovse.com
meow.plusmeowcat.orgmepai.me
+mepcec.com
+mepoem.com
+meppon.commercedes-benzarena.com
mercitime.commereith.commergeek.commerklechina.com
+merkpd.commerroint.commescroll.com
mesdk.commeshiot.commesince.com
+mesowe.commesresearch.commessecloud.com
+mesule.commet.red
+met169.com
meta-verse.cometa-xuantan.commeta.law
+metacd.com
+metajg.com
metal-min.commetal-tube.commetalchina.commetalrevolution.commetaplanet3023.commetasecurities.commetastudioxr.com
metastudy.vipmetasyun.commetatrader4.commetatrader5.commetatube.prometax-tech.commetayuanjing.com
meten.com
+meteni.commetenk12.commeterchina.commetersbonwe.commetin520.commetnews.netmetro-3d.commetroer.commetrofastpass.com
+metstr.com
+metword.comeu95otw4967t.commeuicat.commew.funmewednesday.shopmewx.artmexicostore.onlinemexontec.net
mexue.com
+mexxum.com
meyet.net
meyum1688.commezamca.commezhiyu.commezw.commf-y.com
+mf1288.commf16813.com
mf999.com
mfangwang.com
+mfbrjc.commfbuluo.com
mfcad.com
mfcad.net
mfcpx.commfcteda.commfdl666.com
mfdns.com
+mfdzqj.commfexcel.commfg-magnets.com
+mfgchn.com
mfhcd.com
mficp.com
mfisp.com
mfjl.wiki
+mfjxcn.commfk.com
mfpad.com
+mfpjrj.com
mfqqx.com
mfqyw.commftianshanam.commftvideo.commfwxpay.com
mfxlawyer.com
mfzdb.commfzl.net
+mfzxcs.com
+mg-cdn.com
+mg-pen.commg21.com
+mg3721.commgaqehzm.com
mgcan.commgcmehzt.commgd5.com
mgdzz.commgenware.commgff.com
mgfty.com
mgfvd.com
+mgfy88.commggtech.vip
mgjianshe.commgkj.vip
+mgkjht.commgl9.com
mglip.commgmovie.net
mgmtg.commgmusic.vip
mgnav.commgnewvision.com
mgongkong.com
zz-hh.com
mgpyh.commgryekby.com
mgsdk.com
mgslb.com
mgslb.net
mgslb.orgmgsp.funmgtv.com
+mgw999.com
mgwxw.com
+mgxzsy.com
mgyxw.net
mgyyw.commgzf.com
+mgzxzs.com
+mh1234.commh160.cc
mh456.commh51.com
+mh9.cc
mhacn.com
mhacn.net
+mhaoma.com
+mhbras.commhealth100.commhfotos.commhhf.commhhf.net
+mhi-ac.com
mhimg.com
mhito.net
mhnqu.com
mhpdf.com
mhpin.com
+mhrooz.xyzmhsf.com
+mht.lamhtclub.com
mhtes.com
+mhtml5.commhukasx.commhv2.net
mhwck.commhwh168.com
mhwmm.com
mhwy2.commhxk.commhxzhkl.com
mhystatic.com
mhyun.netmhzd.ccmhzd.net
mi-ae.com
mi-ae.netmi-cache.com
+mi-cdn.commi-customer.commi-dong.com
+mi-dun.com
+mi-fds.com
+mi-fds.net
+mi-idc.com
+mi-img.commi-img1.commi-img2.commi-img3.commi-img4.commi-img5.com
mi-static.com
+mi.com
+mi0.ccmi72.netmia.commian520.commianbao.commianbaotou.com
+miancp.com
miandanbx.com
mianfeiic.commianfeiquming.commianfeissl.commianfeiwendang.commianfeiziti.commianhuatang.ccmianhuatang.lamianjue.commianjuim.netmiankousucai.commianmoi.commianshui365.commianwai.commianyangauto.commianyazulin.com
miao-lang.commiao15777790078.com
+miaobe.commiaobolive.commiaoche.commiaocode.com
miaodiyun.com
miaogongzi.ccmiaogongzi.netmiaojibrand.commiaokadm.commiaokaikeji.commiaokaiyun.commiaokan.commiaokee.commiaole1024.commiaolejieshui.commiaolingbio.commiaomaicar.commiaomiaolock.commiaomiaoxue.com
miaomiaoz.commiaomiaozhe.commiaoo.memiaopai.commiaoqulive.commiaoqutimes.commiaoshou.ccmiaoshou.commiaoshou.netmiaoshoucdn.commiaoshu5.cc
miaoshuwu.commiaoshuzhai.net
+miaoso.commiaostreet.com
miaosu666.xyz
miaov.commiaovps.commiaoweijianfei.commiaowutech.commiaoxiazai.commiaoyun.linkmiaozao.commiaozhun.commiaozhunjing.netmiaozuo.commiawycxs.com
+miaxis.net
miazhiyou.com
mibaoxian.commibokids.com
+mibugs.com
mic-s.com
micai.commicai315.commicaihu.net
micaiying.com
+micblo.com
+micecn.com
michael-j.netmichaelapp.commichong.commichplay.com
+miclle.commico.io
+micode.net
micoe.com
micro-bee.commicro-bridge.commicro-game-client.commicro-x.net
microbeee.com
microbell.commicrobt.commicrocai.orgmicrocardio.commicrochampion.com
microdiag.commicrodreams.commicrofotos.commicrofountain.commicrolensyh.commicrolz.commicronetpay.commicrorui.netmicrostern.commicrotrading.commicrovcard.com
microvirt.com
microvoip.com
microwear.commicrowoo.commicrowu.commicroxiang.commicroyan.com
microzuji.commicw.com
+micyjz.commidaapi.commidadata.commidainc.commidanyi.commidasbuy.com
midea-buy.com
midea.com
zyzxs.commideadc.commideaepayuat.com
+mideav.commideazy.com
+midian.com
+midicn.commidifan.commidifan.orgmidiyinyue.commidlele.commidongtech.commidongtech.xyzmiduiedu.commidukanshu.commidureader.com
+midust.com
+midway.runmidwayjs.org
+miecod.com
miemie.la
+miercn.commieseng.com
+mieshu.netmifangba.commifanli.commifanlicdn.com
mifei.commifen517.commifengchengshi.commifengv.commifengvv.commifengxiuchang.commifengzhibo.com
mifenlife.com
mifispark.com
+mifpay.com
mifwl.commigames.commige.tvmigelab.commiglioriorologi.com
+migood.net
migucloud.com
+migufm.commigufun.com
+migugk.com
+migugu.com
+migutv.com
miguvideo.com
+miguyu.commihan.cc
+mihanw.com
+mihayo.commihayou.commihayou.fun
+mihoyo.commihoyocg.commihoyogift.commihoyomall.commihtool.com
mihua.netmihuangame.commihuashi.com
mihuatown.commihui365.com
+mihuwa.com
miicp.com
miidc.commiidii.tech
+miidim.com
miiee.com
miiiw.com
miiiw.net
+miinaa.commiinsurtech.com
miit-icdc.org
+mij.cc
+mijia.tech
mijian360.com
mijiannet.commijiayou.commijiayoupin.commijisou.com
+mijwed.commika123.commikannovel.com
+mike-x.commikeauth.commikechee.commikechen.ccmikecrm.commikeintucson.commikeoperfect.commikesent-awareness-02.commikesent-awareness-04.commikesent.net
mikeyouxi.com
mikge.com
+mikger.commiko007.com
+mikoshu.memiku.ink
miku01.cc
+mikuac.commikublog.commikucdn.commikuclub.funmilaizu2023.commilanfushi.commilanshishang.commilanvip.commilchips.commileage.vipmilejia.commileshub.netmileweb.commilfuns.commiliantech.com
+miliao.com
+milido.vipmilihua.com
+milike.commilimao.commilimili.tv
+miliol.com
+miliol.orgmilipictures.commilitadowatch.com
+miliyo.commilkjpg.commilkplayer.commilliant.commilliway-ic.com
millnovel.commilnews.com
milo-star.commiloktv.commiloli.infomilu.commilvtong.com
+milvzn.com
mimangfei.commimayun.commimi123.vipmimi518.com
+mimidi.commimimeu.commimiteng.commimixiaoke.com
+mimiyc.net
+mimo51.com
mimoprint.commimouse.net
mimvp.comminanfw.com
+minapp.commincache.com
+mincdn.comminchengjx.comminchuangdjk.commincoder.com
+mindai.commindcherish.commindcontroles.com
mindechem.commindhave.commindmanagerchina.commindmeters.com
+mindmm.commindpin.commindray.commindshow.funmindstore.iomindway-sz.comminebbs.comminecdn.comminecraftxz.com
minegoods.commineplugin.orgmineraltown.netminerfun.com
minerhome.com
minewtech.comminfengtianfu.com
minganmed.commingbianji.commingbiao001.commingbiaohao.commingcalc.commingcha.orgmingchaoonline.commingchaoyouxi.com
mingcloud.netmingczh.commingdanwang.commingdao.commingdao.netmingdao8.commingdaocloud.commingdongman.commingfengtang.com
mingfucdn.com
mingfudns.comminghaoshangwu.commingheyaoye.commingheyiyao.com
minghezhi.comminghongkeji.comminghuafuzhi.com
minghuami.comminghuatang.comminghuaxinda.comminghuishijia.com
+mingin.commingjian.commingjian365.commingjian365.netmingjinglu.commingjuyoupin.com
+mingkj.comminglian.comminglunlaw.commingmen-tech.commingpian.bizmingpian.net
mingqi.comingqian666.commingqingguan.commingren888.commingrenxiang.commingricctv.commingshi100.commingshi100.net
mingshi51.com
mingshi58.commingshiedu.com
mingshijt.commingshiyizhan.commingsoft.netmingstar.netmingtaokeji.commingtian.com
+mingxf.commingxiaodai.commingxigu.commingxin.lifemingxingbobbin.commingxingku.commingxinglai.commingyannet.commingyantong.commingyaohui.commingyaoruci.com
mingyaweb.com
+mingyi.com
mingyihui.netmingyou360.commingyuanfund.commingyuanmuye.commingyuanyun.commingyutang.com
mingzaily.com
mingzhujs.commingzhuoedu.commingzhuxiaoshuo.com
+minhang.ccminhangshi.com
+minhow.commini-audio.commini-banana.commini-program.netminiadx.com
miniaixue.comminiapp360.com
miniappss.com
miniblink.net
minidaxue.comminidso.com
+minieye.ccminieye.techminigui.comminigui.orgminihaowan.comminiluck.comminimaituan.comminimax.chatminimaxi.commininglamp.comminip-service.comminipacs.comminiprogramadmin.com
minirizhi.comminisforum.com
+miniso.comminisoyo.com
ministudy.comminitiao.com
+miniui.comminixiazai.comminiyounger.com
+minking.ccminleai.comminlongfood.comminor-tech.comminpayment.com
minra.comminrank.com
minretail.comminshangjie.comminshengec.comminshop.commintaibank.com
mintaylor.commintmuse.commintrust.commints-id.comminunix.com
minxindai.comminxing365.com
+minxue.netminyukji.com
minyunit.cool
+minz.pressminzu56.netmiospay.com
miot-spec.orgmiotech.commipa.fun
+mipacc.commipahui.commipangwang.com
mipay.com
+mipcdn.com
mipengine.com
mipengine.org
mipkj.commiplus.cloudmippaper.commipplan.commipplan.org
mipuo.com
+mipush.commiqixuan.netmiquan.linkmiquapp.commir4399.commir6.commiracleplus.commiraclevision.netmiratama.com
+miravia.esmiredian.commirgaga.net
miri.sitemirmzhy.commirreal.net
mirrorcast.tvmirrorcn.commis1042.com
misaka.center
+misall.com
miscd.commishangkeji.com
mishuhome.com
+misiai.commisiiyoo.commiso-lab.com
mispos.ccmissevan.com
missfresh.netmisshachina.commisshcl.commissjia.net
+missku.commisstar.commissyuan.netmisuland.commisunly.com
+mitalk.com
+mitang.com
mitangbao.commitangtuan.com
mitaoping.commitaowu.com
+miteno.commitiplus.commitotoo.commitpgxvm.commitstore.netmitsuha.ren
mitsuha.spacemittrchina.commituancm.com
+mitvos.com
+mitvos.net
miued.commiui.commiuiver.commiusi.co
miuss.icumiutour.commiutrip.com
+miwifi.commix-planet.commix.moe
+mixbao.commixcapp.com
mixcm.com
mixdo.netmixian88.com
mixiaojin.commiximixi.memixin.ccmixinshe.com
+mixiong.tv
mixkr.com
+mixpwr.com
+mixrnb.commixueedu.com
mixvvideo.commiyabaobei.commiyaboke.commiyachat.com
miyanlife.commiyapay.commiyatech.commiyoushe.com
+miyouu.commiyuangz.com
miyun.commiyuncms.com
+mizhai.com
mizhe.commizhiji.commizhimedia.commizhionline.commizhizbf.vipmizuiren.com
mj110.net
+mj365.club
+mj365.site
mj365.vipmj85.commjasoft.commjbabyhome.com
+mjbpet.com
mjceo.com
+mjgxsc.com
+mjgysm.commjh5.commjia.cc
mjjcn.commjjq.commjl2010.site
+mjlong.com
mjlsh.com
mjmj8.net
mjmjm.com
mjoys.commjqishi.com
mjrui.com
+mjt288.commjtd.com
mjtom.com
mjttt.commjxhgdl.com
+mjylbj.com
mjyun.commjyx.com
+mjyxkf.com
+mjzcnd.com
+mjzhcl.commjzj.com
mk-yiliao.com
+mk2048.commk5.xyzmkaq.orgmkb0898.com
+mkdata.topmkf.com
+mkfeng.commki7rxcwmfe7c.commkih069.xyz
+mkjump.com
mkkcn.com
+mklikj.com
+mklimg.com
mkpum.com
+mkpush.commkrobot.orgmkshell.commksrvdns.commkstone.clubmksucai.commktcreator.commktdatatech.com
mktzb.com
mktzr.com
mkvcn.com
+mkwhat.com
+mkzcdn.com
mkzgk.com
+mkzhan.com
+mkzhan.net
+mkzhou.com
mkzoo.com
ml-kq.com
mlairport.commlbaikew.com
mlclb.commldiving.com
+mlexpo.com
mlgbl.commlgj.com
mlgxw.orgmlhimalayanxt.commlibaba.commlinkapp.com
mlinks.cc
mlito.com
+mlj122.com
+mlj125.com
+mlj130.com
+mlj162.com
+mlj194.com
mlj36.com
mlj55.com
mlj93.commljr.com
+mlkmba.commlkxshop.commllj.net
+mlmcms.com
mlmtz.commlnk.me
mlnrz.commlnsoft.net
+mlocso.com
mlog.club
+mlogcn.commlpingchang.com
mlrcn.com
+mlrlzy.com
+mlrzsj.com
+mlsbmw.com
mlsub.netmlt.pubmlwanwan.com
+mlwdpx.com
mlwed.commlwplus.commlwu.net
mlxks.com
+mlycdn.commlychee.com
mlyfc.netmlyfcyy.com
mlzcn.commlzs2008.com
+mm.com
mm111.net
mm131.kim
mm138.commm2hservices.com
mm3yy.commm52.net
+mm8mm8.com
mm999.com
mmall.com
mmaqa.commmarket.commmarket6.com
+mmbang.commmbang.info
+mmbang.net
mmbao.com
+mmbest.com
mmbjq.commmbread.com
mmbrw.commmc-data.commmcl.netmmcloud.com
mmcos.com
mmdtt.com
mmduo.com
mmegg.com
mmfad.com
mmfang.ccmmfi.netmmfj.commmgl.netmmgo.com
+mmgogo.com
mmgoodcar.commmhygame.commmi-shanghai.commmia.com
mmim8.com
mmimm.com
mmjbh.com
+mmkk.store
mmkou.commmllllasjd.commmmglobalgroup.com
+mmmkkm.commmmmmmm.commmmnote.com
+mmmqqm.com
mmmrz.commmmtech.com
+mmods.site
mmogg.netmmosite.com
+mmpdlg.commmqidian.com
+mms591.com
+mmsccn.com
+mmscoo.com
mmsfw.commmsk.commmsz.netmmt3000.com
mmtch.com
+mmtrix.commmtx.net
mmuaa.commmww.commmxchina.commmxiaowu.com
mmybt.com
+mmycdn.com
+mmys01.com
mmzcn.commmzh.commn-soft.commnaafjk.com
mnancheng.commnbvbqw.commnbvdfg.commnbvtgv.commndqlib.netmnengine.commnghjkiitik.cfd
+mnihyc.com
+mnjj.group
mnwww.com
mnxz8.com
mo-yu.com
mo298.commo2g.commo9.com
moage.com
mob55.commobaibox.commobaijun.com
moban.commobanhao.com
mobanjing.commobanku.com
mobanlane.commobanma.commobantiankong.commobantu.com
mobanwang.commobanyun.com
+mobaoo.netmobartsgame.commobawan.commobayke.com
+mobayx.commobcent.com
mobcloud.mobi
+mobdna.com
mobeehome.commobgroupbuy.com
+mobhui.com
mobiapp.cloudmobibao.commobibrw.com
+mobike.commobile-ease.commobileanjian.commobilebone.orgmobilegamebase.commobilegamecdn.commobilelegends.commobilemgr-global.com
mobileppp.commobiletrain.orgmobileztgame.com
mobjz.com
mobkeeper.commobking.bizmobmore.commobo168.commoboage.commobotap.com
+mobring.co
+mobrtb.commobsurl.com
+mobtou.com
+mobvoi.commocache.commocafilm.ccmocafilm.commocafilm.tv
mocartoon.commochafengbao.commochai.store
mochi.websitemochouu.commockingbot.commockuai.commocn.cc
moco-mall.commocusez.site
mocuz.commodao.cc
modao.commodao.iomodashi.netmodb.ccmodb.promodelarts-infer.com
modelevel.commodelwhale.com
modeng178.commodengtianshi.commodernavenue.commoderno2.com
modernsky.commodernweekly.commodevol.commodezone.com
+modian.commodianverse.com
modooplay.commodouwangluo.commodstart.commodulesocean.commoduyun.com
modxz.commoe-box.com
+moe.cx
+moe.im
+moe.somoe.tipsmoe.xin
+moe123.com
+moe123.net
+moe123.org
+moe321.commoeblog.vipmoeclub.orgmoecoder.com
+moedot.net
+moeelf.commoefactory.commoefantasy.com
+moefou.org
+moehot.com
moehu.org
+moehui.com
moeid.com
+moejam.com
moejp.com
+moeking.memoeli123.commoemiao.net
moeqy.commoerlong.com
+moetu.club
moetu.orgmoetuji.com
moeub.commoew.xyz
moeworld.tech
+moeyue.commoeyuuko.com
moeyy.xyz
moezu.commoezx.ccmofahou.com
+mofang.com
mofang.jpmofangchuxing.commofangge.commofanghr.com
mofangshe.commofangwang.commofangyu.com
mofavideo.commofazhu.com
moffettai.com
+mofile.commofishgames.commofmicrosoft.com
+mofoun.commofunenglish.com
mogecloud.com
mogecloud.net
mogengyun.com
mogengyun.netmogoedit.com
+mogohd.commogojob.com
mogoo.commogoroom.commogu.commogu.iomogua.comogucdn.commoguding.net
moguf.commoguilianrencdn.commogujia.commogujie.commogujie.orgmogujielive.commogumiao.com
moguproxy.commogutong.com
moguv.commoguvet.commoguyun.com
+moh.ccmoh7.commoh8.commohangkeji.net
mohou.commohu.org
mohuishou.com
moihu.com
moimg.net
moith.commojctqiv.sbsmoji.commoji001.commoji002.com
+mojicb.commojicdn.com
mojichina.com
mojichina.netmojidict.com
mojie.appmojieai.commojitest.com
mojitok-c.commojocube.commojy.xyzmok8uptsmk19.com
+mokahr.commokaoba.com
mokatyper.com
mokayuedu.commoke.commokeyjay.commoko.ccmol.inkmolbase.commolbase.net
+molcoo.commoldinginductor.commoleecel.com
+molegu.commolerose.commolesdn.com
+moliao.biz
molibaike.com
molie.commoliexpo.com
molihe.ccmolihua.netmolikankan.com
molimoli.tech
molinsoft.commoliplayer.commoliqiji.commolixiangce.com
+molizm.commolygoo.com
mombuybuy.commomentad.com
+momhui.com
+momiji.funmomishi.commommygf.commomoapk.commomobako.commomocdn.commomooyo.com
momoshifu.com
+momotn.com
momoyu.cc
+momoyu.commomoyuyouxi.commomself.club
momzs.commonengu.commonengugame.commoney-review.commoneydata.hkmonfetch.com
+mongac.com
+monhun.funmonidai.commonidata.commonknow.com
monph.commonseng.commonsterlin.commontage-tech.com
monternet.commontnets.commontres8.commontylee.ccmonv.com
+monxin.commoocollege.commooctest.netmoodmoon.commoodoon.com
+moof87.commoojing.com
+moojnn.commoolsun.com
+moomoo.commoomooequity.commoomootrustee.com
moomv.commoonbasa.commoonbitlang.com
mooncell.wikimoonflower.funmoonfly.net
mooninbox.commoonjer.commoonlian.commoonsec.commoonton.commoontonapp.com
+moonvy.commoooc.cc
+mooooc.com
+mooore.net
+moore.live
moore.ren
+moore8.commoorecat.commooreelite.commooreiot.commooreren.commoorext.com
moowo.com
+mooyuu.commop.com
+mopaas.commopair-erm.net
mopcn.com
+mopei8.commoper.me
moper.netmopicer.commopin.ccmopoint.com
+mopsky.com
mopxz.com
moqie.com
moqiehome.commoqifei.commoqikaka.commoqilin.net
+moqing.commoqipobing.com
moqu8.commoquseo.com
moquu.com
+moraex.commorange.shop
more-fish.commorechinese.cc
+moreck.com
mored.commoredian.commorefood.com
+moregy.commoreless.iomorelink.net
morequick.netmoresing.commorethan.tvmoretickets.commorevfx.commorewis.commorewiscloud.commorganstanleyhuaxin.commorgendesign.com
morigames.commorihei.net
morketing.commorketinglearn.commorketingsummit.commorning.workmorningcore.commorninghan.commorningwhistle.commorstar.netmoseacg.commoseeker.commosesenglish.com
+mosgcj.commoshanghua.netmosheng520.commoshike.com
+moshou.com
+moshua.netmoshuqiqiu.com
+mosoga.netmossimo.net
+mossle.com
+mostch.com
+mostsd.com
+mosuzi.commotanku.commotel168.commotherchildren.com
motie.commotieimg.commotiezw.commotilive.commotimaster.commotisky.comzyzw.com
moto8.com
+motooy.commototpm.commotowoo.com
+motuo2.com
+mou.gemouduqp.com
+mougor.commouldbbs.com
mouldnews.com
+moulem.com
moumi.com
mounriver.commounstar.commountor.net
+mounui.com
mouoo.commoushei.commousycoder.commout.memoutaichina.com
+movcam.commovesee.commovesky.net
moviemore.commoviereviewtoday.commovietickest.commovit-tech.commowan123.com
moweather.com
+mowowo.com
+mowuhe.commox.moemoxfive.xyz
+moxiai.com
+moxian.commoxiaoying.commoxidongman.com
+moxing.netmoxingfans.com
moxingyun.com
moxiu.com
moxiu.netmoxiwh4.commoxz.netmoyangmoyang.com
+moyann.commoye.me
moyoutang.com
+moyoyo.commoyublog.com
+moyude.ren
moyugroup.com
moyumedia.commoz8.commozartsemi.com
+mozhan.commozheanquan.commozhedun.com
mozhenhau.com
+mozhes.com
mozichina.com
+mozigu.netmozillaonline.com
mozillazg.commoziqing.commozouyan.com mp.cc
mp4ba.com
mp4cn.commp4er.cc
mp4ju.commpaascloud.commpacc.cc
mpacc.com
mpacc.netmpaidata.com
+mpass.clubmpcloudapp.commpdaogou.commpdn.fun
mpdsj.com
+mpg.de
mph11.com
mphdx.com
+mpiano.com
+mplife.com
+mplus.tech
+mpmqoj.commpmw.commpoa.vipmpopkart.commpserverless.commpweixin.netmpxiaomi.netmpxx.net
mqant.com
+mqc168.commqcoffee.com
mqjea.commqmgroup.com
+mqqurl.com
mqsyr.commqttdkx.vip
mqttx.app
+mquan.fans
mquan.fun
mquan.net
mquanquan.com
+mqxpyy.com
mqxs8.com
mqxww.commr-ping.commr5iuv.tokyomr77.commr91.com
+mrabit.commrbanana.com
mrbird.ccmrbk.tv
mrbook114.com
mrcrm.commrcywang.com
+mrdede.com
mrdoc.fun
+mrduan.com
mrenbaike.commrentea.com
mrhallacg.commrhe.net
+mrimmi.com
+mrjeke.commrjiang.com
+mrjjxw.commrlian.club
+mrlika.com
+mro365.commro9.com
+mroall.com
+mrobao.com
mrpyq.commrqf.commrqoxfvs.com
mrsta.commrtoss03.commrts.com
mru-taste.commrutaste.com
+mrvcdn.com
+mrwish.netmryunwei.com
mryys.commrzhang.sitemrzhenggang.com007.pubms08067.com
+ms2010.com
ms211.com
ms315.com
ms6666111.comms7caryw5i48t.commsanjia.com
+mscbsc.com
mscdntrip.commscodecloud.com
mscto.commsd-facing.com
msddp.commsdn.hkmsdn.im
+msfpay.commsgcarry.com
+msgtjj.commsh2020.com
mshandong.com
mshao.com
mshare.cc
mshishang.com
mshot.commshouyou.commshw.net
mshxw.com
msits.commsjingmi.commsjy123.com
mskoo.com
mslzk.commsm.moemsmartlife.com
+msmbjp.com
+msndvr.commsnyncj.commspacecd.com
+mspaper.mymspharm.com
+msrtvu.net
mssjz.commsstatic.com
+mst-jc.commstatik.commstchina.com
msudz.commsunland.commsw9.netmsweekly.commsxf.commsxf.netmsxfmall.commsxh.com
msxxg.commsy5.commsyc.cc
+msymjz.com
msyos.com
msysk.com
+mszdld.com
+mszdld.net
mszlyoozo.commszmapp.commszq.com
mszsx.com
+mszxyh.com
+mt-bbs.commt-viki.commt-wire.commt22q4s3w5.com
+mt28ss.vipmt3.commt425cc.vip
+mt56ml.vipmt77.commt888vip.com
mtadx.com
+mtavip.com
mtblj.commtbrzjwq.commtchome.commtcnsoft.com
+mtcsys.com
+mtcx99.com
+mtcxsw.com
mtcxx.com
+mtdpai.commtdpgame.com
mtedu.com
mtex.workmtgchina.commtgmcim.com
+mtguwx.xyzmthreads.com
+mti100.com
mtiancity.commtianshitong.com
mtide.net
mtime.commtimeimg.com
mtimg.net
+mting.info
mtizt.comzyzpsjz.com
mtkdy.commtketang.com
mtkpacker.com
mtksj.com
+mtm.mo
mtmos.com
mtmss.commtmssdn.commtmssdn0.com
mtmt.tech
mtmyg.com
+mtn-db.com
+mtnets.com
+mtnets.net
+mtoou.infomtschina.com
+mtsjgf.com
+mtsm12.commtspark.commtssysb.com
mttsq.commtty.com
+mtv123.commtvip.cc
+mtw.so
+mtwine.commtwl.net
mtxgx.commtxshop.com
mtxyx.com
mtxzs.com
mtyun.com
+mtzcjy.com
mtzqb.com
+mtzscp.com
mtzuichen.com
+mtzxgf.commua.ooo
+muaing.commubanjianli.commubanwan.commubixueyuan.com
mubon.netmubu.com
+mubucm.commucaipin.commucf.cc
mucfc.commuchangqing.com
muchcloud.commuchong.commuchrank.commuchunkang.com
mudgj.commudongguang.commudu.commudu.tv
mufengyue.com
muftc.com
muge.info
+mugeda.commuguacdn.com
+muguang.me
muguayuan.com
muhai.net
muhan.ltdmuhangkeji.commuhoujiemi.com
+muhuo.chat
+muidar.com
muimg.commuin.ccmuinsoft.commujihotel-beijing.commujj.usmukewang.com
mukongyun.com
+mukool.commulazim.commulightapp.commultilingual-volc.commulunspring.commuluoke.com
+mumayi.com
+mumu01.com
+mumunv.commumuxili.commundane.ink
+muniao.communling.com
munue.com
+muomou.com
mupao.commupceet.com
muqianyun.com
muqn4uxys.sbs
+muquan.commurdermysterypa.commurl.tvmurongtech.com
murphysec.commurphyyi.com
muryi.netmuselab-tech.commuselink.ccmusenxi.commuser168.com
museradio.netmusetransfer.commushafa.netmusic4x.commusicchina-expo.com
musicd.ccmusicdu.com
musicedu8.commusiceol.commusicfest4vets.orgmusicgw.com
musicheng.commusikid.commusiness.vipmuskmfycdn.com
muslimwww.commussgirl.storemustelanivalis.commustups.netmusyder.com
+mutian.netmutianyugreatwall.commutouxb.commutualhunter.com
muwai.commux5.com
muxin.funmuxiulin.commuyangkuaibao.com
muyee.commuyeseed.com
+muyewx.com
+muyi99.com
+muyidc.com
muyingjie.commuyingzhijia.commuyuanfoods.commuyuekj0.com
+muyun.workmuzhi.usmuzhibot.commuzhicao.com
muzhigame.commuzhiwan.com
+muzhun.commuzi999.commuziang.commuzijie.commuzisoft.commuziyueqiu.commuzuhui.commvad.com
+mvc188.com
mvcat.com
+mvhere.commvmaster.commvoicer.commvopri5ac153.commvorgexv.com
mvote.net
mvpdj.commvpmeta.com
+mvpsky.com
mvs-intel.commvtianshanlr.com
+mvyxws.com
+mw.com
+mw1950.com
mwadx.com
+mwave.tech
+mwcdns.commwcloudcdn.commwcloudcdn.infomwcname.com
mweda.commwjournalchina.com
+mwkhjc.commwquicio.commwrf.netmwrfabc.com
mwrfchina.orgmwstore.com
mwtee.commwtg.vip
+mww.somwyzhcdn.com
mx-fm.commx-industry.com
mx007.com
mx175.commx3g.com
+mxarts.commxbc.commxbc.net
+mxbiao.com
+mxchip.com
mxddp.commxde.com
+mxdjzj.com
+mxdraw.commxdraw3d.commxeosbvt.commxew.com
+mxguan.commxhaitao.com
mxhichina.commxifund.com
mxivi.commxjd.com
mxjinchao.commxjtedu.com
+mxjyxx.com
+mxk.cc
+mxkjai.com
mxklchina.com
mxmem.com
+mxnavi.com
mxnfq.com
mxnxs.com
mxnzp.com
mxomo.commxqe.com
mxria.commxs.commxsyzen.com
mxtcn.com
mxtronics.commxw3.commxwatch.netmxweiqi.com
mxxjh.commxyn.commxzgame.commxzx123.net
+mxzzzs.commy-3dcad.com
+my-cte.commy-imcloud.com
my-le.com
my-qcloud.com
my-summit.com
zyzkb.net
+my0511.com
+my0511.net
+my0513.com
+my0538.com
+my0551.com
+my0832.com
my089.com
my120.org
+my1616.netmy22.funmy2space.commy2w.com
my399.commy3w.com
+my4399.com
my478.com
my510.com
my51y.com
my558.netmy5v.commy68.commy7v.commy88316666.com
+my9166.commy91app.commy91game.net
+my9527.commy97.netmyagric.commyaijarvis.com
myaiwecom.commyalicdn.commyalirtc.commyanjian.commyanmarembassy.commyanonamouse.net
+myantu.com
myapp.com
myapp.ltd
+myaqsh.commyarena7.commyarowanas.com
myauth.us
mybaby100.commybabya.commybarrefitness.com
+mybdqn.com
mybjx.net
+mybosc.commyboyan.com
mybwallet.com
mybxg.commycaidan.commycaigou.com
mycaijing.commycar58.commycaraok.commycarbar.commycardgame.netmychemy.commychery.commychery.netmychinaevent.commychinaunicom.com
mychuguan.com
mychunyan.net
+myckjr.commycloudstudy.commyclub2.com
mycnc.org
mycollect.netmycolorcity.commycolorway.com
+mycoov.commycos.cc
mycos.com
mycos.net
mycos.orgmycospxk.commycosresearch.net
+mycoss.com
+mycoss.net
+mycoss.orgmycreate.net
+mycyjg.commydadao.com
mydao.net
+mydbfx.com
+mydcyj.commydeal.asiamydeershow.commydf.netmydianshijia.commydical.com
+mydict.org
+mydigi.netmydigit.net
mydigitex.com
mydiyclub.com
+mydnns.com
+mydns8.commydnser.commydnspod.net
+mydnsw.commydoc.iomydoc123.com
mydor.com
+mydown.commydreamplus.com
mydrivers.com
mydyt.com
+myecer.commyeclipsecn.commyeg360.com
myekp.netmyelasticsearch.commyeriri.commyex.ccmyezdns.com
myfans.cc
+myfdmg.commyfirstwon.com
+myfrfr.com
+myfun7.com
+myfund.commygame66.commygame82.commygame88.commygisdel.com
mygjp.commygobatv.commygolbs.com
myguancha.commygx.net
mygzb.commyhaowai.com
+myhayo.commyhc.netmyhexin.com
myhithink.com
myhjw.vipmyhkdns.com
myhkw.commyhl-china315.commyhomeok.commyhongzuan.commyhostadmin.net
myhscodes.commyhuaweicloud-custom.commyhuaweicloud-koodrive.commyhuaweicloud-obs.commyhuaweicloud.commyhuilv.commyhwcdn.commyhwcloudlive.commyhwclouds.commyhwclouds.net
+myider.commyie.me
myie9.commyilibrary.com
+myimis.commyip.lamyiplay.com
myipw.com
myir-tech.commyiroom.commyirtech.com
+myitit.com
myjianzhu.com
myjiedian.commyjishu.com
myjmw.com
myjob.commyjob500.com
+myjoit.commyjoy777.commyjujing.commyjzs666.commyk3.commykeeta.com
+mykqyy.commykscdn.commykshow.commykuaiji.commylbabao.commylguoji.com
+mylibs.orgmylightsite.com
mylike.cc
+mylike.com
mylike120.commylikesz.commylikeyk.commylitboy.com
+myliwu.net
+mylmad.commylotushealth.commylovehome.com
+mylsfw.com
+mym001.com
+mym195.com
mymaitian.commymaudio.commymember.ltdmymetal.netmymhotel.commyminapp.commymlsoft.commymofun.commymoive.com
+mymova.com
+mymuwu.netmynatapp.cc
mynb8.com
mynee.commyo.ink
myoas.com
myoas.net
myodatech.com
myoed.com
myoldtime.com
myopenwrt.org
+myoppo.commyorbita.netmyottad.commyouhua.com
+myouth.netmyouxin.com
myp17.commyp2pch.net
+mypaas.commypcrun.com
mypethome.com
+mypian.com
+mypiao.com
mypiaojia.commypitaya.com
+mypity.commypm.net
+myprad.com
mypscloud.commypsy365.commyqcloud.commyqcloud.net
myqee.commyqiantu.commyqq2024.org
+myqqjd.com
myra2.commyrb.netmyreadme.com
+myrice.com
myriptide.commyroome.com
+myrrcar.ccmyrrcar.com
myrunners.com
+mys028.com
mysbaojie.commysecretrainbow.com
mysemlife.com
+myseot.com
myshow360.net
myshow800.commyshown.com
+myshxz.commysinamail.com
+mysipo.com
mysiteres.commyslowdesign.commysm888.com
+mysmth.net
mysongktv.commysore-yoga.commyspain.orgmysqlab.netmysqlops.commysqlpub.com
myssl.com
+mystao.commystarch.commysteel.commysteel.netmysteelcdn.commysteelcms.com
mysubmail.commysunshine.ren
+mysupa.commysuperdns.com
mysvw.com
+myt126.commytaoli.com
mytechref.commythbird.commythcall.commythcare.commythidea.commythroad.netmythsman.commythware.commythware.netmytianchang.commytijian.com
mytju.commytokenpocket.vip
mytophome.com
mytoptown.commytqwpe.com
mytrix.me
+myttjp.commytv365.commytvgame.com
+myuall.com
+myubbs.commyuclass.com
+myujob.commyun.tv
+myunke.com
+myunlu.commyunying.commyvipsalon.commyvsoncloud.commywakao.commywayboo.netmyweb888.commyweimai.com
mywhh.commywinch.commywingcarpet.com
mywirebox.com
mywll.com
mywood.ccmyworld6.commyxxts.club
+myxxts.commyxycjh.com
+myxypt.commyyishu.com
myyjs.commyyoudao.commyypark.commyyx618.commyyx915.com
myyzd.commyzaker.commyzhenai.commyzhengyuan.commyzhiniu.com
myzte.commyztxyy.com
+myzybo.com
myzyy.com
+myzyzy.com
mz-oneacg.commz52.commz6.net
mzbei.com
mzbkw.com
+mzboss.com
+mzdscm.com
+mzeyes.commzfanyi.vip
+mzfile.com
mzfsm.com
mzfxw.commzgtuan.commzh.renmzhb.com
mzhen.com
mzhfm.commzhujia.com
mziychina.commzjiacheng.commzjmedia.com
mzjzs.com
mzklg.commzksgmex.com
mzlnr.com
+mzlwxw.com
+mzlx88.commznnyud.com
+mznznj.com
+mzone.sitemzotyivixv.xyz
+mzread.com
mzres.commzsky.cc
mzsmn.commzssysmyxgs.commzstatic.com
mzsvn.commztgame.com
+mztspa.com
+mztzzx.com
+mzuimg.netmzwu.com
+mzxjzp.commzxstar.com
mzyfz.commzyispmc.commzyjfcn.com
mzyun.renmzyunyin.commzzhgcc.com
mzzjw.com
mzzyk.com
+n-bros.net n.biz
n0808.com
+n12345.comn13.club
n2017.com
+n21.cc
n21ce.comn3sd.comn423.comn459.comn5w.comn63.com
n711z.sbs
n7433.comn802.com
n8hte.com
n8olw300b.sbsn9z.net na.ci
+naadou.com
+naboyi.comnachuanlab.comnacorokevalve.comnacuiwei.com
nadianshi.com
nadu8.com
naeeo.comnagagame.net
+nagain.comnagcloudcs.comnagekuai.com
nahuayuan.com
nahuo.com
+nahuo9.com
+nai.si
naibabiji.comnaibago.comnaicha99.comnaichabiao.com
+naifei.pronaifenzhiku.comnaijian.net
+naimal.com
+naimei.comnaiping.net
+naisiw.comnaitang.com
+naitta.comnaiveadmin.com
naiveblue.com
naixi.net
naixuecha.comnakedhub.com
nakedsail.comnakevip.comnalanchuanmei.comnalanxi.comnalichi.comname1688.comname2012.comnameidi.comnamejin.comnamepre.comnameserver.fitnamesilodns.comnamesilopro.comnamibox.comnamihair.comnamipan.comnamisoft.comnamitiyu.com
namoc.orgnan1688.comnanbeige.comnanbeijt.comnanbeimfycdn.com
nanbeiyou.com
nanbeiyu.shopnanbushenghuo.com
nancc.com
nanchunhz.comnandagang.cc
nandasoft.com
+nandiu.com
nandu.comnandufoundation.orgnanerjia.comnanfangfood.com
nanfu.com
nanguache.comnanguakexue.biznanguakexue.com
nangualin.comnangxia.comnanhaitoday.comnanhe111.com
+nanhua.netnanhuafunds.comnanhuangic.com
nanhufund.comnanhuhr.comnanhuyt.comnanjing.comnanjingchenxi.comnanjinghuojia.netnanjingjingxiu.funnanjingkaishan.comnanjingtianqi114.comnanjixiong.com
nankaimba.orgnanlangshengwu.com
+nanlew.comnanlive.comnanninginfo.comnanningmaidige.comnanningmhw.comnanningmuseum.comnanningnongjiao.comnanningrcw.comnanningtech.comnanningxiaoou.comnanningyouhua.comnanningyuexing.comnannjlnk.comnanobody-biolab.comnanoeast.net
+nanoer.netnanomxenes.comnanpowan.com
nanpu.vipnanputuo.com
nanqi.orgnanqiangbusiness.comnanrentu.ccnanrenvip.ccnanrenwa.comnanrenwo.net
nanrenzhi.comnanshanski.comnanshiw.com
nanss.comnantaihu.comnantong-hst.comnantongfeixu.comnantonghua.netnanwangdianlanjt.com
+nanwoo.comnanxingmac.comnanxinwang.comnanxueqx.comnanyangcable.com
nanyangpt.com
nanyangzb.comnanyinwealth.comnanyuenews.comnanyuetong.comnanzhao1.comnaobiao.com
naoda.netnaoffer.com
+naokor.comnaono.cc
naosiling.comnaozhong.netnapengzn.comnapiantian.com
+naquan.com
+naquan.orgnaradafoundation.org
+narkii.com
narochina.comnarrowad.com
+naruto.rednarutom.com
+narwal.comnarwaltech.com
+nas-ya.com
+nasack.net
nase.tech
nasge.comnasgetinfo.comnashwork.comnasinet.comnaslab.club
+nasyeo.com
+nasyun.com
nasyy.com
naszy.com
+nat123.comnatamoo.com
natapp.cc
+natapp1.cc
+natapp4.cc
natappfree.cc
+natbbs.com
natertech.com
+natfrp.com
+natgmj.comnatiandj.comnationalchip.comnationalee.com
nationsky.comnationstech.com
+natnps.comnattest-china.comnaturali.ionaturaltfc.comnaturalvision.orgnaturalwhitephoto.comnature-museum.net
+nature.comnatureholisticwellness.comnaturesvariety-china.com
+natyun.netnatywish.com
nauac.com
+nav-cn.comnavchina.comnavigastar.comnavimentum.comnavinfo.com
naxcx.com
+naxide.comnayatec.com
nayei.comnayuansu.com
nazhilong.comnazo.funnb-bailing.comnb-medicalsystem.com
+nb0817.com
nb118.com
nb301.xyz
nb591.comnba.com
+nba98k.com
nbabm.comnbahero.com
nbahi.com
+nbahjx.comnbaidai.comnball.ccnbalxhf.com
+nbaoke.comnbappliance.com
+nbaqmq.com
+nbbeer.com
+nbbiao.comnbbjack.comnbbuxiutie.com
nbcbd.comnbcentre.com
+nbchao.com
+nbchen.com
+nbcsgo.com
nbcyl.com
+nbdeli.com
+nbdeli.netnbdisco.com
nbdkj.com
nbdyf.comnbegame.comnbegame.net
nbenl.com
nbfox.com
+nbgdjt.com
+nbgong.comnbgroupllc.comnbgy.comnbhailan.com
nbhao.org
nbhechang.com
nbhky.com
+nbhuke.com
+nbhxbj.com
+nbimer.comnbjingyong.com
nbjit.com
nbjlw.com
nbjnw.com
+nbjzjn.comnbkaisheng.comnbkc-rp.comnblongzhan.com
nbmai.comnbmedicalsystem.com
+nbmiao.comnbmidun.comnbmotive.com
+nbmpzs.com
nbmyy.comnbpolytheatre.comnbqixing.com
nbren.netnbrj.com
+nbrlzy.comnbsason.com
nbshuoxue.com
+nbsp99.comnbsqbank.com
+nbszgd.comnbt.rennbtarena.com
+nbtlwl.com
+nbtzjd.com
nbudp.comnbunicom.com
nburhomes.com
+nbuser.comnbvn.com
nbvps.net
+nbw.la
nbwaf.net
nbwan.netnbwb.net
nbwbw.comnbweekly.comnbweldingtorch.com
nbwhg.com
nbwskj666.comnbwu.com
+nbxdjt.comnbxlxcl.com
nbxmz.com
+nbxsjg.com
+nbyang.com
+nbyeda.comnbyizhu.com
+nbyjrf.comnbyouth.comnc8.fun
ncacg.orgncarzone.com
ncboo.com
nccqj.com
ncderuida.comncdxbbs.com
+ncfcsa.orgncfgroup.com
+ncfimg.com
ncfjj.com
ncfstatic.com
ncfwx.com
ncfxwhjjh.comncfz.com
+nch-bg.comnchq.ccnchtech.comnciyuan.comncjc666.comncjhwygd.com
ncmem.com
+ncmtkj.com
+ncnynl.comncore.ccncpa-classic.com
ncpqh.com
+ncpssd.orgncq8.com
+ncreal.fun
+ncshxd.com
+ncsjhf.com
+ncsyco.com
nctry.com
nctvcloud.com
+nctzsj.com
+ncu.mencvt.net
+ncvtmi.comncxb.com
+ncxhrc.com
ncxuw.comncyinghuochong.net
+ncyrqs.comncyunqi.comnczfgjj.com
+nczxst.com
+nczxwl.comnd-ydsdfq-sdfqw.comnd15.comnd56.comndcimgs.com
ndcpp.com
ndcyx.comnddaily.com
+nddnrm.com
ndhys.com
ndiip.com
+ndj520.comndkybio.comndmh.comndoo.net
ndsad.comndscsoft.com
ndser.net
+ndszgb.com
nduoa.comnduotuan.com
ndzfl.com
ndzsx.comne21.com
ne365.com
+nealee.comnearbymarts.comnearcharge.comnearsnet.com
nease.netneat-reader.comneatifyapp.comnebulogy.com
+nechte.lolnedigitals.com
neeca.netneedexam.comneefood.com
+neegle.net
neep.shopneeq.ccneets.ccneeu.com
+zyzjmz.org
+neffkb.comnei-mao.com
+neigou.comneihancommunity.comneihancommunity.netneihandiantai.com
neihanfly.comneihanshequ.comneimaowang.comneimenggugames.com
neisha.cc
+neitui.comneituixiaowangzi.comnejiaoyu.comneko.pubnekorua.com
nelkshuhe.com
+nellit.netnelson-textiles.com
nelumbosp.comnengapp.comnenggeimall.comnenghaoidc.com
nengshida.comnengshouwangluo.com
+nenske.com
+nenufm.com
nenup.comneo.orgneo1989.net
neoap.comneobiochina.comneoease.comneoease.orgneofaith.net
+zyzimg.com
neohytung.com
+neojos.com
+neolee.com
+neolix.net
neoremind.com
+neosey.com
+neoyon.comnep-logistics.com
+neptcn.com
nepyb.comneqtahotelshanghai.com
+nercel.com
nerin.com
+nesbbs.comnespressochina.comnestgene.comnestlechinese.comnet-add.com
net-swift.com
net-times.netnet0516.comnet111.info
+net130.com
+net199.comnet2345.net
+net263.com
+net767.comnet9.org
netac.com
netat.netnetbian.comnetchina100.comnetcnnet.net
+netcoc.comnetconst.comnetcoretec.comnetcute.com
+netded.com
+netdzb.comnetease-inc.comnetease.com
+netease.imneteasegame.comneteasegame.netneteasegames.comneteasegames.net
netentsec.comnetesee.comnetgamecar.comnetherlandvcenter.com
nethonghe.comnetianshannu.comnetiler.comnetinbag.comnetinfi.comnetinfi.netnetitest.com
+netjue.com
+netkao.com
netman123.com
netnoease.comnetok.cc
netor.netnetpi.menetposa.com
netqd.comnetsmell.comnetspreading.com
netstatic.net
+netsun.comnetswise.com
+netsyq.com
+nettvl.net
netvp.netnetworkesl.comnetzonesoft.comneu-reality.comneucrack.com
+neuedu.com
neunn.comneuqsoft.comneusncp.comneusoft.comneutrontek.comneux.studionew-mobi.comnew-more.comnew-thread.comnew0633.com
new1cloud.com
+new253.com
+new669.comnewacademic.netnewaigou.comnewaircloud.comnewansha.com
+newasp.com
+newasp.net
+newayz.comnewbandeng.com
newbanker.com
newbd.comnewbeebook.com
newbeebox.comnewbook8.comnewcapec.netnewcentral.comnewcentury-edu.comnewcger.comnewchainbase.com
newchieve.comnewchinalife.comnewclasses.orgnewclouddenfender.comnewcoder.com
newcosemi.com
+newdao.net
newday.me
+newdon.netnewdroid.netnewdruginfo.com
newdu.com
+newdun.comnewe.tv
newer2001.comnewersuperdrover.comnewevcar.comnewgscloud.comnewharbour.net
newhb.com
newhbdoor.comnewhopeagri.comnewhopegroup.comnewhtml.net
+newhua.com
newistock.com
newjg.comnewjson.com
newkunhua.comnewlandaidc.com
newlesson.comnewlifex.comnewmaker.comnewman.mobi
newmargin.com
newnanbao.comnewnewle.com
+newniu.comnewoasis.cc
+newoer.com
newoo.com
nework360.comneworldedu.orgnewposture.vipnewqjsteel.comnews18a.comnews606.com
newsapp01.comnewsccn.comnewscctv.netnewseasoft.com
+newsgd.com
+newsgu.comnewsing.com
+newskj.com
+newskj.orgnewsletter-cn.comnewsletter-nespresso.comnewsmth.comnewsmth.netnewsmy-car.com
+newsmy.comnewsmyshop.com
newsn.net
newspluse.com
+newssc.net
+newssc.orgnewstarpress.comnewstartsoft.comnewstjk.com
+newsv5.com
+newsxc.comnewsxcar.com
+newsyc.comnewszjk.comnewtalentaward.com
newtimeai.comnewtonghua.com
newtop100.comnewtouch-elec.comnewtranx.comnewtrip.com
+newume.com
newupbank.com
+newvfx.comnewvisionvc.com
newvr.comnewwatchesale.comnewxing.com
newxitong.com
+newxue.comnewyorkluxurywatch.com
newyx.netnewzealandvscenter.com
+newzgc.com
newzhizao.comnexgenaibot.com
+nexmoe.comnexon.to
nextaifun.comnextailife.comnextclass.club
nextclass.com
+nextday.imnextjoy.comnexto2o.comnextpcb.com
+nextrt.comnextstudios.comnexttao.comnexttix.netnextvid.netnextworkshop.net
+nextyu.com
+zyzhan.comnexusedgeio.comnexushd.orgneyetwatcher.com
+neyuan.comnf.video
nf108.com
+nfc315.com
nfcic.com
+nfcmag.com
nfcreader.net
+nffund.comnflchina.comnfmedia.comnfmrtfv.com
+nfnews.comnfoservers.comnfpeople.com
nfs-china.comnfschina.com
+nfyeya.com
nfyun.vipnfzhouyi.com
nfzmy.com
nfzzh.comng-alain.com
ng021.comnga.wiki
ngaa.info
ngaa.shopngaa.topngaacdn.comngaacdn.netngaagslb.comngaagslb.net
+ngabbs.comngacn.cc
ngacn.comngarihealth.com
ngbbs.comngcgears.comngctransmission.com
+ngfans.net
+ngfcyy.com
+nggift.comngh6.comnghmesc.comnginstar.net
+ngjjtg.com
ngmyt.com
+ngnice.comngnlink.net
ngphz.comngrok.ccngrvvcr.comngty556.comngxfence.net
+nh.com
+nhaidu.com
+nhaidu.netnhcilab.com
nhcsw.com
nhdmd.comnhganggeban.com
+nhmuni.comnhnexpo.com
nhnst.com
nhooo.com
nhspd.comnhxz.com
+nhygkj.com
+nhywvr.comnhzj.comnhzs.comni8.comni93.comnianbin.comnianhua.plusniankawang.comnianlia.comnianlingjisuanqi.com
+niannz.com
+nianqin.ccnianqin123.comnianshao.meniansir.com
+niao95.com
niaobaike.comniaobee.comniaobulashi.comniaocms.comniaogebiji.com
+niaola.comniaoquan.funniaowoclub.comniaoyun.comniba.comnibaguai.com
+nibaku.com
+nibiye.comnic.rennic.xinnicaicheng.comnicaifu.comnicaifu.netnice-app.comnice1688.comnicebing.comnicebooker.comnicecdn.comnicefilm.comniceimg.netniceinno.comniceios.comniceisp.comnicekid.comniceloo.comnicesnow.com
nicetheme.xyznicetuan.netnicewatch.ccniceyea.com
nichuanbo.com
nicky1605.comnicolaszhao.com
niconiconi.ccnicotine.vipnics365.comnicsbuy.comnicwind.comnidiandaojia.com
+nie.ioniegobrand.comnielsenccdata.tvnies.orgniexiaotao.com
+nieyou.comnifengz.com
nightcity.pubnightmare.press
nihao.netnihaoafrica.orgnihaodd.comnihaotv.netnihaotw.com
nihaowang.comnihil.cc
niiam.comniiceda.com
+niiddm.comniimbot.com
+niiwoo.com
nikanpian.com
zyzaojiao.comnikebiji.com
nikkisoft.comnikkiup2u2.com
nilai.com
+nilend.com
+nilmap.comnim-lang-cn.org
nimzx.comnindeli.comninebot.com
ninecoign.comnineplaying.comnineroad.com
+ninesix.ccninestargroup.comninestarmall.com
ninetylab.comning0370.comningbo-airport.com
ningbocat.comningbofy.comningborunner.comningbotianxia.comningbotm.net
+ningdo.comningdong.comningfoo.comninghao.netningidc.comningkangyuan.comningkekeji.com
+ningma.comningmengdou.comningmengsdfysdn.comningmengyun.com
+ningto.comnington.comningxiagames.comningxiajob.comningxingxing.comningzhi.netninjacn.comninjadq.com
ninjia.onlineninthpalace360.comnio.comnioapis.comniparts.com
nipei.com
nipic.comnipponcore.comnishuoa.comnitaitag.comnittoseiki-cn.com
+nitutu.comniu.comniua.com
+niuacc.comniuaniua.com
niuap.comniubalun.com
niubb.netniubilai.com
niubilety.comniubixia.comniuboli.comniucache.com
+niucdn.com
+niuche.comniuclass.net
niucodata.com
niudai120.com
niudie.cc
niug8.comniugame.net
niugp.com
niuguwang.comniuhuagong.com
niujinniu.com
niukk.com
+niunai.comniuniu-dns.comniuniuda.vipniuniufund.com
niuniutui.comniupiano.comniupianwang.com
niupinhui.com
niupu.com
+niuqia.comniurenqushi.comniuschools.com
+niushe.com
niutk.com
niutoushe.comniutrans.comniuwatch.com
niuwk.com
niux.plus
niuxiaoer.netniuxyun.comniuyou5.comniuyuan.com
niuza.comniuzhan.comniuzhigongzuo.com
+niuzhu.comniuzhuan-test.com
nivtc.comniwodai.comniwodai.net
niwoxuexi.comnixi.win
+nixiba.com
nixingtao.comnixwang.com
nizhan888.com
+nizi88.comnizkeyboard.com
nj-bl.comnj-hust.comnj-qiyiguo.net
nj-ss.com
+nj29jt.netnjbaisou.comnjbaoxun.comnjbj888.com
njbnw.com
+njc100.comnjcdata.com
+njcedu.com
njcgs.com
njcitygas.com
+njcjzz.com
+njctcm.comnjcw.com
+njcwlk.comnjcyt99.comnjd1.comnjdapaidang.com
+njdewo.com
+njdfwb.com
+njdiip.com
+njfkdq.comnjfklngl.com
njflt.com
+njfmyd.com
njfmz.comnjgb.com
njgjj.com
+njgljy.comnjgosen.comnjgulan.com
njgzm.com
+njhcyq.com
njhengyou.comnjhgame.comnjhoutai.comnjhszoo.comnjhzypiano.com
+njibhu.com
+njjloc.comnjjn.com
+njjsyy.com
njjuntong.com
+njjydt.comnjkeeryq.comnjkefayuan.com
+njkhui.comnjkilter.comnjkoopan.com
+njl114.com
+njlg56.comnjlianyang.com
+njlike.com
njlingyun.com
+njljjy.com
+njlzsx.net
+njmama.com
+njmapp.comnjmbwxzx.comnjmuseum.comnjnewgreen.com
njodu.com
+njqxrc.comnjrx.cc
+njsech.netnjsenwo.com
njsjz.comnjsujing.com
+njsxbw.com
+njsyue.comnjtapery.com
+njtjyq.comnjtrabon.com
njtst.com
+njuftp.orgnjustar.com
njw88.com
+njwdkj.comnjweiyi6.com
+njwqqx.com
+njwuhe.com
njwww.net
njxax.com
+njxsmz.com
+njxzwh.com
+njycwy.comnjyingtaoya.comnjyule.club
+njyxdq.com
+njyydl.com
+njyzgz.comnjyzjaz.com
+njzdyq.com
njzec.comnjzhituo.com
+njzhzx.netnjzztyl.com
nkasr.comnks1688.com
+nkygty.comnkyp.com
nlark.com
nlbgt.comnlecloud.com
+nlhszc.com
nlinkline.com
nlktj.com
+nlmurf.com
nlogn.art
+nlpjob.com
+nlsc.group
+nlscan.com
+nlttms.comnlww168.comnlxfybjy.comnlxn.com
nlypx.comnlyzzzxrmyy.com
nlzpy.com
nm178.net
nm8yx.com
+nmb-bj.com
nmbcp.com
+nmboat.com
+nmbxd1.com
nmbyh.com
nmcpo.com
+nmcysp.comnmet168.comnmgbaiju.comnmgchigang.comnmgcysm.comnmgd.comnmgfood.netnmgfrank.com
+nmggyy.comnmghhjt.com
nmghtszkj.comnmghytd.com
+nmgjcy.comnmgjdxy.comnmgjyzh.comnmgkjzx.com
nmglawyer.comnmgmzys.comnmgruilian.comnmgshwl.comnmgswkj.com
nmgup.comnmgwxgs.com
+nmgwyw.orgnmgyjszx.com
nmimi.com
nmjyl.com
+nmkjxy.com
nmliao.ccnmmlresearch.xyznmnlife.comnmod.net
+nmpfkj.comnmrdata.comnmslwsnd.com
+nmtyxy.com
nmvps.com
nmwbk.com
nmweidian.com
+nmwthg.comnmxc.ltdnmzh.net
nn-jinlun.com
+nn-tct.com
+nn.comnn11022.comnn12333.com
nn1yy.com
nn1zx.comnn22772.comnn22882.com
nn2fy.com
nn2yy.com
nn3yy.com
nn4yy.comnn4z.com
+nn5itt.com
nn5yy.com
nn6yy.com
nn6zx.com
nn7yy.com
nn8yy.com
nn9yy.com
nnairport.comnnanyang.com
nnaqg.com
nnayd.com
nnbainian.comnnbanrui.com
+nnbbrn.com
+nnbcwl.comnnbdfyy.com
+nnboao.com
+nnboyi.comnnbsjyk.com
nnbtl.comnnbupin.com
nnbyg.com
+nncbre.comnncc626.comnncg1688.comnnch.netnnchuangliang.com
+nnchyy.comnncj.comnncjnkyy.com
+nncjyy.com
+nncjzc.com
+nnclgs.com
+nnclsm.com
+nncnjh.com
+nnctjj.com
+nnctjt.comnnctzcfz.comnncwsoft.com
nncxjh.ccnncydyf.com
+nncytz.comnndache.comnndascom.comnndayuan.comnnddssaaddeeyy.com
+nnddxd.comnndegas.com
+nndgzx.comnndianya.com
+nndims.com
nndjg.comnndjxcl.comnndsj.co
+nndssk.com
+nnduyi.com
+nndwjc.com
nndya.com
+nndylm.com
+nnedqp.com
nnedu.com
nnewn.com
nnfae.com
+nnfcch.comnnfcetyy.com
+nnfcxx.com
+nnfdys.comnnflkyz.comnnflzyyy.com
nnfsw.com
+nnfwwb.com
+nnfwzl.com
nnfx72.cc
+nngadt.com
+nngddz.com
+nngdjt.comnngenzhuli.com
nngeo.comnnggzxc.comnngj.com
+nngjjx.com
+nnglbj.com
+nnglhm.net
nngljc888.comnngreenscm.com
+nngrhj.com
+nngtbw.com
+nngtjx.com
nnguphoto.comnngxqscy.com
+nngyds.com
nnhaidong.com
nnhaoyuan.com
+nnhbsl.com
+nnhccc.com
+nnhccl.comnnhcszc.com
+nnhczl.com
+nnhdkj.com
+nnhdzc.comnnhengfu.com
nnhh8.comnnhhhbgs.com
+nnhhkj.com
+nnhkdz.com
+nnhlgx.com
+nnhltz.com
+nnhmcj.com
nnhongbei.comnnhpbbs.com
+nnhqcy.com
+nnhqjd.comnnhrsip.com
+nnhtsy.comnnhuaxin.comnnhuaxiong.comnnhuishi.com
+nnhwxh.com
+nnhxgg.comnnhxwygs.comnnhytyy.com
+nnhywh.com
nnhzkj888.com
nnhzt.com
nnicv.comnnipaas.comnnippsp.com
+nnit30.com
+nnjajt.com
+nnjajt.xyz
+nnjdgl.com
+nnjgsd.com
+nnjhfz.com
nnjht.com
+nnjhwy.comnnjiabaili.comnnjiangmei.com
nnjieshuo.com
nnjingchu.comnnjingda.comnnjingyuan.comnnjioko.comnnjiuji.comnnjiurun2018.comnnjiuzhidu.comnnjj120.com
nnjjk.comnnjjtgs.comnnjkjzs.com
+nnjkwy.comnnjl.comnnjmskj.com
+nnjnwg.comnnjr.co
nnjsdsoft.com
+nnjsgy.comnnjsypx.com
+nnjsza.comnnjszlsb.comnnjt.com
+nnjthx.com
+nnjtjt.com
+nnjtkt.com
+nnjtyq.comnnjuheli.comnnjunliang.comnnjuqitong.com
+nnjxbs.comnnjy100.com
nnjzd.com
+nnjzgg.comnnjzybl.com
nnkailong.com
nnkcy.com
nnkeerlab.comnnkeruan.comnnkeyuan.com
nnkgqxsly.com
+nnkhjq.com
nnkin.com
+nnkqfs.com
+nnkxnz.com
nnlanfang.com
+nnlfcm.comnnlghbkj.com
+nnlgjt.comnnlianlida.com
nnlib.com
+nnljhb.com
+nnljoa.com
+nnljsw.com
+nnljyx.com
nnlqg.com
+nnlsbl.com
nnluzhida.com
+nnlvdu.com
+nnlwoo.comnnlxart.com
nnlxs.com
+nnlyjp.com
+nnlzhs.com
+nnmama.com
+nnmhzc.comnnminghe.comnnmingsheng.comnnmingyuanyun.com
nnmjm.com
nnmov.comnnmsjdgs.comnnmutong.com
+nnmwsy.com
+nnmyst.com
+nnmzbg.com
+nnmzfy.com
+nnmzof.com
+nnmzsj.comnnn.vip
+nnn666.com
nnnbk.com
nnnen.com
+nnnews.net
+nnnfsy.com
nnngs.com
+nnnjjn.com
+nnnntv.com
nnnuo.com
nnoef.com
nnoyy.com
+nnpckj.com
nnpml.com
+nnpnzx.comnnpp.vip
+nnpxgd.com
+nnqbhb.com
+nnqcyj.comnnqh.net
nnqianfan.com
+nnqlkj.com
+nnqmjy.com
nnqsk.com
nnqtc.comnnrc.net
+nnrfjc.com
+nnrhwy.comnnridangwu.com
nnrig.com
nnrongjie.com
nnrsh.comnnruixin.com
+nnrxzm.com
+nnrydz.com
nnryf.com
+nnrzfw.comnnsanke.comnnsatai.com
nnsbc.com
nnsc6.com
+nnscsy.comnnsdygs.com
nnsenhong.com
+nnsftz.comnnsg520.com
nnsgx.com
nnshengan.comnnshenghua.comnnshzhg.comnnsirui.comnnsjcgs.com
nnsjl.com
nnsky.com
+nnsl88.com
+nnslby.com
nnslx.com
+nnslzy.com
nnsmk.com
nnsmy.com
nnsqr.com
nnsrjsnzp.comnnsssss.comnnssyjs.comnnstbss.comnnsthdc.comnnsugar.comnnsuoyu.comnnsupeng.com
+nnswdx.com
nnsxd.com
+nnsygs.com
+nnsylq.com
+nnsymy.comnnsynldc.comnnsynqzyyy.comnnsz.com
+nnszwl.comnnt0.netnntaichu.comnnthink.com
nntlj.com
+nntlyy.com
+nntobo.comnnttsoft.com
nntuobang.com
nntuogang.com
nntxw.com
+nntzgz.comnntzhbz.com
nnups.comnnwb.com
+nnwcyp.com
nnwhg.com
nnwilking.comnnwitkey.comnnwk.net
+nnwrxd.com
+nnwsgl.com
+nnwtgs.com
nnwtl.comnnwxtzgs.com
+nnwysc.com
+nnwytl.comnnxchda.com
nnxcx.comnnxczxjt.com
nnxdj.com
nnxfz.com
nnxha.comnnxinxiang.comnnxiongzhi.comnnxiyun.com
nnxjg.com
+nnxjtf.comnnxknkyy.comnnxl.net
+nnxljc.com
+nnxmbh.com
nnxqy.comnnxsypco.comnnxt.net
+nnxxzl.comnnxyyzc.comnnyarun.com
nnybf.comnnybskq.com
nnych.com
+nnydcb.com
+nnydcs.com
+nnyfjc.comnnyfyfy.com
+nnyhjc.com
+nnyhtx.com
+nnyhxl.comnnyingxuan.com
+nnyiya.comnnyjpco.com
nnykx.com
+nnylhz.com
+nnynrc.comnnyongzhou.comnnysart.com
+nnytty.com
nnyunying.com
+nnyy17.com
+nnyypc.com
nnyyq.comnnzc.net
+nnzdbz.com
nnzgh.org
+nnzghz.com
+nnzgkj.comnnzhaoguan.comnnzhenyukj.com
+nnzhnm.com
nnzhp.comnnzjjckj.com
+nnzjqc.com
+nnzkck.com
+nnzksy.com
+nnzkzs.com
+nnzljx.com
+nnzmyx.com
nnzn1.comnnzp.comnnzp.net
nnzp8.com
nnzsxblaw.comnnzw168.com
+nnzxtx.net
nnzxx.com
+nnzydq.comnnzyjob.com
+nnzykf.com
+nnzzjy.comno1news.com
no8ms.comnoahedu.com
noahgroup.com
noahsnail.comnoahsoft-vn.comnoahteck.comnobb.ccnoblefashion.hknoblove.com
+nobmoo.com
+nocang.com
+nocare.com
+noclyt.comnocobase.comnocode-tech.com
+nocode.com
node1link.xyznodeasy.comnodecall.com
+nodefu.netnodeing.com
nodejs999.comnodekey.comnodeme.sitenodepacific.comnodpcba.comnodr.ink
noeic.comnohup.ccnoipto.hostnoirphoenix.studionoizztv.comnokia-sbell.comnokia.pressnokia88.comnokparts.comnokurack.com
nolanchou.comnologo.tech
+nolovr.com
nomax.vipnome.comnomuraoi-sec.comnonganxian.com
nongbaike.netnongbaotong.comnongcun5.comnongcundating.com
nongfadai.comnongfen.comnongfuspring.comnonggan.comnongji1688.comnongji1958.com
nongji360.comnongjiao.comnongjitong.com
+nongjx.comnongkeyu.com
+nongli.com
+nongli.net
nongli114.comnonglirili.netnongmiao.com
nongmintv.comnongmuhezi.comnongnet.com
nongpin88.comnongplay.comnongquan.net
nongshang.comnongshijie.comnongxinyin.com
nongyedns.comnongyie.com
+nongyu.netnonobank.comnonozone.netnoobboss.comnoobkrf.com
+noobmb.com
+noobn6.comnoobofficial.com
+noobsb.comnoobshanhe.comnoobtime618.comnoobvip.comnoobwatches.comnoobyard.com
+noobyy.com
+noodba.com
+noogel.xyznoontec.comnoops.menooshen.com
+nootoo.comnooxion.com
nopis.orgnoposion.comnor-land.comnordfxs.comnordicic.comnordicways.comnordikr.comnordritools.comnorinco-vehicle.comnorinco.comnorincogroup-ebuy.comnoritzd.comnormcore.comnormstar.netnorsencn.comnorth30degrees.comnorthdy.comnorthgun.com
northsoar.com
nosec.org
nosub.netnosuchfield.comnosugar.technosugartech.comnot3.com
+notadd.comnotbucai.com
+note52.comnotedeep.comnoteniu.comnotetech.org
+notevm.comnotrisk.com
notusknot.com
nova-test.com
novaicare.comnovapps.comnovastargame.net
novaxinli.comnovel-supertv.comnovelfm.comnovelfmpic.comnovelfmstatic.comnovelfmvod.com
novell.menovelquickapppic.comnovelsee.comnovemideas.com
novipnoad.comnovocool.comnovosns.com
novotrail.comnovotrails.comnovtium.com
+now-cn.net
+nowapi.comnowbeta.comnowchip.comnowcoder.comnowcoder.netnowcoder.org
nowec.com
nowguitar.comnowhttps.com
+nowmsg.comnowo.comnowodds.com
nowre.comnows.funnowscore.com
nowshipin.com
+nowtop.net
nowxz.com
+zyz119.comnoxgroup.com
+noxnny.com
noxue.com
+noxxxx.comnoyes88.com
npbdp.com
+npbeta.comnpc.ink
+npc233.com
npcka.com
+nphoto.net
npidc.comnplusgroup.comnplusgroup.net
npmmirror.comnpodevelopment.org
npoll.net
+npp.ccnptpark.comnptwedding.comnpub.net
npuxs.com
npxsw.comnpz.comnq6.com
nqeft.comnqez.com
+nqiief.com
nqlai.com
+nqmoui.com
+nr-esc.comnrct.netnrdzqwd.comnrec.com
nresm.com
nrisc.com
nrkfa.com
nrsfh.comnrsg.net
nruan.com
+nrwspt.com
+ns1.hk
+ns1011.com
ns168.net
+ns222s.com
ns365.netns5n.com
ns6s6.comns8d.comns96.comnsbeta.info
+nsccsc.comnscloudwaf.com
+nscscc.com
+nscscc.org
+nsdt.cloud
nseac.comnsecsoft.comnsfocus-sase.comnsfocus.comnsfocus.netnsforce.net
nshen.netnshzpks.com
nsini.comnskfagcn.com
+nsknsk.com
nskwj.comnslifang.comnsm-electrical.com
nsoad.com
nsoft.vip
+nsrfww.com
+nsrjlb.comnsshare.comnsstream.com
nsw58.com
nsw88.com
nsw99.com
nswhj.com
+nswscp.com
+nswyun.com
nswzs.com
nsydt.com
nszmz.comnszxsyxx.com
+nt.app nt.ccnt56.netnt6y.comnt7fck19y3.com
ntaow.com
+ntc.sh
+ntcaac.comntce.com
ntcfy.com
+ntcgnj.com
ntcor.comntdingke.com
ntdvf.comntefyxq.com
+ntes53.com
+ntes53.netntescdn.comntesmail.comntesunn.com
+ntfabu.com
ntflk.com
+ntfssh.com
+ntgdct.comnthongda.com
+nthysp.com
+ntjgpx.com
+ntjhbw.comntjob88.com
ntjoy.comntjymall.com
+ntlcjd.com
ntlmy.com
+ntmlxm.comntmyexp.comntneuro.org
+ntnykj.comzyyo.net
+ntp123.comntp8.comntptimeserver.com
+ntqcct.com
+ntqfdq.comntrc.com
ntrcb.com
ntsgx.com
+ntsuye.com
ntswk.com
ntsxy.com
nttui.com
ntuiw.comntwikis.com
ntwzy.comntxx.netntxz.netntyodspt.comntyodspt.netntyswlkj.comntyy888.comntzcb2b.com
+ntzxkj.comnu1l.com
nuan.chatnuan.ionuan.orgnuandao.comnuanjiayuan.comnuannuanapp.comnuannuanzu.com
nuanpaper.comnuanque.comnuanshi100.comnuantingapp.com
nuantong8.comnuanyuehanxing.comnubb.comnubia.cc
nubia.com
+nubia.mobinucc.com
nucleisys.com
+nucset.vipnuctech.comnudaopws.comnuedcchina.com
+nufans.net
nuist.pronulifevision.comnulipin.comnullice.com
+nullno.comnum1dns.comnum2020.comnunaios.comnuobeiliao.comnuobeirack.com
nuobz.com
+nuocdn.com
nuocx.comnuodaguandao.com
nuodefund.com
+nuoder.com
nuofanpay.comnuoguangsh.com
nuoji.comnuoke147.com
nuomi.comnuomicikoi.comnuomili.comnuomiphp.comnuomisi.com
+nuonuo.comnuoshell.comnuosike.comnuoyahao.com
nuoyasite.comnuozhan.com
nuozhensh.comnupktsz.com
+nuqixi.comnuqk.com
+nuszar.xyz
nutriease.com
+nutsbp.comnutspace.comnutstore.netnutstorehq.com
+nutzam.comnuvoltatech.comnuvoton-m0.comnuvoton-mcu.com
+nuwtri.xyz
nuxtv.com
nuxue.comnuyoahbk.com
+nv2118.com
nvans.com
nvcam.net
+nvcong.com
+nvdiao.comnvdisngg-sdfsdy.comnverjiu.com
nvhuangmm.comnvidia-china.com
+nvpuse.com
+nvpuwo.com
nvsay.comnvsheng.comnvshengjie.com
nvsip.comnvwu.comnvzhanshen.com
+nvziwu.comnw-host.com
+nw0898.com
nwbbs.comnwbiotec.com
nwbwu.comnwct.menwdlink.com
nweon.comnwnthevast.netnwshotel.comnwsjwuj.com
nx-sc.com nx.cmnx5.comnxadmin.comnxcells.comnxdiaosu.com
nxdns.netnxecaiji.comnxeduyun.comnxengine.com
nxerp.comnxez.com
nxflv.comnxgangyi.comnxggzyjy.orgnxgjbyy.com
nxgqt.org
+nxgtjt.comnxhh.netnxin.com
nxist.comnxit.usnxlayer2.comnxls.comnxly766.com
+nxnews.netnxnmedia.comnxnresearch.com
nxpta.comnxrrvmy.com
nxrte.com
+nxsjgd.com
nxsyy.comnxtf.netnxtianshangb.com
+nxxdns.com
+nxximg.comnxxplayurl.com
nxxuchang.comnxxzycdn.comnxxzyimg.com
nxyqs.com
nxyqs.netnxzkjsjt.com
ny-yy.comnya.inknyaacat.com
nyato.com
nybai.comnybaidu.netnyckidsclub.com
nyfzx.com
+nygczx.com
+nyjvbs.xyz
+nylhck.xyznylingshang.comnync.comnypd520.comnyq.inknyrsksw.comnysenba.comnyshipyard.comnyshszh.comnyxg.vipnyxiecheng.com
+nyxlzy.com
nyxr-home.comnyxx365.comnyxz166.com
+nyzdjj.comnyzy.comnz86.com
nz998.com
nzbdw.com
+nzbyfz.comnzchina.com
nzcxh.comnzggroup.comnzghotel.com
nzgwo.com
nziku.com
+nzmice.comnzqyowk.com
nzsiteres.comnzw6.com
nzwgs.como--o.wino-netcom.com
o-star.cco014148q7p.com
+o0310o.com
o0o0.club
o0o0o0o0o.one
o0o0w.como136.com
o2123.como2ee.como2moment.como2o4.como2oa.neto2obill.com
+o2ocms.com
o2ocn.como2oexpo.com
+o2onet.como2packs.com
+o2ting.como34pj333kkd.shopo37o.net
+o3ndix.como43xj653r.shopo5zyk9vu2d.como6s.neto790l1uw6q.com
oa025.com
+oa0351.comoa25.org
+oa4646.com
+oa7day.com
+oa8000.com
+oa8858.com
oaahq.comoabg.netoact.netoafocus.net
+oahelp.com
+oahelp.net
+oaimai.comoait360.com
+oajdsr.xyz
oakfuture.com
oaklandjs.com
+oaloft.com
+oaloft.net
oameibang.com
oaoak.comoaqi.comoasesalliance.comoatenglish.com
oatos.com
oauto.comoawa-china.comoayqwkhg.com
+oaz.ccob-park.comobagame.com
obaku.comobd2sale.comobd2top.com
obesu.com
+obetal.com
obins.netobj6.com
objccn.io
+objcer.com
objcoding.comobkoro1.comobmncxq.comoboeforrent.com
+obolee.com
+oborad.com
+obowin.com
+obsapp.net
+obsbot.comobsworks.com
obyee.comocar.tv
+ocd120.com
oceanbase.comoceanbites123.comoceancloudapi.comoceandatas.comoceanengine.com
oceanhood.comoceanlau.comoceanol.comoceanorama.com
oceanpine.netoceanplayable.com
ocent.netocetest.com
ocici.comocideal.com
ocimg.com
+oclean.com
oclkj.com
+ocn187.comocpuritech.com
ocsjs.comoct-asia.comoct-cts.com
+oct-sh.com
+octbay.comocteshow.comoctholding.com
octhotels.com
+octinn.comoctmami.comocto.fm
octoparse.com
octopus31.comoctopusgame.com
octre.comoctsszj.comoctwuhan.comoculist.net
ocwms.comocwuaibq.com
ocz8.cyouodaily.newsodao.com
odcdr.com
odict.netodinichina.com
+odinjc.com
odinjilin.comodinliu.com
odlkj.comody8.com
odyzj.com
oealy.com
oeasy.org
+oec365.comoecd-ilibrary.orgoecr.com
oedun.com
+oeebee.com
oeeee.comoeiimw.site
oejournal.org
+oelove.com
oemao.comoempromo.comoemresource.com
+zyylee.comoeob.netoepamvxq.com
+oepkgs.net
oerv.wiki
+oesell.com
oetsi.com
+of01p1.com
+ofcard.com
+ofenka.com
offcn.com
offer-wow.com
offersloc.com
office-cn.netoffice-peixun.comoffice8hour.com
officeaid.comofficeaid02.com
officebai.com
officebay.netofficectrl.comofficese.comofficeweb365.comofficewj.comofficezhushou.com
+offodd.comoffshoremedia.net
+offside.hk
+ofgame.net
ofidc.comofo.com
+ofo.so
ofpay.comofpay365.com
ofuns.com
+ofweek.com
+ofweek.net
ofyoo.comogaoxiao.comogaqcbfi.com
+ogccdn.comogivzztz.comogsoyxg.comogxeidiv.com
oh100.comoh4k.comohaotian.com
+ohipic.com
ohltk.com
ohqly.com
ohtly.com
+ohtoai.com
ohtpc.com
ohtvu.comohucool.com
+ohwyaa.comohyee.ccoi-wiki.comoi-wiki.orgoi3g.comoi7kqn.tokyo
+oi8.ccoiaqye7985.com
oicat.comoicp.iooicp.netoicp.vip
+oicq88.com
oicto.comoidchina.org
oiine.com
oiinhand.infooilchem.net
oilcn.comoilepay.com
oilhr.comoilmooc.com
+oinbag.com
oincp.com
+oineed.comoinva5yl.comoiocklg.com
oiuwe.comoiwlnlu.com
+oiz611.com
ojcdn.com
ojhdt.comok-meeting.com
+ok0415.comok06.com
ok096.com
ok126.net
+ok1616.com
ok165.com
ok206.comok3w.netok86.comok888883.com
+ok9624.comoka-vip.comokaapps.comokad.comokada-china.comokadwin.comokaoyan.comokayapi.comokaybio.com
okbao.com
+okbase.net
+okbiao.com
okbmf.com
okbuy.com
+okcard.comokcdnns.comokchang.com
okchexian.com
okdai.com
okdcc.comokdd.net
okemu.comokex.vipokex.win
+okey06.comokeycar.com
+okgoes.comokhimalayanzi.com
okhqb.com
okidc.comokideaad.comokii.com
+okjike.comokjk.cookki.com
+okktee.comoklaapp.com
+oklink.com
+oklpoi.com
okmao.com
+okmart.comokmifeng.comokmyapp.comokng.com
okoer.com
okooo.comokoooimg.com
okpig.comokplife.com
+okpush.comokr.comokrecovery.comoks.ltd
oksec.net
okshk.comokskills.com
oksun.com
oksvn.comoktamall.com
oktjy.comoktools.xyzoktranslation.com
okuer.com
+okvnet.com
+okweb.infookwuyou.comokxr.comokyueche.comokz.com
+ol-cdn.com
+ol-img.com
olabo.net
+olacio.comolakeji.comolami.ai
+olatop.com
+olatop.net
oldboyedu.com
oldcat.meoldding.netoldj.net
oldmanemu.net
oldmantvg.net
oldpan.meole-vod.com
olecn.com
+oleony.comoli-wolong.com
oliannews.com
+olidun.comolinone.com
+oliver.renoliveryang.net
oliya.net
oliyi.comollomall.comolo4.com
olwgu.sbsolymtech.com
+olys88.comolzz.comomacloud.com
+omarea.com
+omaten.com
ombuy.com
+omccsh.comomchain.com
+omcube.com
+omedsc.comomeet.ccomegatravel.netomegaxyz.comomgaixm.comomgshoppro.com
omgxy.comomiaozu.comomicsclass.com
omicshare.netomifanyi.com
omlzx.com
omlzz.com
ommoo.comomni-pharma.comomnibeautylux.comomnshoes.comomobi.ccomofundm.com
omooo.net
+omos88.comomowork.comompchina.netomsheji.com
omsmy.com
+omso2o.com
omycar.cc
+omyerp.com
+omz.me
+on-sun.comonaliyun.comoncanyin.com
onccc.com
oncdp.com
+onceai.com
+onceoa.com
onche.net
oncity.ccone-all.comone-netbook.com
one-punch.winzyykj168.com
+one918.comonealert.com
+oneasp.comonebash.comonebiji.comonebox.siteonecellsolar.com
onecoder.siteoneconnectft.com
onedi.netonediankeji.comonedict.com
+onedns.netoneflys.comonefoot365.comonegreen.net
+onehome.me
oneic.com
onein.com
+oneinf.comoneinstack.comoneiwff.com
onekey.cconekeyghost.comonelife-love.comonemob.mobioneniceapp.comonenoter.comonephper.comoneplus.comoneplus.netoneplus.puboneplus6666.comoneplusbbs.comoneplusmobile.comonerway.comonescorpion.comoneshao.comonesight.comonething.net
onethingc.comonethingcloud.com
onethingd.com
onethingn.comonethingpcs.comonethingtech.net
+onetog.com
+onetts.com
+onetwo.renonev.catonevcat.comoneway.mobionewedesign.com
onewo.comonewsimg.comonexinli.comonexmail.comonexunge.com
+oneyac.comonezapp.com
onezh.com
onfun.netongoalconveying.comonijiang.com
onixhiend.comonjobedu.com
+onlady.netonline-cmcc.netonline-edu.orgonlinecn.comonlineding.comonlinedown.netonlinekr.com
onlinenic.netonlinesjtu.comonlinexijiang.comonly-memory.comonly-moment.com
+only4.workonlyedu.com
onlyeduit.comonlyidc.comonlylady.comonlyling.comonlyliuxue.com
+onlyou.comonlypat.comonlyred.netonlyrobotedu.comonlyrubberparts.comonlystem.com
+onlytg.comonlywem.comonlyyou.com
onmpw.comono-bbb.comonochem.comonsiteclub.com
+ontall.comontheroadstore.comonthink.com
ontvb.com
onwsw.com
onyealink.comonyi.net
+onyuan.comonyxcina.comonyy255q8c.comoo14.com
oobao.net
oocct.comoocheoo.com
+ooclab.com
oogcw.comoohdear.com
ooiii.com
oolap.com
+oomake.com
oonne.com
ooogo.comoooiove.com
+ooooai.com
ooooo.runoooooooooo213.com
+ooopic.com
+ooppoo.comoopswow.comoortgslb.comoortos.techootu.cc
oouee.com
+oouyan.com
ooxoo.net
ooxxc.comoozfktwl.sbsop86.netopadlink.comopahnet.com
opark.comopatseg.com
+opcool.com
opczdoors.com
+opdown.comopen-ct.comopen-douyin.comopen-falcon.comopen-falcon.org
open-open.comopen-search.orgopen-verify.ccopen.cdopen1024.comopen189.netopen3s.cloudopenaboc.com
openailab.comopenaizh.comopenanolis.orgopenapp.runopenasic.org
openatom.club
openbayes.comopenbcs.comopenbmclapi.onlineopenbtba.comopencas.orgopencloudgpt.onlineopencloudos.orgopencloudos.tech
opencourt.vipopendatalab.comopendns123.comopendrivers.comopeneda.comopenedv.com
+openerp.hk
openeuler.orgopeneuler.sh
+openew.comopenfans.orgopenfde.comopenfrp.netopengcc.orgopengslb.comopenharmonyproject.comopeninstall.comopenintelliedge.tech
+openke.net
openkylin.topopenlanguage.comopenlearning.comopenlink.cc
openloong.orgopenloongson.orgopenluat.comopenlyenter.com
openmidas.com
openmmlab.com
openmv.cc
+openos.org
+openqa.comopenrasp.com
openrasp.infoopenrasp.netopenrasp.orgopenredcloud.comopenrice.comopensoce.comopensplendid.comopenthos.com
+openuc.comopenwbs.comopenwrt.proopenxiaoniu.comoperachina.comoperatorcom.com
opfed.comopfibre.com
opinion.works
+opjmw1.ren
opkjh.com
oplay.net
oplus.comoplustrust.comopmaterial.comopoefweof-sopoop.comopp2.com
+oppein.comopplestore.comoppo.com
oppo.mobioppodigital.com
oppoer.meoppofind.comoppomobile.comoppopay.com
opposales.comopposhop.in
opposhore.comopqnext.com
oprtb.com
+ops.ci
+opsapp.com
opskb.comopskumu.comopsnote.com
opstatics.comopstatistics.comopstool.com
+optbbs.comopticres.comopticsjournal.netoptimized-ai.comoptinetchina.com
optmv.com
optol.net
+optzmx.comopuzswk5tbt25.com
+opwill.comopython.comoq78.comoqss.com
+or-sun.comor77.netoracle-tencent.comoracle-tencent.net
+oracle.comoradbca.com
oraev.comoralpractice.comorange2h.com
orangeapk.com
orangemum.com
orangenews.hkorangepi.orgorangesgame.comorangetage.com
orangevip.com
+oraper.com
+orasos.comoray.comoray.netoraybox.com
+oraycn.com
+orayer.comorayimg.comorbitmes.com
+orcadt.comorchome.com
+orcode.com
+orcony.comordchaos.com
+ordedr.comorderorigin.com
ordosbank.com
orfactory.comorfxsoa.com
orgcc.comorgleaf.comoriemac.comorient-fund.comorient-safety.comorientalandnavajorugs.comorientalpearltower.comorientalwisdom.comorientcasa.comorientfoods.netorientgolf.comorientpc.comorientpowertech.comorienttextile.comorienttumor.comorientzj.comorientzr.comoriginalimg.comoriginalkindergarten.comoriginalstatic.comoriginalvod.comorigincn.com
originlee.comoriginoo.com
originpic.comoriginsilicon.com
origloria.comorihard.comoritive.com
+orleto.comorologiomgitaly.com
oromaster.com
+orsoon.com
orspr.comorstatic.comorsun.ccortc.ccorvaegao.com
+orvibo.comorwhatever.shoporz.asia
+orz123.com
+orz520.comorz6.comorzoupri.com
+orztip.comos-easy.com
os-lb.comos-v.comos7blue.com
osaaa.comosakacopyshop.com
osall.comosapublishing.org
osase.net
+osbean.com
osbzr.comoscaches.comoscarma.comoscarzhoud.comoschina.com
+oschina.iooschina.netoscloudcdns.comoscloudcdns.netoscs1024.comosechina.com
osedu.netoseminfo.comoserror.comosf5xep778.comosfipin.com
+osg.soosgchina.orgosgz.comoshadan.com
+oshome.com
oshoplive.comoshwhub.com
osizx.comosjiaju.com
osk-clean.com
+oskwai.com
+oskwai.net
oslaw.net
osmsg.comoso6.com
+osogoo.com
osoos.com
ososn.com
+osp.ioospchina.comosportsmedia.comospp.com
+osredm.comoss-cn-beijing-aliyuncs.comoss.link
+oss.soossdshxh.com
+osslan.comosvlabs.com
osw3c.com
oswdj.com
oswhy.com
+osx.cx
osxxy.comosyunwei.comotbmall.comotcaumiu.com
otcgd.com
otcms.comotkglass.comotms.comotoeasy.comotome.meotomedream.comotosaas.comotp-express.com
otpub.comotqyzk7mx2t8.com
otswatches.co
ott4china.com
ottcn.com
+ottcn.helpottffss.net
ottixxs8.workottshopping.net
+ottssp.com
otype.com
ou163.comou99.com
ouapi.comoubk.comouchgzee.comoudapay.com
+oudas.techoufa-travel.comoufengblog.comoufusoft.com
ougei.com
+ouhua.infoouies88.comouj.com
oujistore.comoukan.online
ouklc.com
+ouklqd.com
oukyx.comouliwang.comoulvnet.comoumakspt.comoumengke.com
oumengpay.comounh.org
ounoe.com
ouoou.comouou.comouou.icu
+ouougo.comoup.com
oupa-tech.com
+oupeng.comoupeng9.comoupengcloud.net
+oupula.com
+oupuzw.com
+our100.netour360vr.comourai.ws
+ourail.com
+ourats.com
+ouravr.comourbits.clubourcargo.comourcdns.comourcloudsec.com
ourcm.netourdian.comourdlbs.comourdomains.com
+ourdvs.comourdvs.info
+ourdvs.netourdvsss.comourdvsssvip.com
ourdvsvip.com
+ourdxz.comourdxz.info
+ourdxz.orgoureman.com
ourep.com
+ourfdn.comourgame.com
+ourglb.com
+ourglb.netourglb0.comourglb0.infoourglb0.netourglb0.orgourglb0vip.com
+ourhlb.comourhlb.info
+ourhlb.org
ourhy.net
+ourjay.comourjewel.com
ourjg.comourjiangsu.com
ourjs.com
ourjz.comourl.coourlife365.comourlinc.com
+ourltc.comourmate.net
+ourmis.comournotepad.comourpalm.comourplat.netourplay.net
ourqm.com
+ourren.com
oursakura.comoursec1.comoursec2.comourselec.com
oursketch.com
+oursmc.comourstech.comourtour.comourwebat.com
ourwebcdn.comourwebcdn.info
ourwebcdn.net
ourwebcdn.orgourwebcdnvip.comourwebhttps.com
ourwebpic.comourwebpic.info
ourwebpic.net
ourwebpic.orgourwebpicvip.com
+ouryao.comousaikj.comoushangstyle.comoushidiban.netoushinet.comoushivoyages.comoushiyimulayou.com
ousweixin.com
outes.comoutlets365.com
outletscn.com
ouvps.com
+ouwost.comouxiangxiezhen.com
+ouyada.comouyanghuasi.netouyaoxiazai.com
+ouyeel.com
ouyi.dateouyingyimin.com
+ouyizs.comouyu158.comouyuxie8.comouzhaorj.com
ouzhou.ccouzhougoufang.com
ovadp.comovalechina.comovaqrzcw.comovcgegxa.comovcreative.com
ovdlb.comovdream.comove3bi5rpn.com
+ovear.info
ovellpump.comoversea-ks-cdn.comovertrue.me
ovhlb.com
ovhlb.netovicnet.comovid.com
+ovital.com
+ovital.net
ovmgc.com
ovo.email
+ovo.gsovopark.com
+ovopic.comovqq.com
ovrvo.comovscdns.comovscdns.net
+ovuems.com
+ovupre.comovuwork.com
oway.mobi
owecn.comoweis-tech.com
+owl-go.com
owl66.comowllook.net
+owlxjz.lol
+ownwuh.xyzowocloud.net
owoit.com
owrlx.comowseals.com
owsgo.comowspace.com
+owulia.com
owynb.comox5tis8cm7zg82.comoxbridgedu.orgoxdg.com
oxerr.netoxfordartonline.comoxfordbibliographies.comoxfordmusiconline.com
+oxiang.comoxiaohua.comoxiuxkqz.sbsoxrm.comoxygenos.com
oxyry.com
+oyalee.com
oyeahgame.comoyewifi.comoygteapq.comoyohyee.comoyonyou.com
+oyoozo.com
oyospider.com
+oyoumo.com
oywtv.com
+oyxdwx.comoyya.comoyyj-oys.orgoyzdbsx.com
oz138.comozmvpbhc.com
ozocenter.comozouckzr.comozsp.com
+ozzyad.comp-dragon.com
p-e-china.comp-er.com p.bizzyyimin.comp04e.comp0kc9ym05p.com
+p1.com
+p12345.comp24p75149p.com
p2cdn.comp2eclub.netp2hp.com
+p2p001.com
+p2p178.com
+p2pbbs.netp2pchina.com
p2pcq.com
+p2peye.com
+p2peye.net
p2pjd.comp2psearchers.comp2ptouhang.comp2pxing.comp3-china.comp33t5y8b97.comp4pfile.comp4pp.comp4ws8zptrrdc6.comp4wtpoqzihi8v.comp5w.net
p6air.com
p6sai.com
p88vb.sbsp8games.com
p9800.com
p99998888.com pa.cipa18.com
pa1pa.com
paahu.com
paalermat.com
paascloud.netpaat.compabulika.com
pacdn.compacebms.com
pacfc.compacgatelaw.compacificchinaaero.compacilution.compacketmania.netpacksky.compacktom.com
+packty.com
pacmantwo.compactera.compadasuo.netpaddlepaddle.orgpaddlewaver.com
+padzkj.compafj.net
pafwl.com
pageadmin.net
pagescube.compageseagle.compahaoche.com
+pahhhf.com
pahou.compahx.com
pahys.com
+paiago.com
paibanxia.compaichen.net
+paichi.com
+paidai.org
paide.net
+paidui.com
paiduidai.com
paigepian.compaihang114.compaihang360.compaihang8.com
paihb.compaihotels.cc
paiky.com
paiky.netpailitao.compailixiang.compaimaprint.compaiming.netpaintinghere.org
+paipai.com
paipai123.compaipaibang.com
paipaiimg.compaipianbang.com
+pairmb.com
+paishi.compaivideo.compaixiangxian.com
+paixie.net
+paixin.com
paixueche.netpaiyidan.netpaiyiws.compaiyuyy.compaizhaofanyi.net
+paizhe.com
paizi.com
paizi.netpaizi10.com
+paizia.com
+paizin.com
paizishop.com
pajkb.com
+pajkdc.com
+pajktj.compalace-international.com
palanceli.compallasa.com
+palm-h.com
palm.tech
palmebook.com
palmeread.compalmestore.compalmexpo.compalmfungames.compalmjoys.com
+palmpk.compalmtrends.compalmyou.com
paloinino.com
pamahotel.com
+pamica.com
pamss.netpan-gulf.com
+pan131.com
pan58.compan8.netpanabit.companaihua.companasonic-door.companasonicmall.compancake888.com
panchuang.netpanda-home.companda-js-power.companda98.companda995.xyzpandabus.ccpandadastudio.compandafoundation.orgpandagardenalaska.com
pandahome.orgpandainc.ccpandaminer.compandapaint.netpandara.xyzpandateacher.compandatv.compandax.wiki
+pandoe.compandolia.net
panduoduo.net
panewslab.com
+pangbu.com
pangcheng.compangdago.compangdasc.compangdawuliu.compangdly.com
+pangdo.compangeng.vippanggugu.companghuasheng.com
+pangku.compangku01.com
pangmao56.com
pangmaovc.compangniao.net
+pangod.compangoing.compangolin-dsp-toutiao-b.compangolin-dsp-toutiao.compangolin-sdk-toutiao-b.compangolin-sdk-toutiao.compangolin-sdk-toutiao1.compangomicro.compangqiu.compangshu.compangsuan.compangubox.companguidc.compangukj.compangusheng.companguso.com
pangxieke.companjindamibest.com
panjunwen.companku.ccpanmaiquit.companmeme.compannacloud.companoeade.companoramastock.com
panothers.companpanfood.com
panpanzsw.com
+panpay.companplayable-toutiao-b.companplayable-toutiao.companqibao.companqiincs.mepanruikj.companshenlian.com
panshi101.companshianquan.companshihudong.companshixk.com
panshiyun.com
+panshy.compansino-solutions.compansoso.com
+pansou.com
pansousuo.compantherhealthcare.compantonechina.compantrysbest.com
pantuitui.com
+pantum.com
+panwan.netpanweizeng.companxsoft.companyiyun.companyouwl.com
+panyun.companziye.com
paoao.netpaochefang.com
+paodoo.compaojiao.com
paoka.compaokucloud.compaolanhuanbao.com
paomo.compaomochengxingji.com
+paopao.com
paopaoche.netpaopaohd.compaopaosz.compaopaozd.com
paoxq.com
+papa21.com
+papa91.com
papago.hkpapajohnshanghai.compapaquan.com
papatya.store
papegames.compaper.tvpaper027.compaper120.netpaperask.com
paperbert.compaperbus.compaperbye.compaperccb.compaperclipclub.netpaperclipglobal.com
papercool.com
papereasy.compaperfreehome.compaperge.compapergod.com
paperisok.compaperok.com
paperonce.org
paperopen.com
paperpass.compaperpp.compaperrater.netpaperright.compapers.coolpapersay.compapersee.compapertime.ccpapertime.shop
papertime.vippaperweekly.site
paperword.compaperyy.compapocket.compapuanewguineans.compaquapp.comparallelsras.comparatera.com
parawikis.comparduscycle.com
parentshk.comparis-girafe.comparkbees.com
parkchina.netparkicloud.comparking520.comparkingadsaas.comparkingjet.comparkingos.clubparkingquickly.comparkmecn.comparkviewgreen.com
parkworld.netparnassusdata.comparsein.compartinchina.compartnerboost.comparty68.compaschermontre.to
pasertech.compass7.cc
passer-by.compassion120.compassthepopcorn.mepasswordkeyboard.compat-edu.org
patachina.orgpatchallin.compatchew.orgpatchworkplush.compatent9.compatentguru.compatexplorer.compatheagames.com
patmm.com
+patsev.compatsnapglobal.compaul.pubpaulzzh.compauwaypower.com
pavay.compavayjt.com
paxdn.com
paxgl.com
+pay-in.compay-news.com
+paydxm.com
+payeco.compayititi.compaykwai.com
paylf.com
paymax.ccpaympay.compaypaytech.com
+payrao.compayxinyi.compb89.compbc-dcep.com
pbcan.com
pbdpw.com
pbiso.com
pbkrs.com
pblie.com
pbmnk.com
pbrcw.net
+pbsidc.com
+pbsvpn.com
pbtcw.com
+pbtlpm.com
pbtsl.compbtt.net
pbtxt.compbyz.net
+pc-120.compc-daily.compc-surgery.compc.wiki
pc028.com
pc120.compc18.net
pc186.compc34.compc51.com
pc520.net
pc521.net
+pc5210.com
pc528.netpc55.compc6.com
pc699.compc6a.compc89.compc9.com
+pcapqz.com
+pcb-hl.compcb3.com
+pcb818.com
+pcbask.com
pcbba.com
+pcbbar.com
+pcbbbs.compcbdoor.com
+pcbeta.compcbhunt.com
+pcbiot.com
+pcbjob.compcbserve.compcbsheji.compcbtech.netpcbtime.compccpa.hk
+pccppc.compcdnhome.com
pcdog.com
pcdrv.com
pcdyu.com
+pceggs.com
pceva.netpcfreetime.compcfw168.compcgeshi.com
+pcgogo.compcgta.ccpch.pubpchealthcheck.net
+pchome.com
+pchome.net
+pchpic.net
pcidv.com
+pciiss.com
pcitc.com
pcljg.com
pcljl.compcmgr-global.com
pcmoe.net
pcoic.com
pcoof.com
pcoyx.com
pcpop.com
pcpresent.compcr9170.com
pcsee.org
pcsfc.com
+pcshou.com
+pcsjsm.com
pct86.compctu.net
+pctutu.com
+pctutu.net
pctvx.compcutfiww.com
+pcviva.com
+pcw365.com
+pcweb3.compcwenti.com
pcwgu.compcwl.compcxitongcheng.compcyangguangban.com
pcysy.com
pczhi.compd-italent.com
+pd-sts.com
pd120.compd17.com
pdai.tech
pdazw.compdb2.com
+pdbeta.com
pdcuo.compdd-fapiao.compdd.net
+pddcdn.com
pddeu.com
pddim.com
+pddpic.com
+pddugc.com
pddxy.com
pddzj.compdeepmatrix.com
+pdf.la
pdf00.compdf1122.compdf5.net
pdfbianji.com
pdfdowell.com
+pdffsy.com
+pdfjia.compdflibr.compdfwang.com
pdfxd.com
pdfzj.compdgohome.com
pdgzf.com
pdidc.compdim.gspdivsvu.com
pdlnn.com
+pdosgk.compdowncc.com
+pdrcfw.com
pdreading.com
pdryx.com
pdscb.compdsggzy.com
+pdsgjj.com
+pdskgb.com
+pdsxww.compdszhtl.compdty123.compduoduo.vip
+pdvisa.compdxx.netpe-exhibition.com pe.vc
pe898.compeace-monkey.compeace-read.com
peaceboat.net
peacekang.compeaceshotel.compeaceticket.com
+peacha.netpeacockedu.com
peak-labs.compeal.ccpear.hkpearlinpalm.com
pearvideo.compeasrch.compeatour.com
pec33.com
peccn.compechoin.compecj5k3.shop
pecoo.com
pediy.com
pedli.com
peekaboo.show
peekpipai.com
+peento.com
+peepic.compeidiannao.com
peidu.compeihao.spacepeihu-lyjkgl.compeihuyi.compeijiamedical.compeijian.com
+peikua.compeilian.compeilian365.compeilili.com
peiluming.compeiluyou.com
peise.net
peisebiao.compeiwanlu.compeixianedu.compeixiang.compeixinkj.com
+peixun.net
peixun360.compeixun5.compeixune.compeixunmatou.com
peixunxue.compeiyake.com
+peiyin.netpeiyinge.compeiyingefiles.compeiyingo.compeiyinshenqi.club
+peiyou.compeiyouwang.com
peizi.com
+pejxjy.com
+pek0b0.compellucid.artpelorseating.com
pemap.com
pemch.compenavicoxm.compending-renewal-domain.compendoapp.compengbaoxuan.compengboguandao.compengchengenergy.compengfei.tech
+pengfu.com
+penghh.fun
penghui88.compenging.com
+pengke.compenglaiu.compenglei.namepengliao.compengpeng.compengqi.clubpengqian.win
+pengrl.compengrui-ssj.compengshengcaishui.compenguin-logistics.spacepengyaou.compengyihotel.compengyou.compengyoukan.com
pengyucpa.compengyunxin.com
pengyuwei.netpenhuijiqi.com
penjuanus.compenny-world.compensuchang.compensunny.compentalaser.com
+pentaq.com
penzealcn.compeonyta.compeople-squared.compeople78.compeople78.net
peopleapp.compeopleart.tvpeopledailyhealth.compeopledailypress.compeoplemooc.compeoplerail.compeopleyuqing.compepresource.compepsitmall.comperfect-input.com
perfect99.comperfectdiary.comperfecttradinghk.comperfectwatchen.comperfertw.com
+perfma.netperopero.netperoperogames.comperryzx.com
personpsy.orgperspectivar.com
+pescms.com
pesiv.compesrmyy.com
+pesyun.com
pet86.com
petalmail.competer-zhou.competersonlian.competgugu.com
+petkit.com
+petkoo.com
petktasia.com
+petmrs.com
+petope.com
+petpcb.competrexchina.competroren.competrvet.compettime.infopewax88.com
pewld.com
pewsc.com
pexue.com
pf110.com
pf168.com
pf178.compfcexpress.com
pfhoo.com
+pfinno.compft12301.ccpftianshanno.compfwx.compg-leak.com
pg114.net
+pg8090.com
pgbee.com
+pgc.tvpgcaststone.com
pgcog.com
pgecy.compghsd88.com
pgive.com
+pgjcqm.com
+pgjxkk.com
pgjxo.com
pgksr.com
pgl-world.compglstatp-toutiao-b.compglstatp-toutiao.compgq.win
pgqcw.com
+pgsql.tech
pgxqw.net
pgxxw.compgy6.compgyer.cc
pgyer.compgyer.im
+pgyidc.compgzs.com
pgzsm.compgzx.net
ph-fc.comph66.comphaetonsemi.comphalapi.net
phantasy.lifepharm81.mobipharmacodia.compharmacyyf.com
pharmcube.compharnexcloud.comphaser-china.com
phb01.com
+phb123.com
phedu.net
phemu.netphezzan.comphhongyu.comphilanthropy.xinphilipswechat.comphilisense.com
phimheo69.com
+phirda.comphlexing.com
phnamedns.com
phnixpool.com
+pho.so
+phodal.comphoemix.netphoenix-ea.comphoenixtea.org
phoenixtv.com
+phoent.com
phoer.net
phome.netphone580.comphonecoolgame.comphonegap.mephonegap100.comphonelinksoft.comphonertech.com
+phopic.com
photo0086.com
photo3050.comphoto889.comphotocnc.com
photocome.comphotohn.comphotoint.netphotops.comphotosks.vipphp-note.com
+php-oa.com
+php168.com
+php318.comphpbbchina.com
phpbloger.comphpchina.com
phpcj.org
+phpcom.netphpcomposer.comphpconchina.com
+phpcoo.com
+phpddt.com
phpdr.netphpe.net
phpernote.comphperservice.com
+phperz.com
phpfs.com
phpha.com
+phphub.orgphpjiami.comphpjiayuan.comphpkaiyuancms.com
+phpkoo.com
phpok.com
phpor.net
+phprpc.orgphpsong.com
phpspider.orgphpstat.netphpv.net
+phpvar.com
+phpvod.com
phpweblog.netphpwind.comphpwind.net
phpxs.com
+phpyun.comphsb.comphysicalchina.vipphysicalclub.com
+physoe.com
+phyt88.com
+phyuan.comphyy.compi7.compiaget-hello.com
piakw.xyzpianohl.compianoun.compiantou.netpianyit.com
pianyiwan.com
pianziweb.compiao.com
piao.tips
+piao88.com
+piao95.compiaobuy.com
piaochong.com
piaodaren.com
+piaode.renpiaodian.netpiaododo.compiaodown.com
piaogroup.compiaohua.compiaojie168.com
piaojubao.compiaolia.com
piaoliang.compiaoliusan.compiaoniu.compiaoquantv.compiaoshen.compiaotian.orgpiaotongyun.com
piaowutong.ccpiaoxian.netpiaoxingqiu.com
+piaoyi.orgpiaoyun.netpiaozhilan.compiaozone.com
piasy.com
+pic138.com
pic16.com
pic21.com
+pic315.compic3733.com
+pic720.compicatown.compicbling.compicc.compiccamc.compicchealth.com
+piccjs.compiccpayment.com
+picdlb.com
+picdns.com
pickpikka.com
+picooc.compicosmos.net
+picovr.com
+picoxr.compicp.iopicp.netpicsays.compictureknow.com
+picup.shoppicxiaobai.compicyourmix.com
picyq.com
pidcn.compidoutv.com
pidru.com
piececool.com
+pieeco.com
+piekee.com
+piekee.netpieshua.compifa.bzpifa333.compifukezaixian.com
pig4cloud.com
pigai.org
+pigcms.compighaihe.com
pigji.compigjian.com
pigonline.org
pigsty.cc
pigv5.compigx.vip
+pigyun.compihitech.com
+piikee.net
piimg.com
piios.compikoplay.compil0txia.compilaipiwang.compili-zz.netpilibaba.compilidns.com
+pilifu.com
+pilifx.compimaoji.com
pimax.com
pimei.com
pin-color.net
+pin-qu.compin0312.compin18pin.compin2eat.com
pin5i.com
pinan1688.com
pinbaitai.compinbang.compinbayun.com
+pinble.netpinchain.compinchedashi.compinchetang.com
pinda.com
pindd.winpindu88.com
pinduoduo.com
pinduoduo.netpinelephant.compinestoneasset.compinfangw.comping-jia.netping-qu.com
+ping99.com
+pingan.com
zyyfy.com
pingancdn.compinganfang.compinganventures.compinganwj.com
pinganyun.compinganzhengxin.compinganzhengyang.compingcap.com
+pingce.netpingchuangyl.compingcode.com
pingcode.techpingcoo.compingdingshan.mepingdurc.compingevip.com
pingfangx.compingfenbang.com
+pinggu.com
+pinggu.orgpingguobaoxiu.com
pingguodj.com
pingguolv.com
+pinghe.compinghu.techpinghui-cn.com
pingjiata.compingnanlearning.compingnantong.compingnuosoft.com
pingpang.infopingpangwang.com
pingpingw.compingpingze.compingplusplus.com
pingpongx.compingshu8.com
pingshuku.compingshuocoal.com
pingstart.compingtan6.compinguan.com
pinguo.uspingwest.compingxiangzhifa.com
pingxiaow.compingxuan123.com
+pingxx.com
+pingyin.ccpingzishuo.com
pinhaohuo.compinhuba.com
pinhui001.com
+pinidea.copinjiago.compinjiaolian.com
pinjie.ccpinjieqicai.compinjiesj.com
+pinjin.net
pinkecity.compinkertech.com
pinkobaby.compinkoichina.com
+pinkou.com
pinla.compinlian.net
+pinlyu.com
pinmanduo.com
+pinmie.compinmuch.compinocchiowb.com
+pinpai.bizpinpai1.compinpaidadao.com
pinpailiu.compinpaime.compinpaing.compinqugongxiangktv.com
pinqukeji.compinshan.com
+pinshu.compinsuodesign.compintu360.compintuan.com
pintuanya.compintuer.compintuju.compintuxiu.net
pinuc.com
+pinunu.compinwaiyi.compinweiqifu.compinxianghui.com
pinyafang.com
+pinyuan.ccpinyuew.compinzhenglh.com
+pinzhi.orgpinzhikeji.net
pinzs.com
pioneerep.compioneersci.compipa.compipacdn.compipacoding.compipahealth.com
pipaw.com
pipaw.netpipedetect.com
+pipegg.compipikou.compipikun.com
+pipilu.compipimp3.com
+pipipi.netpipipifa.com
+pipiti.com
pipix.com
+pipiyo.compipsemi.com
+pipuda.compiqs.compiscesys.compisx.compitayaio.compittwaterhouse.net
piuqiupia.com
pixbe.com
pixcakeai.compixcakes.com
pixelauth.com
+pixepf.sbs
+pixhey.compixivic.compixivic.netpixpark.netpiyingke.compiyipiba.com
+pj-666.compj-road.com
+pj.compj00001.com
+pjbest.compjf.name
pjgjg.com
+pjhome.net
+pjhubs.com
+pjjyzx.com
+pjlyds.compjob.net
+pjtime.com
pk052.compk10088.com
pk106.com
pk137.com
+pk2234.com
pk361.compk38.com
pk532.com
pk571.compk7o.com
pk855.com
pk995.com
+pkbeta.com
pkbff.com
pkbigdata.com
+pkbkok.com
+pkcity.compkfj.xyz
+pkgame.com
+pkgklk.compki.plus
+pkm360.compkmb168.com
pkmer.net
+pko123.compkoplink.compkpk.com
pkpky.compkpmsoft.com
+pkpuke.compkq.xyz
pksf8.com
pksfc.com
pksky.compku-hit.com
pku-lvxin.compku.tech
+pku666.compkucare.compkucarenjk.compkuczuo.com
pkufh.com
+pkulaw.compkulaws.com
pkulb.com
pkunn.com
pkupuzzle.art
pkurc.com
+pkusky.com
pkusp.com
+pkuszh.compkvs.compkwenku.com
pl999.com
+plaidc.com
plalzhang.com
planckled.complanetariuminsight.siteplanetarylighting.complanetmeican.complantb2b.com
plantname.xyzplantnutrifert.org
plantower.complas-cn.complasdata.com$ plastics-machinery-equipment.complasway.com
+plateno.ccplateno.complatenogroup.complatinum-traveller.complatinumchina.complavno-explore.ccplay-analytics.complay-cdn20.comzyxzyyy.com
+play68.complay700.com
+play86.complay910.complay920.complaybeta.netplaycase.complaycomet.jpplaycrab.complaydisorder.complayezu.complayfifa.com
playgm.cc
+playlu.complaynail.com
playorcas.com
playpangu.com
+playsm.complaytai.complaytai.netplayuav.complaywonderful.complaywxgame.com
+playyx.com
+playzy.com
plc11.com
plcdn.net
+plcent.com
plchinese.complcloud.complesk-cn.com
+plexpt.com
+plfrog.complll-fluid.complob.orgplottinglogistics.com
plqdf.com
plrsw.complsdeyy.complsfybjy.com
pltgd.complumcrk.com
+pluosi.compluralitycn.com
+plures.netplus3gallery.com
plusgantt.com
plusplus7.complusplustu.complutoer.com
plutuspay.compluveto.com
plxfgroup.com
plycd.com
+plyhjt.netplyxiaoche.com
+plyygs.complyz.netplzx.net
pm-summit.org
pm222.compm25.compm25.in
pm265.compm28.com
pm360.com
pm360.netpmacasia.compmallstore.com
+pmcaff.com
pmceo.compmd5.com
pmdak.compmdaniu.com
+pmdled.compmichina.org
pmijf.compmish-tech.com
+pmkiki.com
+pmovie.compmparkchina.compmphmooc.compmpm123.compmpm123.netpmptuan.compmquanzi.com
pmr66.compmsmzyy.compmtalk.clubpmtemple.com
+pmtown.com
pmway.compmxprecision.com
pmxsd.com
pmyes.compmyuanxing.com
+pn1waq.compnas.org
pnetp.org
+pnfang.compng.pub
+pngbag.compngsucai.com
pniao.com
pnlyy.compnol.netpnshicha.com
pnst8.compntagkyy.compntagsyy.com
+pntkyy.com
+pntryy.compnty1688.com
pnwww.com
pnxct.compnxseykj.compnxyrykj.com
pnzpw.com po.copo7ryumvkx34.com
+pobaby.netpobasoft.compocidian.compocketdigi.com
pocketuni.netpocomagnetic.compocosite.compocsuite.orgpodcast.xyzpodfest.techpodinns.compodjiasu.orgpodunjiasu.com
+poem88.compoemlife.compoemschina.compohaier.compohover.com
poikm.compoikuri.compoint-memory.compoiuytw.com
+poizon.compoj.org
pojkq.compoke203.compokemmc.compokemon-unitepgame.compokemon.vip
pokermate.net
+poketb.compoketrg.com
+pokooo.compolaris-vc.com
polars.ccpolarxiong.com
polaxiong.com
polayoutu.com
polebrief.compolingba.com
polo-king.compoloxue.compoluoluo.compoly-gx.compolycent.com
+polycn.compolycom-china.compolycom-jl.com
polyhotel.compolyinno.compolytheatre.compolytheatresz.com
polyv.netpolywuye.compomears.com
pomeloyun.com
+pomoho.compondernext.com
+ponley.compontite.com
ponyai-cn.componycool.com
+ponyfk.componytest.componytestqd.componytestsh.componytestsz.com
poo1.club
+pooban.com
+poobbs.com
poocg.com
+pooeoo.com
+poofoo.com
+pooioo.compook.compookcdn.compoorren.compop-bags.compop-fashion.compop-shoe.com
+pop136.com
+pop365.com
+popasp.compopcustoms.com
popdg.com
popgo.orgpopincdn.com
+popkart.tv
popkx.compoploli.compopmart.com
+popmsg.compopoffices.com
+popoho.com
+popoim.compopoxiu.compoppace.com
+poppur.com
+popqiu.compopsoft.compopumed.compopupgrade.compoputar.compopziti.comporlockz.comporschesky.comportablesoft.orgports-intl.comportsgmt.comporttong.comportugal-visacenter.comporu-mro.com
pos58.com
+pos580.com
+posbar.com
+zyxyfy.com
poseidong.composeidonqianshui.composfree.com
posge.com
+posmcc.composn.netpospalit.compost183.netpostarlight.composterlabs.compostgres.funpostgresqlchina.compostjson.compostpony.compotato.goldpotevio.compotianji.net
potplayer.orgpotplayercn.compouchcontainer.iopouquiagievu.compova-elc.compower-sensor.compower-sprayer.compower86.compower8t.compowerapp.iopowerbeijing-ec.compowerbibbs.compowercdn.compowerde.com
powereasy.netpowerex1.compoweric-china.compowerlaw.aipowerleadercdn.compowerleaderidc.compowerliber.compowerskystudio.compowervision.mepowerworldgd.com
powerxene.compowpegxw.compowzamedia.compoxiaowy.com
pozou.compozuiapp.com pp.cc
pp100.compp1o.compp25.com
pp250.compp30.com
pp373.compp51.compp63.compp66.ccpp77.com
pp918.compp9l.comppadssi.com
+ppaiss.comppbizon.com
ppchuguan.comppcn.net
+ppcode.com
+ppcost.comppcwzebv.com
ppdai.comppdaicdn.com
ppdaicorp.comppdd.com
+ppdesk.com
ppdqk.com
+ppduck.com
+ppfeng.comppfsnzp.comppfw.org
+ppgame.comppgg.in
+ppgslb.com
pphcn.sbspphimalayanrt.com
+ppio.cloud
ppio.work
+ppj.io
ppjtc.netppkankan01.comppkanshu.com
ppkao.com
pplib.net
+pplive.com
+pplive.net
+pplock.comppm-htv.comppm2.com
+ppmake.comppmm.orgppmoney.comppnames.com
+ppnews.vipppos.comppp.gold
+pppcar.com
pppet.net
pppie.com
+pppiii.com
+pppnnm.compppoevps.com
pppoo.com
+ppppic.com
ppppoints.comppqq.net
+pps.tv
ppsao.com
+ppsimg.comppsoftw.comppspain.comppsport.comppstream.comppstream.net
ppstv.com
+ppsurl.comppsz.net
+ppt118.com
ppt20.com
+ppt360.com
+ppt920.com
+pptair.compptbest.compptboss.com
pptbz.com
+pptelf.com
+ppter8.com
ppthi-hoo.com
+ppthui.compptianliao.com
+pptjia.compptmall.net
+pptmao.compptmind.com
+pptniu.com
pptok.com
pptschool.compptstore.netpptsupermarket.compptutor.compptv.compptvdata.compptvimg.compptvnet.compptvyun.com
pptxy.com
ppurl.comppvi.net
ppwan.com
+ppwang.com
ppwfa.comppwwyyxx.com
+ppx520.comppxclub.comppxs.net
+ppxvod.com
ppxwo.comppys.net
+ppyxzw.com
+ppzhan.com
ppzhilian.comppzuche.comppzuowen.comppzw.com
+pqdtcn.compqpo.mepqt-bearing.com
pqwww.compqyhigh.com
+pqylow.com
pqymiddle.compqyvzr56aceitx.com
pqzhichan.com
+pr0771.compraanee.compradabao.comprayaya.com
+prcedu.com
prcee.orgprcvalve.comprecise-test.comprecision-biz.comprefer-tyl.site
preludeid.compremedglobal.com
pressmine.comprestodb-china.comprestolite-bj.com
preyp.netprfc-cn.com
prfog.com
pricl.comprimarychina.comprimerachina.comprimeton.comprint86.comprinter-china.comprinterwhy.net
printhome.com
printidea.art
printlake.comprivatehd.to
privatess.win
privspace.net
+prjdrj.com
+prlmcs.com
+pro001.com
proangela.com
procar.ccprocessedmetals.com
processon.comprocivi.netprod-mv.comproductivity.wikiproginn.comprogramfan.comprogrammer.groupprogrammer.inkprogrammercarl.comprogramschool.comprogressingeography.comproject-oa.comproject-snow.com
+project.aiprojectaker.comprojector-jl.comprojector-window.com
+prolto.compromise-sz.compromisingedu.compronax.techproquest.comproresearch.org
pros-view.comprositsole.com
prosper3e.comprotect-file.comprotontechcn.comprototype.im
+proup.clubprovidence-chemicals.comproximabeta.comproya-group.com
proya.com
proyy.comprpracg.com
prts.wikiprttech.com
+prxxff.com
przhushou.com
przp8jtj.shop
przwt.com
ps123.net
ps173.com
ps265.com
ps288.com
ps314.comps9d.com
+psb888.compsbc-ubank.compsbc.com
psc4d.compscddos.compsd.netpsd1403.compsd8.com
psdee.com
psdiv.compse-meti.com
+psjxty.com
+pslkzs.com
+psnine.compsoethgke.sitepsoneart.compsq6563.xyzpsqloyc.com
psrar.com
psrss.com
+pstatp.com
+pstips.net
pstxg.compsvalve.com
psy-1.compsychcn.compsychspace.compsylife.compsysoper.com
psyzg.com
psznh.compszwatch.compszx.com
pszxw.net
+pt-bus.compt-link.compt80.netptausercontent.com
ptbus.comptc-asia.com
+ptcxmy.com
ptdsh.compterclub.com
ptfdc.com
+ptfish.com
ptgcn.compthb668.com
pthc1.com
pthc8.compthceshi.compthxuexi.com
ptimg.org
+ptkckj.com
+ptkill.comptmezkgg.com
+ptools.fun
+ptorch.comptotour.com
ptpcp.comptshare.org
+ptszgh.orgptt.xyz
+ptteng.com
ptwbs.netptweixin.com
ptxie.comptxz.comptyg.com
ptyly.com
ptyqm.com
pu-bg.compu-ling.com
pu1kj.com
pu600.com
puaas.compuai999.compuaihospital.net
puasu.com
+puata.info
pubbcsapp.com
+pubchn.com
+pubg8x.compubghelper.compubgtool.com
publiccms.compublicdns.cc
pubmed007.compubmedplus.com
pubone.ccpubsage.compubtian.compubukeji.com
pubuo.com
+pubyun.com
+pubyun.net
+pubyun.orgpucijiankang.com
pucms.com
pudetouzi.com
pudie.netpudn.compudongwater.compuduzhai.compuem.org
puer10000.com
+puercha.cc
+puercn.compuerlife.orgpuertea.compufente.netpuffergames.com
pugba.compuh3.compuhedesign.com
+puhler.compuhuacapital.compuhuahui.com
puhuatest.com
puidc.com
+puiedu.com
+pujia8.compujiaba.compujiahh.compujiaziwang.compujingjt888.com
pujiugame.com
pukalteng.compukinte.compule.com
+pulisi.compulixingfu.compullwave.compullword.com
pullywood.compulsertech.netpunaide.com
punchbox.info
puoke.compuppy888.compupu168.compupuapi.com
+pupugo.compupumall.compupumall.net
pupurazzi.compupuwang.com
puqibeian.com
purcotton.compureage.infopureh2b.compurekindfund.compurenyy.compurewhite.iopuronglong.compusa123.com
+push2u.compushgrid.netpushigao.compushihao.compushiyb.compushjoy.com
pushplus.plus
pushthink.compushtime.netpusupvc.computako05.com
+putaoa.computaocdn.com
putaogame.computaojiu.computaotec.computclub.com
putdb.com
putian508.com
putiandai.com
+putitt.com
putonsoft.com
putop.net
puusa.net
puwenlong.compuworld.compuxiang.compuxinnan.compuyideshiye.compuyimed.compuyuan-electric.com
puzdy.com
+puzeyf.compuzzles100.com
pv001.net
pv138.compvacegurmbz3e.com
pvc-diban.net
+pvc123.com
pvcliping.compvcpanel-mzq.compvkj.com
pvpin.compw-partners.com
+pw1999.compw88.com
pwand.com
pwgwx.com
pwmis.com
pwmqr.com
pword.netpwrd.compwrdoverseagame.compwrdoverseas.com
pwsannong.compwsz.com
pwypx.com
+px0571.com
+px1039.compx5a.compxb7.com
pxbgp.com
pxc33.compxcn168.com
+pxdier.net
+pxemba.compxhuiben.compxsfybjy.compxsrmyy.com
+pxtbhb.com
pxtsc.compxtu.compxtx.compxtzirma.compxuiamz.compxvfofs.com
pxvps.compxwsemi.com
+pxx.io
+pxyyjt.compxzhbsq.com
+py-axa.compy1080p.com
+py1314.com
py168.compy3study.compy94.com
pyadx.com
pyasfunds.com
pybrother.compychina.org
pyddd.compydp888.com
pyele.compyer.net
pyer.site
+pyhead.com
pyker.com
+pylist.com
pylonghai.com
+pymeng.com
pyneo.compyou.compypt020.compyral07m8m.com
pyskl.com
pystarter.compyt2021.com
pytgo.compython-abc.xyzpython-brief.compython-china.com
python100.compython51.compythonav.compythonclub.org
pythondoc.compythoner.compythonheidong.compythonke.compythonlion.com
pythontab.compythonthree.com
pythontip.compytk.net
+pytool.compytorchtutorial.com
pytpw.compyxjiang.compyxk.compyxwapp.com
pyxww.com
pyycz.com
+pyynsm.com
pyzwy.compz6.com
pzcgw.compzdf.compzds.com
pzedu.netpzfc.com
pzfcw.com
+pzhccb.compzhdahe.com
pzhol.com
pzhqx.com
+pzhwyw.compzjdimg.com
pzjiadian.com
+pzlink.com
+pznews.compznrfsy.com
pznsh.com
pzoom.compzpu.com
+pzyy4.cyoupzzc.netq-alumni.comq-dazzle.com
q-supreme.com q.biz
+q1.comq1cm.comq221.comq2ak.com
q2cdn.comq2d.comq2zy.com
q3060.comq49d4486xg.comq4yvu50kh2.com
+q5.comq578.com
+q6haqi.com
+q6q.ccq6u.com
q77777777.com
q78s5.comq7kyzxq4nj.comq88b.netq88c.netq89850n302.comqacn.netqae3orq9we9t7.comqaeczbxr.com
qahzp.comqakh01.site
qalex.com
+qaliva.comqanhnvb.comqapi.ccqaqgame.com
qaros.comqast.comqaxanyu.com
qaxanyuv6.comqaxcloudwaf.comqaxwzws.com
+qaynak.com
+qazasd.com
+qazdsa.com
qazso.comqazwobdu.comqazxsdc.com
+qb5.tw
qb5200.co
qbangmang.comqbb6.com
+qbboss.com
+qbd888.comqbdjfce.com
+qbewux.xyz
qbide.com
+qbihui.com
+qbitai.com
+qbj.cc
+qbjrxs.comqbox.meqbox.netqbt8.com
qbtxt.net
+qbtzjt.com
+qbview.com
qbwjs.comqbxz.com
qc-hr.com
qc188.comqc1h.comqc6.com
+qcbaas.com
+qcbone.comqcc.com
+zyxuan.org
qccip.com
+qcckyc.com
+qccost.comqccr.com
qccrm.comqcd3fi.tokyoqcds.com
qcdyj.com
qcenglish.com
qcers.com
qcers.netqcgm.netqcgq168.com
qchcm.com
+qchdlb.com
qcheng.cc
qches.comqchouses.com
qckuaizhi.com
+qclnsb.comqcloud-edumall.com
+qcloud.com
qcloud.laqcloudapps.com
qcloudcdn.comqcloudcjgj.comqcloudclass.com
qcloudcos.comqcloudecdn.comqclouder.comqcloudestate.com
qcloudgme.com
qcloudimg.comqcloudipv6.comqcloudmail.comqcloudmarket.comqcloudns.comqcloudsmartiot.comqcloudtcic.com
qcloudtiw.comqcloudtrip.comqcloudtt.com
qcloudwaf.comqcloudwzgj.comqcloudzygj.com
qcly.loveqcmgkids.com
qcmoe.com
+qcmrjx.comqcmuzhi.com
qcoco.comqconbeijing.comqconshanghai.com
+qcplay.comqcq3.comqcql.com
+qcr.cc
+qcrqll.com
+qcsapp.com
qcsdn.com
qcsh8.netqcsj.comqcstudy.com
+qct100.comqctm.com
qctsw.com
+qctx88.com
qcwan.com
+qcwdpt.comqcwh2021.com
+qcwhxx.comqcwlpay.comqcwlseo.comqcwp.com
+qcwxjs.com
+qcxrby.comqcxs.comqcy.comqcymall.comqcyoung.comqczb.appqd-metro.com
qd-weimob.com
+qd.ink
qd256.com
+qd5itt.comqd8.comqdac.cc
+qdaeon.comqdagong.comqdaiduo.com
+qdaily.comqdairlines.com
qdairport.com
qdauction.com
+qdbcmy.com
+qdbdsk.comqdbocweb.com
qdcaijing.com
qdccb.com
+qdccdl.comqdcloudsolution.com
+qdcrdb.comqdcu.comqdcz.com
+qdd.gd
+qdd.gg
+qdd.laqddfxfpx.comqddlchb.com
+qddown.com
+qddsjx.com
+qddsta.comqde-c.cloud
qdedu.net
+qdexam.comqdf0605.com
+qdfaer.com
qdfik.com
+qdfuns.comqdgaoshanyun.comqdgw.comqdgxqrc.com
qdhantang.comqdhengya.comqdhengyong.comqdhetian.netqdhmsoft.comqdhonmon.com
+qdhsty.com
qdhualing.comqdingnet.com
qdipc.com
+qdjimo.comqdjjwsjf.comqdjunyi.com
+qdjxhz.com
qdkelinde.comqdkingst.com
+qdkljd.com
+qdkmjc.comqdlanrun.comqdliding.comqdlinghaiba.comqdlives.com
+qdliye.comqdlongre.com
+qdmama.net
+qdmcxh.comqdmm.com
+qdmswx.com
+qdnsyh.com
+qdpdjx.comqdpengye.comqdpr.com
+qdqehb.comqdqihang.comqdqunweite.com
+qdrcsc.comqdreads.com
qdsay.com
qdsbx.com
qdshoufei.com
qdshuiche.com
+qdslcs.comqdsxtkj.com
+qdsysj.com
qdtech.aiqdtgood.com
+qdthgs.comqdtianxintai.com
+qdtrrh.comqdtxdzgc.com
+qduhwq.comqdwebim.comqdwenxue.com
+qdxfgy.com
qdxhs.vip
+qdxtcw.comqdy9l7zn.one
+qdycdx.com
+qdyckj.com
qdygh.comqdyijiamei.com
+qdyiyi.comqdyuzhengtang.comqdyxbyy.comqdyztang.comqdzhengkang.com
+qdzixu.com
+qdzkmj.com
+qdznjt.com
+qdzxyy.comqdzz.comqe9g1i.shop
qechu.comqeebike.com
+qeejoo.com
qeeka.com
+qeelai.comqeeniao.com
qeerd.com
qefee.comqeoagphm.com
+qeodns.com
+qeodns.netqeopzvgm.com
+qeqnet.comqera.onlineqerwsoft.comqeteshcn.comqeto.com
qexmo.comqeyopxb.com
qf027.comqfamilylaw.com
qfang.comqfangimg.com
qfbcs.com
qfedu.comqfeiche.comqfgolang.com
+qfihdr.com
qfns1.com
qfpay.comqfpq.com
+qfq.me
+qfrost.com
+qfrxyl.comqfsh.comqfsq777.vip
qfsyj.comqftouch.com
qfull.comqfun.com
qfvip.netqfwl.comqfxhjxc.net
+qg.net
qg108.comqg3oed7882.com
qgb2b.com
qgbhn.com
+qgbnzb.comqgbzyzl.com
+qgcyjq.orgqgenius.com
+qgfund.comqgggxxw.comqggzszk.orgqgip.netqgjcjyzb.com
+qgjzsc.comqgkjacc.comqgnn.com
+qgnvbc.comqgpx.com
qgqc.shop
qgren.comqgswvza.com
+qgsydw.com
qgtql.com
qgvps.com
+qgw.tm
+qgwzjs.comqgxl.org
+qgyksr.com
qgysj.org
+qgyyzs.net
qgzek.xyz
qgzzz.com
+qh-cdn.com
qh-dl.com
qh-lb.comqh24.com
+qh4321.com
qh6bc.com
+qh7812.vipqhangyun.com
qhass.org
qhbtv.com
qhcby.comqhcdn-lb.com
qhcdn.com
+qhchcb.comqhclass.comqhcswhh.comqhcz.netqhd.netqhdatongnews.com
qhdcm.com
+qhdgjj.com
+qhdglc.comqhdlcdn.comqhdnews.com
+qhdren.com
+qhduhu.comqhea.comqhee-ma.comqhee.com
qhftp0971.comqhfx.netqhgy.net
qhimg.com
+qhimgs.comqhimgs0.comqhimgs1.comqhimgs2.comqhimgs3.comqhimgs4.comqhimgs5.comqhimgs6.com
qhimi.com
+qhjyks.comqhkyfund.comqhlhfund.comqhlingwang.com
+qhlyou.com
+qhm123.com
qhmed.com
qhmsg.com
+qhnews.com
qhong.net
qhpcc.comqhpk.net
+qhrcsc.com
qhres.com
+qhres2.com
+qhrmyy.net
qhscw.netqhsetup.com
+qhsklw.comqhstatic.com
qhsxf.net
qhtibetan.com
qhtui.com
+qhtycp.com
+qhtyzx.com
+qhvrhn.sbs
qhwmw.comqhwptyn.com
qhwww.comqhxmlyts.com
+qhxyms.com
+qhyccd.comqhyimin.com
+qhylns.comqhytyyvx.comqhyzzzs.com
+qi-che.com
qi-ju.com
+qi-wen.comqi1.zoneqi18.comqi58.com
+qiaiju.com
+qiaiou.comqiak.com
+qialol.comqian-gua.comqian.luqianaolawyer.comqianbao.comqianbaocard.com
qianbaohr.comqianbeibei.shop
qianbi360.comqianbianapi.comqianbianxiazai.com
+qiancha.ccqianchengriben.comqianchiyun.com
qianchuan.ltd
qiancipai.comqiandao.comqiandaoapp.comqiandaoapp.netqiandaocdn.comqiandaohu.ccqiandaqian.com
+qiandd.comqianduan.comqianduanheidong.comqiandunvpn.com
+qiandw.com
+qianfan.tvqianfan123.comqianfan365.comqianfanwanmu.comqianfanyun.comqiang100.comqiangbus.comqiangchezu.comqiangchuan.comqiangdun.comqiangfu.xyzqianggen.com
qianggou5.comqiangidc.vipqiangjin.orgqiangka.comqianglihuifu.comqiangmi.comqiangqiang5.comqiangrongkg.comqiangshengyanhua.comqiangtou.netqiangungun.comqianguyihao.comqiangyingjituan.comqiangyinli.comqianhai12315.comqianhaiaiaitie.com
qianhaibs.comqianhuajie.comqianhuanhulian.comqianhuaweb.comqianinfo.comqianjia.comqianjiangwang.com
qianjiapp.comqianjiayue.comqianjin5.comqianjing.comqianjingdesign.comqianjingkeji.com
+qianju.org
+qianka.comqiankun6.comqiankunxiaozhi.comqiankunxin.comqianlht.comqianliao.netqianliao.tvqianliaowang.comqianlidianji.comqianliht.comqianliii.comqianlima.comqianlimafile.comqianlimazb.comqianling.pw
qianlinkj.comqianlong.comqianluxiaoshuo.comqianmaiapp.comqianmaidao.com
+qianmh.com
+qianmi.comqianmingyun.comqianmoqi.com
+qianmu.orgqianniu.com
qianp.comqianpailive.comqianpen.comqianpin.com
+qianqi.netqianqian.comqianqiankeji.xyzqianqiantao.comqianrihong.netqianrong.meqianselight.comqianshanren.comqianshuixing.com
qiant.netqiantangke.comqiantianchayuan.com
qiantucdn.comqianvisa.com
+qianwa.com
qianwanku.comqianxiangbank.comqianxibj.netqianximiye.comqianxin.comqianxincdn.com
qianxinet.comqianxingniwo.comqianxingwl.comqianxiwangluo.com
+qianxs.comqianxun.comqianxunclub.comqianxuntrip.comqianyan.bizqianyan001.comqianyanchefang.comqianye88.comqianyikeji.comqianyuangx.comqianyuewenhua.xyzqianyuwang.comqianzhan.comqianzhan123.comqianzhanhl.comqianzhengbanliliucheng.comqianzhengdaiban.comqianzhu8.comqianzhuvisa.com
+qiao88.com
+qiaobo.netqiaobutang.comqiaoclouds.comqiaodan.comqiaofangyun.comqiaofanxin.com
+qiaohu.com
qiaohuapp.comqiaohumall.comqiaojiang.tv
qiaomaren.com
+qiaomi.comqiaomizi.vipqiaomukeji.com
qiaoshang.org
qiaosidea.com
+qiaotu.comqiaoxuanhong.com
+qiaoyi.org
qiaoyue66.comqiaozhuangjia.comqiaozuji.com
qiaqa.comqiaqiafood.com
+qiawei.com
+qibali.comqibazaixian.comqibingdaojia.comqibingwang.comqibo168.comqiboleqipai.comqibookw.comqibosoft.com
qibox.com
+qibuge.comqibuluo.comqibuluo.netqicaispace.comqicaitechan.comqicaizulinwang.comqichacha.coqichacha.comqichacha.netqichamao.comqichangv.comqichecailiao.comqichechaoren.comqichedaquan.comqichegeyin.comqichehot.comqichemen.comqichemoxing.netqichengplus.comqichepinpai.com
qichequan.netqichetansuo.com
qichetong.com
qichezhan.netqichuang.comqichunzp.comqicolor.comqicp.netqicp.vipqida100.com
+qidian.com
qidian688.com
qidianbox.comqidiandasheng.com
qidianjob.comqidianla.comqidianmm.comqidianpw.comqidiantu.com
qidic.comqidimjg.com
+qidiqd.com
qidisheng.comqidiwang.comqidong.name
qidongcha.comqidongyx.com
+qidulp.com
qiduo.netqie.cab
+qie.tv
+qiecdn.comqieerxi.com
qiekj.com
+qieman.com
+qiepai.com
qieta.comqieyike.comqieying.com
+qieyou.comqiezibenpao.com
+qiezic.com
+qiezip.com
+qifan1.comqifandianlansh.comqifangw.comqifawang.com
+qifeiy.comqifeiye.comqifeng-safety.com
qifenxiao.comqifu.me
qifub.com
+qifuip.com
qifun.comqifuyuan.comqigongworld.net
qigousoft.comqiguagua.com
qiguo.com
qiguoread.com
+qihang.cabqihangw.comqihaoip.comqihaxiaoshuo.comqihepaimai.com
+qihihi.com
qihoo.com
qihoo.netqihu-lb.comqihu.comqihu.orgqihuangpuji.comqihuangzhishu.comqihuapi.comqihucdn.com
qihuiwang.comqihuorumen.com
qii404.me
+qiieer.netqiigame.com
+qiivoo.com
qijee.com
qiji.techqijiadianzi.comqijian99.comqijianwang.comqijianzs.comqijiapay.comqijiarui-test.comqijiayoudao.netqijilvxing.comqijishow.comqijishu.comqijizuopin.com
qijoe.com
+qijuan.com
+qijucn.com
qikan.com
qikanmulu.comqikanvip.com
+qikanw.comqike-cloud.com
+qikegu.comqikekeji.com
qikoo.com
+qikouu.comqikqiak.comqiku-cloud.comqiku.com
qikuaibao.comqikuaiwx.comqikucdn.com
+qikula.com
+qilang.netqilanxiaozhu.coqilanxiaozhu.netqilanxiaozhu.vipqilecms.com
+qileso.comqiliangjia.comqiliaokj.comqilindao.com
+qiling.org
qilinxuan.netqilitech.ltdqiliuxs.com
+qilong.com
qilongtan.com
+qiludb.comqiluhospital.comqiluhua.comqiluivf.comqiluyidian.mobiqiluyidian.netqima-inc.com
qimao.com
+qimhua.comqimi.comqimiaosenlin.comqimiaozhiwu.comqiming.techqimingcx.com
qimingdao.comqimingpian.comqimingvc.comqimingventures.comqimingzi.netqiminzi.comqimodesign.com
+qimser.com
+qin.io
+qinbei.comqinbing.comqinblog.net
+qincai.comqincaigame.com
qinchacha.comqincj.me
qinco.netqindaohotel.com
qinde.netqineasy.comqiner520.com
qing-shan.com
qing-tian.comqing.meqing.su
qing.work
qing5.com
+qingbh.com
qingcache.comqingcdn.comqingchengxiaoshuo.comqingchenyu.comqingchu.comqingchunbank.comqingcigame.comqingclass.cc
qingclass.comqingclasscdn.com
qingcloud.comqingcongxiaoyuan.comqingcty.comqingdan.comqingdaochina.org
qingdaofc.comqingdaogxt.comqingdaokohap.comqingdaomaidige.comqingdaomedia.comqingdaomuseum.comqingdaonews.comqingdaoren.comqingdaoshenghao.comqingdaoticai.com
qingdelan.comqingf001.comqingfanqie.comqingflow.com
+qingfo.comqingful.comqingfuwu.comqingfuwucdn.comqingfuwucdn.net
qingfuyun.com
+qinggl.comqinggonggroup.comqingguo.comqinghaigames.com
qinghe.tvqinghua2017.comqinghuan.comqinghuaonline.comqinghuaxuezi.comqinghuo.netqingicon.comqingjiaocloud.com
+qingju.com
+qingkan.twqingkaoyan.comqingkeji.comqingkongfy.xyzqingkuaipdf.comqingkuw.com
qinglanji.com
+qingle.xyzqingliange.comqingliangkeji.comqinglidashi.comqinglin.netqinglingvip.com
+qinglm.comqinglue.net
+qingly.inkqingmail.comqingmang.me
qingmang.mobi
qingmayun.com
+qingmei.me
+qingmh.com
+qingmo.comqingmob.comqingmuit.comqingmuxinli.comqingnianlvxing.comqingnianwang.comqingpanduola.comqingpin.vip
qingpinji.comqingqikeji.comqingqin.comqingqingmedia.comqingquanan.comqingquyp.comqingrenw.comqingruanit.net
qingruoli.com
qingruyun.comqingshou.onlineqingshow.netqingshuo.comqingshuxuetang.comqingsong123.comqingsongcdn.comqingsongchou.comqingsongjituan.comqingsonngxx.comqingstor.comqingstorage.com
qingsucai.com
qingtaoke.comqingteng-inc.comqingteng168.comqingtengzhilian.comqingtian16265.comqingtiancms.netqingting.fmqingting123.comqingtingfm.comqingtingip.comqingtingtrip.comqinguanjia.com
qingui123.comqinguoag.comqingwabs.comqingwawa.com
+qingwk.comqingxiaoyun.comqingxuetang.comqingxun.com
qingyeyun.com
+qingyi.com
qingyidai.comqingyougames.comqingzhanshi.comqingzhifeng.comqingzhiwenku.comqingzhou.bizqingzhou.ltdqingzhou.pro
qingzhou5.comqingzhouaote.comqingzhouip.com
+qingzhu.coqingzichan.netqinhuaiziyun.comqiniu-enterprise.comqiniu-solutions.comqiniu.co
qiniu.comqiniu.inqiniu.io
qiniu.orgqiniu.us
+qiniu.workqiniuapi.comqiniuapp.com
qiniublob.comqiniucc.comqiniucdn.comqiniucloud.netqiniucs.comqiniudn.comqiniudns.comqiniudns.net
qiniudns2.com
+qiniug.comqiniuimg.comqiniuinc.comqiniuio.com
qiniukodo.com
+qiniup.comqiniupkg.com
qiniuqcdn.comqiniurs.comqiniutek.comqinlake.comqinlaobo.comqinlaoke.netqinlinad.comqinlinkeji.com
qinms.com
qinpu.comqinqiang.org
+qinqin.comqinqingshipin.comqinqinxiaobao.comqinshihu.comqinsilk.comqinsmoon.comqinsuanbazi.com
qinto.comqinwanghui.comqinxing.xyz
+qinxue.com
qinxue100.com
qinxue365.com
+qinxuye.me
qinyening.com
qinyi.netqinyuanyang.comqinyukehuan.comqinzc.me
+qinzhe.com
qinzhi.ccqinzhou.netqinzhou360.comqinzhou8.com
qinzhouit.comqinzidna.com
qionghaif.comqionghi.com
qiongming.comqiow.netqipai007.comqipaifan.comqipamaijia.comqipayuan.comqipeiren.com
+qipeng.com
qipie.comqipinshangji.com
qiqao.comqiqi2000.com
+qiqici.com
+qiqids.comqiqilab.comqiqipin.com
+qiqipu.comqiqiuyu.comqiqiuyun.net
qiqjc.comqiquanwl.comqiquhudong.com
qiqumaker.comqiquwen.comqire123.com
+qiredy.com
qirui.com
qisankeji.comqisaoba.comqisbook.comqiseqiao.comqishengliang.comqishixitong.comqishixunmei.comqishu.tw
qishu.vip
+qishui.com
qishunbao.comqishuta.info
+qishuta.laqishuta.netqishuta.orgqisi.co
+qisool.com
+qisuya.com
qita.loveqitaijiuye.com
+qiti88.comqitian-tech.comqitianchina.com
qitiancom.comqitianpower.comqitongxq.com
qitxt.com
+qiu-ai.comqiubiaoqing.com
qiucinews.comqiudian.net
+qiue21.comqiufaqf.comqiufengblog.comqiujuer.netqiujunya.comqiukuixinxi.com
qiumei100.com
qiumeiapp.comqiumibao.comqiumijia.comqiumiwu.comqiuqiusd.com
+qiushi.comqiushibaike.comqiushile.comqiushiwl.com
qiushu.ccqiushu.infoqiushuzw.comqiusuoge.comqiutianaimeili.com
+qiuvps.comqiuweili.comqiuwen.wiki
qiuwu.net
qiuxue360.comqiuxuezy.com
qiuyewang.comqiuyexitong.comqiuzhang.comqiuzhijiangtang.comqiuziti.comqiwangming.comqiwen001.comqiwenhui.comqiwenqi.comqixayrvo.com
qixia.ltdqixian.asiaqixiangwang.comqixigame.com
qixin.comqixin007.comqixin18.comqixin19.comqixincha.com
qixing123.comqixingcr.comqixingquan.comqixingtang.com
qixintian.comqixiu88.com
qixoo.com
qixuan888.com
+qixuny.comqiye.laqiye163.comqiye8848.comqiyegongqiu.com
+qiyeku.com
qiyelipin.com
qiyes.comqiyeshangpu.comqiyeshangpu.netqiyetong.comqiyetoupiao.comqiyewang.bizqiyeweixin.comqiyewenhua.netqiyeyougou.comqiyeyouxiang.netqiyi.com
+qiyicc.com
+qiyigx.com
qiyimusic.comqiyipic.comqiyitianbao.comqiyoubangbang.comqiyouji.comqiyoujiage.com
qiyouwang.comqiyouworld.com
qiyqh.comqiytech.com
+qiyu99.comqiyuanai.comqiyuange.comqiyuanxuetang.net
qiyucloud.com
qiyue.comqiyuebio.comqiyuesuo.com
qiyujiasu.comqiyujoy.com
+qiyukf.com
+qiyukf.netqiyukid.comqiyuns3.com
qiyuntong.com
qiyutech.techqiyutianxia.comqizhanming.com
qizheplay.comqizhidao.comqizhihaotian.comqizhu18.comqizhuyun.comqizuang.comqizubang.com
qj023.comqj26.comqj9zn3qd2dj2ck00.app
+qjcode.comqjcz.comqjdchina.comqjfy.com
qjhlw.comqjhm.com
+qjiajk.com
+qjidea.comqjimage.com
+qjjfin.com
qjjmw.comqjmotor.com
+qjnice.comqjrc.com
qjren.com
+qjsb88.comqjslngy.comqjsmartech.com
+qjtrip.com
qjwenming.comqjwh.xyz
+qjwhzs.comqjxgold.comqjystang.com
qk365.comqkagame.comqkan.com
qkang.com
qkblh.com
qkcdn.com
+qkcwyy.com
qkeke.comqkhg.com
qking.ink
qkisp.com
+qkkj88.com
qkkjd.com
+qkl123.com
+qkl234.com
+qknode.com
+qknown.comqksw.com
qktoutiao.comqkttapp.com
qkvop.comqkzj.comql-cellbank.com
+ql-msx.com
ql009.com
ql18.mobi
+ql1900.comql1d.com
ql361.com
+ql361.shopql47.com
ql789.comqlbchina.comqlbg.netqlbk.com
+qlchat.com
qldgd.com
+qldz.store
qldzj.comqlelectrons.com
qlgpy.comqlhimalayantm.com
+qlhxhz.com
qlidc.comqlippie.comqlivecdn.comqljdcnc.com
qll-times.comqlmoney.com
qlotc.netqlrc.comqls.fun
qlteacher.comqluu.com
+qlwuji.comqlxiaozhan.com
+qlyygl.com
qm120.comqm41.com
qm989.com
+qmacro.com
qmail.com
+qmango.comqmconfig.comqmei.meqmei.vip
+qmeikq.com
+qmhd87.comqmhimalayanpz.comqmhkids.comqmht.com
qmht.mobiqmjianli.comqmjzdscj.com
qmjzs.com
qmniu.com
+qmoji.mobi
qmoji.netqmoyouxi.comqmqm.netqmrobot.com
qmsea.comqmsjmfb.comqmtj.netqmtmedia.comqmtv.comqmuiteam.comqmvchina.com
qmwtp.com
qmwyy.comqmyq.com
+qmyvps.com
qmyyl.comqmz5.comqmzs.com
qnali.com
+qnapcn.com
qnbar.comqncd.com
qncyw.com
+qnfcdn.com
+qnfuli.com
+qngcjx.com
qnget.com
+qngslb.com
+qngygf.com
+qnhdkj.comqnhuifu.com
qnjsj.com
+qnjslm.comqnl1.com
qnlinking.comqnmlgb.tech
+qnqcdn.com
+qnqcdn.net
qnsdk.com
qnssl.comqntz.cc
qnvhm.comqnvipxd.com
qnvod.netqnwoocaijo.com
+qnydns.com
+qnydns.net
qnzyy.com
qoaao.com
qolai.com
+qooboo.com
qoocc.com
+qooioo.com
+qookar.comqookkagames.comqoqaoligei.com
+qosnet.xyzqosq.com
qp110.comqp46.comqp49.com
qp666.com
+qpaimg.com
+qpb187.com
qpdiy.com
+qpgame.com
+qpgczx.com
+qpjjku.com
+qpjylm.comqpkaifa.comqplcinfo.com
qplus.comqpmwg68cre9pci.comqpoc.com
+qpstar.comqpvuqfha.comqpxiaoshuo.comqpzq.net
qq-gg.netqq-xmail.com qq.cczyxr.com
+qq.com
qq.design qq.do qq.md
+qq.net
qq123.xin
+qq1398.comqq163.cc
qq163.com
qq163.net
qq190.com
qq190.netqq3xkm64kavh.com
qq499.comqq5.comqq52o.me
+qq5818.com
qq620.com
qq717.comqq7c.com
qq933.com
+qq999q.comqqaiqin.comqqan.com
qqans.comqqb.pubqqba.comqqbiaoqing.comqqbibile.com
qqcdn.comqqcg.com
qqcjw.comqqcrvpv.com
qqdcw.com
qqddc.com
qqder.comqqdeveloper.com
qqdiannao.comqqdiannaoguanjiadl.com
qqdna.com
+qqdzzb.winqqe2.com
qqeml.comqqeo.com
qqgameapp.comqqgamedesign.comqqgames.comqqgb.comqqgd.comqqgexing.comqqgexingqianming.com
qqgfw.comqqgx.com
+qqgyhk.com
qqhbx.comqqhelper.netqqhn.net
qqhot.comqqhrch12333.comqqhubei.com
qqhwb.com
qqiac.com
qqjay.comqqje.com
qqjia.com
+qqjjsj.comqqjm.comqqju.com
+qqkj66.com
qqkjj.com
qqkkb.com
qqkqw.comqqkrmotors.comqqku.comqqkuyou.comqqkwsitu.comqqlaity176.site
+qqleju.com
+qqmail.comqqmail.email
qqmcc.org
qqmda.com
qqmra.com
qqmtc.comqqmusic.comqqnn.net
qqokk.com
qqopenapp.com
qqpao.com
+qqpifu.com
qqppt.com
+qqq.tvqqqiyemail.comqqqiyeyouxiang.com
+qqqmmm.com
qqqnm.com
+qqqooo.com
+qqrain.com
+qqread.com
qqrer.com
+qqride.comqqrizhi.comqqro.com
qqscb.comqqsgame.comqqsgmob.comqqsgplay.comqqshidao.comqqshuoshuo.comqqsk.comqqsm.com
+qqsort.com
+qqssly.com
qqstudent.comqqsurvey.net
+qqswzx.comqqt.com
qqteacher.com
+qqtest.comqqtf.com
qqtlr.comqqtn.comqqtouxiangzq.com
qqtu8.comqqtz.com
qquanquan.comqqumall.com
qqurl.com
qqvip.comqqwewew.com
+qqwmly.com
qqwmx.comqqwxmail.com
qqwys.netqqxmail.comqqxs.laqqxs5200.comqqxsnew.netqqxsnew5.comqqxsw.co
+qqxsw.infoqqxsw.la
qqxww.comqqxy100.com
qqxzb-img.com
qqxzb.com
+qqy189.com
+qqyewu.comqqymail.com
qqyou.comqqyouju.comqqyy.comqqz1.comqqz7.com
qqzby.net
qqzhi.comqqzi.netqqzl.cc
+qqzmly.com
qqzsh.com
qqzyw.comqqzywang.com
qqzzz.netqr25.com
qrcpu.comqrgiant.com
zywxpress.comqroad.cc
qrsvm.com
+qrtest.comqrtz.co
+qrx.cc
qrzxx.comqs12315.comqs5.org
qs921.com
zywxgames.com
qsbank.cc
qsbbs.net
qsbdc.com
qsboy.com
+qsbwbj.com
qscah.sbsqscharge.com
+qschou.com
+qsebao.com
+qsedus.comqseeking.com
qsfcw.comqsgx-pt.com
+qshang.com
qsiso.comqskretkf.comqsmchina.com
qsmis.comqsmutual.com
qsowt.icu
qspfw.comqspfwadmin.com
+qss-lb.com
qssec.comqstatic.com
qstbg.comqstkizve.comqstsking.com
+qsw.la
+qsw521.comqswk.com
+qswnet.comqswzayy.comqsxezgai.comqsxi.com
qsxiu.comqsyy.netqszs.comqszt.comqszt.net
qt-ly.com
qt119.comqt56yun.comqt6.comqt86.comqtav.org
qtbig.comqtccolor.comqtcn.orgqtdebug.comqtdream.com
qteng.netqter.org
+qtest8.comqtgz.ccqthinker.netqthnews.com
qtkgf.com
qtkj.love
+qtlcdn.com
+qtlcdn.netqtlcdn360.info
qtlcdn360.top
qtlcdn360.xin
qtlcdn360.xyz
qtlcdncn.info
qtlcn.comqtlcname.com
+qtlglb.comqtlglb.info
qtlgslbcn.comqtlgslbcn.info
qtlgslbcn.netqtonghua.com
qtool.net
qtoqm.comqtqsaadp.com
qtrun.com
qtshe.comqtshisan.com
qtshu.comqtshu.la
qtsyw.comqtsyzfc.comqttc.netqttunion.comqtu8.comqtumist.com
qtvcd.comqtx.comqtyd.comqu02.com
+qu2345.com
qu247.comqu38.comqu67.comqua.comqualcomm-challenge.com
+zywvvd.comquan.mxquan007.comquan365.comquanaichina.comquanben.com
quandashi.comquanduoduo.comquanerp.comquanfangtong.netquanfangtongvip.com
quanfeng.tech
quanfensi.com
+quanfs.comquanguoban.comquanguoyoubian.comquanhuaoffice.com
quanji.la
+quanji.netquanji55.comquanjiao.netquanjing.comquanjingke.comquanjunkeji.comquanjuwuye.com
quankexia.com
quanlaoda.comquanlego.comquanlingtouzi.comquanlitu.comquanma51.com
quanmaigo.comquanmaihuyu.comquanmama.comquanmamaimg.comquanmeipai.comquanmin-game.com
+quanmin.tvquanmin110.comquanminbagua.com
quanminbb.com
quanminfu.comquanminyanxuan.comquanoukeji.com
quanqiuwa.comquanqiuweishang.comquanquanapp.net
quanr.comquanriai.comquansheng-group.comquanshi.com
quanshuge.comquansucloud.comquantacn.comquantaoyougou.comquantiku.orgquantil.com
quantilcn.com
quantilcn.net
quantilng.comquantuantuan.comquantum-info.com
+quanup.comquanwai100.com
quanxi.ccquanxiangyun.comquanxiankeji.comquanxiaoha.comquanyin.xyz
quanyuesc.com
+quanzb.comquanzhanketang.comquanzhi.com
quanzhifu.net
quanziapp.comquaolai.com
quarkbook.comquarkers.com
quasarchs.comquazero.comquba360.comqubaike.comqubaobei.comqubiankeji.com
qucai.comqucaiad.comqucaidd.comqucaiti.comquce001.comquceaiqing.com
+quchao.netqucheng.com
+quchew.comquclouds.comqudaiji.com
qudao.comqudao168.comqudaowuyou.comqudaowuyou04.comqudayun.comqudiandi.comqudingshui.com
+qudong.comqudong51.netqudushu.com
quduzixun.comquechao.vipquectel.com
+queenl.com
+quefan.comquegame.com
+quegui.runqueji.twqueniuaa.comqueniuab.comqueniuai.comqueniuak.comqueniual.comqueniuam.comqueniubc.comqueniubd.comqueniubf.comqueniubg.comqueniubh.comqueniubi.comqueniubk.comqueniubl.comqueniubm.comqueniubn.comqueniubq.comqueniubt.com
queniucdn.com
queniucdn.netqueniucf.comqueniucg.comqueniuck.comqueniucl.comqueniucm.comqueniucn.comqueniuco.comqueniucs.comqueniucw.comqueniucx.comqueniucz.comqueniuda.comqueniudd.comqueniude.comqueniudf.comqueniudg.comqueniudl.com
queniudns.com
queniudns.netqueniudo.comqueniudt.comqueniuee.comqueniueg.comqueniueh.comqueniuei.comqueniueq.comqueniuer.comqueniues.comqueniuez.comqueniufa.comqueniufc.comqueniufg.comqueniufi.comqueniufj.comqueniufm.comqueniufr.comqueniufw.comqueniufz.comqueniugd.comqueniugm.comqueniugslb.comqueniugslb.netqueniugt.comqueniugv.comqueniugw.comqueniugz.comqueniuhe.comqueniuhg.comqueniuhl.comqueniuhp.comqueniuhx.comqueniuhy.comqueniuhz.comqueniuib.comqueniuic.comqueniuif.comqueniuig.comqueniuih.comqueniuin.comqueniuiq.comqueniuit.comqueniuiv.comqueniuiy.comqueniuja.comqueniujd.comqueniuje.comqueniujf.comqueniujg.comqueniujq.comqueniujz.comqueniukk.comqueniukq.comqueniukr.comqueniuks.comqueniukt.comqueniukw.comqueniukx.comqueniukz.comqueniulb.comqueniulf.comqueniulg.comqueniuli.comqueniulp.comqueniulr.comqueniuls.comqueniulu.comqueniulv.comqueniulz.comqueniumc.comqueniumd.comqueniumf.comqueniumh.comqueniumn.comqueniumo.comqueniumy.comqueniund.comqueniunh.comqueniuni.comqueniunq.comqueniuns.comqueniuny.comqueniunz.comqueniuod.comqueniuog.comqueniuop.comqueniuos.comqueniuot.comqueniuoy.comqueniupa.comqueniupc.comqueniupe.comqueniupg.comqueniupj.comqueniupl.comqueniupq.comqueniupz.comqueniuqe.comqueniuqj.comqueniuql.comqueniuqm.comqueniuqt.comqueniuqu.comqueniuqy.comqueniuqz.comqueniurc.comqueniurj.comqueniurk.comqueniurq.comqueniuru.comqueniurv.comqueniurx.comqueniusa.comqueniusf.comqueniusg.comqueniush.comqueniusi.comqueniusj.comqueniuso.comqueniusp.comqueniusr.comqueniusv.comqueniusy.comqueniusz.comqueniutc.comqueniute.comqueniutn.comqueniutt.comqueniutx.comqueniutz.comqueniuua.comqueniuuc.comqueniuuf.comqueniuuk.comqueniuum.comqueniuuq.comqueniuus.comqueniuuy.comqueniuvb.comqueniuvc.comqueniuvg.comqueniuvi.comqueniuvk.comqueniuvq.comqueniuvu.comqueniuvx.comqueniuwb.comqueniuwf.comqueniuwh.comqueniuwk.comqueniuwq.comqueniuwx.comqueniuwz.comqueniuxd.comqueniuxe.comqueniuxk.comqueniuxr.comqueniuxx.comqueniuxy.comqueniuxz.comqueniuyb.comqueniuyf.comqueniuyg.comqueniuyk.comqueniuys.comqueniuyu.comqueniuyz.comqueniuza.comqueniuzd.comqueniuzf.comqueniuzh.comqueniuzl.comqueniuzp.comqueniuzu.comqueniuzv.comqueniuzy.comqueniuzz.comqueryrecord.comqueshao.com
+queshu.comquestyleaudio.comquestyleshop.comquexiaoxian.comqueyang.com
+qufair.com
+qufaya.com
qufeisoft.com
qufeizhou.comqufenqi.com
qufenqian.vip
+qugame.comqugongdi.comquguonet.com
quhaidiao.com
quheqihuo.com
quhua.comquhuaxue.comquhuichang.net
quhuo.netquick-touch.comquickapi.net
quickbass.comquickcan.comquickcep.com
quickddns.comquickdetection.comquickembed.comquickingdata.comquickjoy.comquicklaser.comquicklyopen.comquicksdk.comquicksdk.net
quickswan.comquickwis.comquilimen.com
quimg.comquji.comqujiangyizhong.com
qujianpan.comqujie365.comqujingm.comqujunde.com
qukaa.comqukan.ccqukanshu.comqukantoutiao.netqukanvideo.comquklive.com
+qukuai.comqukuaila.com
qulankeji.comqulianaiba.comqulishi.comqulv.comqumaihuishou.comqumaishu.comqumaiyao.com
qumaw.comqumifeng.comqumingdashi.comquminglemei.comqumingxing.comqumitech.comqun-net.com
+qun.hk
+qun100.comqun7.comquna.com
+qunaer.com
qunale888.com
qunar.com
qunar.inkqunarcdn.comqunarzz.com
qunba.com
+qunchi.com
+quncrm.com
qunduo.ccqunfenxiang.net
+qunhai.netqunhaohotel.com
+qunhei.comqunhequnhe.comqunhuisp.comqunjielong.com
qunke.comqunkeng.comqunliao.info
qunmi.vipqunniao.comqunonnet.com
qunsou.coqunteng.netquntengnet.comquntuishou.com
qunxingvc.comqunyingkeji.comqunyouxuan.com
qunzb.com
qunzh.comqunzhuquan.com
+qunzou.comqupaicloud.comqupeiyin.comqupingce.com
+qupuji.comquqi.com
+quqike.comquqiuhun.comququabc.comququyou.comququzhu.comquqxphdm.com
qusem.comqushixi.netqushoumiao.comqushuba.netqutaiwan.comqutanme.comqutanup.com
qutao.com
qutaojiao.comquthing.comqutianshanav.comqutingting.com
qutoutiao.net
qutouwang.comqutu.comqutuiwa.comquumibao.com
+quumii.com
+quvisa.com
quwan.comquwangming.comquweiwu.com
quwenqing.comquwentxw.comquwj.comquwm.com
+quword.comquwuxian.com
quxds.comquxianchang.comquxiang.workquxianzhuan.comquxingdong.com
quxiu.com
+quxuan.comquyibao.com
quyinginc.comquyiyuan.com
quyou.netquyouhui.netquyu.netquyuanjingfu.com
quyundong.comquzhiwen.comquzhuanxiang.comquzwamx.com
+quzz88.com
quzzgames.com
+qv0ns3.comqvdv.netqvip.netqvkanwen.comqvlz.comqvxz.com
+qw5599.comqwbk.cc
+qwdzqz.com
qwe1e.comqweather.comqweather.net
+qwfync.comqwgt.com
qwimm.com
qwolf.comqwomcrm.comqwpo2018.comqwps.comqwps.netqwq.linkqwq.moeqwq.ren
qwq.trade
+qwqfzl.comqwqk.net
qwqoffice.com
qwrmt.comqwsy.com
qwzav.com
+qx1000.comqx10086.netqx100years.com
qx121.com
qx162.com
+qx8.cc
+qxbnkj.com
+qxckjr.comqxcu.comqxdaojia.com
qxdcc.com
+qxgcsc.comqxiu.comqxka.com
+qxkjjt.comqxkp.net
qxlib.com
qxllq.comqxmewmgr.comqxmugen.com
qxnav.com
+qxnecn.com
qxnic.com
qxnzx.comqxqkeak.comqxqtwmgz.com
qxqxa.com
qxsdq.com
+qxsfjq.com
qxswk.com
qxteacher.com
+qxtour.comqxueyou.com
+qxw.cc
qxw18.comqxwz.com
+qxxsjk.comqxyjssb.com
qxzxp.com
qy-office.com
qy-qq.com
+qy.com
+qy.net
qy266.comqy2s.comqy57.comqy6.comqy7v7nn96e.comqyaninfo.comqyc2008.comqycn.comqycn.netqycn.orgqycname.comqycs168.comqycylinder.com
+qydimg.comqyer.comqyerstatic.comqyestar.comqyfw168.com
qyg12.com
qyg30.comqyg9.comqygjyey.com
+qyglzz.comqygzbxpt.com
qyham.comqyhl.vipqyhxths.comqyhxy365.comqyiliao.comqyinter.comqyjidianqi.com
qyjks.comqykh2009.com
qyle1.com
qymgc.com
qyous.comqyrb.comqyrx.cc
qys2y.comqysd.net
qysgf.comqysport.comqyssgame.comqysulian.comqysuliao.comqyszyyy.comqyt.comqyt1902.com
qytdesign.com
qytst.com
+qytxhy.comqyunapp.com
+qywcom.comqywd.comqyweerc.com
qywww.net
+qyxxpd.com
+qyxzfw.com
+qyyqyj.comqyyt.com
+qyzba.clubqyzc.netqyzlgame.com
qyzss.comqyzx.vip
qz100.com
qz123.com
qz1gy.app
qz456.com
+qz6epg.com
qz828.com
+qz896.siteqz96811.com
+qzaolu.com
qzbbs.com
+qzbgzz.comqzbhgyl.com
+qzbhzy.comqzbigstone.com
+qzbuxi.com
+qzbykq.comqzccbank.com
qzchuxing.com
+qzcklm.com
+qzclfc.com
qzcns.comqzda.comqzdatasoft.com
+qzdfys.com
+qzdswy.com
qzdxcj888.com
+qzdyyy.com
qzeyy.com
+qzfnws.comqzfwckj.com
+qzg123.com
+qzgcdl.com
+qzgchj.com
+qzgfyy.com
+qzgjjp.com
qzh56.comqzhaite.com
qzhfw.com
+qzhlkj.net
+qzhmps.com
+qzhmyy.com
+qzhmzx.com
+qzhrkj.com
+qzhsjc.com
+qzhslw.comqzhxshipping.com
qzimg.comqzj2.com
qzjcd.com
+qzjhsd.comqzjkdyf.com
qzjkw.net
qzjlw.com
+qzjxzs.comqzjy029.com
+qzjycc.com
qzjzyy002.comqzkangfu.com
qzkcw.com
qzkey.com
+qzktzc.comqzlanwei.comqzld.com
+qzldkj.com
+qzljjq.comqzlo.com
+qzlwnm.comqzmayouquan.comqzmktjt.com
+qzmtgs.com
qznews360.comqznovel.comqznovelpic.comqznovelstatic.comqznovelvod.comqznqefififri28.xyz
qznxt.comqzone.cc
qzone.comqzoneapp.com
+qzonei.com
+qzp666.com
+qzpljc.com
+qzqcfw.com
qzqcw.com
+qzqiye.com
+qzqkwl.com
qzqn8.com
qzqstudio.com
qzrbx.comqzrc.comqzrx.net
+qzsdkj.com
qzsfy.comqzsgyxx.com
qzshangwu.com
+qzshly.com
+qzsmxx.comqzsqsnhdzx.com
+qzssdy.comqzsx168.comqzsycwl.comqzsystem.com
qzsyy.com
+qzt520.comqztc.vipqztjhbq.comqzwb.com
qzwgw.comqzww.com
qzxdianzi.comqzxkeji.comqzxx.comqzyb.com
qzynx.comqzyonyou.comqzyuchao.com
+qzyxzs.com
qzyzt.com
+qzzdtc.comqzze.com
+qzzgdl.comqzzhedu.comqzzhonghan.comqzzjchy.comqzzn.com
qzzpw.net
+qzzres.com
+qzzsbx.com
+qzzyyy.com
qzzzg.net
r-tms.net
zywtc.com
+r12345.comr147emh.comr1x1.comr1y.com
r2009.comr220.ccr2coding.comr2yx.comr369.co
r3ltm.appr42xv344d.shopr435.comr51.netr53lj.cor5k.com
r5tao.comr61lsi5tje.comr6d7345371.com
r6fyblg7.shopr75y8c2628.com
r77777777.comr79xqa8r7e93.comr9t1.com
ra216.com
ra2ol.com
raas1.comrabbit1117.com
rabbitpre.comrabbitpre.merabbitserve.com
rabschina.comrace604.com
+racent.comracetigertiming.comracing-china.comracktray.com
+racpro.net
+racymj.comradicalmail.net
+radida.com
radio1964.comradiotj.comradiowar.orgradius-america.comradleybagssaleuk.org
raduxtech.comraeblog.comrahisystems-cn.com
raidc.com
+raikay.comrail-transit.com
+railcn.netrails365.netrailsctc.comrailwaybill.comrailworkschina.com
rain8.com
+raina.techrainasmoon.comrainbond.comrainbow.one
rainbowcn.comrainbowred.comrainbowsoft.orgrainbutterfly.xyzrainclassroom.com
+raindi.netraineggplant.comraingray.com
+rainhj.com
+rainhz.comrainlain.comrainmanfloor.com
+rainwe.comrainyun.com
raise-win.comraisecenter.netraisecom.com
raisedsun.comraisewebdesign.comraisingsun.xyz
raiyi.comrajax.me
rajyj.comrakinda-aidc.comrakinda-xm.comrakpqgk.comralf.renramadaplaza-ovwh.com
ramboplay.com
ramostear.comramventures.com
ramwaybat.com
rancat.im
randongma.com
ranfenghd.comrangercd.comrangnihaokan.comrangotec.com
+rangti.com
+ranhou.comrankaiyx.comrankingonline.jp
ranknowcn.comranliao.bizranling.com
rantu.com
+ranwen.org
ranwen.twranwena.comranyangrent.com
+ranzhi.net
+ranzhi.org
+raobee.com
raoke.net
+raonie.com
+raorao.comrap-pro.comrapidppt.com
rapoo.comrapospectre.comrarbg.torarcbank.comrarelit.net
+rarone.com
rarrh.comrashost.com
raspigeek.comrastargame.com
rat3c.comratingtoken.netrationalwh.com
ratuo.comraveland.netrawanfa.comrawchen.comray-joy.comray1988.comray8.ccrayalto.proraychase.netraycom-inv.comraycuslaser.comraydonet.comrayenergytech.comrayfalling.comraygame3.comraygame4.comrayiantway.com
+rayjoy.com
rayli.comraylink.liveraymx-micro.comrayoptek.comrayp.com
rayps.com
+rayrjx.comrayseasc.comraysilicon.com
raysync.cloudraythonsoft.comraytoon.net
rayuu.comrayvision-tech.com
rayvision.com
+raywit.comrayxxzhang.com
+rayyzx.comrazerapi.comrazersynapse.com
razerzone.comrazrlele.com
raztb.com
rb139.com
rb400.com
rbbko.com
rbi-china.com
rbischina.orgrbladycrusaders.comrbqq.com
rbtxw.comrbz1672.com
+rbzygs.com
rc114.com
rc3cr.com
+rc4u4f.com
rc775.comrcbc888.comrcbuying.comrccchina.com
rcche.com
+rcdang.com
rcepfruit.comrcesssc.com
+rcfans.com
rcgus.comrchudong.com
rchun.com
+rcjypx.com
+rclbbs.comrclolci.com
+rclrow.comrcmarble.com
+rcolab.comrcpx.cc
rcqmp.com
rcsky.com
rcsnc.com
+rcss88.com
+rcsxzx.com
rcuts.comrcw0375.comrcwl.netrcyd.net
+rcyxdk.comrczhuyu.comrczp.orgrczx.comrd-game.comrd0114027.shop
rd351.com
rd4msaze.shop
+rdadiy.comrdamicro.com
rdbuy.com
+rdcnzz.com
rddoc.com
+rdfybk.com
rdgcs.comrdgz.org
rdhyw.com
rdidc.com
+rdnsdb.com
rdouc.com
+rdplat.com
rdsdk.com
rdsqs.net
+rdwork.com
rdxmt.com
rdxmu.com
rdyjs.com
rdzjw.comrdzs.comrdzx.comrdzx.netrdzy.net
+reabam.comreachace.comreachsh.com
reachtone.comreachwin.netreact-china.org
+react.mobiread678.comreadboy.comreadceo.comreadend.netreader8.comreaders365.comreadfree.netreadgps.com
+readhb.com
readhr360.com
+readhub.me
+readke.com
readlevel.comreadlink.com
+readm.techreadmeok.comreadmorejoy.comreadnos.com
readnovel.comreadpai.com
readpaper.comreadpaul.com
+readse.comreadten.net
readu.net
readwithu.comready4go.comreai120.comrealapp.xinrealcybertron.comrealforcechina.com
+realks.comreallct.comreallylife.com
+realme.com
+realme.net
realmebbs.comrealmedy.comrealmemobile.comrealmeservice.com
+realor.netrealsee-cdn.comrealsee.com
realshark.comrealsheying.comrealsun.comrealtech-inc.comrealtimecn.comrealtorforce.carealxen.comreapdaro.comreardatchina.comreasonclub.comrebang.today
rebatesme.comrebo5566.com
+rebozj.prorechaos.comrecolighting.comrecordpharm.comrecovery-transfer.com
+recoye.comrecuvachina.comrecycle366.comredacted.chredatoms.comredbaby.comredbeeai.com
redbox123.comredcome.comredcross-hx.comredcross-sha.orgreddogchina.comredefine.ltd
+redfcv.comredflag-linux.com
+redhome.cc
redhongan.com
+redhtc.comredianduanzi.com
redianmao.comredianyuansu.comredianyule.comredianzixun.com
+rediao.comredicecn.com
+redidc.com
redisbook.com
redisfans.comredmagic.com
+redmou.com
rednetdns.com
+redocn.com
+redoop.comredoufu.comredphon.comredpptx.comredream.comredredsquare.comredrock.team
redsea888.com
redsh.com
+redshu.comredstonewill.com
redsun-rp.comredsungd.comredtriphome.comreduxingxuan.com
+redyue.com
+redyue.orgreedoun.com
+reeidc.com
+reeiss.com
reeji.com
+reekly.com
+reenoo.com
+reenoo.net
reeoo.com
refined-x.comrefineidea.comreformdata.org
+reg007.comregengbaike.comregexlab.com
regexr-cn.comreglogo.net
regtm.com
rehiy.com
rehtt.comrehuwang.comreilybrand.comreinness.comrejoiceblog.comrejushe.com
rekonquer.com
rekoo.com
rekoo.netrela.merelangba.com
relayx.io
reliao.tvreloadbuzz.comrelxtech.comrelxyanyou.comrely87779777.comrem-elearning.comremaijie.net
remapcity.comremax-bj.comrememtek.comremo-ai.comremodelife.com
remotcon.mobi
remoteaps.comremotedu.comremyhumanhairextension.comrenaopai.comrenaren.comrenatabonar.comrenbenai.comrenbenzhihui.com
+rencai.biz
rencaiaaa.com
rencaijob.comrencheng1991.comrendajingjiluntan.com
rendaovip.com
renderbus.comrenderincloud.comrendeyixue.com
+rendna.com
+rendoc.comrenegade-project.orgrenfutm.comrenguokeji.comrenhe888.comrenhence.comrenhuaicode.com
renji.comrenjian.comrenjiaoshe.comrenjiyiyuan.com
+renkky.comrenleisheji.comrenlijia.comrenliwo.comrenmaiku.comrenmaitong.comrenminkaiguan.comrenminyixue.com
renny.ren
+renping.ccrenren-inc.com
+renren.com
renren.iorenren3d.comrenrenbeidiao.com
renrenche.com
renrencou.com
renrendai.com
renrendoc.comrenrenfinance.com
renrening.comrenrenmoney.comrenrenpeizhen.comrenrenshaike.com
renrenshe.comrenrenshipu.comrenrensousuo.comrenrenstudy.com
renrentou.comrenrentrack.com
renrenyee.com
renrk.com
+renrzx.comrensa-hanno.comrensheng123.com
rensheng2.com
renshouks.com
rent.workrentaoxing.comrentiantech.com
+renwen.comrenwenyishu.comrenwuji.comrenwuyi.comrenxueyanjiu.comrenyiwei.com
renzaoshu.com
+reocar.comrep-whc-pmby.xyz
repai.comrepaiapp.comrepanso.com
+repian.com
repianimg.comreplays.netreplica.clubreplicabest.ccreplicachinawatch.vip
replicahot.cc
replicais.comreplicaluxury.ccreplicaorologiitalia.itreplicareloj.esreplicasale.ccreplicashop.ccreplicasreloj.comreplicasrelojlujo.comreplicaswiss.coreplicaswissclocks.comreplicawatchaaa.ccreplicawatchesbuy.comreplicawatchhot.comreplicawatchshipping.comreplicawatchshop.ccreplicawatchsshop.ccreplicheorologio.comrepliquemontresdeluxe.frrepliquesuisse.coreportify.ccreportrc.comreptilesworld.comreqable.comreqgvheo.comrergdfh.com
reseetech.comreservehemu.comresheji.comresistor.todayresnics.comresowolf.comrespect-lab.comrespondaudio.com
respusher.com
+resset.comresturbo.com
resuly.me
retailo2o.comretalltech.comretiehe.comretouchpics.com
+return.netreturnc.com
reveetech.comreverselove.comreviosky.comrevolut.ltd
revy.asia
rew65.com
rewhp.com
+rewnat.xyz
reworlder.comrewu.netrewuwang.com
+rexcdn.com
rexdf.orgrexinyisheng.com
+rexsee.comrexuecn.comrexueqingchun.comreyinapp.com
reyoo.comrezhanwang.comrf-china.com rf.hkrfaexpo.com
+rfc2cn.comrfchina.comrfchost.com
rfcreader.com
+rfdl88.com
+rfdzys.com
+rfeyao.com
+rffan.info
+rfgjhz.com
+rfhhzx.com
+rfid-e.comrfidcardcube.comrfidfans.comrfidtech.ccrfilter.comrfjd.comrfk.comrfmwave.comrfndpbq.com
rfthunder.com
rfvmp.com
rg950.comrgaxobcs.com
+rgb128.com
rgble.comrgezppvk.comrgfc.net
+rgkjyp.comrgoo.com
rgrcb.com
rgslb.com
rgtjf.comrgzbgroup.hkrgzxraiu.comrh98.comrhce.cc
+rhcqmu.com
+rhctwy.com
rhcyl.com
rhexe.comrhhz.netrhinosgamestwhk.comrhkj.comrhonghai.com
+rhphos.comrhsj520.comrhtimes.comrhusen03.com
rhwatchcn.com
rhwatches.comrhyme.cc
rhypw.comri-china.comrianico.tech
+riaway.comribaoapi.comribaocdn.com
+ribaow.com
ribenbang.comribencun.comribenguwan.comribenshi.comricearth.comricebook.com
ricequant.comriceyun.comrich-chang.comrich-futures.comrich-healthcare.com
richardfw.comricheninfo.com
richhurry.comrichiecn.com
richinfer.netrichkays.comrichong.comrichseafood.comrichsuntrade.comrichtech123.com
+richtj.com
+ricklj.comrickyfabrics.comrickyid.comrickysu.com
+ricterz.me
+rictos.comriecent.comrightknights.comrightpaddle.com
rigol.com
rigouwang.com
+riitao.comriji001.com
+rijigu.comrijiwang.com
+rili11.comrilijingling.comrilvtong.com
+rilzob.com
rim20.com
rimaiwang.comringdoll.comrinlink.com
rinvay.cc
+rioalc.comriogene.com
riolu.lol
riot.cool
ripic.xyz
rippletek.comriqicha.comrisc-v1.com
riscv-mcu.com
+riscv.clubrisecenter.com
risechina.orgriselinkedu.comrisencn.comrisesoft.net
riseyears.comrisfond.com
rishiqing.comrishuncn.com
rising-eo.comrisingpenny.comriskivy.comrisuiwd.comrisunsolar.comriswing.comritao.hk
ritaomeng.comritarpower.comritering.comrivalsa.net
rivergame.netriverlimittech.netriveryun.com
+riwise.com
+rix-dl.comriya.ccriyingkj.com
riyuexing.orgriyuezhuan.com
+riyugo.comriyutool.comrizhao9.comrizhaociming.com
rizhaokjg.comrizhaosteel.comrizhaoxl.comrizhili.comrizhiyi.comrizhuti.comrj.link
rj668.com
rj889.net
+rjcopy.comrjdk.orgrjghome.comrjh0.comrjhcsoft.com
rjlqq.comrjoy.com
rjreducer.comrjs.comrjsjmbwx.com
rjsos.comrjtx.netrjty.com
+rjxzjx.com
rjzxw.comrk-light.com
rkanr.comrkaq110.comrkdatabase.comrkddzda.com
rkeji.comrkgaming.com
+rkkgyy.comrkrcemei.com
rksec.com
rkvir.comrl-consult.com
rlair.net
+rlcykj.com
+rljydt.comrlkj.comrlkj.netrlnk.netrlreader.com
+rlsofa.net
+rltdxt.com
+rlwyjf.com
rlydw.comrlyl.net
rlzdh.com
+rm.run
+rmb.sh
+rmburl.comrmcteam.org
+rmeaiw.xyz
rmejk.comrmhospital.comrmjiaju.com
+rmjtxw.com
+rmjypx.com
rmnof.com
rmny.tech
+rmrbwc.com
rmrun.com
+rmryun.comrmsznet.comrmttjkw.com
+rmtyun.comrmwxgame.com
rmxiongan.comrmxsw.ccrmysjzx.comrmzs.netrmzt.com
rmzxb.comrn-core.comrn-hswh.comrnfengwo.com
+rngmoe.comrngtest.comrnhy.net
rnmtb.comrnpagoc.site
+ro.comro50.comro8qwpaikd4kx.comroad-group.comroadjava.comroadlady.comroadoor.comroadsignads.com
+roaing.comroamingroandro.com
robam.com
robei.com
roboo.com
+robook.comroborock.comrobot-ai.orgrobot-china.comrobot301.netroboticsurg301.netrobotkang.ccrobotphoenix.comrobotplaces.com
+roboxx.ltdrocaircraft.comrochat.techrock-chips.com
rockbrain.netrockdata.netrockemb.comrockerfm.comrocketlab-aka.ccrocketlab-us.comrocketmq.cloud
rockflow.tech
rockjitui.com
+rockru.com
rockx.pubrocky.hk
rockyaero.comrockyenglish.com
+roclee.comrocoswatch.comrodeson.xyz
+roffar.comroguelitegames.com
rohm-chip.com
+roidmi.comrojewel.com
rokid.comrokidcdn.com
rokub.comrokxyecc.comroland-china.comrollingstone.netrollupjs.com
+rom100.com
+rom333.comromantic-ltd.comromens.cloud
+romhui.comromielf.com
romjd.com
romleyuan.comromney-lighting.com
romzhijia.net
romzj.com
+roncoo.comrondygroup.com
rong-data.com
rong-edge.comrong-rtc.comrong100.comrong360.comronganjx.comronganquan.com
+rongba.comrongbiz.comrongbiz.netrongbst.comrongcfg.com
rongchain.comrongchangtong.comrongchaodichan.comrongchenjx.comrongdasoft.comrongdatamall.comrongdeji.comrongechain.comronggangcity.comronggongyeya.com
ronghaosk.comronghub.com
ronghuiad.comronghuisign.com
+rongji.comrongkao.comrongledz.comronglianmeng.netrongmei.netrongnav.comrongroad.comrongshiedu.comrongshu.comrongshuweb.comrongshuxia.com
rongstone.comrongtai-arch.comrongtai-china.com
rongxinzh.com
+rongyan.ccrongyanshe.comrongyao666.comrongyaozhiguang.com
+rongyi.comrongyilian.net
rongyimao.comrongyizhaofang.comrongzhitong.comrongzhongleasing.comrongzhongloan.comrongzhougucheng.com
+rongzi.comrontgens.com
roobo.com
rooee.comroof325.comroogames.com
+roosur.comroot-servers.worldroot1111.com
rootcloud.com
rootguide.orgrootintech.com
+rootjl.com
+rootop.orgrootopen.comrootzhushou.com
+roouoo.comropefitting.com
ropif.sbsror-game.comrorotoo.comros-lab.comros6.com
+rosabc.comrosaryshelties.com
+rosbox.net
rosdn.comrose.renrosecmsc.comrosedata.comrosefinchfund.comrosepie.comrosesandgold.funrosewin.comrosin-china.com
rosmontis.com
+rosnas.com
rosoo.net
+rosoyp.com
rossoarts.com
rossoarts.netrossroma.comroswiki.com
roszj.comrotiyfhp.comrotom-x.comrotora-china.comrouding.comrouexdmv.comroujiaosuo.comroukabz.com
roundexpo.com
roundyule.comroushidongwu.com
+rousin.comrousongs.com
router.twrouterclub.com
routeryun.com
routewize.comroutuan.comrouzhitang.com
+rowcan.com
+roxinq.comroyalym.com
+royole.comroyotech.comrp-field.com
+rp-pet.com
+rp76en.com
+rpa-cn.com
rpaii.comrpfieldcdn.com
rpg99.comrpgmoba.com
+rphbnm.com
rpjrb.comrpo5156.com
rpszo.com
+rq.run
rqjrb.com
rqjtp.comrqkr.comrquyzhda.com
rqvhu.com
rqxzs.com
rr-sc.com
rr365.com
rrajz.com
+rrb365.com
rrbay.com
rrbus.com
+rrchem.com
+rrcimg.comrrcp.com
rrdtz.comrree.com
rrfed.com
rrfmn.com
rrimg.com
rrioo.comrrjc.comrrkf.com
rrkot.comrrky.com
+rrl360.comrrlicai.comrrmeiju.comrrmj.tv
rrohk.com
rrppt.com
+rrrdai.comrrrrdaimao.com
rrrxz.com
+rrrzzz.comrrs.com
+rrscdn.com
+rrsurg.com
rrswl.com
+rrting.netrrtoibg.com
rrtsangel.comrrtv.viprruu.comrruu.netrrxh5.ccrrxiu.ccrrxiu.me
rrxiu.net
+rrxiuh5.ccrrys.tvrrys2019.comrrys2020.comrrysapp.com
rrzsb.comrrzu.com
+rrzuji.com
rrzxw.netrs-xrys.com
rs485.netrsc.org
+rscala.comrscazvdbfpbyzqdvpy1m.comrscazvdbfpbyzqdvpylm.com
rsdgd.com
rsdyy.com
+rsfang.netrshaoapp.com
+rshdsz.com
+rshf88.com
+rshjgc.com
rskjx.comrslicai.comrsng.net
rsnschina.comrsplcdcs.com
rspwj.com
+rsq111.comrsrlzysc.comrss.ink
rsscc.comrssdtec.comrssforever.comrssmeet.com
rssso.comrsttest.com
+rsty77.com
+rsuedu.com
+rsw163.com
rswaf.comrswl.cc
+rsxc01.com
+rsxmgl.comrsybattery.com
rsyzs.com
rszfg.comrt-blend.com
rt-thread.comrt-thread.io
rt-thread.orgrtahengtai.comrtalink.comrtb5.com
+rtbbox.com
rtbpb.com
+rtbtmc.comrtc-web.com
+rtc-web.iortcdeveloper.comrtdsoft.comrtf1688.comrtfcode.com
+rtfcpa.com
+rtfund.com
+rtfzfl.com
+rtgame.xyz
rthpc.comrti-investor.comrtjxssj.com
rtmap.com
rtmobi.ccrtranquill.com
rtrrx.com
rtsac.org
rtsc-gift.com
+rtsoup.com
+rtxapp.com
rtxonline.comrtxplugins.com
rtxuc.com
+rtyhfg.com
+rtyxpt.comrtyy.com
+rtyykj.com
+ruan.cloud
ruan8.comruancan.comruanchaomin.comruanduo.com
+ruandy.com
ruanfujia.comruanjiandown.comruanjianwuxian.comruankao.comruankaodaren.comruankaokao.com
+ruanko.comruanman.netruanmei.comruanmou.netruansky.comruansky.netruantiku.com
+ruanwen.la
+ruanwen.tvruanwengfa.comruanwenhui.comruanwenkezhan.comruanwenlala.com
ruanwenpu.comruanwenshijie.com
ruanx.netruanyuan.net
+rubaoo.comrubbervalley.com
+rubinn.comruby-china.comruby-china.orgrubyconfchina.org
rubyer.me
+rucedu.net
+ruchee.com
+ruchu.club
+rue123.com
ruesu.com
rufei.renrufengso.netruffood.com
+rufida.comrugao35.comrugaobbs.comruguoapp.comruguojiaoyu.comruhaivip.com
ruhnn.comruhousw.comrui.plus
ruian.comruianchayuan.com
ruianfang.comruianrz.com
+ruibai.comruibopin.com
+ruiccm.comruichengmedia.comruicitijian.com
ruida.orgruidaedu.com
+ruidan.comruidang.comruidaxx.comruideppt.comruideppt.netruidongcloud.comruidroid.xyzruienkj.comruifang-tech.comruifengdisplay.com
ruifengjk.comruifuwatch.com
ruige.comruigedf.com
ruigushop.comruihaimeifeng.comruihaonongye.comruihaozhanlan.comruihongxing.comruihuajw.comruihuaxinxi.com
+ruihuo.com
ruiii.comruiinsurance.comruijiehuanbao.comruijienetworks.comruijiery.comruijinginfo.comruijinintl.comruikesearch.com
ruilinblw.com
ruimofang.comruiniucn.comruiqicanyin.com
+ruiscz.comruisilc.comruisizt.com
+ruisong.tv
+ruit56.comruitairt.comruitengmaoyi.comruitian.comruitiancapital.com
ruitianjc.com
+ruiuav.com
ruivihome.comruiwant.com
+ruiwen.comruiwenruanjian.com
+ruixhz.comruixiangbest.com
ruixiaolu.com
+ruixing.ccruixueys.com
ruixunidc.com
ruixunidc.netruiyang-ra.com
ruiying3d.comruiyingkeji.comruiyuanobserve.comruiyunit.comruizong-gz.comrujiazg.com
rukechina.comruketang.com
rukodilla.com
rulei.viprulejianzhan.comrulesofsurvivalgame.comrumosky.com
runca.netrunchengjiaxiao.com
+runcmd.comruncome.com
runda8888.comrundamedical.comrunde666.netrundefit.comrundejy.com
rundongex.com
runff.com
+runfox.comrunfujin.com
runhe.org
runhuayou.biz
runjf.comrunjian.comrunjiandianqi.comrunjiapp.comrunkodo.comrunlian365.comrunmang.comrunminshop.com
+runnar.comrunner-corp.com
runnerbar.comrunning8.comrunningcheese.comrunninginchina.org
runningls.comrunningman-fan.comrunnoob.comrunnuokeji.com
+runoob.com
+runpho.comrunqijx.comrunsheng.comrunshenggk.comrunshengkiji.orgrunsisi.com
+runsky.comruntimeedu.com
runtimewh.com
runtronic.com
runwanxin.com
+runwise.co
+runwith.cc
runxinzhi.comrunxiongdianli.comrunzechuanmei.comrunzi.cc
+ruochu.comruodian360.com
+ruohuo.netruokuai.com
+ruoren.comruoshui.comruosoft.com
+ruoxia.com
+ruoyer.com
ruoyi.vip
ruozedata.comruqimobility.comruralwomengd.orgrusforest-sh.com
rushb.net
rushi.netrushihu.comrushivr.comrushmail.com
+rushui.netrussellluo.comrustfisher.comrustvnt.comruthout.com
+ruthus.com
+rutron.netruubypay.com
ruvar.comruvisas.comruxiaoyi.com
ruyig.comruyigou.com
+ruyigu.com
+ruyile.com
ruyim.comruyiqiming.comruyishi.comruyo.ccruyo.netruyu.comruyuehui.comruyuexs.comruzhipin.ccruzw.comrv28.com
rv2go.com
rvacvzhru.com
+rvcore.com
rvfdp.com
rvftt.comrvgyckhp.com
+rvhmns.com
rvkol.com
rvmcu.com
rwb66.com
+rwd.hk
rwezk.comrwkv.comrwrvthca.com
+rwtext.comrwxqfbj.comrwys.comrx4wiug6ec6r.comrxbj.com
+rxcxjx.comrxgl.net
rxhui.comrxhuimeida.com
+rxhysm.com
rxian.comrxjhbaby.comrxjiasu.comrxjt.co
+rxkjcn.com
+rxljzy.com
rxn30.app
rxoof.com
rxrwr.com
rxshc.com
+rxxdny.com
+rxyjqz.comrxykamto.comrxys.comrxyushangfw.com
+ry0663.com
+ry1116.comryanbencapital.comrybbaby.comrybridge.com
+ryc360.com
+rydth5.com
ryeex.com
+rygits.com
ryjer.comryjiaoyu.com
+ryjoin.com
rylfj.comrylinkworld.com
rymcu.com
+rymooc.com
ryone.netrypeixun.comrypenwu.com
rytad.comrytx.comrytyaofang.comryweike.com
ryx.store
+ryxiut.net
+ryylkj.com
ryyqh.com
+rz.com rz.sb
+rz1158.com
rz520.com
+rzaide.com
rzcdc.com
+rzcdz2.comrzfanyi.com
rzfyu.comrzhushou.comrzkj999.com
+rzline.comrzltech.comrzlydcw.comrzmoizmk.comrzok.netrzrc114.com
+rzsdf.shop
rzspx.comrzsuetrx.com
rzszp.comrzv5.comrzv7.com
+rzx.merzxs168.com
+rzzyfw.coms-02.coms-jl.coms-ns.coms-reader.coms-sgames.coms-ss.ccs-ts.net
+s-zone.com
zywjw.coms135.coms163.com
s1979.coms1craft.com
+s2ceda.com
+s2cinc.coms2g2b2c.coms369.coms3she5k7sm.coms4g5.coms4yd.coms575.coms57o79552f.coms5ex.coms5s5.mes72c.coms7y3.com
+s81533.coms8dj.coms8xs.coms936.coms95r.com
s98s2.com
s9fa9.sbs
s9yun.com
sa-ec.com
+sa-log.comsa-token.ccsa20.com
sa516gr70.comsa96.com
saaas.comsaasddos.comsaasops.techsaasruanjian.com
+saasta.netsaaswaf.com
+saayaa.comsaberqq.com
+sablog.net
sabxg.com
sac-china.com
sacdr.netsachinindia.comsact-digital.com
sae-china.org
+saebbs.comsaegedu.comsaen.com
+saf158.com
safdsafea.comsafe-lb.comsafeb2b.comsafecenter.comsafehoo.comsafejmp.com
safeneeds.comsafenext.com
saferises.com
safetyimg.comsafetystatic.com
safetyvod.comsagepub.comsagigame.netsahcqmu.comsaibeiip.comsaibeinews.com
saibo.com
saiboauto.comsaic-audi.mobisaic-finance.comsaic-gm.com
+saicdt.comsaicgmac.com
saicgroup.com
+saicjg.com
saicmaxus.com
+saicmg.comsaicmobility.com
saicmotor.comsaicyun.com
+saiday.com
saiduo888.com
+saigao.fun
saige.comsaigmpl.com
saihu.comsaihuahong.comsaihuitong.com
saike.com
saikerept.com
saikr.comsail-lab.net
sail.namesail2world.com
saili.sciencesailingyun.comsailipaint.comsailway-china.comsaimogroup.comsainacoffee.comsainkala.comsaintcos.hksaintgreenchem.comsaintic.comsaipu-automatic.comsaipu88.comsaipujianshen.comsaipujiaoyu.com
+saiqi.mobisairaicc.comsairifo.com
sairui020.comsaisaiwa.comsaitgys.comsaiweidianqi.com
saiyou999.com
saiyouedu.netsaiyunyx.com
+saizhi.comsajs.com
+sakata.onesakesi.clubsaki.cc
+sakura.vinsakura18183.love
+sakway.com
saky.sitesaladvideo.comsalasolo.comsaleenauto.com
saleforin.com
salesdish.com
+salogs.comsalonglong.com
salongweb.comsamanlehua.comsamasty.com
same-tech.comsamebar.comsameico.comsameled.com
+samezp.com
samhotele.com
+saming.com
samirchen.com
samite.cc
+samool.comsamsrchina.comsamsunganycar.comsamsungcloudcn.comsamsungconnectivity.comsamsunghealthcn.com
samsungyx.comsamyuong.com
+samzhe.comsan-health.netsan-petersburgo.net
san-sheng.netsan-tuo.comsan.netsanaemio.comsananyiliao.com
sanbaiyun.com
sanbanggs.comsanbao0563.comsancaiheast.comsancanal.comsandaha.com
+sandai.netsandaile.comsandbean.comsandcomp.com
sandeepin.com
sanduoyun.com
sandworld.netsanen.onlinesanfangshun.com
sanfen666.comsanfengyun.com
+sanfer.com
sanfi.com
sanfo.com
sanfu.comsang.pub
sangerbio.comsangfor.comsangfor.netsangfor.orgsangforcloud.comsangfordns.comsanglianju.com
+sangon.comsangongzai.netsangsir.comsangsongtech.comsanguocard.comsanguoh5.comsanguohero.com
sanguosha.comsanguows.comsanguowudi.comsanguozz.comsangxuesheng.com
+sanhao.comsanhaoradio.comsanhaostreet.comsanhe-scale.comsanhetimburly.comsanhuan.comsanhucidiao.ccsaniwaveltd.comsanjiahospital.comsanjiang.comsanjiangdai.comsanjianglife.comsanjiangtourism.comsanjiasoft.comsanjieke.comsanjiexc.comsanjinjiake.com
+sanjun.comsankengriji.com
+sankgo.com
+sankki.comsankougift.comsankuai.comsankumao.com
sanlan123.comsanlengbio.comsanlian-machine.comsanligm.comsanliu2021.comsanliwenhua.comsanmiaocdn.comsanmukouli.comsanpowergroup.comsanpuzhiyao.com
+sanqin.comsanqindaily.comsanqingchuanmei.com
sanqinyou.com
+sanqiu.orgsanquan.com
sanrangas.comsansancloud.com
sansanyun.com
sansg.comsanshiok.comsanshua.comsanshua.net
+sansky.netsantaihu.com
santanjob.comsantelvxing.comsantezjy.comsantiyun.com
santongit.comsantostang.com
sanweihou.comsanweimoxing.comsanweiyiti.orgsanweiyunfuwu.com
+sanwen.com
+sanwen.netsanwen8.com
+sanwer.com
+sanxao.comsanxia-china.comsanxiamc.comsanxiapharm.comsanxige.comsanxinbook.comsanxing.comsanxingweilai.com
sanxinwin.comsanyachloe.comsanyaff.comsanyafz.comsanyaguangci.comsanyajob.comsanyamotor.comsanyanblockchain.com
sanyastar.comsanyasx.comsanyecao.comsanyexin.com
sanygroup.com
+sanyhi.comsanyilq.comsanyipos.comsanyoutj.comsanyuanbaobao.com
sanyuantc.com
+sanyue.com
sanyuesha.comsanzangwang.comsanzanhotel.com
+sanzao.xyz
+sanzei.comsanzhimeihua.comsanzinfo.com
+sao-ma.comsao.ren
+saogai.com
+saohua.com
saoic.comsaolife.com
saomadang.com
saoniuhuo.comsaop.cc
saopu.com
saoso.com
+saowen.netsaoztfii.com
+sap-nj.comsap1000.comsapphiretech.store
saraba1st.comsardchina-lmgt.com
sarft.net
+sascin.comsasecurity.comsass.hk
sasschina.comsasscss.comsasseur.comsast.funsast.netsat0.netsating-tech.com
+satrip.comsaturnbird.com
saveatsma.comsavokiss.comsavouer.comsawenow.comsawuatsurgical.com
+saxydc.com
+saxyit.comsaxysec.comsayabear.com
sayll.com
sayloving.comsayodevice.comsaywash.com
+sbanzu.comsbc-mcc.com
+sbeira.com
sbh15.comsbhimalayanml.com
+sbjd88.com
+sbjxyq.com
+sbk-h5.com
sbkh5.com
+sbmscs.com
sbnoo.com
+sbnyjx.comsbo2.comsbooktxt.comsbpiping.comsbr-info.com
+sbrczx.comsbrj.netsbs-mag.com
sbscn.com
sbsjk.com
+sbt123.com
sbt56.com
sbwxz.comsbzj.comsc-admc.com
sc-jiaoyu.com
sc-tianyu.comsc-xngs.com sc.gg
sc115.comsc119.cc
sc157.com
+sc1588.com
+sc1618.comsc2c.com
+sc2car.comsc2p.com
+sc2yun.com
sc518.com
sc666.com
sc946.comsc96655.com
+scaffi.com
+scala.cool
scanv.comscarbbs.comscarclinic-cn.com
scavc.comscbaidu.com
scbao.com
scbgaudio.com
+scbh15.com
+scbxmr.com
scbyx.netscbz120.comscccyts.com
+sccens.net
sccin.comsccjjtjy.comscclssj.comsccm.cc
+sccmlj.com
sccnn.com
+sccnnc.comsccq.net
+sccqzx.com
+scctjj.comscctjywy.com
sccts.com
sccwz.com
+sccxbe.com
scdanzhao.netscdbzzw.com
+scdccb.com
scdcs.netscdengbang.comscdn.funscdn.imscdn0077.comscdn08xd.comscdn0wcp.comscdn0wes.comscdn0xks.comscdn10a7.comscdn12zo.comscdn1dcz.comscdn1e8v.comscdn1eul.comscdn1kjh.comscdn2kw9.comscdn2lhh.comscdn323r.comscdn3t09.comscdn40kn.comscdn43uu.comscdn46r9.comscdn4cpe.comscdn4esv.comscdn4iy4.comscdn4usw.comscdn549v.comscdn67mw.comscdn6e40.comscdn7c4e.comscdn7gsf.comscdn7ma2.comscdn8ksq.comscdn8ppt.comscdn98um.comscdnacsj.comscdnazo0.comscdnbi9w.comscdnbiar.comscdnc77s.com
scdncloud.comscdndn0v.comscdndns.comscdndns.netscdndsa6.comscdndtma.comscdne3lt.comscdne60t.comscdneb5k.comscdnebrq.comscdneufe.comscdnf3v6.comscdnf80r.comscdnfu51.comscdng8js.com
+scdnga.com
+scdnga.net
+scdngc.com
+scdngc.netscdngs0h.comscdnguqg.comscdnh957.comscdnhagn.comscdnhfua.comscdnhou6.comscdnifld.comscdnioyt.comscdnirdl.comscdnj3in.comscdnj8do.comscdnjfj2.comscdnjk59.comscdnkeuo.comscdnl05m.comscdnl3bk.comscdnl46h.comscdnl9cm.comscdnmba2.comscdnmnrz.comscdnmogt.comscdnmskl.comscdnn4t9.comscdnndj2.comscdnnm9o.comscdnnrib.comscdnnub6.comscdno55z.comscdno5zl.comscdnoklx.comscdnokqh.comscdnooyg.comscdnpe31.comscdnq6rc.comscdnqjg9.comscdnqkxi.comscdnqo8s.comscdnqrty.comscdnqumc.comscdnr7p2.comscdnr932.comscdnrlm1.comscdnrvy1.comscdnsmjc.comscdnsvg4.comscdnt1h7.comscdnt9n9.comscdntop.comscdntucs.comscdntxla.comscdnucc5.comscdnukio.comscdnulx9.comscdnurea.comscdnv7uq.comscdnvij7.comscdnw4kb.comscdnwehb.comscdnwljp.comscdnwmp0.comscdnwpqy.comscdnwwp9.comscdnxgev.comscdny1t3.comscdnydiw.comscdnygb7.comscdnywwp.comscdnzrch.com
scdri.com
+scdzmw.comscea.co
scedu.net
sceeo.comscenictc.com
scensmart.comscfeihu.com
+scflcp.comscfsino.com
+scfzbs.comscgc.net
+scgchc.com
+scgckj.com
+scgglm.comscgh114.com
+scghsd.comscghseed.com
scgis.net
+scgj56.net
scgkw.net
scgra.com
scgtj.com
+scgxhq.comschengle.com
+schezi.comschimalayanuz.comschk777.comschneidercampus.comscholarmate.comscholat.comschool51.com
school888.comschoolpi.net
+schove.com
schrb.comscht.ccschwarzeni.com
schwr.com
+schxzx.comschyxxjc.comsci-fifans.net
+sci-hub.eesci-hub.rensci-hub.shop
+sci-hub.tf
+sci-hub.wf
sci99.comscichina.com
scicn.netscidict.orgsciencedirect.com
sciencehr.net
sciengine.comscientrans.com
scienward.net
scies.orgscievent.comscifans.com
scigy.com
+sciimg.com
+sciirc.comscijuyi.comscilucy.com
+scimall.ccscimall.org
+scimao.com
scinno-cn.com
scinormem.comscio.icusciping.comsciscanpub.com
+scisky.comscistor.com
scitycase.com
scixh.comsciyard.com
+sciyon.com
+scjcce.com
+scjcdl.com
+scjdgc.com
+scjhyq.com
+scjjdd.com
+scjjrb.com
scjmm.com
scjty.com
+scjyxw.com
+scjyzb.netscjzjyjc.com
scjzy.netsckrskj.comsclanyingkj.comsclf.orgscll.cc
+sclrjc.com
+sclzfq.com
+scm121.com
scmccboss.comscmchem.com
scmor.comscmroad.com
+scmsky.comscmttec.com
+scmxjs.com
+scmydb.comscmylike.com
+scncrc.comscnjnews.com
scnjw.comscnleee.com
scntv.comsco-marathon.comscodereview.com
scoee.comscommander.com
+scomper.me
+scoowx.com
+scopus.comscoregg.comscowqbfk.com
scpgj.comscpgroup.com
scplt.com
scqcp.com
scrape.centerscrc168.com
scrcu.comscredcross.com
scriptcat.orgscriptjc.comscrm.soscrmtech.com
scrsw.net
scrsy.netscrumcn.com
+scscms.comscsddyf.comscsdzxh.orgscsjnxh.org
+scsjsd.comscsltjt.com
+scsmzy.comscsstjt.com
scsuhuigy.com
+scsxth.com
sctbc.net
sctcd.com
+sctdzl.com
sctes.com
+sctfia.com
sctgo.comsctm.cc
sctobacco.com
+sctodr.com
+sctszh.comsctv-tf.comsctv.com
sctvf.com
+sctyhx.com
+sctyjg.comscubamew.comscufida.com
scujj.comscunionpay.com
+scusec.orgscutsee.com
scuvc.com
scw98.com
+scwdwl.com
scweixiao.comscwj.netscwlylqx.com
+scwmwl.comscwy.net
scxdf.com
scxinkang.com
+scxsls.com
+scxyoa.comscyanzu.com
+scybjc.comscyc.cc
+scymob.com
scyongqin.comscyqfhw.com
+scytyy.net
+scyxcm.com
+sczbsu.comsczg.com
+sczgzb.com
sczht.comsczl123.com
+sczshz.net
+sczsie.com
+sczsxx.comsczuanshen.comsczw.com
+sczxmr.com
+sczycp.comsczyh30.com
+sczzsw.com
sd-cancer.comsd-cellbank.com
sd-eh.com
sd-ex.comsd-fjzy.com
sd-kb.comsd-nand.com
+sd-pic.com
+sd-rtn.com
+sd-sma.com
sd-xd.netsd-ysjt.comsd11185.com
sd173.com
sd2008.cc
sd235.netsd5g.comsd77cd.websitesdailong.com
sdapo.net
sdbao.comsdbaowei.comsdbeidou.com
+sdbeta.com
sdbgk.com
+sdbing.net
sdbjm.com
+sdbqfw.com
sdbys.comsdca119.com
sdccg.com
+sdcfdq.netsdchelv.com
+sdchem.netsdchina.com
+sdcqjy.com
+sdcxsc.com
+sdcyun.comsdcz.comsddagongrubber.com
+sddcbz.com
sddcp.comsddengxiang.comsddermyy.comsddeznsm.comsddstore.comsddzrljx.comsdebank.com
sdeca.orgsdecloud.com
sdecx.com
sdeerlive.comsdenews.com
sdeqs.com
sderp.com
sdewj.comsdey.netsdeyei-h.edu
+sdeyhl.com
+sdfcxw.comsdffqaz.com
sdfhoief.shop
+sdfhyl.com
+sdfhzm.com
sdfll.com
sdfon.com
+sdfscx.com
sdfxyoule.com
+sdfybj.com
sdg-china.com
sdg53.comsdgdwljt.com
+sdgdxt.comsdgertqq586.asiasdgh.net
sdgho.com
+sdghzy.netsdglobaltrade.comsdgou.cc
+sdgslb.comsdgslbc.comsdgslbd.comsdgt1985.com
+sdgude.comsdguguo.comsdgw.com
sdgwy.org
+sdhbcl.comsdhdssd.com
+sdhfsh.comsdhfzdh.com
sdhgu.com
sdhoukang.com
sdhsg.com
+sdhsie.com
+sdhsrh.comsdhssfjt.comsdht666.com
+sdhtkt.comsdhxnykj.comsdhynytc.com
sdhz12333.com
sdi23.com
sdiandian.comsdiborn.comsdiccapital.com
sdicgxxny.com
+sdicin.com
sdicpower.comsdicqzdefd.com
+sdicvc.com
+sdiitu.comsdiread.com
+sditol.comsdj-tech.com
sdjcw.comsdjinhuihb.com
+sdjnlf.com
+sdjnwx.com
sdjrg.com
+sdjtbd.com
+sdjtcx.comsdjuliangnet.comsdjushu.comsdjuxue.com
sdjwg.com
+sdjxgj.com
sdjys.org
+sdjzhc.comsdkangnida.comsdkbalance.comsdkclickurl.com
+sdkjnn.com
sdklh.comsdknext.com
+sdksrv.comsdlaien.comsdlanbofitness.comsdlcbyq.comsdlfhbkj.comsdlgjycm.comsdlinqu.com
sdljwomen.comsdlongli.com
sdlsgroup.comsdlsjszp.comsdludian.comsdlvtai.comsdlvxing.com
+sdly35.com
sdlz.techsdmctech.com
sdmic.comsdmydcr.comsdmyzsgs.com
sdnci.com
sdnfv.orgsdnjsbc.com
+sdnlab.com
sdnxs.com
+sdnysc.comsdo-shabake.comsdo.com
sdodo.comsdongpo.comsdoprofile.com
sdpku.com
+sdptem.com
sdpua.com
+sdpxpy.com
+sdpxyq.com
+sdqlkr.com
sdqmy.com
+sdqsqx.comsdqu.com
sdrcu.com
+sdrdgw.comsdrongya.com
+sdrsks.org
+sdrtgk.comsdruile.comsdruiqi.comsdrunfujia.com
+sdrxtf.com
sdrz12333.comsdsansen.com
sdsaplny.shopsdsbhjgc.comsdsdsoft.com
+sdsgwy.comsdshshb.com
sdsmefina.com
sdssiliao.com
+sdstdc.comsdsytgcl.com
+sdtadm.comsdtdata.comsdteleiptv.com
+sdtrxx.com
+sdtsrf.comsdtugongbucj.comsdtvjiankang.com
+sdtxmq.com
+sdtylq.net
sduod.com
+sdushu.com
sdv5j67ws.xyz
sdvps.com
+sdwcpm.com
+sdwdxl.com
sdwen.com
sdwenlian.com
+sdwgyy.comsdwlsym.comsdwscgs.com
+sdxawy.comsdxianweisumi.com
sdxietong.com
sdxinboao.com
+sdxjpc.comsdxnetcafe.comsdxszhny.comsdxtdlsb.comsdxvisa.com
+sdxwyy.netsdxyxhj.com
sdxzt.com
+sdyeya.com
+sdyftr.comsdyinshuachang.com
sdyizhibi.comsdyndcjx.com
sdyuanbao.comsdyxmall.comsdyyebh010.com
+sdyypt.net
sdyzzyzdh.com
+sdzamy.com
+sdzbcg.com
+sdzbsw.com
+sdzckj.com
+sdzdxm.com
sdzhidian.com
sdzhx.comsdzk.co
sdzpw.netsdzs.com
+sdzsyl.comsdztxxkj.comsdzxswhjygjlm.comsdzydfy.com
sea-group.orgsea-gullmall.com
seacatcry.com
+seacxy.comseafile.comseafrom.comseagulllocker.comseagullwatch.comseagullwatches.com
+seaide.comsealand100.comsealandtableware.comsealeadbattery.com
sealos.io
+sealos.run
+sealui.comsealyun.comseamanhome.comseamaty.comseaning.com
+seanya.comseanyxie.comseapard.comseapsoft.com
search616.comsearchforit8.comsearchpstatp.comsearchstatic.comsearchtb.comsearchtoutiaolive.comseashinepm.com
seasj.com
seaskyapp.comseasouthgy.comseassoon.comseastarasset.comseasungame.comseasungames.com
seasunwbl.comseatent.comseatonjiang.com
seaud.comseavalve.com
seavo.com
+seayao.net
+seayee.com
sebfq.com
sebigdata.comseblong.com
sebug.net
+sec-in.comsec-wiki.comsecaibi.comsecamen.website
secbug.cc
+secbug.org
seccw.comsecdns.site
secdoctor.com
secdriver.com
secec.comsecfree.com
secisland.com
+secist.com
+secjia.comseclover.com
secoo.comsecooart.comsecooimg.comsecpulse.comsecretgardenresorts.comsecretmine.net
+secrss.com
+secrui.comsecshow.netsecsilo.comsectigochina.comzyun.vipsecu100.net
secureqin.netsecuritycn.netsecurityeb.comsecurityfrontline.orgsecurityinsight.com
secutimes.com
secwk.com
secwx.com
+secxun.comsee-far.comsee-source.com
+seebon.com
+seebug.org
seecmedia.netseed-china.com
seedasdan.orgseeddsp.com
seedit.cc
+seedit.comseedland.ccseedlandss.comseedsufe.com
+seegif.com
seehu.netseek114.com
seekbetter.meseekchem.com
+seekcy.comseekfunbook.comseekhill.comseekingsoft.comseeklane.comseekonly.netseekswan.comseelvyou.com
+seemmo.com
seemoread.comseentao.comseeourboobies.comseepomotor.comseepomotor.netseer520.comseerking.comseersee.comseesawcoffee.comseeseed.comseeshentech.comseetacloud.com
+seetao.comseewellintl.net
seewo.comseewoedu.comseewoll.com
+seexpo.com
+seeyii.com
+seeyon.comseeyonoversea.comseeyouhealth.com
seeyouweb.comseeyouyima.com
sefonsoft.com
+segapi.comsegmentfault.comsegmentfault.netsegotep.comsegwayrobotics.comsehimalayanqj.com
+seidns.comseilway.com
seily.comseirobotics.netseis-jun.xyzseisman.infoseiyuex.com
seizemail.com
sejai.com
sejianghu.com
+sekede.net
+sekorm.com
+selboo.comselfservicechina.comselinuxplus.com
+sell66.comsellerspace.comsellersprite.comsellfox.comsellingexpress.netselypan.com
+sem123.comsemem99.com
+semeye.com
semgz.comsemi.design
semidata.info
+semiee.comsemiinsights.comsemiway.com
sempk.comsemptian.com
senbeijia.com
senbukece.com
+sencdn.comsencha-china.comsencomu.com
send2boox.comsenda360.com
+sendbp.com
sendcloud.net
sendcloud.orgsenderline.comsenderline.netsendong.comsendpioneer.comsends.cc
senenwood.com
senfa.netsenfengg.com
senguo.cc
+senguo.comsengxian.comsenior.auto
seniverse.comsenken-international.comsenlianshop.comsenlichina.com
senlikeji.comsenlinjimore.comsenmiaoliuxue.comsenmiaoschool.comsenorsen.comsenpian.comsenra.me
+sensate.hksense-hk.com
senseagro.comsensecn.com
senselock.comsenseluxury.comsenser.group
sensertek.com
sensetime.comsenseyun.comsenshidahengqi.comsensorsdata.comsensorsdatavip.com
+senszx.comsentaijs.comsentcss.com
senteauto.comsentuxueyuan.com
sentyeasy.com
+senwas.comsenyada.com
+senyou.com
senyuanhi.comsenyuanzhonggong.comseo-820.com
+seo.tm
+seo123.net
+seo628.com
+seobti.com
+seocxw.com
seodaniel.com
seofangfa.com
+seoipo.com
seokoubei.comseopath.net
+seopre.com
seosiguan.com
seosn.com
+seotcs.com
seovx.com
seowhales.com
+seowhy.comseoxuetang.com
seoyezcpo.com
+sep.cc
+sepact.comseptinn.comseptwolves.comsepu.netsequ.biz
sequoiadb.comsereniblue.com
sereypath.comserholiu.com
+seridc.com
servasoft.comserverproof.net
service86.comservicemesher.comservicewechat.comservilabmedical.com sesamestreetenglishchina.comsesamewatermelon.com
+sescar.com
+seseds.com
+sesier.com
+setb2b.comseteuid0.com
seuic.comseven7777.eusevencdn.comsevendatas.comsevenhei.comsevenseas-china.comsevensem.comsevnday.com
sevnz.comsewang.site
+sewise.com
sewkz.comsexytea2013.com
sexzb.comsey.inkseyaose.net
seyuma-cn.comsf-airlines.comsf-bearing.comsf-card.comsf-china.comsf-cityrush.com
+sf-dsc.comsf-express.comsf-financial.comsf-intra-city.com
sf-jf.comsf-laas.com
+sf-pay.comsf-saas.com
sf-zs.net
sf007.com
sf024.com
sf888.net
sfacg.com
sfair.comsfb-100.com
+sfbest.com
sfbuy.comsfcar.hk
sfccn.com
sfcdn.org
sfddj.com
sfdy13168.com
sfecr.com
sffdj.comsfgj.orgsfgy.orgsfht.comsfhzfhd.com
sfile2012.comsfitcdp.comsfjddna.com
+sfjdml.com
sfjhj.com
sfjsgroup.comsfjt.cosfjx888.com
+sfkedu.comsfkj.vipsfkjweb.com
sflep.comsflmfls.com
sflqw.com
sfmianhua.com
+sfndns.com
+sforest.in
+sfpgmk.com
+sfplay.net
+sfs-cn.com
sfsigroup.com
+sfvip1.com
sfwxf.comsfxd.ccsfyb.com
+sfydns.comsfygroup.comsfys365.com
sfystatic.com
+sfyyqc.comsfzj123.com
+sg-che.comsg-micro.comsg.work
sg169.com
+sg8.ccsg91.net
+sgamer.com
+sgccdn.com
+sgcctd.comsgcctop.comsgchangxun.com
sgchinese.com
+sgcizt.comsgcqscgu.com
+sgcyjy.comsgda.cc
+sge.shsgfox.cc
sgfsm.com
sghxz.com
sgjwb.com
sgjwn.com
sgjyq.comsglituo.com
sgliulian.com
sgllk.com
+sglynp.comsgmlink.com
+sgmsgs.comsgmsonline.com
+sgmwlu.com
sgmwsales.comsgnet.ccsgnongkang.comsgou.com
+sgpjbg.comsgplink.xyzsgqd.com
+sgrbcm.comsgrsvakz.comsgshero.com
sgsic.comzyue.vipsgsugou.com
sgsxw.com
+sgtmos.comsguo.com
+sgwjjc.com
sgwk.info
+sgy-it.comsgyaogan.comsgyeyou.com
+sgyhux.comsgyouxi.comsgyscom.com
+sgzhee.comsgzm.com
sgzww.net
+sh-3ai.com
sh-anfang.org
sh-anrong.comsh-arpm.comsh-autofair.comsh-azjiadeli.com
sh-baolai.comsh-datastone.comsh-deem.comsh-dgvalve.com
+sh-dls.comsh-dongbiao.comsh-eastwes.com
+sh-edi.comsh-eshow.comsh-fdtw.com
sh-fy.comsh-game.comsh-gelanlishi.com
sh-henian.com
sh-hilead.com
sh-holfer.comsh-holiday.comsh-hting.comsh-huipu.comsh-hywin.comsh-jingjin.comsh-jinxiang.comsh-jjsb.com
sh-kechen.com
sh-kr.netsh-likun.comsh-livemusic.com
sh-nemoto.comsh-prosperity.com
sh-prosun.comsh-ryjx.comsh-service.com
+sh-sfc.com
sh-shenou.comsh-tangfeng.comsh-warwick.comsh-xinao.com
sh-xixuan.comsh-yajia.comsh-ybxhz.com
sh-yichen.com
+sh-yuy.comsh-yzkj.comsh-zbfm.com
+sh.com
+sh1011.com
sh112.com
+sh1122.com
sh148.orgsh17.com
sh414.comsh5y.comsh7.comsh8y.com
+sh9130.com
+sh9156.com
sha-steel.comsha2777.com
+sha990.com
shaanxi56.comshaanxiiot.com
shaanxirk.comshaanyaosy.com
shabc.netshabiyun.com
shaca.net
shachong8.comshacumox.com
shadafang.comshaddockfishing.com
shaddy.jp
shadeaman.comshadiao.proshadowq.comshaduizi.com
shafa.comshafaguanjia.comshaftgd.com
shahadath.com
shahupark.com
+shaidc.comshailema.com
shairport.comshaisino.comshaizai.comshajuta.comshalashike.com
shall-buy.com
shallserve.ccshamanicstudiesfaculty.orgshami99.comshamiao.comshan-san.comshan-yu-tech.comshan.comshanbay.comshanbotv.comshancemall.comshanchuangjiaoyu.comshancui1688.com
shanda960.comshandacasual.comshandacasual.netshandagames.comshandaz.comshandechina.xinshandianhuifu.comshandiansiwei.comshandingmenye.comshandjj.comshandong-energy.comshandongair.comshandongbojun.comshandonghaiyang.comshandonghuaye.comshandongjuli.comshandongsannong.comshandongyunpin.com
+shandw.comshanfengguigang.comshang-chain.comshang-ma.comshang08.com
shang0898.comshang168.comshang360.comshangame.comshanganzixun.comshangate.comshangbanzugroup.comshangbaolai.comshangbaowood.com
shangbiao.comshangbiao.storeshangbiaocheng.comshangboo.comshangbw.com
+shangc.net
shangc123.netshangcaifanyi.comshangchangbaike.comshangchao668.comshangchuanba.com
shangdagc.comshangdandan.comshangdaotong.comshangdengzn.com
shangdian.bizshangdiguo.comshangdixinxi.comshangdu.comshangdu.info
shangeedu.com
shangeseo.com
shangeyun.comshangfang56.comshangfenbao.comshangfenggaoke.comshangfox.com
shanggame.comshanghai-air.comshanghai-at.comshanghai-channel.comshanghai-electric.comshanghai-intex.comshanghai-leather.comshanghai-map.netshanghai-sports.comshanghaiairport.comshanghaiairporttour.comshanghaicaiyi.comshanghaichannel.netshanghaiconcerthall.orgshanghaicup.comshanghaidaily.comshanghaidisneyresort.comshanghaidz.comshanghaihino.comshanghaihuanli.comshanghaiiot.orgshanghaijinyimaoyi.comshanghaik11.comshanghaimart.comshanghaimetal.comshanghaimuseum.netshanghainb.comshanghaining.comshanghaionstar.comshanghaipower.comshanghaiqihu.comshanghairanking.comshanghairc.comshanghairolexmasters.comshanghaishuangyanpi.comshanghaitianqi114.comshanghaitower.comshanghaivast.comshanghaiwater.comshanghaixianhuadian.comshanghaixs.comshanghaixuejia.comshanghaixundong.comshanghaiyinyang.comshanghaiyouxi.comshanghaiyuqiang.comshanghaizhenji.com
shanghcat.comshanghuiyi.comshangji998.comshangjialianpage6.winshangjie2006.comshangjilian.comshangjinssp.comshangjinuu.comshangjixin.comshangketang.comshanglin.netshanglinxiangfa.comshanglp.comshangluo.coshanglushan.com
shanglv51.com
shangnaxue.ccshangpin.comshangpinpuzi.comshangpo.comshangpu-china.comshangpusou.comshangpuzhan.comshangqiulvxing.comshangquanquan.comshangque.comshangrao-marathon.comshangshaban.comshangshancm.comshangshangke.meshangshangsp.comshangshi360.comshangshici.comshangshiwl.comshangshuce.comshangshuyixue.com
shangtaiw.comshangtao.netshangtao360.comshangtianhui.comshangtongda.comshangtuf.comshanguanjixie.comshanguansoft.com
+shangui.cc
shangusec.netshangwb.comshangwei88.comshangwu168.comshangxue.comshangxueba.comshangyejihua.com
shangyekj.comshangyeluoji.comshangyexinzhi.com
shangyijs.comshangyouxuan.comshangyouze.comshangyubank.com
shangyuer.comshangzhang.com
shangzhibo.tvshangzhushan.comshanhainengyuan.comshanhaitujian.comshanhaizhanji.com
+shanhe.com
+shanhe.kimshanheknit.comshanheyule.com
+shanhs.comshanhu99.comshanhuu.comshanhuxueyuan.comshanji.clubshanjianzhan.com
shanjinqh.comshanks.linkshanliao.comshanling.comshanlink.comshanlinshengwu.comshanliulian.com
+shanmao.meshannon-sys.com
shannonai.com
shanp.comshanqing.net
shanqu.ccshanrongmall.comshanse8.comshanshan-business.comshanshangame.comshanshanim.vipshanshanku.comshanshoufu.comshanshuihotel.comshanshuiwl.comshansoo.com
shante.meshantoujingrui.comshantoumama.comshantui.comshantuimall.comshanwan.com
shanwan.store
shanwanli.comshanweinews.netshanweiyule.comshanxianfuwu.comshanxiaobai.comshanxichess.comshanxicloud.net
shanxidiy.comshanxigames.comshanxijianzhuzizhi.comshanximuseum.comshanxiol.comshanxishangren.comshanxishizheng.comshanxiumao.comshanxiuxia.comshanyang666.comshanyemangfu.comshanyetang.comshanyhs.comshanyibiotech.comshanyishanmei.comshanyougame.comshanyouharness.comshanyuankj.comshanyuanms.comshanyue.techshanyuechina.comshanzhen.comshanzhen.meshanzhildq.comshanzhonglei.comshaoanlv007.comshaoerbc.orgshaoerwushu.orgshaogood.comshaojiu.com
+shaoke.comshaolinjingwu.comshaolintagou.com
shaolinwy.comshaomingyang.comshaoniandream.comshaoqun.comshaoshilei.comshaoxiao.netshaoxing330.comshaoyangnews.netshaoyee.com
+shaphc.orgshaqing.com
shaqm.com
share-man.comshare1diantong.comshare2dlink.comshare2uu.comshare404.comsharecharger.com
sharecore.net
sharedaka.comsharegog.comshareinstall.comshareinstall.netsharejoytech.comsharejs.comsharelogis.comsharemoon.clubshareoneplanet.org
sharesdns.com
sharetome.comsharetrace.comsharevdi.comsharewaf.comsharewithu.com
sharexbar.comsharingclass.vipsharjahmadrasa.comsharkselection.comsharkshopping.comsharpbai.com
sharpmobi.comsharpon.com
+shartu.com
shasx.comshavingbrush-china.com
+shawdo.com
shawdubie.com
shawnzeng.comshaxian.bizshayugg.comshayujizhang.comshb.ltd
shb02.com
shbaimeng.comshbangde.comshbangdian.com
+shbars.com
shbbq.net
+shbear.comshbg.org
shbicycle.com
+shbike.comshbj.comshbkwai.com
shbl8.com
+shbnrj.com
+shbobo.com
shboyuejc.com
+shbqmp.com
+shbtr.shop
+shbyer.comshc1126.com
shcas.netshcc-horizon.com
+shccig.comshccineg.com
+shccio.com
+shcell.org
+shcfcd.comshchengkao.com
shchhukou.comshclearing.comshcljoy.com
+shclkj.com
+shcmhr.com
+shcngz.comshcs2010.comshcsdljz.com
+shcsdq.com
shcso.comshcstheatre.com
shcwmotor.comshczssyq.comshdancecenter.com
+shdchy.comshdirong.com
shdjt.com
+shdmgs.com
shdmt.net
+shdrkj.com
shdsd.com
+shdsqs.com
+shdszc.comshdy168.com
+shdyty.com
+shdzfp.comsheasyoffice.com
+shebao.netshebao5.com
shebao520.comshebaomi.comshebaotong.comshebei4.com
shebiaotm.com
+sheboo.com
sheca.comshechipinshop.comshedejie.comshedongyun.comshedoor.com
shedunews.com
sheencity.com
sheepmats.comsheinet.com
sheji.com
sheji1688.netshejiadoors.comshejibao.comshejiben.com
shejibiji.comshejidaren.comshejidaxue.comshejidedao.comshejijia.comshejijingsai.comshejiku.netshejipi.comshejiqun.com
+shejis.comshejiwo.netshejixf.comshejiye.comshejiyizhou.comshejiyue.comsheketiandi.com
+shekou.comshelive.netshellpub.comshellsec.comshelter-china.comshelterdome.netshelwee.comshemini.comshen-nao.comshen321.com
shenanhui.comshenbinghang.comshenbingyiyuan.orgshenbisheji.comshencaiceshi.comshenchai.comshenchuang.comshencut.comshendatong.comshendiaoqzj.comshendoow.com
+shendu.com
shendugho.comshenduliaojie.comshenduwin10.comshenduwin8.comshengang-china.comshengangzc.comshengaohua.comshengbaihui.comshengbangshenghua.comshengbaoluo.comshengbenzixun.comshengcai.netshengcaijinrong.comshengdan.comshengdaosoft.comshengdaprint.comshengdianhuadg.comshengdianhuadk.comshengejing.comshengenv.comshengfanwang.comshenghan.orgshenghefilms.comshengheplastic.comshenghuabao.netshenghui56.comshenghuo365.comshenghuojia.comshenghuorili.comshenghuowo.comshengjing360.comshengjinglinye.comshengjiu.comshengjoy.comshengjuewl.comshengjunshi.comshengkaili.clubshengli.com
shengmage.com
shengming.netshengmingfa.comshengniuuz.comshengpay.comshengqian51.comshengqianlianmeng.netshengqugames.com
shengren.workshengsci.comshengshijw.comshengshizhicheng.comshengshong.com
shengtian.comshengtiangroup.comshengtongedu.com
shenguang.comshengweicnc.com
shengwu.store
shengwu01.com
shengxiao.netshengxin.renshengxinquan.net
shengxuxu.comshengyan985.com
shengyeji.com
+shengyi.aishengyi.bizshengyizhuanjia.comshengyuancc.com
shengzehr.comshengzhaoli.comshenhai8866.com
shenhexin.com
shenhexin.vipshenhongfei.comshenhongmao.com
+shenhua.ccshenhudong.comsheniaoren.comsheniaorenw.comshenjian.ioshenjiballs.comshenjing.comshenjumiaosuan.com
shenkexin.comshenkong.netshenlanbao.comshenliyang.comshenma-inc.com
+shenma.com
shenma4480.ccshenmabaike.com
shenmadsp.com
shenmapay.comshenmayouxi.comshenmezhidexia.comshenmikj.com
+shenmo.comshenmojiaoyu.comshenmou.comshennongpharma.comshennwu.com
+shenou.com
shenpinwu.com
shenpojie.comshenpucw.comshenqhy.com
shenqibuy.comshenqiwunet.comshenquol.comshenrongda.comshenrongjidian.comshenruan.orgshenshi-pen.comshenshi777.comshenshiads.comshenshijituan.comshenshoucdn.comshenshouwl.comshenshouyouxi.comshenshu.infoshenshuo.netshenshuw.comshensuantang.comshensuokeji.com
+shenta.netshentongdata.comshenweimicro.comshenweisupport.comshenweixiangjiao.comshenxianhua.com
shenxianyu.ccshenyangoffice.com
+shenyd.comshenyecg.comshenyehd.comshenyeyunying.comshenyinhudong.com
+shenyou.tv
shenyu.meshenyuanquan.comshenyunlaw.comshenyunwang.comshenzan.comshenzaokeji.com
shenzaole.comshenzhekou.comshenzhen-kuaiji.comshenzhen-world.comshenzhenair.comshenzhenbianhua.comshenzhenjia.netshenzhenlianhua.comshenzhenmakerfaire.comshenzhenshouxin.comshenzhentong.comshenzhentour.comshenzhenware.comshenzhenyuren.comshenzhoublm.comshenzhouen.comshenzjd.comshepai1688.com
+shephe.comshepinw.comshequfu.comshequfu.net
sherc.netsheshui.com
sheui.com
+shevdc.orgshewang.net
shewantea.comsheweikeji.comshexiannet.comsheying001.net
sheyingtg.com
+sheyou.comshezaixian.com
+shezfy.comshfamily.comshfangshui.com
shfcw.comshfft.co
shfft.comshfigaro.comshfilmmuseum.orgshfoxmotor.comshfq.com
shfrp.com
+shftth.com
+shfuju.com
+shfxrc.com
shgao.comshgaoxin.netshgbitcloud.com
shgci.com
shgjj.com
shgjq.com
+shglgf.com
+shgsec.com
+shgsic.com
+shgskj.comshgtheatre.com
shguanmai.com
shgyg.com
shhanqiao.com
+shhbgm.com
+shhcpm.com
+shhd17.comshhdhdt.com
shhdouyue.comshhenghesh.comshheywow.com
+shhgzf.com
+shhkcc.comshhksports.com
+shhl56.comshhmbio.comshhorse.comshhuayi.comshhuihai.comshhuima.comshhuisd.com
shhuu.com
shhws.com
+shhxbk.comshhxf119.com
+shhxzq.com
+shhyhy.com
+shhzcj.comshi-ming.com
shi78.comshianxin.netshianzhixuan.com
shibaihui.org
shibangsy.comshibolm.com
+shibor.org
+shicai.biz
shicaidai.comshicaizhanlan.comshicaotangchina.comshichangbu.com
shichaooa.com
shicheng.coolshichengyi.comshichuangsj.comshichuangyi.com
shichuedu.comshichuihui.comshicihui.comshicimingju.comshicishe.comshiciyun.com
shicuojue.comshida66.comshidaba.comshidaedu.vipshidaohospital.comshidapx.comshidastudy.comshidenggui.comshidianbaike.comshidianguji.comshidiao136.comshidoukeji.comshifair.com
shifanedu.comshifang.tech
shifd.netshifeiti.com
+shifen.comshifendaojia.comshifeng.comshifenyuedu.comshigaoshan.comshige.groupshiguangkey.comshiguangpu.comshiguangxu.comshiguangyouju.comshiguanvip.comshiguanyinger-jg.comshihaolawfirm.comshihuantong.comshij001.com
shijia315.comshijiala.com
+shijian.ccshijian.org
shijianla.comshijiaok.comshijicloud.comshijie2.comshijiebang.comshijiechaoshi.comshijieditu.netshijiehuarenbao.com
shijiemap.comshijieminghua.comshijiemingren.comshijiesanqingshan.com
shijiexia.comshijieyouxi.comshijieyunlian.comshijiezz.comshijihr.comshijihulian.comshijiong.comshijiqingqing.comshijiretailo2o.comshijitailai.com
shijiudao.comshijiufang.comshijizhongxi.com
+shijqq.comshiju.cc
shijue.meshijuecanyin.comshijuechuanda.comshijuehaian.comshijueju.comshijuenian.comshikang.netshikaricharters.comshike-qz.com
+shikee.comshikongdaoyu.comshiku.co
shileizcc.comshileizuji.comshilian.comshilian.netshilicdn.comshilipai.netshilitie.netshiliupo.comshiltan.comshiluetl.comshiluoji.comshimano-fishchina.comshimaowy.comshimengyuan.comshimengzhanghao.com
+shimge.comshimiduanju.com
shiminjia.comshiminjiaju.comshimo.im
shimo.runshimodev.comshimoko.com
shimolife.com
shimonote.com
shimonote.netshimotx.comshimowendang.comshine-ic.comshinechina.com
shinefeel.comshinelon.comshinerayad.com
shinetsu.shop
+shineu.comshineway.com
shinewing.comshineyie.comshinianonline.comshiningmidas.comshiningnew.comshinnytech.comshinsoukun.comshinycg.comshinyway.org
+shiove.comship-gps.netship.sh
+ship56.net
shipai123.comshipfinder.comshipgce.com
shipgroup.net
+shiphr.com
shipin163.com
shipin520.comshipinzhibojian.com
+shipoe.comshippingate.comships66.com
+shipsc.orgshipservice.orgshiptux.com
shipurili.com
+shipxy.comshiqi.meshiqichuban.comshiqidu.com
shiqu.com
shiquan56.comshiquask.com
shiqutech.comshirenzuojia.comshiritianchengtech.com
shisanzhi.comshishacharcoal.netshishagame.comshishangfengyun.comshishifanyi.comshishike.com
shishitao.com
shisongya.com
shisukeji.com
+shitac.comshitang.ink
shiti.netshitianxia.vipshitibaodian.comshitikusoft.com
shitiquan.com
+shitoc.com
+shitou.com
shitouboy.com
shitourom.comzyue.com
shiwaiyun.com
+shiwan.comshiwangyun.comshiweisemi.comshiwenlu.comshiwusmd.comshixiangren.comshixiaojin.comshixibiaozhi.comshixijob.net
+shixin.comshixingceping.com
shixinhua.comshixinyufang.com
shixiseng.com
shixun365.com
shixunhao.comshixunsuda.comshixunwl.com
+shiyan.com
shiyanbar.com
shiyanbar.netshiyanhospital.com
shiyanjia.com
shiyanlou.comshiyculture.com
shiye.org
shiyebian.net
shiyebian.orgshiyi.coshiyi11.comshiyibao.comshiyide.comshiyifacai.comshiyiyx.comshiyongjun.biz
shiyou.meshiyouhome.com
shiyousan.com
shiyu.pro
+shiyu.zone
shiyuandx.com
+shiyue.comshiyuegame.comshiyueliangpin.comshiyunlaile.com
+shiyus.comshiyutianqi.comshizhanxia.comshizhihome.comshizhongruyi.comshizhuang-inc.comshizhuolin.comshizhuonet.comshjcm3d.comshjdceo.com
+shjdjx.com
shjgu.comshjh120.com
+shjhjc.comshjincan.com
shjingxin.comshjingxu.comshjinnengzuche.com
+shjob.work
+shjsit.com
+shjsrg.comshjt.netshjvguan.com
+shjy18.comshjy8888.com
+shjyou.com
+shjyyx.comshjzfutures.com
shkaihang.comshkdfua.comshkewen.com
+shkhzc.comshkingchem.com
shkjcable.com
+shkjqp.comshkjsoft.com
shkkl.comshkm.comshkuangjing.comshkypump.com
shl56.com
+shlab.techshlawserve.comshlcxby.comshld.com
+shldfm.com
+shlgwy.comshlhbxg.comshliangshi.com
shlll.net
+shlmth.com
shlongtai.com
shlpk.com
+shlsyb.comshlungu.com
+shmama.netshmarathon.com
+shmaur.com
shmds.comshmedia.techshmengyang.com
shmet.comshmetro.com
+shmhtv.com
shmiaosai.com
+shmljm.com
shmog.orgshmulan.comshmusic.orgshmylike.comshnaile.com
shnb12315.comshneweye.com
+shnmnm.com
shnne.com
+shnsyh.com
shnti.comshoasis.netshobserver.com
shockerli.netshoegaze.comshoeshr.comshojo.cc
+shokan.org
shokw.com
+shomyq.comshootmedia.netshop-isv.comshop2255.comshop2cn.comshopbackdrop.comshopchaoren.comshopeesell.comshopeesz.com
shopex123.com
+shopin.net
shopj.netshopjyh.com
shoplazza.com
shopmaxmb.com
+shopnc.netshopplus.vip
shoprobam.com
+shopss.comshopwatchus.comshopwind.net
+shopxo.net
+shopyy.com
shorcut88.com
shorologe.comshoubaiart.comshoubaodan.com
+shoubb.comshoubiao1688.comshoubiaohuishou.comshoubiaowang.com
shoubuluo.com
shoucaizb.comshoucangyaji.com
+shouce.ren
shouce365.comshouchaoba.comshoucheng123.com
+shoucw.comshoudayy.netshoudian.com
shoudian.infoshoudian.orgshouduit.comshoudurc.comshoufaw.com
+shoufm.comshougongke.comshougongke.netshougoumingbiao.comshouhaoche.comshouhoubang.comshouhui.comshouhuisoft.com
shouhuola.com
+shouji.comshouji10086.com
shouji315.orgshouji56-img.comshouji56.com
shoujibao.netshoujiduoduo.comshoujihuifu.comshoujimi.comshoujitouping.com
shoujiwan.comshoujixs.netshoujixs.orgshoukala.comshoulian.orgshouliwang.comshoumaquan.comshoumizhibo.com
+shoumm.comshouqi-zuche.comshouqianba.com
shouqibus.comshouqiev.com
shouqu.meshoushenlvcheng.comshoutao.biz
+shouxi.com
+shouxi.net
shouxieti.comshouxintec.comshouyao.comshouye-wang.com
shouyihuo.comshouyinbei.netshouying.tvshouyou.comshouyoubus.comshouyoucdn.com
shouyoujz.comshouyouqianxian.comshouyoushenqi.com
shouyoutv.comshouyouzhijia.netshouzan365.com
shouzhang.comshouzhangapp.comshouzhitao.comshouzhuanzhidao.com
shovesoft.comshow160.comshowapi.comshowbamboo.com
showchina.orgshowcome.net
+showdoc.cc
showerlee.comshowfay.comshowgame.comshowing9.com
+showji.comshowjoy.comshowkey.com
showmebug.com
showmesse.netshowroomshanghai.comshowself.com
showshell.com
showstart.comshowtao.comshowxiu.comshowxue.comshowyes.org
+showyu.com
+shoyoo.com
+shpans.comshpanyou.comshpd.net
shpgt.com
shpgx.comshphschool.com
shppa.net
+shppon.comshps518.comshpsncp.comshpyedu.comshqcplw.com
+shqdjt.com
shqi7.netshqianshuibeng.comshqinghe.com
shqingzao.comshqipai.org
+shqlty.com
+shqmxx.comshqswlgs.com
+shqxjx.com
shqyg.com
+shrail.comshrbank.com
shrca.org
shrcb.com
+shrcdy.comshrenqi.com
+shrgjt.com
+shrlig.comshrobotpark.com
+shrsks.org
shruisong.net
+shryou.com
+shsaic.net
shsanfang.com
+shsbnu.net
shsby.comshsc-valve.com
+shscce.com
shsci.orgshsdjsj.com
shsee.com
+shsgyq.com
shshaoduo.comshshenbo.com
shshengfa.comshshilin.comshshinfo.comshshuhui.com
+shshzu.com
shsid.orgshsinhu.com
+shsipo.comshsixun.com
shsjb.com
+shsjjh.com
shsjx.org
shskg.com
+shskin.com
shsot.com
+shspdq.com
shspt.com
shssp.org
+shsxjy.com
+shsz17.comshszsoft.comshtangchao.com
shtbi.com
+shtdgj.com
+shtdsc.com
+shtefu.com
+shtfqx.com
+shtgds.comshthediyya.comshtianhe.ccshtianyuqiche.com
shtic.com
+shtimg.com
+shtion.com
shtopshow.com
+shtpin.com
+shtqzs.comshtrhospital.comshtutian.comshtw.ccshtwjiebao.com
+shtxcj.com
+shty99.com
+shu-ju.net
+shu163.comshuaigeshe.comshuaihuajun.com
shuaiming.com
shuainiba.com
shuaishou.com
+shuaiy.com
+shuajb.com
+shuaji.com
+shuaji.net
shuajibao.comshuajige.netshuajizhijia.net
+shuame.com
shuanghui.net
shuangken.com
shuangkou.net
shuangkuai.coshuangle888.comshuangliangbale.com
shuanglin.comshuanglongjp.comshuanglongtai.comshuangmatbs.comshuangmei2008.comshuangshiyijie.com
shuangtao.comshuangxian.comshuangxinhui.comshuangyanjie.comshuangyingmenye.netshuangyingsx.comshuangyuejn.comshuangzheng.orgshuashuaapp.comshuashuafan.comshuashuati.com
shuax.com
shuazhibo.comshubendi.comshubiaob.com
shubl.comshubonylon.comshubulo.comshucaixiaoshuo.comshuchongread.comshuchuandata.comshucong.com
+shudan.vipshudaxia.com
shudc.comshudongpoo.comshuerjia.com
shufa.comshufa360.comshufaai.comshufabao.netshufafin.comshufaji.comshufami.comshufashibie.comshufawu.comshufazidian.com
shufaziti.com
shufe.comshufenggaoke.com
shuge.org
+shuge9.comshuguanghuayuan.com
+shuhai.comshuhaidata.comshuhaige.netshuhaisc.comshuhaitz.comshuhaochaxun.comshuhegroup.comshuhenglib.com
shuhonggz.comshuhua66.comshuhuast.comshuhuawu.comshuhui9.com
shui12366.com
+shuicao.ccshuichachong.comshuichan.ccshuichan51.com
shuichuyu.comshuidiangon.comshuidichou.comshuididabingchou.netshuidigongyi.comshuidihealth.comshuidihuzhu.comshuidihuzhu.netshuidike.comshuiditech.comshuidixy.comshuidyd.comshuigongzhu.comshuihuoibm.comshuijing100.comshuijingka.comshuijingwanwq.comshuijingwuyu.comshuijinshunzhuang.comshuiliangye.comshuiliantong.comshuiliaosheji.comshuimiao.net
shuimoshi.netshuimozhuan.netshuimui.comshuimujiaju.comshuimuyulin.com
+shuini.bizshuipingce.com
+shuipo.com
+shuisj.comshuitexxkj.com
shuiwushi.netshuixin.techshuiyaohuo.comshuiyinbao.com
shuiyinyu.comshuiyoucam.comshuiyugame.comshuiyuwenquan.comshuizhifenxi.comshuizhiyuncaishui.comshuizilong.comshujike.com
shuju.netshujuapi.comshujuba.net
shujubang.comshujubo.comshujucun.com
shujutang.comshujuwa.netshujuxian1688.comshukeba.comshukebox.comshukeju.comshukemobile.comshukexiansheng.comshukingfashion.com
+shukoe.comshukongwang.comshukuai.comshukuai3.comshukuge.comshukwai.com
shulanapp.com
shulb.comshulebao.comshuliao.com
shulidata.comshuliyun.com
shumahezi.comshumaidata.com
shumeipai.netshumeipaiba.comshumenol.comshumensy.comshumiao.comshumiimg.comshumilou.org
shumo.comshun176.comshunbangsaifu.comshunchangdt.comshunchangzhixing.comshunchaojinshu.comshundecity.comshundehr.com
shunderen.comshunfalighting.com
shunfangw.comshunfeng.cc
shunguang.comshunhaiwang.comshunhejieshui.comshunhengkn.comshunhongny.comshunhuishou.com
+shunmi.comshunnengnet.comshunong.comshunpaiwang.com
+shunqi.comshunshiidc.com
shunshikj.comshunshunliuxue.comshuntongtong.comshunwang.comshunwoit.com
shunxindt.com
+shuo66.com
+shuoba.com
shuoba.me
+shuoba.orgshuobao.comshuocdn.com
shuodedui.comshuoedu.com
shuofangw.comshuoji1688.comshuojuchaxu.comshuomingshu.netshuomingshuku.com
+shuoniu.cc
+shuoou.com
shuoshuoba.ccshuoshuojie.netshuoshuokong.comshuoshuokong.orgshuowan.comshupackaging.com
shupaiyun.comshuq.net
shuqi.com
shuqiaozt.comshuqiapi.com
shuqiread.comshuqireader.comshuquge.com
+shuquge.la
+shuqun.comshuquta.comshuquxs.com
+shuquzw.la
shuren100.comshushangai.comshushangyun.comshushihome.comshushubuyue.comshushubuyue.netshusongwangdai.com
shusw.com
+shutcm.com
shuti.comshutong5858.comshutonginfo.comshutwin.comshuwangxing.comshuwenxianyun.comshuwulou.comshuxiangmenhu.comshuxiangmuye.comshuxinsp.comshuxinyc.comshuxinyi.net
shuxuehua.comshuxuejingwei.comshuya-china.com
shuyangba.com
shuye.comshuyeedu.comshuyewl.xyzshuyfdc.comshuyong.netshuyuanchina.orgshuyuewu.co
+shuyun.comshuzhi9.comshuzhibaogao.net
shuzhiduo.com
+shuzhou.ccshuzibao.comshuzigd.comshuziguanxing.comshuzijihuo.comshuzixiaoyuan.comshuzixindong.comshuziyoutian.comshuziyuedong.com
shwbs.orgshwdbjgs.comshwebspace.com
shwhl.com
shwilling.comshwkwai.comshwoody.comshwpbbs.comshws.org
shwsg.netshwszdh.com
+shwyky.net
shxbe.comshxgroup.netshxhgzf.com
shxiaoran.comshxibeiquanshe.com
shxil.comshxincn.comshxmhjs.comshxnetwork.com
+shxrcw.comshxrmtzx.comshxseer.com
shxsj.comshxuanming.net
+shxwcb.comshxxyun.com
+shxyou.comshyanke.comshyaoxu.com
shyclouds.netshydjscl.comshyestar.com
+shyfci.com
+shygdz.comshyhhema.com
shyhp.comshyihuoh.com
shykx.comshykz123456.com
+shymhk.comshyojin.comshyongwo.comshyongzeng.comshyouai.comshyouth.net
+shypgd.com
+shyrcb.comshyuanye.comshyueai.comshyueyanghospital.comshyumin.net
+shyuwl.comshyuzhai.com
+shywly.comshyx-bio.com
+shyxi5.com
+shyxwz.comshyy6688.com
+shyygh.com
shyyp.net
+shyywz.com
+shyz07.comshyzjsxh.com
+shyzsd.com
shzaiguan.com
shzbc.com
shzbh.com
+shzbkj.comshzch12333.comshzf.com
+shzfsy.com
+shzfzz.net
shzgd.org
shzgh.orgshzh.netshzhanling.comshzhanmeng.comshzhiyingedu.com
+shzhyx.com
+shziyi.com
shzkb.com
+shzkbj.comshzq.com
+shzsun.comshzuibaichi.com
+shzymp.com
shzyw.com
si-en.com
si-in.com
+zyucan.com
+siaedu.netzytv.ccsiam.org
+siaoao.comsias-sha.com
sibfi.com
+sibida.net
siboda-nb.comsibuzyn.com
+sicent.comsicheng.netsicher-elevator.comsichuan163.comsichuanair.comsichuancancer.orgsichuangwy.orgsichuanyunzhan.comsicimano.com
+sicoll.com
sicuo.comsidfate.com
sidmakarn.comsiengine.comsieredu.comsif.com
+sifalu.comsifangbazhu.techsifangoa.comsifangvideo.comsifayun.comsiff.com
sifky.com
sifou.com
sifve.comsigachem.comsigchina.com
+sightp.comsiglent.com
+siglff.com
sigmachip.comsigmamed.netsigmastarsemi.com
+sigmob.comsigmoblive.comsign-say.comsignage911.com
+signcc.com
sigongzi.shopsigujian.comsiguoya.name
sihai-inc.comsihaidj.comsihaishuyuan.comsihaitv.com
+siheal.comsihociho.com
sihongjob.comsihongxian.com
sihoo.comsihotels.comsihuanpharm.comsihui-electric.comsihuida.net
sihuisoft.comsiii.xyz
siilu.com
+siitad.com
siixu.com
sijiaomao.comsijijun.comsijinchuanbo.comsijitao.net
sijiwater.comsijiweinong.com
sikem.net
sikfh.comsikiedu.com
+sikuwu.comsilanggame.com
+sildyn.com
sileadinc.comsilenceper.comsilianmall.comsiliaobaba.comsiliaokelijixie.com
silinchen.com
+siling.comsilkpresent.comsilkroad24.comsilkroadtechnologies.comsilkroddream.comsilksong.mesilktrek.com
sillydong.comsilucar.com
+silucg.comsiludao.comsiluecai.com
+siluhd.com
siluke.ccsilukex.com
+siluwu.com
+sim800.com
+simaek.comsimagic.comsimanuo.comsimcere.comsimcolux.com
+simcom.com
simcomm2m.com
simcu.com
simei.vip
+simei8.comsimengqifu.comsimhaoka.com
+simiam.comsimici3.com
simij.com
+simiki.org
simingcun.netsimingkuai.comsimingtang.comsimmtime.comsimon96.online
+simope.comsimp.redsimperfect.comsimple-is-better.comsimplecreator.netsimpledatas.com
simplexue.comsimpread.pro
+simsci.netsimu800.comsimul-china.com
simullink.comsimulway.comsimuwang.com
simwe.com
+simxhs.com
sin0sites.comsina-cf.comsina-digital.comsina.comsina.ltsina.netsinaapp.comsinacdn.com
sinacloud.com
sinacloud.net
sinadaxue.comsinaedge.com
+sinaft.com
+sinahk.net
+sinaif.comsinaimg.com
+sinajs.comsinalog.comsinaluming.com
sinan.funsinanet.comsinanode.comsinanya.comsinaquyong.com
+sinas3.com
+sinas3.netsinashow.comsinastorage.comsinasws.comsinauda.com
+sinawf.comsincetimes.comsindsun.comsinereal.comsinesafe.com
sinf-test.netsinf.net
+sinflb.net
sinforcon.comsingaporepaya.comsingbon.comsingcere.netsingdown.comsingfosolar.comsingfun.comsinghead.comsingle6228.icusinglecool.comsingmaan.com
singoo.ccsingtaonet.comsingtown.comsingularity-ai.com
singzsing.com
+sinldo.com
sinlu.netsinmeng.comsino-corrugated.comsino-cr.comsino-flexography.comsino-foldingcarton.com
sino-info.net
sino-life.comsino-manager.comsino-rainbow.cc
sino-sfcc.comsino-web.netsinoancher.comsinoaquafilter.comsinoassistance.com
sinobaron.comsinobasalt.comsinobasedm.com
sinocache.netsinocare.comsinocars.comsinocateringexpo.comsinocax.comsinochem.comsinochemb2c.comsinochemitc.comsinochip.net
sinoclick.comsinocopy.comsinocul.comsinodingcheng.com
sinodrive.com
+sinoec.netsinoevin.com
+sinofo.comsinogslb.comsinogslb.net
+sinogt.com
+sinohb.com
sinohotel.comsinohowe.com
+sinohx.com
sinohydro.com
+sinoid.comsinoinfosec.comsinoing.netsinoins.comsinointeractive.comsinokap.comsinolinchem.comsinolinchemintl.comsinologyinstitute.comsinolub.comsinolube.comsinoluhong.comsinomachint.comsinomapping.comsinomaps.com
sinomatin.comsinonet.orgsinonsh.com
sinontech.comsinoo.ccsinopec-usa.comsinopec.comsinopecgroup.com
sinopecgx.comsinopechyzx.comsinopecnews.comsinopecsales.comsinopecsenmeifj.com
sinopharm.comsinopharmholding.comsinopharmzl.comsinophex.com
+sinopr.orgsinoprinterparts.comsinorusfocus.comsinorussian21st.orgsinoshan.comsinosig.comsinosilica.com
sinosina1.com
+sinoss.netsinostargroup.com
sinosteel.comsinosun.comsinosuntop.com
+sinotf.com
+sinotn.comsinotone.net
sinotrans.comsinotrust-group.comsinoturning.comsinovale.comsinovast.comsinovatech.com
sinovatio.comsinovationventures.comsinovdc.comsinovio.net
sinovoice.comsinowealth.com
zytuozhan.comsinowel.comsinowheelbarrow.com
+sinoxk.com
sinoxlube.comsinozhongyuan.comsinozoc-ex.comsinreweb.com
+sinrey.com
+sinsam.comsintaytour.comsintien.com
sintoacct.com
sintu.comsinture.com
sinvofund.com
+sinvta.com
sinyoung.sitesinyuee.com
sinzk.comsioelyys.sbssiozqkt.com
sipai.com
sipaphoto.com
sipco.com
+sipedu.org
+sipeed.com
sipgl-lcl.com
+siphrd.com
sipingseo.comsipo-sc.comsiposchina.comsiqiquan.org
sique.comsir3.com
sir66.com
+sireda.comsirenji.comsirfang.com
+siryin.comsiscmag.com
sisen.com
sisensing.comsishuok.comsishuxuefu.comsisigad.comsisijiyi.comsisiqiqrcficf.asiasisp-china.com
+siswin.comsite-digger.comsite119.comsiteapp-static.com
+sitekc.comsiteonlinetest.com
sithc.comsitiaoyu.com
sitongedu.orgsitongzixun.comsitrigroup.comsitudata.comsivan.in
+sivlab.com
sivps.comsiwaman.comsiweidaotu.comsiweiearth.comsiweikongjian.netsiweivr.com
+siweiw.com
siwuprint.comsix.clubsixdeviations.com
sixflower.comsixianchina.com
+sixiang.im
+sixiju.com
+sixjoy.comsixstaredu.com
sixu.life
+sixue.techsixuexiazai.com
sixunited.comsiyanhui.comsiyetian.comsiyi007.com
siyuan.cc
siyuanedu.com
siyuanren.comsiyuanwangluo.com
siyuefeng.comsiyuweb.comsizeofvoid.net
sizuo.comsj-airpurge.com
sj-lawyer.comsj-tmdi.com
+sj0763.com
+sj11hb.com
sj123.comsj33.netsj6rgxtjg3tmb.comsj88.com
sj998.comsjawards.comsjbutton.comsjcamzone.ccsjcomic.com
+sjcybz.comsjdnawe.xyzsjdongwang.com
sjdzp.com
sjdzp.net
sjebh.com
+sjetdz.com
+sjf029.com
+sjfcdn.comsjfh168.com
+sjfpro.com
+sjfzxm.com
+sjgh94.com
sjgle.com
+sjhcip.comsjhfkhgut009.com
+sjhfrj.com
sjhgo.comsjhl.cc
sjhoffice.com
+sjhong.netsjhy.net
+sjhykt.com
sjizx.com
sjjk.shopsjjob88.com
sjjzm.comsjlbearing.comsjlhlawyer.comsjm-zdh.comsjm.life
sjmao.net
sjmdh.comsjmeigao.comsjmwbffx.com
+sjmwsw.com
sjmxx.com
+sjmzfk.com
sjono.com
sjooo.com
+sjpjyx.com
+sjq315.com
sjqcj.comsjqmtlm.com
+sjrwzz.com
sjsbk.comsjsheji.com
sjsjz.com
sjsoy.com
sjsrm.com
+sjsydq.comsjsymall.comsjtickettech.comsjtm.me
sjtug.org
sjtxt.comsjtxt.la
+sjtype.comsjvi.netsjwj.comsjwl.xyz
+sjwtlm.com
sjwx.info
+sjwxzy.com
sjwyx.com
+sjxgbp.comsjxinxiwang.com
sjxqn.comsjxs.la
+sjxtcw.com
+sjxydc.com
+sjxyit.comsjxysec.com
sjxzc.comsjy-art.orgsjy2.com
+sjycbl.comsjyl.comsjyt.netsjytech.comsjyx.com
sjyyt.com
+sjz.cc
sjz110.cc
+sjz44z.com
+sjz958.comsjzbasha.com
+sjzbwx.comsjzbyzjb.comsjzcfjd.com
+sjzcmw.com
sjzdongya.comsjzdt56.com
sjzfeitai.comsjzgxwl.com
sjzhu.com
sjzhushou.comsjzjiuyuan.comsjzjkqgs.com
sjzkz.com
sjzlg.com
+sjzlgz.comsjzmama.comsjzqcrl.comsjzrbapp.comsjzshunbang.comsjzsidadianji.com
sjzslnyhy.com
sjztd.com
+sjzxfy.comsjzxtsh.com
sjzyb.com
+sjzyes.comsjzyiju.comsjzysdz.com
sjzyz.netsjzzimu.com
sk163.com
+sk1999.comsk1z.comsk2w.net
skatehere.com
skcto.com
skd62.com
skdj5.comskdlabs.comskeo.netsketchchina.comsketchchina.netsketchcn.comsketchupbar.comsketchupbbs.comskg.com
skidstorm.com
+skieer.com
+skimit.net
skinme.ccskip-links.com
+skjcsc.comskldoor.comsklinux.com
sklse.orgskomart.comskongmx.comskp-beijing.com
+skpssz.comskrshop.techskrskrskrskr.com
+sksdwl.com
+skslfd.com
+sktcdn.comsktfaker.comskusoft.com
skxox.com
skxsj.comsky-deep.comsky-fire.comsky-mobi.comsky123th.comsky1shop.comskyallhere.comskyao.io
+skyard.com
+skybig.netskybluek.comskycaiji.comskycham.comskycloudsoftware.com
skycn.com
skycn.netskydodi.comskydust.net
skyeaglee.com
+skyecs.comskyfeather.onlineskyfollowsnow.proskyfont.com
+skyfox.orgskyhand.vipskyheng.comskyleon.comskylerzhang.comskymoons.comskymoons.net
+skynan.comskynicecity.com
skynj.comskype-china.netskypixel.comskypuretech.comskyrichpower.com
skyrivers.org
skyrj.com
+skysea.comskysgame.com
skysriver.com
+skysrt.com
skyts.netskytv.cc
skyue.comskyw.ccskywavewifi.com
+skywek.comskywldh.comskyworth-ac.comskyworth-cloud.comskyworth-ea.comskyworth.comskyworthbox.comskyworthdigital.comskyworthdigitaliot.comskyworthds.comskyworthiot.comskyworthlighting.comskyworthznxyj.comskyxinli.com
+skyyin.orgskyzhan.com
+skznsb.com
+sl-360.com sl.al
+sl.fun
sl916.com
sl91d.comslaidor.comslamtec.com
slanissue.com
slanmedia.com
+slatic.netslbauto.com
+slbiop.com
slbrucite.com
+slchos.com
slduntong.com
sle.group
+sleele.comsleepboy.com
slegetank.com
+slengy.com
slertness.com
slfwq.com
slicejobs.comslicercn.com
+slink8.com
+slinli.comslinuxer.com
sliun.com
slja2.comsljob88.comslk1.net
sllai.com
+sllngy.comsllssrq.com
+slogra.com
+slooti.com
slot4.netslovakia-visacenter.comslovenia-visacenter.comslowdark.com
slpi1.com
slpmg.com
slrbs.comslready.com
slssx.comslsteel.com
slswd.com
+slswx7.comsltg2019.comslttech.comsltv.netsltxantonline.comslwh-dfh.comslwwedding.comslxsscm.com
+slybjp.com
slyld.comslyxmobi.com
+slzsxx.comsm-check.com
sm-cq.comsm-main.com
sm160.com
sm160.netsm688801.comsm96596.comsmallfighter.comsmalljun.comsmallkedou.comsmallpdfer.com
smallyuan.com
+smarch.comsmarchit.comsmart-hengdi.com
smart-idc.net
smart-ptt.comsmart-rise.comsmart365ol.comsmartautoclub.comsmartbgp.comsmartcloudcon.comsmartcom.cc
smartdeep.comsmartdot.comsmartedm.comsmartermicro.com
smartgaga.comsmarthey.comsmarthomecn.com
smartisan.comsmartisanos.comsmartisantv.comsmartjoygames.com
smartleon.netsmartlifein.comsmartlinku.comsmartmidea.netsmartoct.comsmartont.netsmartpigai.comsmartpoweriot.com
smartqian.comsmartroomcn.comsmarts-isoftstone.comsmartsenstech.comsmartsteps.comsmartstudy.comsmartwebee.com
smartx-cn.com
+smartx.comsmartxiantao.comsmartyao.comsmartydentistry.com
smartyoke.com
smartyun8.com
+smarun.comsmaryun.com
smaty.net
+smbinn.com
smbxw.com
smc18.com
smc3s.com
smcic.net
+smcsrj.com
smd88.com
smdcn.netsmdiban.netsmdmark.comsmdx.net
+sme-cn.comsme8718.com
smebb.com
smeia.net
+smemo.info
smeoa.comsmetumen.com
+smfsgs.com
+smfyun.com
smgpt.comsmgstar.comsmgtech.net
smhsw.comsmhyplay.comsmianet.comsmic-sh.com
smics.comsmil888.com
smile2012.com
smilec.ccsmileyan.comsmilingwhitebear.com
smjqh.comsmjstcy.com
+smkeji.com
smkgc.comsmkmake.com
+smknow.comsmkxyjy.com
+smlaw8.com
+smlqcl.comsmmy365.comsmo-clinplus.comsmo-software.com
+smohan.netsmokeliq.comsmoothgroup.cc
smoreroll.com
smovie168.com
smowo.comsmpg888.com
smppw.com
+smrmyy.com
sms18.comsms9.net
+smsbao.com
smshx.com
smskb.comsmslkcoffee.com
smsot.comsmstamps.comsmsvifv.com
smsyun.ccsmt-dip.comsmt.netsmt2000.com
+smtcdn.comsmtcdns.comsmtcdns.netsmtchinamag.com
smtcl.com
smtdc.com
+smtdwx.comsmthome.netsmtiger.comsmtphub.org
smtro.com
+smtsmt.com
+smtsvs.comsmttouch.comsmtukuzy.com
smtul.com
+smtvip.com
smudc.comsmulink.com
+smuszh.com
+smvip8.com
smwd.techsmwenxue.com
+smxdiy.com
smxgh.com
+smxgjj.comsmxs.com
smxyi.comsmyfinancial.comsmyhvae.com
smynn.comsmyx.net
+smyxxj.com
+smyyhj.comsmyyulin.comsmyz.net
smzdm.comsmzdmimg.comsmzdwan.comsmzjy.ccsmzrmyy.com
+smzwgk.comsmzy.com
+sn-epe.com
sn660.com
sn662.com
sn667.comsnai.edu
snail.comsnail007.com
snailgame.net
snailshub.comsnailsleep.netsnailyun.comsnap-buy.comsnapany.comsnapdrop.net
snapemoji.netsnapgenshin.comsnaplabdevelop.comsnapp.ir
+snapp.site
+snapp.taxi
snappcloud.iosnapplay.comsnappmaps.irsnbkf34.com
+sncoda.comsncs782.xyz
+snd-yy.com
sndhr.com
sndks.comsndo.com
sneac.com
sneia.org
sngct.com
snh48.com
+snhere.com
snhrm.com
sniec.net
+snieri.com
+snimay.comsnjairport.com
snjbs.com
+snjjiu.comsnjrsks.comsnkhome.com
+snkjol.comsnkshoe.com
+snkyat.com
+snlxgk.comsnmi.comsnobten.com
snodehome.com
+snoone.comsnor-china.comsnowballfinance.comsnowballsecurities.comsnowballtech.comsnowdream.techsnowflake.pinksnowkey.comsnowolf0620.xyzsnowyimall.comsnowytoronto.com
snps.tech
snrat.com
snren.com
snrtv.com
snrunning.com
+sns.io
snscz.com
snsfun.cc
+snsfun.comsnsggzy.comsnshopf79.site
snsii.com
snsnb.com
snsqw.com
+snsyhg.com
snsyx.comsnto.com
snupg.comsnwx.comsnxw.comsnycloud.com
+snynas.com
snzhz.com
+so.com
so126.com
so666gslb.com
+so8848.com
soarwatch.comsoaryoof.com
+soauto.comsobaidupan.comsobereva.comsobeycache.comsobeycloud.com
+sobili.com
sobot.comsobot.iosoboten.com
+socang.com
socay.comsoccerbar.ccsocchina.net
sochengyi.comsochips.com
socialark.net!socialbasecustomercontent.comsocialbaseusercontent.comsocialbeta.comsocialgongz-edu.com
socialjia.com
socialpls.com
+socite.com
socket.twsocolar.comsocomic.comsocool-tech.com
socpk.comsodalife.xyz
sodao.comsodayang.com
sodc8.com
+sodeog.com
sodexo-cn.com
sodianwan.com
sodiao.cc
+sodino.com
+sodion.net
sodocloud.comsody123.com
soeasysdk.comsofabiao.com
sofan.one
+sofang.com
sofangche.comsofasofa.iosofastack.tech
sofi-tech.com
sofineday.com
sofoo.com
sofreight.comsoft128.comsoft2005.com
+soft50.comsoft5566.comsoft568.com
soft6.comsoft778.com
+soft78.comsoft808.comsoft8899.comsoftabc.com
softbank.best
softbanks.netsoftbar.com
softbingo.netsoftgostop.comsofthead-citavi.comsofthome.ccsoftjinzhou.comsoftmall.netsoftscdn.comsofttest.comsoftwarechn.comsoftwarecn.comsoftwarekeyclub.comsoftweek.netsoftwhy.com
softwincn.comsoftworker.com
+softxz.net
sofujinyu.com
sofun.com
sogaa.netsogalqd.comsogaokao.comsogo.com
+sogoke.com
sogood360.com
sogou-inc.comsogou-op.org
sogou.com
sogou.netsogoucdn.comsogoucdndl.comsogouimecdn.com
+sogouw.comsogowan.comsogw.cc
+soharp.comsoho-yiming.com
+soho3q.com
soho8.net
sohoblink.com
sohochina.com
+sohodd.comsohonow.comsohotask.com
00615.netsohu-inc.comsohu.comsohu.netsohuapps.com
+sohucs.comsohuhistory.com
+sohuiw.comsohumail.comsohunjug.com
+sohuns.comsohuora.comsohurdc.comsohusce.com
sohuu.com
soicp.com
sojex.netsojiang.comsojiang.netsojianli.comsojixun.comsojoline.com
+sojson.com
+sojump.com
+soke17.com
+sokoban.wssoku.com
+sokuba.com
+sokutu.comsokyotw.comsolaking.comsolar-engine.comsolarbe.comsolarbio.comsolaridc.comsoldeazy.comsoldierstory-toys.com
solelybio.comsolepic.com
soletower.comsoli.so
+soliao.comsolidigm-asdf.comsolidigm-zxcv.comsolidot.orgsolo-launcher.comsolochex.comsoloknight.xyzsolosea.comsolotoon.com
solove.design
solution9.netsolvyou.com
som88.netsomacisgraphic.hk
+somama.comsomamobi.comsomao123.comsomcool.com
somd5.com
+somdom.comsomeabcd.comsomenchina.comsomeonegao.comsomething8.comsometracking.comsomo.so
+somode.com
+somsds.com
+sonbao.comsonbest.com
+soncci.comsong.pw
+songcn.comsongcwh.comsongduwuye.comsongfeng.com
songguike.comsongguo7.comsongguojiankang.comsonghaifeng.comsonghaoyun.comsonghaozhi.comsonghengnet.comsonghualan.com
songhuwan.comsongker.comsonglei.net
+songma.comsongmao-idc.comsongqinnet.comsongshitang.comsongshizhao.com
songshuai.comsongshudiandian.comsongshuhui.netsongshujiedan.comsongshushuo.comsongsongruanwen.comsongsongyingxiao.comsongsongyun.comsongtaox.com
songtaste.comsongtianlube.comsongwang168.comsongxiaocai.comsongxiaojin.comsongxing.netsongyang.netsongyanjiaye.com
+songyi.netsongyiqing.xyzsongyongzhi.comsongyuan163.comsongyuanlove.comsongzhaopian.comsongzhiyong.com
songzi100.com
songziren.comsongzixian.com
+sonhoo.comsonicmodel.net
soniu.net
+sonkwo.com
sonkwo.hksonnewilling.comsonoschina.com
+sontan.netsony.com sonyentertainmentnetwork.com
sooal.comsooauto.comsoocang.com
+sooele.com
+soofel.com
+soogif.comsoohaid.com
soojs.com
+soolou.net
+soolun.com
+soomal.com
+soonku.net
soonv.comsoonwill.com
+soonyo.com
+sooopu.com
+soopat.com
+soopay.net
+sooroo.comsooshong.com
+sooshu.netsoosmart.comsootmoor.com
+sootoo.comsootool.net
+sootuu.comsoovalve.com
+soovvi.com
+sooxue.comsooyisi.comsooyooj.com
+soozhu.comsoozhuozhou.comsopaidea.com
+sophgo.com
+sophgo.vip
sopowcore.netsoq.comsoqicrm.comsoqjrrc.comsoquano.comsorftime.comsoripan.net
sorswitch.com
+sos919.com
sosaf.com
sosdx.comsosg.net
+soship.com
+soshoo.comsoso.comsosobtc.comsosohaha.comsosoled.com
sosolight.com
+sosomp.com
+sosonc.comsosonsk.com
sosoo.net
sosoq.orgsosorank.comsososnap.com
sososteel.comsosotec.comsosoyunpan.com
+sosoyy.com
+sosuo.name
+sosyao.com
+sotake.comsotemall.comsothink.comsotongwang.com
+sotouv.com
sotoy.netsotu114.com
sotwm.comsou-yun.comsou.comsouaiche.com
+soucai.comsoucangjie.comsouche-fin.comsouche-inc.com
+souche.com
+soucod.com
+soudao.com
+soudoc.comsoudron.com
souduanzu.comsoueast-motor.comsouebao.comsoufang.com
+soufun.com
soufunimg.comsouge.cc
+souget.comsougu001.comsouho.cc
souho.net
+souidc.com
+souidc.orgsoukecheng.netsoukuyou.com
+soulapp.mesouldee.com
soulgame.mobisoulsky.net
+souluo.net
souluojie.com
souluopai.comsoulwonderland.comsound-force.comsoundai.infosoundconch.comsoundems.com
soundstay.comsoupan.info
soupf.net
+soupin.comsoupingguo.com
soupu.com
soupv.comsouqian.comsouqiu8.comsour-lemon.com
+zytang.netsource3g.comsourcecodecap.comsourcecodeserver.comsourcegcdn.comsourcelandchina.comsourl.co
+sousea.comsoushai.comsoushoubiao.com
+soushu.vip
+sousou.com
+sousou.pro
sousoudus.comsouthbeauty.comsouthbeautygroup.comsouthcn.comsouthei.comsouthernfund.comsouthgis.comsouthmoney.comsouthnews.cc
southnews.netsouthseagy.comsouthsurvey.com
southyule.comsoutiyun.comsoutu123.com
+soutudi.sosoutushenqi.com
souvr.com
+souwoo.com
souwuxing.com
+souxia.comsouxue8.com
souxw.com
souya.comsouyidai.comsouyoutu.comsouyue.mobi
+souyue.vipsouyunku.com
+sov2ex.com
+sovell.com
soven.com
+sowang.com
soweather.comsowellwell.com
sowin.comsowu.com
+soxsok.com
soxunwang.com
soyim.comsoyiyuan.comsoyohui.comsoyoung.comsoyouso.comsoyunion.comsoyx123.comsozdata.com
+sozhen.com
sozyb.com
+sozyx.shop sp.cc
sp168.comsp588.cc
sp588.net
sp888.net
sp910.com
space1688.comspacechina.com
+spacei.netspacemit.comspacesystech.comspanishknow.com
sparenode.comspark-page.comspark4y.comsparkeduapi.comsparkeducdn.comsparkgis.comsparkletour.com
+spasvo.comspawatervip.net
+spawor.comspay365.comspbo.comspbycdn.bizspbycdn.comspbycdn.infospcapsules.comspcdntip.comspcdntipbak.comspchotlunch.com
spcloudhw.com
spcloudhw.netspcywang.com
+spdbh5.comspdbuser.com
+spdcat.com
spdex.com
spdiy.com
spdiy.netspdl.comspdydns.comspdyidea.comspecialcdnstatus.com
spectreax.comspectreax.site
speechless.pw
speedcdns.comspeedcdns.info
speedcdns.orgspeedcdnsvip.comspeedin.shopspeednt.comspeedpdf.comspeedsz.netspeedws.comspeedws.infospeedws.orgspeedzonerc.comspeiyou.com
spfmc.comspforum.net
+spg-ls.comspgacmotorsc.com
spgcw.com
spghg.com
+spgnux.com
+spgykj.comsph00852.comsphkids.com
spibj.comspicescn.com
+spicgx.comspicgxnp.comspiedigitallibrary.orgspiiker.com
spin-view.comspirit-doll.netspirithy.comspischolar.com
+spjxcn.comsplaybow.comsplayer.workspldlkj.com
+splmcn.comspnchinaren.comspochikj.comspockker.comspoience.comspointdesign.com
spondemic.lolsportman.ccsportnanoapi.com
+sportq.comsports-100.comsports-idea.comsportsdt.comsposter.net
spot.download
spoto.netspotpear.comspouyashop.comspplnet.com
+spprec.comspr-atm.com
+sprayv.comspreton.comspring-mall.comspring4all.comspringairlines.com
springboot.iospringcocoon.comspringer.comspringerlink.comspringsunday.netspringtour.comsprixin.com
+sprzny.comspsb114.comspsy.org
sptcc.com
+sptccn.comspthome.com
+sptv-1.comspug.cc
spush.comspvtime.comspwj.comspyouxi.comspzs.comsq-newstar.com sq.cc
sq158.com
+sq1996.comsq23.com
sq521.com
sq523.com
sq580.com
sq581.com
sq688.comsqa-chn.com
sqage.com
+sqanju.comsqbaite.com
sqchunqiu.comsqdaily.comsqeatin.com
sqezz.com
sqfcw.com
sqfgc.com
+sqggzy.com
sqgwh.comsqis.com
+sqj888.comsqjk123.com
sqjrc.com
+sqjtcy.comsqkb.com
+sql110.com
+sqlpub.com
+sqlsec.com
+sqncsx.com
+sqngvd.com
sqphb.comsqpx.orgsqqmall.com
+sqqmtj.com
sqqnh.orgsqrc.netsqreader.com
sqrtthree.com
sqsjt.netsqstudio.comsquarecn.comsquarefong.comsquirtle-skfjkdl.comsqwenhua.com
+sqxrjg.com
sqyai.com
sqyhw.comsqzs.comsqzw.com
+sr-139.com
+sr0007.comsrcb.com
+srcbcz.comsrcgsre.com
+srcmsh.comsrcqeece.comsre.ink
srell.com
srfip.comsrgnmsrg.com
srgow.comsrichina.orgsritsoft.com
srjai.icu
srmwc.com
srqgz.com
srrsh.com
+srrtvu.com
srsq.club
+srt365.com
+srtljs.com
+srtong.comsrun.com
+srvbus.com
srw00.comsrworld.netsrx3.net
srxww.com
srxzc.com
srxzz.comsrzc.com
srzdq.com
+srzxjt.com
+ss-ceo.comss-smartech.comss03.net
+ss2007.com
ss8899888.com
ss998.com
ssalegs.store
ssaxx.com
ssaya.win
+ssbbww.comssbgzzs.com
ssbjf.comssbx.messby.cc
+ssby66.com
sscha.comsschengtou.com
+sscity.org
sscms.com
+sscmwl.com
sscom.vip
ssctp.comsscy.net
+ssdata.com
ssdax.comssdfans.comssdp.com
ssdzg.comsseinfo.com
+ssf.cc
ssfei.com
+ssgeek.com
ssggg.comssgushi.com
ssidc.net
ssidc.orgssine.cc
ssine.ink
+ssipex.com
ssish.comssixvo9gaybkp5.com
ssj8c.com
+ssjjss.com
+ssjjtt.comssjlicai.com
+ssjytc.comsskc360.com
sskoo.comssky123.com
ssl-zs.cc
+sslaaa.com
+sslawy.comsslceshi.comsslchaoshi.comsslchina.comsslcity.com
+ssldun.com
+ssldun.vip
+ssleye.com
sslibrary.comsslnode.com
ssmec.comssmedic.com
+ssmeow.com
ssnewyork.comssnuo-ch.comssofair.com
+ssoffo.com
+ssoouu.com
ssp86.com
+sspaas.com
sspai.comsspai.me
sspeeddns.comsspjizb.comssports.comssports.net
ssqgx.com
ssqzj.com
+ssrcdn.com
ssrcr.comssreader.com
+ssrlzy.net
+ssscdn.com
sssch.net
+ssslgs.com
+sssmro.com
sssmy.comssso.com
+sssyyy.com
+sst-ic.com
+sst-sd.comsswater.comsswchina.comsswl315.com
+sswlfs.comssws.tvssxcycy.comssxf.net
ssxjd.comssxpxjt.com
ssxx.site
ssxxp.com
ssyar.com
ssydt.com
ssyer.com
+ssyssf.comssytnet.com
ssywh.com
+ssyxlx.comssyxmall.com
ssyzx.net
+sszgit.com
sszhg.com
+sszjnc.comsszsj.cc
+ssztcm.comsszxiangce.comst-recovery.com
st001.comst12121.net
st123.com
st180.com
stackboom.xinstackcc.comstackoom.comstackoverflow.clubstackoverflow.wikistage1st.comstage3rd.com
stajy.com
+stanbt.comstandard-groups.comstandardshop.net
standteam.netstanlyview.comstaofchina.comstar1024.comstar365.com
star7game.comstar7th.comstarbaby.ccstarbaby.comstarbaysoft.comstardata360.com
+starde.netstardict.orgstardoctor.comstardust2000.com
starduster.mestarfishcloud.comstarfivetech.com
starhalo.mobi
staringos.comstarislatinik.comstarkai.comstarlakelab.comstarmily.comstarming.comstarooo.comstarpainters.netstarpiao.comstarportuniform.shop
starrails.comstarrockinvest.comstarrtc.com
starrydyn.com
starryfrp.comstarrysurvey.comstars-one.sitestarschina.comstarschinalive.comstarsharbor.comstarsino.comstarsmicrosystem.comstarsshine1.comstarsshine2.comstarssr.comstarstech.ccstarswar.orgzyt8.comzystarlink.comstartcarlife.comstartech.ltdstarting2000.comstartogether1.comstartos.comstartos.orgstartssl.comstartup-partner.comstarwarschina.comstarway.netstarx-w.comstarxiiient.com
+starxn.comstat-nba.com
+stat18.com
zysljhslt.com
static163.netstaticaa.comstaticdn.netstaticec.comstaticfile.netstaticfile.orgstatickksmg.com
+statics.cc
staticsoe.comstaticsoem.comstaticswin.com
+zyskys.comstatsinstall.xyzstatuslarkoffice.comstay-bullish.comstaybrowser.com
+staycu.comstbieshu.comstc2002.comstcaimcu.comstcfile.com
+stcmcu.comstcmcudata.comstcn.comstcy168.comstdaily.com
+stdard.com
stdicloud.comstdlibrary.com
+stdout.pub
stdwp.com
steambang.comsteambig.com
steamboxs.comsteamcn.comsteamdd.comsteamhost.infosteampp.netsteamproxy.netsteampy.comsteamrepcn.comsteamxdf.comstec.netsteelphone.comsteelsearcher.com
stefg.orgstegameskins.comstellarplayer.comstep-by-step.techstevelanasa.com
+stfile.comstgiantfilms.comsthchem.comsthforme.com
+sthifi.com
sthke.comsticksgame.com
stjinguan.com
stjyy.com
stklt.comstmaoyi.com
+stmbuy.comstmjsociety.com
+stmybj.comstnn.cc
stnts.comstnye.ccstockhn.com
stockstar.comstockwei.comstointl.com
stojf.comstoltlondon.comstone139.comstone168.comstonebtb.comstonebuy.comstoneios.comstoneleague.comstoneo2o.com
stonepoll.com
stonepoll.net
stoneread.comstonescloud.comstonesm.com
+stoneu.comstonexp.comstor-age.com
zys6d.comstoragesemicon.comstoreapi.netstorkapp.me
stormorai.comstory520.comstoryboardworld.comstoryren.comstourweb.comstourweb.netstovol.clubstoyard.comstozxmveui4pvr.com
stpos.net
+str-mo.comstraitchain.comstray-soul.comstreamaxtech.comstreamcomputing.comstreamlakeapi.comstreffy.comstrong-study.comstrongfc.com
strongled.com
+stswjx.com
+stszcm.com
sttcq.com
sttry.com
stu-works.comstubbornhuang.com
studa.net
studencis.comstudentboss.comstudioartiz.comstudiozecevic.comstudy-cloud.comstudy163.comstudyez.comstudyfr.netstudyget.comstudygolang.comstudyingtours.comstudyjamscn.comstudyll.comstudypay.com
studytime.xin
studyuser.comstudyvip.comstuhome.net
+stuhui.com
stuky.net
stuliving.com
stuln.comstunnel.vipstupid77.comstupidet.comstuq.comsturgeonnews.comsturmdcp.comstutimes.comstvgame.com
stvue.comstwoodproduct.com
stxsw.comstyadmin.com
stylar.hkstylecdn.comstylechina.comstylecho.com
stylefanr.org
stylemode.comstyles-sys.com
+stymqd.xyz
styuanhua.comstz8.comsu-jiao.comsu-long.com
suaee.com
suan5.comsuanbanyun.com
suanchang.comsuandao.comsuanfazu.com
suanguaju.comsuanjuzi.com
suanlitou.comsuanpin.com
suansheng.comsuansjq.com
+suanst.comsuansuangua.com
+suanya.comsuapp.me
+suawin.com
subangjia.comsubaonet.comsubaoxw.comsubingkang.comsubinwechat.comsubline.orgsubo.net
subom.net
+subond.com
subuy.com
sucai.comsucai123.comsucai77.comsucai999.comsucaibar.comsucaidao.comsucaifu.comsucaijiaxiao.comsucaijishi.comsucainiu.com
sucaiplus.comsucaisucai.com
+sucaitu.cc
+sucaiw.com
such-game.comsuchasplus.comsuchengmeizhan.com
suchz.com
sucop.comsucoupon.comsudaizhijia.com
+sudaoa.comsudasuta.com
suddenfix.com
+sudduo.comsudoinfotech.com
sudu-67ph.com
sudu-72ub.com
sudu-ab6h.com
sudu-by4e.com
sudu-du9k.com
sudu-kay6.com
sudu-me6n.com
sudu-pq2y.com
sudu-q6wk.com
sudu-r8gh.com
sudu-sq56.com
sudu-tf42.com
sudu-xu9b.com
sudu-y94k.comsudu123.netsuducha.com
+sududa.com
sudun.comsuduncdn.com
sudupower.netsudusite.com
+suease.com
sueon.comsufangxu.comsufeinet.com
+sufont.com
+sugaov.comsugarall365.comsugarforex.comsugarguo.comsugarle.comsugessofficial.com
sugon.com
sugou.com
suhaodian.com
+suhedj.com
+suhedz.comsuhergroup.comsuhongzhan.comsuhuibao.comsuhuikj.com
suhuishou.comsui.comsuibao-jiaozhu.com
+suibao.com
suibianla.comsuibiji.comsuiji123.comsuijunlaowu.com
suilengea.comsuileyoo.comsuinikan.comsuiningwang.comsuiniyi.comsuiqiao.com
+suirui.comsuishenyun.net
suishouji.comsuishouxie.com
suishouzj.comsuisuihu.comsuisuijiang.comsuitaichem.comsuixianwang.netsuixin8.com
suixinfei.icusuixingpay.comsuixinzulin.comsuixkan.com
suixw.com
suiyan.ccsuiyichong.comsuiyiju.comsuiyuanjian.comsuiyueyule.comsuizhoushi.com
+suizui.netsujh.net
sujhk.comsujia.ccsujiao1668.comsujx.netsukeler.comsukeyun.com
suki.clubsuki.moe
sukiu.net
+sukkaw.comsukoshi.xyzsukoutu.com
sukvm.com
+sulabs.netsulandscape.comsuleapi.comsuliaodingzhi.comsulitui.com
+suloon.comsulphak.com
suluf.comsumaart.comsumaarts.comsumatang.comsumavision.com
+sumedu.com
+sumeme.com
+sumer.worksumgotea.com
+sumian.comsumibuy.comsumiler.com
+sumkoo.com
+sumkoo.net
sumly.netsummall.comsummeng.comsummercampschina.comsummerlight.namesummit-ceramics.com
+sumoon.comsumrday.netsumscope.com
sumzc.com
sumzi.comsun-ada.net
+sun-kd.comsun-wish.comsun0769.com
sun0769ns.comsun0816.com
sun66.net
+sunaas.comsunacctg.comsunalytools.comsunari17.com
sunbl.com
sunbloger.com
sunbo.comsunbo367.comsunborngame.comsunbowhospital.comsunboxsoft.comsunboyu.com
+suncco.comsuncereltd.com
sund.site
+sundan.com
+sundns.comsundray.com
+sunear.netsunease.netsuner.ccsunergyworks.com
sunfounder.ccsunfront.com
sunft.comsungainyeast.comsungari1995.com
sungesoft.comsungine.comsunglassesandgoggles.comsungoal.orgsungoedu.comsungshu.comsunguoqi.com
+sunhan.vipsunhante.comsunhongs.comsunhuhotel.comsunhwee.com
+suninf.netsuninfo.com
+suning.comsuningbank.com
suningcdn.com
suningcdn.netsuningcloud.com
suningdns.com
suningdns.netsuningestate.comsuninggslb.netsuningholdings.comsuninghotel.comsuningmail.com
suningpay.comsuningyunyou.comsunjianjian.com
sunjs.comsunkeydata.comsunland.vipsunlands.comsunlandstudy.comsunlandvip.com
sunlandzk.comsunlife-everbright.comsunlight-tech.comsunlogin.comsunlogin.netsunlons.comsunlordinc.comsunlune.com
sunmi.comsunmingxia.comsunmnet.comsunmoonepe.comsunny90.com
sunnyaiot.comsunnychina.comsunnyfly.comsunnyhf.comsunnylawyer.comsunnyos.comsunnyqi.com
sunnysemi.comsunnyxx.com
sunocean.lifesunofbeaches.comsunonln.com
+sunowo.comsunpala.com
+sunpcm.com
+sunpma.com
+sunpun.comsunray2000.comsunrisedutyfree.comsunrisenan.com
+sunrtb.com
sunseeyou.comsunsetcare-mirrortech.com
sunsharer.com
+sunshe.comsunshine-power.netsunshinecoasthomesearch.comsunstarasia.comsunstateactivist.org
+sunstu.comsuntimehousehold.com
suntop168.comsuntray.com
suntrayoa.comsunup3d.comsunupcg.comsunus-china.comsunwatt.comsunwayworld.comsunweihu.com
sunweiwei.comsunwin2001.comsunwinon.com
sunwk.funsunwoda.com
sunwy.orgsunxiaoning.com
sunxinfei.comsunxisc.comsunyansong.com
+sunyea.com
+sunyet.comsunyingchao.comsunyoads.comsunyongfeng.com
+sunywo.comsunzhongwei.com
+suo.imsuobao8.comsuobifa.com
+suobuy.comsuodaozl.comsuofeiya.comsuofeiyashop.com
suoge.net
+suokao.com
suoluomei.comsuopingbao.comsuosihulian.comsuoxin5.comsuoyiren.comsupcname.comsupcompute.com
+supcon.com
+supdri.comsupeeder.com
supei.comsuper-king.netsuper-mt.comsuperace.comsuperaicdn.comsuperayi.comsuperbed.ccsuperboss.ccsuperbrowser.hksuperbuy.com
superbuyy.comsupercachenet.comsupercachenode.com
supercell.comsupercodepower.comsupercopy2020.comsupercrm.comsuperfix.com
supergslb.comsuperhcloud.comsuperiorscope.comsuperjq.comsuperlib.comsuperlib.netsuperlink.mobisuperlitetech.comsupermap.comsupermap.iosupermapcloud.comsupermapol.com
supernode.prosuperpb.comsuperpowercn.comsuperqq.comsupersharket.comsuperslide2.comsupersocket.netsupertracker.netsupervisionus.comsuperyd.comsuperzl.comsupesite.comsupesoft.com
supet.comsuplaymart.comsupmeter.com
+supmil.com
+supmil.net
+supoin.com
+supool.com
supor.comsupplierlist.comzyrykbiandao.com
supuvalve.com
supwk.com
suqian360.com
suqicloud.comsuqishi.com
suqnn.comsurely.coolsuremotoo.site
+surerp.com"surfacetreatmenttechnology.com
+surfcg.comsurgerycast.comsurprising.studio
+sursen.comsursenelec.comsursung.comsurtime.comsuruicloud.comsurvey-y.comsurvey.worksurveyhills.com
surveyrtk.comsurveyunion.comsurvivor99.comsusanguitar.comsuseage.comsushiyanglao.comsusong51.com
susongbbs.com
+susoul.com
+susudm.com
sute.lifesuteidc.com
sutune.me
suuny0826.com
+suv666.comsuxiazai.comsuxieban.comsuxiege.com
suxing.mesuyuantuliao.com
suyuening.comsuyugame.comsuyujoy.com
suyun.netsuyutech.comsuzhoubank.comsuzhouds.comsuzhoufashion.comsuzhoujicai.comsuzhoulida.comsuzhousj.com
suzip.comsuzuki-china.comsuzuki-shanghai.com
suzwy.comsvconcloud.com
+sve.cc
svell.net
svenhetin.com
+svfrrg.comsvimeng.com
svinsight.com
+svip15.com
+svip51.comsvipduihuan.comsvk3o97xmyid93.com
svlik.comsvmxxaq.com
+svn999.com
svnbucket.comsvnspot.comsvp6.comsvqsokp.comsvsonia.comsvw-volkswagen.com
svwuc.comsw-bllp.com
+sw0013.com
+sw2008.com
sw996.com
+swaeab.comswakopuranium.comswan366.comswanchemical.com
+swang8.comswangwx.com
+swanhub.co
+swaqds.com
+swarma.net
+swarma.org
+swatou.com
+swbbsc.comswchina.orgsweet-data.comsweetalkos.comsweetdan.comsweetjing.ccsweetlove.ccsweetmartmarketing.com
sweetread.netsweetrouble.comsweetystory.comswfc-shanghai.com
swg36.comswgocean.com
swgzs.comswhydyj.com
+swhysc.comswift51.com
swifthumb.com
swiftjava.comswiftlet.net
+swijoy.comswirebev.com
+swisdom.ccswissbestwatch.comswissclonewatches.comswissgenie.comswissluxreplica.comswissrepicass.comswissreplicamall.comswissreplicaonline.comswissreplicas.ccswisswatcheshot.comswisswatchesstore.comswisswatchx.comswit-battery.com
switchb2b.comswitchxiazai.comswitzerland-visacenter.comswjjshfw.com
swjoy.comswkedou.com
+swkong.com
+swldbj.comswliuxue.comswltools.comswlz.netswofcare.com
swomc.net
+swoole.comswordair.comswordart.onlineswordofmorning.comswordtt.comswotbbs.comswq242xc54.comswrtxtb.com
swsbw.comswsm.net
swsmu.com
+swstsg.comswt0.com
swtpu.com
zyrmw.comswwlotus.comswwy.comswxk.cc
+swxxvr.com
swyun.netswzx.comsx-merryland.comsx-moen.com
sx-sw.com
+sx1211.com
sx189.com
sx267.comsx311.cc
sxafz.com
sxaqr.com
+sxbada.com
+sxbang.net
+sxbawy.com
+sxbest.com
sxccb.comsxcd-gyl.comsxchangshengjt.com
+sxcits.com
+sxcjys.comsxclassiclighting.comsxcm.net
+sxcntv.com
sxctf.comsxcxldjy.com
+sxcyts.com
+sxcywy.com
+sxczdz.com
+sxd408.com
sxdkj.com
+sxdrkx.comsxds.comsxdygbjy.com
sxdym.comsxdz029.com
+sxdzyp.com
sxepc.comsxfoundation.comsxfu.orgsxfyjzzs.com
+sxgdtv.com
+sxggzp.com
sxgjq.com
+sxglpx.com
sxgoo.comsxgq.netsxgs.com
+sxgwyw.org
sxh3k.app
sxhbjtshj.comsxhimalayanqd.comsxhiway.com
+sxhlcc.com
+sxhlxy.comsxhm.com
+sxhtss.com
+sxhwls.comsxhxbank.com
+sxinrj.com
sxisa.org
+sxjagc.com
+sxjdpm.comsxjf8789.com
+sxjh88.comsxjhzsgc.comsxjinfengjiuye.comsxjtyhjt.comsxjwlkj.com
+sxjybk.comsxjzxww.com
+sxkzxt.com
+sxlcdn.com
+sxldns.com
+sxlfwl.com
sxlkb.comsxls.com
+sxltsj.com
sxluxiang.comsxlynykj.com
+sxmaps.com
+sxmxwh.com
sxmyh.com
sxncb.com
sxneb.com
+sxnfss.com
sxnxl.comsxnxxny.com
+sxnycl.comsxol.com
sxpdk.com
sxplc.com
sxpmg.comsxpmpos.com
+sxprgc.com
sxpta.com
+sxpyzg.com
+sxpyzx.comsxrb.com
sxrbw.com
+sxrczx.comsxrekord.comsxrszdh.com
sxrtv.com
+sxsapi.comsxsfdxylsyzx.com
sxsgs.com
sxsim.com
+sxsimg.com
+sxsjgy.comsxslnews.com
sxsng.com
+sxsoft.com
+sxsohu.com
+sxsqxj.com
+sxsslz.net
+sxssyh.com
+sxstdl.com
sxszw.netsxtianjian.com
+sxtppm.com
+sxtqsl.com
sxtv6.com
sxtvs.comsxtybook.com
+sxudqg.comsxuyr2nx.comsxwao4zi6dgp.comsxwbedu.com
sxwbs.comsxwlyhzp.comsxworker.com
+sxwpyx.com
+sxwrsa.orgsxwstcm.comsxwtdyd.comsxww.com
+sxxdll.comsxxl.comsxxsmjh.comsxxt.netsxxtong.comsxxw.net
+sxxyfw.comsxxynews.comsxy7.comsxyckjr.com
+sxycpc.com
+sxycrb.comsxyiyuands.comsxyj.net
+sxyrxb.comsxzb.appsxzhaobiao.comsxzlycl.com
+sxzlyy.comsxzq.com
+sxzydj.comsxzzdxsc.comsy-game.comsy-home.com
sy118.comsy12306.comsy12328.comsy1z.comsy2k.comsy3.com
sy4512345.comsy76.comsybaolaijie.com
sybasebbs.comsyberos.comsybj.com
+sybkxx.com
+sybxjn.com
+sybygx.comsyc738gtwihc2.com
sycaijing.com
sycbq.pet
+sycdtz.comsychlon.com
+sycxzx.netsydaxxw.com
+sydcch.comsydcdjt.com
+sydfty.com
+sydimg.com
+sydjwl.comsydkidsedu.com
sydw8.com
+sydxdl.comsyeg-ev.comsyf.inksyfabiao.comsyfb2021.comsyfly007.comsyfw.com
+syg315.com
+sygcjs.comsygd.com
+syglyg.com
+sygnew.comsyh9961.com
+syhccs.comsyhfxsh.comsyhhidc.com
+syhhkj.comsyhl.vipsyhsfzl.com
+syhzdj.net
+syhzml.com
syhzx.com
+syhzzf.com
+syiptv.com
+syitgz.com
syjiancai.comsyjiaotong.mobisyjkqzw.com
+syjtzm.com
+syjyzl.comsyjzedu.com
sykezheng.com
+sykfff.com
+sykong.comsykt520.comsylc.xyzsylixos.comsylm.xyz
+sylnst.com
+sylnyx.com
+symama.comsymf-crm.com
symtc.com
+syn029.comsynball.comsync.shsyncedoffplanet.comsynjones.comsynjones.netsynnchem.comsynochip.comsynology-cn.com
+syntao.com
+synyan.net
+synykj.net
syobserve.com
+syoits.com
+syoker.comsyoogame.com
+syoseo.com
+syoucn.comsyounggroup.comsypglass.com
+sypole.com
+sypost.com
sypvm.comsyr-sce.com
syrcb.netsyreads.comsyrecovery.com
+syrhkj.comsyrkkxc.comsys-ele.com
+sys321.com
syscan360.com
syscan360.net
syscan360.org
+sysceo.com
+sysceo.net
+syscxp.com
sysdyy120.comsysengi.comsyshell.comsyshospital.comsyshospital.orgsyshosts.net
+syshut.com
+sysjnl.comsyslthe.comsysmaster.onlinesysmini.comsysmk120.com
+sysnlt.comsysokean.comsysrsksy.comsysshine.comsystoon.com
+sysush.comsysutest.xyz
+sysuyz.com
sysx.tech
+sysxhz.comsysyhfj.comsysysjnk.comsyt1000.comsyt77777.com
+sytcke.com
sythealth.com
+sytjcc.comsyttgame.com
+sytuku.com
syuan.com
syuan.netsyue.comsywg.com
sywgy.com
+sywtqc.com
+syx-ac.comsyxb.comsyxjjsw.comsyxlgame.comsyxw.xyzsyxwang.comsyxwnet.com
+syyan.site
+syygjs.com
syyjs.com
+syylfh.com
+syyqls.com
syys.cafesyyx.com
+syyy99.com
syyyd.comsyyyking.com
+syyykj.xyzsyyzhpc.comsyzdhyb.com
+syzlzz.comsyzoukan.com
syzsgroup.comsyzswlw.com
sz-3a.comsz-baile.com
+sz-bst.com
+sz-byg.comsz-cerberus.comsz-changfeng.comsz-coin.comsz-czzc.com
+sz-dfl.com
+sz-dns.netsz-ebest.comsz-edsy.com
+sz-ekl.comsz-etong.com
+sz-hzt.com
+sz-jlc.comsz-kaito.comsz-lcsc.com
+sz-mtr.comsz-news.comsz-osckj.comsz-printing.com
+sz-skt.comsz-sunrise.com
sz-sunway.comsz-tianmai.comsz-trip.com
sz-ua.comsz-xshg.comsz-yian.com
+sz-ytq.comsz-zhenghe.comsz002329.com
sz121.com
sz189.com
+sz1905.com
+sz1978.com
+sz2048.com
sz240.com
sz315.org
+sz5156.com
+sz5983.comsz61.comsz7h.com
sz836.com
sz886.com
+szaccl.com
szadf.com
+szadna.net
+szadst.com
+szaeia.comszagera.com
szaiaitie.com
+szaima.com
szairport.comszaisino.comszaiten.comszaixian.com
+szajsj.com
+szande.comszaojin.comszas.comszastcg.comszaudio.comszaudio.netszautism.comszbaicao.comszbaoly.com
szbaoming.com
szbbs.orgszbcase.comszbcfurniture.com
+szbdyd.comszbeilu.comszbeilu888.comszbelle.com
szbiu.com
+szbnrj.com
szboruien.comszboyoo.com
+szbryq.com
+szbubu.com
+szbwgy.com
szbym.com
+szc-ic.comszc.comszca.comszcatic.com
+szcfyi.com
szchengli.comszclbxf.com
+szclmd.comszclxzx.com
szcno.com
+szcogo.com
szcompare.comszcp.com
+szcsot.com
+szcssx.com
+szctkj.netszcttlab.com
+szctyx.com
szcua.orgszcw.com
+szcwdz.comszcxjscl.comszcy-fintech.com
+szcy99.com
+szczjy.comszczkjgs.comszdaily.comszdc.org
+szdcjd.com
+szddns.netszdesigncenter.orgszdiantu.comszdiyibo.com
+szdljt.comszdlsjj.comszdn1ms.com
+szdrse.comszds.comszdunan.netszdx189.com
+szdxjf.com
+szdyx8.comszdz123.com
+szeant.com
szeastroc.comszeasyin.comszed.com
szedu.net
szeeg.comszeholiday.comszelanpo.comszelight.comszesens.comszfa.com
szfachina.orgszfangzhouhd.com
+szfcol.comszfengtu88.com
+szffmr.comszfg.netszfinee.com
szfjt.com
+szfolo.comszforter.com
szfty.netszfutong.comszfw.org
+szfwzl.comszfx.com
+szfyhd.com
+szfyzb.comszgalaxy.com
szgcc.com
+szggzy.com
+szghgw.com
szgky.com
szgla.comszguanai.comszguante.com
+szgwsd.com
+szgymz.com
+szgztg.comszhailan.comszhb.org
szhbs.netszhdyic.comszhetai.com
+szhfwd.com
szhgh.com
+szhhdy.comszhightondz.comszhiross.comszhk.comszhkhui.comszhlodz.com
+szhlsg.com
+szhmjp.comszhmkeji.com
+szhome.com
szhomeimg.com
szhongshe.com
szhot.com
szhrh.comszhsztdcgs.com
+szhtbs.com
szhtp.comszhuace.comszhubei.comszhuhang.comszhulian.comszhulian.net
+szhwad.comszhytrip.com
+szhzsd.com
+szhzzl.com
szicc.net
+szider.comszisland.comszitcare.comszjawest.comszjbz.ccszjcyyy.comszjhxjt.comszjianan.com
szjiazhao.comszjiexikeji.comszjinhuanyu.comszjinke.com
+szjkhd.com
szjkp.com
+szjlkt.comszjlwul.com
+szjtfw.com
szjuhaozn.comszjunfei.comszjunlin.com
szjunrong.comszjuquan.comszjydzkj.com
+szjyos.com
szjys1888.com
+szjytx.com
szjyxtech.com
+szkeda.comszkegao.net
szkingdom.comszkjcyy.com
szknk.net
+szknys.com
szkoa.comszkosun.com
+szl724.comszlaituo.comszlande.com
szlangwei.comszlaomouzi.com
szlc9.com
+szlcsc.com
+szlcwy.com
+szldcc.com
+szlddb.com
+szldzb.comszledia.orgszleezen.comszlgzxyy.comszlhtram.comszlianxu.comszlianya.netszlightlink.comszlihuam.comszlilun.comszline9.comszlinglewangluo.comszlingsheng.com
+szlnxh.com
szlos.com
szlottery.orgszltech.com
+szltlh.comszltwlw.comszluxon.comszlvbarcode.comszlwtech.comszlxl100.com
szlyi.com
+szlzsd.comszmadigi.comszmagellan.com
+szmall.com
+szmama.com
+szmama.netszmc.net
+szmctc.com
+szmdzb.com
szmegaink.comszmengqukj.comszmhthb.com
szmil.com
szmjd.comszmjlcd.com
+szmrcd.com
szmslaser.comszmtxny.com
+szmtzc.comszmuseum.com
+szmwzs.comszmynet.comszmywin.com
+szmyxc.com
+szn360.com
sznaibeng.com
+sznews.com
+sznffc.com
+sznfwt.netszniego.comszniushi.comszniute.com
+sznnhg.comszns-marathon.comszny189.com
+sznyfz.com
szobk.comszol.net
+szolxd.comszonline.net
szouqi.online
szp15.com
+szp168.comszpa.com
+szpckj.comszpclab.comszpengfa.net
szpgm.com
+szpiao.comszpiaoyi.com
+szpldq.net
+szpllp.com
szpmi.orgszpowerpms.comszps1688.com
+szputy.com
szpxe.com
szqcz.comszqf.org
szqinyuan.com
szqp.site
szqsq.comszqt.netszquanli.com
szqyw.net
+szqzsd.com
+szrcfw.com
+szrfdq.comszrfstar.com
+szrrjc.com
+szrswj.comszrtcpa.com
szrunning.com
szryc.comszrzxfpc.com
+szs189.com
szsailong.comszsaiwei.comszsamtek.comszsangbo.com
+szschj.com
szsci.netszscree.com
+szsczb.com
+szsczx.comszseafoodexpo.com
szseasons.com
+szsfgc.comszshequ.orgszshtjm.comszshuori.com
szsia.com
+szsing.comszsjhts.comszsjjgy.comszsjtjj.comszsjxxpt.com
szsky.comszslhssy.com
szsmk.com
+szsmyg.comszsnking.com
szsoa.org
+szsptk.comszsq.net
+szstar.comszsunlaser.comszsupvan.comszsyqcn.com
sztaijier.com
+sztakj.comsztalent.orgsztanzo.com
+sztara.comsztd123.comszte.com
+sztgxx.comszthekey.com
+szthxf.com
+sztino.com
sztkc.com
+sztmjz.comsztopbrand.com
+sztspi.comsztxcpa.com
+sztxsz.com
sztxw.com
+sztzzs.comszuavia.orgszunionlab.com
szvca.com
szvft.comszvi-bo.comszvsdpco.comszwaishi.comszwanghong.com
+szwata.comszwb.com
+szwblm.com
+szwchy.com
+szwego.comszweijubao.comszweita.com
+szwfzs.comszwgroup.com
+szwhxy.com
szwongkei.com
+szword.comszwstui.com
+szwtsd.comszwuyukeji.com
+szwwco.com
+szxbyx.comszxcxkf.com
+szxdhj.comszxfgcw119.com
+szxhdz.com
+szxihu.comszxijili.comszxinghe.netszxinjiaxin.comszxinjicheng.comszxinst.comszxinyixin.com
+szxiot.com
+szxlga.com
+szxljc.comszxlxzb.comszxsdmy.comszxsshb.com
szxuexiao.com
szxuw.com
szxxj.com
+szxxtx.com
+szxyfc.com
+szxyjd.com
szxyxbkle.comszyakeda.comszyansai.com
+szycil.com
+szyfai.com
+szyfdz.netszygcgpt.com
+szyhoa.comszyibei.comszyichengjd.com
szyin.comszyinglian.comszyingzhan.com
+szyink.comszyixiu.net
+szyixx.comszyjedu.com
+szyljt.comszymweb.com
szyns.com
+szypfb.com
+szyran.comszysmpay.comszyuda88.com
+szyxue.comszyxwdz.comszyxwkj.comszyy0373.com
+szyyda.com
szyyt.com
szyyx.com
+szzbmy.comszzfgjj.comszzh365.comszzhangchu.comszzhaodaxin.comszzhsponge.comszzhuoju.com
+szzmny.com
+szzoan.comszzs360.comszzunbao.comszzuting.com
+szzxks.net
+szzyqc.net
+szzyqy.comszzywxkj.com
+t-biao.comt-d.chat
+t-d.tv
t-firefly.com
+t-gafa.comt-io.orgt-t.livet-v.com t.bizt.ttt00ls.cc
t00ls.nett00y.comt086.com
+t1.inkt10.comt105.comt12.com
+t123yh.xyzt13wj496d.shop
+t1an.cloudt1networks.comt1y4.comt1y5.com
+t20000.comt2audio.nett2cn.com
+t2rswy.com
t3315.comt4x3.comt4z5p5s9k4q3m4h4m3.orgt5.workt528.com
t5542.comt56.net
t56jy.nett5a9.comt5tm.comt5xs.comt66.comt6q.com
t79d6.com
t7rt5.com
+t7z.cct85.nett8703hd304.comt888.net
t888w.comt8f.com
+t8tcdn.comt9in.comta26.com
taaas.org
+taagoo.com
+tabalt.nettabbypro.com
tabbywork.comtableauxmly.comtabxexplorer.comtachangxing.com
+tacpvc.com
+tactan.net
+tadgkj.com
+tadsn.sitetadu.com
+taeapp.com
taeee.com
+tag.ggtagen-pm.comtaglyst.com
+tagoo.club
+tagphi.nettaguage.comtaguxdesign.com
+taheta.ren
tahua.net
tai-liang.comtai1000.comtai3399.com
tai87.com
taian.comtaianjingdong.comtaianmedia.com
taiantang.net
taibumall.comtaicent.comtaichi-graphics.comtaichi-maker.comtaichyfood.com
taici.com
taicihome.comtaicike.comtaida100.com
+taidao.net
+taidic.nettaidichina.com
taidu.com
+taifua.comtaig.comtaigaoxiao.comtaihaikj.com
taihainet.comtaihaocn.com
taihe.comtaihealthcare.comtaihecap.comtaihehospital.comtaihemedia.comtaihuawj.comtaihuoniao.com
taihuwang.com
taihuyuan.com
taiji.comtaijiny.com
+taijio.comtaijutv.com
taikancnc.comtaikang.comtaikang100.comtaikanginv.comtaikangjsnc.comtaikanglife.comtaikanglife.nettaikangonline.comtaikangonline.net
taikangph.comtaikangzhijia.comtaikeji.comtaikewei.comtaikongmedia.com
taikr.com
taillkang.comtaimi100.comtainengchong.com
taiorient.com
taiqigame.com
tairui-ad.comtairuixing.com
tais3.comtaisantech.comtaishangshiwu.com
taishanxq.comtaisuyun.comtaitaisf.comtaiwandao.tw
taiwu.comtaixi.cctaixingren.com
+taixsw.comtaixuguoji.comtaiyang888.comtaiyangd.comtaiyanghttp.com
taiyangpo.com
taiyin117.com
taiyiplus.com
taiyulink.comtaizibao.comtajd.net
+tajdny.com
+takfat.comtakumi-cnc.com
takungpao.comtakwang.nettaladapp.comtalbrain.comtalebase.comtalentable.com
talentlin.com
talentran.comtalents-tech.comtalentsmag.comtalicai.comtaliove.comtaljdns.comtalk-fun.comtalk.ai
+talkgw.comtalkingchina.comtalklee.com
+talkop.comtalkwithtrend.com
+talkxj.comtalkyun.comtalldns.comtalldns.net
talmdhome.com
taluo.com
+taluo5.comtaluoji.comtalzjsj.comtamaegis.comtamarace.comtamayaki.com
tamc8.comtamersunion.net
tamigroup.com
tamll.comtan-gtr.com
+tan.cc
tan07.com
tan14.nettan8.com
+tanapk.com
tanbao178.comtanbaoe.comtanbj7wflr.com
+tanbo.name
+tancdn.comtanchinese.comtandaenergy.comtandehao.comtandfonline.comtanewmaterial.comtang-lei.com
+tang23.comtanganlingshi.comtangbolitangci.comtangchendoor.com
tangdaoya.comtangdou.comtangdoufdn.comtangdouhdn.comtangdouimg.comtangeche.com
tanggu11g.comtangguanchuanmei.comtangguoxian.com
tanghushi.com
+tangjie.metangkabj.comtanglei.nametanglib.com
+tangmi.nettangobrowser.net
tangongye.comtangping.comtangqingtuia1.com
tangrenjv.comtangruiqian.comtangsanshu.comtangshijun.comtangshuang.nettangshui.nettangsongys.comtangsuanradio.comtangtang.orgtanguan.net
+tangux.comtangxia.xintangxuansite.com
tangyeedu.comtangyoufushi.funtangzhuan666.comtanhaibo.net
tanho.comtanjiyongjun.comtankeai.com
+tankmm.comtankprint.onlinetanksuv.comtankywoo.comtanling.comtanluxia.com
+tanma.tech
+tanmer.comtanmizhi.comtanpaifang.comtanpoqiuer.com
tanrd.comtanshudata.comtansoole.com
tantanapp.com
tantu.com
+tantu.info
+tantuw.com
+tanwan.com
tanwan123.nettanweime.comtanwuapp.comtanxingfuli.com
tanxinyu.workzyrj.org
tanxuling.com
+tanyu.mobi
tanyuan.spacetanyuantech.comtao-jiujiu.comtao-star.comtao-studio.net
+tao-wu.com
tao-yibao.com
+tao008.comtao1.co
+tao123.com
+tao168.com
+tao800.comtao8090.comtaoa.com
+taoart.com
00563.comtaobao-img.com
+taobao.com
taobao.global
+taobao.net
+taobao.org
taobao.twtaobao1111.comtaobao123.metaobao92.com
taobaocdn.com
taobaocdn.nettaobaocity.comtaobaotest.comtaobaotesting.com
taobeihai.com
taobiaozu.comtaobizhong.com
taobz.comtaoc.cctaocange.com
+taoche.com
taocheche.com
taoci.comtaocibao.com
taocloudx.com
taocz.comtaodabai.comtaodake.comtaodang8.comtaodaso.comtaodaxiang.comtaodianjia.comtaodiantong.com
taodiqupu.comtaodocs.com
taodu.com
+taodudu.cctaoduoke.comtaodushi.cctaofang.comtaofanghaiju.comtaofen8.comtaofont.comtaogegou.com
taogepian.comtaogouxingxuan.comtaogula.com
taogutang.comtaohao6.comtaohaobang.comtaohaoge.comtaohaoqu.com
taohaowan.comtaohhui.comtaohouma.com
+taohua.comtaohuah.comtaohuazu.nettaohuazu.pw
+taohui.pubtaohuichang.comtaohuren.comtaojianghu.comtaojiji.comtaojin6.comtaojindi.comtaojingame.comtaojingroup.comtaojinhudong.comtaojinji.comtaojinyi.com
taoke.com
taokehome.comtaokewenan.comtaokezhushou.comtaokouling.com
taoku.comtaokuaibiao.comtaolinks.cc
taolvtong.com
taolx.com
+taomee.comtaomeiju.comtaomeng1688.comtaoming.comtaomingshi.comtaomingyan.com
taomr.comtaonanfu.com
taonienie.com
+taoniu.com
taoniupin.comtaooo.cc
taopb.comtaopiaopiao.com
+taopic.comtaopinquan.comtaoq.net
+taoqao.comtaoqian123.com
+taoqiu.nettaoqizu.comtaoquanquan.com
taor.worktaosdata.comtaosha.clubtaoshengtc.comtaoshouyou.com
+taoshu.comtaoshudang.com
taosj.com
+taotao.com
taotaocar.comtaotaoit.comtaotaoxz.comtaotian.com
taotieren.com
taotiwang.com
+taotu8.net
taotv.com
taotv.nettaou.comtaoweng.site
taoxiaolu.com
+taoxie.comzyrb.com
taoxuemei.com
taoxv.comtaoyi-support.comtaoyi120.nettaoyizhu.com
taoyougou.comtaoyuewenhua.nettaozaisheng.comtaozg.storetaozhanyun.comtaozhibook.comtaozhuo.comtaozhutu.com
+tap-ad.comtapapis.comtapbooster.net
tapcn.comtapdata.nettapenjoy.com
+tapimg.com
+tapimg.nettapotiexie.comtappile.com
+tapque.com
+tapsvc.comtaptap-api.com
+taptap.com
taptap.iotaptapcode.comtaptapdada.comtaraniss.com
+tarczp.comtarenacn.com
tarenwang.net
taro.zonetarotchina.nettarsier-infra.com
tarsocial.comtartscenter.comtarvengeful.com
tasaiwang.com
+taschb.comtasiyun.comtaskcity.com
+taskcn.comtaskyou.net
tasly.comtastespirit.comtastientech.comtastysteak.com
+taswwx.com
tatatimes.comtataxingqiu.com
+tatazu.comtaterli.comtatiqrf.com
tatjt.com
+tatstm.comtattoo77.comtattooo.nettaurentech.net
+tauris.comtaurus66.com
taurusxin.comtav-global.comtavsiktlig.com
tawk.linktax-edu.net
+tax100.comtaxchina.comtaxjiangkewang.comtaxksec.comtaxnote.org
taxrh.com
taxspirit.com
+taxwen.com
tazai.com
tazhe.com
tazts.com
+tb.pubtb51.nettb58.net
tbadc.com
tbadesign.org
+tbankw.com
tbapp.comtbcache.com
tbcdn.comtbh5.com
tbhcc.comtbhelper.com
+tbhjgc.comtbi-osk.com
+tbjt18.com
+tbjtss.comtbkf.nettbl-import.comtblk.me
+tbmcas.com
tbmkt.com
+tbnimg.com
tboxn.com
+tbpark.com
+tbq168.com
tbqqq.comtbreeden.com
+tbs321.com
tbsandbox.comtbsgame.nettbshare123.com
+tbsite.nettbt-tuning.com
+tbt.cc
+tbt168.comtburl.in
tburl.net
+tbuser.com
tbwyl.comtbxt.comtbyfsoft.comtbyuantu.com
tc-21.comtc-semi.com
+tc0770.comtc12580.com
tc199.nettc471cyhud.com
tc666.com
tc880.com
+tc9011.com
tc930.com
+tccxfw.com
tcdai.com
tcdaogui.cyoutcdinfo.comtcdlive.com
+tcdnhw.com
tcdnkcbak.comtcdnlive.comtcdnlivebak1.comtcdnlivebak2.com
+tcdnos.com
+tcdnos.nettcdntip.com
+tcdnv3.comtcdnvod.comtcdnvodbak.com
+tcdnvp.comtcdushi.com
+tcecps.org
tceic.com
+tcfhty.comtcfmglobal.comtcgcardgame.com
+tcggkj.com
tcgke.com
+tchbgz.com
+tchlbj.com
tchzt.comtciplay.comtcjx688.comtckjfast.comtckjhigh.comtcl-cctv.comtcl.comtclbusiness.com
tclclouds.com
tcljd.comtclking.com
+tclkqn.com
+tclljy.comtcloud19.comtcloudbase.comtcloudbase.nettcloudbaseapp.comtcloudbi.comtclouddrive.com
tcloudedu.comtcloudfamily.comtcloudhw.comtcloudhw.nettcloudit.comtcloudit.nettcloudscdn.comtcloudscdn.net
+tcm100.com
+tcm360.com
+tcmfrj.com
tcmwindow.com
tcnews.cctcnvmms.com
+tcp.hktcping8.com
+tcpspc.com
tcqct.com
tcqmj.com
tcrcb.com
+tcrcsc.com
tcs-y.com
tcsae.orgtcsasac.com
+tcsdzz.comtcsnake.com
+tcspbj.com
+tcstzg.com
+tcsurg.org
tctip.com
+tctong.comtctpwebank.comtctpwebankcdn.nettcxw.cc
tcxwg.com
tcxzj.comtcy1688.com
+tcy365.com
tcyad.comtcylgslb.comtczmled.com
td-sf.comtd-tech.comtd22.com
td518.com
td776.comtd98.comtdances.comtdatamaster.com
tdbbj.com
+tdchats.ustdchatvip.us
+tdd.la
tdfcw.com
tdgod.com
tdict.com
tdimg.com
+tditor.com
+tdjxhb.com
tdmall.cctdmoli2.com
+tdnsv1.comtdnsv10.comtdnsv10.nettdnsv12.comtdnsv13.comtdnsv13.nettdnsv14.comtdnsv14.nettdnsv15.net
+tdnsv2.com
+tdnsv3.com
+tdnsv4.com
+tdnsv4.net
+tdnsv5.com
+tdnsv5.net
+tdnsv6.com
+tdnsv6.net
+tdnsv7.com
+tdnsv7.net
+tdnsv8.com
+tdnsv9.com
+tdnsv9.net
+tdnsx1.comtdotapp.comtdpress.com
+tdrffh.comtdshbao.com
+tdsjbj.com
tdtbd.comtdun.com
tduou.comtdyxmoto.com
tdzyw.com
+te-ch.tech
te160.comte5.comte6.com
tea26.comtea7.comteach365.com
teachblog.netteachcn.net
teachercn.com
teachertc.com
+teacti.com
+teakki.com
teaku.comteallang.com
+tealui.com
+teamall.ccteambition.com
teambition.ioteambition.netteambitionapis.comteamlogs.com
teamminus.comteamotto.netteamshub.comteamtopgame.com
+teandy.com
+teapic.comteapottravel.com
teatreexy.comteawang.comtebaidu.com
+tebiao.net
+tebie6.comteboncapital.com
tec73.com
tecaimao.cyou
+tecbbs.comtecenet.comtech-mx.comtech-sonic.nettech1024.comtech110.nettech126.comtech2ipo.com
tech2real.comtech4joy.com
+techan.comtechantong.nettechbeat.net
techbrood.comtechfine.nettechflowpost.comtechgastronomy.comtechgogogo.comtechigh.nettechingrid.nettechmiao.com
+techo.chattechoke.comtechonegame.comtechqianmo.comtechshidai.comtechsir.comtechsize.comtechtmt.comtechuangyi.com
+techug.com
techvisum.comtechwalker.comtechwin.comtechxue.comteclast.com
tecmz.com
+tecobj.comtecolighting.comtecompharma.comtecreal.com
+tecyle.comtedaniu.comteddymobile.nettedushi.comtedx.nettedxalc.com
+teejia.com
+teencn.com
+teeqee.com
+tefact.comtefl-china.net
tefscloud.com
tefscloud.nettefshipping.comtegongji.comtegoushe.comtegvzpvz.com
tehuituan.com
+teimao.com
tejiabiao.com
tejiawang.comtek-asia.comtekkenthree.comtekshanghai.com
tekuaijie.com
tel01.com
+tel139.comtelaideyouxue.comteld.net
telecomhb.com
telecomjs.comtelefen.com
+telehr.com
teleinfoo.comteleland.netteleows.comtelevivi.com
+telfri.netteligen-cloud.comteliute.orgtelking.comtell520.comtelling.comtelllove520.comtellmachgd.com
telnet404.comtelongzn.comtelu.nettelunsu.nettelunxiaosu.fun
+tem.pwtemaiapi.comtemaiku.com
temox.comtemp.im
+temut1.com
+temyee.comtenant-zone-dev.comtenbilliongame.comtencdns.comtencdns.nettencenst.comtencent-blackboard.comtencent-cloud.comtencent-cloud.nettencent-gcloud.comtencent-gf.comzyrack-china.comtencent.comzyqzyyy.comtencent.designtencent.nettencent333.clubtencentads.comtencentapigw.comtencentapps.comtencentbbs.comtencentbyod.comtencentcdb.comtencentclb.comtencentcloud-aiot.comtencentcloud.comtencentcloudapi.comtencentcloudbase.comtencentcloudclub.comtencentcloudcr.comtencentcloudmarket.comtencentcloudns.comtencentcloudsec.comtencentcloudses.comtencentcos.com
tencentcs.comtencentdayu.com
tencentdb.comtencentdba.comtencentdevices.comtencentdigitalassistant.comtencentdms.comtencenteiam.comtencentelasticsearch.comtencenticp.com
tencentid.comtencentidentity.comtencentipv6.comtencentlog.comtencentmail.comtencentmeeting.comtencentmusic.comtencentproxy.comtencentrio.comtencentstart.comtencentsuite.comtencenttds.comtencenttid.comtencentwemeet.clubtencentwepark.com
tencentwm.comtencentyun.comtenchii.comtendacn.com
tendawifi.comtendbcluster.comtendcode.com
+tendis.nettendyron.comtengamy.comtenganxinxi.comtengbai-it.com
tengbo.cctengchangjiancai.comtengchu.comtengdatumu.comtengdazuche.comtengfang.nettengfangyun.comtengfeijob.comtengfeizhida.comtengfun.comtenghen.comtenghesmart.comtenghoo.comtenghun.nettengkackjr.comtengkaxx.com
tengma123.comtengmed.com
tengmoney.comtengning.net
tengnu999.comtengrant.comtengshiauto.comtengtongedu.com
+tengwa.nettengwen.comtengwen001.comtengxunnihendiao.comtengxunqiye.comtengxunqiyeyou.com
tengy.comtengyang666.comtengyeshiye.com
tengyuejz.com
tengzhihh.com
tengzhipp.com
tengzhuan.com
+tenhot.netteniuzhuan.cyou
tenjia.cctenjincn.comtenlonstudio.com
+tenmam.com
tenmh.com
+tennoo.comtenorshare.com
tenorshare.tw
+tenpay.comtenqent.comtenrays.comtensafe.com
tenshi.cctensorchip.comtensorflownews.comtensornews.nettenstars.nettensynchina.comtentech.clubtentrue.com
tentx.comtenxapp.com
tenxcloud.com
tenxcloud.net
teown.com
tepcb.comtepin.hktepintehui.comterabuy.com
terapines.comterence2008.infoterencexie.comteridge.comterminal.icuterminus.io
+terose.comterransforce.comterratribes.comterrytec.comteruide.net
tese5.com
+tesele.com
+tesery.comtesexiu.comteshenqi.comtesight.comtesolsh.com
+tesoon.comtest-cignacmb.com
test-ipv4.com
test-ipv6.comtestbird.comtestcoo.comtestdocs.com
+testeb.comtesterhome.comtesterlife.comtestict.com
testin.imtestingpai.comtestlrq.comtestroad.orgtestrust.comtestwaf.com
+testwo.com
+testxy.com
tetrisone.comtetuijiudian.com
+teuhui.comteuxipet.comtewsiext.com
tex68.comtexasholdemcup.comtexasholdemcup.net
+texclo.nettexnologynano.comtexpage.com
textaihua.com
+textin.comteyonds.com
teyop.com
tezhengma.comtezhongzhuangbei.com
+tezign.com
tf-bm.comtf.wikitf86.com
+tfauto.nettfax.comtfbestea.com
+tfbszx.net
tfcaijing.comtfchangyou.cyoutfcloud.com
+tfclub.com
tfedu.net
+tff.bztfg2.com
+tfgame.vip
tfgvb.comtfhj.com
tfidc.net
+tfkj.games
tfkyj.comtflzhongkongban.comtfme.comtfmywood.com
tfogc.comtfol.com
+tfoyin.comtfphtrh.comtfrl.net
+tfsino.com
tfsmy.comtftplay.com
+tfvisa.com
tfyum.nettfzcode.comtfzq.com
tg-vision.com
tg-vision.net
+tg0123.com
+tg1234.com
tg138.com
tgbus.com
tgcid.orgtgcondo.com
+tgcook.comtgcyber.com
tgect.com
+tggypn.comtgjh.com
+tgking.net
+tgldfm.com
tgljw.com
tglxh.com
tgnet.com
tgovcloud.com
+tgr365.com
tgshiguan.comtgslsst.comtgstech.comtgtest.sitetgtianshanga.comtgxuwgdi.com
+tgy365.com
tgyoo.com
+tgzwmk.xyzth-water.net
+th.app
zyqxt.comth38.comth99.comthailycare.comthaivor.com
thakjsbyy.com
+thamco.com
thankbabe.comthankyoumaris.com
thape.comthatinterpreter.net
thatsmags.comthatsmandarin.comthatwind.com
thcad.net
thcantech.comthclouds.com
thd99.comthdangzhun.comthdb.com
the-dahan.comthe-king.funthe4can.comthe5fire.comthe9.comthealcoholdiet.comthearenacapital.com
thearyong.comtheateliercouture.com
thebdsoft.comthebeastshop.comthebeautools.comthebeijinger.comthebeijingnews.comthebird-air.comthebuddycreative.comthechois.cc
+thecode.methecodeway.comthedatasys.comtheduapp.comtheessentiallifestyle.comthefastcdns.comthefastfile.comthefastimg.comthefastmake.comthefastvideo.comthefrodo.comthegiac.comthegraduation.storethehanshow.comthehellyhansens.comtheicstock.comthejamy.comthejiangmen.com
+thejie.com
thejoyrun.comthelarkcloud.comthelastsky.comtheluxfarm.comthemebetter.comthemeoffices.comthemeol.com
+themex.netthemisweeps.comthemrproject.com
then9.comthenburn.com
thenew123.comthenextravelmarket.comtheoborn.comtheorychina.org
zyqjs.comthepopdaily.comthersheng.cyou
thesetech.comthesmartmelon.com
+theszt.comthetali.comthethirdmedia.comthetigerhood.com
thetongji.com
thetype.cloudthewowa.comthexnode.com
+theyun.com
thfdc.net
thfdcsoft.comthhaisu.cyou
+thhome.net
+thhymj.comthief.imthiemechina.comthinbug.comthingjs.comthink-mall.comthinkcloudlab.comthinkcmf.comthinkdream.comthinkeridea.comthinkindrupal.comthinkive.comthinkjs.orgthinkpad.comthinkprinter.netthinkraz.comthinksns.comthinksrc.comthinkstu.comthinkyea.comthinmoo.comthinvent.comthishealthsummit.comthisshop.comthiztech.comthjb.netthjiang.comthjunshi.comthkconn.com
+thmins.comthmovie.comthmz.com
thn21.com
thosefree.comthoughtworkers.org
thrbs.comthreadcn.comthreatbook.comthreatbook.netthreegorgestours.com
threetong.comthronechina.comthrrip.space
+ths123.comths8.comthseoer.comthstars.com
+thtfpc.comthufeng.netthumbenv.comthumedialab.comthundercdn.comthundercdn.netthundercloud.groupthunderflash.netthunderobot.comthunderplaygame.comthundersoft.comthunderurl.com
+thunis.com
thunisoft.com
+thunlp.org
+thupdi.com
thurcacca.orgthwgetsy.com
thwiki.ccthwpmanage.com
+thxddb.com
thxdx.com
+thxedu.com
+thxflt.comthyclub.comthyidu.cyou
thyoo.com
thyuu.com
thz56.com
thzab.comti-node.comti-solar.comti0s.com
tian-gang.com
+tian10.com
tianai391.comtianan-cyber.com
+tianan.nettiananmenchenglou.comtiananmenlvyou.comtianapi.com
tianbaosi.comtianbiao.nettiancaixing.comtiancaixing.nettiancao360.comtianchi.comtianchu.comtianchuixiang.comtianchy.comtiancichina.comtiancity.comtiancitycdn.comtiandaoedu.com
tianditao.comtianditu.com
tiandiyih.comtiandiyoyo.comtiandizw.comtianduntech.com
+tiandy.comtianehui.net
tianfeiyu.comtianfeng.cctianfu-stone.com
tianfuhui.xin
tianfupic.comtianfusoftwarepark.comtiangesoft.comtiangou.xyztianhao.vip
tianhaohz.comtianhejiayi.comtianheplaza.comtianhongdiaosu.comtianhongsunshine.comtianhujy.comtianiot.com
tianji368.comtianjiarun.comtianjigame.comtianjigu.comtianjihr.comtianjimedia.comtianjin-air.comtianjin-iwc.comtianjin-patek.comtianjingames.comtianjingrong.comtianjinshunma.com
tianjinwe.comtianjinyijiahua.comtianjiyy.comtiankong.comtiankonghuyugames.com
tiankuojy.comtianlaiedu.comtianlaijiaoyu.comtianlaikge.comtianlailive.comtianlan.nettianli-blog.clubtianlin001.comtianlongshop.comtianlungas.comtianma3600.comtianmadz.comtianmao.comtianmawx.comtianmaying.comtianmimiclub.comtianmingxing.comtianmu.mobitianmumusic.comtianmunews.comtianmupe.comtiann90.comtianninghr.com
+tiannv.comtianpeng.comtianpinjie.com
tianqi.cc
+tianqi.com
tianqi123.comtianqi2020.comtianqi24.com
tianqi321.com
tianqi518.comtianqiaojuyuan.comtianqiaoyishuzhongxin.org
tianqiapi.comtianqicloud.comtianqihoubao.com
tianqijun.comtianqikb.comtianqistatic.comtianqiyubao3.comtianqiyubao4.comtianqizhixin.comtianquetech.comtianrkl.comtianrow.comtianruiyun.comtianrunshunteng.comtianruo.nettianruoyun.comtiansdl.comtiansenjituan.comtianshan277.comtianshanxt.comtianshengdiyi.comtianshi.infotianshi2.nettianshipet.comtianshiyiyuan.comtianshouzhi.comtianshugame.com
tianshuge.comtiantaichina.comtiantailaw.comtiantaishebei.comtiantaivideo.com
tiantang6.comtiantangnian.com
tiantaocs.comtiantaxx.comtiantexing.com
+tianti.comtiantianbannixue.comtiantiancaipu.comtiantianfm.comtiantianfunds.comtiantianleshuiguo.comtiantianquce.comtiantianqutao.comtiantianxuexi.comtiantingfm.comtiantis.com
+tiantk.comtiantk1.comtiantonglaw.com
tianvalue.com
+tianwt.com
tianxia70.comtianxiajiameng.comtianxiajiaoyi.com
tianxiang.comtianxianmao.comtianxiaputao.comtianxiawangxiao.comtianxiaxiao.nettianxiaxinyong.comtianxiaydslfd.comtianxiayouxi.comtianxin100.viptianxing.comtianxingjianyiliao.comtianxinkeji.comtianxinsuye.comtianxinyidai.com
+tianya.com
tianya.tv
tianya999.comtianyablog.comtianyabook.comtianyaclub.comtianyadfnssd-sdfsv.comtianyaluedu.comtianyancha.comtianyanqifu.comtianyaruanwen.comtianyaui.comtianyecollege.comtianyi1368.comtianyibook.comtianyihy.net
tianyiidc.com
tianyijue.comtianyinzaixian.comtianyisc.com
tianyitop.comtianyiwangxiao.comtianyiwenkong.comtianyizhihui.comtianyuanjiudian.comtianyuanpet.comtianyuchaye.com
tianyuimg.comtianzhao.nettianzhibook.comtianzhishui.comtianzhitong.nettianzhuo.comtianzhuobj.com
tianziweb.nettianzongyouxi.comtiaodao.comtiaoguangbolimo.comtiaohao.com
tiaohaoba.com
+tiaoka.comtiaomaruanjian.com
+tiaomu.com
+tiaona.com
+tiaooo.comtiaotiaotang.nettiaoyue.xyztiaozhanbei.net
tiapi.nettiatiatoutiao.com
tibaitong.com
+tibet3.comtibet4wd.comtibetanbible.orgtibetannet.comtibetcn.comtibetcnr.comtibetcul.comtibetculture.net
tibetcyts.comtibetway.com
+tic-gx.comticketdashi.comticketmars.comticp.ioticp.netticstore.comticwear.com
+tidaas.comtidb.aitidb.iotidb.net
tidbcloud.comtide.fm
tidemedia.comtidesec.com
tideswing.fun
tidi.mobitiduyun.com
tieba.comtiebaimg.comtiebamm.com
tiebaobei.comtiedan2019.com
tiegu.comtiehuatu.comtiejiang.org
tiejiapai.comtiejiong.com
tiejp.comtiekuangshi.comtielemao.comtielu.cc
tielu.orgtielu123.comtielujob.comtiepishihu.comtiequangame.com
+tieque.net
+tiesan.comtieshuwang.net
tietie.latietuku.com
tieweishi.com
tieww.com
+tiexie.rentiexing.nettiexiuyugudao.com
+tiexue.net
+tieyou.comtiezhima.com
+tiezis.comtiger-info.comtiger-motion.comtiger2doudou.comtigerbbs.comtigerbrokers.comtigerbrokers.nettigerdns.com
tigeresop.comtigerfintech.comtigergoski.comtigersecurities.comtigeryun.com
tigr.link
tiham.com
tiimg.com
tijian001.com
tijian123.com
tijianbao.comtijianka.cctijianshangmen.comtijianzhuanjia.comtijox.cc
tijox.comtijox.hk
tijox.net
tijox.org
+tikane.comtikersport.comtiko.inktikubaba.com
+tikuol.comtikv.orgtileywy.com
+tillcn.comtillglance.comtimanetworks.comtime-weekly.com
time-year.comtimecloud.ustimecoo.com
+timedg.comtimedoo.comtimelate.com
timelessq.comtimemachine.icutimeofdate.comtimeoutbeijing.com
timeoutcn.comtimeoutshanghai.comtimepill.nettimeread.comtimeread.net
timesboom.comtimesdf-hn.comtimesndt.comtimesoutlets.comtimestock.cotimeticktick.com
+timetw.com
timev.com
timez.com
+timi78.comtimibase.com
timing360.com
+timipc.comtimitime.comtimizy10.cc
timjx.comtimmerse.com
+timzuu.comtinetcloud.com
tinfinite.com
tinfo.com
+ting55.comtingbook.comtingbook.nettingchewei.net
tingchina.com
tingclass.comtingdegang.com
tingfei.spacetingfun.net
tinghaohr.comtinghen.comtinghongzz.comtingjia.comtingjiandan.comtingkanbao.comtingke8.comtingmall.comtingmimi.nettingmubeef.comtingniukeji.comtingpiting.comtingroom.comtingshubao.nettingshuo51.comtingshuowan.comtingsonglaw.comtingtao.nettingtingfm.comtingvision.comtingxiangzu.com
tingyulou.comtingyutech.nettiniangroup.comtinigame.xyztinkerpatch.com
tinman798.nettinning-automation.com
tinsecret.com
+tinwod.comtinychen.comtinycms.xyztinyems.comtinyfeng.com
tinyflare.com
tinygroup.orgtinylab.orgtinymind.comtinyservices.nettinywan.comtinyyuan.comtipaipai.com
+tipask.com
+tipdim.org
tipdm.com
+tipray.com
tiprpress.comtipsoon.comtiqakcrxmyca6i.com
+tiqiaa.comtiqianle.com
tirechina.nettiremay.com
tiruna-cn.comtisgame.comtisi.org
+tisino.com
+tisiwi.com
tisohinge.comtita.comtita.nettitamobi.comtitan007.comtitan24.comtitanar.comtitanmatrix.comtitapark.comtitianshanfz.comtititxt.comtitussb.com
+tivitv.comtiwb.comtiwu.nettixa.comtixaapp.comtiye.me
+tiyeji.com
tiyep.com
+tiyu68.comtiyucdn.comtiyufeng.com
tiyuguoji.com
+tiyule.comtiyusaishi.comtiyuxiu.comtizi.comtizi365.comtizoinfo.comtj-guangxin.comtj-kingdee.comtj-model.com
tj-un.com
tj-zt.com
+tj0573.comtj1-miui-bn-stage01.kscntj20.com
+tj2022.comtj316bxg.com
+tj9.co
+tjaide.com
tjbearing.comtjbh.com
tjbpi.com
tjbsq.com
tjbus.comtjbxingbian.com
+tjcamp.comtjcaoshiyabo.comtjchangxing.com
+tjckjr.comtjcondom.com
tjculture.comtjczjxsb.com
+tjdewy.com
tjdyf.com
tjdyv.com
tjfer.com
+tjfxdx.com
tjgcs.com
tjghw.com
+tjgmcg.comtjgportnet.com
+tjgtgd.com
+tjhskj.comtjhtcpvc.comtjhyzyxy.comtjinsuo.com
+tjjfrh.com
tjjjl.comtjjt360.com
tjjwt.comtjkache.comtjkp-tools.comtjkx.comtjkximg.com
tjlbf.comtjllhbkj.comtjluohuzhijia.com
+tjmama.com
tjmhc.com
+tjmuch.comtjmulin.com
tjnjw.comtjpa-china.org
tjpma.orgtjqiqiu.com
+tjqmlg.comtjrenliziyuan.comtjrenmu.com
tjrge.comtjruien.comtjsjnxh.comtjsjwygg.com
tjsjx.comtjst.nettjstats.com
+tjtele.comtjtjshengtu.comtjtoujian.cyou
+tjtsxd.com
tjumc.com
+tjupdi.com
tjupt.org
tjwch.com
tjwch.orgtjwenjie.com
+tjwj88.comtjwmschool.net
+tjxiqi.com
tjxja.comtjxunlei888.com
+tjxxcl.comtjxz.cc
+tjyfkt.comtjylsjjg.com
tjyun.comtjyywjc.comtjzb.com
+tjzcsj.com
+tjzfcg.comtjzhongyiyao.com
+tjzyec.comtjzyefy.com
+tjzyfw.comtk-life.comtk-rays.comtk-xiong.com
tk-zx.com
zyqjg.com
tk163.com
tk233.xyz
tk315.com
tk316.comtkas2019.com
+tkckjr.comtkcn.cctkd-suzhou.comtkfangzhouapp.com
+tkgame.comtkhealthcare.comtkmedicare.comtkoubei.com
tkplusemi.comtkqpggvx.com
+tkrlab.com
+tkw.cc
+tkwhzf.comtkww.hk
tkxxd.net
+tky001.comtl-self.comtl-shida.com
+tl-tek.comtl-vogue.comtl2y.comtl88.net
tlang.com
+tlbaby.com
+tlbapm.comtlby120.com
tlbyx.com
tlcharity.comtldczgs.comtlfw.net
+tlfzkj.com
+tlgslb.com
+tlhjjc.com
+tlhmhd.com
tlightsky.com
tlinx.comtliveapp.comtlivecdn.comtlivecdnv2.comtlivedns.comtlivednsv1.com
tlivemcdn.com
tliveplay.com
tlivepush.comtlivesource.comtliveupload.comtlivewebrtc.com
tljas.com
tljcw.com
tljob8001.com
+tljwbj.com
tlomo.comtloptic.comtlqwine.com
+tlrcbk.com
+tlryjg.comtlsj-hd.comtlsy.viptlt5.comtlte.comtltesoft.com
+tltuan.net
tltzg.comtlu5.comtlwanjishan.comtlwk.net
tlwok.com
tly.cloud
tlygc.com
tlzey.com
+tm0755.com
+tm1949.com
tm312.com
+tmaill.com
+005.tv
+tmall.casa
tmall.comtmall.hktmall.rutmallalicdn.comtmallgenie.comtmallgenieapi.com
tmallplay.nettmalltv.comtmallvvv.com
tmbbs.com
tmcdn.nettmctool.comtmdm.com
tmdss.com
+tmeiju.comtmeissheng.com
+tmhkgs.com
+tmhong.com
tmisp.com
+tmjbee.comtmjd123.com
tmjiasuqi.comtmjj.comtmjl.aitmjob88.com
tmkoo.com
+tmmini.comtmqd.metmqd.sotmqiaru.cyou
+tmqmqj.com
tmrcw.com
+tmscnz.com
+tmsemi.comtmsf.comtmshare123.com
tmsmh.com
tmsmq.comtmsx.nettmtforum.com
tmtmw.comtmtpost.comtmtpost.nettmtsmartlife.comtmtsmartrun.com
+tmuaih.com
tmujd.com
+tmuyun.com
tmwcn.comtmwxxcx.com
tmwzs.comtmxmall.com
tmxxw.comtmxz.metmyirick.com
+tmzvps.com
+tn2000.comtnbz.com
+tnccdn.comtnet.hk
+tngcjx.com
tnjly.com
+tnjyfc.comtnkjmec.com
to-future.net
+to2025.comto4f.comto9.org
to999.com
+toaobg.com
toaseancn.com
toast.pubtobaccochina.comtobebetterjavaer.com
+toberp.comtobetopone.com
tobkk.comtobnews.comtobo1688.com
+tobosu.com
+tobosu.net
tobsnssdk.com
+tochgo.comtochinajob.com
tocomtech.com
+tocosc.comtocreating.comtoday.aitoday36524.comtodaycache.nettodayguizhou.comtodaygx.comtodayidc.comtodayintnet.comtodayios.comtodayisp.nettodaynic.comtodaypublish.comtodayyj.com
+todesk.com
+todoen.comtodokeji.comtodokit.xyztodonow.com
todreamer.com
toec-gdgs.comtoec-iot.comtoec.comtoecsec.comtofengmi.comtogj.comtogoalad.comtogocareer.com
+togogo.net
tohkalove.com
tohosting.com
tohosting.nettohours.com
+toidea.com
toiue.comtokcoder.com
tokei2017.comtokei520.comtokeiaat.comtokeimall080.comtokeisuisukopi.comtoken-ad.comtokenet.sitetokenglish.comtokensky.nettokimekiclub.org
tol24.comtom.cattom.com
+tom163.nettomatogames.comtomatolab.me
tomatolei.comtomatooflove.com
tomax.xyz
+tomdiy.comtomotoes.com
+tompda.com
tomujiang.com
tomwx.net
+tonbao.com
+tonebj.comtonechemical.com
+tonehk.comtonewinner.comtong-run.comtongaokeji.comtongbanjie.comtongbanjie.infotongbaoyun.com
+tongbb.nettongbulv.com
tongbupan.comtongbusj.comtongcaihulian.comtongceyiliao.com
tongchaba.comtongcheng.cctongcheng360.comtongchengbx.comtongchengchaku.comtongchengkang.comtongchengqun.viptongchouba.comtongda2000.com
tongdanet.comtongdaohui.com
tongdaotv.com
tongdayun.comtongdun.nettongfangpc.comtongfei.techtongfengkh.com
+tongfu.net
tongfudun.comtonggao.infotongguanbao.nettonghuiqiye.com
+tongji.comzyqc.cc
+tongji.nettongjia.comtongjiai.comtongleer.comtonglei.com
tonglejoy.comtongli-hrcc.nettonglian.comtongliangrc.comtongliaowang.comtonglichang.comtonglingwulian.comtonglize.comtongmengge.comtongniguoji.com
+tongren.jptongrenchina.orgtongshanbank.comtongshiling.net
tongshilu.com
tongshuai.comtongsuo.nettongtaiamc.comtongtech.comtongtianta.sitetongtool.comtongtut.comtongwang.net
tongxiang.nettongxianghuicn.comtongxiangshun.comtongxiehui.nettongxin.comtongxin.orgtongxinghui.com
tongxinky.comtongxinmao.comtongxinteng.comtongxinyiyaocs.com
tongxiong.comtongxue.comtongxue365.comtongyaoplay.comtongyavisa.com
+tongye.biztongyehuanbao.com
+tongyi.comtongyicm.comtongyidrying.comtongyongpe.nettongyoujiancai.comtongyuanos.comtongyue.comtongzhuo100.comtongzhuodn.com
tongzicha.comtongzsf.comtonitech.com
tonkingpt.com
+tonksz.com
tonnp.com
tonsontec.comtony-bro.comtonycrane.cc
tonysfarm.com
toocf.com
+toocle.com
toodaylab.comtool.latool.lu
+tool77.comtooleemesse.com
toolhives.com
+toolkk.comtoolmall.comtoolmao.com
+toolnb.com
tools.fun
+tools.teamtoolscat.com
+tooltt.comtooming.comtoomoss.com
toon.mobitoonmax.comtoonmaxmedia.comtooopen.com
+tooseo.comtootour.com
+toouoo.com
top-trust.comtop100school.comtop100summit.com
+top147.com
+top168.com
+top263.nettop2fun.comtop6000.com
+topacg.com
+topber.com
topbester.com
topbiz360.com
+topbook.cc
+topcdb.comtopcheer.comtopchitu.com
+topchn.com
topcj.com
+topcpu.nettopcrab.comtopcsic.comtopcto50.comtopdodo.comtope365.comtopeditsci.com
+topeet.comtopeetboard.comtopengroup.nettopfisc.com
topflames.comtopfreeweb.nettopgoer.comtopgslb.com
+topgus.comtophant.comtophold.com
tophr.net
+tophub.app
+tophub.funtophub.today
topit.pro
+topjoy.comtopjoycloud.comtopkhealth.com
+topksw.com
topku.comtoplanit.com
+toplee.comtoplevel.inktoplife.comtoploong.comtopmba.mobitopnfactory.com
+topnic.nettopomel.com
+toppdu.com
topperuse.comtoppridehk.comtopproio.com
topqh.nettoprand.com
toprender.comtoprocn.comtopsage.comtopscan.comtopsedu.comtopsmartinfo.com
+topsmt.comtopsresearch.com
+topsrx.comtopswim.nettoptastewin.comtopthink.comtopthink.nettoptiao.comtoptopn.com
toptopone.comtoptourservice.com
toptubeco.com
topuc.com
topuplive.com
topv1.comtopwalk.com
topwanwan.com
+topway.orgtopwaysoft.comtopwidgets.comtopwinfo.comtopxlc6.com
topys.com
topyun.tv
+topyun.vip
topzj.com
+torch.plus
+torovo.comtorphan.comtorrealcielo.com
+toscdn.comtosenscredit.comtoshiba-gtbs.comtoshiba-semicon-storage.comtoshiba-thpc.comtoshiba-tnis.com
+toshow.comtosonet.com
+tospur.com
+tosuai.comtotalacg.comtotenchina.comtotenworld.com
totheglory.im
totochina.com
+totodi.comtotojia.com
+totope.com
+totoro.pub
+totren.com
totwoseal.comtou-tiao.com
+tou360.com
+toubang.tv
+toucdn.comtouch-ck.com)%touch-massageandholistictherapies.comtouch-moblie.com
touch4.metouchealth.comtouchev.com
touchjoin.comtouchjoint.com
touchmark.arttouchpal.comtouchsprite.comtouchsprite.nettouchstudio.nettouduyu.comtoufu321.comtoughcoder.net
+tougub.comtouhou.casa
touhou.cd
touhou.markettoujidao.com
+touker.comtoumiao.com
toupb.comtoupiaoapp.comtouqikan.comtour110.comtourboxtech.comtourenwang.com
tourgansu.com
+tourhr.comtourjob.net
tourongji.comtourongjia.com
tourongzi.orgtoursbms.com
tourscool.com
+tourye.com
toushivip.comtoutiao.comtoutiao.org
toutiao11.com
toutiao12.com
toutiao13.com
toutiao14.com
toutiao15.comtoutiaoapi.comtoutiaoapp.comtoutiaobashi.comtoutiaobus.comtoutiaocdn.comtoutiaocdn.nettoutiaocloud.comtoutiaocloud.nettoutiaogood.comtoutiaohao.comtoutiaohao.nettoutiaoimg.comtoutiaoimg.nettoutiaojisu.comtoutiaolite.comtoutiaolite1.comtoutiaolite2.comtoutiaoliving.comtoutiaonanren.comtoutiaopan.comtoutiaopanapi.comtoutiaopic.comtoutiaoribao.nettoutiaostatic.comtoutiaovod.comtoutiaowap.comtoutiaowap.nettoutiaoyule.com
toutiaozb.comtoutoufc.comtoutoupiao.comtouwenzi.com
+touwho.com
touxiang8.comtouxiang88.comtouxiangkong.comtouying.comtouyouquan.com
touzhijia.com
touzi.com
+touzid.comtouzikuaibao.comtouzime.comtouzime.nettouzizn.com
toviu.nettowavephone.comtower.imtowinor.com
towmy.comtownsky.comtowntour.nettowords.comtowry.metowyzcxc.comtoxingwang.comtoybaba.comtoycloud.com
+toyean.comtoyota-nanning.comtoyoures.comtoyoutesting.com
+toysir.com
+toysol.comtozzger.info
+tp2987.xyz
tpadx.com
+tpbook.com
+tpccoo.comtpcmacao.com
tpcry.com
tpczb.com
+tpjwww.com
tpkey.comtplcd100.com
+tplife.comtplm123.com
tplogincn.com
tpooo.comtpoxiaozhan.com
tpqxb.com
tprtc.com
tpsge.com
tpsxs.com
tpszw.comtpturang.comtpumlir.org
+tpy100.com
+tpy119.comtpyboard.com
tpyzq.com
tpzlj.com
tqads.com
tqapp.comtqbuan.cyoutqcj.comtqcp.nettqcrane.com
tqcto.comtqdianbiao.com
tqedu.net
+tqhj88.comtqiangg.comtqiangg.nettqiantu.comtql.inktqle.com
+tqmall.com
tqmdp.nettqmy168.comtqqa.com
tqqcj.com
tqqkc.com
+tqqyun.com
+tqsafe.comtqschool.net
+tqshfw.com
+tqshfw.nettqw5.com
tqwqq.comtqy6.com
tqybw.net
tqzsh.comtr-test-ali.nettr-test.nettr-testboe.nettrace4me.com
tracefact.nettracegd.comtraceint.comtracestour.comtracker.inktrackingmore.com
+tracup.comtracyclass.com
tradaquan.comtrade-over-world.comtrade-plug.nettrade2cn.comtradebearings.comtradeleo.comtrademessenger.comtradeplus.cctradevv.com
+tradew.comtradinghero.com
+tradow.com
traineexp.comtrainingipv6.com
trainnets.comtrait-wholesale.comtranbbs.comtranplanet.comtrans4e.comtranser-cn.comtransformer-cn.comtransformers.runtransfriend.comtransfu.comtransfun.nettranslatego.nettranslation-dictionary.nettranslationchina.comtransmonkey.comtransmonkey.net
+transn.comtransnanning.com
transnbox.comtransparcel.comtransplendor.comtransportjp.com
transrush.comtranssion-os.comtranssscoco.comtranswarp.io
transwiki.orgtranwit.com
+tratao.comtravel-x.cc
+zyq366.comtravelgo.comtraveling-exhibitions.comtravellingwithhotel.comtravellinkdaily.com
travelsky.com
travelsky.nettravelwuhan.com
travelyee.com
+trboli.comtreehousesub.comtreesir.pub
treetwins.comtreeyee.comtrekin.space
+trekiz.com
trellocdn.com
+trend6.comtrendingstar.techtrendsbulletin.com
trendsmen.comtrendtokyo.comtretars.com
+trexiu.com
+trfgvb.comtrhealth.nettrhj.net
trhly.com
trhos.com
trhui.com
trhxt.com
trickypen.comtriggerdelivery.com
triggermi.comtrinasolar.comtrinitigame.comtrioisobardev.comtriorder.comtrip.comtrip169.comtrip8080.comtripbaba.com
+tripbe.comtripcdn.com
tripleuuu.comtriplexservice.comtripnearby.com
tripodeck.comtripsanxia.net
+triptt.comtripurx.com
tripvivid.comtripwirechina.comtriring.comtriton-games.com
trjcn.com
trjcn.net
+trjddq.com
+trkjbj.com
trli.club
trnjm.comtroika-design.com
+troila.comtrojantesting.comtrondaauto.comtronixin.comtronlife.comtropcdn.com
+trpcdn.com
+trpcdn.net
+trqjrp.xyztrs-logistics.comtrsjgdj.com
+trsoft.vip
+trsoft.xin
trsol.com
+trt.hktrtb.net
trtos.comtrtquxro.comtrucker365.comtrucklc.comtrueart.comtruebuty.com
truechine.comtruedian.com
truedream.ltdtrueeyu.comtruekex.comtrueland.net
+trueme.nettruerun.comtruesing.com
+trufun.net
+truimo.com
trunktech.comtrusfort.com
+trusit.nettrusple.com
trust-mro.com
trust-one.comtrust400.com
trustasia.comtrustedsign.comtrustexporter.comtrustie.nettrustkernel.com
trustlife.comtrustmover.comtrustmta.comtrustsoc.com
+trutes.comtruthsinfo.com
trvok.comtrwl.net
+tryfun.com
+tryine.com
tryineapp.com
+trykan.comtrylist.nettrymoka.com
tryon-web.comtryudesk.com
tryurbest.com
+tryxue.comts-cooling.com
ts-juheng.com
+ts0775.com
ts100.com
ts16949px.com
ts16949rz.orgts3.vip
ts6eh.comts95.comtsanfer.comtsarufaq.comtsbjschool.comtsbtv.tvtscorona.comtsdaodao.com
tsddu.comtsdm.net
tsdxb.comtsefang.comtses.net
tsflc.com
tsfqw.comtsg-online.nettsgenshen.cyou
+tsggwl.com
tsggx.comtshaisen.comtshe.comtshe.metshengqi888.com
+tshmkj.com
tshock.cctshtech.comtsichuan.comtsing-jn.comtsinghua-getinfo.comtsinghua-sz.orgtsinghuaic.comtsinghuaicwx.comtsinghuajournals.com
tsinghuan.comtsinghuawoman.com
+tsingj.comtsingmicro.com
tsingming.comtsingoofoods.com
tsingpost.comtsingtoo.com
+tsj-js.comtsj-tsy.com
+tsjtsy.com
+tskscn.com
tslib.net
+tsljzs.com
tslongtai.comtslsmart.comtsluping.comtsm-yuntrust.comtsm52dc.com
tsmgc.com
+tsmtkj.comtsorder.comtsp-system.com
+tsp189.comtsparkling.com
tspsy.com
+tspweb.comtsqw.com
tsrcw.com
tsshunxin.com
tsslz.com
tssns.nettsstorry.com
+tssyjt.com
tsukistar.fun
tswjn.com
tswjs.org
tswmb.comtswnanning.com
+tswuby.com
+tsxcfw.com
tsxcx.xyztsxgedz.com
tsxjt.com
+tsxw66.com
+tsxxmp.comtsybsmz.com
+tsycdn.com
tsyexmail.com
tsykf.com
+tsyvps.com
tsyzm.com
+tszhjk.com
+tszyzx.comtt-bike.com
tt-ly.comtt116114.com
tt286.comtt65org.com
tt787.comtt96596.com
+ttaidu.com
ttbba.com
+ttbbss.com
+ttbyte.com
+ttbyte.net
ttcad.comttcl.ccttdailynews.com
ttdns.net
+ttdown.comttechhk.comttfcdns.com
ttfdc.net
ttfly.com
+ttfuav.com
ttgjx.com
+ttgslb.com
ttgtm.com
ttgwm.com
+ttgxlx.comtthaoduo.com
+tthigo.comtthunder.comttic.ccttigame.com
ttime.comttionya.comttj5.com
ttjianbao.comttjiasu.com
+ttjisu.comttkaiche.com
+ttkan.shop
+ttkdex.com
+ttkefu.com
+ttkuan.com
ttkx.live
ttkxh.comttlaozhen.shopttll.cc
+ttlock.com
ttlsa.com
+ttmark.com
ttmd5.comttmeiju.comttmn.com
+ttmn55.xyz
ttmnq.comttmv.comttn8.com
ttnea.comttnongli.com
ttnqh.comttpaicdn.com
ttpaihang.comttpaper.com
ttpet.comttplayer.com
ttpod.comttpp.com
+ttppoo.comttq.com
+ttq.sottqiadar.com
+ttriqi.comtts8.comttsfgyrj.comttshengbei.com
+ttship.com
+ttshuba.ccttshuba.net
ttsmk.comttstream.com
ttsz8.com
+tttang.comtttarot.com
tttde.comtttelephone.comttthing.com
+tttiti.com
+tttkkt.com
+tttllt.com
tttuangou.net
tttxf.com
+tttxtt.comtttz.com
ttufo.comttunion.comttuu.comttvmexmk.comttwanjia.com
+ttwifi.netttwx.comttxn.comttxs123.net
ttxs7.comttxsapp.comttxsonline.com
ttxuanpai.comttxx8888.com
ttyingqiu.com
ttyjf.com
ttymq.com
ttyongche.com
ttyqm.com
ttysq.comttyuyin.comttzubao.com
ttzyw.comtu54o7863tbf6.com
+tu8.cctu93.biz
tu960.comtuan800.comtuan800.net
+tuanai.com
tuanbohui.comtuanche.com
+tuancu.comtuandai.comtuandui001.comtuanduishuo.com
+tuang.clubtuanhuiwang.comtuanidc.nettuanimg.comtuanitgx.comtuanjiebao.comtuankezhan.comtuanlin.nettuanmeme.com
+tuanok.com
tuanpibao.comtuanping.comtuanshan.comtuantuangame.comtuantuanshou.comtuanwen.comtuanxia.comtuanxue360.comtuanyuan520.com
+tuanyx.com
tubachina.comtubanginfo.com
tubangzhu.comtubaobao.comtubaobaoqm.comtubaoveneer.comtubaoyz.comtubebbs.com
tubiaoxiu.comtubiaozu.com
tubie.arttuboshu.comtuboshuxinxi.xyz
+tuboxu.com
+tubutu.comtuchong.comtuchong.net
tuchuangs.comtuchuanhuwai.comtuchuiwang.com
tucia.net
tucoo.comtudai.cctudan.cc
tudan.viptudinet.com
tudou.comtudouh5.comtudoupe.comtudouui.com
tudouxy01.comtudouyx.comtudu.comtudu.imtuer.metuer123.com
tugou.comtugoucx.comtuguaishou.comtuhaogroup.com
tuhaokuai.comtuhu.comtuhu.org
tuhu.work
tui18.com
tui56.comtuiaaaa.comtuiaaae.comtuiaaaf.comtuiaaag.com
+tuiabq.comtuiayonghu.comtuibear.comtuiberry.comtuiclick.comtuicool.comtuidaniu.com
tuidc.comtuideli.com
tuidragon.com
tuifeiapi.comtuifrog.comtuiguang91.comtuiguangdns.comtuiguangjia.comtuiguangpingtai.comtuijian.biztuijianxin.com
tuijie.cc
tuikemima.com
tuikemima.net
tuikemohe.com
tuili.com
+tuili8.comtuilidashi.xin
+tuilie.comtuilisr.com
+tuiliu.net
+tuiliw.comtuilixy.net
+tuimob.comtuimotuimo.com
tuipeanut.comtuipear.comtuiplay.com
tuirabbit.comtuirice.comtuishao.nettuishark.com
tuishiben.comtuishubang.comtuishuge.com
tuishujun.comtuisnake.comtuistone.comtuitui99.comtuituifang.comtuituitang.com
+tuiwen.net
tuixue.online
tuizx.com
tujia.comtujiacdn.com
+tujian.com
+tujidu.comtujiwar.comtujixiazai.comtujuren.com
tuke8.com
+tuke88.com
+tukedu.com
tukkk.comtuku.com
+tukucc.comtukujia.comtukuppt.comtulading.com
tuleminsu.comtuliaohr.net
tuling123.com
tulingdns.com
tuliu.com
tulsj.comtumajewelry.comtumanfen.comtumanyi.comtumchina.comtumeinv.comtumengtech.comtumicomm.comtumormed.comtumukeji.comtumuzhe.com
tuna.wikitunanhuashi.com
+tungee.comtungoil-world.comtungraymhe.comtungshungroup.comtungsten-alloy.comtungsten-bar.comtungsten-copper.comtungsten-jewellery.comtungsten-powder.com
tunhe.comtunhent.comtunionfans.comtuniu.cc
tuniu.com
tuniu.net
tuniu.orgtuniucdn.comtuniuglobal.comtuniuins.comtuniuops.nettunynet.comtuo-pan.comtuobeng.net
+tuocad.comtuodangclub.comtuodanyy.comtuohuangzu.comtuojuncn.com
tuojunedu.comtuolajieightscore.comtuoluozhuan.nettuoniaox.com
tuopanban.com
+tuoren.com
+tuotoo.comtuotuode.nettuotuozu.comtuoweisi.comtuoyuan619.comtuozhe8.comtuozheng168.com
tupian114.comtupian1234.com
tupian365.comtupiancunchu.comtupianjp.comtupiankucdn.com
tupianyun.comtupianzj.com
+tupinh.comtupu360.comtuputech.com
tupuw.com
tuqou.com
tuquu.comturangyq.com
turbomail.org
turbotech.pro
turingapi.comturingbook.comturingdi.comturinggear.comturingtopia.com
zyq.todayturnitincn.comturnitinuk.net
+turuio.comtus-health.com
+tusapi.com
tusay.nettuscbec.com
+tuscdn.com
tusdk.comtushare.orgtushare.protushencn.comtushifa.cyoutushifu.comtusholdings.comtushu001.comtushu007.comtushuguan.cc
+tushumi.cctushumi.comtushuokeji.nettushupdf.com
tusij.com
+tusiot.comtusmedicine.com
+tusooo.comtuspark.comtuspass.comtuspass.nettusstar.comtusu.cctusuguanjiage.comtusujiu.comtutechanhb.comtutengcloud.comtutu001.comtutuapp.com
tutucloud.comtutudati.com
tutuge.metutuguai.com
+tutuim.comtutupan.comtuvrblog.com
tuwan.comtuwan21.com
tuwandata.comtuwangwang.comtuwanjun.comtuwazhundian.comtuwenba.com
+tuweng.comtuwenzhibo.comtux.redtuxi.com
tuxiaobei.com
tuxiu.comtuxs.cc
tuxun.funtuya.com
+tuyacn.comtuyansuo.com
+tuyaya.com
+tuyiqi.com
+tuyitu.com
+tuyiyi.com
tuyoo.comtuyou.me
tuyougame.comtuyoujp.comtuyoumi.comtuyouxinxi.net
tuyusheji.com
+tuzhan.com
+tuzhan.nettuzhanai.comtuzhanh5.comtuzhaozhao.comtuzhijie.comtuzhizhijia.comtuzi123.com
tuzi8.comtuziyangzhi.com
+tv0001.com
tv002.com
tv189.com
tv373.com
+tv6u8m.comtvandnet.com
tvapk.com
tvapk.net
tvbbj.comtvblack.comtvbwind.comtvcbook.com
tvccc.orgtventry.comtvfanqie.com
+tvfuwu.comtvguo.tv
+tvhome.com
+tvhuan.comtvjianshen.com
tvkou.com
+tvkuai.com
tvmao.comtvmcloud.comtvmining.com
+tvn.cctvnwang.com
tvoao.comtvos.com
+tvt.im
tvtsg.comtvuctgze.com
tvxio.com
tvzhe.comtvzn.comtw-joly.com
+tw-yun.com
tw2sm.comtw93.fun
+twanxi.comtwatchesmall.comtwatchmall.comtwd2.metwd2.nettwdfr9o1.xyz
+twdxdl.com
tweakcube.comtwheixiong.comtwinkledeals.comtwinsel.comtwinsenliang.nettwitterios.com
+twk.cc
+twmsuf.comtwoarmy.com
+twoear.comtwplink.xyz
+twsapp.com
twscholar.com
+twsyue.com
twszs.com
+twtime.vip
twtstudio.com
twwtn.com
twwtn.nettwyuxin.com
twyxi.comtwz1t32lzy.comtwzilla.comtx-exhibition.comtx-livetools.comtx-trans.com
tx009.com
+tx1588.com
tx163.com
+tx2003.comtx29.comtx5d.com
+tx8869.comtx8j.com
+tx9968.comtxbanche.com
+txbapp.com
+txbimg.com
+txbond.com
+txbyod.com
+txcdns.com
+txcfgl.com
+txcgoo.comtxcm365.comtxcm365.nettxcx.com
+txcxpt.com
txdai.com
txdzs.com
txdzw.comtxfeiyu.com
txffp.com
+txfund.comtxga.comtxgirl1.comtxgirl2.com
+txgtmy.com
txh00.com
+txhsya.comtxitech.com
+txjhqh.comtxjsjgs888.comtxjy689.com
txlivecdn.comtxlt.com
txlunwenw.com
txmcu.com
txmkf.comtxon.net
txooo.com
txqcw.nettxqq789.com
txrjy.com
+txrpic.com
txrzx.com
txsdk.comtxsf.com
txssw.com
txsxm.com
+txt321.com
+txtbbs.com
+txtduo.comtxtshuku.orgtxttool.com
+txtyxg.comtxwb.comtxweekly.com
txwestart.comtxwy.comzyplayer.com
+txxbxx.comtxy6666.comtxy8.com
+txyapp.com
txybk.com
txyes.com
+txyfwq.comtxyscdn.comtxyscdn.net
txzad.comtxzb.app
+txzing.comty-group.net
ty-im.comty-tyre.comty2y.comty3w.net
+ty8621.com
+tybaba.com
tybai.com
+tyc100.com
+tychio.net
+tychou.com
tycimages.comtyclport.com
+tycqxs.comtycredit.com
+tydcdn.comtydevice.comtydns.cc
+tydtpf.comtyfo.comtygameworld.com
+tyhjzx.com
+tyi365.comtyihome.comtyjenwtptg.cyou
+tyjnkj.com
tyksl.com
tylls.com
+tymcdn.com
tymjwater.com
+tyn.cc
+tynlwx.com
tyntiepai.comtyorient.com
+tyouai.com
+typany.comtype.sotypecho.worktypechodev.comtypeeasy.nettypicalgame.com
+tyqian.comtyr8.comtyrantg.com
tyrbw.com
+tyread.com
+tysdmh.comtysj365.comtysjyjy.comtyst.cc
+tysurl.com
tyszy.comtytgigty.com
tytlj.comtytuyoo.com
+tytzzy.comtyuanlv.com
tyust.nettyututy.com
+tyuyan.com
+tyuyan.net
tywangcai.comtywh.comtywheels.comtywx.comtywxw.la
+tyxcdn.comtyy6.com
tyymt.comtyyujie.com
+tyzhjx.comtyzhyun.com
+tz.app
tz100.com
tz121.comtz12306.com
+tz1288.com
+tz1980.com
tz887.com
tzada.com
+tzbank.com
+tzbank.net
tzbao.com
tzcpa.com
tzcul.com
tzfdc.comtzfeize.xyz
+tzfile.com
tzfpa.comtzgcjie.comtzgkuci.com
+tzgsjc.comtzhospital.com
+tzhubo.com
+tzhwcc.com
tzidt.com
+tzjtjx.comtzjwrml.com
tzjxl.comtzkameng.com
+tzkciz.com
tzlib.net
tzlmt.com
tzm66.comtzmpqcfr.comtzqingzhifeng.com
+tzqytv.com
tzres.comtzrl.comtzshipping.net
tzsnw.comtzsports.com
tzsti.comtzsucai.comtzswatch.comtztrzjt.com
+tztusi.comtzujian.com
tzvtc.com
+tzwpco.comtzxingtang.com
+tzxwzx.com
tzyun.com
+tzyyao.com
+tzyzdp.com
+tzzhkj.com
+tzzszb.com
u-cdn.com
u-cdn.netu-lights.com
u-mro.comu-om.comu-onewatch.com
u-qun.com
+u-road.comu-softtech.com u.bizu.sbu.toolsu005.comu062.com
+u10010.com
+u10086.comu14.comu148.netu17.comu17i.comu17t.comu1n1.comu21a.comu22e.comu248.com
+u2j2ha.comu2sz.com
u365hotel.comu3dc.com
u3dcn.com
u3dol.comu3l120di51.comu3v1adybl4.comu3v3.comu51.comu520.netu58.com
u5wan.com
u69cn.com
u6jghq6m.shopu72.netu77.com
+u8.comu8164i46a4.comu88.com
+u8qpyx.comu8sy.comu8yb16b993.comu8yx.comu9h.com
+u9time.comu9u8.comu9u9.com
u9wan.com
+uaff7j.com
uahh.siteuakwezgc.com
uancf.comuandi-wireless.comuao-online.com
+uao.souaomprvw.com
zyoung.meuauc.net
uavvv.com
ub-os.com ub.cc
+ub8020.com
ub997.com
+ubaiyi.comuban.com
ubangmang.comubeethiesemo.comubeihai.com
+ubersz.comubestkid.comubetween.com
+ubgame.com
+ubicdn.com
+ubijoy.comubiquant.comubismartparcel.com
+ubixai.comubixioe.comubja.vip
+ublese.comubmconlinereg.comuboat100.com
+uboxol.com
+ubs001.comubssdic.comubtrobot.com
+ubuant.comubuntukylin.comubuntukylin.orgubuntuqa.com
ubuuk.comubviguuu.sbsuc-test.comuc-union.com
uc108.com
uc129.comuc1z.comuc23.netuc56.com
uc666.com
uc669.com
ucacc.comucai123.comucaiyuan.comucaiyun.com
+ucancs.comucantech.comucantech.netucarinc.com
+ucassc.comucb6.com
ucbug.com
uccastore.com
uccpd.comucdchina.com
ucdok.com
ucdrs.net
uceau.com
+ucgslb.comucgslb.info
+ucgslb.net
+ucgslb.topuchangdi.com
+uchiha.ltd
uchis.com
+uchoice.ccuchuanbo.com
ucicq.com
ucigl.comucigroup.org
ucjoy.com
+ucl0ud.comucloud-edm.com
ucloud365.comucloudadmin.com
ucloudapi.com
ucloudgda.comucloudnaming.comucloudnaming.infoucloudnaming.net
ucloudoss.comuclouds3.comucloudstack.comucloudstack.netucloudstor.comuclouduewaf.comucloudufile.comucly.netucmmine.comucnaming.com
ucnaming.infoucnaming.net
+ucnano.com
+ucnest.com
+ucpaas.comucpchina.com
+ucpopo.com
ucreate.group
ucren.com
+ucss.ninjauctwydx.com
ucun.techucuntech.com
ucuuc.comucw.pub
ucweb.com
+ucying.comuczhidao.comucziliao.com
+udache.comudacity.comudalogistic.comudamall.comudangjia.com
+udashi.com
udbac.comuddtrip.com
+udecig.comudeskcs.comudfspace.comudid.vinudns.devudonmai.com
udows.comudpwork.comudragons.com
+udream.comudsdown.xyz
uduan.comudxd.com
uebilling.com
uebuilder.net
+uecook.com
+uedbox.com
uedna.com
uedsc.comueeshop.comuehchina.com
+uehtml.com
ueibo.com
+uelike.comuemo.netueno-china.comuenu.com
uepei.com
ueren.comuestcedu.com
uestcgxcd.comuestcliuxue.comuetianshanyp.com
uetir2550.comueuz.com
uewaf.comuewjh812bnv.cc
+uf-crm.comuf-tobacco.com
ufanw.com
ufcap.com
+ufenqi.com
+ufhost.comufhosted.comufida-lcwy.comufidaoa.comufileos.comufirefly.com
ufizl.comufo.club
ufoer.com
+ufojoy.comuformwater.com
ufotm.com
ufqsi.com
ufsoo.com
ufyct.com
ug888.comugainian.com
+ugang.shop
ugapi.com
ugapk.comugbb.com
+ugdesk.com
+uggame.comuggd.com
ugirls.tv
+ugmars.com
ugmjd.com
ugnas.com
ugnas.xyzugnx.net
ugojp.com
ugong.comugoshop.comugostar.comugreen.cloudugreengroup.comugshare-img.com
ugslb.com
+ugslb.info
ugslb.net
ugslb.top
+ugslb2.net
ugsnx.comugsvscw.comugtemfeu.com
ugubl.net
ugxsd.com
uhabo.com
uhaom.com
+uhaozu.com
uhasadmin.com
+uhbthn.com
uhmlx.comuhomecp.com
+uhomes.com
+uhouzz.com
+uhp.cc
uhs68.com
uhsea.comuhuibao.comuhuitong.comuhuwang.com
uhvsy.com
+uhzcdn.comui100day.comui63.com
+uibaba.com
uibep.com
uibim.com
uibmm.comuibot123.com
+uicats.comuicmall.com
uicom.net
uicool123.com
uid75.com
uidec.com
+uidev.tech
uidev.xyzuihacker.comuiiiuiii.com
+uik.ccuil.inkuileader.comuimaker.com
uimix.comuincall.comuincall400.comuinchat.com
uincom400.comuipaas-assets.comuipower.com
uisdc.comuisheji.comuishijie.comuisnetwork.com
uisrc.com
uiste.com
uitab.com
+uitool.net
+uiu.ccuiuihub.com
uiusc.com
uiwow.com
ujakn.comujia007.comujianchina.net
ujiaoshou.com
+ujinbi.comujing.online
+ujipin.com
+ujiuye.com
ujmjk.comujnfdfv.com
+ujrq1m.com
+uju365.comujxs.com
+uk-edu.comzyoulun.comuk86.com
+ukeban.comukelink.comuker.netukh5.com
ukiea.com
ukkcw.com
+ukongm.comukonline2000.comukoo.netukosgolfcart.com
+ukpass.org
ukpathway.comukplanking.comukubang.comukui.org
ukulelecn.comukve4smo9gapv.comukvisacenterd.comukworldsale.comulab360.comulanzou.comulaojiu.com
+ulapia.comule.com
+ule.hk
+uleapp.com
+ulecdn.com
uleek.netulgrobot.com
+uliang.vipuliangwang.comuliaobao.comulikecam.com
ulikecam.mobiulikecam.netulikepic.com
+ulinix.comulixirglobal.com
ulpay.comultracachenode.comultramanol.com
ultrarisc.com
ulucu.com
ulzdk.com
+um.run
+umajor.net
+umaman.comumaszdc.comumb.ink
+umbpay.comumcloud.com
umdac.com
umeijiaju.comumeng.co
umeng.comumeng.onlineumeng100.comumengcloud.comumenglog.comumetrip.comumhejot.comumihome.com
umilu.comumindex.comuminsky.com
umiwi.com
umiwx.comumjicanvas.comuml-tech.comumlchina.com
+umlife.net
umpay.comumpxkvtt.com
ums86.com
+umsamd.comumva-china.comumvcard.comumvsoft.com
+un-bug.com
+un.orgun10086.comun1c0de.xyz
+una-ad.comuna-campaign.comunaming.infounaming.netunasdwarfs.com
uncbd.com
unccr.comuncle-ad.comuncle-chen.comuncleda.com
uncledesk.comunclenoway.comunclenoway.netunclenowayapi.com
uncletalk.comunclicks.comunder-5.shopunderfill.ccundoifyouwant.site
uneed.com
+unfish.netungifts.comuni-bielefeld.deuni-forest.comuni-perfect.comuni-ubi.comunibear-security.shop
unibeauty.netunibizp.com
+unicde.comunicloud.comunicloudgov.com
004837963.xyz
unicom-cz.comunicomgd.comunicomjnwy.comunicomlife.comunicompayment.comunicompayment.netunicompayment.orgunicomtest.comunicon-hibar.comunicornacg.comunietec.netuniexhibition.comunifl-networks.comunifull.comunifycarbon.comunigress.com
+unilaw.net
+unimtx.com
uninf.com
uning.comuninstall-tools.com
+uninto.com
uniny.comunion-4.comunion-game.com
union-net.comunion-tio2.comunion400.comunion555.comunioncyber.netunionpay.comunionpay.netunionpay95516.ccunionpayintl.comunionpaysecure.com
uniontech.comunionwebpay.comuniostay.com
uniow.comuniproud.comuniscope.comunisedu.comunisemicon.com
unisguard.com
+unishy.com
+unisoc.comunisound.com
+unispc.comunispim.comunissoft.com
+unistc.comunistrument.comuniswdc.comunited-water.comunitedbank.ltdunitedmoney.com
unitek-it.comuniteyun.comunithelper.com
+unitod.comunitrans-agency.comunitweld.comunitymanual.comuniv-bio.comuniversity-hr.comuniview.com
univsport.com
+uniwaf.comunixhot.comunixidc.com
unjmz.comunjs.comunlimax.comunlimithealth.comunlockcodenumber.com
unmou.com
+unnnnn.com
unogenius.com
unpcn.comunqu.com
+unsedu.comzyouexpress.com
+unshan.com
+unspay.com
unsuv.comunzg.com
+uochen.com
+uodzhx.com
uoeee.comuoevtxmx.com
+uoften.com
+uoj.acuoko.comuomg.comuomo.cc
uomoo.comuomrcipa.comuonline-sh.comuonline-sh.netuono4521.comuooconline.com
+uooioo.com
uoolu.com
uooss.com
+uooyoo.com
uoozi.com
uos56.comuostools.comuouo123.comuovf39.siteuovz.comup-pharma-gx.com
up360.com
up368.com
+up4dev.com
up550.comup71.comupai.comupaidui.comupaiyun.comupanboot.com
+upanok.com
upanshadu.comupantool.com
upashance.comupasqyw.com
+upbiao.comupbz.net
+upcave.com
upcdn.netupchina.comupchinapro.comupchinaproduct.comzyou100.comupdeals.comupdf.com
updrv.comupe.netupeaoktc.com
upecp.comupengyou.net
upesn.comupetmart.comuphicoo.comupho2015.com
+uphong.comupimgku.comupin.com
upkao.comupkk.comuplinux.com
uplookedu.com
uplooking.com
zyops.comupoutdoorsco.comupowerchain.comuppershop.hk
uppsd.comupqzfile.comupqzfilebk.com
+ups001.com
ups88.net
+upsapp.comupsclan.com
+upst86.comupsunet.comuptougu.comupupbug.com
+upupoo.comupupview.com
upupw.netupvr.netupwardsware.comupwater.net
upwith.meupx8.com
upyun.comupyunso.com
upzcf.com
upzxt.com
+uqbike.com
uqche.comuqd1.netuqee.comuqeegame.com
uqiba.comuqidong.comuqidong.netuqipower.com
uqite.comuqitong.comuqjhxfea.sbs
uqseo.com
+uqtool.comuqualities.com
uqude.comuqulive.comurart.ccurbanchina.orgurbanmatters.comurbanwy.comurbetter.comurbetter.neturcb.comurcities.com
+urfire.comurgaffel.comurgc.neturhimalayanak.com
uril6.comurit.comuritebio.comuritest.com
uriwh.com
+url.cyurl7.me
urlos.comurmuyhz.comurology.wiki
urovo.com
urovo.neturovoworld.comurpwcei.comurq7wvyumzfdi5.comursb.meurselect.comurtrust.comurumqi-air.comurwkcgpt.com
ury8n.sbs
us-ex.com
+us0.meusa-idc.com
usaapcups.com
usaas.net
+usaedu.net
usahaitao.comusakongjian.netusalink.xyz
usaliuxue.comusaphoenixnews.com
usashopcn.comusayouma.com
+usbing.com
usbmi.com
usbzh.comuschinagreenfund.com
uscnk.com
+usdcny.net
+usdxz1.com
+usdxz1.net
use-trust.comuseaudio.comusecubes.com
uselesses.comuseragentinfo.com
+userbp.comuserhostting.comuserresearch.netuseryun.net
useso.comushendu.com
ushengame.comushinef.comushknews.com
ushui.com
ushui.net
usidt.com
+using.clubusingwin.comusinspirationfcg.comusitrip.com
+usj.cc
usjuw.comuskkvanl.sbsuslawchina.comuslk.netusniuku.com
+usnook.comusocialplus.comusoftchina.com
usonetrip.com
+uspard.comusplanking.com
+ustack.com
+ustalk.comustc.eduustcers.comustclug.org
ustui.comusuixdv.com
usuredata.com
usuuu.com
uszcn.comut8d.comutan.comutanbaby.com
utbon.com
+utc-ic.com
+utecbj.comutecexpress.com
utepo.comutermux.devutfinancing.comutgd.netutofairy.comutogame.comutom.design
+utoper.com
utopiafar.com
utoppromo.comutourworld.com
utovr.comutowekcr.comutrainee.comutransm.com
+uttjhu.xyzutuqafcr.comutvmuvpi.comuu-proxy.com
uu-xs.net uu.cc uu.meuu1.comuu11.comuu11441.com
+uu1314.com
uu178.comuu22552.comuu22772.comuu37.comuu38.com
uu456.comuu66.com
uu661.comuu6o.comuu89.com
uu898.com
+uu8okm.xyzuuaa.netuucl.vip
uucnn.comuucqrdmk.com
+uueasy.com
uuecs.com
uuedutech.com
+uufund.com
+uufuns.com
uugai.com
+uugame.com
uugtv.comuuh5.comuuhdedu.comuuhimalayanqm.comuuid.online
uuimg.comuuisoas.xyz
+uukkuu.comuuliaoning.com
uulux.com
uumachine.com
+uunice.comuuns.comuunt.com
uuoog.comuupages.com
uupan.netuupaotui.com
uupei.com
+uupoop.comuupt.comuus8.com
+uusama.com
uusee.com
+uusite.com
uusky.com
uusoo.net
uusos.comuustory.com
uustv.com
+uutils.com
uutop.comuuu.ovhuuu9.com
+uuulan.com
uuumi.netuuuo.com
+uuusss.com
uuutu.com
+uuvisa.com
uuvps.com
uuwtq.comuuwx.lauuxn.com
uuxs.infouuxs.tw
+uuyoyo.com
+uuzham.comuuzhufu.comuuzo.netuuzuonline.comuuzuonline.netuuzz.comuuzz.net
+uvcdns.comuviewui.comuvledtek.comuvlv75moy8.comuw36gicu5xav.comuw3c.comuw9.net
uwa4d.comuwan.comuweitui.com
+uwenku.comuwn.comuworter.comux18.comux6.comux87.com
uxacn.comuxdc.netuxdzpmz.comuxengine.net
uxfyv.comuxiangzu.comuxianhu.com
uxicp.com
uxigo.comuxin.com
uxingroup.comuxiting.comuxiu.vipuxpi.net
uxuncloud.com
+uya100.comuyan.ccuyang.co
+uyanip.com
uycnr.com
uyess.com
+uyhjnm.comuyi2.com
+uyiban.comuyiqggpa.comuynsdkoactive.storeuyou.comuyouii.cool
+uyouqu.com
uyr85.xyzuyshipin.comuyun-cdn.comuyunbaby.comuyuncdn.net
+uyunce.com
uyuuy.xyz
+uyuyao.comuzai.comuzaicdn.com
uzhix.com
uzhuangji.net
uzise.comuzkqymgs.comuzosibzk.comuzshare.comuzy.xyzuzzf.comv-56.comv-beautysalon.comv-danci.comv-lz.comv-mate.mobi v.bizv.tov007.netv0668tm614.com
v0719.comv114.comv1bo.comv1h5.com
+v1lady.com
v1pin.comv1tx.com
v1zhushou.comv2b3.comv2ex.cc
+v2geek.comv2kt.com
+v2make.comv2vm.com
+v3best.com
v3edu.orgv3kyo4wb8i.comv3mh.com v4.ccv479.com v5.cc
+v5.com
+v5.netv50307shvkaa.artv57fkxl1009r.shop
v5875.com
v5bjq.comv5cg.com
v5dun.net
v5fox.com
+v5jn8.shopv5kf.comv5music.comv5pc.com
v5ppt.com
+v5shop.comv5tv.com
v5waf.com
+v6c.ccv6eq34ykhek5.com
v6lvs.comv6ok.com
v6vip.com
v6yes.comv78q.comv814.comv84z6a854d.comv8a5rasf64.comv8gb.comv9022f162g.comv977.comv9b5n91.comva-etong.com
+vaakwe.comvacepcvu.com
+vacmic.com
vadxq.com
vaedu.net
+vaeliu.com
vafox.net
+vaicdn.comvaillant99.com
+vainpz.com
vakku.comvalinbl.comvalinresources.comvalue500.com
valuecome.comvaluedshow.comvaluepr.netvalueq-sea.com
+valueq.comvalueur.comvalurise.com
valveshow.com
vamachina.comvanbaolu.comvancarr.comvance-commerce.com
vanch.netvancheer.comvanchhandheld.comvanchip.comvanchiptech.com
+vanchu.com
vancl.comvanclimg.comvandream.com
+vanfun.com
vangotech.comvanguardstars.comvankang.com
vanke.comvankeservice.comvankeservice.mobivankeweekly.comvankeytech.com
vanlinkon.com
+vanmai.comvanmatt.comvannauto.com
+vanqun.com
+vanrui.com
vanshopay.com
+vanvps.comvanward.comvanwardsmart.com
+vanyee.net
+vanzol.com
vaopo.com
+vapeel.comvapps.mevaptcha.comvaptcha.net
+varena.comvariflight.comvarmilo.comvart.ccvas.inkvasculpt.cloudvasdgame.com
vasee.com
+vaslco.com
+vasoon.comvastlandsc.comvastsea.comvastteq.comvatdydw.com
vauoo.com
vautoshow.comvaydeer.com
vayol.com
+vbango.comvbaoxian-cib.com
+vbbobo.com
vbidc.comvbiquge.com
+vbmcms.com
+vbmnmy.com
+vbsemi.com
+vbuluo.com
vbzct.com
vc800.com
+vcbeat.net
+vcchar.com
+vcd.iovcdisgd.com
+vceshi.netvcg.comvchangyi.com
+vchat5.com
vchatshow.comvchello.com
vcimg.com
vcinchina.com
vckai.comvckbase.comvcloud-byte.com
vcloudapi.com
vcloudgtm.com
vcloudgtm.net
vcloudstc.com
vcloudstc.net
vcloudvod.com
vclusters.comvcmiuyorqczxvv.world
+vcnews.comvcode.cc
+vcomic.com
vcomputes.com
+vconew.comvcooline.comvcore.hkvcpdemo.comvcredit.com
+vcrfiw.lol
+vcsint.comvcsmemo.comvctianshanvs.comvctranscode-ac48db18.com
vcudu.com
vcxpe.com
vdaye.com
vdbet.comvdiagnostic.com
vdian.comvdisk.me
vdjgv.comvdncache.comvdncloud.com
vdndc.comvdnplus.comvdnplus.net
vdnsv.comvdnyuwwq.comvdolady.comvdongchina.comvdson888.comvdx9.com
vdyoo.comve-imcloud.comve-trafficroute.comve-trafficroute.netve70.com
vearne.ccvebaike.comvecdnlb.comvecentek.comvecloudgame.com
vecrp.comvectonio.lolvectorplaces.comvedamobi.comvedcdnlb.com
+vedeng.com
+veding.com
vediotalk.comvedsalb.com
+veecar.comveefdev.comveelink.com
veeqi.com
veeqi.netveer.com
veervr.tvveeteam.comveevlink.comveew-alb-cn1.comveew-alb-cn2.comveew-alb-ts.com
+vegalb.com
+vegslb.com
vegtm.net
veicplive.com
+veikei.com
veilytech.comveinbase.com
+veirun.com
veiso.vipvejianzhan.com
veken.comvekinerp.com
+velasx.com
velep.comvelledq.comvelocaps.com
vemarsdev.comvemarsstatic.com
vemarsweb.com
vemic.com
vemte.com
vemvm.com
+vendue.vipvenlvcloud.com
+ventoy.netvenucia.comvenuscn.comvenustrain.com
vephp.com
+veqxiu.net
verdareto.comvergilisme.comverify5.comverisilicon.comverisyno.comverodillan.comvertciot.comvertical-china.comvertuonline.comveryapex.comveryark.com
verybeaut.com
+verycd.comverycdn.net
+verydg.comverydns.netverydoc.net
+verydz.com
veryevent.com
veryfast.site
verygrass.comverygslb.comverygslb.netveryhappy.pwveryhuo.comveryide.com
+veryim.com
veryitman.comverykuai.com
verym.com
+veryns.com
+veryol.comverypan.comverysource.comverystar.netverysync.com
+veryvp.com
veryweibo.comverywind.com
veryxiang.comveryzhun.com
veshop.jpvestack-beta.comvestack-cicd.comvestack-preview.comvestack-sandbox.com
vestack.cloudvesystem.com
vetscloud.comvevsmize.com
veyvq.com
+vez.mevf5c.comvfcdnrd.com
vfcsz.com
vfinb.comvfinemusic.com
+vfocus.netvftfishing.com
vfuke.net
vfund.org
vfvdf.com
+vfx123.com
+vg.com
vg173.comvg89qeas3xagd.com
vgabc.comvgbaike.comvgctradeunion.comvgemsys.com
+vghall.comvghimalayandm.comvghimalayanet.com
+vgjump.com
+vglook.comvgnclub.com
+vgoapp.com
vgooo.com
+vgoyun.com
+vgtime.comvgunxpkt.com
+vgyuhu.com
vhall.comvhallyun.comvhao123.com
vhengdata.com
+vhilyq.com
+vhisxs.com
vhong.comvhostcp.comvhostgo.com
+vhshub.comvi21.net
vi586.comvia-cert.com
+viaeda.comvial.ccviarmour.comvibaike.comvibit.cc
+vibmro.com
+vibrou.com
vic18.com
+vicchen.mevicigaming.com
vickn.comvicovico.comvicp.ccvicp.iovicp.netvicpalm.com
+vicrab.com
+vicsdf.comvictory-inflight.com
viczz.comvida-bio.com
viday.orgvideaba.comvideo-study.comvideo-voip.comvideocc.netvideofty.com
videohupu.comvideoincloud.comvideoipdata.comvideomind.cloud
videomind.netvideougc.comvideoxiaoyouxi.comvideoyi.comvideoyx.comvidmate.mobividmate.netvidmatefilm.org
+viecoo.comvieg.netvienblog.comvientao.comviewones.com
viewstock.comviewtool.com
viewtrans.comvigtm-meeting-tencent.com
+viigee.com
+viisan.comviitalk.com
+viixin.com
vijos.org
+vikduo.com
+vikecn.comvilipix.comvilives.comvillachina.comvilladay.com
viltd.comvimage1.comvimage2.comvimage3.comvimage4.com
vimge.comvimicro.com
+vimiix.comvimin.cc
vimiy.comvimlinux.com
+vims04.com
+vimsky.com
+vin114.netvincentqin.techvinchin.comvinehoo.comvinetreetents.comvingoojuice.comvingoostation.com
vinjn.comvinkdong.comvinlion.com
vinnywang.comvinsondata.comvioletgo.comviolinerhu.comviolinstudy.netviolinww.comvip-chn.comvip-vip-yzzy.comvip-wifi.comvip.com
vip10000.club
+vip120.comvip1280.net
+vip150.comvip3-kisdofodl-iusfio.com
+vip800.comvip8849.comvip9982.netvipappsina.comvipbaihe.com
+vipbla.comvipbuluo.com
vipcaocao.comvipchina.com
vipcn.com
+vipcto.com
+vipdlt.comvipersaudio.comvipexam.orgvipfashion.comvipfengfei.comvipfengxiao.comvipfinal.comvipglobal.hk
vipgs.netvipgslb.com
+viphxw.comvipjingdong.com
vipjinron.com
vipjr.com
vipkaoyan.net
+vipkid.com
vipkidcdn.comvipkidresource.comvipkidstatic.com
vipkj.net
vipkoudai.com
+viplao.com
vipleyuan.comvipliangmei.com
+viplux.comvipmaillist.com
vipmalljf.com
+vipmro.com
+vipmro.netviponlyedu.com
+viposs.comvippapi.comvippluspai.com
+vipqdd.com
+vipqlz.comvips100.comvipshop.comvipshopyao.comvipsinaapp.comvipskill.comvipslib.com
+vipsmt.com
+vipsrc.com
vipstatic.comvipstore.com
viptarena.com
viptijian.comvipwzswl.com
+vipxap.comvipxdns.comvipxdns.infovipxdns.net
vipxf.comvipxs.lavipyaya.com
vipyl.comvipyooni.comvipyz-cdn1.comvipzhuanli.comviqq.com
+virbox.comvircloud.netvirosin.orgvirscan.orgvirtualevent.netvirusdefender.netvisa027.comvisa163.comvisa198.comvisa800.com
+visaai.comvisabao.comvisacits.com
visadeguo.comvisaforchina.orgvisaforkorea-bj.comvisaforkorea-cd.comvisaforkorea-gz.comvisaforkorea-qd.comvisaforkorea-sh.comvisaforkorea-wh.com
+visajx.comvisas.tovisasoo.com
+visaun.comvisbodyfit.comviseator.comvishavideo.comvisheng.com
vishining.comvishoor.comvisinextek.comvision-systems-china.comvisionandview.com
visionbbs.comvisionchinashow.netvisioncloudapi.comvisionhacker.comvisionly.orgvisionstar-tech.comvisionunion.comvisionvera.comvisitsz.com
+viskem.comvista123.comvistastory.comvisualchina.comvisvachina.comvitagou.com
+vitagou.hkvitamio.netvitamio.org
+vitamio.tv
+vitarn.com
vitechliu.comviterbi-tech.com
+vitian.vipvivantecorp.com
+vivcms.comvividict.com
vivigouwu.com
+vivijk.com
viviv.comviviwin.comvivo.comvivo.xyzvivoglobal.comvivojrkj.com
+vivokb.comvivosjpt.com
+vivotc.com
vivst.com
viwik.com
vixiu.com
vixue.com
+viyuan.com
+vj24co.comvjgmcoqs.comvjhibht.comvjia.com
+vjiazu.com
+vjifen.com
+vjread.com
vjshi.comvjzogyz.com
+vk6.mevk6oqcevmd1a.com
+vk8.co
vkaijiang.com
vkehu.com
+vkemai.com
vkjsq.com
+vklaua.comvkoolhf.comvkrtzzc.com
+vksir.zone
+vksoft.comvku6.comvkua.comvl80.comvlabstatic.comvlabvod.com
vlan9.comvland-official.comvlandgroup.com
vlcms.comvlfdedektor.com
+vliang.com
vlight.mevlightv.comvlinkage.com
+vlinke.com
+vlion.mobivlong.tvvlongbiz.comvlss.com
vlssu.com vm.sgvm7.com
vm888.com
vmaes.comvmall-hw.com
vmall.comvmallres.comvmartaw.comvmax-lighting.com
vmaya.comvmbbkuihoy.cfdvmdo.net
+vmecum.com
vmengblog.com
vmeti.comvmic.xyzvmicloud.comvmkj.netvmoiver.comvmonkey.mobi
+vmovier.ccvmoviercdn.com
vmsky.com
vmvps.com
+vmylan.com
vname.com
+vnanke.com
vndej.com
vnet.mobi
vnnox.comvnpy.com
vntfj.comvnymvnu.com
vnzmi.com
vobao.com
vocalmiku.com
+voccdn.comvocinno.comvod-qcloud.com
+voddlb.comvodeshop.com
vodjk.comvodn-valve.comvodplayvideo.netvodtcbk.comvoguechinese.com
voguelife.net
vohringer.com
+voice9.comvoicedic.comvoicer.info
voicer.me
+voidcc.comvoidking.com
+voidme.comvoip366.comvojs.tv
vokop.comvol.moevolc-dns.comvolc-dns.netvolc-dns.pubvolc-embed.comvolcadocean.comvolcadvc.comvolcalb.comvolcanicengine.comvolcautovod.comvolcbiz.com
+volcca.com
+volcca.netvolccdn.comvolccdn1.comvolccdn2.comvolccloudidentity.comvolcddos.comvolcddos001.comvolcdem.com
+volcdn.comvolcdns-test.comvolcdns-test.netvolcdns.comvolcdns.pubvolceapi.comvolceapplog.comvolcecr.comvolcecw.comvolcenginapi.comvolcengine-dns.comvolcengine-dns.netvolcengine.comvolcengine.netvolcenginealb.comvolcengineapi.comvolcenginedns.comvolcenginedns.netvolcenginepaas.com
+volces.comvolcfake.comvolcfcdn.comvolcfcdnbyte.comvolcfcdndvs.comvolcfcdnplus.comvolcfcdnrd.comvolcfcdnsc.comvolcfxgjrtm.com
volcgroup.comvolcgslb.comvolcgtm.comvolchina.comvolciad.comvolcimagex.comvolcimagex.netvolcimagextest.comvolcmagicpage.com
volcmcdn1.com
volcmcdn2.com
volcmcdn3.com
volcmcdn4.comvolcmgs.comvolcmlt.comvolcmusecdn.comvolcocic.comvolcopjrtm.comvolcpartner.comvolcpartner.netvolcsirius.comvolcsiriusbd.comvolcspaceeduc.comvolctracer.com
volctrack.comvolctraffic.comvolctranscdn.com
volcvideo.comvolcvideos.comvolcvms.comvolcvod.comvolcwaf.comvolcwaf001.com
voldp.com
+voleai.com
volit.comvolleychina.orgvoltmemo.com
+volumes.cc
volvocars.comvomicer.com
+voming.com
+vonets.com
vonng.com
+vonwei.comvoo0.com
vooec.comvooedit.com
voole.com
voole.net
+voopoo.comvoovlive.comvoovmeeting.com
vortexfun.comvosvmamt.comvot8.comvote001.com
vote8.comvoxlearning.com
+voxpie.com
voycn.com
+voyooo.comvp3u.com
+vp6.co
vpadn.comvpal.comvpalstatic.comvpansou.comvpascare.com
vpbus.comvpcs.comvpea.ca
+vpgame.com
vpgamecdn.com
vpiaotong.com
+vpimg1.com
+vpimg2.com
+vpimg3.com
+vpimg4.com
+vplay8.comvplayer.netvpmagic.com
vpn39.comvpnsoft.netvpquc9rn.com
vps.dance
+vps.im
+vps234.com
+vps911.com
vpsaa.com
vpsaa.netvpscang.com
vpsce.com
vpser.com
vpshu.com
+vpsjxw.com
vpsno.com
+vpsoff.net
vpsor.com
vpsplayer.comvpspurchase.com
vpsrb.com
+vpssir.com
vpsss.net
vpssw.com
+vpsvip.com
vpszh.comvpyd4zs.shop
vqlai.comvqq.comvqs.comvqskrzmq.comvqu.show
vqudo.comvqudochina.com
+vr-cat.com
vr186.com
+vr2.tvvr42.comvrbeing.comzyoogame.com
vrbig.comvrbrothers.com
vrbt.mobi
vrcfo.comvrdiamondtools.com
vrjie.com
vrp3d.comvrpinea.comvrpowder.com
+vrqjcs.comvrqq.orgvrrw.net
vrsat.com
vrtyg.com
+vrupup.comvrvlink.comvrvmanager.comvrwuhan.com
vrycw.comvrzb.comvs-gascloud.com
+vsaker.com
vsane.com
vsaol.comvsbclub.com
+vsbuys.comvscenevideo.com
+vscops.com
vsean.netvsearch.club
vsens.com
+vshabo.comvshangdaili.comvsharecloud.comvsharing.com
vshoucang.comvshouce.comvsjwtcdn.com
vslai.comvsmquvds.com
+vsnoon.net
+vsnoon.orgvsochina.comvsocloud.comvsooncat.comvsooncloud.com
vsoontech.com
+vsping.comvspk.com
+vsread.com
vssou.com
+vsszan.com
+vstart.net
+vstecs.com
vstmv.comvstonefund.comvstonewealth.com
vstou.com
vsuch.comvsun.comvswatch.shop
vsx10.comvsyo.comvsyy.net
+vtache.comvteamgroup.com
+vtears.com
+vtepai.com
+vtepai.net
+vtibet.com
vtool.vipvtoutiao.cc
+vtrois.com
+vtron.site
vtuzx.com
+vue-js.comvue5.com
vue88.comvuejs.pressvuepush.comvuevideo.netvukfnqr.com
+vulbox.comzyoo.net
+vultr1.comvultrcn.comvultrvps.com
+vunion.net
vurl.link
vurl3.vipvutimes.com
+vux.li
+vuxmpw.com
+vuz.mevv-tool.com vv.ccvv8.com
vv881.com
vv8yx.comvv91.comvv91.net
vvbin.com
vvbtc.com
+vvddcc.com
+vvdeal.com
vvebo.vip
+vvfeng.comvvgroup.com
vvhan.comvvhcwpddaa.comvvhunter.comvvic.com
vving.vipvvipcdn.comvviptuangou.com
vvjob.com
vvjuh.comvvmeiju.com
vvo2o.com
+vvpgwg.xyzvvpncdn.com
vvstc.com
vvtor.comvvup.net
vvvcd.com
vvvdj.com
vvvtt.com
+vvzero.comvwanjia.com
+vwaycn.comvwhulian.com
+vwo50.club
+vwvvwv.com
+vwwmsd.com
+vx.com
vx888.netvxe.com
+vxe6tg.com
vxgps.comvxia.netvxiaocheng.comvxiaoxin.comvxinyou.com
+vxo7tu.comvxposed.com
vxras.comvxuepin.com
vxuey.comvxv.inkvxwo.comvxxsfxxs.com
+vycool.comvycxvgmk.com
vyh9v.appvyin.com
+vynior.comvysj.com
+vyuan8.com
vyujz.comvz41.comvzan.ccvzan.com
vzhan.net
+vzhang.net
vzhantong.com
+vzhifu.net
vzhou.netvzhuanba.com
+vzhuji.com
vzhuo.comvzhushou.com
vzidc.com
vzkoo.com
vzsgz.comvztkoegc.comvzuu.com
+w-e.ccw-zhong.com w.bizw032.comw03voavpa5.com
w0663.com
+w0lker.comw0x9r0k2l1.comw10a.com
w10xitong.com
w10zj.com
w123w.com
w1365.comw18.net
w1989.com
w1w9h07t.shopw2008.storew218.comw2bc.com
w2gou.comw2n5cu58rn.com
+w2solo.comw333.com
w3cay.com
+w3cbus.com
+w3ccoo.comw3cfuns.comw3chtml.comw3cjava.comw3cschool.ccw3ctalk.comw3ctech.comw3cways.com
w3pop.com
+w3tool.comw3tt.com
w3xue.com
+w5soar.comw6ma169jfd.shop w7.cc
w7000.comw7ghost.netw83hm344aqd.shopw8k.wikiw8xitong.comw918.comwa5.com
+wa5as4.com
+waaaat.com
+waahah.xyz
+waakee.com
waaku.com
+waakuu.com
+wabcw.info
wabuw.com
wacai.comwacai365.comwacaijizhang.comwacaiyun.comwacaoren.net
wacdn.com
wader1714.com
wadkj.comwaduanzi.com
+waerfa.comwaf-website.com
wafcn.comwafunny.com
wafzi.comwaha.ccwaheaven.com
+wahlap.com
+wahyao.com
waibao123.comwaibao12333.comwaibaodashi.com
+waibou.com
waig8.com
waigf.comwaiguofang.com
waihui580.com
waihui888.comwaihuigu.net
+waihuo.com
waiji.comwailaishop.com
wailaizhe.com
wailiantu.comwailianvisa.com
waima.comwaimai.zone
waimai101.com
waimai361.comwaimaimingtang.comwaimaiwanjia.comwaimao6.com
waimaoniu.netwaimaoribao.comwaimaozhuge.comwaimungfire.comwainconnector.comwaiqiangban123.com
waiqin365.com
waitingfy.comwaitsun.comwaiyuedu.comwaiyuku.comwaizaowang.comwajiquan.comwajueji.comwakaligong.comwakatool.comwakedata.comwakeofgods.com
+wakeup.funwakingsands.com
+wakkaa.com
+wakuai.comwal-valley.comwal8.com
+walahe.comwalanwalan.comwalatao.comwalekan.comwali.comwali123.comwalibao.com
walimaker.com
walk-live.comwalkerdu.comwalkingpad.comwalknode.comwalkthechat.com
+wallba.comwallcoo.comwallcoo.netwalle-web.io
wallet.iowalletio.iowallstcn.comwallstreetcn.comwallswitch.comwalsongreenhouse.comwaltoncentral.com
+waluer.comwamawama.com
+wamila.com
+wan.ccwan.comwan1234.comwan123x.com
+wan160.com
wan25.com
wan32.com
wan5d.com
wan68.com
wan73.com
wan77.comwan8.com
+wan886.com
+wan898.com
wan95.comwanandroid.comwanbaapp.comwanbaoju.comwanbiao800.com
wanbiaogs.comwanbiaohao.com
wanbiaoke.com
wanbk.netwanbushu.comwanbuyu.comwancaiinfo.com
wancaomei.comwanchangerp.comwanchaohotels.com
wanche100.comwanchemi.comwancheng168.comwanchengwenku.com
wanchenzg.comwanchuweilai.comwanci.ccwancibp.comwancili.com
wanda-cti.comwanda-gh.comwanda-group.comwandacinemas.comwandaclub.cc
wandafilm.comwandahotelinvestment.comwandahotels.comwandaph.comwandaplazas.comwandarealm.comwandasportstravel.comwandavista.comwandhao.com
+wandhi.comwanding.netwandingwangluo.comwandodo.comwandoer.com
wandongli.comwandouip.com
wandoujia.comwaneziyuan.comwanfangche.comwanfangdata.comwanfangqikan.comwanfangs.comwanfangtech.comwanfangtech.netwanfantian.comwanfucc.comwanfuqianqiu.com
+004678.comwang-li.comwang-nan.comwang-russell.ccwang0214.comwang1314.comwang1314.net
wangaiche.com
wangamela.com
+wangan.com
wanganedu.comwangbixi.comwangcaio2o.comwangcaiwang.comwangcanmou.comwangchanggou.comwangchao.dewangchenglin.icuwangchujiang.comwangchunsheng.comwangcms.comwangdahn.comwangdaibus.comwangdaicaifu.comwangdaidongfang.comwangdaijiamen.com
wangdalao.comwangdali.netwangdaodao.comwangdianmaster.comwangdongjie.comwangdu.sitewangeda.comwangeditor.com
wangejiba.comwangfujing.comwanggou.comwangguai.comwanghaicheng.online
wanghaida.comwanghaifeng.netwanghanyue.com
+wanghao.me
wanghe.tvwanghongluo.comwanghualang.comwanghuinet.com
+wanghz.com
+wangid.comwangjianshuo.comwangjiezhe.com
wangjubao.comwangjumeng.xinwangjunwei.com
+wangkl.comwanglanying.com
+wangle.com
wanglibao.comwanglingyue.comwanglu.infowangluoxiangmu.com
+wanglv.com
+wanglv.vipwangmei360.comwangmeng.comwangmingkuo.comwangmou.comwangpeiaiot.comwangpiao.comwangpiao.net
+wangpu.net
wangpu365.com
wangpuzhi.com
+wangqi.comwangqingzx.comwangren.com
wangrunze.comwangschoolservice.comwangshangfayuan.comwangsherong.com
wangshidi.comwangshitou.com
+wangshu.lawangshuashua.com
wangshugu.comwangsongxing.com
+wangsu.com
+wangsu.netwangsucloud.comwangsuedge.comwangsuedge.netwangsutong.comwangt.ccwangtaishipin.comwangtingrui.comwangtongtong.com
+wangtu.comwanguan.comwanguokang.comwanguoschool.comwanguoschool.netwanguotong.comwangwanglive.com
wangwango.comwangweiluo.com
+wangwo.netwangxc.clubwangxiangyule.comwangxiannen.comwangxianyuan.comwangxiao.netwangxiaobao.ccwangxiaobao.comwangxie.orgwangxing.comwangxingcs.comwangxingrenhb.comwangxinhao.comwangxinlicai.comwangyangyang.vipwangyanpiano.comwangye6.com
wangyeweb.comwangyeyixia.com
wangyikai.comwangyin.comwangyinmao.comwangyou.comwangyou.inkwangyou2.comwangyouhangkong.comwangyuan.comwangyuedaojia.com
wangyulue.comwangyunf.comwangyuwang.comwangzhan123.netwangzhan31.comwangzhan360.comwangzhanbao.ccwangzhanbianji.comwangzhanchi.comwangzhantuiguang.netwangzhanzj.comwangzhe.comwangzhengzhen.comwangzhennan.com
wanh5.com
+wanhea.comwanhebin.comwanheweb.com
wanhi.comwanhongbao.comwanhongindigo.com
wanhongji.comwanhu888.com
wanhuabao.com
wanhuahai.comwanhuajing.com
wanhui365.comwanhuida888.comwanhuiya.comwanhunet.comwanimal1983.org
+wanjia.orgwanjiachupin.com
wanjiashe.comwanjiashow.comwanjidashi.comwanjiedata.comwanjiedu.comwanjing111.comwanjunda.netwanjunshijie.comwanjutoy.com
+wanka5.comwankacn.comwankacn.net
wankamall.comwanke123.comwanke798.com
wankukeji.comwankuwl.comwanlaiwang.com
+wanlan.vip
wanli.comwanliangfan.asiawanlicd.comwanliduo.comwanliniu.com
wanlitong.comwanliugolf.comwanliyangbo.com
+wanmei.com
+wanmei.netwanmeidapei.comwanmeilink.comwanmeilr.comwanmeiyunjiao.comwanmi.cc
wanmi.comwanmingpiano.comwannaenergy.comwannaexpresso.com
+wannar.com
wanneng56.comwannengxiaoge.com
wannengzj.com
wannianli.netwannianli2.comwannianli8.comwannianli9.comwannianqingjianzhan.comwannuoda.comwanplus.com
wanqh.comwanqianyun.com
wanqiu123.comwanqiula.com
wanqutong.com
wansf.com
wanshahao.comwanshancha.comwanshangding.comwanshanshuju.comwanshifu.comwanshifuapp.comwanshitong.comwanshouyou.net
+wanshu.comwanshuiqing.com
wanshuyun.com
wansongpu.comwansudu.comwansusyj.com
want-want.comwantexe.comwantgame.netwantiku.comwantong-tech.netwantouzi.netwantowan.comwantquotes.netwantuju.comwantumusic.com
wantwords.net
+wantwu.comwanwan4399.comwanwang.com
wanwang.space
wanweixin.comwanwudezhi.comwanwuelian.com
wanwumall.comwanwupai.comwanwusc.com
wanwushuo.comwanwuxia.comwanwuzhinan.comwanxiangqihang.comwanxiangshu.comwanxiangyouxian.comwanxiaochu.comwanxiaoyou.com
wanxie.ccwanyabox.com
+wanyan.comwanyanwang.comwanyico.com
wanyijizi.com
wanyiwang.com
+wanyol.com
+wanyoo.comwanyouw.com
wanyouxi7.com
wanyr.comwanyuanxiang.comwanyuanyun.com
wanyuenet.comwanyuhengtong.comwanyuhudong.comwanyujy.comwanyumi.comwanyunshuju.comwanyuproperty.com
wanyuwang.com
wanyx.com
+wanzcm.comwanzhoujob.com
wanzhoumo.com
wanzhuang.comwanzhuangkj.comwanzhuanlea.com
wanzhucdn.comwanzhugs.comwanzi.cc
wanzi.com
+wanzia.comwanzjhb.comwanzuile.comwaoo.cc
+wapone.netwapresents.com
waptt.comwarchina.comwarcraftchina.com
warestage.comwarhammertech.comwarmchina121.com
warsk.comwarsongmobile.comwarstudy.com
warsu.comwarting.comwaruixinxi.comwarwickintl.com
+warwww.comwas-expo.com
+wasabi.fun
+wasair.com
wasanfeng.com
wasd.plus
wasee.com
washpayer.com
+washun.comwasintek.comwasoinfo.comwasu.comwasu.tvwatch-life.netwatch-space.com
watch-top.net
watch1905.comwatch4s.comwatchadmin.comwatchbooking.com
watchdios.comwatchds.comwatcheschep.comwatchesreplica.czwatchessolds.com
watchlead.comwatchleader.comwatchok.netwatchreplica.ccwatchreplica.cowatchreplica.storewatchreplica.vipwatchreplicaswiss.comwatchrm.com
watchshfw.comwatchsos.com
watchsos1.com
watchstor.comwatchtop.comwatchtraveler.com
watchwxfw.comwatchzb.comwater520.comwaterfallguilin.comwatergasheat.comwaterlytech.comwatertek.comwatertu.comwatyuan.com
wauee.com
wauee.net
wave-game.comwave-optics.com
+wavecn.comwavedsp.tech
waveshare.net
+wavideo.tv
+wavpub.com
+wawacm.comwawadns.comwawayaya.netwawlhld.com
waxiaoxia.comwaxrain.comwaxsivk.comwaxxh.meway2solo.comwayboosz.com
+waycdn.comwayhu.cc
+wayhu8.com
waylon.onlinewaynetechs.com
wayos.com
wayosbill.comwayoulegal.comwayoumi.com
+wayoxi.comwaypons.comwaysundata.com
+waytit.comwaytoagi.com
+wayzim.comwazhuti.com
+wb0311.com
wb133.com
wb321.com
wb521.net
wb699.comwb86.comwbangdan.comwbb-electric.com
+wbbcdn.comwbby.net
+wbcm55.comwbdacdn.comwbgt.netwbhgwbnd.comwbiao.co
wbiao.comwbiao120.comwbiaoge.com
wbiaohome.com
wbimg.com
+wbo529.com
wboll.com
wbolt.com
wbpvc.com
wbrks.com
wbsdz.com
wbstq.comwbsz.comwbt5.com
+wbtech.comwbthghi.com
+wbw.imwbxinxi.com
wbzol.comwc-soft.comwc44.comwcbygame.com
+wcd.im
+wcfang.com
+wch-ic.com
wch17.com
+wch666.com
+wchfgd.com
wcjbb.comwcjm.org
+wclbox.com
+wcloud.com
wcode.net
+wcqjyw.com
+wcsapi.com
+wcsapi.net
wcsfa.comwcsteasker.com
+wcuhdi.comwcwlmobi.com
wcxjs.com
+wcxlib.com
+wcyecs.comwczydns.com
+wd-ljt.com
+wd1266.com
wdace.com
wdadj.com
wdakm.xyz
+wdashi.comwdaveh5game.comwdcloud.biz
wddcn.com
wddns.netwddream.comwdeab01.com
+wdexam.comwdfangyi.com
wdfok.com
wdfxw.netwdgf.com
wdghy.com
wdiyi.com
wdj21.com
+wdjimg.com
wdjky.com
wdkao.com
+wdkkvx.xyzwdku.net
+wdkud6.com
wdlny.comwdmagnet.comwdmcake.com
wdmse.com
wdmuz.com
wdnld.com
wdodo.com
+wdomob.com
wdptj.com
wdres.com
wdsrc.comwdstory.com
wdstq.com
wdszb.comwdtec.ccwdtuishu.comwduw.com
wdw88.comwdwd.com
wdwlb.com
+wdxmzy.com
+wdxtub.com
wdy33.com
wdy44.com
wdyxgames.comwdzj.comwdzx.com
+we.com
+we1130.com
we123.comwe2.name
we278.comwe2marry.com
we378.com
+we4399.comwe4game.com
+we7.ccweachat.netweakyon.comwealink.com
weand.com
weaoo.com
weapp.comweapp.mewearemanner.comwearesellers.comwearevisualanimals.com
wearosbox.comweartrends.comweasing.comweather.com
weatherat.com
weathercn.com
weatherdt.com
weatherol.comweavatar.comweaverdream.comweaversoftware.com
weavi.comweaview.comweb-miji.comweb-tinker.comweb0518.comweb0898.net
web100.cc
+web176.comweb1800.comweb2060.com
+web265.netweb3.xinweb3389.com
web360.pwweb3caff.comweb3ling.com
web89.net
+web930.com
+webank.com
webankapp.com
webankcdn.netwebanktcftp.netwebankwealth.comwebankwealthcdn.netwebetter-ad.comwebfalse.comwebfont.comwebfoss.comwebfreecounter.comwebfuwu.comwebgame138.comwebgame163.comwebgamehome.comwebgetstore.com
+webgzs.com
+webhek.com
webhivers.comwebjike.comwebkaka.comwebkdcdn.com
webkf.net
webkv.comwebmaster.mewebmeng.netwebmulu.comwebofknowledge.comwebok.me
webok.net
+webond.net
weboss.hk
webpackjs.comwebportal.ccwebpowerchina.com
+webqxs.com
+webrtc.winwebsbook.com
websem.ccwebseo9.comwebshao.com
+webshu.netwebsitedesigninhouston.netwebsjcdn.comwebsocket-test.comwebsoso.com
webtrncdn.comwebullbroker.comwebullzone.comwebuy.ai
webuy.vipwebview.techwebworker.techwebxgame.com
+webxin.com
+webxmf.comwebyang.netwebyounger.comwebzzcdn.com
wecarepet.com
+wecash.net
wecasting.com
+wecatch.mewecenter.comweceshi.com
+wechat.com
+wechat.orgwechat77.com
wechatapp.com
wechatify.netwechatlegal.netwechatos.netwechatpay-global.com
wechatpay.comzyoffice.com
zymxp.comweclassroom.comwecloudx.com
+wecom.workwecorretoradeseguros.com
wecrm.com
wecrm.net
wecycling.comwed6.com
wedate.me
wedcm.com
weddingos.comwedengta.comwedfairy.comwedn.netwedoctor.comwedooapp.com
+weebei.com
+weebia.comweedong.com
weeet.comweefang.com
weeiy.com
+weekus.com
weelv.com
+weeqoo.com
+weexun.com
+weeyun.com
+wefans.com
wefinger.clubwefitos.comwefunol.com
+wegame.com
wegameapi.comwegamedeveloper.comwegameplus.comzymreal.com
+wegene.com
weharvest.comwehefei.com
wehelpwin.comweherepost.comwei-ben.com
+wei-ze.comwei2008.comwei6.comweiaixiaoshuo.comweiba66.comweibaji.comweibanan.comweibang.vipweibangong.comweibanzhushou.com
weibilamp.comweibo.co
weibo.comweibo.tvweibocdn.comweibohelper.com
+weiboi.comweibolj.comweibopay.comweibopie.comweiboreach.comweibosci.comweiboums.com
weibowang.netweiboyi.comweibozn.comweibusi.net
weica.netweicaifu.com
weicewang.comweichaishi.com
weichaung.netweicher-sz.comweichewl.comweichuming.comweico.cc
weico.com
weicon.cc
+weicot.comweida888.com
weidanbai.comweidanci.comweidaohang.org
weidaoliu.comweidian-inc.com
+weidian.ccweidian.com
+weidian.ggweidiancdn.comweidianfans.com
weidiango.comweidianmishu.comweidown.comweidulinchang.comweidunewtab.comweiduruanjian.com
weiengift.comweifang666.com
weifenghr.com
weifengke.com
weifengou.comweifengtang.com
weifenpay.com
weiforyou.netweifrom.comweifujd.com
weigongju.orgweiguan.comweiguang.ccweiguanlaw.com
weihai.tv
weihaibsy.comweihaicollege.comweihaipoly.comweihaisheng.comweihaobang.comweihaoyi.comweihua2.comweihubao.com
weihuijob.com
weihuitel.com
weihulian.comweihuo.site
weihz.netweii.ccweiixxin.comweijianmen.comweijingzhijia.com
weijinsuo.com
+weijiu.org
weijiuxin.com
weijj.com
weijq.com
weiju.netweijuju.com
+weikao.comweikaowu.comweikasen.comweike.fmweikeimg.com
weikelink.comweikengtech.comweikeqi-biotech.com
+weikuw.com
weilai555.comweilaicaijing.comweilaili.comweilairzdb.comweilaishidai.comweilaitianwang.comweilaitianwang.infoweilaitiku.comweilaiyunxiao.comweilaizhaiju.comweilaizhushou.com
+weilan.comweilan27.com
weilandog.comweilanliuxue.comweilansu.comweilanwl.comweilayun.com
weile.comweileapp.com
weilegetu.comweilekuiming.comweilenicetime.comweileryiyt.comweilihealth.comweiling520.comweilingapp.comweilinggame.comweilinovel.netweilitoutiao.netweilongshipin.com
weilt.net
+weimai.comweimaqi.net
weimeifan.netweimeigu.net
weimen.huweimi24.comweimiaocaishang.com
weimingcq.comweimingedu.comweimingkids.com
weimingxt.comweimisystem.comweimizhengxing.com
+weimob.com
weimobapp.comweimobcloud.comweimobdc.comweimobqa.com
weimobwmc.comweimoka.com
weinan.cc
weinengkj.comweinisongdu.com
weinm.com
weiot.netweiouyishu.comweipaitang.comweipano.com
weipe.vipweiphone.comweiphone.net
+weiphp.com
weipinchu.comweiping.comweipu-he.com
weipu.com
+weipu.liveweipuhj.comweiputek.comweiq.com
weiqiaocy.comweiqiaoyun.comweiqidaxing.com
weiqiming.comweiqinfang.com
weiqingbao.ccweiqitv.comweiqudao.netweiquyx.com
+weiren.com
weiruipai.net
weisanyun.com
+weisay.comweishadian.com
+weishan.ccweishan2015.comweishang99.netweishangagent.comweishangmh.comweishangshijie.comweishangtui.vipweishangye.comweishengrc.com
+weishi.com
weishi100.comweishigz.com
weishipin.com
weishu.meweisiliang.com
weismarts.comweistang.comweisuda.net
weisurvey.comweisuyun.comweisyun.comweitehui.comweitiaozhuan.comweitiewang.com
+weitip.comweitoupiao.com
weitousuo.com
weituibao.comweitunit.comweituobang.netweitushe.comweiunity.com
weivd.comweiwall.com
weiwangpu.comweiwangvip.com
weiwanjia.comweiweixiao.netweiweixiong.comweiweiyi.com
weiwenjia.com
+weiwom.com
+weiwss.comweiwuhui.comweixiangshe.comweixianmanbu.comweixiaoduo.comweixiaohan.comweixiaoi.com
weixiaoqu.comweixiaotong.com
weixiaov.clubweiximusic.comweixin-001.com
+weixin.com
weixin008.com
weixin111.comweixin12.comweixin12315.comweixinbang.comweixinbridge.comweixincall.comweixinduihuan.comweixingate.comweixingmap.com
weixingon.comweixingongzuoshi.comweixingv.comweixinhost.com
weixinhow.com
weixinjia.netweixinjiajia.comweixinju.comweixinkd.comweixinmuban.com
weixinmvp.comweixinpy.comweixinqing.comweixinqn.comweixinquanzi.comweixinrensheng.com
weixinsir.com
weixinsxy.comweixinyanxuan.comweixinyidu.comweixinyunduan.comweixistyle.comweixiu.nameweixiu2.com
weixiuchu.comweixiuka.com
+weixjn.com
weixue100.comweixueyuan.net
+weixun.comweixuncj.comweixunlogin.comweixunyunduan.net
weixz.com
weiyan.meweiyangx.comweiyapaper.com
weiye-alu.comweiye.me
+weiyes.com
weiyi.com
+weiyi.linkweiyichina.org
weiyiqibj.comweiyitec.com
weiyituku.comweiyituliao.com
weiyoubot.comweiyours.comweiyu98.comweiyueliang.comweiyueread.com
+weiyun.com
weiyun001.comweiyunchong.comweiyunjian.com
weiyuntop.comweiyunyingxiang.comweizhanabc.comweizhangjilu.comweizhangwang.com
weizhanle.com
+weizhi.com
weizhike.club
weizhipin.com
weizhivet.comweizhoudaoly.comweizhuangfu.comweizhuanji.comweizhuoc.storeweizoom.comwejianzhan.com
+wejias.com
wejoydata.com
weka.life
wekbo.com
wekuo.com
+welain.comwelansh.com
welaw.comwelcome-lt.com
+welcrm.comweledpower.comwelefen.com
+weleve.comweliads.com
+welian.comwelidaimkt.com
welife001.com
welife100.comwelinkpark.comwelk.cowellaide.comwellhope.netwellnode.comwellpie.comwellsoon.comwelltrend-edu.comwellwhales.com
welove520.comwelovead.com
+welqua.comwemagfmp.comweme.fun
wemediacn.comwemiquan.com
+wemomo.com
wemorefun.com
wemvp.com
wen38.comwenancehua.comwenancn.comwenangou.comwenanzhe.comwenbita.netwenbo.cc
wenbofund.comwenbothinktank.comwencaischool.comwenchain.comwenda100.net
wenda1000.comwenda123.comwendabaike.comwendaifu.com
+wendal.netwendangdaquan.comwendangmao.netwendangwang.comwendangxiazai.com
+wendax.comwendaxiaowu.com
+wenday.comwendian.com
+wendns.com
+wendoc.com
wendu.comwenduedu.comwendumao.com
wenfangcn.comwenfangjushe.comwenfangnet.com
+wengbi.comwengegroup.com
+wengem.comwengmeiling.comwenguang.comwenguangta.comwenguangzhineng.com
+wenguo.comwengzai.com
wenhaofan.com
wenhetong.com
wenhua.ccwenhuabolan.comwenhualvyou.netwenhui.space
+wenidc.comwenjian.netwenjianbaike.com
wenjiangs.comwenjiasu.comwenjingnetwork.comwenjingzhai.comwenjiwu.comwenju666.com
+wenjuan.ccwenjuan.comwenjuan.linkwenjuan.ltdwenjuan.netwenjuan.pub
wenjuanba.comwenjuanshow.comwenjuntech.comwenku.in
wenku.netwenku365.com
+wenku7.com
wenku8.cc
+wenku8.com
+wenku8.net
+wenkub.comwenkudao.comwenkudaquan.comwenkunet.comwenkuvip.comwenkuwenku.comwenkuxiazai.net
wenlc.comwenlian123.comwenlvlijiang.com
wenlvnews.comwenlvpai.comwenmeng.comwenmingban.comwenneart.com
+wenpie.comwenrouge.comwenryxu.comwensang.com
wenshaktv.comwenshao-art.comwenshen.netwenshen010.comwenshen8.netwenshendaka.com
wenshenku.comwensheno.comwenshenxiu.comwenshuba.comwenshubang.com
wenshushu.comwensiluo.comwenstech.comwensuocaster.com
+wenten.netwentihu.com
wentiquan.netwentiyi.com
+wenwen.com
wenwenren.com
wenwo.com
+wenwu8.comwenxiang.orgwenxiaoyou.comwenxiaozhan.comwenxiaozhan.net
wenxin-ge.com
+wenxiu.comwenxuan.newswenxuan666.com
wenxue100.com
wenxueapp.comwenxuedu.comwenxuee.comwenxuem.comwenxuemm.comwenxuesk.com
wenxuesk.infowenxuesk.netwenxuesk.orgwenxuetiandi.comwenyijcc.com
wenyoutai.com
wenyouyun.comwenytao.com
+wenyu6.comwenyucdn.comwenyupages.comwenzaizhibo.comwenzhangba.comwenzhanghui.comwenzhihuai.comwenzhouchayuan.comwenzhoumajiang.comwenzhoushuke.com
wenzhousx.comwenzhouzhongyuan.com
+wenzon.com
weoathome.com
+wepiao.com
wepie.comwepieoa.comweplaybubble.comweplaymore.com
+weplus.comweqoocu.comwereplicawatches.netzymkcdn.comwerewolf.onlinewerfactory.comwertalk.com
+wesane.com
+wescrm.com
wesdom.me
weshaketv.comweshequ.com
+weshine.imweshineapp.com
wesingapp.comwest-motion.comwest.xyzwest263.com
west95582.comwest999.comwestarcloud.comwestbund.artwestbund.comwestchinago.comwestcits.com
weste.netwestengine.comwesternxtheshow.comwestfutu.comwestinfosoft.comwestlaw.comwestleadfund.comwestonecloud.com
westpac.groupwestsecu.com
+westsh.comwestsummitcap.com
wesure100.com
+wetab.linkwetaoke.com
+wetest.netwetherm.comweti.me
weton.netwetools.comwetruetech.com
wetsd.comwetv.vipwetvinfo.comweui.io
wevul.comwewinpe.comwework-studio.comweworkcloudesk.com
+wewuhu.comwex5.com
+wexcdn.comwexguivq.comwexiaocheng.com
wexin.comwey.com
weyee.comweyesimg.com
weyhd.com
weyic.comweyiso.website
weyman.meweyo.me
+wezeit.com
wezhan.hk
+wezhan.net
wezhan.uswezhibo.net
+wezhibo.tvwezhicms.comwezhuiyi.com
+wf.pub
wf163.comwf66.comwfaozhuo.com
wfbbs.comwfbrood.com
+wfc805.comwfdaily.comwfdata.clubwfdj.netwfdsjls.com
wfeil.comwfek.com
+wff168.comwffc120.com
wffms.com
+wfhbjg.com
wfhero.onlinewfiltericf.comwfilterngf.com
wfits.com
+wfjgzs.comwfjienuo.com
+wfjimg.com
wfjjfzcjh.com
+wfjtjy.com
wfkji.com
+wflgjx.comwflushebei.comwfmzjscl.com
wfsanshan.com
+wftdrh.comwftvqcm.com
wfuke.com
wfuyu.com
+wfxyny.comwfy.pub
+wfzbjx.comwfzczdh.com
+wfzqhb.com
+wfzssz.com
wgcss.com
+wghaos.comwghostk.com
+wghpdi.com
wgimg.comwgkj.funwglh.comwglm.net
wgm66.comwgmf.com
wgnds.comwgos.com
+wgpsec.org
+wgsptc.com
+wgxdxx.comwgxy.comwgxy.netwh-baidu.comwh-charity.comwh-china.comwh-haipu.comwh-hsun.comwh-motorshow.com
wh-mx.com
+wh-qzj.comwh10000.comwh100idc.com
wh111.com
wh119.comwh12345szzx.com
+wh20zx.comwh2work.comwh50.comwh6z.com
+wh702g.ren
whairport.comwhalecloudexport.comwhalefall.spacewhalenas.comwhaletvlive.comwhaleunique.comwhalipaycs.comwhamspa.com
+what21.comwhatbuytoday.comwhatismyip.comwhatsns.comwhattheybuy.com
+whatua.comwhaudio.comwhbaishitong.com
whbbs.comwhbc2000.com
+whbcrs.com
+whbear.comwhbester.com
+whbgdt.com
+whbhsh.com
+whbjdn.com
+whbjyy.comwhbsybj.com
whbts.comwhbuilding.com
whbwj.com
whbws.com
whcat.netwhcbank.com
whcbs.com
whccb.comwhcch802.com
whcdc.org
whcfs.org
+whcgtx.comwhchenyi.com
+whcjfc.com
+whcjfq.com
+whckxx.comwhcotton.comwhcqedu.com
whcst.com
whctv.comwhcx365.com
+whcyit.com
+whdayy.com
+whdckj.com
+whddgc.com
+whdlfu.com
+whdlkj.comwhdonde.com
+whdqhj.com
whdrawing.com
+whdsyy.comwhduanwu.com
whecb.comwhecloud.com
whecn.comwhee.com
whegj.comwhenchat.netwhenever-online.comwherxian.com
whetc.com
whevt.comwhewash.comwhfamous.comwhfazun.com
whfby.comwhfeiyou.comwhfengli.com
+whflfa.comwhg6.comwhgaodu.com
whgaopeng.com
+whggjk.comwhggjtjs.com
+whggvc.netwhgh.org
+whghjt.com
+whgjzt.comwhgk.comwhgmbwg.com
+whgmxy.com
+whgszx.com
+whgtgh.com
whguo.com
+whgwbn.net
whgyt.comwhh3355.comwhh9988.comwhhaiyue.comwhhaxfjc.com
+whhbxh.org
+whhdcz.com
+whhdgk.com
+whhdky.com
+whhdmt.comwhhengchang.comwhhexin.comwhhk520.comwhhkbyg.comwhhmmbl.comwhhouse.comwhhpaccp.com
+whhryd.com
whhsg.com
whhuatian.comwhhuiyu.com
whhysound.com
+whhzhn.com
+whhzyj.comwhib.comwhichmba.net
whidc.com
whidy.net
whiee.com
+whinfo.netwhir.net
whisperto.netwhite-dolphin.comwhitebox.imwhitecat.com
whitecdnx.comwhitegem.netwhitemedia-china.com
+whitjy.com
whjbh.comwhjclgs.com
+whjcly.comwhjiaoy.comwhjjhbj.com
+whjldj.comwhjm.comwhjuren.comwhjy.net
whjyx.com
whjzw.net
whjzy.netwhjzyxh.orgwhkakaxi.comwhkc.com
whkcy.com
whkingdom.com
whkjz.comwhkpcnc.com
+whkykj.comwhlabor.com
+whland.comwhlangxing.comwhlawyer.netwhlgchache.com
whlib.com
+whlido.com
+whljyl.com
+whlkwy.comwhlovehome.com
+whlrhd.com
+whly56.com
+whlynk.com
+whmama.comwhmeigao.comwhminwei.comwhmj.org
+whmlcy.net
+whmnls.com
+whmnrc.com
whmnx.comwhmoocs.com
+whmxrj.comwhmylike.ccwhmylikekq.comwhnewcando.com
whnfc.com
+who.cx
zymc1.comwhocool.comwhoisreminder.netwhongtec.comwhoolala.comwhooyan.com
whosedrop.comwhpantosoft.comwhpanva.com
+whplmd.com
whptc.orgwhpx.net
+whqcbj.com
+whqhyg.comwhqianxing.comwhqtdjy.comwhqunyu.comwhrango.com
+whrayy.com
+whrazf.comwhrcbank.comwhrcw.ccwhrenai.com
whres.net
+whrhkj.comwhrl.net
+whrsip.com
+whrszx.comwhrtmpay.comwhsdsyy.com
whsir.com
+whsjfs.com
whskq.comwhsladz.comwhsladz.net
whsql.org
whsrc.comwhssxpx.comwhsw.netwhsxsy88.comwhsy.org
whsyy.net
whtbglass.com
whtbgroup.com
whtbq.com
whtby.com
whtcm.com
+whtdcb.com
+whtdlx.com
+whtdsc.com
+whtfzy.com
+whtime.net
+whtmhh.com
whtongyun.com
whtpi.com
+whtran.comwhtryine.com
whtto.com
+whttsy.com
+whtuff.com
whtxcloud.com
whtzb.orgwhu-cveo.com
+whu.ptwhualong.com
+whudfr.comwhudows.comwhuh.comwhuhzzs.com
whuss.comwhut-px.comwhutech.com
whvkk.com
+whvvbf.xyz
whwanshun.com
whwat.comwhwater.comwhwd.com
whwebsite.com
whweo.comwhwindplus.com
+whwkzc.comwhwlkths.comwhwm.netwhwm.orgwhwomensmarathon.comwhwuyan.comwhwx2018.com
+whwxxy.com
whxcy.comwhxh.comwhxinhuo.com
whxlv.com
+whxsdn.com
+whxunw.comwhxwxzxc.comwhxy.net
+whxyqb.com
+whxysz.net
whybh2015.com
+whycan.com
whyec.comwhyenjoy.comwhyestar.com
whyicheng.comwhyimingkeji.comwhyinzhimei.comwhyiqitong.com
whyongwei.com
whyqi.com
+whyrtc.comwhys558.com
whysb.orgwhysdomain.comwhyshop.com
whysodiao.com
whysw.org
whysx.comwhysxc2c.comwhyungu.com
whyunzhou.fun
whyyy.comwhzb.com
+whzbtb.comwhzc2008.com
+whzdyy.comwhzh-cw.comwhzhanyi.comwhzhongxin.net
+whzhtd.comwhzhuoyuan.comwhzhzxmr.com
+whzjyy.com
whzkb.com
whzph.com
+whzsrc.com
+whzwzk.com
+whzwzs.com
+whzxht.comwhzxzls.com
+whzydz.com
wicep.comwicp.netwicp.vip
wicresoft.com
widuu.com
wifenxiao.comwifi0917.comwifi188.comwifi6667.com
wifi8.comwifiapi.net
wifibanlv.com
wifichain.com
wificstia.com
wifidigyy.comwifidog.pro
+wifigx.comwifihell.com
+wifilu.comwifimsl.comwifinew.comwifinews.comwifiniu.com
+wifire.netwifisdk.netwifishenqi.comwifivpn.net
+wifiwx.com
+wifizj.com
+wiicha.comwiiteer.comwiitrans.com
wiiyi.comwikicaring.com
wikielife.comwikiimgs.comwikimirror.org
wikiyuedu.comwilddog.com
wilddream.netwildgun.net
wildhorde.com
+wildto.com
wiley.com
wilhb.comwillapps.comwillcdn.comwilliamslullaby.comwillsemi.comwillsfitness.netwillsgym.com
willwin91.com
+wiloon.comwimetro.com
+wimiar.comwin-haoxiang-win.com
+win-ke.comwin-man.com
+win007.comwin1032.comwin1064.comwin10cjb.com
+win10d.comwin10gw.comwin10net.comwin10set.com
+win10w.netwin10world.comwin10ww.comwin10xitong.comwin10zyb.comwin2007.comwin3000.comwin4000.comwin71234.com
win7china.com
+win7en.comwin7qijian.comwin7qjb.comwin7sky.com
win7w.comwin7xzb.comwin8.net
+win866.com
win8china.com
win8e.comwin8win.comwin8xiazai.comwinature.comwinbaoxian.comwinbind.net
+winbjb.comwinbond-ic.comwinbons.comwinbosmart.comwinbywin.com
wincheers.com
wincheers.net
wincn.com
wincome.groupwincoprint.netwind.inkwind.moe
windcoder.com
windfonts.comwindhamchina.com
+windin.comwindmsn.com
windows10.prowindows10zj.com
windows11.prowindows7en.com
windowszj.com
windrunner.me
winds.redwindsns.comwindspeedbike.comwindtch.comwindtourgame.comwine-world.com
wine9.comwinebar-pur.comwinegame.netwinemagz.comwinenice.comwines-info.com
winesinfo.comwinesou.com
wineworld.vipwinex-hk.comwinfang.com
winfanqie.comwinfreeinfo.comwing-id.comwingconn.comwinglinetrans.comwinglungbank.comwingoodparking.com
wingsbook.comwingtecher.com
+winguo.comwinhong.com
winicssec.com
winjoinit.comwinkingworks.comwinkkie.com
+winksi.comwinmoes.comwinndoo.comwinner-hitech.comwinner9.comwinnermicro.comwinnerracing.com
winnet.ccwinning11cn.comwinon.tmwinos.mewinotes.netwinotmk.com
+winrim.comwinrobot360.comwinsalesaas.comwinsenseos.comwinshang.comwinshangdata.comwinsing.net
winstoncc.com
+winsui.com
wintalent.comwinteam500.comwinterchen.comwinterta.lolwintimechina.com
wintodoor.comwintooo.com
wintopedu.com
+wintxt.com
+winvvv.comwinwebmail.com
winwin-co.comwinwin-hotel.comwinwin7.comwinwinchemical.com
+winxp8.comwinxuan.comwinxuancdn.com
winxw.comwinzonelaw.com
wio2o.com
wiot.hostwipanda.comwir5.icuwireless-driver.comwireless-tag.comwirelesschina-summit.comwiremesh001.comwirlesshare.comwisburg.com
+wisder.netwisdoing.comwisdom-braun.comwisdomcmmi.comwisdomwz.comwisdontech.com
+wisdri.comwise-iot.com
+wiseah.comwisecotech.comwisedoo.comwisedsp.net
+wisedu.com
+wisefx.comwisegotech.comwiseimp.comwiselong.ccwiselong.comwisenjoy.comwisestcloud.com
+wiseuc.comwisevector.com
+wish3d.com
wishbuild.comwishcad.com
wishcalls.com
+wishcc.comwishdown.comwishisp.comwisiyilink.com
+wismom.comwison-engineering.com
wison.com
wisrc.comwistone.com
wiswonder.comwit-parking.comwit0.com
witcp.comwitersen.comwith366.comwithcdn.com
withmedia.netwithpinbox.com
withwinds.com
+withzz.comwitmart.net
+witnew.netwitontek.com
witrn.comwitschools.com
witspring.com
+wiwide.comwiyt098.xyz
wiz03.comwj-chem.comwj-hospital.comwj-lean.comwj-time.com
wj001.com
wj166.comwjacloud.com
wjajw.comwjasset.com
wjccx.com
wjceo.comwjchuangheng.comwjdaily.comwjdhcms.com
wjdiy.com
wjdiy.net
wjfcw.com
+wjfilm.com
+wjgslb.comwjhh666.comwjhotelgroup.comwjhouses.com
+wjhtxx.comwjiaxing.comwjin.ccwjinmiao.com
+wjjfjt.com
+wjlkaz.com
wjlxmedia.com
wjmh8.comwjnin.cc
+wjpxgs.com
+wjqxmy.com
wjrcb.com
wjshw.com
+wjsldy.comwjsw.com
+wjtzyg.com
wjwuqiang.comwjwy.comwjx.comwjx.top
wjy01.comwjyanghu.comwjyh.comwjyt-china.orgwjyw.com
+wjzpgz.com
wk007.comwk2.com
wk613.comwk78.comwkai.ccwkandian.com
+wkbins.com
wkbrowser.com
wkcdn.comwkcmall.comwkcw.net
wkdcj.xyz
+wkderp.com
wkdty.com
wkepu.com
wkhub.com
wkimg.com
wklken.mewklm2018.com
wkmic.com
+wkopen.com
+wkread.comwksc.com
wkshipark.com
wkt41.appwktline.com
wkwl9.comwkyx520.comwkzf.comwkzk.comwkzuche.com
wl369.com
wl890.comwlai.vip
wlaiy.com
wlanadmin.com
wlanbanlv.comwlcbnews.com
wlcbw.com
wlcxx.comwld5.com
wldmarket.com
wldsb.com
wleye.comwlfimms.com
+wlgooo.com
wlgou.com
+wlhyxh.comwlinfor.com
wljy8.comwljyyjy.com
wlkgo.com
wlkst.comwlku.comwlmq.comwlmqfcw.com
+wlmqwb.comwlnh.net
wlnmp.com
wlphp.comwlplove.comwlqtpolytheatre.com
wlrjy.com
wlsgjslgy.com
wlski.comwlsrenzaocaoping.comwlstock.com
wlsvt.comwlsx.netwltieyaoban.com
+wluotx.comwlw-jcdlcxzx.comwlwj.comwlwujie.comwlwx.comwlwx.lawlwx.org
wlxit.comwlxmall.com
+wlxtbj.com
+wlxuan.com
wlxww.com
wlyfw.com
+wlyjbl.comwlyongli.comwlyoushi.com
wlzni.comwlzp.comwlzp.vipwm-dream.vip
wm-imotor.comwm-motor.com
wm090.comwm18.comwmathor.comwmbluegame.com
+wmc-bj.netwmc95588.comwmcloud.comwmcn.com
+wmdang.comwmfanyi.comwmgurt9zka425.com
wmhcn.net
wmiao.com
wmimg.com
wming.com
+wmintl.com
wmiyx.comwmjk.net
wmjrc.com
+wmjygg.net
+wmjyqd.netwmjyszba.comwmlunwen.comwmnd.netwmnetwork.cc
+zyl.me
+wmp169.com
wmphp.comwmpic.me
wmpvp.com
+wmpyol.comwmqt.netwmqzyyy.com
+wms100.comwmsjyun.com
wmsub.comwmszbpw.com
wmupd.comwmvideo.com
wmviv.comwmwm.com
+wmxcjj.com
+wmxpro.com
wmxue.com
+wmxxgy.com
+wmxxgz.com
+wmxxwh.com
+wmxxxj.com
+wmy-ad.comwmyqdmm.com
wmzhe.comwmzp.cc
wmzyw.com
+wn1998.comwn51.com
wn789.com
wnark.com
wnbsq.com
wncpp.net
wndhw.comwndihvx.comwndroid.com
+wnform.comwnhuifu.com
+wniecm.com
+wnjdtz.comwnkbyon.com
+wnkj88.com
wnlbs.com
wnllx.comwnlpromain.comwnlproyunying.comwnlprozhanxing.comwnlprozijia.com
+wnnyjx.com
wnote.comwnplayer.netwnrb.net
wnrcw.comwnshouhu.comwnsqzonebk.comwnssedu.com
+wntool.com
+wntzjt.com
wnuos.comwnwb.com
wnxfs.comwnzc.com
+wnzctc.com
+wnzhbb.com
wnzhuishu.comwnzy.netwo-link.techwo-smart.com
wo-voyage.com
wo-xa.com wo.cc wo.gs
wo113.netwo116114.comwo186.tv
+wo1990.com
+wo1wan.comwo87.comwoa.com
+woaanc.com
woaap.com
+woaide.com
+woaidu.org
woaifanyi.comwoaihaoyouxi.comwoaihuahua.comwoaihuoshan.comwoailai.com
+woaipu.com
woair.comwoaishouban.comwoaivps.comwoaixiao.com
+woaiyt.com
woaizhitu.com
+woaizr.comwoaizuji.com
woaoo.netwoaoocdn.com
+wobaif.comwobeili.comwobenben.com
+wobocn.com
wobu2.com
woc.space
woc88.comwocai.dewocaoseo.netwochacha.com
+wochaw.comwoda.com
+wodale.com
+wodasi.comwodavip.comwodcloud.comwode.imwodeabc.com
wodecrowd.comwodedagong.com
+wodeev.comwodeoffice.comwodescw.comwodeshebao.com
+wodeyt.com
wodidashi.com
wodingche.comwodingwang.com
+wodjob.com
+wodocx.com
+wodown.comwodu518.comwodunyun.com
+wofang.comwofangwang.comwofficebox.com
+wofjhs.com
+wogame.net
wogoo.comwohenizaiyiqi.comwoheschool.com
+wohst8.com
woi3d.com
+woiwrj.com
woiyu.comwojiacloud.comwojiaoni.comwojiuhuanle.comwok.comwokaola.com
+wokeji.comwokende.com
wokjb.comwoko.cc
+wol.tv
wolai.com
wolai.renwolaidai.comwolaidu1.comwolansw.comwolegou.net
wolezhibo.comwolf.ccwolfcstech.com
+wolfgo.comwolfguandan-01.comwolfguandan-02.comwolfguandan-03.comwolfguandan-04.comwolfguandan-05.comwolfogre.comwolianw.com
+wolife.comwolighting.comwoliuda.comwolizhai.comwolonge.comwolongge.comwolongmedia.com
wolongyin.comwolongyoule.comwolongzywcdn3.com
wolwo.ltdwolwobiotech.com
+wom186.com
womai.comwomaiapp.comwoman91.com
womei.org
womeifilm.comwomeime.comwomeimenye.comwomen-heart.comwomenjie.comwonadea.comwonder.wikiwondercv.comwonderful-pr.comwonderfulsz.comwonderjk.comwonderkun.ccwonderscloud.comwondersgroup.comwondershare.ccwondershare.comzyku.netwondershare.netwondersmemory.comwonderstar027.comwonderyouxi.com
+wondko.com
wonei.comwonengxing588.comwonfulplaza.com
+wongcw.com
wongpeace.com
woniu.com
+woniu8.comwoniubaoxian.comwoniucloud.comwoniuge.comwoniugm.comwoniuhuoche.comwoniupai.net
woniutrip.com
+wonmay.com
+wonmay.netwonnder.com
+wonote.comwonpearl.comwonplug.net
+woo.im
+wooaii.comwood168.netwood888.netwoodbridgebath.com
woodbunny.com
+woodnn.comwooffice.net
woola.netwooolab.comwooomooo.com
wooqx.comwoordee.comwoosmart.com
woowtcprc.comwooxhome.com
+wooyun.orgwoozooo.comwopaiyi.com
wopaw.com
wopus.orgwoqidege.comwoqifoundation.comwoqu.comwoquyun.com
+wor2d1.comword666.com
+wordlm.com
wordplay.workwordpress.lawordscan.networdscheck.com
wordsunny.comworkbenchapi.comworkchat.com
+workec.comworkehr.com
workerman.networkpcb.comworksoho.comworktile.comworktilemail.comworkyun.comworld-audio.comworld-pass.networld68.comworldbangmai.com
worldbank.orgworldbuy.ccworldcps.com
worldfcdn.comworldgoodvoices.comworldh5.comworldhello.networldhub.marketworldinout.comworldjiasu.comworldmr.networldpathclinic.comworldpowerliftingchina.comworldrobotconference.comworldscientific.comworlduc.comworldwarner.comworldwayhk.comworldwu.com
+wort.cloud
worthtech.net
worthy.ccworuide.net
wosai-inc.comwosaimg.comwosenmedia.comwoshanit.com
+woshao.comwoshenghotel.comwoshi100.comwoshipm.comwoshipt.com
woshiqian.com
+wosign.com
wosigndoc.com
+woskj2.comwoso100.comwotangka.com
+wotrus.comwotrust.com
wotta.netwotucdn.com
+wotula.com
wouju.comwouu.net
+wowcat.netwowchina.comwowenda.comwowenwen.com
wowo6.com
+wowoit.comwowomaifang.comwowoohr.com
+wowops.com
+wowoqq.comwowoshijie.comwowotech.netwowotuan.comwowoyoo.comwowoyou.comwowoyou.netwowozhe.comwowqu.cc
+wowsai.com
wowtb.com
+woxian.com
woxiaoyun.comwoxihuan.com
woxiu.comwoxuexue.comwoxuyuan.comwoyao998.comwoyaobaoliang.comwoyaodayin.comwoyaogexing.comwoyaojiaju.comwoyaoqiudai.comwoyaosouti.comwoyaoxiuxian.com
woyaozhan.com
+woying.comwoyonghj.com
woyoo.comwoyouche.comwoyoulo.com
+woyun.workwozaijia.comwozaixiaoyuan.comwozhangwan.comwozhishang.comwozhua.mobiwozhuan.comwozhuye.comwp-china-yes.netwp10.ccwpan123.com
wpceo.com
wpcio.comwpdaxue.com
+wpdian.comwpengapp.com
wpeuw.comwpgdadatong.comwpgdadawant.comwphonelife.com
wphun.com
wping.org
wpjam.comwpk8.com
wpmtp.comwporder.comwproedu.comwps-office.netwps.com
+wpscdn.com
+wpsdns.com
wpsep.net
wpsgo.com
wpske.comwpsmail.net
wpsoffice.comwpsplus.com
wptao.comwpweixin.com
wpxap.com
wpyou.comwpzhiku.com
+wq96f9.com
+wqbook.com
+wqc.so
+wqchat.com
wqcms.com
+wqcsjt.com
+wqdian.com
+wqdian.net
wqdsq.comwqgp.com
wqhfw.com
wqhjt.com
wqhunqing.com
wqian.net
wqiis.com
wqingjian.comwqketang.com
wqkxp.com
wqlin.comwqop2018.com
+wqqwmw.com
wqshe.comwqszwhf.com
+wqtool.com
wqudj.com
wquzu.comwqwlmxx.xyz
wqxsw.com
wqxuetang.com
wqycq.comwqyunpan.comwqzsc36ou356m.comwqzx.net
wrcdn.comwrdtech.com
wrfou.com
+wri.ccwright9.com
write-bug.comwritebp.comwritingartsociety.asiawritingo-editor.comwritingo.netwrjpcwr.com
wrjzj.com
+wrkdih.com
wrlsw.com
+wrltxt.comwrmfwgjwl.online
wrmjk.comwrsa.net
wrshg.com
+wrtnode.ccwrtnode.com
wrtsz.com
+wrxdsm.comwsaf.netwsandos.comwsbuluo.comwsc-expo.comwscdn30.com
+wscdns.comwscdns.info
+wscdns.orgwscdnss.comwscgdns.com
wsche.comwscloudcdn.comwscloudcdn.orgwsclouddns.comwscloudsec.comwscloudvpn.com
+wsclsb.netwscn.netwscoder.com
wscrm.net
wscso.com
wscstrace.comwscvdns.comwsdianzi.com
wsdks.com
wsdns.topwsdqd56.com
+wsdtex.com
wsdvs.com
+wsdvs.info
wsdvs.net
wsdvs.org
+wsecar.com
wseen.comwselearning.comwselearning.netwseqtza.com
wsfdl.com
wsfdn.com
wsfff.com
wsfgx.com
wsfnk.comwsgeogen.com
wsgjp.com
wsglb.net
+wsglb0.comwsglb0.info
+wsglb0.org
wsglw.com
wsglw.net
wsgph.com
wsgqj.com
+wsgtm1.com
+wsgtm2.com
+wsgtm3.com
+wsgxsp.com
+wshang.com
+wshbzc.comwshengda2009.com
+wshenm.comwshifen.com
wshost.cc
+wshoto.comwshtgame.com
wshttpdns.com
+wsimen.com
+wsipv6.com
wsisp.com
wsisp.netwsiv.netwsjx.net
wskam.comwslcode.com
wsljf.xyz
+wsloan.com
wsngb.com
wsonh.com
wsoso.com
wsoss.com
wsound.cc
wsoversea.comwsoversea.info
wsoversea.net
wsoversea.orgwsq.cool
+wsqejt.com
wsrxw.com
+wss.cc
wss.emailwss.inkwss.petwss.showwss.zone
+wssafe.netwssanguo.com
+wssdns.com
+wsssec.com
wssvs.com
wssvs.net
+wssyun.com
+wstong.comwstx.comwsukwai.comwsurl.ccwswebcdn.com
wswebcdn.infowswebcdn.orgwswebpic.com
wswebpic.infowswebpic.orgwsxa.comwsxc.me
+wsxcme.com
+wsxsdf.comwsy.comwsy7.comwsyglngy.com
wsyhn.com
wszjj.com
+wszkjs.com
+wszwhg.net
wt-px.comwt-tech.com
wt168.com
wt222.com
+wtaluo.com
+wtango.com
wtapi.com
wtbds.comwtbworld.comwtcmirni.com
wtcxs.com
wtd56.com
wtdex.com
wtdms.com
+wtfeng.comwtg7ew8cvzxbk.com
wtimm.com
+wting.info
wtkj.sitewtliker.comwtmicrowave.comwtmtest.comwtn-bearing.comwtn5.com
+wto168.netwto9000.com
wtoip.com
+wtojob.comwtoutiao.com
wtown.com
+wts999.com
+wtsimg.comwtsm.net
+wtsoft.net
wtszx.com
wttai.com
wttms.com
wtuce.com
wtwvision.com
+wtxcdn.com
+wtxcon.comwtzdrqz.comwtzw.comwu-mart.com
wu-mi.com
+wu.runwu35.comwu37.com
+wu7zhi.com
wuage.com
wuaihanfu.com
+wuaiso.comwubaiyi.comwubaiyi.netwubaiyi.vipwubashangban.com
+wubiba.com
+wubizi.net
wubizigen.netwublock123.comwubuxianjing.comwubx.netwuchenxu.comwuchuanghui.comwucuoxs.comwucuozi.com
+wuczfj.com
+wudage.comwudajucheng.com
wudang.ccwudangshan.com
wudao.comwudaola.com
wudaotech.comwudaotv.com
wudubook86.cc
+wuduyi.com
+wueasy.comwufafuwu.comwufangzhai.com
wufazhuce.com
+wufuba.com
wufun.net
+wufunb.comwugongdong.comwuguiyunwei.com
wuguyufen.comwugx.netwuhan-guide.comwuhan-tour.netwuhan-travel.com
wuhan.com
wuhananyu.comwuhanbaituo.comwuhanbiennial.comwuhanbus.comwuhanchengqi.comwuhancityofdesign.comwuhaneca.orgwuhanev.comwuhanfuke120.comwuhanfukeyy.comwuhanhexin.comwuhanins.comwuhanjingce.comwuhankb.comwuhanlanqing.comwuhanlengji.comwuhanly.comwuhanmarathon.orgwuhanmeigao.comwuhanmetro.com
wuhanopen.orgwuhanparking.comwuhanpe.comwuhanpep.com
wuhanport.comwuhanrt.comwuhantianqi114.com
wuhantskj.comwuhanunion.comwuhanup.comwuhanwyg.comwuhanxingfuwan.comwuhanyushidai.comwuhanzdq.comwuhanzhenye.comwuhao13.xinwuhaoha.xyzwuhenge.comwuhongsheng.comwuhouhaodian.comwuht.netwuhu.ccwuhuashe.comwuhubtv.comwuhujianshe.com
+wuhukj.funwuhusanlian.comwui5.comwuji-edu.comwuji.comwujianghongyi.comwujiangtong.com
wujiangzs.comwujiayi.vipwujidpj.comwujiecaifu.comwujiehd.com
wujiehuyu.comwujiexiang.com
+wujiit.com
wujijiasu.comwujinimg.comwujinkk.com
+wujiok.comwujixiaoshuo.comwujixsw.info
wukaikai.tech
wukao.com
+wukong.com
wukong.la
wukongapi.com
wukongbjb.comwukongkf.comwukongks.comwukonglicai.com
wukongphp.com
wukongrom.comwukongsearch.comwukongshuo.comwukongtj.comwukongwatch.comwukongwenda.com
wukur.comwukypay.com
+wul.ai
wulannews.com
+wuletv.com
wuli.wikiwuliangroup.comwuliannanjing.comwulianwangiot.comwuliaoo.comwuliaosi.comwuliapi.comwulicdn.comwuligeigei.comwulincdn.com
+wuling.comwulingauto.com
wulingnev.com
+wulinn.com
+wuliok.comwuliuhangye.comwuliujia2018.netwuliujie.comwuliuren.comwuliuyun.com
wulong365.comwulvxing.com
wumai.net
+wumart.comwumii.tv
+wuming.com
wuqing.ccwuqiong.infowuqizhen.comwurenjifanzhi.com
wuruihong.com
wuscn.comwuse.comwuse.inkwusefuwa.com
wusen.net
+wuseng.com
+wuseng.netwusenkj.com
+wusetu.artwushang.com
+wushen.comwushifublog.comwushuangol.comwushuangtech.comwushuangzl.comwushuhenan.com
wushuibao.comwushupeixunban.comwushuzw.comwushuzw.org
+wusong.comwusuhan.comwusunjiance.net
+wusunk.comwusuobuneng.comwusuobuneng.orgwuta-cam.comwuta.ccwutaishanfojiao.comwutanyuhuatan.com
wuteaclub.com
wutep.comwuthreat.comwutianqi.com
wutongguo.com
wutongtec.comwutongxiang.cc
wutos.comwutuojia.com
wuuconix.linkwuuxiang.comwuweijob.comwuweinongye.comwuweiyou.comwuwenjun.net
+wuwuju.comwuxi.comwuxiairport.comwuxiamh.comwuxianhaibao.comwuxiantu.comwuxianyaan.comwuxiaodi.comwuxiatools.comwuxibus.comwuxicxl.comwuxijia.comwuxijiekang.comwuximarathon.comwuximediaglobal.com
+wuxin.infowuxinban.comwuxingmu.comwuxinhua.com
wuxinmuye.comwuxitzjx.comwuxiwang.net
wuxiworld.com
wuxizazhi.com
wuxizazhi.netwuxs.orgwuxuwang.com
wuxzx.comwuyang-honda.comwuyangplatform.com
+wuyazi.comwuyecao.netwuyechaorenrcw.com
+wuyehr.comwuyenews.comwuyetongxin.com
wuyi.link
+wuyida.comwuyishan.net
wuyixinyi.com
wuylh.comwuyongwang.com
wuyou.com
wuyou.netwuyou189.comwuyoudagong.com
wuyoufang.comwuyoujianding.comwuyousy.comwuyouyun.ccwuyouyun.comwuys.comwuyu123.com
wuyuan.ccwuyublog.comwuyueit.comwuyuidc.comwuyukang.comwuyumin.comwuz7.com
wuzao.com
+wuzebo.comwuzhaiba.comwuzhenfestival.com
wuzhenpay.com
wuzhenwic.orgwuzhenwucun.comwuzhicms.com
+wuzhii.com
+wuzhiq.comwuzhiwei.netwuzhoucj.comwuzhoudonghui.comwuzhoukunyuan.comwuzhouqianzheng.com
wuzhourcw.comwuzhouwahson.comwuzhuiso.com
wvidc.comwvkygvmu.comwvmrczc.comwvshare.comwvxkezhg.com
+ww2bbs.net
wware.orgwwc-blog.com
+wwe008.com
wwenglish.com
wwenglish.orgwwentua.comwwepcbv.comwweuzgtp.comwwfchina.org
wwjia.com
wwjie.comwwkbiva.com
+wwmhdq.com
wwnet.vip
wwrcw.net
wws23.com
wwsgh.com
+wwstat.com
www-11187.comwww-123490.comwww-4466666.com
www-63608.com
www-76660.comwww-76660b.comwww-76660d.comwww-76660g.comwww-76660h.comwww-76660l.comwww-76660q.comwww-76660r.comwww-76660t.comwww-76660v.comwww-76660w.comwww-76660y.comwww-76660z.comzykjgame.com
+zykjct.com
+www.cc
+www.cgzykj0668.comzyjyyun.comzyjymall.com
+zyjthb.com
zyjoygame.comzyjiajuw.comzyiz.netzyixinx.comzyip.com
zyict.net
zyhot.comzyhobby.com
+zyhbxs.com
zyhao.comwww48-365365.comwww53119cc.comwwwbuild.netwwwcaobiav.com
wwwer.net
+wwwfkw.com
wwwic.net
+zyh365.com
+zygxxs.comwwwmdzx8.com
+wwwzzz.com
+wx-api.netwx-data.com
wx-youyan.net
+wx.com
wx135.comwx2share.com
+wx4.ccwx8s.com
wx920.com
wx939.comwxagame.comwxamedia.com
wxang.comwxaokai.com
wxappclub.comwxappvideo.comwxatech.com
wxavu.comwxb.com
wxb3d.comwxbhagv.com
+wxbiao.comwxblockchain.com
wxbqb.comwxbrandway.com
+wxbsgc.com
+wxc.cc
+wxccfz.com
wxcha.comwxchaoshengbo.comwxchina.com
wxchuguan.comwxcloudrun.com
+wxcsgd.comwxddlfsq.com
+wxdesk.com
+wxdgjx.com
+wxdhnt.comwxdiandongmen.com
wxdw.infowxeditor.comwxfhqchina.com
+wxfjky.com
wxfls.netwxfncjd.com
+wxfsgj.comwxgamemini.com
wxgateway.com
+wxggxx.comwxgrcpa.com
+wxguan.com
+wxgxjt.comwxgz.net
+wxhand.comwxhkexpress.com
wxhon.comwxhouse.comwxhudong.com
wxiao.netwxiaoai.com
wxiat.comwxivzhvp.comwxjgurb.com
wxjiaogun.com
+wxjkcd.com
+wxjmar.com
wxjoi.com
+wxjsgs.comwxjx123.comwxkj666.comwxkjwlw.com
wxkml.com
+wxlele.com
wxlivecdn.comwxlongre.comwxlpool.comwxlydhb.com
+wxmama.comwxmetro.netwxmolegames.comwxmovie.com
+wxnacy.com
wxngh.com
+wxp114.comwxp2022.vipwxpangu.com
wxphp.com
wxpmc.com
+wxqcgc.comwxqinxue.com
+wxqtwl.comwxrb.com
wxrrd.comwxsbank.com
+wxsbkj.comwxscreen.com
+wxsell.com
wxsgf.comwxshake.com
wxshiteng.com
+wxshuku.la
+wxslzf.comwxsteed.comwxstztg.comwxsy.netwxt2020.com
wxtdf.com
wxthe.com
wxtj10086.com
wxtpb.comwxtrust.com
+wxutil.com
+wxw120.com
+wxwjk5.com
+wxwmdq.com
wxwzt.com
+wxxsyg.comwxy1314.com
wxyuannuo.com
+wxyxrc.com
+wxzfkj.comwxzq.com
wxzwb.com
wxzzz.com
wy000.com
wy100.comwy182000.com
wy213.netwy34.com
+wy6000.com
+wy9595.xyzwya1.comwyaoqing.com
+wybbao.com
wybgs.comwybosch.comwybzdwss.com
wycfw.com
+wycntv.comwycsyyjt.com
wydbw.com
+wydljx.com
wydns.comwyduihua.comwyfantastic.linkwyfluorine.comwyfx2014.comwygkmitk.com
+wyh138.com
wyhef.com
wyhos.fun
wyhts.comwyins.cc
wyins.netwyjianzhan.com
wyjsq.com
+wykefu.com
+wykjht.comwykw.comwykz.com
wylws.comwylylxx.com
wyn88.com
wyptk.com
wypxj.com
+wyrlzy.com
+wysaid.org
wysap.com
+wysfgc.comwyshuoshuo.com
wysls.com
+wysm88.com
+wyteam.net
+wytfsp.comwytracir.comwytx.net
+wytype.com
+wytzgl.comwyuetec.comwywy.ltd
wywy6.com
wywyx.com
wyxokokok.comwyxzxyjhyy.com
+wyydsb.xinwyzc.com
wyzdg.comwyzhifu.com
+wyzxsd.com
wyzyz.org
wz-emauto.comwz-goodcarbide.com
+wz-tea.comwz-zhongheng-zy.comwz-zhongheng.comwz01.com
wz132.comwz16.net
+wz5.ccwz5.com
wz588.comwzbb.com
wzbks.com
wzbox.net
wzchayuan.comwzciming.comwzcl.net
wzdjy.com
+wzdlqj.com
wzdsb.netwzdslyy.com
wzdyn.comwzfeiyan.comwzfg.com
wzfou.comwzfw.ltd
wzfxf.comwzg0898.comwzgemsmall.com
wzghy.com
+wzgyjt.comwzh.kimwzhealth.comwzhekou.com
+wzhibo.net
wzhibo.tvwzhonghe.comwzhouhui.comwzhouhui.net
+wzhphg.com
+wzhust.com
+wzhxlx.com
wziii.com
wzime.com
wzits.comwzj9.comwzjbbus.comwzjfxjy.comwzjxdyf.com
+wzjxyq.comwzkelineng.com
wzkex.com
wzksw.com
+wzlgjt.comwzlijingyuanlin.com
wzlingyun.com
+wzlyqy.com
+wzlysz.comwzm.com
wznas.com
+wznthg.com
wzoka.com
+wzpgis.com
+wzpkus.com
wzplc.comwzpo.net
wzpod.comwzqbhsls.com
wzqsyy120.comwzrdwl2.comwzright.com
+wzrjsp.comwzsc123.com
wzsee.com
wzshe.com
wzsky.netwzspinneret.com
wzsxj.netwztf121.comwztianshanfs.comwztlink1013.com
wztsy.comwzty.ltdwzu.comwzweisen.com
wzwmw.com
wzwqs.comwzwtrlyy.comwzxianggui.comwzxinchang.com
wzxinfeng.com
+wzxywj.comwzy2.comwzyestar.com
+wzylrj.comwzyzdyf.comwzz1809.com
wzzcd.comwzzhchem.com
+wzznft.comwzzp.com
wzzpw.net
+wzzqqh.com
+wzzsfd.com
wzzww.com
+wzzyhp.com
+wzzysm.com
+wzzysn.com
+x-bull.com
+x-cloud.cc
x-droners.comx-jishu.comx-kicks.com
x-mol.com
+x-peng.comx-storm.comx-tetris.com
x-xiangsh.com
x0769.comx0x8.comx1047xv8b4.com
+x11263.com
+x11296.comx118.netx12plus.com
x1997.net
+x23118.com
+x23119.com
x23qb.comx23us.us
+x23wxw.comx2intell.comx315.com
x3322.net
x3366.com
+x33699.com
x33xs.com
x33yq.orgx3a37ynn2n.comx3china.comx3cn.comx3g1.comx431.comx4dp.comx5dj.com
x64go.com
+x64pro.com
+x66597.comx6d.comx6tb.comx6x8.comx72y.comx78j7hk.comx7sy.com
+x7z.ccx81zw.co
x81zw.com
+x81zw2.comx821.comx86android.comx8ds.comx8sb.comx93r91l460.comx9gc3siwevbpc.comxa-bank.com
xa-online.com
+xa-psj.com
+xa.com
xa189.net
+xa30zx.comxa4.com
xaaag.comxabaotu.com
xabbp.comxacbank.com
xacg.info
xachangda.comxachangxing.comxachanhe.comxacitywall.comxacnnic.comxacpubfs.com
+xactad.netxadamai.com
xadiannao.com
+xadlwx.comxads.net
xadsa.comxaecong.comxaedumedia.comxafc.comxafeifei.com
xaffp.com
xafpz.com
+xafzjy.com
+xagmsm.com
xagxp.com
xagxz.comxahb.comxahc971.com
xahhp.com
+xahttd.comxahuapu.netxahuayi.com
+xahxgy.com
xahxp.com
xaidc.comxaigame.com
+xainjo.com
xaixs.org
+xajfwy.comxajiason.com
xajjk.com
xajjn.com
+xajjwy.com
xajob.com
+xajxcw.com
+xakqby.comxakrlab.com
+xalanq.comxalawyer.net
+xalhar.net
+xamama.netxaminim.com
xamjx.comxampp.ccxamv.comxanahotelle.com
xanhr.comxank120.com
xany6.com
+xaocao.com
xaoji.comxaonline.com
+xaoyao.com
xapcn.comxaqhgas.comxaredian.comxarongdi.comxarxbio.com
xaseastar.com
xasff.com
+xasfyw.com
+xasgxy.comxashangwang.comxashzhjz.com
xasimonds.com
xasrc.com
+xaszjf.comxatc168.com
+xatcrj.comxatielu.comxatourismgroup.com
xatvs.com
+xatyds.com
xatzj.com
xauat-hqc.com
xaudiopro.comxauwvhgt.comxawb.com
xawbb.comxawdslzp.com
xawdz.com
xawhz.com
+xawscu.com
+xawyjx.com
+xaxydr.comxaxzlsgs.com
+xayabx.comxayestar.comxaygddc.comxayhedu.comxayhsjwx.comxayizhou.com
+xayzjc.com
+xazcit.com
+xazqsw.com
xazwy.com
xazyy.com
xazzg.com
xazzp.com
xazzs.com
+xb.appxb2s.comxbaofun.comxbase.cloud
xbase.xyz
xbatu.com
+xbauto.comxbbaoan.com
xbceo.com
+xbdgps.comxbds.cc
xbdym.comxbequge.com
+xbeta.info
xbext.com
xbfashion.com
+xbfnet.com
xbfzb.comxbhb.net
+xbhjgg.comxbhy.comxbhz.net
xbiao.com
xbidc.comxbiqiku.netxbiqiku2.com
+xbiquge.cc
+xbiquge.la
+xbiquge.twxbiqugu.infoxbiqugu.netxbiqukan.comxbiquke.comxbiquku.com
+xbiquwx.laxbiquzw.comxbirder.com
xbitw.netxbjianzhan.com
xbjob.com
+xbjtkj.comxbkjvip.com
xblds.com
xblqb.com
xblyw.com
xbmbw.comxbmiaomu.com
+xbniao.comxbnj.net
xbongbong.com
xboot.org
xbptc.comxbrl-cn.orgxbrother.com
+xbtest.com
xbttgroup.com
+xbuwrp.sbs
xbwbh.comxbwebyun.comxbxgame.com
xbxk9tzs.work
xbxxb.com
xbxxz.comxbzlapp.comxc-fund.com
xc-js.com
xc-zd.com
+xc1000.com
+xc2500.com
xc940.comxca551hgxm.com
xcabc.comxcao.winxcape.ccxcar.comxcarimg.comxcb-family.com
+xcbank.com
+xcbbtf.comxcc.com
+xccfjt.comxccrugs.comxccy.ccxcdesign.netxcdn.globalxcdngyc.vip
+xcdrum.com
+xcdssy.com
xcejj.com
xcetv.com
xcexe.comxcfunds.comxcggzzb.comxcgogo.clubxcgogo.sitexcgp.com
xcgui.comxcharger.net
xchjw.org
xchuandai.comxchuizi.comxchuxing.com
xciic.comxcj.comxcjincheng.com
+xcjytz.com
+xckfsq.com
xckgq.comxckj688.com
+xckszx.comxcloudbase.com
xcmad.comxcmg.comxcmgmall.comxcmh.ccxcmwqdvc.com
+xcn457.comxcnchinese.com
xcnic.netxcnv.comxcode.me
xcoder.inxcommon.comxcoodir.comxcot.comxcpapa.site
+xcpapa.xyz
xcpcj.comxcpxssx.com
+xcq1dj.comxcq2022.com
+xcq518.com
+xcqxcq.comxcsc.comxcsclhs.com
xcseg.com
xcshaifen.com
+xcspcs.comxcstuido.com
+xct168.com
xctmr.comxcukezmr.comxcultur.com
xcurrency.comxcvmbyte.com
xcvvs.com
xcx-x.comxcxd-inc.com
xcxvs.com
xcxwo.com
+xcxx28.com
+xcxymw.com
xcxyw.comxcyg.netxcyo.comxczhmzb.com
xczzs.comxd-game.comxd-tech.comxd-world.com
+xd.com
+xd0.coxd0.com
+xd0731.comxd57.comxd79.comxda.show
xdapp.com
+xdbcb8.com
xdbin.com
+xdc.at
xdcdn.com
xdcdn.netxddhaoka.com
+xddpay.comxde.comxde6.netxdebike.com
xdf99.comxdfckjz.com
xdfkt.com
xdfpr.com
+xdfsjj.comxdgalaxy.com
xdggd.comxdgogogo.com
xdhcn.comxdiarys.com
+xdj-sz.comxdja.comxdjc.org
+xdjcgs.comxdju.com
xdjunxiao.comxdjy369.comxdkb.net
+xdkjjy.com
+xdkjpx.comxdmb.xyz
+xdmssp.com
+xdn001.comxdn2.com
+xdnice.com
+xdnote.com
+xdnphb.comxdnsvip.comxdnsvip.info
+xdocin.com
+xdowns.comxdpaomo.com
xdper.com
+xdpipe.comxdpjump.com
xdplt.com
xdpvp.comxdrcftv.comxdressy.com
xdrtc.com
xdrun.com
+xdsipo.com
xdsp.mobi
xdter.com
xdtev.com
xdtos.com
xduoo.com
+xduoyu.com
xduph.com
xdwan.com
xdwyx.com
xdxct.com
+xdxdsz.comxdxialingying.comxdxiaoshuo.comxdxmwang.comxdystar.com
xdytuliao.comxdyy100.com
+xdzhsw.comxdzu.netxed.plusxedaojia.comxedaojia.netxedge.cc
xeeee.net
+xeenho.com
xeeok.com
xefan.comxege.org
+xehedu.com
+xeknow.com
xeltek-cn.com
+xen0n.name
+xender.comxenium.mobixerlang.com
+xesapp.com
+xescdn.com
+xesdns.com
xesee.com
+xesimg.com
xesv5.comxet.techxetimes.com
xetlk.com
+xetslk.comxevd.co
+xevddy.comxewl.xyz
+xeylon.comxeys.netxf-fund.comxf-world.org
+xf-yun.com
+xf.com
+xf0797.comxf09.net
xf119.xin
+xf1233.comxf3z.com
xf4hs.comxf5z.com
xfabs.comxfannix.comxfaqwlw.com
+xfb315.com
+xfc888.comxfcd365.net
xfcjn.com
xfconnect.com
xfcqc.com
+xfdown.com
xfdwr.com
xfdwz.com
xfehc.comxfeng.me
xffbb.com
+xffcol.com
xffox.com
xfguo.org
xfgza.comxfhx.com
+xfinfr.com
xfisp.com
+xfj100.comxfjw.net
xfjxs.com
+xflapp.com
+xflimg.comxfliusheng.com
xflstatic.com
xfltd.netxfmspps.com
+xfnano.com
+xfocus.net
+xfocus.orgxforceplus.com
+xfpaas.com
+xfpass.comxfpg119.com
+xfplay.com
xfplay.tv
xfprecise.comxfr3u4lz94.comxfsb119.com
+xft123.comxftclub.comxftransa.comxfun233.comxfusion.comxfw0594.com
xfwdc.comxfxb.netxfyousheng.comxfypaper.com
xfyun.com
+xfzhsf.comxfzllht.com
xfztc.com
+xg1234.comxgamevip.com
+xgantt.net
xgate.com
xgccm.com
+xgcs55.comxgcsczyc.comxgd.com
+xgd666.com
xgdfz.com
+xgdown.comxgdq.com
+xgdqsn.comxgfz.net
+xggj56.com
xggjj.comxghecai.com
+xghylt.com
xgimi.com
xgimi.netxgiu.comxgj-info.com
xgkwx.comxglgift.com
+xglist.com
xglpa.com
+xgn-cy.com
+xgo.cc
+xgp365.comxgqq.com
+xgqvyj.com
xgqyy.com
xgsdk.com
+xgsdpm.com
+xgshop.net
+xgshu8.com
xgsxt.net
+xgsyun.comxgt2014.comxgw5.comxgwx.net
+xgxedu.comxgxsignage.com
+xgyszj.com
+xgz.ccxgzbwdj.com
+xgzdhj.comxgzx.org
xh-health.com
+xh0523.comxh39.com
xh456.comxhaiwai.comxhay1122.com
+xhblog.com
+xhboke.com
+xhbosn.comxhby.net
+xhbycm.net
+xhclaw.com
+xhclub.net
xhcpa.net
+xhcpas.comxhd.orgxhdollar.com
+xhdpay.com
+xhdxly.com
xhedu.netxhforex.comxhg.com
+xhgame.com
xhgamesdk.com
xhhd6.comxhhdd.cc
+xhhhzs.com
xhidc.com
xhily.comxhintech.comxhj.comxhj.info
+xhj365.com
+xhjaty.comxhjianglong.comxhjingling.comxhjj.com
+xhjkgj.comxhjs168.com
+xhjycw.comxhkt.tvxhlaowu.com
+xhlcsl.comxhma.com
+xhmwxy.com
+xhnews.net
xhostfire.comxhostserver.com
xhpfw.comxhpiano.comxhpr.netxhqbapp.com
xhqqt.com
xhrfa.com
+xhscdn.com
+xhscdn.netxhsd.comxhslink.com
xhslw.com
+xhsoft.net
+xhsyqx.com
+xhsyww.comzygvqivs.comxhtheme.comxhtw.com
xhtwb.com
+xhtzgg.com
+xhu218.com
xhup.clubxhw81pr263.comxhwhouse.com
+xhwsjc.comxhwx100.comxhxcedu.com
xhxgt.com
xhxhr.com
xhxsw.comxhxwsyw.comxhy.comxhyd.com
xhytd.com
xhyun.vip
+xhzysg.comxi-soft.com xi.su
+xi5jie.com
+xia1ge.comxiaa.net
+xiabb.chatxiabingbao.com
+xiabor.com
xiabu.com
+xiache.netxiachufang.com
xiada.netxiadaolieche.comxiadele.com
+xiadts.com
xiadu.comxiafenfa.comxiagaoqing.com
xiagepian.com
xiagongdi.comxiaguanzhan.com
xiagujian.com
+xiaiot.comxiakefyz.comxiakeol.comxialingying.cc
xialv.com
+xiamag.com
+xiamai.net
xiamenair.comxiamenbg.comxiamenfojiao.comxiamenjiyang.comxiamentianqi114.com
xiami.comxiami.fm
xiami.netxiamo.cc
xiamo.funxiamoyun.com
+xiamp4.comxian-tourism.comxian-yao.comxianbao.funxianbao.netxianbdj.comxianbeikeji.comxianbey.comxiancaotang.comxianchengyou.com
+xiancn.comxiandaigangmu.comxiandaimt.sitexiandaiyuwen.comxiandanjia.com
xiandaohu.netxiandengdengguan.comxianfae.comxianfan2022.comxianfeng.netxianfengsg.com
xiang.com
+xiang5.comxiang578.com
xiangange.comxianganquan.com
xianganyu.comxiangbababus.com
xiangbala.netxiangbinmeigui.comxiangbojiubo.comxiangbosoft.comxiangchengjob.com
xiangcoin.comxiangcun.comxiangcunxiaoshuo.com
xiangdang.net
xiangdian.comxiangdian.storexiangguo.comxiangguohe.comxiangha.comxianghunet.comxianghus.comxiangjiasz.comxiangjiayaoyehz.comxiangkanwang.com
xiangkesi.comxiangley.comxianglifood.comxiangliuzi.com
xianglute.comxiangmaita.comxiangming.sitexiangmu.comxiangni.com
xiangniya.comxiangoo.comxiangpeach.comxiangpi.comxiangqianpos.comxiangqigame.com
xiangqin7.comxiangqishan.comxiangqishan.netxiangqiyouxi.comxiangqu.comxiangrikui.comxiangrikuijianzhan.comxiangrikuisite.comxiangruizulin.comxiangshan.ccxiangshang360.comxiangshangban.comxiangshangyixue.comxiangshanpark.comxiangshe.comxiangshengbao.comxiangshengnet.comxiangshi.ccxiangshi.videoxiangshitan.comxiangshu.netxiangshuheika.com
xiangsidi.comxiangsw.comxiangtaole.comxiangtatech.com
xiangtuan.xyzxianguo.comxianguomall.comxianguotea.com
+xiangw.comxiangwushuo.comxiangxingnet.com
xiangyang.net
xiangyiai.comxiangyujiankang.com
xiangyukj.comxiangyungx.com
xiangzhan.comxiangzhiren.comxiangzhuyuan.comxiangzishop.comxiangzuanjiang.comxiangzukeji.comxianjian10.comxianjiaosuo.comxianjichina.com
xianjiqun.comxiankan.com
xiankantv.com
xianlaicd.comxianlaigame.com
xianlaihy.comxianlaivip.comxianlife.comxianliming.comxianmaiyangsheng.comxianmeilai.com
xianmeisc.com
xianniuzu.comxianousiqi.comxianpinyun.com
+xianpp.comxianrenzhang.netxianruan.comxianshiqiba.comxianshu.comxianshua.netxianshuabao.comxianshufang.comxianwucloud.comxianxiadao.comxianxiadao.net
+xianxin.cc
xianxueba.comxianyang888.comxianyer.comxianyin.netxianyu.mobixianyuange.comxianyugame.comxianyugouwu.comxianyun8.comxianyuso.comxianyuwang.comxianyuwenhua.comxianyuyouxi.comxianzhanget.comxianzhi.netxianzhid.comxianzhongwang.comxianzidaer.comxiao-an.comxiao-bo.comxiao-new.comxiao100.comxiao2she.com
+xiao84.com
+xiaoa.name
+xiaoac.comxiaoaiassist.comxiaoaiscan.netxiaoaisound.comxiaoantech.com
+xiaoapp.ioxiaobafood.comxiaobai.comxiaobaibar.netxiaobaipan.comxiaobaishiji.comxiaobaishixi.comxiaobaiupin.com
xiaobaivr.comxiaobaixitong.comxiaobal.comxiaobangbaoxian.comxiaobangguihua.comxiaobangtouzi.comxiaobao360.comxiaobaobianli.comxiaobaobianli.net
xiaobaodt.comxiaobaoming.comxiaobaoonline.comxiaobaostudio.com
+xiaobd.netxiaobeibike.comxiaobeizuqin.comxiaobianli8.comxiaobingxitong.comxiaobool.comxiaobot.netxiaobu.tech
xiaobu121.comxiaocanhulian.comxiaocantech.comxiaocaoo.comxiaocaoyun.com
+xiaoce.funxiaocen.comxiaochamao.comxiaoche001.com
xiaocheng.comxiaochengxucms.comxiaochixiang.comxiaochuan010.comxiaocifang.comxiaocms.comxiaodai.site
xiaodaijl.comxiaodaka.net
xiaodaotv.comxiaodaozhi.comxiaodengta.comxiaodengvip.comxiaodian.comxiaodian.inxiaodian.soxiaodianweb.comxiaodigu.comxiaoding110.comxiaodingchui.comxiaodiyouxi.comxiaodongxier.com
xiaodoubi.comxiaodoushebao.comxiaodouzuche.com
xiaoduoai.com
xiaoduseo.comxiaodutv.com
+xiaody.comxiaoe-tech.comxiaoe-tools.com
xiaoeknow.comxiaoenai.comxiaoerjiren.comxiaoeryi.comxiaofantian.comxiaofeng.org
xiaofubao.comxiaofuzi.net
xiaog.xyzxiaogan.com
+xiaogj.comxiaogou111.comxiaogou222.comxiaogou333.comxiaogou444.comxiaogou555.comxiaogou666.comxiaogou777.comxiaogou888.comxiaogou999.com
xiaogouds.com
xiaogouh5.comxiaogouzhineng.com
+xiaogr.comxiaoguaniu.comxiaoguikuaipao.comxiaoguo101.com
xiaoguosq.comxiaoguowenhua.com
xiaogushi.comxiaoh.mexiaohack.orgxiaohansong.comxiaohaoyun.comxiaohe-jiankang.com
xiaohe666.comxiaoheihegame.com
xiaoheima.comxiaohelive.comxiaohengmaidan.com
xiaohi.ccxiaohongchun.comxiaohongshu.comxiaohongshu.netxiaohongshulvyou.comxiaohouyunyin.comxiaohu8.comxiaohua8.comxiaohuabaichu.comxiaohuabuluo.comxiaohuai.comxiaohualan.comxiaohuangji.comxiaohucloud.comxiaohulu.comxiaohun.netxiaohuochai.ccxiaohuochai.site
xiaohuohu.comxiaohus.comxiaohuwl.com
xiaoi.comxiaoi.mexiaoice.com
xiaoj.com
+xiaoji.com
xiaoji001.com
xiaojian.sitexiaojianjian.netxiaojiaokeji.comxiaojiaoyar.comxiaojiaoyu.comxiaojiaoyu100.comxiaojiding.com
xiaojing.workxiaojing360.comxiaojiuwang.com
+xiaojl.comxiaojuchefu.comxiaojudeng.comxiaojukeji.comxiaojun.org
xiaoka.tv
xiaokache.comxiaokakj.com
xiaokanba.comxiaokanglongjiang.comxiaokao.com
xiaokaxiu.comxiaokcdn.comxiaokcehui.com
xiaoke101.comxiaokeai.com
xiaokeduo.comxiaokesoso.comxiaokuihua.net
xiaokusha.comxiaolachuxing.comxiaolajiao.comxiaolanben.comxiaolangtt.comxiaolantiao.com
+xiaole.com
xiaoleidm.comxiaoleimob.comxiaoliangkou.comxiaoliebian.comxiaolii.com
+xiaolin.inxiaolinbysj.comxiaolincoding.com
xiaolinsi.com
xiaolinwl.comxiaoliqing.netxiaolizhuli.com
xiaolu123.comxiaoluboke.comxiaoluerhuo.comxiaoluhaohuo.comxiaoluxuanfang.comxiaoluyouxuan.comxiaoluyy.comxiaoluzhidian.comxiaolvji.com
+xiaoma.com
xiaoma.io
+xiaoma.netxiaomachuxing.comxiaomagaojian.comxiaomai.livexiaomai5.comxiaomaigongkao.comxiaomaiketang.comxiaomaiuzu.com
xiaomajia.com
xiaomantu.com
xiaomaomv.comxiaomape.comxiaomashijia.comxiaomastack.comxiaomaxitong.comxiaomayi.net
+xiaomei.cc
xiaomeiti.comxiaomeng1235.com
+xiaomi.com
xiaomi.hk
+xiaomi.net
+xiaomi.org
xiaomi.twxiaomiaozai.comxiaomicache.comxiaomicorp.comxiaomicorp.netxiaomicp.com
xiaomidns.com
xiaomidns.netxiaomiev.comxiaomiflash.com
xiaomiinc.com
xiaomiinc.netxiaomimobile.com
xiaominet.com
xiaominfo.comxiaoming.mexiaomingtaiji.ccxiaomingtaiji.comxiaomingtaiji.netxiaomiprint.com
xiaomiqiu.comxiaomiquan.com
xiaomirom.comxiaomisa.comxiaomisa.netxiaomisa.org
xiaomishu.comxiaomixiaoai.comxiaomiyoupin.com
xiaomlove.comxiaomor.com
xiaomoyao.com
xiaomuji.info
+xiaomy.netxiaomyc.comxiaonaodai.comxiaonei.com
+xiaoni.comxiaonianyu.comxiaoniba.com
xiaoniu66.com
xiaoniu88.comxiaoniuben.com
xiaoniuds.comxiaoniuhululu.comxiaopaitech.comxiaopangyu.comxiaopeiqing.comxiaopeng.comxiaophy.com
+xiaopi.comxiaopinchuxing.comxiaopinw.comxiaopiu.comxiaoqiandao.comxiaoqiangge.comxiaoqingtou.com
xiaoqinre.comxiaoqiqiao.com
xiaoqiweb.comxiaoquba.comxiaoqueshe.comxiaoqugang.comxiaoquyijia.comxiaorizi.me
+xiaorui.ccxiaoruibao.comxiaoshengping.comxiaoshentongzongbu.comxiaoshentui.comxiaoshi9.comxiaoshi999.comxiaoshidata.comxiaoshijie.comxiaoshituina.vipxiaoshouhudong.comxiaoshourc.comxiaoshouyi.comxiaoshuapp.comxiaoshuiguo.comxiaoshujiang.comxiaoshuo.comxiaoshuo1-sm.comxiaoshuo2-sm.comxiaoshuo3-sm.comxiaoshuo4-sm.comxiaoshuo5-sm.comxiaoshuo520.comxiaoshuo570.comxiaoshuoba.com
xiaoshuobi.ccxiaoshuodaquan.comxiaoshuohui.netxiaoshuoju.comxiaoshuoli.comxiaoshuoshu.orgxiaoshuowu.comxiaoshuxiong.comxiaoshyu.comxiaositv.com
+xiaoss.netxiaosuiyin.com
xiaot.com
+xiaota.comxiaotangketang.comxiaotaoguo.com
+xiaote.com
+xiaote.netxiaotee.comxiaoten.comxiaotengyouxi.comxiaotiancai.comxiaotud.comxiaotut.comxiaotuzhan.com
xiaou2014.comxiaoupan.comxiaowang.netxiaowangshen.comxiaowangyun.comxiaowangzi777.comxiaowazi.comxiaoweichen.comxiaoweigod.comxiaoweijiankang.comxiaoweirobot.comxiaowen.vipxiaowiba.comxiaowjd.com
+xiaowm.comxiaowuwl.comxiaoxiaapi.comxiaoxiang.clubxiaoxiangbz.comxiaoxiangtoutiao.comxiaoxiangxueyuan.comxiaoxiangyoupin.comxiaoxiansheng.comxiaoxiao.comxiaoxiaodangan.comxiaoxiaofushi.comxiaoxiaoketang.comxiaoxiaomo.comxiaoxiaotong.orgxiaoxiaoyouxuan.comxiaoxiaozi.comxiaoxichangliu.comxiaoxineye.comxiaoxinrili.comxiaoxintoutiao.comxiaoxintuku.comxiaoxiongmeishu.comxiaoxiongxitong.comxiaoxiongyouhao.comxiaoxiongzhoupu.comxiaoxue123.comxiaoxuesheng.vipxiaoxusd.comxiaoya56.comxiaoyantong.comxiaoyaodsx.com
xiaoyaoxi.comxiaoyaoyou.comxiaoyaoyou365.comxiaoyastar.comxiaoyatong.comxiaoyegejitar.comxiaoyejidian.com
xiaoyeren.comxiaoyezi.com
+xiaoyi.com
xiaoyiads.comxiaoyida.comxiaoyida.netxiaoyier.comxiaoying.coxiaoying.comxiaoying.tvxiaoyingzhenxuan.comxiaoyisysreset.com
xiaoyou66.comxiaoyouxi100.comxiaoyouxiqun.com
xiaoyouzb.net
+xiaoyu.comxiaoyuananquantong.comxiaoyuankousuan.comxiaoyuansouti.comxiaoyuansouti.xyzxiaoyuanyun2.comxiaoyuanzhao.comxiaoyuanzhaopin.netxiaoyuer.comxiaoyuer365.comxiaoyun.com
xiaoyusan.comxiaoyusanchou.comxiaoyuxitong.comxiaoyuzhoufm.comxiaoz.mexiaozhang365.comxiaozhao365.comxiaozhenpaotui.comxiaozhibaoxian.com
xiaozhibo.comxiaozhiyun.comxiaozhongjishu.comxiaozhoumo.comxiaozhu.com
+xiaozhu.hkxiaozhu2.comxiaozhua.comxiaozhuanlan.comxiaozhulanjuwei.comxiaozhuseo.comxiaozhustatic1.comxiaozhustatic2.comxiaozhustatic3.com
xiaozlife.comxiaozoufaxian.com
xiaozuan8.comxiaozuanbike.comxiaozujian.com
xiaping11.com
+xiappt.com
xiaqunfeng.ccxiarenzhuxin.com
xiarj.comxiashuo.xyz
xiataoseo.com
+xiatou.comxiaw.netxiawan8.com
xiawen.tvxiaxiab8.com
+xiaxs.infoxiaxs.laxiayige.orgxiayuanma.cc
xiayx.com
+xiazai.comxiazai.live
xiazai110.com
xiazai163.comxiazai22.comxiazaiba.comxiazaibao2.comxiazaicc.comxiazaidb.comxiazaijidi.comxiazaima.comxiazaisoft.comxiazaiwx.comxiazaiziti.comxibaike.com
xibaiwang.com
xibanyaqz.comxibeicanyin.comxibeidev.comxibojiaoyu.comxibsteel.comxibu168.com
xibumaker.comxiburongmei.com
xicaijing.comxicaishe.comxicaodesign.comxiche168.com
xichu.netxichuangzhu.comxichuanqiye.comxici.comxici.netxicp.net
xidesheng.com
xidian.ccxidiankm.comxidibuy.com
xidie.comxidiglobal.com
+xidong.netxidongv.com
xiduobaby.com
xie22.comxiebao18.comxieboke.net
+xiecdn.com
+xieche.netxiecheng.comxiechuangw.comxiedagyl.comxiedaimala.comxiedajia.comxiediantong.com
xiedu.biz
xiedu0594.comxiefenxiang.comxiegangsir.com
xiege.netxiegekt.comxiehejx.com
xiehekjkf.comxiehouit.comxiehuiyi.comxiejiahe.com
xiejianji.com
xiejiaxin.com
xieliaofa.comxielijiaoyu.comxieliqun.com
xiemm.com
xiesk.com
xieso.netxietonghuaxue.com
+xietui.com
xiewangfu.netxiexiaoyuan.comxiexingcun.comxieyangzhe.comxieyimao.comxiezewen.com
xiezhizhe.com
+xiezi.techxiezilouzulinwang.comxieziqiu.netxiezixiansheng.com
xiezuo100.com
xiezuocat.comxiezuoye.comxiezuoyisi.comxifangw.comxifenfei.comxifenggroup.comxifengjiuzhaoshang.comxifu120.com
+xifumi.comxigeweb.comxigo.tvxigou100.comxigoubao.comxigua110.comxiguaapp.com
xiguabook.comxiguaimg.comxiguaji.comxiguang.xyzxiguaplayer.comxiguashipin.netxiguavideo.netxigushan.comxigushan.net
xihachina.comxihaiannews.com
xihaianrc.comxihaxueche.com
xihuan.mexihusgh.comxiimoon.com
+xiinnn.comxiji.com
xijiangtv.comxijie888.comxijing01.comxikcloud.com
xikii.com
+xikuan.com
xikuanidc.com
+xikuqi.com
xiladaili.com
xilaiping.com
+xilddt.comxilehongniang.comxilexuan.comxileyougame.comxilian-group.com
xilinejia.comxilinjie.comxilinsi.org
xilinx-ic.com
+xilipy.com
+xilish.comxilitang.comxilong88.comxilu.com
xiluoxuan.comxilvlaw.comxima.orgxima.tvximalaya.comximalaya.fmximalaya.tvximalayadata.comximalayaos.comximeiapp.comximendou.com
ximgs.netximiplay.com
ximitools.com
ximiyouxi.com
ximuw.comxin-manganese.comxin-yao.comxin.comxin.sciencexin.xinxin1234.comxin3721.comxin6.netxinanrui.comxinaoyun.com
xinbaicai.com
xinbalive.comxinbaohetuliao.comxinbear.com
+xinbqg.com
xinbs.netxincache.com
+xincai.comxincailiao.com
xincainet.comxincaise.comxincaitong.net
xincanshu.com
xincg.com
+xincha.com
xinchacha.comxinchanfeng.comxinchangol.comxinchao.com
xinchaoss.comxinchego.comxincheng.comxincheping.comxinchess.comxinchong.comxinchukj.comxincloudhost.com
+xincmm.com
xinda-bio.comxindaifu.comxindawenxue.comxindawz.com
xinde.orgxindemarinenews.comxindetihuiya.comxindexuexi.com
xindianti.comxindingdianxsw.comxindingwealth.com
+xindns.comxindong.comxindonghuyu123.comxindongrun.comxindu.cc
+xinduo.comxinduoad.com
+xinenw.com
xineurope.comxinexpress.comxinfangsheng.comxinfangyuan.online
+xinfei.comxinfeijituan.comxinfeipengjixie.comxinfeiyu.netxinfenggxgroup.com
xinfengji.com
xinfenlei.com
+xinfox.netxinfree.comxinfu888.comxinfuhk.comxinfushe.comxinfuyuan818.comxinfuyun.netxing-bei.comxing-su.com
+xing73.comxingames.com
xingb.netxingbangip.com
xingbo.tvxingcai.biz
xingchao1.comxingcheshixian.comxingchuangtiandi.comxingdatrip.comxingdong.coxingdongliu.com
xinge.comxinge.laxingechina.com
xingefuwu.com
xingeshan.com
xingezhan.comxingfagroup.comxingfeiinc.comxingfudu.comxingfufangdai.comxingfulaonian.comxingfulizhaofang.comxingfulo.comxingfuu.comxinggan.comxinggan.netxinghai365.comxinghan.vipxinghanmuye.comxinghaoyun8.com
xinghejoy.comxinghengedu.comxingheoa.comxinghuankj.comxinghuazixun.comxinghuo100.comxinghuo365.comxinghuoxiaoshuo.com
+xinghy.comxinghy56.comxingjia.onlinexingjiagames.comxingjiaoyun.com
xingjiesj.comxingjijy.com
xingjimob.comxingjizaixian.comxingjun-group.comxingketech.com
xingkong.linkxingkongfy.xyzxingkongmt.comxingkoo.com
xingkupai.comxinglai.com
+xinglan.coxingliju.comxinglingyingxue.comxinglinpukang.comxinglongdayuan.comxingmima.comxingming.comxingming.netxingmuyi.comxingpan.comxingpin.comxingqisihuishou.com
+xingqiu.tvxingqiu520.comxingqu11.comxingquanke.comxingren.com
xingrongn.com
+xingse.net
xingseapp.comxingshangnet.comxingshu.comxingshulin.comxingshuo.net
xingsteel.comxingsuyun58.comxingtai123.comxingtan001.comxingtangzp.comxingtongfj.com
+xingtu.comxingtui520.com
xingtuzhi.comxinguad.comxinguangjian.comxinguida.comxingumin.netxingvps.comxingwajiang.comxingxing.comxingxingbao.comxingxingjizhang.comxingxingzaixian.funxingxingzu.comxingxuanwaimai.com
xingyaocq.comxingyaomob.com
xingyaoss.comxingyaox.com
xingyaoyd.comxingye.workxingye1.com
xingyeace.comxingyeai.com
xingyeddz.comxingyigz.comxingying2018.comxingyizhai.comxingyongli.comxingyoucai.comxingyuehuyu.comxingyuhuwai.comxingyunb.com
xingyunba.com
xingyunxc.comxingyusoft.netxingyuyouxi.comxingzai.pub
xingzhang.com
xingzhige.comxingzhiheyi.comxingzhilan.comxingzhiyue.comxingzi-vision.comxingzoushu.comxingzuo.comxingzuo8090.com
xingzuowu.comxinhaiglobal.comxinhaimineral.comxinhaiminingepc.comxinhaimininggroup.comxinhanhd.comxinhanhr.comxinhanyx.comxinhaolian.comxinhaoqi.net
+xinhay.comxinhechina.comxinhedjq.comxinhengshui.netxinheshenggroup.comxinheyun.net
xinhongru.comxinhua-news.com
+xinhua.orgxinhua08.com
xinhuaapp.comxinhuachuanmeijs.comxinhuacu.com
xinhuaiot.comxinhuamm.net
xinhuanet.com
xinhuanet.ltdxinhuaphoto.orgxinhuapo.com
xinhuaprs.com
xinhuapub.com
xinhuashe.orgxinhuashudian.comxinhuasuye.comxinhuatoupiao.comxinhuawang.com
xinhuaxmt.comxinhuayimin.comxinhuazhiyun.comxinhuo.sitexinhuoq.com
xinhuoray.com
xiniu.comxiniu3d.comxiniugushi.comxiniushu.comxiniuyun.com
xinjiadiy.com
xinjiance.comxinjianggames.comxinjianggou.comxinjiangqinglvyou.comxinjiangroup.com
xinjidian.comxinjimo.com
xinjingks.com
xinjingst.com
xinjisuan.net
xinjiyuan.net
xinju.fun
+xinjuc.com
xinjunshi.netxinjunshicn.netxinkaiyuanceps.comxinkamai.comxinkedao.comxinkejiaotong.comxinkuai.comxinlanshengbc.com
xinle.comxinle366.comxinli001.ccxinli001.comxinli001.xyzxinli001wx.comxinliangxiang.comxinliceping.comxinlifudao.comxinlinghuayuan.comxinlingletu.comxinliwanju.comxinluex.comxinlvtu.com
xinmanduo.com
xinmaotao.netxinmei6.comxinmeihu.com
xinmeinuo.com
+xinmem.comxinmenglife.comxinmeow.comxinmeti.comxinmima.comxinminghui.comxinmintian.vip
+xinnet.com
xinnetvip.comxinniangjie.comxinnianhua.comxinnong.comxinnuodazu.com
xinorngyk.comxinouhk.com
xinpg.comxinpianchang.comxinpianyugao.com
xinpin-ip.com
+xinping.cc
xinpingmu.comxinpinhe.comxinpintoutiao.comxinpupower.comxinpure.comxinqigu.comxinqing.comxinqiucc.comxinqiyejia.comxinqtech.comxinquanedu.comxinquji.comxinran1016.comxinranliu.mexinrenxinshi.com
xinri.comxinrong.com
xinrong88.comxinrongshiying.comxinrui-games.com
+xinrui.biz
xinruiweb.comxinsanbanbao.comxinsankeji.com
+xinsdn.comxinsenz.comxinsf.ccxinshanban.comxinshangmeng.comxinshangmeng3.comxinshangshangxin.comxinshengku.comxinshiba.comxinshiji1992.comxinshipu.comxinshishen.comxinshoucun.comxinshouyou.comxinshouzhanzhang.comxinshuge.net
xinshuiny.comxinshuru.comxinsilu.com
xinss.com
xinss.netxinstall.com
xinstatic.com
xinsuyang.xyzxintaizhou.comxintengmenchuang.comxintheme.comxintianw.comxintiao100.com
xintiao80.comxintiaoyouxi.comxintiku.comxintongconference.comxintucdn.comxintuofalv.com
xinwangcj.comxinwanr.comxinweier.comxinweijx.com
xinweiyun.com
xinwen365.com
xinwen520.net
xinwengao.netxinwengood.com
xinwo.comxinwuapp.com
xinx.love
xinxe.comxinxi28.comxinxianghui.comxinxiangliao.comxinxianshilb.com
xinxiansk.comxinxianwang.comxinxiaochina.comxinxiaodian.com
xinxiaoqi.com
xinxiaozu.com
xinxifabu.net
xinxinapp.net
xinxindai.comxinxing-marathon.comxinxing.orgxinxing001.comxinxing100.comxinxingkj668.com
xinxingly.com
xinxinhot.netxinxinhotel.com
xinxinjoy.comxinxisea.com
+xinxjs.comxinxue-edu.comxinxuejy.comxinxuezx.comxinxunwang.com
xinxunwei.comxinxyun.comxinya.mexinyali.net
xinyan-gx.com
+xinyan.comxinyanggaopin.comxinyanwuliu.comxinyanyanwo.com
xinyao168.com
xinyaoyao.comxinyayk.com
xinyegang.comxinyi-tech.com
xinyi.com
xinyi2006.comxinyifengcnsteel.comxinyiglass.comxinyihl.comxinyingyang.com
xinyisemi.comxinyishiji.comxinyiso.comxinyitt.comxinyo100.comxinyong.netxinyongbuy.com
+xinyou.comxinyour.comxinyu19.comxinyuanclub.comxinyuanf.comxinyuanshiye.net
xinyuefei.com
xinyueseo.comxinyuhongyuan.comxinyuncs.comxinyunfuwu.comxinyunit.comxinyustone.comxinyutengyuan.comxinyuwanju.comxinyuwen.comxinyuwj.comxinyuyiliao.comxinzaoxing.com
xinzengwj.netxinzheng.cc
+xinzhi.comxinzhi.spacexinzhibang168.com
xinzhibid.comxinzhiguanwangyun.comxinzhongqi.netxinzhou.orgxinzhuzhai.comxinzlkj.comxinzuhe.comxioagege587skjdo.comxionganxinxi.com
xiongbagk.com
xiongbeng.comxiongfengcl.comxiongge.clubxiongjie.xyzxiongmao666.comxiongmaojinku.com
xiongying.com
xiowo.net
+xioxix.comxipunet.com
xipushuju.netxiqb.comxiqianyangyi.com
+xiqihe.com
+xiqile.comxiqinrc.comxiquebo.comxiqueqingjian.comxiqurongmei.com
+xirang.com
xirenxuan.comxiri-vacuum.comxironiot.net
xisaiwang.com
xise3.comxishalz.comxishanju-hn.comxishanju.comxishanquanyingdi.comxishaoye.comxishbbs.comxishiqu.com
xishiwang.comxishixiuhair.com
+xishpj.comxishu365.comxishuai.comxishuai.netxishuashuatuan.comxishunj.com
xisofttec.com
xitaoinfo.com
xitek.com
xitek.netxitengbingxue.comxitianchi.site
xitie.comxitieba.comxitieba.net
xitmi.comxitong-tech.com
xitong110.comxitong8.comxitong86.comxitongbuluo.comxitongcity.comxitongdaquan.net
xitonggho.comxitonghe.comxitongjiaocheng.comxitongku.comxitongle.comxitongpe.comxitongtiandi.netxitongtiankong.comxitongtu.netxitongxz.netxitongzhijia.comxitongzhijia.netxitongzongcai.comxitongzu.comxitu.comxitu.io
+xituan.comxiu.comxiu8.com
xiuai.comxiubiaoshi.com
xiubiaozu.com
+xiucai.comxiudodo.comxiudtech.com
xiufaxing.com
xiugu.comxiuhandingzhi.comxiuhangzhe.com
+xiuimg.comxiujiadian.comxiujixia.comxiulian.comxiuluowang.com
xiulv.com
xiumb.comxiumb12.comxiumeilady.comxiumeiziyuan.com
xiumi.comxiumi.usxiumius.comxiumucn.com
xiuna.com
xiuno.com
+xiupin.comxiuqicloud.com
+xiuren.comxiusecai.comxiushao.comxiusheji.com
xiushuang.comxiusifudianji.com
xiustatic.comxiutanqi.comxiutuan.com
xiutv.comxiuxiandou.comxiuxianshipin.com
+xiuxiu.comxiuxiuda.comxiuxiustatic.comxiuzhan365.comxiuzhanwang.com
+xivcdn.com
xiwan.vip
xiwangame.comxiwangchina.comxiwangd.comxiwanglife.comxiwangxiaoyuan.com
xiwantrip.com
xiwenquan.com
xiwnn.com
+xiwuji.com
xixiaoyou.comxixiarc.comxixibobo.comxixiclothing.com
+xixidi.vipxixidoudizhu.com
xixik.com
xixik.netxixin123.comxixinghanghr.com
+xixinv.com
xixiqipai.comxixisys.com
+xixiwg.com
+xiyacs.comxiyangan.com
xiyashiji.com
xiyijiang.com
+xiyin.life
+xiyiqq.com
+xiyogo.com
xiyoo.comxiyou-g.comxiyou360.netxiyoucdn.com
xiyouchat.comxiyouji.com
xiyoulink.net
xiyouquan.comxiyousdk.comxiyouwebgame.com
xiyouyun1.xyzxiyuanjixie.netxiyuanshuke.comxiyucosmetics.comxiyuege.comxiyufine.com
xiyun.netxizanggames.comxizangguolv.netxizangmaoniunai.comxizangqinglv.comxizangzl.comxizhang.com
xizhi.comxizi.comxiziquan.comxiziwang.netxj-biotech.com
xj-zp.com
xj120.com
+xj123.info
xj169.com
+xj70wu.xyzxj71.comxj7road.comxj96596.com
xjabc.net
+xjbank.com
xjbdf.netxjbuluo.com
xjc18.comxjcc.netxjche365.com
+xjcmtj.comxjd2020.com
+xjd360.comxjdaily.comxjdkctz.com
xjdpx.com
xjdsb.com
+xjdwfc.com
xjdwx.com
xjent.com
+xjesps.comxjf.pub
xjfda.com
+xjfdcw.com
+xjfilm.net
+xjfine.com
+xjflcp.comxjfoshan.com
xjfzb.com
xjgameapi.com
+xjggjy.comxjgj.com
xjgqt.org
+xjgsdm.com
xjgwy.org
+xjh.me
+xjhczy.comxjhgame.net
+xjhjsd.comxjhr.com
+xjhsxt.com
+xjhuan.funxjhyktsp.com
xjhzn.comxjietiao.comxjihzzc.com
+xjishu.com
+xjisme.com
+xjiyou.com
+xjjnjp.org
xjlxw.com
+xjlxzc.comxjlz365.com
xjmachine.com
xjmty.comxjmw.net
+xjnnet.net
xjnzm.comxjoycity.comxjpanshi.com
xjpdf.com
+xjphsd.com
xjpyh.comxjr2018.comxjrb.net
+xjrdsp.com
+xjrmyy.comxjshift.com
xjsic.com
+xjsy56.com
+xjtjjt.com
+xjtour.com
+xjtrcw.comxjtsnews.com
xjtuccjsj.comxjtucompressor.comxjtudlc.comxjtxt.cc
xju88.com
+xjwljb.comxjwyglw.comxjxa.com
xjxbx.com
xjxdf.com
+xjxhdn.com
+xjy020.com
xjycn.net
xjyingtan.com
+xjytjt.comxjzclyqc.com
+xjzdjx.com
xjzhongwu.com
+xjzhsh.com
+xjzlyy.comxk41v506m7.com
+xk8090.com
xk857.comxk89.comxk9l.comxkaczxv.com
+xkaxka.comxkb1.comxkbbtang.com
xkbjm.comxkcd.in
xkcun.com
+xkdywl.comxkeirofiowef.comxker.comxkfyzmob.comxkgiwdey.comxkhouse.com
+xkjian.comxkjxcon.com
xknow.netxkoeccrq.comxkpx.com
+xksafe.com
xktoupiao.com
xktsz.com
+xkunyi.comxkw.comxkwbrieb.sbsxkwe.comxkwo.comxkxiazai.com
xkxsc.comxkyl.vipxkyn.comxkyn.net
xkzzz.com
xl-ai.com
+xl-ele.com
+xl-lcd.comxl-soft.com
+xl-vip.com
xl18z.com
+xl2824.com
xl526.com
xl5bb.com
xl5dd.com
xl5du.com
xl5dw.com
xl699.com
xlaidudu.infoxlaidudu.net
+xlaomi.netxlbsoft.com
xlcai.com
+xlcidc.com
+xlctyd.comxlcz.com
xlczg.comxldlive.com
+xlewen.comxlewen5.com
xlgao.com
xlgjg.net
+xlgogo.com
xlgtx.comxlgxapp.comxlhb.com
+xlhfmj.xinxlhk.netxlhs.com
xlhyc.com
xlinclass.com
xlisp.net
xljly.com
+xljnjy.com
+xljsci.com
+xlkdyf.comxlkorganic.comxlkshop.com
xlkty.com
+xlm258.com
xlndt.com
xlobo.com
+xlongm.com
xlpai.com
xlpan.com
+xlqeai.com
xlqzh.comxlreads.com
xlsdn.com
+xlsemi.com
+xlshou.com
+xlsxmj.com
xltnjslfd.com
+xltrip.com
+xltxly.com
+xltzgy.com
+xlvshi.com
+xlwl95.com
+xlx168.com
xlyap.com
+xlyfhw.com
xlylf.comxlyouxi.comxlyouxi.netxlysauc.comxlysauc.netxlysoft.net
xlyx3.com
xlyxo.com
xlyxp.com
+xlzcdn.com
+xlzfpt.com
+xlzhao.comxlzx.com
xlzx1.com
xlzyd.com
xlzys.com
+xlzyyw.com
xm-ad.com
+xm-ais.net
xm-chuang.com
xm-clever.comxm-olympic-museum.org
xm002.com
xm211.com
xm680.com
+xm6wpp.com
xm909.comxm9m.com
+xmafkj.com
+xmaibu.comxmamiga.comxmanblog.netxmantou.com
xmasg.comxmayitxt.comxmbankonline.com
xmbhw.com
+xmbike.com
xmbus.com
+xmcbzj.com
xmccb.com
xmcdn.comxmchong.com
+xmcimg.com
+xmcord.comxmcp.ltd
xmcwh.comxmcx.netxmd5.comxmdianbiao.com
+xmdnjl.comxmeasygo.comxmecard.com
+xmerak.com
xmeye.netxmf.comxmfc.comxmferry.com
+xmfish.comxmfunny.comxmgouemc.com
xmgps.comxmgreenrock.com
xmgsd.comxmguoyi.comxmheigu.comxmheitu.comxmhitek.com
+xmhljx.netxmhouse.comxmhx.com
xmigc.comxminfoport.comxming.ai
+xminzu.com
xmisp.com
+xmitic.comxmj1688.com
+xmjgjy.comxmjhome.com
xmjiaruan.com
xmjim.com
+xmjj3d.com
+xmjled.com
+xmjsci.com
+xmjslh.com
xmjyw.comxmkanshu.comxml-data.orgxml-journal.net
+xmldz4.comxmlhifi.comxmlulub.comxmlvbarcode.com
+xmmade.com
+xmmama.comxmmtoys.com
+xmmuye.comxmnjdwx.comxmnovel.com
xmonecode.comxmos.tvxmov.aixmpaoyou.com
+xmpbjl.com
+xmpcba.com
xmpig.com
+xmq520.com
xmqianzun.comxmqmnet.com
xmqxy.com
+xmr-zh.comxmrb.com
xmrbi.comxmruiyou.comxmseeyouyima.comxmsgame.comxmsixian.com
+xmsiyb.com
xmsme.com
+xmsmjk.com
+xmsoft.comxmsouhu.comxmsoushu.comxmspace.net
+xmssie.comxmsuperlite.comxmtbang.com
xmtxy.com
xmtyy.net
+xmuli.tech
xmwan.com
+xmwsrc.com
+xmxdev.com
+xmxfxh.comxmxgame.com
xmxmc.comxmxsapp.com
xmxwl.net
xmxwz.com
xmyeditor.com
+xmylhy.com
xmyzm.comxmzangao.com
+xmzdls.comxmzgxcl.com
+xmzhdz.com
+xmzjjl.comxmzjtjckmy.com
+xmzmmr.com
xmzmy.comxmzyark.com
+xmzylh.com
xmzzy.netxn--0lqv73m.comxn--1ctq05bvu1a.com#xn--1lq86ddzrwkhiicdz5d638a.com
+004218.comxn--2cyr99a.comxn--2qux23cs4e63q.comxn--2vra6db.comxn--3bs781ecijtrt.com
00394.net0037wan.comxn--49sl0911bjlf.comxn--49sl0911bjlf.netxn--4gqq9b2y2a.comxn--4n0arfvg.comxn--4xup5j.comxn--54q40czz0g7xp.comxn--55qx2ag79c1iq.com0033.com1-xn--55qzss7bczoeb095akxsbjkqy9d2lmr1be56a.com84xn--55qzsxj5y4ozkz93dswptmau4jc88dg75ctid8raf29c.comxn--5bry6ff6uf8w.comxn--5brz4b846h.comxn--5kv317c.comxn--5kv91jiz2b.com
00257.comxn--6fr35ac1xmmm.com001wifi.comxn--6g3a83ieum.com%!xn--6kr66fp2ep1ac5edz2hy7s2wq.comxn--6krw3qs7jl59b.com001u.comxn--6xv710dola.netxn--6xwxi637hnsb.com
xn--7eyud.comxn--7hv285el2dtof.comxn--7mqy6dj0brts55e.comxn--7qvz7xssa.comxn--7stv4oc3evv7b.comxn--88-9s0f59z.comxn--8mr619f.xyzxn--8stx8olrwkucjq3b.com001tudou.com001town.comxn--9pr56vfna007k.comxn--b0tn0sxy3ayhj.comxn--b0tp7pc6a827b.ccxn--bbt44m.netxn--blqw4qdtj1zl4x4c.comxn--btvs3aw8fhtbms310k.comxn--btvu9x9qgt8c.comxn--cesx3oukw29l.comxn--cetx7iotgtmgrm7blsf.comxn--chq044bd1s.comxn--chq7lp8e46htw3g.comxn--chq84ir6vbgn.comxn--chq84itwgrb674blm6f.comxn--chqvb362mxc0b.comxn--cks935disa.comxn--cqur4grqt5a7z4f.comxn--cssw8z54rj2ds2q.com001tech.comxn--czr93rxry.com
001pp.com
001kd.comxn--dev407h.com!xn--djr58xb1mzxk3mtrhfc8g.comxn--dkr447bejn.comxn--dkr447bejn.net xn--dll-8n0e103bz5hg93c.sitexn--dlq10g6xfkw4a201b.com"xn--dlqu6kw2e2n3aolseyrfhn.comxn--dlqw10borzgxh.comxn--doqz64hmtexkr.netxn--dtq23gl66e.comxn--ebr05n.comxn--eltt9g.com!xn--estx4tcsdff9qu37dl78b.comxn--fiq03fftg7m2c.comxn--fiq06jqoz14s.com
001jp.comxn--fiq2km75ifcu.comxn--fiq446amrnx0i.comGCxn--fiq4mgq69drxaiym2g5wnynb77huij0bchq7vj5ay61o3cwdq2ah92mlg9c.com
+001job.comxn--fiq6q20pz51d.com-)xn--fiq7vt9g2pbx5fxtf7xzb0m6jzkjfc43h.com
001jm.com"xn--fiqs8sr9ge7eb4b28vo92a.comxn--fiqv94di0c54ipe.net001daima.com001book.com00117163.xyzxn--glr604k.comxn--gmq00s1xfuvekuas68k.comxn--gtuu0v.comxn--h0tn34c.ccxn--h6qq3whvbw6a42x4ij.com&"xn--hdc1eb8be0au3c9hfb.xn--gecrj9c001.com-)xn--iiqs2frtb4za767al0ao7g96sns9eu10a.com
000vw.com
000pc.netxn--jh1a128b.com=9xn--jhqx3hjuanvm9zbb084ayucqwxhuqzew60ae3xve1fnwybs8a.comxn--jjq283ekigpy0b.comxn--jvrr72kgma408a.com000e.com($xn--l9qya49g86gm9ghpbzy1dwl0fppo.comxn--lt0at3k.comxn--mnqs00c24c2pw0ii.comxn--mts196b.net84xn--n5q75cia631gba51vx4ag2a008o08l1t0adzay2skp4b.comxn--ntsp37j.netxn--nyqx17d.comxn--nyqx2gbsm8u0b.com
00086.netxn--nyw355ejle.comxn--od1a98zlyg68g.com
+000714.xyzxn--p5t28ylet56a.comxn--p5tszu92ae3e.comxn--p8sv8uqf446dcvdi69a.comxn--pbt1sj69ag8b.comxn--pss89e6xl72g.comxn--ptua509t.comxn--q20av2y36ac54a.comxn--qruq25bjsj.net0006266.comxn--rht439a44bdyk.comxn--rss237b.comxn--rsvobw9a733l.com xn--ruqs20ac8b5z7av8ir2u.net xn--ruqs20avrjstah75bzhl.comxn--s4t325g.com
00058.comxn--sosw2ge0bs10aoq0a.comxn--swt207gl1hzc.netxn--swts8irvtrtr.comxn--tfr181fg2az43a.com xn--tkr55q2oa097dyxe209c.comxn--tlq092au7hsi3a.comxn--tqq89g2tjj5x8xs.com)%xn--uc-y82cq2s73kmjezxhp6hgxaw54d.xyzxn--uis47lp2cp2g.funxn--uisx71c0r1a.com
00042.comxn--vcso1ukuz.netxn--vcsu51b3zccpm.com2.xn--vhq4ut2dsxd5xqnicjxxo55a756aovhik0aunm.comxn--vhq726a7bz6b628r.net-)xn--vhqqb9tu5puzbh4d4wb1yo982d2jdfq3e.comxn--vhqu1kbz3bnbi.com
0000g.comxn--vhqw7k2xlb49a.comxn--viq463a.com000.linkxn--vuqz86auobw20f.comxn--w9qr0k.comxn--w9qy23cc6adz7d.netxn--wjq26j0tivl6c.com!xn--wlqw5ebvdhpi5hepihs3c.comxn--wtqs2doz3b.comxn--xcr7i593ag60ahsk7zi.com
+00.netxn--xhqx10kr8o.comxn--xkr999cp4fv97a.comxn--xkrs9ba41r.comxn--xys863bov4ac4h.comxn--y8jhmm6gn.moexn--ygtp21bwyedsq.comxn--yhqq38bmov17mqxi.com
+0.zone
xn-ck.com
xn-wh.com
xn121.com
+xn2001.comxna8.comxnaenwpp.com
xnara.org
+xnb.mexncoding.com
xndm.tech
+xndqfw.com
xnghg.com
+xnh123.comxnhdgame.com
+xninja.org
xnjcw.comxnjdcbs.com
xnjty.com
xnnpc.comxnongren.com
xnpfs.com
xnpic.comxnpn.net
+xnqcdk.com
+xns315.comxnsbdzb.comxntt.comxntv.tvxnw.com
xnw19.vip
xnwan.comxnwatch.com
xnwmw.com
xnwsc.com
+xny365.comxnyauto.comxnye.net
+xnzjxx.comxnzn.net
+xnzxeu.comxoao.comxogekfb.com
+xoir4.site
+xoliao.com
+xooooa.comxoqeyeti.comxorlink.com
+xorpay.com
+xoudou.comxoxknct.comxoxv.net
+xoxxoo.comxoyo.comxoyobox.comxoyocdn.comxoyq.netxp5.com
+xp6000.comxp85.com
xp868.com
xp8y4cpo9.sbs
+xp9365.com
+xpaper.com
+xpaper.net
+xpccdn.com
xpcdz.com
xpcha.comxpchina.netxpdf.net
xpgod.comxpkongqipao.comxplaymobile.com
+xpn.cc
+xpoy0z.com
+xppgsx.com
xpsheying.com
xpsup.comxpsy.netxpsy3q9e5kr4.comxptt.com
xpu93.com
+xpw888.comxpyx.net
+xpzsgc.com
+xq0356.comxq5.com
xq668.com
+xq8.cc
xqb24.com
+xqbase.com
+xqblog.comxqce.com
xqckg.comxqcwm123.comxqfunds.com
xqgmx.com
+xqhuyu.com
xqhzw.org
+xqievl.xyz
xqipu.comxqishuta.comxqiushu.com
+xqjmzc.comxqjs.net
xqmdc.com
xqnmz.comxqnwfdl.com
xqppt.comxqrp.comxqs7f9.tokyo
xqsbw.com
xqshe.com
+xqship.comxqtzigc.comxqu5.comxqvxifvk.com
+xqyake.comxqyk024.com
+xqymuy.com
+xqypay.com
xqzgw.com
xr100.net
xr25xytnm.sbs
xr818.com
xray.cool
xrcch.com
xrccp.comxrd-fashion.com
xrdyl.comxrdzidonghua.com
xredu.comxrender.comxresgrbw.com
xrhhg.comxrichengapp.com
+xrkapp.com
+xrkcdn.comxrkmonitor.comxrlmold.com
xrpue.com
xrpyq.com
+xrqorv.comxrso.com
+xrunda.comxrvm.com
xrwcn.com
+xrwf66.comxrxr.xyzxrxukegi.comxrxx365.com
xrzhg.com
xrzww.comxs-servers.com
xs058.comxs1.asia
+xs2500.com
+xs3cnc.comxs52.com
xs63.info
+xs7.ccxs7.com
+xs7.laxs74.comxs91.net
xs920.comxs9z.com
+xsa239.comxsappxz.com
+xsb120.comxsbiquge.com
xsbja.com
xscbs.com
xschu.comxschuban.comxscxzcz.comxscz.onlinexsdgjxy.com
xsdma.comxsdoudou.com
xsdwk.comxsee.cc
xsesc.com
+xsfaya.comxsfc.com
xsfsp.com
+xsg100.com
+xsgame.netxsgame99.com
xsgtvacct.com
+xsh520.com
+xshaox.com
+xshell.net
xshengyan.comxshenshu.com
xshgt.comxshkvip.com
+xshntc.comxshouyou.com
+xshrcw.com
+xshuai.comxshulin.com
+xshuma.comxshuoba.com
xsina.net
+xsinger.me
+xsjedu.orgxsjiandian.com
xsjit.com
xsjny.com
xsjom.com
xsjrc.com
xsjs-cifs.com
+xsjtxt.com
+xsjwyx.comxskhome.comxslb.mexslb.netxsldhkps.sbs
+xsm818.comxsmaofa.comxsmart.link
+xsmore.com
+xsn168.com
+xsnsyh.com
xsool.comxsp0311.com
xspcf.com
xsqe4uzr4.net
+xsrtvu.com
+xss.tvxssdcdn.com
+xsser.datexsshuku.comxsslyjt.comxssz.net
xsszy.comxsteach.comxsti.net
+xstnet.com
xstqj.com
+xsttop.com
xstx.infoxsui.com
+xswang.comxswdcasting.com
xsxlt.comxsy-edu.comxsy.science
+xsycps.com
+xsyeli.comxsyk021.comxsyq.ccxsyqmztg.comxsyx.xyz
+xsyxsc.com
+xsyzdl.com
+xszrcw.com
xszsw.com
+xszww2.com
+xszww8.net
+xt-gas.com
xt-kp.comxt-luyou.comxt-rent.comxt-shipping.comxt12333.com
xt3yy.comxt70.comxtadmins.com
+xtaike.comxtal.ccxtao.me
+xtbank.comxtc-edu.com
xtcaq.com
xtcrm.comxtdj.cc
xtedu.com
xthinking.net
+xtibet.com
xtion.netxtjc.com
xtjky.com
xtlog.com
xtmit.com
+xtmtrj.com
+xtongs.comxtowork.comxtqarzip.com
xtransfer.comxtrapowercn.comxtrc.netxtsfuke.com
xtt00.comxttblog.comxttz.comxtu2.com
xtuan.com
xtuos.com
xtutoring.comxtw-system.com
xtxcm.com
xtyyw.com
xtzhiliji.com
+xtzjup.comxu1s.comxu8.fun
+xuanad.com
+xuanba.com
xuancaizi.comxuanceo.com
xuancheng.orgxuanchuanyi.comxuandan.comxuande99.comxuandecarpet.comxuanfengge.comxuanfengkeji.comxuanhaikuwan.comxuanheng0405.comxuanheng99.comxuanhuange.comxuanhuange.netxuanjigame.comxuanjingcn.comxuanjutong.com
+xuanke.comxuankuge.com
xuanlishi.comxuanliw.com
+xuanma.comxuannaer.comxuanqii.comxuanquge.comxuanqun.comxuanruanjian.comxuanshi.linkxuanshitou.comxuanshu.comxuanshu.org
xuansiwei.comxuantaikeji.comxuanteng.orgxuanvoyage.comxuanwonainiu.comxuanwu88.comxuanwumobile.comxuanwww.comxuanxiaodi.comxuanxiaozhuanjia.comxuanxuan.comxuanxuangame.comxuanxue.comxuanyang888.comxuanyaodang.comxuanyaodang.netxuanyge.infoxuanyouwang.comxuanyuanhuangdi.orgxuanyuanma.com
xuanyuans.comxuanyuanzjy.comxuanyusong.comxuanyutech.comxuanyuys.comxuanzhi.comxuanzhuanmumatuwen.com
xubei.comxuchangqifu.comxuchuang.comxudan123.com
xudankeji.comxudongfood.comxudoodoo.com
+xuduan.vip
+xue114.com
+xue163.net
xue51.com
xue63.com
xueanquan.comxueba100.comxuebalib.com
xuebawang.net
xuebingsi.com
xuecaijie.com
+xuecan.netxuechebu.comxuechela.com
xuechu123.com
+xuecoo.com
xueda.com
+xuedao.comxuedapei.com
xuedi.comxuedingmiao.com
xuedong97.comxueepay.comxueersen.comxueersi.comxueersibook.com
xueerxing.comxuefeiji.orgxuefenxi.com
xuefo.com
xuefo.netxuegaogame.comxuegaogg.com
xuegeshui.comxuegongkong.com
xueguoedu.net
+xuehai.netxuehaiwu.com
xuehuacdn.com
+xuehui.comxuehuile.comxuehuiwang.com
xueit.com
xuejia123.comxuejian.sitexuejian.xyzxuejingguan.comxuejinqu.com
xuejiqiao.comxuekanba.com
+xuekao.com
xuekao123.comxuekeedu.comxuekubao.comxuekuibang.shopxuelangapp.comxuelecn.comxueleku.comxuelema.comxueleyun.com
+xueli9.com
xuemh.com
+xueming.lixuenarui.com
xuenb.com
xuepaijie.comxuepingx.comxueqian.com
+xueqiu.com
xueqiu360.com
+xuesai.net
+xuesax.com
+xueseo.comxueshanlinghu.comxueshen.net
xueshiyun.com
+xueshu.comxueshu5.comxueshuda.com
xueshujia.comxuesongshuwood.comxuetangonline.comxuetangx.comxuetengedu.com
xueti.com
xuetianli.comxuetimes.com
xueto.comxuetongw.com
xuetu.netxuetuwuyou.com
xueui.comxuewangshang.comxuewangzhan.comxuewangzhan.net
xuewei360.com
xuewennet.comxuewenya.com
xuexb.comxuexi.laxuexi199.comxuexi365.comxuexi365.netxuexi637.comxuexiaodaquan.comxuexiaozhaopin.comxuexibao.comxuexicha.comxuexicn.com
xuexigang.comxuexila.comxuexili.com
xuexin365.comxuexiniu.com
xuexitong.comxuexiwa.comxuexizhiwang.comxuexizoo.comxuexizuowen.com
+xueya8.com
xueyanshe.comxueyiyun.com
+xueyou.orgxueyuanjun.comxueyuhuangjinyan.comxuezhangbb.comxuezhangya.comxuezhishi88.com
xuezhiyou.com
xuezhouyi.com
xuezizhai.comxuezozx.com
xugaoyang.comxugt.comxuguangwangluo.com
+xugucn.com
+xuhe56.com
+xuheen.comxuhehuan.comxuhongjx.comxuhuihs.com
xujianhua.com
xujiepack.comxujingkj.comxujinhuancaishui.com
xujun.orgxuka.comxulaoshi68.comxuld.netxuliangwei.comxulihang.me
xuliutian.comxulv.netxumenger.comxumengwang.comxumingxiang.com
xumucloud.com
+xumurc.comxun1688.com
+xun321.comxunbang.com
xunbao178.comxunbaozhifu.comxunbibao.com
+xunbin.com
xunbo.netxunchabing.com
xundasemi.comxundayun.comxundekai.comxundiesoft.com
+xundns.com
+xundns.netxundupdf.comxunerjie.comxunfang.comxunfeia.comxunfeib.comxunfeivr.comxunfeiwl.com
xunfeixxj.comxungejiang.comxungeng360.com
+xungou.comxungou5.com
xunguagua.comxunguanggame.comxunhuoyi.comxunhupay.comxunicard.comxunihao.netxuniquan.com
xunjiecad.com
xunjiepdf.comxunjieshipin.comxunjietupian.com
xunjk.comxunkids.com
+xunkoo.comxunlanchina.com
+xunlei.com
+xunlei.netxunleigang.comxunleige.comxunleioa.comxunleisvipp.com
+xunlew.comxunliandata.com
xunlianip.comxunlong.net
+xunlong.tvxunlongsoft.com
xunlu-led.com
xunlugame.com
+xunmei.net
xunmeinet.com
xunmengtu.comxunmiweb.com
xunpaibao.comxunqinji.netxunrenzhaoren.com
xunruicms.comxunruns.com
xunsearch.com
xunshi.cc
+xunsho.comxunshou.com
xunsl.com
xunsn.com
+xunsns.comxuntongwuxian.com
+xuntou.comxuntou.mobixuntuoguan.com
+xunurl.com
xunvision.com
xunw.shop
+xunwan.com
+xunwei.org
xunwei.tmxunweihc.com
xunxi.com
xunxiang.site
xunxu.comxunyangzaixian.com
xunye1975.comxunyixia.com
+xunyou.comxunyou.mobixunyouyw.com
+xunyun.com
+xunzai.com
xunzhuang.net
xuooo.com
xupea.com
xupernode.comxupo.net
xuprinter.com
xupu.namexupu120.com
+xuqyfw.com
+xurong.xyzxuruowei.comxushunda.com
xussb.com
+xusseo.com
xutsk.com
xuvol.comxuweidj.comxuwenliang.com
+xuxian.com
xuxian.mexuxueli.com
xuxusheng.com
xuyalipin.comxuyangny.comxuyi.net
+xuyu56.com
xuyueswkj.com
xuzai.com
xuzhi.netxuzhoudeyu.com
xuzhoujob.comxuzhoumuseum.comxuzhousports.comxuzpazms.comxv5.com
+xvcdmo.com
+xvista.comxvizubkg.comxvuikerk.comxvwprdk.comxw-planning.com
+xw-scm.com
+xw1806.com
xw360.com
xw501.com
xwadv.com
xwamp.comxwan.comxwb8.com
+xwbank.com
+xwcool.com
xwcxgroup.comxweb.vipxwei.tv
xwfintech.comxwfruits.comxwgl.ccxwhb.comxwhodesign.com
xwhxm.com
+xwin77.com
xwjqr.comxwjr.comxwjy.orgxwkjcms.com
xwlxw.com
xwmyw.comxwog.com
xwok8.com
xwood.netxwshensuofeng.com
xwtex.comxwuorvhz.comxwveuspa.sbsxwx.mobixwxguan.com
xwxwh.comxwy-powder.com
xwyun.net
+xwz999.comxwzc.net
xwzw5.com
+xwzxjy.comxwzxldfx.comxx-industrial.comxx-motor.comxx-sapce.com
xx-yibiao.com
xx007.comxx4a.comxx5.com
+xx5515.comxx667788xx.comxx7z.coxx8g.comxx9q.com
xxadc.com
+xxahsk.com
xxart.net
+xxazjz.comxxbiquge.com
xxbmm.comxxbt.com
+xxcang.com
+xxcbjx.com
xxccx.com
xxcig.com
xxcmw.com
xxdao.com
xxfzf.com
xxfzl.comxxgd888.com
xxghh.bizxxgzmlt.com
xxhd-tech.com
xxhkt.comxxhpkwd.comxxinficity.com
xxingclub.com
xxj01.com
+xxjdns.com
+xxjqgs.comxxjrjxc.com
+xxjrqc.comxxka.com
+xxkapp.comxxkucun.com
xxlcn.comxxliudsp.comxxlsmqzs.com
+xxlwin.com
xxmac.com
xxnet.vip
+xxnets.net
+xxnmjx.comxxoojoke.com
xxorg.com
xxpay.vip
xxpie.com
xxpkg.com
+xxptcs.comxxqb5200.netxxqipai.com
xxqun.com
+xxqzjt.comxxr-shop.com
xxrjm.com
xxrou.netxxrxfilter.comxxs8.comxxsb.com
+xxsfjx.comxxshell.com
xxshu.comxxskins.com
xxspd.comxxsy.comxxsy.netxxsypro.comxxtaotao.com
+xxtiao.com
xxtlw.comxxtmail.com
xxtswzedu.comxxuewen.com
xxwmy.com
+xxwolo.com
xxwxf.com
xxxbiquge.com
+xxxcsf.com
+xxxedu.net
+xxxhhh.comxxxx92xxxx.comxxxxxbbs.comxxxzzlm.org
xxycw.comxxyeyan.com
+xxyfgy.com
+xxyhzd.com
+xxykgl.com
xxymw.comxxyo.comxxys2023.comxxyw.comxxyx.ltdxxyy.coxxzfgjj.com
xxzhushou.com
xxzrs.xyzxxzsgame.com
+xy-365.comxy-asia.com
xy-colomi.com
+xy-ddh.comxy-display.com
xy-mp.com
xy007.net
+xy1212.com
+xy1758.com
xy178.com
+xy3000.com
xy36z.comxy58.net
xy599.com
xy77.live
xy980.net
+xyb100.com
xyb2b.comxybch123.comxybj365.com
+xybsyw.com
xybtv.com
+xybygc.com
+xybygw.comxybz.funxyc-edu.com
xycad.comxycaogen.comxycareer.com
xycdn.com
xycdn.netxyclient.netxycloud.comxyclouds.comxycq.online
xycsq.com
+xycwei.com
+xycyky.comxyda.ccxydcname.comxydcname.net
xydhl.com
xydxcloud.com
+xydz08.com
xyeyy.comxyf6.comxyfc.com
xyfcw.com
+xyffsb.comxyffvip.com
+xyflcp.com
xyfnz.com
+xygmed.comxygt666.com
+xygtea.comxygulou.comxygwh.ccxyh2021.comxyhc.com
xyhis.comxyhjd168.com
+xyhlcd.comxyhospital.com
+xyhqsh.comxyhtml5.com
xyict.comxyj.link
+xyj321.com
+xyj618.com
xyjbglass.com
+xyjj99.comxyjs999.comxyjuyuan.com
+xyjyjt.com
+xykgjt.netxykmovie.com
+xyktjt.comxylbsnjx.comxylh888.com
+xylink.com
xylive.tv
xylll.com
xylmf.com
+xylofh.com
+xymcp3.com
+xymdsp.com
+xymfqb.com
+xymlcs.com
+xynbnb.comxyniubi.com
xynsh.com
+xyookj.com
xyous.com
+xyppzx.com
xypse.comxyqb.com
+xyqczy.comxyqmall.com
+xyqy88.comxyrbszb.com
xyrtv.comxysb.comxyshoppingbag.com
+xysjcy.comxysmart.comxysnews.comxysstgs.comxystatic.com
+xystoy.comxysy.comxyt-tech.com
+xytiyu.comxytjcpj.comxytm.artxytrades.com
xytzg.com
+xytzjt.comxyunhui.com
xyunjiasu.com
+xyunqi.com
xyusk.comxyvcard.com
+xyvcpe.com
+xyvend.com
xyvending.comxyw.com
+xywlapi.ccxywlhlh.comxywm.comxywm.ltd
+xywnas.comxywooden.comxywy.com
+xywyfw.com
xywzs.com
+xyx234.com
xyxcables.com
+xyxdie.com
xyxsc.com
+xyxsns.com
xyxsw.ltd
xyxun.comxyxy.comxyxy.net
+xyxyzz.com
xyxza.com
+xyy001.comxyyb.netxyyh.xyz
+xyyksy.comxyyuedu.com
+xyyx82.com
xyyxcm.co
xyyzi.com
+xyz-jm.comxyz1412.net
+xyzcdn.net
xyzcn.comxyzdict.com
+xyzele.com
+xyzfm.linkxyzfm.space
+xyzggg.com
+xyzimo.com
xyzkj.xyzxyzmdzs.comxyzmovie.net
xyzop.com
xyzpw.netxyzs.com
xyzshouji.com
xyzsq.com
xyzvo.com
+xyzywl.com
xz-juming.com
+xz.com
xz229.com
+xz3733.com
xz577.comxz6.com
+xz6699.comxz66gxnnjyl.comxz7.comxz8.com
+xzb360.com
+xzbahd.com
xzbzq.comxzcblog.com
xzcdc.comxzcjyjt.comxzcoder.com
xzddx.com
+xzfile.com
xzggjyzpw.com
xzgjj.com
+xzgxwq.comxzhh966888.comxzhhbfesco.com
xzhichang.comxzhizao.com
+xzhzkd.com
+xzjtkg.comxzkd.com
+xzking.com
+xzlogo.com
+xzlres.com
+xzlsqy.com
+xzltzc.com
xzlzf.com
xzm56.com
xzn56.comxzoo.org
+xzpoll.com
+xzpxrc.comxzqixing.com
xzqxj.com
+xzrdwq.comxzsdyyy.com
xzsec.com
+xzsmlq.com
xzsnw.comxzstatic.com
+xzsthj.com
xztdesign.com
+xztvip.com
xztzb.com
+xzvhyx.comxzw.com
+xzw.pwxzx.comxzxw.comxzxwhcb.comxzxxlcp.com
xzyhealth.com
xzyjl.com
xzzhongye.comxzzp.netxzzulin.com
+y-feng.comy-os.net
+y.cooly.toy007.com
y1995.com
y2002.comy2374050fo.comy4rwk6v8s41kr.comy56.com
y5663.com
y5api.com
+y5kfpt.com
+y5news.comy5store.comy66b1pi5re.comy70qeg6506.com
+y77.ccy78r.comy80s.comy8comgames.comy8cyx6fvyxk3hs.comy8kj95k62v.comy8l.comy999.comy9photo.comya-bo888.comya12345.comya17.com
ya247.com
+yabl-f.comyabo.comyabolive.comyaboshi0777.comyac8.comyac8.net
+yace17.comyach.meyadashi.com
+yadiaz.comyadingtour.com
+yadran.comyadunyun.com
yaduo.comyaeherhealth.comyaersen.com
+yaexun.comyafangyiyuan.com
yafco.com
+yafdev.comyafeilinux.com
+yafshb.comyaft.vip
+yageo.tech
yago-mall.comyahacode.com
+yahaha.netyahaizi.comyahboom.comyahoo001.comyahotab.comyahuhost.comyahui.ccyahui.hk
yahuishou.comyahunet.comyahxxcl.com
yaimg.comyaitest.comyaiyuan.com
yajxc.comyakjhfh.com
+yakool.comyalewoo.com
yalianedu.com
yaliaojie.comyalikongzhi.comyalishiyanji.com
yalixinli.comyalongsi.com
yalqq8976.comyamaijia.netyameisj.com
+yamibo.comyamomay.com
+yan678.comyanagou.netyananhongyun.com
yanbaohui.comyanbaolong.comyanbeige.com
yanbinghu.com
yanbm.com
+yanbmn.com
yanboyuan.com
+yance.wikiyanchaochao.comyanchebang.comyancheng-culture.comyanchengjtgz.comyanchengzx.comyanchupiaojia.comyanchupiaowu.comyancloud.redyandianying.comyanding.com
+yanedu.com
yanfa.netyanfabu.com
yanfen.online
+yang99.funyangbentong.comyangchenglianhe.comyangcheyongche.comyangchunjian.comyangcong.comyangcong345.comyangcongchufang.comyangdongjia.comyangerxiao.comyangfanhao.comyangfannie.comyanggechang.comyanggeng.com
yanggu.tvyangguangxinye.comyangguanjun.comyangguiweihuo.comyanghong.artyanghuaxing.comyanghui.com
yangjibao.com
+yangjie.li
yangjisen.com
yangk6668.com
yangkeduo.com
+yangki.netyangkun.net
yanglaocn.comyanglaofuwu365.comyanglaotiandi.comyanglaozhan.orgyanglee.com
+yangli.comyanglong.proyangluojob.comyangmao.infoyangmaohao.net
+yangmi.netyangmingauction.comyangner.com
yangpanzg.comyangqi.showyangqianguan.com
+yangqq.com
+yangqu.comyangsam.comyangsensheng.comyangshengliang.comyangshengtv.com
yangshijz.com
yangsihan.comyangtaiapp.comyangtao.siteyangtaolujiu.comyangtengfei.com
yangtianb.comyangtse.com
yangwajia.comyangwang.pwyangwangauto.com
+yangwc.comyangwenlong.orgyangwenqing.com
yangxiang.comyangxiangdb.com
yangxikun.comyangxingzhen.comyangyangad.comyangyangla.comyangyanxing.com
+yangyi.vipyangyi02.comyangyi08.comyangyi09.comyangyi13.comyangyi19.comyangyingming.com
+yangyk.comyangyongquan.com
+yangyq.netyangzhe1991.org
yangzhihb.comyangzhiping.comyangzhix.comyangzhongchao.comyangzhou56.comyangzhoutuozhan.comyangziclean.comyangzijiang.comyangzuntang.com
+yangzw.vipyanhaijing.comyanheyey.com
yanhuoidc.comyanjianshengwu.comyanjiao.comyanjiaoapp.comyanjiaoweixin.com
yanjinews.com
yanjingge.comyanjiubaogao.comyanjiyou.netyanjun7858.com
yankanshu.net
+yankay.comyanke360.comyankong.com
+yanliu.orgyanlong.shopyanmaiyingyu.comyannaisi.comyannis.club
yannv.com
+yanoda.com
yanpengjk.com
yanpk.com
+yanpwy.comyanqiao.comyanqingshan.comyanqueai.comyansedaquan.comyanshanmuyuan.com
yanshihua.comyanshishuo.comyanshuangyingx.comyanshuoshi.com
yansx.comyantai-chuanpiao.comyantaibank.netyantailuoshuan.comyantaimarket.comyantaiport.comyantaitech.comyantu360.netyantubao.comyantuchina.comyantudq.com
yanue.netyanweihappybirthday.comyanxian.orgyanxintong.comyanxishe.com
+yanxiu.comyanxizhu.comyanxuezhang.netyanxurui.cc
yanyapeng.comyanyib2b.comyanyidakaoyan.comyanyijingling.comyanyiwu.comyanyizc.comyanzhaowang.comyanzhihuisc.comyanzhiwu.comyao.com
+yao123.com
yao51.com
yaobo.net
yaoburang.com
+yaocdn.comyaochanglai.comyaochentech.comyaochufa.comyaocsoft.com
+yaodou.netyaodu365.comyaofangwang.comyaofangwang.net
yaofei365.comyaoge123.com
+yaoguo.comyaohaixiao.comyaohuiji.com
yaohuo.me
yaohuo168.comyaoji.center
yaojibuyu.comyaojidsfee.comyaojiedianzi.comyaojigames.comyaojingtang.com
yaokaihui.comyaokeke.com
yaoky.com
yaolaifen.com
yaolaivip.com
+yaolan.comyaolaoshenfang.comyaoliangmi.com
yaoliwang.com
+yaoluu.com
yaomai666.com
yaomaiche.com
+yaoman.net
yaomv.comyaonano.comyaooxx.spaceyaopaiming.com
yaopharma.comyaopinlenglian.com
yaopinnet.comyaoq.net
+yaosai.comyaoshimiaolianhua.com
+yaotia.com
+yaoudq.com
+yaoujc.com
+yaowan.comyaoxuebang.comyaoyedan.netyaoying.vip
yaoyitang.comyaoyouke.com
yaozh.comyaozhixiang.com
yaozhizhu.com
yaozs.com
+yaozui.comyapodong.comyaqilian.comyareiot.com
yaristyle.com
+yarncm.com
yarnn.comyashowmarket.comyasishuo.comyasiyasi.comyasking.orgyasn.comyasuoji-shanyan.comyasuotu.com
yatai.comyataidianli.comyataiinsur.comyatailx.com
yataimall.comyataioa.com
yatebizhi.com
+yaterv.com
+yatiku.comyatiwang.comyatsenglobal.comyatsoft.com
+yatspa.com
yaucn.com
yauuy.comyawancaiwu.com
+yawbbs.com
+yaxbpx.comyaxi.netyaxiaodong.com
+yaxige.comyaxin888.comyaxinde.comyaxinghbkj.comyaxinzhineng.comyaxuntuhang.com
yaya.love
+yayaad.com
yayagushi.comyayawan.comyayigou.net
yayihouse.comyayiskq.comyayitianyun.com
+yayjrj.comyayouapp.comyaypool.comyayu.net
yayunjiqi.com
yayyb.comyazhihg.comyazhougoufang.com
yazuo.com
+yb1518.com
+yb1867.com
+yb3.cc
yb983.com
+yba120.com
ybaby.com
+ybaobx.com
ybbag.com
+ybbdzp.com
ybbgd.comybbonpet.com
+ybbxch.xyz
+ybbxkj.comybc1024.com
ybc35.com
ybccb.comybccode.com
+ybcnjg.com
ybdbz.comybe.netybgz.comybhdmob.comybi.netybin.cc
ybink.com
+ybirds.comybj.comybjjsgc.comybjk.com
+ybk001.comybk6.comyblc.com
yblcs.comyblp.com
yblry.com
+ybm100.comybparts.com
ybren.com
+ybs120.com
+ybscjp.com
+ybt168.comybtianshantu.com
+ybtong.comybtvyun.com
+ybusad.com
ybvip.com
+ybvips.comybvv.com
+ybword.comybwotftq.sbsybwzx9e.com
ybxww.com
+ybynet.com
+ybzhao.com
+ybzzgh.org
+yc-exp.com
yc-gc.comyc-petronas.comyc-yinhe.com
+yc-zyg.com
yc123.com
yc123.netyc12313.comyc2e.com
yc370.comyc38.comyc999vip.com
ycait.comycandyz.comycb.com
ycbiz.netycbright.com
yccar.com
yccdl.netyccn.cc
+ycczkf.com
+ycdext.netycdmyjf.siteycdongxu.comycduile.com
ycdz.shop
+ycdzcc.comyceshop.com
+ycfqbj.comycfybjy.com
+ycgame.comycgj.cc
ycgjj.net
+ycgslb.comycgzgame.com
+ychedu.comychromedgeie.com
+ychxie.comychxiex.comycig.com
ycigilink.com
+yciyun.comycjt2007.comycjy-service.com
+ycjyjt.com
+yckceo.comyckjonline.com
+yckkdd.comycku.com
yclh6.com
ycloud.onlineycloudlb.com
ycloudvip.com
+ycmlaw.comycnaxin.comycnevpds.comycoa0898.com
ycool.com
+ycpack.net
ycpai.com
ycpsy.com
ycqin.com
+ycqyhb.com
ycrcw.netycrh.comycrusher.comycrx360.com
+ycs120.com
ycsd.workycsound.com
ycsrc.comycsystem.comyct-tec.com
+yctdyy.com
+yctxrj.comycty.orgycwalker.comycwb.com
+ycwljt.com
ycxfgroup.com
ycxicmall.com
ycxmu.com
ycyaw.com
+ycycut.com
ycyeshen.cyou
+ycyjkj.comycym.com
+ycypin.com
ycyui.comycyz.com
yczbw.comyczihua.com
+yczxyy.com
yd166.comyd43s2q51b.com
ydamc.com
+ydbimg.com
ydbox.com
+ydc360.comydcb.comydce.com
+ydcloud.cc
+yddxkj.comydfeathers.com
ydfgq.com
+ydggcm.comydh.funydhexpress.com
+ydhyfs.com
+ydimmi.comydjdcjc.com
ydjia.comydjt1166.comydkj2019.com
+ydl-sh.comydl.com
+ydlcdn.com
ydlut.com
ydmel.com
+ydmeng.comydn5.comydnewmedia.com
ydniu.com
+ydr.me
ydrtz.com
+ydsaso.com
+ydscan.net
+ydsjjs.comydstatic.comydsy.orgydt-express.comydt.link
ydtad.com
ydtbl.com
ydtnotary.com
ydtqd.comydu6.com
yduav.com
ydvip00aa.com
ydvip00ab.com
ydvip00ac.com
ydvip00ad.com
ydvip00ae.com
ydvip00af.com
ydvip00ag.com
ydvip00ah.com
ydvip00ai.com
ydvip00aj.com
ydvip00ak.com
ydvip00al.com
ydvip00am.com
ydvip00an.com
ydvip00ao.com
ydvip00ap.com
ydvip00aq.com
ydvip00ar.com
ydvip00as.com
ydvip00at.comydwatch.comydx2.com
ydxrf.com
ydxxt.comydyeducation.com
+ydyljk.com
ydylmtytv.com
+ydyspc.com
+ydywh.shopydyy120.com
ydzgphoto.com
+ye1992.comye3.comye40.comyeah.netyeahfast.com
+yeahka.comyeahnic.net
yeahworld.comyeai.comyealink.com
yealinkvc.comyeambin.com
yeaosound.com
yeapcloud.com
yeapcloud.netyearnfar.comyeastar.comyeasturias.comyebaike.comyebangyu.orgyebaojiasu.comyeboyzq.com
yecdn.comyechengmuye.com
+yedapi.comyedejia.comyedingding.comyeduxiaoshuo.comyee5.com
+yeeaoo.com
+yeecai.comyeecall.com
+yeecin.comyeecloud.comyeedian365.comyeefeitrip.comyeefire.comyeefung.com
yeefx.net
+yeekit.comyeelight.comyeelink.netyeelogo.comyeemiao.comyeemiao.net
+yeepay.com
yeepaycdn.comyeepiao.com
+yeetan.com
yeeuu.com
+yeeyan.com
+yeezon.comyefengs.com
+yegame.comyegenyou.com
yegoo.comyeguohd.com
yeidc.com
yejiangye.comyejibang.comyejienet.com
+yejing.biz
yejuu.com
yekyc.comyelanxiaoyu.com
yelinmall.comyelishi.net
yelixiali.com
+yelook.comyemacaijing.comyemaili.comyemancomic.comyemaosheji.com
yemaosoft.comyemayun.comyemeihuoguo.comyemeisy.com
yemet.com
yemhj.com
+yenmon.comyentechnology.comyeoebyevhq.com
+yeolar.com
+yeoner.com
yeree.com
+yergoo.comyes-chinese.com
+yes515.com
yes58.net
yes88.com
+yesacc.com
+yesapi.netyesbt.cc
yesbx.comyeschool.netyescontrols.com
yesdotnet.comyesense.com
+yeshen.comyeshengarts.comyeshine.net
yeshj.comyeshu.cloud
yeshu.comyesidos.com
yeskn.com
yesky.com
+yeslib.com
yeslicake.comyesmyimg.comyesmywatch.com
yesmywine.comyesonfashion.comyesoulchina.comyespearl.com
+yespik.com
+yespmp.com
+yestar.comyestar1992.comyestarcorp.comyestarm.com
yestarvip.comyestehotel.com
+yeston.netyestone.comyesudoo.com
+yesuse.net
+yeswan.comyeswood.com
+yesxun.com
yetianlian.ccyetianlian.infoyetianzi.com
+yettos.com
yeuer.com
+yevvte.comyewanba.comyewen.usyewuyuan.comyexinggroup.comyeyaji9.com
yeyaplay.site
+yeyday.comyeyezhenxuan.com
+yeyimg.comyeyingkf.comyeyo.cc
yeyou.comyeyoucdn.comyeyoujia.comyeyousg.comyeyulingfeng.com
yeyun.comyezaifei.comyezhjmq.comyezhuwq.comyezhuwuyou.comyeziapp.com
+yezipi.netyeziting.comyezixigame.comyezixueyuan.com
yf-ch.com
yf-ec.com
yf-zs.com
yf0008168.comyf3p.com
yf520.comyfbudong.com
yfbzb.comyfcache.com
+yfcalc.com
yfcdn.netyfchuhai.com
+yfcity.netyfcloud.com
+yfcloud.ioyfcloud.workyfd.xyzyfdc.net
+yfdlsb.com
yfdns.netyfds168.com
yfdts.net
+yfdurl.comyfdurl0.comyfdurl1.comyfdurl10.comyfdurl11.comyfdurl12.comyfdurl13.comyfdurl14.comyfdurl15.comyfdurl16.comyfdurl17.comyfdurl18.comyfdurl19.comyfdurl2.comyfdurl20.comyfdurl3.comyfdurl4.comyfdurl5.comyfdurl6.comyfdurl7.comyfdurl8.comyfdurl9.com
yfdxs.com
yfdyf.com
yfdzy.com
+yffood.com
+yfgj68.com
yfhhf.comyfhl.netyfhtbdn.comyfhxtech.com
+yfinds.com
yfiot.comyfjiakao.com
+yfklxz.com
yfldocker.com
+yflive.net
yfm99.com
yfmac.com
yfmhw.com
yfp2p.net
yfpayment.comyfsafety.com
+yfscdn.com
+yfscdn.net
yfservice.com
+yfswny.com
yftxt.com
+yfty88.comyfvb.com
yfvjv.app
yfway.com
yfwnm.com
yfwpt.vip
+yfycrc.com
yfycyboil.com
yg-dk.com
+yg1997.com
ygbid.comygc711iq.comygcooler.comygct.comygdatabase.comygdx.net
ygdy8.net
+yge.meygei.comyget.meygfengshui.com
ygfuu.com
yghsh.com
+ygibao.com
yginsight.comygjctech.comygjj.com
+ygjzsb.com
yglm.mobi
+ygread.com
ygsdmedia.com
+ygsoft.com
+ygswkj.com
+ygtcpa.comygwenxue.comygwh.cc
+ygwood.comygx8888.comygym.orgygzt.netyh-group.comyh31.com
yh596.com
yh598.comyh99.ccyhachina.comyhadmob.comyham.net
+yhbimg.comyhc-card.com
yhchj.com
+yhcjcw.com
yhcko.comyhcmovie.com
yhcqw.comyhd.comyhdd365.shop
yhdfa.comyhdi.net
+yhdlcs.com
yhdm5.com
yhdns.net
yhees.com
yhengtech.comyhgfb-cn-static.com
+yhgmjf.com
yhgo8.comyhhh8888.comyhhotel.com
yhidc.comyhindustrial.comyhj2000.comyhj9.comyhjboke.com
+yhjbox.comyhjx2018.comyhkbchao.com
+yhkgas.com
yhkingdee.com
yhlbx.com
yhly.shop
yhm11.com
+yhouse.comyhpackaging.net
+yhq368.com
+yhqapp.comyhqdashi.com
yhquan365.com
+yhqurl.com
yhrcb.com
yhres.comyhshapp.com
yhsms.comyhsp.netyhsport.com
yhspy.com
+yhssyl.com
+yhstjt.comyht2017.com
+yhtclb.comyhtj2014.com
+yhtools.ccyhtx.tv
yhtzx.netyhuimall.com
yhurl.com
yhwch.comyhwjlp.plusyhwomen.comyhx3318.comyhxincai.comyhxs3344.net
yhxuexiao.com
+yhyhwy.com
+yhyyjk.comyhz2000.com
+yhz365.com
yhz66.com
yhzky.net
+yhzky1.netyhzm.com
yhzrt.comyhzuche.comyi-i.com
yi-jy.com
yi-oa.comyi-programmer.com
+yi-you.orgyi-zhou.com
+yi0600.com
yi114.comyi2.netyi6.comyi7.com
yi958.comyiai.me
+yiaini.comyianjiulao.com
yiapp.comyibaixun.comyiban.io
yiban1314.comyibaogao.com
yibei.comyibeianyuming.comyibeiic.comyibeiwangluo.com
+yibite.comyibo28.club
+yiboow.comyiboshi.comyibotec.comyiboyangguang.com
yibuzhipg.com
yicai.comyicaiglobal.comyicaihua.com
+yicamp.com
yicbo.com
+yice11.comyicha-yc.comyichadan.com
yichangly.com
yiche.com
yichemall.comyichen88.comyichengfood.net
yichengji.comyichengwangluo.net
yichesafe.comyicheshi.comyichezhi.com
+yichi.techyichuanlvshi.comyichuyifan.com
yickd.comyiclear.comyicode.tech
yicoe.comyicongfound.org
+yicuba.comyicungn.comyicx.comyida6666.com
+yidaba.comyidadrillcollar.com
yidai.comyidaidai.comyidaointernational.com
yidaomall.com
yidaomobi.comyidaplay.comyide.comyideamobile.comyidejia.comyidengxuetang.com
yidian360.comyidianchina.comyidianda.comyidianer.comyidianfenqi.comyidianhulian.comGCyidianliangdiansandiansidianwudianliudianqidianbadianjiudianshi.comyidianling.comyidianliulan.comyidiansz.comyidianting.xinyidianzx.comyidingding3.comyidmall.com
yidns.netyidong-food.com
yidonghua.com
yidonglin.comyidongtimes.com
yidoutang.comyidouzhaofang.com
+yiduct.com
+yidugo.comyidui.me
+yiduir.comyiduiwu.comyidulive.comyidumen.com
yidun.comyiernews.comyieryouxin.comyifabao.comyifajingren.com
+yifake.comyifancdn.comyifancn.comyifanggl.comyifanghy.comyifanmedia.netyifanshangplus.comyifatong.com
yifei.comyifei.spaceyifeimeiye.comyifeishu.com
yifen.comyifeng-filter.comyifeng-mover.com
+yifeng.comyifenghudong.comyifengke.comyifengliangyou.comyifengx.com
yifengxin.org
+yifone.com
+yifont.comyifu.netyifubao.com
+yifucj.com
yifum.comyifum.hk
yifum.net
+yifutu.comyigaosu.comyige.orgyigecun.com
yigerlife.comyigomob.com
+yigood.netyigoonet.com
+yigouu.comyiguanba.comyiguanghuagong.com
yiguo.comyiguoimg.com
+yihafo.comyihaikerry.netyihaiquanyi.comyihaishijia.com
yihao.comyihao01.comyihaocar.com
yihaodian.comyihaodianimg.comyihaoduozhongduan.comyihaohuoche.comyihaojiaju.com
yihaomall.comyihaomen.comyihchina.com
+yiheda.com
yihedoors.com
yihong001.comyihong1718.comyihshou.com
yihtc.comyihu.comyihuacomputer.comyihuajiaoyu.com
+yihubg.comyihuichuang.com
yihuikeji.vipyihuimg.com
yihun.comyihuohao.com
+yiibai.comyiichina.com
+yiigle.com
+yiihuu.comyiii.netyijia-ai.com
yijia.com
yijia.inkyijiaer.com
yijian119.comyijiangbao.comyijianjiaoyu.comyijianjiexi.comyijianzj.comyijiaokuan.comyijiaqin.comyijiaren3413.com
yijiawang.com
yijiebuyi.comyijiedai.com
yijimaoyi.comyijingji.com
yijintong.netyijirecovery.comyijiupi.com
yijiuplus.comyijueweb.comyijun77.comyikang1977.comyikangdongf.comyikaoapp.comyikaochacha.com
+yikaow.comyikedou.com
yikedy.cc
yiketalks.comyiketianqi.com
yikeweiqi.comyikexue.comyikouhy.comyikuaide.comyikuaiqu.comyikugzb.com
+yikuns.comyilantop.com
yilanvaas.com
yile.site
yile8.comyilelive.comyilewan.comyileweb.comyileyiqi.comyileyoo.comyileyunssp.comyili.com
yilianapp.comyilianmeiti.comyilianyixue.comyiliaosheji.comyilibabyclub.comyilicar.comyiliganggou.comyilihuo.com
+yiliit.comyilijet.com
yililinye.comyilingshop.comyilinguoji.comyilinhut.comyilinweb.comyillionbank.com
+yilong.comyilongnews.comyilongweiguo.com
+yilule.comyiluzouhao.com
yilvcheng.com
+yimakk.comyimaoip.comyimashijie.comyimeichu.comyimeihui360.comyimeima.comyimeiya.comyimeizhibo.comyimenapp.comyimenapp.net
+yimeng.comyimengmusic.com
yimengseo.comyimenonline.comyimenseo.netyimenssl.com
+yimian.xyzyimianmian.com
yimiaotui.com
yimiaoxia.comyimiaozhongdemeng.comyimidida.comyimifund.com
yimihaodi.com
yimin.bizyimin168.comyiminchaoshi.comyimingkeji.net
yimingzhi.net
yimininfo.comyiminjiayuan.com
+yiminw.comyimisoft.comyimitongxue.comyimiyisu.comyimuapp.comyimudoor.comyimutian.comyimuymc.comyinananjian.com
yinar.comyinbaitu.comyinbangbroker.com
+yinbian.cc
+yinbin.inkyinchar.comyinchenglawyer.comyinchengli.comyinchengpai.comyinchuanzxd.comyindanyi.com
+yindon.com
+yindou.comyindudigital.com
+yindui.netyindunjituan.comyinduzx.com
yineitong.comyinengjituan.netyinengkt.comyinengwl.comyinfeiy.com
yinfenggr.comyingbei365.comyingbio.comyingbishufa.comyingcaicheng.comyingcankeji.comyingchaozhibo.comyingchengnet.comyingchuang.comyingchulawyer.comyingci86.comyingdao.comyingdd108.site
+yingde.comyingdev.comyinge.cc
+yinge.techyingfangkeji.comyingfeiyun.comyingfeng.meyingfeng888.com
+yingfs.comyingguantx.comyinghaicar.comyinghecloud.comyingheying.comyinghezhong.comyinghuahao.netyinghuaonline.comyinghuasuan.comyinghub.comyinghuiiot.comyinghuochong.funyinghuochongjz.com
yinghuodd.comyingjia360.comyingjianzhijia.comyingjiesheng.comyingjiesheng.netyingjiesheng.orgyingjimall.com
yingk.comyingkelawyer.comyinglanglive.com
+yingle.comyingleku.comyinglib.com
yinglunka.com
+yingmei.me
+yingmi.comyingming.netyingpaigame.comyingpengbz.comyingshe.com
yingsheng.comyingshevip.comyingshi-ai.comyingshiyou.comyingsoo.comyingsun.net
+yingsx.comyingtai.com
yingtaoai.comyingtaosiyue.comyingtaoyun.com
yingteach.comyingtianlight.comyingtianwang.comyinguobing.comyingwenming.com
yingworks.com
yingwuyuzd.ccyingxiahome.comyingxiaofangan.comyingxiaoli.com
yingxiaoo.comyingxichina.com
yingxiong.com
yingxun56.comyingyang630.comyingyankantu.comyingyecraft.comyingyinglicai.comyingyongge.comyingyonghao8.comyingyonghui.comyingyongmiao.comyingyongso.com
+yingyu.comyingyuchat.comyingyudengji.com
yingyuehe.comyingyushijie.com
yingyuweb.comyingzaocms.comyingzhongshare.comyingzi8hao.netyingzifangdian.com
+yingzt.com
+yinhai.comyinhang123.netyinhangchaxun.comyinhanghanghao.comyinhangkadata.comyinhangkahao.comyinhangkaoshi.netyinhanglilv.netyinhangzhaopin.com
yinhe.comyinhecn.comyinheyuedu.com
yinhu.comyini.orgyinjispace.comyinka.co
+yinker.comyinlingshuyuan.com
yinmakeji.comyinmishu.comyinning.vip
yinpf.comyinpiao.com
+yinrcw.comyinsfinance.com
+yinsha.com
+yinshua.cc
yinshuiyu.com
+yintai.comyintechi.comyinuobeidiao.comyinuoedu.netyinxiang.comyinxianggame.comyinxiangmall.comyinxiangqingyang.comyinxiangwuye.comyinxiao.comyinxiaobao.netyinxinbh.comyinxing.comyinxunbiao.com
yinyao168.comyinyue7.comyinyuegf.comyinyuemeitu.com
yinyuetai.comyinyueyouxi.comyinzhaowang.com
yinzhijie.comyinziyan.com
yinzuo100.com
yioho.comyioulai.com
yiovo.com
+yipai.infoyipai360.com
yipaiming.comyipaogan.comyiparts.comyipemail.com
yipeng888.com
yipiaoyun.comyipihuo.com
yipingmed.comyipingmi.vipyipingsj.comyipinhr.comyipinpai.com
yipinread.comyipinsmart.comyipintemian.com
yipinyiwu.comyipujiance.comyipuping.com
yipuwuyou.comyiq.comyiqi.com
+yiqi35.com
yiqi4.com
yiqianbao.com
yiqianbao.netyiqianlian.comyiqiao88.comyiqibazi.comyiqibing.comyiqibuduoduo.comyiqicesuan.comyiqichuangxiang.com
+yiqifa.orgyiqifengtian.comyiqihuihui.comyiqijian.comyiqijixiang.comyiqikan8.comyiqiming88.comyiqimob.comyiqioffice.comyiqishai.comyiqishanyuan.com
+yiqiso.comyiqisoo.comyiqisooimg.comyiqisou.net
yiqistore.com
+yiqitp.comyiqituodan.com
yiqiu.org
+yiqiuu.comyiqiwang.netyiqixiaofei.comyiqixie.comyiqixiegushi.comyiqiyoo.comyiqiyou.comyiquan-keji.comyiquanhs.com
yiquanseo.comyiquhai.comyiqujing.comyiquxapp.comyirankejiao.comyiranmeifushi.comyiren001.comyirendai.com
yirentong.com
yirenwuye.comyirenzhushou.com
yirenzuji.comyirimao.com
+yirlir.com
+yirong.comyiruan.info
yiruan.layiruantong.comyiruide.comyiruikecorp.comyiruituo.comyiruniot.com
yiryi.comyisa.comyisanban.comyisanwu.com
+yisell.comyishalai.com
yishan168.com
+yishang.cc
yishangcn.netyishangwang.com
yishangye.comyisheng1399.comyishengfanyi.comyishengjiaoyu.com
yishidian.comyishihui.comyishion.comyishion.net
yishiongd.comyishixue.comyishiyinxiang.com
yishouapp.comyishu168.comyishuixiufu.comyishujia.netyishujie.comyishuliuxue.com
+yishun.funyishunft.com
yishutang.comyishuzhifa.comyishuzi.comyishuzi.org
yishuziti.com
+yisier.comyisimeimaoyi.xyzyisocms.com
yisou.comyisouti.com
yisouyifa.comyissimg.comyisu.comyisuddoscdn.comyisuoyi.comyit.comyitai17.com
yitaifang.com
yitaihdbf.comyitanyun.com
yitao.comyitaojiayuan.com
yitel.comyitesoft.comyitianshidai.comyitianxinda.comyitiaoyule.com
+yiticm.com
yitijizhi.comyitisports.comyitong-trade.comyitongmedia.com
yitonyiqi.comyituliu.siteyitutech.com
+yituyu.com
+yiupin.com
+yiuxiu.com
+yivian.comyivicar.com
+yivizd.comyiwaiart.com
yiwan.comyiwangdujin.comyiwanggo.net
yiwangtui.comyiwanzhushou.comyiwealth.com
yiweb.comyiweilaogumin.com
yiwenyida.comyiwenyizhi.com
+yiwise.comyiworld.comyiwubuy.comyiwufair.com
+yiwugo.comyiwugou.com
+yiwuku.comyiwulianhe.comyiwusuppliers.comyiwutalk.comyiwuzhongxiyi.comyiwz.net
yixao.com
yixao.netyixi.tv
yixia.comyixiangzuji.comyixiaobang.netyixiaoyuan.comyixiaozu.com
yixiatong.com
+yixie8.com
yixiekeji.comyixieshi.com
+yixiin.com
yixin.comyixin.im
+yixin5.comyixincao.comyixincapital.comyixinfinance.com
yixinfund.comyixingguanchang.comyixinli.xinyixintui.com
+yixinu.comyixiu.cloudyixiubx.comyixiuxueyuan.com
yixqj.com
+yixuan.net
yixue.comyixue68.comyixue99.comyixueks.comyixuelunwen.comyixuexianzhi.comyixuezp.com
yixun.comyixunwu.comyiya520.com
+yiyaha.comyiyanche.comyiyancloud.com
yiyang168.com
yiyang668.com
yiyangidc.comyiyangzhuangyuan.com
yiyaohang.comyiyaojd.comyiyaojie.comyiyayans.com
+yiye-a.com
+yiye-h.com
+yiye-v.comyiye.aiyiyebang.comyiyefei.com
yiyesheng.netyiyiarts.net
yiyifoods.com
+yiyimh.comyiyinda.com
+yiyiso.comyiyisoft.comyiyitech.comyiyiwawa.com
yiyongcad.com
yiyouliao.comyiyouliuxue.comyiyoupay.netyiyouqi.comyiyoushu.netyiyu.comyiyu8899.com
+yiyuan.comyiyuanjichang.comyiyuanluye.comyiyuanqiang.netyiyuansoft.comyiyuanyi.orgyiyuetop.com
yiyum.comyiyun518.comyiyunhulian.xyzyiyupack.comyiz.vipyizanmeiye.com
+yizenb.comyizeseafood.com
yizhanapp.comyizhanhulian.comyizhanok.comyizhanzx.comyizhema.com
yizhengwx.comyizhibi.comyizhibo.com
yizhidayu.com
yizhifubj.comyizhijia.comyizhikan.comyizhiqingxie.comyizhitou.comyizhiwechat.comyizhiws.comyizhixiaogame.com
yizhou158.comyizhoucb.comyizhu-tech.comyizhuan5.com
+yizidy.com
+yizimg.comyizlife.comyizu.org
yizuocity.comyizuxing.comyj-bank.com
+yj-fun.com
+yj.ink
yj028.comyj36.comyjai.art
yjbys.com
+yjcard.comyjcf360.comyjcp.comyjctrip.com
yjdatasos.com
yjdzm.com
yjfby4ppm.sbsyjfl.net
yjfs8.com
+yjgxcx.com
+yjhbqx.comyjhnt888.com
+yjhyjl.com
yjhzb.com
+yjihua.com
yjijy.com
+yjiyun.comyjk.com
+yjk.im
yjldp.com
yjlhq.com
+yjlin4.com
yjlink.ccyjliquan.com
yjllq.com
+yjopen.com
yjpal.com
yjpoo.com
+yjq.cc
+yjrcyw.com
yjrls.comyjro.com
+yjrxcw.comyjs-cdn.comyjs-cdn1.com
yjs-cdn10.comyjs-cdn2.comyjs-cdn3.comyjs-cdn4.comyjs-cdn5.comyjs-cdn6.comyjs-cdn7.comyjs-cdn8.comyjs-cdn9.comyjscloud.comyjsershi.comyjsmodel.com
+yjsops.comyjssishisi.com
+yjtiyu.com
+yjussl.xyz
yjvps.com
+yjwbtw.lol
+yjwl70.lol
yjwlo.comyjwujian.comyjxbgjj.com
yjxlawyer.comyjxsoft.com
yjydl.com
yjygx.comyjykqjt.comyjyxiyan.comyjyz.comyjz9.comyjzb.appyjzb.tvyjzf.com
yk211.com
yk72e.comykai.comykazgima.com
ykccn.com
ykcer.comykchicheng.comykclass.com
ykdgd.com
+ykdmsy.com
ykedu.net
ykimg.comykinvestment.com
ykjljdcss.comykmxemho.com
ykplg.comykq.inkykqj.com
ykqnl.com
+yksdks.com
+yksjjt.comyksq.net
+yksuit.com
+ykt.ioyktchina.comyktworld.comyktz.net
+ykuee.linkykugyph.com
ykyao.comykzq.comykzr.com
+yl-csj.com yl.ag
+yl.vip
yl0008168.com
+yl1001.comylallinone.com
+ylbloc.com
+ylbycw.comylchbyfz.comylcm.netylcncmy.com
+ylcxsb.netyldamei.com
+yldaye.com
+yldayu.com
+yldndl.com
yldrs.com
+ylduyi.comyldwzitw.sbsyldy.net
+yldzhb.com
+yle888.vipylfd.netylfx.com
ylgaoshan.com
+ylgcyy.comylgj.comylgjsty.com
+ylgnyy.com
ylgs96332.com
+ylhakc.com
+ylhdgg.com
+ylhdsl.comylhh.net
+ylhhny.com
+ylhmgz.com
ylhongjin.comylhr.netylhrjxfw.comylhsrsrc.com
+ylhxyz.com
ylibi.com
ylijh.com
ylike.net
ylitc.net
+yliyun.com
ylizu.com
+yljcjt.com
+yljdjx.com
yljjj.comyljmtzs.comyljr.com
+yljtjt.com
yljyt.netylkaite.com
ylkbf.comylkjgame.com
+ylklyl.comyllt.icuylmaterial.comylmf.ccylmf.comylmf.netylmf888.comylmfeng.comylmfwin100.comylmfwin100.net
+ylmgkj.comylnetworks.comyloo.org
ylprinter.comylq.com
+ylqk88.com
+ylqxgs.com
+ylqyyr.com
+ylr114.comylrb.comylrj.comylrq.org
+ylscgl.com
ylscw.net
+ylsgmr.com
+ylsgzx.comylsmtnozzle.com
+ylsrz8.com
+ylssgg.comylssofa.comylsssgg.comylstatic.comylstcgz.comylsxyjy.com
ylszm.comylt2008.com
+yltapi.comyltlgjzx.com
+yltpcb.com
+ylturl.com
yltwx.com
+yltxxx.com
ylun8.comyluu.com
ylvxr.comylwl.ccylws.net
ylwyw.comylxdtww.com
ylxgf.com
+ylxhmy.com
ylxhy.comylxinwen.comylxw.net
+ylxweb.com
+ylxyct.com
+ylxyzs.com
+ylxzgz.com
+ylygha.comylyk.com
ylyujsmgs.com
ylyun.com
+ylzbsj.comylzbtech.com
ylzhaopin.com
+ylzhsk.com
+ylzknk.com
+ylzmjd.com
ylzms.com
+ylzpay.com
ylzsy.com
+ylztwy.comylzxmryy.com
+ylzyhb.com
+ylzyjx.comym-trans.com
+ym.run
ym01.techym23.com
ym3222333.com
ymacg.com
+ymadly.com
ymadx.comymailcampaign.comymark.cc
ymars.com
+ymatou.com
ymatou.hkymbaidu.com
+ymbank.comymbq301.com
+ymcart.com
+ymcart.netymck.proymcsepu.com
+ymd520.net
ymd88.comymdoctor.comymechina.com
ymexf.com
+ymfund.comymgk.comymgkimg.comymhudong.comymhuwai.com
+ymhzpx.com
ymiot.netymj9.com
ymjx8.comymkuzhan.com
+ymlfxp.comymlinks.com
ymm56.com
ymmfa.com
+ymmobi.com
ymmrv.com
+ymnsdk.comymoxuan.com
+ympc88.com
ympcb.comymq.com
+ymraaa.com
ymrcw.vipyms.cool
ymsss.comymsteam.comymt.com
+ymt123.com
+ymt360.comymtc.com
ymtmt.com
+ymtnet.com
ymuuy.com
ymvkt.com
+ymwcds.orgymwl.netymxinke.comymxinxi.comymxlass.com
ymyun.com
+ymyxzz.com
ymzer.com
ymzsl.com
+ymzy.gamesyn-tobacco.comyn12396.comyn58.com
ynairport.com
+ynajax.comynb2dca.com
ynbit.com
ynbwr.com
yncun.net
yncunguan.com
yncyc1990.comyndaily.com
yndcc.com
yndkt.comyneg-ev.com
yneit.comynet.com
+ynfabu.com
+ynfmly.com
+ynfwyy.com
ynfxw.comyngd016.com
+ynggzy.com
yngou.comyngp.comynguangsui.comyngw518.com
+yngwyw.orgynhkfyy.comynhl.netynho.comynhouse.comynhr.comynhthbkj.com
ynhuasong.com
ynhzm.com
yni84.com
+ynikon.com
ynjgy.comynjiaoyu.net
+ynjkjy.com
ynjlgroup.com
+ynkcfc.com
+ynkm88.com
+ynkmjj.com
+ynmbwl.com
+ynmcyl.com
ynmec.com
+ynmzly.com
+ynnits.com
ynpco.com
+ynpxrz.comynqjnews.netynqrmyy.comynradio.com
+ynrayy.comynrc.netynrd.com
+ynrkyy.comynsddbqyzxyy.com
+ynsdfz.net
+ynsfhq.com
ynshangji.com
ynshijian.com
ynsjg.com
ynsrx.com
ynstl.com
+ynsxjr.comynsydwzp.comynsyhkgs.com
+ynszfw.com
+ynw360.com
ynwin.com
+ynx111.com
+ynxcbc.comynxdfpr.comynxingexinxi.comynxinhua.com
ynxiu.comynxr.com
ynxxb.comynxxwfw.comynyc.comynycloud.xyz
ynyes.comynyp.com
+ynytkc.com
+ynyxms.comynzg.orgynzp.com
ynzrf.comynztzxw.comynzy-tobacco.com
+ynzzwl.com
+yo4399.comyo9.com
+yoagoa.comyobangbang.com
+yobbom.comyobo.inkyobo360.com
yobochina.comyobolove.com
+yocajr.com
yocan.net
+yocdev.com
yocng.com
+yocopi.com
+yocyxc.com
yodak.netyodakgroup.com
yodao.com
+yodao.info
yodao.net
yodao.org
yodo1.comyodo1api.com
yodou.comyodu.org
+yoe365.comyofc.com
+yofcjs.comyofijoy.com
+yofish.com
+yofogo.com
+yofond.com
+yofond.net
yofus.com
+yoga-8.com
+yogeev.comyoghourt.space
+yogoip.com
yogorobot.com
yoher.comyohipay.comyoho.orgyohoblk.comyohoboys.comyohobuy.com
yohogirls.com
+yoholm.comyohomars.comyohoshow.com
yohui.comyojcool.com
yojochina.comyoju360.comyoju360.netyoka.comyokacdn.com
yokagames.com
yokechina.com
+yokmob.com
+yokong.comyokotop.com
+yolanda.hk
+yolewa.com
+yolexi.com
yolinkmob.comyolipai.net
+yoloho.comyoloogames.com
+yolyon.comyomiko.cloudyomiko.club
+yomiko.funyomiko.tech
yomob.comyomocode.com
+yomuzu.comyondocredit.com
yong-gang.com
yong-ming.comyongaomy.comyongche.nameyongche.orgyongchengren.comyongdaoyun.comyongdasteel.com
yongfan99.comyonghe2008.comyongheng.onlineyongheyl.comyonghongtech.comyonghuivip.com
yongjindl.comyongkao.comyonglvtong.comyongmei0537.comyongqianbao.comyongqiaonews.comyongqischool.netyongridt.comyongsheng-sl.comyongshenghn.com
yongshikj.com
+yongsy.com
+yongtu.netyongwangcpa.comyongxiang.work
yongxinby.comyongxinfushi.comyongxingbiaoye.comyongxinhuangjin.com
yongxinji.comyongxintex.comyongyoujia.comyongzhentang.com
yonho.comyonlive.comyonniye.com
+yonyou.com
yonyouaud.com
yonyoubao.com
yonyouccs.comyonyoucloud.comyonyoufintech.com
yonyougov.comyonyougx.comyonyouny.comyonyouoa.comyonyouup.com
+yoo616.com
yoo66.com
yoodb.com
yooek.comyoogene.comyoohouse.com
+yoojia.comyooknet.com
yoolin.cc
+yoonee.netyooojie.monsteryoooooooooo.comyoopu.meyooquma.com
+yootou.comyooxlife.com
+yooxun.com
+yoozhe.comyoozhibo.ccyoozhibo.net
+yoozoo.com
+yopoint.ccyopoint.comyoptech.comyopu.coyopwork.com
yopye.com
yoqoo.com
yoqoo.netyoqoo.tvyoqu.net
yorentown.com
york-tech.com
+york33.comyoseleather.com
+yostar.netyostatic.comyotopic.com
+yotton.com
+you-mi.net
you03.com
+you1ke.com
+you200.comyou2php.comyouandme123.com
youba.comyouba123.com
+youban.comyoubangjzx.comyoubangkeyi.comyoubangyun.com
+youbbs.orgyoubeichefu.comyoubian.comyoubohe.com
+youboy.com
+youboy.netyouboyy.com
youcaiyun.comyoucaizhushou.comyoucan-agritech.com
youcareyk.comyoucash.com
+youcha.net
+youche.comyouchedi.comyouchejiuxing.comyouchent.comyoucheqp.comyoucheyihou.comyouchuhuodong.comyoucloud.com
youda.pro
+youda8.comyoudaiw.comyoudajx.com
youdanhui.com
+youdao.comyoudaocaifu.com
+youdas.comyoudashidai.comyoudawangluo.comyoudemai.comyoudiancms.comyoudianyisi.comyoudianzhishi.comyoudingsuit.com
youdingte.comyoudou.mobi
youdubook.comyouduzw.com
+youdwh.comyouease.netyouedata.com
youez.com
+youfan.pubyoufanerbuy.comyoufang123.com
youfangou.com
youfangzx.comyoufanx.comyoufashangmao.com
youfen666.comyoufubao.vip
youfunlab.comyoufuyoucai.com
yougababy.comyouganghangmoguan.comyougaoji.comyougaoyx.comyougenet.com
youginorg.com
+yougou.comyougu.tv
yougumuye.com
+youguo.comyouguoquan.com
+youguu.comyouhaodongxi.comyouhaosoft.comyouhaosuda.comyouhaoxinxi.com
+youhro.com
+youhua.comyouhuaaa.comyouhuafuzhi.comyouhuas.com
youhuashu.comyouhugmedia.com
youhundao.com
youhuohao.com
youhutong.comyouideal.netyouinsh.comyouj.com
youjiagou.comyoujiajk.com
youjiands.netyoujiangzhijia.comyoujiao.comyoujiao365.netyoujiao5.comyoujiaus.netyoujiawj.comyoujiaxiao.comyoujidi.net
youjimilk.comyoujingnetwork.comyoujiuhealth.com
youjoy.tvyouju360.comyouke.co
youke.comyoukecn.com
+youked.comyoukeda.comyoukego.comyoukelai.comyoukexueyuan.com
+youkia.com
+youkia.netyouking.comyoukongkan.comyoukongwan.com
youku.com
youku.org
+youkua.net
+youkud.comyoulai.techyoulanw.comyoulecn.com
youleliwu.comyouleyou.comyoulian.funyoulianfuwu.comyouliangda.comyoulianghz.comyouliao.com
youliao.groupyouliao.loveyouliaobaike.com
youliaoyi.comyoulingtong.comyoulinyouke.comyoulishipin.comyouloft.comyoulong123.comyoulongciqing.comyoulongteng.com
youlu.com
youlu.net
+youlu6.comyouluwx.com
+youmai.comyoumanvideo.comyoume.imyoumeng020.comyoumengchuangxiang.comyoumengcms.comyoumengmob.comyoumenr.com
+youmew.comyoumiad.comyoumiaoyigou.com
youmindao.comyouminonline.com
+youmjo.comyoumobi.comyoumodou.comyouneng.com
+younet.comyounfor.comyoung40.comyoungem.comyoungerfeel.comyoungjoygame.comyoungor.comyouni.imyounuokeji.cloudyouo.net
youoh.com
youol.com
youonbike.com
+youook.com
youpengcx.comyoupengw.com
youpin898.comyoupinhaoche.com
youpinimg.com
youpinppt.comyoupintechs.comyoupinx.comyoupont.netyoupuchina.comyoupumao.comyoupumao.xyzyoupzhaohuo.comyouqichuyun.comyouqiong.netyouqiwu.com
youqizhan.com
youqo.com
+youqoo.netyouqu.inyouqudao.comyour360loans.comyouranshare.comyourbin.comyourcollect.netyourdream.ccyourfreshdecor.com
yourongsj.comyourtion.comyourtravelinswitzerland.comyourtravelyourchoice.comyouruitech.com
yousc.com
+youscm.comyousengshe.comyousenjiaoyu.com
youser.ccyoushang.comyoushaohua.com
yousheng.shopyoushenggz.comyoushenhudong.comyousheyoujia.comyoushibeike.comyoushifu.comyoushikoudai.com
youshixiu.com
youshop01.com
youshop02.com
youshop03.com
youshop04.com
youshop10.com
youshu.ccyoushuge.comyoustong.comyoutaidoors.comyoutaidu.com
+youtak.comyoutao55.comyoutaojd.com
+youthi.com
youtiandi.com
youtianli.comyoutibao.comyoutoart.comyoutoupiao.com
youtu.comyoutube-dubbing.comyoutuzi.com
youtx.com
+youuav.com
+youuvs.comyouwawa.comyouwei-china.com
+youwei.com
youweihui.com
youwinedu.com
youwo.com
youwoxing.netyouwoyou.comyouwu.todayyouwusc.com
youxi.comyouxi01.comyouxi377.comyouxi527.comyouxi528.comyouxi567.com
youxi8282.com
+youxia.comyouxiacg.comyouxiaju.comyouxiake.comyouxiake.netyouxiamotors.comyouxiangyx.com
youxiaoge.comyouxiaohou.comyouxiaxiazai.comyouxibao.comyouxibaoku.comyouxibd.comyouxicdn.comyouxichaguan.comyouxicheng.netyouxicitang.comyouxidaxue.comyouxidr.comyouxidun.comyouxiduo.comyouxifan.comyouxigongchang.comyouxigt.comyouxigu.comyouxigui.com
+youxih.com
youxihezi.netyouxihun.comyouxiivf.com
+youxij.comyouxike.comyouxila.comyouximao.comyouximt.com
+youxin.comyouxingapp.com
youxiniao.com
youxinpai.com
youxinshi.comyouxinsign.comyouxipai.com
youxiping.comyouxiputao.comyouxiqiang.comyouxiqun.com
youxishuo.comyouxitexiao.comyouxituoluo.com
youxiuhui.comyouxiula.comyouxiwangguo.comyouxiwugui.comyouxixf.comyouxixj.com
youxizhan.comyouxuan.com
youxuanan.com
youxuangu.comyouxueke.comyouyacao.comyouyacheye.com
+youyan.xyz
youyannet.comyouyantech.com
youyeetoo.com
youyegame.comyouyi-game.comyouyi800.com
youyigame.comyouyijifen.comyouyijiu.comyouyilm.comyouyiqi.comyouyiqiaogou.com
youyitian.netyouyiweizhan.com
+youyix.comyouyizhidao.comyouyo88.com
+youyou.com
youyou001.com
youyou234.com
youyouwin.comyouyuan.comyouyuanw.comyouyuapp.comyouyudf.comyouyuegame.comyouyuela.comyouyuit.netyouyumenye.com
+youyur.comyouyuwei.comyouyuwenhuay.comyouyuwo.com
youyy.comyouzack.com
+youzan.com
youzanyun.comyouzhai.comyouzhan.orgyouzhandian.comyouzhao.com
youzhi.me
+youzhi.netyouzhi99.com
youzhicai.comyouzhiwk.comyouzhixueyuan.comyouzhiying.comyouzhou-knife.comyouzhuan.comyouzi.meyouzi02.comyouzibuy.comyouzijie.com
youzijimu.comyouziku.comyouzikuaibao.comyouziyundns.com
youzu.com
youzuanmy.vipyouzunkj.comyovisun.com
yovocloud.com
+yovole.comyovyuan.comyowhale.com
+yowooa.com
+yoxiha.com
+yoximi.comyoxmail.com
+yoxyok.comyoya.com
+yoybuy.comyoyiapp.com
+yoyiit.com
+yoyile.com
+yoyizx.comyoyo007.comyoyo168.comyoyo1900.comyoyoask.com
yoyojacky.comyoyojie.comyoyokko.comyoyotown.com
yoyou.com
yoyou.netyoytang.comyozodcs.comyozodoc.comyozodocs.comyozooffice.comyozosoft.com
yozsc.com
yozyn.com
yp007.net
yp900.com
ypank.comypattern.com
ypfph.com
ypfvs.com
+ypgyyq.comyph-shop.com
+yphbuy.comyphuifu.com
ypiao.com
ypicw.com
+ypjc.cloud
ypjiameng.com
+ypk.ccypky.net
+yplady.comypll.xyz
ypppt.comypshengxian.com
+ypshop.netypsjv.inypstech.com
ypzdw.com
ypzhushou.com
yq-zc.com
yqacg.com
+yqb.atyqb.com
+yqb920.com
+yqbank.com
yqbdt.com
+yqbimg.com
+yqbimg.net
+yqchjd.com
+yqcymj.com
yqdtv.comyqelect.com
yqfml.com
yqfxw.net
yqgec.comyqh.comyqh5.com
+yqhapp.com
yqhlm.comyqhouseware.com
yqhzz.com
+yqjtgs.com
+yqk8ku.com
+yqkddm.com
yqkk.linkyqmb001.comyqmh.comyqmoybz.comyqms.netyqok.com
yqphh.com
yqqfv.com
+yqqqbm.comyqrc.com
yqrcw.com
yqrtv.com
yqsbz.comyqslmall.comyqsn.comyqtc.comyqtg.ccyqtkgzbk.com
yqvxo.com
+yqw188.com
+yqwfpy.comyqwxw.cc
yqwyx.xyzyqxiuyoung.comyqxs.ccyqxsg.cc
yqxsge.cc
+yqxxjy.com
+yqy021.comyqzww.ccyqzww.la
yqzww.net
+yqzwww.comyr-info.comyr17.netyr3.com
yrapp.netyrcbank.com
+yrdart.com
yrevotyuk.comyrgu.com
yrhjy.com
+yrmpay.comyrmrnfq.comyrom.netyrsm.netyrtgame.comyrtyyds.com
yruan.com
yrucd.com
+yrw.ccyrw.comyrwy.com
yrxsw.comyryz.comyryz.netyrz.name
yrzjw.com ys.cc
ys001.com
ys121.com
ys133.com
ys137.com
ys168.com
+ys2345.com
ys235.com
+ys4fun.comys7.com
ys720.comys8.com
ys991.comysaedesign.com
ysali.comysbz168.com
+yscase.comyscb.netysch.cc
yschn.comyscq.com
yscro.com
ysedu.com
ysemi.com
+ysepan.com
+ysepay.com
ysext.com
ysfog.com
+ysgang.comysgfood.com
ysghh.com
ysgtg.comysgushi.comyshp.net
yshsports.comyshssoft.com
yshtx.com
+yshzjt.comysicing.net
+ysidcz.com
ysiis.comysjcyxgs.comysjf.comysjgames.comysjianzhan.com
+ysjkbk.com
+yskcsj.com
yskjz.com
+yskjzj.com
yslcw.com
+ysljmw.comysljnkj.com
yslqo.comyslw.com
+yslyhr.com
+ysmiji.com
+ysmine.com
+ysnews.net
ysnns.com
+ysnovo.comysok.netysol.com
ysoow.com
+ysosuo.com
+ysplay.comysrencai.comysrh.com
ysroq.com
+yssp88.com
yssql.comysstech.com
+ysszzs.com
+yst100.net
ystan.com
ysten.comystnykj.comysts.ccystx100.com
+ystzzy.comysug.com
+ysupan.com
+ysw365.com
ysw68.comyswebportal.ccyswh.comyswlgame.comyswliot.com
yswpq.comyswswkj.comyswyyds.comysx8.comysx8.netysx9999.com
+ysxapp.com
ysxs8.com
+ysxsw86.cc
ysxue.netysxyhtz.com
+ysy.tmysys.com
+ysyycv.com
+yszgnn.com
yszpwatch.com
+yszx99.com
+yszyun.com
+yszzlt.comyt-shoes.comyt-xinpeng.com
+yt1998.comyt69.com
yt698.com
yt98w.comyta-tech.com
ytalq.comytaotao.netytbainakeji.com
ytbbs.comytbfilm.com
ytcbh.com
ytccr.comytcj.com
+ytcutv.comytdaily.comytdcloud.comyte1.com
ytecn.com
yteng.netytesting.comytf8888.comytfeitengchem.com
ytfgf.com
+ytg666.com
+ytghnb.com
ytgos.comythairui.comythouse.com
ythzg.com
+ytj888.com
+ytjcpj.comytjiage.com
ytjlc.net
+ytjpkj.com
+ytjqjt.comytlh120.comytlvbao.com
+ytmedia.tvytmingju.com
ytnetgame.comytnstone.comyto.vipyto.xinytoexpress.com
ytoglobal.com
ytokj.com
ytop8.com
ytphq.comytpp.comytqh-electric.com
+ytrbyr.lol
ytrdc.comytrenyu.comytrlzyw.comytsanchuan.comytsexrb.comytshipin.comytssc888.com
ytszg.comytsznyy.com
+yttxcs.comytud.net
ytuqy.comytusmart.com
+ytxedu.comytxinhai.comytxinyan.com
ytxsc.comytygame.comytzhihui.comytzq.comyu-electronics.net yu.gs
yu163.comyu72.comyu7l.com
+yuan7i.comyuanbaobaoxian.comyuanbaohui.com
yuanbaokc.comyuanbaotaoche.comyuanbei.biz
+yuanben.io
+yuanbin.meyuancangipr.comyuancdn.comyuancefund.comyuanchengroup.com
yuandecar.com
+yuandi.comyuandiancredit.comyuandongsl.comyuanfen.icuyuanfeng021.com
yuanfeng1.com
yuanfudao.biz
yuanfudao.comyuanfudao.wsyuangongbao.comyuanhaitaiji.comyuanhaomumen.comyuanhuixinhai.comyuanjiad.comyuanjie.orgyuanjingss.comyuanjisong.comyuanjoy.comyuanlai.comyuanlei.netyuanley.comyuanlian365.comyuanlin.comyuanlin365.comyuanlin8.com
+yuanma.netyuanmadian.comyuanmait.comyuanmajiaoyiw.comyuanmas.com
yuanmatao.comyuanmawu.netyuanmengyouxuan.comyuano.ccyuanpanguoji.comyuanqi46.comyuanqiao.netyuanqiao.pwyuanqilt.comyuanqingsh.comyuanrenbang.com
yuanrengu.comyuanrenxue.comyuansfer.comyuanshanbx.comyuanshen.comyuanshi-sec.comyuanshichang.comyuansikeji2021.comyuansoti.com
yuansouti.biz
yuansouti.comyuansudong.netyuantaobgjj.comyuanteng.netyuantest.comyuantiku.bizyuantiku.comyuantiku.xyzyuantongxinfu.comyuantoushuo.comyuantutech.com
yuanu.com
yuanweish.comyuanxinbaoxian.comyuanxuxu.comyuanyangcoffee.comyuanyeer.com
+yuanyi.bizyuanyoumao.comyuanyoutao.comyuanyubusiness.comyuanzhanapp.com
yuanzhexi.comyuanzhibao.comyuanzhihao.life
yuanzidai.comyuanzige.comyuanzihe111.comyuanzun.fun
yuaoq.com
yuapt.comyubaike.com
yubangweb.comyubb12.siteyuboinfo.com
+yuboqj.com
+yucccc.com
+yucekj.comyucezhijia.com
+yuchai.comyuchaicd.comyuchaidiesel.comyuchaihi.comyuchailogistics.com
yuchainev.comyuchainz.comyuchaipg.comyuchaizm.comyucheng0769.netyuchenw.comyuchuantech.comyuci998.comyucoolgame.com
yucui.orgyudianda.comyudiangame.vipyudiaomingjia.com
yudiu.comyudouyudou.comyuduomei.com
+yue365.comyue7.com
yuebai.tv
+yueban.net
+yuebao.ltd
+yuebei.vip
+yuebie.com
+yueblx.com
yuebooemt.com
+yuecdn.netyuecheng.comyuecong.clubyuedaoec.comyuedianedu.comyuedisk.com
+yuedsk.com
yuedu.pro
yuedufang.comyueduji.comyuedunovel.comyueduwen.comyueduyun.comyuefa119.comyuegongyutu.comyuegowu.comyuegui.shopyueguisuchong.comyuehaifeed.com
+yueimg.com
yueji.comyuejianzun.xyzyuejiewangluo.com
yuejikeng.com
+yuejob.comyuejuanbao.comyuekenet.comyuekeyun.comyuekuapp.comyuelanxinghe.comyuelongdzc168.com
+yueloo.com
yuelu.net
+yuelun.comyueme.tv
+yuemei.comyuemi888.comyuemicn.com
yuenan100.comyueniuzq.comyuenongren.comyuenshui.comyuenwooping-truelegend.comyuenyled.com
yuepaijia.com
yueqi.comyueqingchayuan.com
yueqiquan.comyueqiweixiu.comyueqiyou.com
+yueque.comyuer.comyuerbao.comyuerhezi.com
yueru.comyueserve.comyueseyuewei.com
+yuesha.comyueshenggame.comyueshitv.comyuesuoping.comyuetingapp.com
yuetongjt.com
+yuetu.techyuetuvip.comyuetuvip.netyueweimusic.com
+yuewen.com
yuexiamen.comyuexiang.funyuexiangpin.comyuexiangspace.comyuexindianqi.comyuexing.comyuexinli.comyuexirc.com
+yuexiu.com
yuexunedu.comyuexunfanyi.com
+yueyaa.com
yueyan365.comyueyangshop.com
+yueyat.netyueyear.comyueyouxs.com
yueyq.comyueyu114.comyueyuanzhiye.comyueyues.comyueyueworld.comyueyuez.comyueyujiaju.com
yueyundns.comyueyuzhushou.com
yueyv.comyuezeyi.comyuezhicn.comyuezhiding.comyufeitongji.comyufenjiameng.comyufu365.com
+yufuid.com
+yufuid.netyugasun.com
yugew.com
+yugudz.com
yuguo.comyuguo.usyugusoft.comyuhaids.com
yuhaiyiya.com
yuhaotime.comyuhaozhixing.com
+yuheii.comyuhelaw.comyuheng.techyuhengcheng.comyuhengye.comyuhocare.comyuhongchem.com
yuhou.com
yuhougame.comyuhuagu.comyuhuanghuagong.comyuhuijob.comyuhx.com
+yuiapi.com
yuike.com
yujia.comyujiahui.com
yujianpay.comyujiefs.com
yujifruit.com
yujiu.vipyujunjie.comyujunren.com
yujzw.comyukaiprecision.comyukapril.comyukeinfo.comyukexinchem.comyukicat.net
yukicomic.com
+yukuai.com
yukxw.comyule114.comyule116.comyule263.com
yuledaily.comyulehezi.com
+yuleie.comyulejiaodian.comyulekan.comyulekoudai.comyuleres.comyulettw.com
yulhe.comyuli.beyuliancn.comyulicdn.comyulinapp.com
yulincard.comyulinduoduo.comyulindxgjj.comyulingtianxia.comyulinhuaran.comyulinjue.comyulinqj.comyulinshidefu.comyulinyw.comyulisay.comyulongdt.com
yulongjun.com
yuloo.com
+yulore.comyulorepages.com
yulu1.com
+yulucn.com
+yuluju.com
+yulumh.comyumaochuhai.comyumaoshu.comyumaoyun.comyumchina.comyumi.ccyumi.com
+yuming.comyumingguwen.comyumingyouhui.com
+yummy.techyumstone.comyumugood.com
+yun-ac.comyun-app.net
+yun-gu.comyun-idc.comyun-img.comyun-jinrong.comyun-live.com
+yun123.com
yun61.com
yunadmins.comyunalias.comyunannet.com
yunaq.com
+yunarm.com
yunaw.comyunba.io
+yunban.comyunbang.net
+yunbei.com
+yunbiao.tvyunbiaosoft.comyunbiaowulian.comyunbiaozhun.comyunbiji.comyunbisai.comyunbohealth.comyunbook.vip
yunbuzhan.comyuncai5.comyuncailive.comyuncaioo.comyuncaixiaoyuan.com
+yuncdn.bid
yuncdn123.com
yuncdn263.com
yuncdndun.comyunceng.comyuncheng.comyunchengfang.comyunchonglife.comyunchongmob.comyunchou.comyunchuangu.com
+yuncii.comyuncloudauth.comyuncname.comyuncode.net
yunconfig.com
+yuncyq.com
yund.techyunda56.comyundaex.comyundagongyi.com
yundangan.comyundasys.com
yunde.netyundianjia.comyundianseo.comyundiantech.comyundingdun.comyundongfang.comyundonghao.com
yundongit.comyundousoft.comyunduanzhishang.com
yundui.ccyunduimedia.com
+yundun.comyundun.shopyunduncc.com
yunduncdn.comyunduncdns.comyunduncname.comyundunddos.com
yundundns.comyunduns.com
yundunwaf.comyundunwaf1.comyundunwaf2.comyundunwaf3.comyundunwaf4.comyundunwaf5.com
yunduocrm.comyunduoke.netyunduoketang.comyunduokt.netyunduolp.com
+yundzh.comyuneach.comyunerba.com
+yunews.netyunexam.comyunexpress.com
yunfabiao.comyunface.comyunfalv.com
+yunfan.comyunfan0739.com
yunfancdn.com
yunfancdn.net
yunfandns.comyunfangtan.comyunfanka.comyunfanyouxi.comyunfei89.comyunfeihudong.comyunfeitech.com
yunfutech.comyunfuwuqiba.com
yungangbj.comyungao-ssp.comyungao.mobiyungongchang.com
yungou618.comyungouos.comyungousj.netyunguajibao.comyungujia.comyunhaicangshu.comyunhaike.comyunhaiqiao.comyunhaisteel.comyunhaoka.comyunhe518.net
yunhedata.comyunhehtl.comyunhehudong.comyunheit.comyunhesanwan.com
yunhetong.com
+yunhou.comyunhuasheji.com
yunhuashu.comyunhulu.orgyunhuotong.netyunhuzx.comyunifang.com
+yunify.com
yunio.com
yunip.com
+yunipo.comyunjian.comyunjian.netyunjiasu-cdn-dnssec.netyunjiasu-cdn.comyunjiasu-cdn.netyunjiasu-dns.comyunjiasu-dns.netyunjiasu-test.comyunjiasu360.comyunjiasucdn.infoyunjiasucdn.netyunjiasudns.comyunjiasudns.netyunjiasupreview.comyunjiasussl.comyunjiazheng.comyunjichaobiao.com
+yunjie.artyunjiemi.net
yunjifarm.comyunjiglobal.comyunjiku.vipyunjing720.com
yunjinggo.comyunjinzn.com
yunjitele.comyunjiweidian.com
+yunjix.comyunjuwuliu.comyunkaiguan.comyunkangdoctor.com
yunkanpan.comyunkawulian.com
yunkd.com
yunke.comyunkejituan.comyunketop.comyunkezan.comyunkongpingban.comyunkuaimai.com
yunkushop.comyunlangtuanjian.com
+yunlie.net
yunlietou.comyunliketech.com
+yunling.meyunlinghang.comyunlitz.com
+yunlucn.cc
+yunmai.comyunmayi.com
yunmd.net
yunmeipai.comyunmell.comyunmengdata.comyunmoseo.com
yunmoxing.com
yunn-tech.comyunna.me
+yunnan.vip
yunnandns.com
yunnanjun.comyunnanuu.com
+yunnao.com
yunos-inc.comyunos-tv.com
yunos.comyunpaiwang.net
+yunpan.comyunpan1.netyunpansou.ccyunpanx.comyunpanziyuan.xyz
yunpay.cc
+yunpei.comyunpian.comyunpiao.net
+yunptg.com
yunqi.org
yunqi2050.comyunqiandai.comyunqiju.comyunqikecrm.comyunqishi.net
yunqishi8.comyunqiyqh.com
yunque360.com
yunrenshi.net
yunrg.comyunrongu.comyunruift.comyunruikj.comyunscache.cc
yunsd.net
+yunser.comyunshan.netyunshangnc.comyunshanmeicai.comyunsheng999.com
yunshi999.comyunshibuluo.comyunshiketang.xyz
yunshipei.netyunshouji123.comyunshow.com
yunshunxx.com
yunshuren.com
yunshuxie.comyunsiya.com
+yunsom.comyunsong.com
yunsou168.com
+yunssl.comyunsuan.org
yunsuanzi.com
+yunsuo.com
+yunsuo.xyzyuntaigo.comyuntask.comyuntemai.comyuntiancloud.com
yuntianti.comyuntingiot.comyuntongauto.com
yuntongbu.comyuntongcloud.comyuntongshuke.comyuntongtech.comyuntongxun.com
yuntongzy.com
+yuntop.com
+yuntsg.comyuntu.io
+yuntue.comyuntuiweishang.com
yuntuoguan.ccyuntust.comyuntuys.com
yunverify.com
yunvm.comyunwei8.comyunweibang.com
yunweipai.comyunwenkeji.com
yunwenxue.comyunwins.com
yunwuxian.netyunxi.tvyunxi10.comyunxiacn.comyunxiangschool.comyunxiao.com
yunxin123.com
yunxin163.com
yunxinapi.com
yunxindai.com
yunxindns.comyunxinfa.comyunxinfw.comyunxing168.comyunxingslb.comyunxinhi.comyunxinhy.com
yunxinrtc.com
yunxinshi.comyunxinsvip.com
yunxinsvr.comyunxinvcloud.comyunxinvideo.comyunxiren.com
+yunxiu.comyunxuetang.comyunxunmedia.comyunyanit.comyunyi-dd.com
yunyibiji.comyunyichong.comyunyihudong.com
+yunyin.orgyunyingdashu.comyunyingketang.comyunyingmiao.comyunyingpai.comyunyingxbs.comyunyingxuetang.com
+yunyis.comyunyize.comyunyoufeitian.comyunyouni.comyunyousj.com
+yunysr.comyunyu123.comyunyuba.comyunyueqiji.comyunyuh5.com
yunyunkan.com
yunyunvip.comyunyuwuyou.comyunzhan365.comyunzhangfang.comyunzhanggui.netyunzhanghu.comyunzhanxinxi.comyunzhanyou.comyunzhifankeji.net
yunzhijia.com
yunzhisec.com
yunzhitai.comyunzhixiyou.com
yunzhizao.netyunzhonghe.com
yunzhu100.comyunzmall.comyunzongnet.comyunzujia.com
yunzz.net
+yunzzz.com
yupao.com
yupaowang.comyupinny.comyupk.xyz
yupoo.comyupu.comyupu163.comyuqi.fun
yuqianshu.comyuqiaolong.comyuqinpin.comyuquanhosp.com
yuque.com
yuren.orgyuriimg.comyusa.meyusainorthwest.comyushanfang.comyushangmao.comyushen.buzz
yushengny.comyushexuetang.comyushin88.comyushiyan.net
+yushu5.com
yushunews.comyusi.comyusi.tv
yusii.com
yusii.netyusinvestment.comyusunjewelry.comyusuusnw.com
yusxz.comyutai365.com
yutainews.comyutaoyouxi.comyuteng.siteyutennet.com
yutian.cc
yutianedu.comyutonad.com
+yutong.com
yutongzyc.com
yuttz.com
+yutuwo.com
yuucn.com
+yuudnn.comyuwan-game.comyuweikuijianzhan.comyuweixia.com
yuweixian.comyuweiyanwo.com
+yuwell.comyuwellgroup.comyuwen360.comyuwenchaoshi.comyuwenmi.com
yuwennews.comyuwenxiandaihua.comyux.team
yuxianall.comyuxiangwang0525.comyuxiaor.com
yuxiaotuo.comyuxinews.com
yuxingqiu.comyuxinqinhang.comyuxitech.comyuxungs.com
yuyangtec.com
yuyaoclub.comyuyaotop.comyuyicai.comyuyichen.spaceyuyin.tvyuyu.comyuyue111.comyuyue27.com
yuyueshop.comyuyuetec.comyuyuetui.comyuyuhunter.com
yuyuntang.com
yuyuntech.com
+yuzeli.comyuzhaimedia.com
yuzhenhai.comyuzhike.comyuzhong.netyuzhongxxw.comyuzhoua.com
yuzhouwan.comyuzhouzs.com
+yuzhua.comyuzhuan.comyuzhulin.com
+yuzhuw.comyuzi.netyuzmshanghai.org
+yuzone.net
yuzua.comyuzundaojia.comyvsports.comyvsy.com
+yvu.cc
+yvv.inyvzfgigpiwmofux.com
yw020.comyw11.com
+yw2005.com
ywart.comywaslkdfakkdf.com
+ywbank.com
ywcbs.com
ywchanghe.com
+ywclxp.com
+ywdier.comywditan315.com
yweisugar.comywgd.com
+ywhack.com
ywhqs.comywies-shpd.comywindex.com
ywinf.comywit.xyzywky.orgywlm.net
ywnds.comywnz.com
ywopt.comywork.meywputxks.com
ywshouyou.com
ywshouyou.netywsoftware.com
+ywstsb.comywtd.xyz
ywurl.comywvzxeau.com
+ywwpay.com
ywxue.com
ywxzz.com
ywyanxing.comywyishi.com
+ywzggd.comywzt.orgyx-g.comyx-life.comyx-s.comyx-s.net
yx007.com
+yx0599.com
yx090.comyx10011.comyx12345.com
+yx1312.com
yx192.com
yx231.com
yx643.com
+yx7088.comyx74.com
+yx7507.com
+yx8668.comyx8tya36v8bp.com
yx988.com
+yxacc6.com
yxbao.comyxbhhbkj.comyxbk.comyxbox91.comyxbrand.com
+yxc.hk
yxcal.com
yxcax.comyxcc.net
yxchg.com
+yxcity.com
+yxcxfw.comyxdaily.comyxdd.com
yxdgc.comyxdh.com
+yxdimg.com
yxdinghuo.comyxdmgame.com
+yxdown.comyxdr.com
+yxdsgs.com
yxduo.com
yxdwj.com
yxecg.com
yxeht.comyxen.netyxepqcbc.comyxfw.com
+yxfwai.com
yxgcx.com
+yxgczx.comyxgf.netyxglpjx.comyxgxbike.com
yxhao.com
+yxhapi.comyxhenan.com
+yxhhdl.com
yxhhr.comyxhi.com
+yxhimg.com
+yxhjgs.com
yxhqj.com
yxhy.asia
+yxi.ccyxiangzu.comyxiannetgz.comyxid.netyxielts.com
+yximgs.com
+yxin18.comyxinbao.comyxit.net
yxixy.comyxjedu02.com
yxjia.comyxjjdby.com
+yxjkhb.comyxjuren.com
yxkfw.comyxkjlcd.comyxkxyghx.org
+yxlaba.com
+yxlady.com
+yxlady.netyxle.net
+yxlink.com
+yxlmdl.net
+yxlqge.com
yxlsj.comyxm.comyxm.xyz
yxmcu.comyxn.fun
yxool.comyxou.comyxph.comyxpk.net
yxpms.com
+yxptfs.comyxqiche.comyxrb.net
+yxsc33.com
yxsea.com
yxsos.comyxss.com
yxsss.com
+yxsxhj.comyxt-tattoo.comyxt.com
+yxtidc.comyxtk.xyz
+yxttzb.com
yxtvg.com
yxuankeji.com
yxwh5.com
yxwic.com
yxwoo.comyxwsgame.com
yxx-china.comyxxgame.com
+yxxurl.comyxxzbox.com
+yxydns.comyxyfhgc.com
+yxylbz.com
+yxyy33.com
+yxyzjx.com
+yxz.meyxzb.tvyxzcemet.com
yxzd.info
yxzhi.comyxzu.com
+yxzxgy.com
yxzzd.comyy-jnsn-city.com
+yy-xjy.com
+yy.comyy07.comyy11.com
yy138.com
+yy1690.com
+yy2169.com
yy2hd.com
+yy4080.com
yy502.com
yy591.comyy6.fun
+yy6080.org
yy845.com
yyasp.net
+yybnet.netyybox.cc
yycec.comyyclouds.com
+yyclub.org
+yycoin.com
yycqc.com
+yycqfw.com
+yyczxt.com
+yydbzz.com
yydcs.com
+yyddss.vipyydl-china.comyyds.co
yyds.pink
+yyds.space
+yydsmh.com
yydzh.comyyearth.comyyestar.com
yyets.comyyfangchan.com
yyfax.com
+yyfdcw.com
+yyfdjn.com
yyfgz.com
yyfqm.com
yyfsb.com
yyfunning.comyyg.com
+yyg120.comyyg7.com
yygamedev.com
+yygold.comyygongzi.com
yygrammar.com
yyh78.comyyha168.com
yyhao.comyyhh.com
+yyhhaa.comyyhn365.com
+yyi100.com
+yyiren.com
yyixx.com
yyizu.com
yyjingyan.com
yyjzt.com
+yyk100.com
yykj.siteyykj2003.comyykj8775.com
yykpi.com
yykpx.com
yylending.com
yylhx.comyylivens.comyylm.orgyymedias.comyyming2.comyymoban.comyynetwk.comyyouren.comyypm.comyypt.comyyq.com
+yyquan.vipyyqyyyy.com
yyrec.com
yyrenting.com
yyrtv.com
yyshangfu.comyystatic.com
+yysweb.com
yytad.com
+yytcdn.com
yytek.comyytfood.comyytiflytek.comyytingli.com
yyuap.comyywd.com
+yywlsj.comyywm.comyywords.com
yywsb.comyywt.onlineyywx888.comyywz123.com
yywzw.comyyx.comyyxfilm.com
+yyxtao.com
+yyxwzx.comyyxx100.comyyxxgame.comyyxxgameyw.com
+yyxzyy.comyyy1389.com
+yyyeee.com
+yyyisp.com
+yyyncp.comyyyrkjgs.com
+yyyxbl.com
+yyyy.games
yyyyy.run
+yyzdjd.com
yyzdm.comyyzf.comyyzf.vipyyzhosp.comyyzs.netyyzsoft.comyyzw.comyyzyytj.comyyzzsem.com
+yz-iot.comyz-show.com
yz061.comyz168.cc
yz2pp.comyz360.ccyz3c.comyz4l.com
+yzbank.comyzbo.tv
+yzbpro.com
+yzbqzx.net
+yzcnet.com
yzcxx.com
yzcyj.net
+yzcyjy.com
yzdir.netyzdjkcy.comyzdn.netyzdryer.com
+yzdx99.com
yzeco.comyzej.com
yzemd.com
+yzfang.comyzfbgjj.com
yzfc8.com
+yzfcdn.comyzfchat.com
yzfjy.com
+yzgjgs.com
+yzgnet.com
+yzgttm.com
yzhbw.netyzhckncp.comyzhcloud.comyzhejin.com
+yzhrhl.com
yzhsk.comyzhuali.com
yziin.com
+yzimgs.comyzinter.com
yzitc.comyzja.com
yzjjw.net
+yzjsxy.comyzjtech.com
+yzkhfw.comyzkimage.comyzkjpcb.comyzlanhan.com
+yzlngi.com
+yzlxjt.com
+yzlyxx.com
yzmat.com
+yzmcms.com
+yzmcxx.comyzmg.comyzmiao03.comyzmoney.com
+yznano.com
+yzncms.comyznn.com
yzops.net
yzpetfood.com
yzqcw.comyzqgamefun.com
yzqzf.comyzrb.com
yzrom.comyzrshop.com
yzrss.com
yzrzgroup.comyzs.com
+yzs.io
yzsbh.comyzsbhjt.comyzsjsbyy.com
+yzsnen.com
+yzspdq.comyzstudio.net
yzsz3.icu
yzt-tools.com
+yzt888.com
+yztcdn.com
+yzw.ccyzwb.comyzwb.netyzweekly.comyzx0771.comyzxcfdj.com
yzxdyrmyy.comyzxxfzy.com
+yzy-gx.com
+yzywhw.comyzyxgame.comyzyz.orgyzzd.comyzzs.ccyzzsoft.comyzzx-zk.comyzzy-online.comyzzy20-play.comyzzyimages.com
yzzzn.com
+z-bank.com
z-inn.com z.biz
+z.wiki z0.ccz01.com
+z0ukun.com
+z12345.comz17.linkz211.topz211.vipz28j.com
z2sci.comz3145x0367.comz316.comz35ey1094r.shopz3quant.com
z4bbs.comz4gwsoqmcvxt.comz574.com
z5encrypt.comz5z4.comz668.netz701.comz729.comz7xz.comz82a3814j5.comz8cqv59kh3ip.comz8f.site
+z8q.cc
z9cdn.com
za-doctor.comza8g1nx4ft.com
+zabaow.com
+zabeiy.com
+zaberw.com
+zabiul.com
+zabiuq.com
+zabiur.com
zablog.me
+zabunn.com
+zabveq.com
+zabvnd.com
+zabxib.comzac1993.com
+zacaog.com
+zaceip.comzachangyou.shop
zack.asia
+zackku.com
+zacuin.com
zaduonews.com
zaeke.comzafinsvc.com
zahtb.com
zahui.fanzahuishi.comzahuoji.comzai-art.comzai-xian.comzaibaoan.com
+zaiduu.comzaiemei.com
+zaifan.comzaih.comzaihuangshi.com
+zaijia.comzaijiamaicai.com
zaijiawan.com
zailouxia.comzaiminglvsuo.comzainanjing365.comzaitong.net
+zaiwai.comzaiweiwx.comzaixian-fanyi.comzaixian100f.comzaixianfanyi.comzaixiangzx.comzaixianjisuan.comzaixiankaoshi.comzaixianvip.net
zaixs.comzaiyulin.comzaiyunli.comzaizai8.comzajiebao.com
+zajilu.com
zajourney.com
zakdy.com
zaker.comzaku.fun
zakww.com
+zallcn.com
zallfuhui.com
+zallgo.comzallimg.com
zalljinfu.com
zamcs.comzampdmp.comzamplink.net
zanao.com
zanba.com
+zanbai.com
+zancar.com
zangaopet.comzangdiyg.com
+zangft.comzanghaihuatxt.com
zanglikun.com
+zangto.com
zangx.comzangyitang123.comzangyitong.comzankee1955.comzanmeishige.comzanmeizhibo.com
+zanpic.comzanyiba.comzaobang.com
zaoche168.com
+zaodao.net
+zaodin.comzaodula.com
zaofabiao.comzaofacai.com
+zaogai.com
zaojiance.com
zaojiance.netzaojiao.comzaojiaxueshe.com
+zaojiu.com
zaojv.com
zaole.netzaoqiangzhiheng.com
+zaovkf.comzaowandushu.comzaowuyun.comzaoyang.org
zaoys.com
+zaozuo.comzapyamobile.comzaqizaba.xyz
zarcw.comzastatic.comzasv.comzasv.netzasyuhkq.com
+zat.cc
zatan.comzatanb1.com
+zatest.comzaticdn.comzaucyih.comzawomkv.comzaxdcredit.comzaxisparts.comzazhipu.com
zazsz.com
zb-kc.comzb1.orgzb580.tv
zb800.com
zbbar.netzbc.wikizbca.com
+zbcool.com
zbdzy.com
zbekj.net
zbesa.com
+zbfilm.comzbgarden.cc
+zbgedu.comzbgl.net
+zbgscm.com
zbhot.comzbhouse.com
zbicg.comzbintel.com
zbird.com
zbisq.com
zbitcloud.comzbj.com
zbj66.com
+zbjdev.com
zbjdr.comzbjhwsh.com
zbjiangsu.com
+zbjimg.comzbjsaas.comzbjwork.comzbkb.com
+zbkszx.net
zblhh.com
+zbling.comzblogcn.comzbluqian.com
zblzm.xyz
zbmbj.comzbmeishu.com
+zbnews.net
zbopr.net
zbqlm.comzbra-inc.com
+zbrhsc.com
zbsonline.com
zbstatic1.com
zbstatic5.com
+zbszkj.com
zbt-china.comzbt.comzbt.net
zburu.com
zbusa.com
+zbwbbs.com
zbwdj.comzbwg.cczbxinmeiti.comzbxsoft.com
zbxyh.com
+zbxyly.com
+zbyads.comzbyinghe.com
zbylc.com
zbytb.comzbyz.netzbz.com
zbzaixian.comzbzb.org
zbzdm.comzbzhandian.comzc-gs100.com
zc-ha.com
zc-it.com
zc-jk.com
+zc0317.com
zc532.comzc6sigma.comzcaijing.comzcawuhvr.com
zcbearing.comzcbm580.com
zcccc.com
+zccrzx.comzcdiesel.com
zcdog.comzcdz1688.comzcedustudy.comzcfc.comzcfirst.comzcfuhua.com
zcfun.comzcfy.cc
zcgou.com
+zcgsfy.com
+zchadq.com
zchmh.com
zchrgroup.com
zcimg.com
+zcinfo.netzcitidc.comzcitidc.netzciv.comzcjbgame.comzcjhsdk.com
+zcjthb.comzcjxedu.comzckb001.com
+zckdwx.com
zclkj.com
+zclock.xyz
zcmlc.com
zcmol.comzcoa365.comzcobrand.comzcom.comzcoming.comzcooler.com
zcosz.comzcpm.net
zcppt.comzcqh.com
zcqss.com
+zcread.comzcry007.com
+zcs.cc
+zcsbbs.com
+zcsweb.com
+zcszcm.comzctec.cczctl.net
zctpt.comzctx.com
+zctzgr.com
+zcwlsc.com
+zcwxjx.comzcwz.comzcxn.com
zcxsl.com
+zcycdn.com
zcyy8.com
+zczbzx.comzczj.com
zd-dl.com
zd-pm.comzd-power.com zd.hkzd200572.com
+zdanfu.comzdao.com
+zdaoxb.com
zdaye.com
+zdbfjj.com
zdbnm.comzdcj.netzdcjw18.comzdcs666.com
+zdctid.com
zddhr.com
+zddhub.com
zddjq.comzddr.comzddream.com
zdeqs.com
zdevo.com
zdexe.com
+zdface.com
+zdfans.comzdfx.net
+zdgkyy.com
zdgzc.comzdh0.com
+zdh168.comzdhaitao.comzdhaitao.netzdhnayr.com
zdhyibiao.comzdic.netzdjt.com
+zdkqyy.com
+zdlife.com
+zdlink.com
zdlpk.netzdm.net
+zdmimg.com
+zdmq88.comzdmr.net
zdnscloud.biz
zdnscloud.comzdnscloud.info
zdnscloud.net
zdomo.com
+zdrcrx.com
zdrcw.com
zdsdp.com
zdsee.com
zdsju.com
zdslb.comzdsr.net
+zdtent.comzdvalves.com
+zdwang.com
zdwfy.com
zdwmq.comzdworks.comzdwx.comzdwx.net
zdxlz.com
+zdxygl.com
+zdz.la
zdzdm.comzdzwtesting.comzdzxtech.comze-assemble.comze-clock.comze-grow.comze-introduce.com
ze-invite.com
ze-mp.com
ze-wx.comze13.com
+zealer.com
zeali.net
zealquest.comzealsafe.netzebracdn.comzebraenglish.bizzebraenglish.com
+zebred.com
zeda1.com
zedsy.com
zeekrlife.com
+zeelis.com
+zeesin.comzegarkirepliki.plzego.imzeguoren.com
+zeidei.com
zeisp.com
zeixihuan.comzejiexinxi.com
+zejiri.netzeju.comzeku.comzeldacn.comzelinai.com
zemismart.com
zemuo.comzen-est.com
+zencre.net
zengdefei.com
zenggaocn.comzengjunpeng.comzengjunyin.comzengrong.netzengyongfu.com
zenha.netzenith-group.netzenithmining.comzenithspace.net
zenixauto.com
+zenmen.comzenoven.com
+zentao.netzentaopm.com
+zeperd.comzepp.com
+zeq366.netzerifeisheng.comzero2me.comzerobreeze.comzerocollege.com
zerogfans.comzeroling.comzerongjituan.com
zeroonead.comzeruns.tech
zerustech.com
zesee.comzesenjt.comzeshengproject.comzesidasi.com
+zesmob.com
zeststore.comzetaijituan.com
+zetast.comzetinghunlian.com
+zygthg.com
zeuux.com
zeuux.orgzexiaoqiao.com
zeyouquan.comzeyuan.shopzeze.comzezeshe.comzezhenwangluo.comzezhuanggd.comzf-8.com
zf360.netzf3d.com
+zfancy.netzfbhsxg.com
+zfboke.comzfbzhsq.comzfcm.netzfdliot.com
+zfdmkj.comzfengit.com
zffan.com
zffcb.com
+zfgy88.com
zfhdi.comzfhz.org
zfimg.comzfj1441.com
+zfkjgw.comzfl9.com
+zfowed.com
zfrontier.comzfsc.comzfservicescn.com
zfsjy.com
+zfsjzx.com
+zfsoft.comzfsqdj0.sitezft.com
+zftime.com
zfty.work
+zfvnet.comzfw.net
+zfwimg.comzfxz.com
+zg-gyt.com
zg-import.com
zg-imsoft.com
zg-tianzi.comzg114jy.com
+zg114w.comzg114zs.com
zg118.com
zg163.net
+zg3721.com
zg388.comzg3china.comzg58.com
zgaxr.comzgbenrun.com
zgbfw.comzgbghdw.com
+zgbjyx.comzgbk.com
zgblh.com
+zgbmcl.com
zgbnt.com
+zgboke.comzgby114.com
+zgbywl.comzgc-bigdata.orgzgc-dsa.org
+zgc261.comzgcbank.com
zgcbb.com
+zgcdiy.com
zgchawang.comzgchawenhua.com
+zgchrx.com
+zgcicc.comzgcindex.org
zgcjm.org
+zgcjpx.com
zgclz.comzgclzzc.com
+zgcmlm.com
zgcsa.org
zgcswhcbw.comzgcszkw.com
+zgcups.com
+zgcxbs.com
+zgczrj.com
+zgddek.com
+zgddmx.com
zgdgw.com
zgdjw.comzgdlfzw.com
+zgdlzb.orgzgdmlaw.com
+zgdmly.com
zgdog.com
+zgdqcy.com
+zgdqjy.com
zgdsw.com
+zgdwzp.comzgdxhbkf.com
+zgdych.comzgdydyxh.com
+zgdygf.com
+zgdztk.comzgeyanwo.com
+zgfwgj.comzgfxnews.com
zgfzh.comzgfznews.com
+zgfznj.comzgg.comzggbdsw.net
+zggbhb.com
+zggcks.com
zgggz.com
+zggjgy.comzggldgj.com
+zgglkx.comzgglyun.com
+zggqzp.com
zggua.comzggx.net
+zggxgp.com
+zggxhj.comzggxlbc.com
zggye.com
zggys.comzggysyw.com
+zggzgg.comzgh.comzghaojiaoyu.com
+zghbcz.com
+zghctc.com
+zghdch.com
zghde.com
+zghhzx.net
+zghifi.com
+zghlzs.comzghongbiao.comzghongqi.com
zghotnews.com
+zghtcd.comzghtedu.com
+zghtqk.comzghyxny.com
+zghzsk.com
+zgjcks.com
+zgjhjy.comzgjiajiaxi.com
zgjiaoyan.com
zgjiayang.com
zgjiemeng.comzgjjzyjy.orgzgjl123.comzgjm.netzgjm.orgzgjmorg.comzgjmvip.com
+zgjrcw.comzgjscopper.comzgjsdsj.com
+zgjsks.com
+zgjsqw.comzgjt518.com
zgjtb.comzgjxcad.com
zgjxf.comzgjxjjw.comzgjy2021.com
+zgjyjj.com
+zgjymg.com
zgkao.comzgkashi.comzgkawah.com
+zgkfzz.com
zgkjb.com
+zgkjcx.com
zgkjw.orgzgkjxww.com
+zgkjzx.com
+zgkqth.com
zgkqw.comzglb.org
zglcxyxzz.com
+zglcyx.com
zglfw.com
zglibrary.comzglipin.com
zgljl2012.com
zglkq.netzglscom.comzgltjjbc.com
zglwb.com
zglww.net
zglxw.comzglyfair.com
+zglyrc.com
zglyz.com
zgmba.com
+zgmcxw.com
+zgmdbw.comzgmh.net
+zgmsbw.comzgmsbweb.comzgmscmpm.com
zgmxl.com
+zgncjr.com
+zgnfys.com
+zgnhzx.com
zgnjm.comzgnnwdkj.comzgnt.cczgnt.netzgny.com
zgnyw.netzgoa.netzgod.xyz
zgong.com
zgoog.com
zgoyf.com
+zgphtx.com
zgpie.com
zgpingshu.comzgps168.com
zgpts.comzgpy168.com
+zgqcdt.com
+zgqczj.com
zgqkk.comzgqw.comzgqyhzfy.com
zgqywhcbw.comzgqyzxw.com
+zgqzjt.comzgqzswdx.comzgrc114.comzgrdnews.com
zgrlm.com
zgrmw.comzgruisai.comzgrybhw.comzgsc123.com
+zgsclp.comzgsd.netzgserver.com
+zgsglp.com
zgshenglu.comzgshifu.comzgshige.comzgshige.net
+zgshjj.comzgshoes.com
zgshq.com
+zgshxd.comzgshxfw.comzgsj.com
+zgsjl8.com
zgslb.netzgsmmhw.com
+zgsmsy.net
+zgsnzj.com
zgsof.com
+zgspws.comzgsssss.com
zgsta.com
+zgstly.net
+zgswcn.com
zgsyb.com
+zgsydw.comzgsynews.com
+zgszjs.com
zgtaining.comzgtcpt.shopzgtcyswh.comzgtghccl.comzgtianlong.comzgtianqi.com
+zgtnzx.comzgtop10.com
+zgtuku.comzgty188.com
+zgtygg.com
zgtzc.com
+zgtzhb.comzgtzqvk.comzgui.comzguonew.comzgvmxma.comzgw.com
zgweimeng.comzgwenku.com
+zgwhfe.com
zgwhw.com
+zgwlsg.comzgwstxc.comzgwt.co
zgwxj.com
+zgxcfx.comzgxetnw.comzgxf.org
+zgxf88.com
zgxhm.comzgxk.orgzgxledu.comzgxmlsp.comzgxqwqh.com
+zgxrjy.comzgxsczdldak.com
zgxue.com
+zgxytc.com
+zgxyzx.net
+zgxzcj.comzgxzhjx.comzgyanwo.comzgyaohua.com
+zgycgc.com
+zgyeda.com
zgyey.com
+zgygsy.com
+zgyhbc.com
+zgyhys.orgzgyinpin.com
+zgyjlf.com
zgylj.com
+zgyouth.cczgys.netzgyssyxh.comzgysw.cc
+zgyxsw.org
+zgyygl.com
+zgyzyq.comzgzb.com
zgzca.com
zgzcw.com
+zgzcwy.comzgzjzzs.com
zgzkw.com
zgznh.comzgzpsjz.com
zgzsa.com
+zgzsrc.comzgzy.netzgzypyw.com
zgzzs.com
+zh-cjh.comzh-itone.comzh-jieli.comzh-piao.com zh.cc
zh188.netzh30.comzh51home.com
zh996.com
+zha.co
+zhai14.com
+zhaiba.comzhaibao.vipzhaibian.comzhaidou.comzhaihai.comzhaiiker.comzhaikexueyuan.comzhaimansky.com
zhainanba.netzhainanfulishe.comzhainanhuayuan.comzhaipan.vip
zhairport.comzhaiwuu.comzhaixiaoniu.com
+zhaixue.cczhale.mezhan.com
zhanbanji.comzhanbuba.comzhanchenyouqi.com
zhanchily.com
zhandaren.comzhandodo.com
zhang-chu.comzhang365.comzhangbj.comzhangbo.orgzhangchi.art
zhangchi.workzhangdongxuan.comzhangdu.comzhangdu5.netzhangdu520.comzhange8.comzhangfeibiao.comzhangfensir.comzhangferry.comzhangfupeng.com
zhanggang.netzhanggaoyuan.comzhangge.netzhanghonghong.comzhanghongliang.comzhangjet.comzhangjinkun.comzhangjinyue.comzhangjunbk.comzhangkai.redzhangkongapp.comzhangkoubei.netzhangle.comzhangli2015.comzhanglinfeng09.comzhangliziyun.com
zhangluya.comzhangmen.comzhangmen.orgzhangmenkid.comzhangnan.xyzzhangnq.comzhangqi.ltdzhangqiaokeyan.comzhangqiongjie.comzhangqiu.cczhangrc.site
zhangread.comzhangrunnan.comzhangsenhao.com
zhangsh08.comzhangshengcw.comzhangshengrong.comzhangshuchang.comzhangsifan.comzhangtaiwuye.comzhangtu.com
zhangu365.comzhangwei.lizhangwenli.comzhangwojumian.comzhangxin.ltdzhangxinhulian.comzhangxinxu.comzhangyi123.comzhangyoubao.comzhangyoushijie.comzhangyu.com
zhangyu39.comzhangyuanqiang.comzhangyue.comzhangyue.netzhangyue01.comzhangyue02.comzhangyue03.comzhangyuecdn.comzhangyujin.comzhangyunling.comzhangyunsheng.comzhangyupeng.comzhangzhao.mezhangzhengfan.comzhangzhongpei.comzhangzhongwang.comzhangzhongyun.com
zhangzhuo.ltdzhangzidao.comzhangzifan.comzhangziran.com
zhangzishi.cc
zhanh.com
+zhanhi.comzhanhuidaili.comzhanhuo.com
+zhanid.comzhankoo.com
zhankuaqq.comzhanlingol.comzhanmang.com
zhanq.net
+zhanqi.net
zhanqi.tvzhanqitv.com
zhanqu.tv
zhanruizb.comzhanshaoyi.comzhanshi.bizzhanshi888.comzhanshiren.com
+zhansu.comzhantuo.comzhanuan.comzhanxingfang.comzhanyaxi.comzhanyouyun.comzhanzhanbao.comzhanzhangb.com
zhao-meng.comzhaobeijing.comzhaobiaoziyuan.com
zhaobuxiu.comzhaocaimall.comzhaocait.comzhaocaiyan.comzhaochanpin.comzhaochao.xyz
+zhaoda.net
zhaodanji.comzhaodaojia.com
zhaodedao.xyzzhaodll.comzhaofangbang.netzhaogang.comzhaogangimg.comzhaogepu.com
+zhaohe.netzhaojiafang.comzhaojiao.netzhaojiaoan.comzhaojiaxiao.com
+zhaojs.com
zhaojunhg.comzhaokaifeng.comzhaokao.netzhaokeli.comzhaoketang.comzhaokuaizhao.comzhaoliangji.comzhaoliming.netzhaomengtu.comzhaoming.bizzhaomxd.comzhaoniupai.comzhaoonline.comzhaopianzhibo.comzhaopin.comzhaopin400.comzhaopin668.com
zhaopinbao.mezhaopingou.comzhaoplc.comzhaoqianwang.com
zhaoqiufa.com
+zhaoqt.netzhaoquanwang.vip
zhaosecha.com
zhaoshang.netzhaoshang100.comzhaoshang800.comzhaoshangbang.comzhaoshangbao.comzhaoshangdai.comzhaoshayou.com
zhaosheng.comzhaosheng365.comzhaoshengsh.comzhaosifang.comzhaosuliao.com
+zhaosw.com
+zhaosy.comzhaota8.comzhaotaicaiyin.comzhaotie.com
+zhaotu.com
+zhaouc.com
+zhaouc.net
zhaowenyu.comzhaowofanyi.com
+zhaoxi.orgzhaoxiangliao.comzhaoxiangyd.comzhaoxiaoshuo.comzhaoxin.comzhaoxitech.comzhaoxuncaijing.comzhaoyanblog.comzhaoyangmao.comzhaoyangsem.comzhaoyangxueyuan.com
zhaoyanmc.com
zhaoyaojd.com
zhaoyasai.comzhaoybbk.comzhaoyingtian.comzhaoyinqian.com
+zhaoyl.com
+zhaoyo.com
+zhaoyq.comzhaoyuan365.comzhaoyun.comzhaozhanxu.comzhaozhishi.comzhaozongjie.comzhatoufa.comzhb1.com
zhbit.com
zhblawyer.com
+zhblog.netzhboyang.com
zhckw.comzhcomputing.comzhcw.com
zhcyanshi.com
zhdba.com
+zhdgps.comzhdmwhg.comzhdsbang.com
+zhdxbj.comzhe.comzhe2.com
+zhe800.com
zhe97.com
+zhebei.comzheerhui.com
zhefengle.comzhehengsteel.comzheishui.com
+zheiyu.comzhejianglab.comzhejianglong.comzhejiangmuseum.comzhejiangqinghe.comzhejing.tech
zhekangzc.comzhekoulife.com
zhekouniu.netzhekouo.comzhelaoda.com
zheli.comzhelibao.com
zhelin.mezhen-ao.comzhen.com
+zhen4k.com
+zhenai.comzhenaihn.comzhenandl.comzhenanpark.comzhenaoyaoye.com
+zhenbi.comzhenbizi.comzhenbon.com
+zhenchu.cczhending-chicken.comzhendonggames.comzhenfacloud.comzhenfund.comzhengcaimall.comzhengcaishangcheng.comzhengcehui.comzhengchang88.comzhengdaojiapei.comzhengdaotang.comzhengdapeanut.comzhengdichaiqian.comzhengdong.cczhengdongzulin.comzhengerpin.comzhengfalaw.comzhengfayunpt.comzhengfengnet.comzhengguzhishen.comzhenghangyq.netzhenghewuye.comzhenghuiyaoye.comzhengjia.comzhengjianzhao.com
zhengjicn.comzhengjie.com
zhengjifb.com
zhengjimt.comzhenglianp.com
zhengmeng.netzhengpic.comzhengpinle.comzhengqi100.comzhengqingsong.com
zhengquan.orgzhengqun123.comzhengruioi.comzhengtongcloud.com
zhengtoon.com
zhengtujy.comzhenguangchem.comzhenguanyu.comzhenguo.comzhengwei007.comzhengwutong.comzhengxiaoling.comzhengxin51.comzhengxinbao.comzhengxingzhijia.comzhengyaing.winzhengyee.comzhengyexing.comzhengyounet.comzhengyouyoule.comzhengyuanfu.comzhengyutuliao.comzhengzai.tvzhengzhaopai.comzhengzhenxx.comzhengzhoubus.comzhengzhoulvxing.comzhengzhoutx.comzhengzhouyunmei.comzhengzihui.com
zhenhaofu.comzhenhaotao.com
zhenhaotv.comzhenhong56.comzhenhonggroup.com
zhenhuadj.comzhenhuan888.comzhenimg.comzhenjiang-marathon.comzhenjiatong.comzhenleishan.comzhenlingjituan.comzhenlongauto.comzhenlongvip.comzhenmeidai.comzhenmeigroup.comzhennann.comzhenpin.comzhenren.comzhenrongbao.comzhenruhotels.com
zhenrun.presszhensiyu.comzhensongyuanlin.com
zhenstyle.com
+zhensuo.tvzhentaigroup.com
+zhentan.la
+zhenwu.comzhenxiad.comzhenxian.fmzhenxiliangshi.comzhenxin2014.com
zhenxinfu.comzhenyangshoes.comzhenyouliao.comzhenyunpan.comzhenzhi365.comzhenzhuchanfu.com
+zhesui.com
+zhetao.comzhetian.org
+zheurl.com
+zhexi.techzhexinit.com
zheyangai.com
zheye.comzheyibu.comzheyouquan.netzheyouxinxi.comzheyuntech.comzhezheai.com
zhezhekan.comzhezhewhkj.comzhfc.com
+zhfund.com
zhfwq.comzhgc.comzhgl.com
zhgnj.com
zhgqt.comzhgreens.comzhguoguo.com
zhhainiao.comzhhaitai.com
zhheo.com
zhhrm.comzhhs-china.comzhht1999.comzhhuahui.com
zhhwy.netzhhy-oa.comzhi-ming.comzhi-niao.com
+zhi.huzhi3.netzhiaimusic.comzhiangroup.comzhiannet.comzhib.netzhibaimeixue.comzhibo.mezhibo.tv
zhibo8.cc
+zhibo8.comzhiboba.com
zhiboohui.com
zhiboqiao.comzhiboyun.net
zhibs.netzhibugongzuo.comzhicaiwang.comzhicall.com
zhichanli.com
zhichaoxt.com
zhichepin.com
+zhichi.comzhichidata.comzhichikeji.comzhichiwangluo.comzhichiweiye.com
zhicms.cczhidao91.comzhidaochuanxin.comzhidaoplan.com
zhidejian.comzhidemai.com
zhidesoft.comzhidianlife.com
zhidieyun.comzhidtech.comzhiduopc.com
zhidx.com
zhienkeji.comzhierjie.comzhifa.cczhifang.comzhifashengfa.comzhifayangfa.comzhifayiyuan.comzhifeishengwu.com
zhifou123.comzhifoukeji.comzhiftype.comzhifufu.comzhifujie.comzhifuqz.comzhifutui.com
+zhifux.comzhifuzi.com
zhigongfu.com
+zhigou.com
zhigou888.comzhigouyp.com
zhiguagua.comzhiguang.me
zhigudata.com
+zhiguf.comzhihang100.com
+zhihe.link
+zhihe.mobizhiheiot.comzhihejia.com
zhihemobi.comzhihengwangchen.comzhihevip.com
+zhihjf.com
zhihu.com
zhihu.devzhihudsp.comzhihuichuangyanshi.comzhihuiep.comzhihuihongze.comzhihuihuiwu.comzhihuiji.comzhihuijingyingba.comzhihuimami.comzhihuinanzhan.comzhihuirenshe.comzhihuishan.comzhihuishitang.net
zhihuishu.comzhihuixiadan.comzhihuixl.comzhihuixuexipt.comzhihuiya.comzhihuizhangyu.comzhihuizp.com
zhihuoseo.com
zhiji.com
+zhijia.comzhijianbao.comzhijianfengyi.comzhijiangames.comzhijiannuoche.comzhijiaow.com
zhijiaoyi.com
zhijiapro.com
zhijiashe.comzhijidoc.comzhijie-edu.com
zhijieguo.comzhijieketang.com
+zhijin.comzhijinwang.comzhikaiis.com
zhikao100.com
zhikao365.netzhikaocn.comzhikaojy.comzhikaowangxiao.net
zhiketong.com
zhiketong.netzhikongyangpin.comzhikuai.com
zhikuaidi.comzhikubao.netzhilandaren.comzhilehuo.comzhileiqiye.comzhileng.comzhilepin.com
zhili2000.comzhilian.comzhilian.host
zhilianfm.comzhilianghui.comzhiliangren.comzhilianiot.com
zhiliaoke.comzhilingshop.com
+zhilong.mezhilongtech.com
+zhiluo.net
zhima1688.comzhimacangku.comzhimace.comzhimantian.comzhimapay.netzhimaruanjian.comzhimasdk.com
zhimatech.comzhimawenda.com
+zhimax.comzhimaxkf.com
zhimeibot.comzhimengdaren.com
zhimg.com
zhimi.comzhimijia.comzhiminglawyer.comzhimodesign.com
+zhimoe.comzhinengdayi.comzhinengxia.comzhinengyujia.com
+zhinet.comzhinianboke.comzhiniceshi.com
zhinikefu.comzhiniu8.comzhinvnetwork.comzhinvxingkeji.com
+zhipan.netzhipeix.com
+zhiper.comzhipianbang.com
+zhipin.com
zhipingke.comzhipuzi.comzhiqiang.orgzhiqiapp.comzhiqihuo.comzhiqihuo.orgzhiquanxia.comzhiquapp.com
zhiquyuan.com
+zhiqwl.com
+zhiren.com
+zhiren.renzhirenhr.comzhiribao.com
zhiru.comzhirui-inv.com
+zhirui.net
zhirui678.comzhiruyi.comzhisanzhao.comzhishangnet.comzhishangsoft.comzhisheji.comzhisheng.comzhishengbang.comzhishengxinchuang-food.com
+zhishi.comzhishi.techzhishif.comzhishifanli.comzhishifenzi.comzhishinn.comzhishisoft.comzhishiu.comzhishiv.comzhishiwu.com
zhishuedu.comzhishutang.com
zhishuyun.comzhisiyun.comzhisuoyi.netzhitaosoft.comzhitongcaijing.comzhitouxing.comzhituad.com
+zhitui.comzhituokeji.com
zhitusoft.comzhituzhilian.comzhiwangrenwu.comzhiweidata.comzhiweihome.comzhiweisoft.com
+zhiwgx.com
zhiwo.com
zhiwu.com
zhiwushuo.com
zhiwutong.com
zhiwuwang.com
zhixi.comzhixiaochengxu.comzhixiaohuoke.comzhixiaoren.com
zhixiaosj.comzhixin-semi.com
zhixin168.comzhixin2019.comzhixingapp.comzhixingbus.comzhixingjj88.comzhixinyq.com
+zhixiu.netzhixuan.com
+zhixue.com
+zhixue.org
zhixueyun.comzhiyanxuan.comzhiyazz.com
zhiye.comzhiyeapp.com
zhiyequan.com
zhiyi.comzhiyicx.comzhiyinghui.com
zhiyingos.comzhiyingyang.com
zhiyinhao.com
zhiyinlou.comzhiyinmedia.com
zhiyoubao.comzhiyousx.comzhiyuanbang.comzhiyuanshijie.comzhiyuanxinglvye.comzhiyuanyun.comzhiyuanzhongyi.comzhiyun-tech.comzhiyungc.comzhiyunwang.netzhiyutianqi.com
zhizaoyun.comzhizhan360.comzhizhang.comzhizhebuyan.comzhizhen.comzhizhi88.comzhizhibaike.comzhizhihu.com
zhizhizhi.com
zhizhizhi.netzhizhonghl.comzhizhoukeji.com
zhizhoumi.comzhizhu35.net
zhizhucms.comzhizhuma.comzhizhuwu.comzhizhuyx.com
zhizihuan.com
zhizihuan.netzhizugz.comzhizunbao668.comzhizunbo.comzhizunnews.comzhizuobiao.comzhizuobiaojiaoyu.comzhizuoh5.comzhizuotu.com
+zhizy9.comzhj9.com
+zhjdkz.com
zhjiameng.comzhjj.org
+zhjncb.comzhjp.net
+zhjtaq.com
+zhjxwh.comzhjypco.com
+zhk.mezhka.comzhku.comzhl.comzhld.com
+zhld88.com
zhlhh.com
+zhliqi.com
zhljq.comzhltech.net
+zhlyen.com
zhlzw.comzhmeiwen.comzhmf.com
zhmodaoli.com
+zhmold.comzhmu.com
zhmxchina.com
+zhmzjl.com
+zhmzqi.com
zhnbj.com
+zhnfad.com
zhong.comzhong100.comzhongan.com
+zhongan.iozhonganfengshang.com
zhonganib.comzhonganinfo.comzhonganweishi.comzhongbao360.comzhongbaounion.comzhongbenkeji.comzhongbenwangluo.comzhongbingtongxin.comzhongbowenwu.comzhongboxinwen.comzhongcaistream.comzhongcaisuo.comzhongche.comzhongchebaolian.comzhongchoujia.comzhongchouke.comzhongchuang365.comzhongchuangwenhua.comzhongchuanjukan.comzhongda021.comzhongdakang.com
zhongdazm.com
zhongdeng.comzhongdengwang.comzhongdi168.comzhongerp.comzhongfu.netzhongfuwatch.comzhongguinong.comzhongguobaiyin.comzhongguociwang.comzhongguoditu.comzhongguofeng.comzhongguoguwan.comzhongguohao123.comzhongguohuo.comzhongguojie.orgzhongguopeixun.netzhongguose.comzhongguosou.comzhongguoss.comzhongguowangshi.comzhongguoyimin.netzhongguoym.comzhonghaitech.comzhonghankejitouzi.comzhonghaojituan.com
zhonghe58.comzhonghegame.comzhonghengbr.comzhonghengyiyao.comzhongheyingji.comzhonghhd.comzhonghongwang.comzhonghuacar.comzhonghuacpa.comzhonghuadiancang.comzhonghuaent.comzhonghuamba.comzhonghuameiwang.comzhonghuanus.comzhonghuaqiming.comzhonghuasuan.comzhonghuawuxia.comzhonghuaying.com
zhongjian.runzhongjiangapp.comzhongjiaochuxing.comzhongjie.comzhongjijidian.comzhongjincc.comzhongjintongsheng.comzhongjitou.comzhongjiujiu.comzhongjixinyuan.comzhongjukiln.comzhongjunstone.comzhongkaiedu.comzhongkao.comzhongkaohelp.com
zhongkerd.comzhongkongbancn.comzhongkongdaikuan.com
zhongleny.com
zhonglian.comzhonglianbiao.comzhonglianguanwei.comzhongliangxny.comzhonglianhuashu.comzhongliusp.comzhongliuyiyuan.comzhonglun.comzhongman.comzhongmeigk.com
zhongmian.comzhongmingjiaoyu.net
zhongnice.comzhongniu.comzhongnongjimu.comzhongpaiwang.comzhongpujiancai.comzhongqingshao.comzhongqixin360.comzhongrenbang.cczhongruigang.comzhongruihuacheng.comzhongruitech.comzhongsen.cozhongsenmenye.comzhongshanchengtai.comzhongshang114.comzhongshanpark.comzhongshanweixin.comzhongshanzhekai.comzhongshengdai.comzhongshenglong.xyzzhongshengxinyun.comzhongshucan.comzhongshuopg.comzhongso.comzhongsou.comzhongsou.netzhongsuizb.comzhongtaipcb.comzhongtaitrust.comzhongtaiyitong.comzhongtefamen.comzhongtieyintong.com
zhongtong.comzhongtongshe.comzhongtoufa.netzhongtuiguang.comzhongtuirong.comzhongtuobang.com
zhongwang.comzhongwangsc.comzhongwei-info.comzhongweiag.comzhongweicable.com
zhongwen.wikizhongwenhexinqikan.comzhongwucan.comzhongwulian.comzhongxiang.comzhongxiangdichan.netzhongxiangwang.cozhongxiaole.netzhongxiaoyl.comzhongxinkeji.vipzhongxinwei.netzhongxuewuyou.netzhongxuewy.netzhongxunrunda.comzhongxuntv.comzhongyangkeji.comzhongyangweixiu.comzhongyaoyi.comzhongye.net
zhongyejy.comzhongyi6.comzhongyihe.shopzhongyiinc.comzhongyiiot.comzhongyiju360.comzhongyiminghua.comzhongyingtougu.comzhongyinlawyer.comzhongyishangwu.comzhongyisousuo.comzhongyoo.comzhongyouai.comzhongyouex.comzhongyougc.comzhongyoumedia.com
zhongyu87.xyzzhongyuanauto.comzhongyue001.comzhongyulian.comzhongyunjy.com
zhongyuyx.comzhongzaisheng.netzhongzhaizs.com
zhongzhao.comzhongzhenjiaoyu.comzhongzhensen.comzhongzhide.comzhongzhifaqian.comzhongzhilin.comzhongzhixin.comzhongzhongkeji.comzhongzhoulianhe.comzhongzhoutm.com
zhongzilu.comzhonren.com
zhonshian.comzhopera.comzhou.icu
+zhouao.comzhoubaitong.netzhouchun.net
zhoudaosh.comzhoufengsd.comzhougong.comzhouhing.comzhouhoulin.comzhoujiahong.comzhoujianhui.comzhoukaiwen.comzhoulaoshi.clubzhoulingjie.com
zhoupu123.comzhoupudata.com
+zhouql.vipzhoushangren.comzhoushengfe.com
zhoutoucg.comzhouweitong.sitezhouxingchi.infozhouxuanyu.com
+zhouyi.biz
zhouyi.cc
+zhouyi.org
zhouyi114.com
zhouyiapi.comzhouyiju.comzhouyou360.comzhouyouji.worldzhouyuanchao.comzhouzhuang.net
zhowe.netzhpk82.cyou
+zhqyue.com
zhqyx.com
+zhqyzs.com
+zhrczp.com
zhrtc.com
zhsan.com
zhsho.com
zhshw.comzhsyb.cc
zhtelecom.com
+zhtmid.comzhtuanjian.comzhuainiu.com
zhuaizuan.comzhuamali.com
zhuancorp.comzhuanfa.netzhuanfou.com
zhuang520.comzhuangji.netzhuangjiba.comzhuangjinshanhe.com
zhuangkou.comzhuangku.comzhuangpeitu.com
zhuangpin.comzhuangxiang.cczhuangxiaomi.com
zhuangxiu.comzhuangxiu567.comzhuangxiubao.comzhuangxiuzhai.comzhuangyanyanglao.comzhuangyi.comzhuangyuantao.comzhuangzhuang.netzhuanhuanqi.comzhuaniao.comzhuankeapp.comzhuanlichaxun.netzhuanliqiao.comzhuanmenmian.comzhuannet.comzhuanpinyin.comzhuanqianba.netzhuanspirit.comzhuanstatic.comzhuantilan.comzhuanwaifu.comzhuanyehuabei.comzhuanyejun.comzhuanyepeixun.comzhuanyes.comzhuanyewanjia.comzhuanyezhidao.comzhuanyun.cczhuanyun123.comzhuanzfx.comzhuanzhi.netzhuanzhuan.comzhuatang.comzhuaxia.comzhuayao.netzhuayou.comzhuayoukong.comzhuayuya.com
+zhuazi.comzhubai.love
+zhubai.pub
zhubaijia.comzhubajie.comzhubajie.lazhubangbang.com
+zhubao.com
zhubao668.com
zhubaopub.comzhubian.com
zhubiaoju.com
zhubijiao.comzhubo123.comzhubogu.comzhuboqiang.comzhuceshenzhengongsi.comzhuceyou.com
+zhuchao.cczhuchengdc.comzhuchengliang.comzhuchuang.club
+zhudai.comzhudianquan.comzhuding.net
+zhufan.netzhufaner.comzhufangdianping.comzhufengpeixun.com
zhufg.com
zhufuyujd.com
zhuge.comzhuge888.comzhugeapi.comzhugeapi.net
zhugefang.comzhuhaily.com
zhuhd.win
zhuhudong.com
+zhuige.comzhuigong.com
zhuiguang.comzhuiguangzhe.com
+zhuihd.comzhuihuodong.comzhuimengzhu.comzhuinianqing.com
+zhuiqu.com
+zhuishu.lazhuishukan.comzhuishushenqi.comzhuishuwang.comzhuishuyun.comzhuitiankeji.comzhuiwan.orgzhuiwen.org
zhuiyi.ai
zhuji.com
zhuji.net
+zhuji5.comzhuji66.com
zhujia100.com
zhujia360.comzhujiangbeer.comzhujiangfuji.comzhujiangrc.comzhujiangroad.com
+zhujib.comzhujibaike.com
zhujibank.comzhujiceping.comzhujiji.comzhujitao.comzhujiwanjia.com
zhujiwiki.comzhujiwu.comzhujiyou.comzhujizixun.comzhukang.tech
zhukao666.com
zhuke.comzhul.inzhulang.comzhulanli.comzhulejia.comzhuli999.comzhulianwines.com
zhulincat.comzhulixiaolie.comzhulogic.comzhulong.comzhulongjiang.com
zhulouren.comzhulu86.comzhumengqinziyou.com
zhumengwl.comzhumingepc.comzhumu.me
zhumulive.com
zhuna.netzhunaerminsu.com
zhunc.vipzhundao.netzhundaoyun.comzhuniangjia.com
+zhuniu.comzhunkua.netzhuntui.comzhunzha.comzhuo.comzhuo.rezhuobao.com
zhuobufan.comzhuodai.net
zhuodaiyu.comzhuofan.netzhuofansoft.com
zhuoguang.net
zhuohuamg.com
zhuojuead.comzhuokai1.comzhuokearts.comzhuolaoshi.comzhuolaoshi.netzhuoligk.comzhuomaiyun.comzhuomogroup.com
zhuoquapp.comzhuoqun.infozhuoqundianli.comzhuoshigroup.comzhuoshixiong.comzhuotingwl.com
+zhuoyi.comzhuoyigame.comzhuoyigame.site
zhuoyitm.sitezhuoyixuan.com
zhuoykeji.comzhuoyou.comzhuoyoutech.comzhuoyuechenxing.comzhuoyuegame.comzhuoyunkang.comzhuozhengsoft.comzhuozhoufangchan.comzhuozhuogame.comzhupinhr.comzhuqinit.com
zhuqiyang.com
zhuque.mezhushandata.com
zhushiyao.comzhushou001.comzhushuiwen.com
zhust.com
+zhutao.comzhutidasai.com
zhutihome.netzhutile.comzhutiwo.com
+zhutix.com
+zhutix.net
+zhutix.vip
+zhutou.com
zhutousan.netzhutxia.com
+zhuwang.cczhuwang360.comzhuwona.com
zhux2.comzhuxianfei.comzhuxiaobang.com
zhuxu.xyzzhuxuezi.comzhuxuncn.com
zhuye.kim
zhuye.xyzzhuyeshouhushen.comzhuyitai.com
zhuyst.cczhuyunji.com
+zhuzao.comzhuzaobang.comzhuzaocloud.comzhuzhai.comzhuzher.comzhuzhichao.comzhuzhou.comzhuzhouwang.comzhuzhutown.comzhuzi.mezhuzihaoke.com
zhuziplay.comzhw2101024.com
zhwangart.com
zhwdw.comzhwenxue.com
zhwjw.net
+zhwxwz.comzhx-mall.comzhx2008.comzhxdfpr.com
+zhxfei.comzhxg.comzhxgimg.com
zhxinuser.com
+zhxnyw.com
+zhxqpt.com
+zhxszq.com
zhxwq.com
zhxww.net
+zhxy1z.com
+zhyccw.com
zhycn.comzhyd.me
+zhyedu.com
+zhyfkj.comzhyi828.comzhyingxiao.comzhyl123.comzhyouliang.comzhysdxl.com
zhysgagag.comzhyymall.com
zhyyz.comzhzf360.net
zhzjw.net
+zhzxin.com
zhzyw.comzi-maoqu.com
+zi.com
+zi0.cc
+zi5.cc
zibaomuye.com
zibll.com
ziboborui.com
+ziboga.com
+zicini.comzicp.funzicp.vip
+zidan.chatzidanduanxin.comzidanduanxin.netzidg.comzidian8.comzidiankeji.comzidianwang.comzidoo.tvzidootv.comzifandiaosu.comzifumao.comzigaokj.comzige365.comzigecha.com
+zigeer.comzigonggroup.com
+zigqnx.comziguhonglan.com
zihai0351.com
zihai0535.comzihai24.comzihaixiaochengxu.comzihexin.netzihu.comzihua.lizihua01.comzihuazhijia.com
ziisp.com
ziji.workzijidelu.orgzijieapi.comzijieapi.netzijiecdn.comzijiecdn.netzijiedj.comzijieimg.comzijieimg.netzijiejiaodian.comzijietiaodong.comzijieurl.comzijieurl.netzijiewap.comzijiewap.netzijinfx.comzijinji.com
zijizhang.comzikao-zikao.comzikao.gdzikao211.comzikao365.com
+zikao5.comzikaocqi.comzikaogd.comzikaoshu.netzikaoshu.vipzikaosw.com
+zikeys.com
zikoo.comzikui-design.com
+zilhua.comzilian5.com
+ziliao8.ccziliao8.comziliaoge.comziliaoh.com
+zilibs.com
zilongame.comzilongshanren.com
+zilrms.com
ziluolanh.comzimacaihang.comzimilan.comzimu.me
zimujiang.comzimukeji.comzimushe.com
+zimuzu.com
zimuzu.io
zimuzu.tvzine.lazinewow.comzinffer.comzing-api.com
+zingke.comzinglix.xyz
+ziniao.com
ziniusoft.com
+zintao.com
+zintow.com
ziooc.com
+zip118.com
+zipadc.com
+zipjpg.comziqingi.comziquyun.com
+zirang.artziranren.comzircite.com
+ziroom.comziroomapartment.comziroomstay.com
+zisai2.com
zisea.com
zisen.com
zisha.com
zishahuyu.comzishapot.com
+zishu.life
+zishuo.comzishuovideo.com
zisuo.comzitengyu.com
+zitern.comziti163.com
+zitiao.org
zitichina.com
+ziticq.com
+zitidi.comzitiguanjia.comzitijia.comzitixiazai.org
zituo.net
+zivers.com
zivoo.comziwanyouxi.comziweifu.com
ziweihuan.comziwojianding.net
+ziwork.comziwoyou.netziwufang.comziwuyunjiao.com
zixia.com
zixiaomao.comzixigua.comzixijiaoshi.com
zixike.cczixueguoxue.comzixuejie.comzixuewang.cc
zixunauto.comzixunhk.comzixunkankan.xyzzixuntop.com
+ziy.ccziya1337.comziyainfo.comziyan666.comziyanfoods.comziyanmm.comziyaokj.com
+ziye66.comziyexing.comziyimall.comziying.site
ziyou.comziyou.studioziyouad.comziyoufa.comziyouwu.com
ziyouziti.com
+ziyrta.com
ziyuan.tv
ziyuan605.com
ziyuandai.com
ziyuangou.comziyuanku.comziyuanm.comziyuanmaow.comziyuanniao.com
ziyuantun.comziyuanxiyanly.com
+ziyuen.com
ziyun.comziyunshanju.comzizaike.comzizailvyou.com
+zizdog.comzizhengfang.comzizhigx.com
zizhuauto.com
zizhupark.comzizhuyuangongyuan.comzizi2000.comzizizaizai.comzizizizizi.com
zizzs.com
+zj-art.com
zj-guojun.com
+zj-idc.com
+zj.comzj01.com
+zj1058.com
zj123.com
zj186.com
+zj2460.comzj31.netzj32.com
zj339.com
zj8t5.comzj96596.comzjabank.comzjaf.net
zjags.comzjaikang.com
+zjaqxy.comzjautoparts.comzjbelong.comzjbinya.comzjbolunfilter.com
+zjbpay.net
zjbuc.com
+zjbyte.com
+zjbyte.netzjca.orgzjcarnet.comzjcb.comzjcbank.com
+zjcbjy.com
zjcdn.comzjchina.orgzjchuguo.com
zjcic.net
zjcio.org
zjckw.orgzjcloud.comzjcnbank.comzjcrjzj.com
+zjctct.com
+zjcuhb.comzjcxbank.comzjdashi.com
+zjdata.netzjdianying.com
zjdingyue.comzjdnajy.comzjdybank.comzjdydlc.comzjdyjob.comzje.com
+zjedps.com
zjedu.org
+zjfcdn.com
zjfdc.netzjft.comzjfujiu.com
zjgas.netzjgcreative.com
+zjgeyi.com
+zjgf88.com
zjgjj.com
+zjgjsc.com
zjgqt.org
+zjgrrb.com
+zjgslb.comzjgt.com
+zjguji.comzjgwqxh.com
zjgwy.org
+zjgwyw.orgzjgzcpa.com
zjhaitian.com
zjhangyin.comzjhbdlkj.comzjhcbank.com
zjhejiang.comzjhi.netzjhkele.comzjhnlianzhong.com
+zjhnrb.comzjhrnet.com
+zjhsfs.comzjhslyw.comzjhuadan.com
zjhualing.comzjhuazhe.com
zjhui.netzjhx520.comzjhyrcb.com
+zjhzgy.com
+zjhzkq.com
+zjhzxc.comzji.net
zjia8.com
+zjibao.comzjiecode.com
zjiis.comzjim.orgzjimpact.com
zjipc.com
zjitc.netzjj-holiday.com
+zjj17u.com
zjj21.comzjjboyahotel.com
+zjjcts.comzjjd.orgzjjgcyz.com
zjjgy.comzjjgylydjc.comzjjiaozhou.comzjjizhi.comzjjlvyou8264.comzjjm.net
+zjjmtl.comzjjr.comzjjsbank.com
+zjjsit.comzjjubao.comzjjy.comzjjzxgj.comzjjzyxh.comzjkangzh.com
+zjkccb.comzjkelan.com
+zjkgjj.comzjkings.comzjknews.com
+zjkpet.comzjks.comzjkwhjj.com
+zjlcwg.comzjldrcb.comzjledfbd.comzjlianyingkj.comzjlindu.com
zjlottery.com
+zjlsbz.comzjlsedu.orgzjlvjie.com
+zjlxtx.com
+zjlzgg.com
zjmax.com
zjmct.com
zjmi-mall.comzjminghong.comzjmingzhen.comzjmobile.comzjmoney.comzjmrhpt.com
+zjmycn.com
zjnad.com
zjnav.com
+zjnrcb.comzjnykjgs.comzjocsuwd.comzjolcdn.comzjoldns.com
+zjpark.comzjpcedu.comzjphrcb.com
+zjpjmy.com
+zjpost.com
+zjptcc.comzjpubservice.comzjqichuang.comzjqinzijianding.comzjrc.comzjrc.net
zjrcu.com
+zjriji.comzjrugao.comzjsaisi.comzjsanma.com
+zjscdb.com
zjscs.com
+zjsfkj.com
+zjsgjs.comzjshuhao.com
+zjshuo.comzjsight.com
+zjsjtz.com
+zjskjt.com
zjsms.com
zjstv.comzjsuntek.comzjsw.orgzjswxpx.com
+zjsxlt.com
+zjsxrz.comzjszbank.com
+zjszzs.comzjt2017.comzjtangshan.com
zjtbe.com
zjtcc.com
zjtcn.com
zjtdw.com
+zjtdyl.com
+zjtkdz.com
+zjtlcb.com
+zjtntd.com
+zjtree.comzjtxedu.org
+zjtzcx.com
+zjugis.comzjujournals.com
zjun.info
+zjuqsc.comzjut.cc
zjvending.comzjwater.comzjwc168.com
+zjwcqp.comzjwebapp.comzjwhhly.com
+zjwiki.com
zjwit.netzjwk.com
zjwmw.com
zjwqw.com
zjwttools.comzjwxbank.com
+zjwynn.comzjxc.com
+zjxdjz.comzjxf119.com
+zjxhbj.com
+zjxhgd.comzjxindu.com
zjxpp.com
+zjxqyy.comzjxsbank.com
+zjxwjs.comzjxwtoy.com
+zjxxkx.com
zjyanxing.com
+zjyari.com
+zjycpx.com
zjydt.com
zjyingcai.com
+zjyiot.comzjyiyuan.comzjyq.cczjyyang.com
+zjyygy.com
+zjzdgj.com
+zjzfcj.comzjzg.comzjzhengding.comzjzhitan.comzjzj.org
zjzjhotel.com
zjznk.comzjzoneng.comzjzs.net
zjzsa.com
+zjzsxb.comzjzydns.com
+zjzyxs.com
+zk0771.com
zk100.com
+zk2013.comzk5u.comzk71.comzkailun.com
zkb77.com
zkbhj.comzkbs.netzkccltd.comzkck.com
zkcmg.com
zkcrm.comzkcserv.comzkcx.comzkdt.netzkecopro.com
zkeys.comzkf5.comzkh.com
+zkh360.com
+zkhb.groupzkhcsoft.com
+zkhcsy.comzkii.net
zking.com
+zkkjpa.comzkl2333.comzkmaint.com
zkmeiling.com
zkmob.net
zknju.comzknmattress.comzkoffcn.comzkpeace.comzkpk.orgzkrdlab.com
+zkroom.com
+zkscgj.comzksoftwaresz.com
+zkteco.com
+zkteco.xinzktimecube.comzktools.netzktw.comzku.net
+zkunet.comzkungfu.com
+zkuyun.com
+zkx.cczkxblog.com
+zkxlkj.net
zkxww.com
zkyai.com
+zkydib.comzkyl.vipzkyouxi.com
zkyxc.com
+zkyxls.comzkzj.orgzl-steelpipe.com
+zl1006.com
zl168.xyzzl99.org
+zlbaba.com
+zlbagx.comzlca.org
zlcds.com
+zlcool.comzldq.orgzle.com
+zlf.co
+zlfedu.com
+zlfind.comzlfshop.com
+zlfzyj.comzlg.com
+zlgcgl.com
+zlgmcu.com
zlgpy.com
zlgsj.com
+zlhome.com
zlhui.com
zlibs.com
zlimg.comzlingad.comzlink-e.com
zlitoa.cc
+zlitoa.com
+zljrhb.com
+zljskb.comzlkb.netzlketang.comzlm4.comzlongame.com
zlook.com
zlprc.comzlqb.netzlqh.com
+zlqiao.comzlqx.com
zlscn.net
zlsin.com
zlsmw.com
+zlsnet.com
+zlsoft.com
+zlsqlt.com
zlsss.com
zltianhen.com
+zlttxl.com
+zluren.com
+zlview.com
zlvod.comzlwlhse.comzlxcqgzp.comzlxiang.com
zlxisheng.comzlxnhzxwsy.com
+zly169.comzlygjzx.com
zlygu.com
+zlysgl.comzlzlzsl.comzlzt.comzm-assemble.comzm-clock.comzm-grow.comzm-introduce.com
zm-invite.com
zm-mp.com
zm-wx.com
+zm0772.com
+zm1717.com
zmapp.comzmaxfilm.com
zmaxhotels.cczmbg.com
zmccx.comzmclearing.com
zmctc.com
+zmdfdc.comzmdyzyey.comzmdz.comzmeng.cczmeng123.comzmengzhu.comzmfunong.com
zmgov.com
+zmgrcw.com
+zmhttp.com
zmifi.comzmingcx.comzmirrordemo.comzmister.com
zmjiudian.comzmlearn.com
zmmdn.com
zmmoo.com
+zmn888.com
+zmndjm.com
+zmnedu.comzmneysz.com
zmnoa.com
zmnrz.com
+zmnxbc.com
+zmobuy.com
zmpal.com
zmqmt.com
zmren.comzmrenwu.comzmrgame.comzmsq.com
+zmt.mezmtc.com
zmtpc.comzmtquan.com
zmubf.comzmufivehospital.com
zmumu.com
zmweb.netzmwo.comzmwxxcx.comzmxiazai.com
zmxiu.comzmye5vly.com
+zmz001.com
+zmz002.com
+zmz003.com
+zmz004.comzmz2019.com
+zmzapi.com
+zmzapi.netzmzb.com
zmzjk.comzmzx.cc
zn225.com
zn226.com
zn229.com
zn551.com
zn556.com
zn559.comzn8.comzn99.comznba.netznbo.com
zncar.com
znczz.com
+zndata.com
+zndlkj.com
zndns.comznds.comznds.netzndsbbs.comzndsrom.comzndstec.com
znelc.comzngm.com
zngue.com
znhac.comznhhmedical.comznhospital.com
znimg.comznj.comznjchina.comznjj.tv
+znjttz.comznlc2015.com
znlcn.org
+znlerp.com
znlgdcksj.sbs
znnee.comznonline.netznp9.com
znpin.com
+znqnet.com
+znrfwy.com
znrom.com
znrsc.comznshuru.com
znsjw.comznsmart.comznstartups.comzntb.netzntvrom.comzntx.cc
+znvren.comznwb.com
+znxdxs.com
znxhd.com
znxsw.comznyp.com
+znyseo.comznyshurufa.com
znzmo.com
+znznet.netznztool.com
znzyf.comzo-station.comzo5yap5sdc.comzoassetmanagement.comzobmxcfw.com
zocai.comzocolor.com
+zocoxx.com
+zoe360.com
+zoebon.com
zoezt.com
+zoform.com
+zofund.comzoharforce.com
+zohead.com
zohzp.com
zoioo.comzokmetal.com
+zokogo.comzol-img.comzol.com
+zollty.com
zoloz.net
+zolsky.comzombiescat.com
zomiu.com
zomtr.com
+zon100.com
+zonafs.comzonboapp.comzone139.comzoneben.comzoneidc.comzoneker.comzonemore.comzonen-tech.com
+zoneve.comzongdegongju.comzonghangsl.comzongheng.comzongheng001.comzonghengke.comzonghengxiaoshuo.comzongming.netzongs365.comzongshengjituan.comzongshenmotor.comzongtiku.comzongxiankj.comzongyiconverge.comzongyifile.comzongyigame.comzongyimobile.comzongyionline.comzongyiphone.com
zongyixun.com
+zonhen.com
+zontes.comzooafun.com
+zoocer.comzooelab.com
+zoofon.comzoogooy.comzookingsoft.com
zookparts.com
+zoom3g.com
+zoomdu.comzoomerstudio.comzoomeye.orgzoomlion.com
+zoopda.comzoossoft.comzooszyservice.comzootope.ink
zooyoo.cc
+zoqlan.com
+zoroli.comzorrospray.comzoscape.com
+zoshow.com
zosujgpc.shopzosurrdc.comzotrppzv.com
+zotrus.comzotumgxr.com
+zou.la
zouaw.comzoubiao.comzoucheng.cc
zoucz.com
zoues.comzouhong365.com
zouht.com
zouin.netzoujiang.com
zoukankan.com
+zoular.com
zoutu.comzouzhiqiang.com
zovps.comzowoyoo.com
zoxun.com
zoyoo.net
zoyst.com zp.do
+zp0716.com
zp365.com
zp515.com
zp910.com
+zpan.spacezparking-tech.comzpascal.netzpaudit.com
+zpb365.comzpchaji.com
zpcis.comzpcmshopping.com
zpedu.com
zpedu.org
zpenr.com
zpfdc.comzpgd.net
+zphlkj.com
zpidc.com
zpjiashuo.com
+zpjkcy.com
zplay.comzplayworld.com
+zpm.sozpmg.com
+zppxba.com
zpt966033.com
+zptong.comzptq.comzpwamdew.com
zpwcb.comzpwz.netzq12369.com
zq235.com
zqagr.com
zqcaf.comzqcloud.comzqcloudgame.com
+zqcyzg.com
+zqd086.comzqdns37.vip
+zqgame.comzqgreen.com
zqhome.cczqic.net
zqids.com
zqins.comzqjiese.com
zqjjr.com
zqkjy.com
+zqlian.comzqlx.comzqnf.com
+zqnp3o.comzqpj.com
+zqread.com
+zqsign.com
zqsjf.com
zqsos.comzqsx.net
zqtbg.com
+zqtong.comzquan.cc
zquan.org
zqvip8.cczqwandao.comzqwh.com
+zqwxzf.com
zqxsc.comzqy.comzqygame.com
+zqz510.comzqzd.com
+zqzyxx.comzr-fanuc.com
+zr1208.net
zrahh.com
+zran88.com
+zrblog.netzrbx.comzrcaifu.comzrcbank.com
zreyv.com
zrfan.com
zrhsh.com
zring.com
zritc.com
zrj96.comzrmm.com
zrnle2550.vipzrpwxgp.com
+zrtech.orgzrtg.comzrthink.com
zrtjt.com
zrway.comzrwdpyl.com
zrwjk.com
+zrxdsj.com
zrxkk.com
zry97.com
zryzd.com
+zrzhpt.comzs-e.comzs-lzlj.com
zs-rh.com
+zs0572.com
+zs3sy4.com
zs666.comzs6y.comzs8q.com
+zsaber.com
zsacg.comzsafedns.netzsanxing.com
zsaxi.com
zsb2c.comzsbeike.comzsbsoft.com
zsbyw.comzscaishang.comzscbled.com
zscch.comzsciupd.comzsd.name
zsdianlan.com
zsdlw.com
+zsdown.comzsemall.com
zseoo.com
zsezt.com
+zsfund.comzsg6.comzsgd.com
zsgjs.com
+zsglrj.comzsgoodlighting.com
+zsgsly.comzsh.comzsh8.com
+zshhjt.comzshield.netzshl.comzshlife.com
zshnb.comzshsoft.com
+zshszy.com
zshtys888.comzshuoshao.onlinezshuoshao.storezshuoshao.techzsia.org
+zsihuo.comzsincer.com
zsite.com
+zsiz6.cyou
zsj18.comzsjinqi.comzsjuchuang.comzskoubei.com
+zsksdw.com
zsksw.net
+zslady.com
+zsld86.com
+zslefx.art
zslhs.com
zslin.comzslp021.comzslyyn12.com
zslyzjj11.com
+zsmama.comzsnxapp.com
+zsppsj.comzsquant.com
+zsr.cczssl.net
zssph.com
zstack.io
+zstack.orgzstatic.netzstaticcdn.com
+zstled.com
zsuan.com
+zsucai.com
+zsucai.netzsufivehos.com
zsvsz.com
zswcn.comzswebao.shopzswpqfep.com
+zswtjt.comzswyprkq.com
+zsxfsy.comzsxinsha.comzsxq.comzsxq100.comzsxsoft.com
zsyanxuan.com
+zsyknk.comzsythink.netzsyyart.comzszq.com
+zszxsz.comzt-express.comzt-info.com
+zt-job.com
+zt0729.xyzzt1f.comztautoparts.comztbeijixing.com
+ztbest.comztcexam.comztch.ltd
ztcia.com
+ztcnwy.com
ztdli.com
+ztdzgf.netzte.net
ztedevice.comztedevices.com
+ztedu8.comztehotel.comztehotel.netztemall.com
+ztemap.com
ztems.comztestin.com
+ztfans.com
+ztfsec.com
+ztfssc.com
+ztgame.comztgcglzx.comztgy.org
zthrv.com
+zthsqx.comzthx2004.comztinfoga.comztjinchi.com
+ztjoin.com
+ztjttz.com
+ztjy61.com
ztjystore.comztkm.comztky.com
+ztlycm.com
ztmao.com
+ztmvip.com
+ztnews.netztno.comztny188.comzto.com
zto56.com
ztomember.com
ztqft.com
ztqqt.com
+ztrczp.comztrhmall.com
+ztrong.com
+ztsafe.comztshjcb.com
+ztsiot.com
ztskc.com
+ztt.cczttx-exp.comzttx.com
+ztupic.com
ztups.com
+ztvcar.com
+ztweld.comztwx.net
+ztwzcg.com
+ztwzsc.comztxh-bj.comztxinli.com
ztxyg.com
+ztxygj.comztxz.ccztxzsjt.com
+ztyang.com
+ztzhbw.com
+ztzhgw.com
+ztzhsq.com
+ztzqzg.com
+ztzsnn.com
+ztzupu.comztzy.com
+ztzzls.comzu3.comzuan-cheng.com
+zuanao.comzuanchuang.orgzuanchuang9.comzuanke8.comzuankezu.comzuanmang.netzuanqianyi.comzuanshi.comzuanshitoupiao.comzuber.imzubunet.comzucaijia.comzuchang1688.com
zuche.comzuchecdn.com
+zuchuan.cczucp.net
+zudequ.com
+zudong.comzuduijun.com
zuezu.com
+zufang.comzufangzi.com
+zugame.comzugeliang01.comzuhao.spacezuhaoapp.comzuhaofa.comzuhaohao.comzuhaowan.comzuhaowan.netzuhaoxiong.comzuhedaikuan.com
zuhnh.com
zuhuanhao.comzui.com
zui88.com
+zuiben.comzuibook.comzuicool.comzuidabao.comzuidaima.com
zuidongxi.comzuifengyun.comzuifuli.com
zuigx.comzuihaodaxue.com
zuihuimai.com
zuihuimai.netzuiidea.com
zuijh.netzuijiao.net
zuijunshi.comzuik.ren
zuikc.com
zuiku.com
+zuikzy.comzuimeia.comzuimeiqidai.comzuimeitianqi.comzuimeix.com
zuimh.comzuiqiangyingyu.net
zuishidai.comzuitang.com
zuitu.com
+zuiwan.netzuixiaoyao.com
zuixu.com
+zuiyou.comzuiyouxi.comzuizhifu.comzujiant.com
+zujuan.comzujuanyi.comzuk.comzuka666.comzukang88.comzuke.comzuker.imzulijian.comzulinbao.comzulinks.com
+zulong.comzulongacmall.com
zulongtea.com
+zumaku.comzumbacn.com
+zumulv.comzun.com
+zun.gdzun9.com
+zunnou.comzunxiang17.comzunxiangqiming.com
+zunxun.com
+zunxun.netzunyiol.com
zuo11.comzuo3.comzuoanedu.comzuoanfloor.comzuobaike.net
+zuobin.netzuocaibusiness.comzuocheng.netzuodanye.com
+zuodao.comzuodashi.com
+zuodia.com
zuogj.com
zuoh5.comzuohaotu.comzuohome.comzuohuodong.com
zuoji-scm.comzuojiachubanshe.comzuojiang.comzuojiawang.comzuojing.com
zuojj.comzuokesteak.comzuolinyouli.vip
zuoqu.comzuoqudashi.net
zuosa.comzuoshangbao.comzuoshouyisheng.comzuoshujiang.comzuotishi.com
+zuowen.comzuowen8.com
zuowening.comzuowenjing.com
zuowenjun.comzuowenku.net
zuowenren.comzuowens.comzuowenwang.netzuowenzhitiao.com
+zuoye5.comzuoyebang.cc
zuoyebang.comzuoyebao.comzuoyebao.net
zuoyehezi.comzuoyesou.com
zuozu.net
zupig.com
zupuk.com
+zupulu.comzuqiuba.comzuqiuba.net
zusan.comzushan.clubzushoushou.comzutianke.com
+zuulee.com
zuxcgames.comzuxiaoqi.comzuxiaoyi.comzuyouzu.comzuyunfei.comzuyushop.com
zuzheyong.comzuzhirenshi.comzuzitech.comzuzuche.com
zving.comzvryuq7xg31x5g.com
+zvv.me
zw110.comzw3w.comzw69.com
zw808.com
zw885.com
zwads.comzwaztizp.com
zwcad.com
+zwcctv.com
zwcnw.com
zwcsm.comzwda.comzwdn.com
zwdns.comzwds.cc
+zwdsty.com
+zwduxs.comzwechat.comzwfw.com
+zwgeek.com
zwggb.com
+zwgjpx.comzwgx.com
zwhuilian.comzwhz.comzwie2003.com
+zwjczx.com
zwjhl.comzwjk.comzwjl.netzwkf.netzwlhome.comzwlw.net
+zwmrxd.com
+zwoasi.com
zwoptical.comzwslshy.com
+zwsmds.comzwtianshangm.com
+zwtkl8.comzwtxipr.com
+zwwank.com
zwwdm.comzwwltkl.comzwwx.com
zwxww.net
+zwying.com
zwyll.com
zwzdiy.cczwzrent.com
zwzrw.com
zwzsh.net
+zwzyzx.comzx-tour.com
+zx0093.com
zx017.com
zx017.net
zx080.com
+zx0818.com
zx100.comzx10000.com
zx110.org
zx114.xyz
zx16f.com
zx181.com
zx18x.comzx350zx.comzx7b.comzx8.comzx98.com
zx990.comzxb12315.comzxblinux.com
zxbzr.com
zxcmk.comzxcoder.comzxcvqqw.com
zxczw.comzxd.com
+zxd666.comzxdb999.com
zxdoo.comzxdu.net
zxdyw.com
zxerp.com
+zxfwgj.com
+zxgj56.comzxgongshui.comzxgroup.ltd
zxgzs.com
zxgzw.comzxhgroup.com
+zxhnzq.com
+zxhong.comzxhospital.com
zxhsd.com
+zxhwzm.comzxiaoxiang.com
+zxicrm.com
zxinc.orgzxingyun.comzxinzxw.comzxip.comzxiw.com
+zxiyun.comzxja.com
+zxjg66.comzxjkcyjt.com
zxjsq.netzxkq022.comzxky007.comzxl.com
zxlib.com
+zxmall.comzxmn2018.comzxmseed.com
zxnic.net
zxnrh.com
+zxopen.com
zxpmq.com
+zxqfjt.comzxqg.comzxs-coffee.comzxsauto.com
+zxsctf.com
+zxsg88.com
zxshe.com
zxsmd.com
+zxstyl.com
+zxswjx.com
zxsxs.com
+zxsygs.comzxt2007.com
+zxtang.comzxtnetwork.com
+zxttax.comzxtw168.com
zxtyx.com
+zxwcbj.comzxwindow.comzxwstong.comzxww1984.comzxwyouxi.com
zxx.worldzxxk.com
zxxmr.com
zxxww.com
+zxxxkj.comzxxyedu.com
zxyee.com
+zxz.eezxzhijia.comzxzmail.comzxzt123.com
zxzyl.com
zxzyy.com
+zy-cam.com
zy100.com
zy120.com
zy223.com
+zy3388.com
zy728.comzy91.comzy99.netzyactech.comzyan.cczyan456.com
+zyanzn.com
zyark.comzyautoe.com
+zybang.com
+zybird.com
zybk6.com
zybtp.comzybuluo.comzybwhsb.comzybz518.com
+zyc123.com
zyccc.com
+zyccst.com
+zycits.comzycitscn.comzycjcrz.org
+zycmfw.com
zyctd.com
zycultura.com
zyczg.com
+zydlks.com
+zydown.comzydtrip.netzydzkjcloud.com
+zye.cczyea.com
zyecp.comzyexhibition.comzyfbjzsc.comzyfchina.comzyfj.comzygames.com
+zygdbc.comzygg.cczygj.netzygjtzjt.comm.travelzoo.comtxwy.com.twwwwimages2.adobe.comwwwimages.adobe.comwww.viveport.comwww.vive.comwww.tutorabc.com
+www.st.comwww.samsung.comwww.redhat.comwww.nike.comwww.htcsense.comwww.htc.com
+www.gov.mowww.djivideos.comwww.dell.comwww.dell-brand.com
+www.com.mywww.analog.com
www.adobe.comwondershare.com.brwmota.htcsense.comwhoami.akamai.netwerewolf.53site.comwegamex.com.hkwechatpay.com.mywechatpay.com.hk123chufa.com.hkvrbi.viveport.com$ upos-hz-mirrorakam.akamaized.netupd.kaspersky.com
unsemi.com.twuk-odc.samsungapps.com1888.com.mo
71.am.comturnitin.org.in
travel6.co.uktongji.linezing.comtk.anythinktech.comthepeak.com.myth.bing.comtencent.com.hk
tencent.co.id
taoxie.com.twtanxlog.istreamsche.comswupdl.adobe.comsupport-cn.samsung.comstorage-asset.msi.comstats.ipinyou.comstatic.eprintsw.comstart.htcsense.com
start.htc.comsource.tutorabc.comsinowealth.com.hksialiagames.com.twabcpost.com.aushitsu.co.jpaccount.htcvive.comadidas-2017.com.tw
s.zampdsp.com
+r.bing.comafp.adchina.comicbc.com.laqrlzlguw.my.id
qq.cn.comqcc.qualcomm.com
airoha.com.twplay.craft.moe
pingan.com.hkalibabacloud.co.in
+one.edu.kgalibabacloud.com.au
ntp.felixc.atnoxagile.duapp.comnike-inc.com.twnexus.dell.comalibabacloud.com.hknefficient.co.kr
my.st.com
+mtk.com.twmoto-one.com.hkmidea.com.tr
mgplay.com.twmeizu.com.hkmd-store.com.twmaterial.istreamsche.commacaotourism.gov.moicbc.com.khalibabacloud.com.myalibabacloud.com.sglvyahoo.com.tw
lvmall.com.tw
liaode.com.twalibabacloud.com.tw
legion.com.hk
lazada.com.ph
lazada.com.mylazada.co.thlazada.co.idandroidgo.duapp.comapi.anythinktech.comksair.com.twkingdee.com.twkaola.com.hkjxlog.istreamsche.comjd.co.thiqiyi.demo.uwpimg.samsungapps.comimages.samsung.comicbci.com.hk
icbcbr.com.bricbc.com.vnicbc.com.sgicbc.com.qaicbc.com.pkicbc.com.peicbc.com.mxicbc.com.moicbc.com.mmapi.crisp.chaticbc.com.kw
+xht.com.hkgeo-prism.htcsense.comicbc.com.au
+icbc.co.nl
+icbc.co.kr
+icbc.co.jp
+icbc.co.id
i.ipinyou.com
+i.dell.com
hrintl.com.hkhopetrip.com.hkhome.htcsense.comhome-cn.htcsense.comhnpwholesale.com.auhkbaike.com.hkhhtravel.com.twhexun.com.tw
hao123.com.sg
+h3c.com.hkgw.craft.moeapps.samsung.com
asset.msi.comassets-global.viveport.com
growth.ai.srvglobal-download.acer.comgeo.kaspersky.comicbc.com.esgeo-prism-cn.htcsense.comgeelyauto.com.hkgeely.com.qagastronomy.gov.mofreetech.com.hkfr-odc.samsungapps.com
+fpg.com.twfmcoprc.gov.moeuropewatch.com.hk
europe.com.hkegg.htcsense.comdvd2017.com.tw
+dst.gov.mo
ditu.live.comdidimobility.co.jpdeveloper.vive.comdeveloper.htcvive.comassets.analog.combaidu.com.hkdatk.anythinktech.comdatasecurity.htcsense.comda.anythinktech.com d4z1onkegyrs5.cloudfront.netctrip.com.hkctrip.co.thctrip.co.krctrip.co.idctexcel.com.hkcrl.kaspersky.comcrl.globalsign.net
+crc.com.hkcontentstore.htcvive.com
conpak.com.hkcnimg.elex.comcncc.bingj.comcn.windowssearch.combankcomm.com.aubankcomm.com.mocn.bing.netcn.bing.comcmbi.com.hkcm.ipinyou.comcm.fancyapi.comclubweixin.samsung.combankcomm.com.twclassix-unlimited.co.uk
citics.com.hkchinaunicom.com.hkchinatelecom.com.mochinatelecom.com.hkchina.mintel.comcdn.zampdsp.combanner668.com.hkcdn.samsung.comcdn.jetbrains.com$ cdn-static.farfetch-contents.comccmdls.adobe.comccmdl.adobe.comccbintl.com.hk
brother.co.jp
bosera.com.hk
blog.vive.comblog.htcvive.comblog.htc.composeidon.dl.playstation.netares.dl.playstation.netcdn.shanghai.nyu.educn.mm.bing.netlarksuite.com.ttdns1.com!uat1.bfsspadserver.8le8le.comzeus.dl.playstation.netsi.cdn.dell.comlarksuite.com.ttdns2.comneofussvr.sslcs.cdngc.net"2-01-5830-0005.cdx.cedexis.netlx.cok.elexapp.comqsb.browser.miui.srvvulcan.dl.playstation.net#cloud-neofussvr.sslcs.cdngc.netcn.pool.ntp.orgbj1.api.bing.comlx3.cok.elexapp.com"qualcomm.cn.cdn.cloudflare.net oemssl.cn.cdn.cloudflare.netp.cdn.persaas.dell.comgst.prod.dl.playstation.net'#sectigochina.com.cdn.cloudflare.net sgst.prod.dl.playstation.net$ dcn01.ps5.update.playstation.net$ dcn01.ps4.update.playstation.net!lenovo.com.cdn.cloudflare.net"gs2.ww.prod.dl.playstation.netgs.ww.np.dl.playstation.net
+Q
+SSRCLOUDairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com
+B
+MITmitmit.edumit.netmitpressjournals.org
+
+MUJImuji.commuji.eumuji.netmuji.twmuji.us
mujikorea.netmuji.com.hkmuji.com.cn
+cn
+<
+SHOWTIMEANYTIMEshowtimeanytime.comshowtime.com
+
+HKTesmarthealth.com
hkcsl.comhkt-enterprise.comhkt-eye.comhkt.comhkteducation.comhktpremier.comhktshop.comnetvigator.comuhub.com1010.com.hktheclub.com.hk
+2
+INNER-ACTIVE-ADSinner-active.mobi
+ads
+
+
BANDWAGONHOSTbandwagonhost.combwh1.netbwh8.net
bwh81.net
bwh88.net
bwh89.net
bwhstatus.com
+
+DELLvmware.tt.omtrdc.netdelldell-brand.comdell.comdellcdn.com
+cfblob.comcloudchoose.comcloudvolumes.com
+cmpaas.com
+cpedge.comcrit-staging.comexperience-vmware.comgemfire.netgeodesummit.comgetboxer.comgitstar.comgitstar.net
gopivotal.net
greenplum.nethwslabs.comimmidio.comitfromtheinside.comlatamvmwareforum.compivotalinitiative.comsnapvolumes.comssdevrd.comvcanedge.com
vcloudair.netvfabric.netvidmpreview.com
+virsto.com
+virsto.netvmglobal.net
+vmmark.comvmtestdrive.comvmw.comvmware-cloudmanagement.comvmware-techcenter.com
+vmware.comvmware20mosaic.comvmwareausnews.com!vmwarecertificationvideos.comvmwarecloud.comvmwaredemandcenter.comvmwareemeablog.comvmwaregrid.comvmwarehorizon.comvmwareidentity.comvmwarelearning.comvmwarelearningplatform.comvmwarestuff.comvmwareusergroupstore.comvmwareviewpoint.com
vmwarevmc.comvmwdemo.com
vmwgcomms.comvmwhorizonair.comvmwidm-ads.com
+vmwidm.comvmwlabconnect.comvmwlearningplatform.comvmworld.comvmworld2010.comvmworld2013.comvmwsalesrewards.comvmwservices.com
+vnware.netwhychoosehorizon.comwhychooseview.comwhychoosevmwareeuc.comwindowsuem.comworkspaceair.comxlstudio.comavinetworks.com
+badaas.combitnami.combitnamiapp.combitnamistudio.comdockerizer.comcloudcredibility.comcloudhealthtech.com
cloudlive.comkubeacademy.comkubeapps.com
+nyansa.com
velocloud.com
gopivotal.com
+heptio.comaliveipc.com
aliveitsm.comaliveprofiler.comalivercm.comaliverewind.com
alivertsm.comalivevm.com
alivevmax.comalivevue.comvsphere.comvsphere.net
air-watch.comairwatchexpress.comairwatchqa.com
+getws1.comgetwsone.comwhatisairwatch.comwhatisworkspaceone.comworkspaceone.com heptio.cn
+cn
+?
+GEETEST#geetest.datasink.sensorsdata.cngeetest.com
+D
+KKTVkktv.mekktv.com.twtheater-kktv.cdn.hinet.net
+"
+LIHKG
+lih.kg
lihkg.com
+
+SINA-ADS2016.sina.cn
+adsad.sina.com.cn
+adsadbox.sina.com.cn
+ads!adimages.sina.com.hk
+ads!adimg.mobile.sina.cn
+ads adimg.uve.weibo.com
+ads!adm.leju.sina.com.cn
+adsads.sina.com
+adsalitui.weibo.com
+adsapi.apps.sina.cn
+ads appgift.sinaapp.com
+ads#appsupdate.sinaapp.com
+adsatm.sina.com
+adsbeacon.sina.com.cn
+ads
biz.weibo.com
+ads%click.uve.mobile.sina.cn
+ads click.uve.weibo.com
+ads0#contentrecommend-out.mobile.sina.cn
+ads$count.video.sina.com.cn
+ads counter.sina.com.cn
+adscre.dp.sina.cn
+adscre-dp.sina.cn
+adsd00.sina.com.cn
+adsdcads.sina.com.cn
+adsdl.kjava.sina.cn
+adsdmp.sina.cn
+adsdp.im.weibo.cn
+ads
game.weibo.cn
+adsgame.weibo.com
+ads"gw5.push.mcp.weibo.cn
+ads"gw6.push.mcp.weibo.cn
+ads"int.dpool.sina.com.cn
+ads%interest.mix.sina.com.cn
+ads log.mix.sina.com.cn
+adslog.sina.cn
+ads!mg.games.sina.com.cn
+adsnewspush.sinajs.cn
+ads oascentral.sina.com
+ads#oascentral.sina.com.hk
+adsp4p.sina.com.cn
+adspalmnews.sina.cn
+adspay.mobile.sina.cn
+adspfp.sina.com.cn
+adspfpip.sina.com
+ads!promote.biz.weibo.cn
+adsrm.sina.com.cn
+adsrs.sinajs.cn
+ads"s.img.mix.sina.com.cn
+adssapi.sina.cn
+adssax.sina.cn
+adssax.sina.com.cn
+adssaxn.sina.com.cn
+adssaxs.sina.com.cn
+ads sbeacon.sina.com.cn
+ads"sdkapp.mobile.sina.cn
+ads!sdkapp.uve.weibo.com
+ads$sdkclick.mobile.sina.cn
+adsslog.sina.cn
+adsslog.sina.com.cn
+ads'staticadm.leju.sina.com.cn
+adstjs.sjs.sinajs.cn
+ads"trends.mobile.sina.cn
+ads"u1.img.mobile.sina.cn
+ads&wapwbclick.mobile.sina.cn
+ads!wbapp.mobile.sina.cn
+ads wbapp.uve.weibo.com
+ads#wbclick.mobile.sina.cn
+ads$wbpctips.mobile.sina.cn
+adswidget.weibo.com
+ads woocall.sina.com.cn
+adszymo.mps.weibo.com
+ads
+
+WALMARTwalmartw-mt.cowal-mart.com
+wal.cowalmart-content.comwalmart.comwalmart.pharmacywalmartimages.com
+wmt.co
+walmart.cn
+cn
+@
+ ZUOYEBANGzuoyebang.cc
zuoyebang.com
+zybang.com
+
+BINANCE
+binance.ccbinance.charity
binance.cloud
+binance.cobinance.combinance.info
+binance.mebinance.netbinance.org
+binance.usbinance.visionbinancecnt.combinancezh.be
binancezh.bizbinancezh.ccbinancezh.co
binancezh.combinancezh.info
binancezh.ink
binancezh.kimbinancezh.linkbinancezh.livebinancezh.mobi
binancezh.net
binancezh.probinancezh.sh
binancezh.topbinanceapi.com
bnbstatic.comsaasexch.comsaasexch.ioappsflayer.com
+
+CATEGORY-BOURSE-IRmellatbroker.comok-ex.iocodal.irfarasahm.ir
+ifb.ir
wallex.ir
irenex.irsukuk.irtalarebourse.com
+tse.ir
tsetmc.irabanbroker.combahmanbroker.combkisecurities.comkmsco.ir
bt-broker.comdanabroker.com
+emofid.commofidonline.cometminansahm.comhafezbourse.comirfarabi.com
bmibourse.combourseiness.comsdbhouse.comnovinbourse.comoibroker.comomidsahm.com
+rbc.irsaderatbourse.comsahandbroker.comsamanbourse.com
arman-ati.comsepahbourse.com
tadbirgar.comabantether.com
+bit24.cash
bitpin.irexir.iofarhad-exchange.comjibitex.com
+nobitex.irmaskanbourse.comompfinex.comramzinex.comtabdeal.orgtetherland.com
ime.co.ir
+
+ENFA
enfagrow4.com
nutramigen.plnutramigen.net
enfaaplus.comenfababy.comenfabebe.comenspireformula.com
enfasmart.com
+enfamil.pt
+enfamil.pl
+enfamil.esenfamil.com
+enfamil.caenfagrow.co.inenfabebe.com.veenfagrow.com.bnenfagrow.com.myenfagrow.com.phenfagrow.com.sgenfabebe3.com.arenfamama.com.arenfamama.com.phbebepremium3.com.boenfabebe.com.peenfabebe.com.mxenfabebe.com.ecenfabebe.com.doenfabebe.com.coenfabebe.com.brenfa.com.vn
+enfa.co.id
+
+NETEASE126.com126.link126.net127.com127.net163.com163cn.tv163industry.com163mail.com
163qiyukf.com
+163yun.com166.com166.net
+haowu.linkicourse163.org
kaola.com
+lofter.com
nease.netnetease-inc.comnetease.com
+netease.im
+qiyukf.comydstatic.comyeah.net
+youdao.comzhuanzfx.comanalytics.163.com
+ads
crash.163.com
+ads crashlytics.163.com
+ads g.163.com
+ads
+
+PIKPAKmypikpak.commypikpak.net
pikpak.mepikpakdrive.com/"o4504926511693824.ingest.sentry.io
+ads
+
+TMTPOSTtmtpost.comchaindd.com
+72whys.com
checkzeit.com
+tivitv.comtmtsmartlife.comtmtsmartrun.com
tigeek.net.cn
+a
+UPAI
aicdn.comupai.comupaiyun.com
upcdn.net
upyun.com
oncdp.com
+
+43993304399.com3304399.net3839.com3839apk.com3839app.com3839app.net3839img.com3839pay.com3839pic.com
+3839vc.com
3839video.com4399.cn4399.com4399.net4399api.com4399api.net
4399biule.com4399dmw.com
+4399er.com4399hhh.com4399inc.com4399mail.com
+4399pk.com
4399sj.cn
+4399sj.com4399swf.com
4399wanju.com4399youpai.com
4399youxi.com4399yyy.com5054399.com5054399.net
71acg.com
71acg.netappeeres.combx1k.comedu4399.com
funnycore.comguoping123.com
i3839.com
ihykb.comimg4399.commail4399.com
+me4399.com
+my4399.com
mysiteres.com
nzsiteres.com
qq163.com
qq163.nettuer123.comwanwan4399.com
+we4399.comwebgame163.com
youba.com
+yxhhdl.com
+
+AMCamc.comamcn.comamcnetworks.comamcplus.comrne5a6ae085b6c43020dea230eb0c0ecc33a188227507da97b8ecc05eb8beace6.us-east-1.prod.service.minerva.devices.a2z.com
+
+ELSEVIERcell.comclinicalkey.comels-cdn.comelsevier-ae.comelsevier.comelsevier.ioengineeringvillage.com
evise.comfundinginstitutional.com
+knovel.commendeley.com
+reaxys.com
+scival.com
+scopus.com
+
+ CASIMAGES
casimages.com
+
+CATEGORY-AI-CHAT-!CN%!servd-anthropic-website.b-cdn.net
ai.google.dev%!alkalicore-pa.clients6.google.com+'alkalimakersuite-pa.clients6.google.com openaiapi-site.azureedge.net2.openaicom-api-bdcpf8c6d2e9atf6.z01.azurefd.net1-openaicomproductionae4b.blob.core.windows.net.*production-openaicom-storage.azureedge.netgenerativeai.google
+poecdn.netclipdrop.copoe.comdify.ai
perplexity.aimeta.ai
+openart.aix.ai
anthropic.com
claude.aiclaudeusercontent.comdeepmind.comdeepmind.googlenotebooklm.google
+openai.com
jasper.aioaiusercontent.com
oaistatic.comchatgpt.com
+ai.comgemini.google.combard.google.comaistudio.google.commakersuite.google.com&"proactivebackend-pa.googleapis.com%!generativelanguage.googleapis.comnotebooklm.google.comgeller-pa.googleapis.comgateway.ai.cloudflare.com!openai.com.cdn.cloudflare.net=9^chatgpt-async-webps-prod-\S+-\d+\.webpubsub\.azure\.com$$o33249.ingest.sentry.io
+ads openaicom.imgix.net
+ads
+
+PEPPYa.ppy.sh
assets.ppy.shc.ppy.sh
+osu.ppy.sh
m1.ppy.shlazer.ppy.sh
notify.ppy.sh
sentry.ppy.shspectator.ppy.sh
+ppy.sh
+T
+PINGAN
+pingan.comyqb.com
pingan.com.cn
pingan.com.hk
+!cn
+
+VILAVPNvilavpn.comvilavpn.xyzvilavpn1.xyzvilavpn2.xyzvilavpn3.xyzvilavpn4.xyzvilavpn5.xyzvilavpn6.xyzvilavpn7.xyz
+A
+FFLOGS
+fflogs.comrpglogs.com
+rpglogs.cn
+cn
+A
+NYPOST
+nypost.comnypost.helpnypostreprints.com
+m
+OKXokex.comokx.comokx-dns.comokx-dns1.comokx-dns2.com
+oklink.com
+cn
+,
+SSLCOMssl.com sslcom.cn
+cn
+
+TESLAtesla-cdn.thron.com
solarcity.com
tesla.comtesla.servicesteslaenergy.servicesteslamotors.comteslazta.net ts.latesla.cn
+cntesla.com.cn
+cnteslamotors.cn
+cnteslamotors.com.cn
+cntesla-cdn.thron.cn
+cn
+
+9TO59to5google.com9to5mac.com9to5terminal.com9to5toys.comdronedj.comelectrek.cospaceexplored.com
+;
+FLUTTERflutter.devflutterapp.compub.dev
+|
+MEITUANdianping.com
+maoyan.commeituan.commeituan.net
mtyun.com
neixin.cnsankuai.com
+f
+AWEMPIREawempire.comdditsadn.comdditscdn.com
docleradn.com
doclercdn.com
+
+TLD-CNcn citic baidu
+unicomsohuxn--zfr164b
+xn--fiqs8s
+xn--fiqz9s
+xn--55qx5d
+xn--io0a7ixn--ses554g
+xn--czru2dxn--hxt814e
+xn--fiq64bxn--czr694bxn--xhq521bxn--1qqw23axn--vuq861b
+xn--kput3ixn--3ds443gxn--fiq228c5hsxn--3bst00mxn--6qq986b3xl
+xn--czrs0t
xn--vhquvxn--fjq720a
+xn--unup4yxn--g2xx48cxn--imr513nxn--otu796d
+xn--9et52uxn--6frz82g
+xn--5tzm5gxn--8y0a063axn--rhqv96gxn--nyqy26a
+
+ HAMIVIDEOapl-hamivideo.cdn.hinet.nethamivideo.hinet.net&"mobilelive-hamivideo.cdn.hinet.netpvr-hamivideo.cdn.hinet.netscc.ott.hinet.net"static-hamivideo.cdn.hinet.net&"tvcastlive-hamivideo.cdn.hinet.net#weblive-hamivideo.cdn.hinet.net
+
+NUROFEN51nurofensk-prod-env.eu-west-1.elasticbeanstalk.com
+nurofen.fr
+nurofen.pl
+nurofen.atnurofengel.com
+nurofen.hr
+nurofen.runurofen.com
+nurofen.hu
+nurofen.sk
+nurofen.cz
+nurofen.de
+nurofen.es
+nurofen.ro
+nurofen.pt
+nurofen.bg
+nurofen.ie
+nurofen.itnurofen.net
+nurofen.nonurofen.com.au
nurofen.co.uk
nurofen.co.ilnurofen.com.sg
nurofen.co.za
nurofen.co.nz
+nurofen.cn
+cnnurofen.com.cn
+cn
+P
+XNXXxnxx-cdn.comxnxx.comxnxx.netxnxx.tv
xnxx3.com
+
+YAMIBO
+yamibo.com
+
+ APPLE-ADS%api-adservices.apple.com
+adsiadsdk.apple.com
+ads
iad.apple.com
+ads qwapi.com
+ads
+
+GOFUNDMEgofundme.com
+$
+GRACG
gracg.comprocg.cn
+M
+
+SHAREPOINT
sharepoint.cnsharepoint.comsharepointonline.com
+
+
MICROSOFT-PKIcrl.microsoft.commscrl.microsoft.comocsp.microsoft.comoneocsp.microsoft.com
+msocsp.comwww.microsoft.com
+cn
+
+OPPOoppo.cnheytapcs.comallawntech.com
oppo.mobioppo.comheytapdownload.comheytapimage.comheytapmobi.com
+myoppo.comrealmemobile.comfinzfin.comcoloros.com
+heytap.comoppodigital.com
oppoer.meoppomobile.comoppopay.comopposhop.cn
+realme.com
realmebbs.com
nearme.com.cn
+$
+PYTHON-COMMUNITYpiwheels.org
+
+TELEGRAMcdn-telegram.orgcomments.appcontest.comfragment.com
graph.orgquiz.directoryt.metdesktop.com
+telega.one
+telegra.phtelegram-cdn.orgtelegram.dogtelegram.metelegram.orgtelegram.space
+telesco.pe
+tg.dev tx.meusercontent.dev
+
+THEGUARDIANtheguardiandev-guardianapis.comdev-theguardian.com
+gu-web.netguardianapis.comtheguardian.comtheguardiandns.comguardianapps.co.uk
+guim.co.ukguimcode.co.uk
+A
+ACERacer-group.comacer.comacer.com.cn
+cn
+/
+CLEARBITJS-ADSx.clearbitjs.com
+ads
+
+SPACEX
+spacex.com
+
+ICBCicbcicbcina.com
95588.comicbcstandardsecurities.comicbcstandardresources.comicbcstandardbank.comicbcstandard.com
dccnet.com.cnicbcmanila.com.cnicbccstz.com.cn
icbccs.com.cnicbc.com.cn95588.com.cnicbc-at.com
+!cnicbc-cz.com
+!cnicbc-ltd.com
+!cnicbc-uk.com
+!cnicbc-us.com
+!cnicbc.ae
+!cnicbc.be
+!cn
+icbc.co.id
+!cn
+icbc.co.jp
+!cn
+icbc.co.kr
+!cn
+icbc.co.nl
+!cnicbc.com.au
+!cnicbc.com.es
+!cnicbc.com.kh
+!cnicbc.com.kw
+!cnicbc.com.la
+!cnicbc.com.mm
+!cnicbc.com.mo
+!cnicbc.com.mx
+!cnicbc.com.pe
+!cnicbc.com.pk
+!cnicbc.com.qa
+!cnicbc.com.sg
+!cnicbc.com.vn
+!cnicbc.de
+!cnicbc.eu
+!cnicbc.lu
+!cn
icbcalmaty.kz
+!cnicbcasia.com
+!cn
icbcbr.com.br
+!cnicbci.com.hk
+!cn
icbcindia.com
+!cn
+icbcit.com
+!cnicbclondon.com
+!cn icbcme.ae
+!cn
icbcmoscow.ru
+!cn
+icbcmy.com
+!cn
+icbcnz.com
+!cnicbcpanama.com
+!cnicbcparis.fr
+!cn
+icbcpl.com
+!cn
icbcswiss.com
+!cnicbcthai.com
+!cn
+icbkfs.com
+!cn
+icbkus.com
+!cn
+5
+PORNPROSpornpros.compornprosnetwork.com
+
+VODAFONEvodafone.comvodafone.devodafone.itmyvodafone.com.aumyvodafone.com.wsvodafone.co.ukvodafone.com.auvodafone.com.tr
+-
+ ACFUN-ADS apilog-web.acfun.cn
+ads
+
+CATEGORY-ANTICENSORSHIPipns.coshadowsocks.orgbrowserleaks.combypasscensorship.org
censorship.aidat.foundationdemocracy.eartheff.org
ffprofile.comfreenetproject.orgfteproxy.org
+geti2p.netgetoutline.org
+gfw.reportguardianproject.infohiddify.com
jitsi.orgcloudflare-ipfs.com
ntc.partyonionshare.orgooni.orgopenvpn.netprivacytools.io
+psiphon.capsiphon3.comsagernet.org
ipfs.techsspanel.netstunnel.orgtelex.cctribler.orgtunsafe.comturkeyblocks.orgvpngate.net
+uproxy.orgvuvuzela.io
+whonix.org
wikileaks.org
wireguard.com
+zeronet.iopaskoocheh.comtorproject.orgcrustwebsites.netakasha.worldlokinet.orgcf-ipfs.comipfs.ioipfs-gateway.cloudc4rex.covia0.comnftstorage.linkjorropo.netahmia.fi4everland.io
dweb.link
+vpngate.jp
+opengw.netsoftether-download.com
softether.orgpwnedpasswords.comhaveibeenpwned.com
v2fly.org
+v2ray.cool
censorship.no
citizenlab.cacitizenlab.orgepicbrowser.comapplecensorship.comfreebrowser.orgfreewechat.com
freeweibo.com
freezhihu.org
greatfire.orgpao-pao.netwikiunblocked.orggetlantern.org
+lantern.io
v2ray.com
ipfs.fleek.coipfs.lain.laipfs.best-practice.seipfs.eternum.iogateway.pinata.cloudipfs.runfission.comipfs.anonymize.comtwister.net.coipfs.eth.aragon.network
+
+GUOKR
guokr.com
+6
+PROQUESTserialssolutions.comproquest.com
+7
+SCPscp-wiki.net
scpdb.orgscpwiki.com
+
+ SHARETHIS
sharethis.com
+
+
+BRIGHTCOVEbcovlive-a.akamaihd.netbcsecure01-a.akamaihd.netbrightcove.imgix.netbcove.videobcovlive.io
bcvp0rtal.comboltdns.netbrightcove.combrightcove.netbrightcove.servicesbrightcovecdn.comvideojs.com
+zencdn.netzencoder.com
+*
+DANGDANGdangdang.comddimg.cn
+/
+FASTLANEfastlane.cifastlane.tools
+¯
+CATEGORY-ADSkepler-37b.comero-advertising.com
+aaxads.com
+ad-srv.netyektanet.com
+tapsell.iradbutter.netjuicyads.comsabavision.comadtechus.com
+adtrue.comadxprtz.com
najva.com51y5.netcfts1tifqr.comcontentabc.comcretgate.com
+lqc006.comeroadvertising.comexoclick.com
+exosrv.com
+go2.global
gozendata.com
gzads.comgz-data.comkaprila.comimglnkc.comimglnkd.cominnovid.com
+adivery.irjads.coadivery.comaddthisedge.com
+shuzilm.cnunioncom.ccmoat.commoatads.com
mobwithad.comrealsrv.coms4yxaqyq95.comtelecome.cntoboads.com
beizi.biztrafficfactory.biztsyndicate.comwwads.cnhubcloud.com.cnpbmp.ali213.netadx.36kr.coma.adtng.comstatic.javhd.comadq.chinaso.comstat.chinaso.comshhs-ydd8x2.yjrmss.cndn-growing.qbox.me
ad.unimhk.comtm-banners.gamingadult.comdas-rpt-log.ucloud.cnclick.ali213.netcdn.banclip.com
jl3.yjaxa.topja2.gamersky.comimg-bss.csdn.netcdn.advertserve.comads.trafficjunky.netad.wang502.comad.api.moji.com^pinggai\d\.caixin\.com$ apilog-web.acfun.cn
+adsads.union.jd.com
+adsc-nfa.jd.com
+adscps.360buy.com
+ads
+jzt.jd.com
+ads
stat.m.jd.com
+adsimg-x.jd.com
+adsanalytics.163.com
+ads
crash.163.com
+ads crashlytics.163.com
+ads g.163.com
+ads amazon-adsystem.com
+adsserving-sys.com
+adsssp.api.tappx.com
+adsa.alimama.cn
+adsacjs.aliyun.com
+ads!adash-c.m.taobao.com
+ads"adash-c.ut.taobao.com
+ads0#adash-emas.cn-hangzhou.aliyuncs.com
+adsadash.m.taobao.com
+ads#adash.man.aliyuncs.com
+ads!adashbc.m.taobao.com
+ads"adashbc.ut.taobao.com
+ads adashx.m.taobao.com
+adsadashx.ut.amap.com
+adsadashx.ut.ele.me
+ads adashx.ut.youku.com
+ads$adashx4ae.ut.taobao.com
+ads#adashx4yt.m.taobao.com
+ads#adashxgc.ut.taobao.com
+adsadsh.m.taobao.com
+adsafp.adchina.com
+adsafp.alicdn.com
+ads agoodm.m.taobao.com
+ads#agoodm.wapa.taobao.com
+ads
alipaylog.com
+adsamdc.alipay.com
+ads api.wapa.taobao.com
+ads#api.waptest.taobao.com
+adsapoll.m.taobao.com
+adsatanx.alicdn.com
+adsatanx2.alicdn.com
+ads!c-adash.m.taobao.com
+adscdn0.mobmore.com
+adsclick.aliyun.com
+ads&click.mz.simba.taobao.com
+adscm.ipinyou.com
+ads!dsp.simba.taobao.com
+adsex.mobmore.com
+ads
ex.puata.info
+ads!fav.simba.taobao.com
+ads$feedback.whalecloud.com
+adsff.win.taobao.com
+ads fm.p0y.cn
+adsg.click.taobao.com
+ads
+g.tbcdn.cn
+adsgma.alicdn.com
+adsgtms01.alicdn.com
+adsgtms02.alicdn.com
+adsgtms03.alicdn.com
+adsgtms04.alicdn.com
+adsh-adashx.ut.ele.me
+ads#h-adashx.ut.taobao.com
+ads"h-adashx.ut.youku.com
+ads&h-adashx4yt.ut.taobao.com
+adshydra.alibaba.com
+ads'hz.pre.tbusergw.taobao.net
+ads#hz.tbusergw.taobao.net
+ads
i.ipinyou.com
+adsinit.phpwind.com
+ads!intl.wapa.taobao.com
+ads$intl.waptest.taobao.com
+ads"jxlog.istreamsche.com
+adslog.umtrack.com
+ads!m-adash.m.taobao.com
+adsm.intl.taobao.com
+adsm.simba.taobao.com
+adsmatch.p4p.1688.com
+ads%material.istreamsche.com
+ads mlt01.com
+ads&nbsdk-baichuan.alicdn.com
+ads&nbsdk-baichuan.taobao.com
+ads"osfota.cdn.aliyun.com
+ads osupdate.aliyun.com
+ads&osupdateservice.yunos.com
+ads%pindao.huoban.taobao.com
+adspush.wandoujia.com
+adsre.m.taobao.com
+ads
re.taobao.com
+ads&redirect.simba.taobao.com
+adsrj.m.taobao.co
+adsrj.m.taobao.com
+adssdkinit.taobao.com
+adssimaba.taobao.com
+adssimba.m.taobao.com
+ads!srd.simba.taobao.com
+adsstats.ipinyou.com
+ads strip.taobaocdn.com
+ads$tanxlog.istreamsche.com
+adstejia.taobao.com
+adstemai.taobao.com
+ads!tns.simba.taobao.com
+ads tongji.linezing.com
+ads tvupgrade.yunos.com
+adstyh.taobao.com
+adsuserimg.qunar.com
+ads"v6-adashx.ut.amap.com
+ads%v6-adashx.ut.cainiao.com
+ads v6-adashx.ut.ele.me
+ads$v6-adashx.ut.taobao.com
+adsw.m.taobao.com
+adsyiliao.hupan.com
+ads fenxi.com
+adslianmeng.360.cn
+ads
+mediav.com
+adsmvad.com
+adsqhupdate.com
+adss.360.cn
+adss.so.360.cn
+adss.union.360.cn
+adsa.ckm.iqiyi.com
+adsad.m.iqiyi.com
+ads
afp.iqiyi.com
+adsc.uaa.iqiyi.com
+ads cloudpush.iqiyi.com
+ads"cm.passport.iqiyi.com
+adscupid.iqiyi.com
+ads#emoticon.sns.iqiyi.com
+ads!gamecenter.iqiyi.com
+ads!hotchat-im.iqiyi.com
+adsifacelog.iqiyi.com
+adsmbdlog.iqiyi.com
+ads msg.71.am
+adsmsg.video.qiyi.com
+ads msg2.video.qiyi.com
+ads#policy.video.iqiyi.com
+adsyuedu.iqiyi.com
+adsadnet.sohu.com
+adsads.sohu.com
+ads!adv-sv-show.focus.cn
+adsaty.sohu.com
+adsdata.vod.itc.cn
+adsepro.sogou.com
+adsgo.sohu.com
+adsgolden1.sogou.com
+adsimp.optaim.com
+adsinte.sogou.com
+adsinte.sogoucdn.com
+adslu.sogoucdn.com
+adspv.sohu.com
+adstheta.sogoucdn.com
+adstrack.sohu.com
+adsuranus.sogou.com
+adsv2.reachmax.cn
+ads)e8aeb8bbdbbd7.cdn.sohucs.com
+ads)643108e7617ef.cdn.sohucs.com
+adssupersonic.com
+adssupersonicads.com
+ads
+ssacdn.com
+ads)supersonicads-a.akamaihd.net
+adscdn.segment.com
+adsadcolony.com
+adsclick.hunantv.com
+adsda.hunantv.com
+adsda.mgtv.com
+adslog.hunantv.com
+adslog.v2.hunantv.com
+adsres.hunantv.com
+adsleanplum.com
+ads#api.game.letvstore.com
+adsark.letv.com
+adsdc.letv.com
+adsfz.letv.com
+adsg3.letv.com
+adsletv.allyes.com
+adsminisite.letv.com
+adsmsg.m.letv.com
+adsn.mark.letv.com
+adspro.hoye.letv.com
+adspro.letv.com
+ads
stat.letv.com
+ads"static.app.m.letv.com
+adsOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$
+ads$adbehavior.ximalaya.com
+ads"adse.wsa.ximalaya.com
+adsadse.ximalaya.com
+ads
ads.yahoo.com
+adsgemini.yahoo.com
+ads
ysm.yahoo.com
+adsx.clearbitjs.com
+adsstatic.hotjar.com
+ads"ads.service.kugou.com
+ads%adserviceretry.kglink.cn
+ads%adserviceretry.kugou.com
+ads"js-agent.newrelic.com
+adsbds.snssdk.com
+adsctobsnssdk.com
+ads
dig.bdurl.net
+adsextlog.snssdk.com
+adsi.snssdk.com
+adsmcs.snssdk.com
+ads'pangolin-dsp-toutiao-b.com
+ads%pangolin-dsp-toutiao.com
+ads'pangolin-sdk-toutiao-b.com
+ads%pangolin-sdk-toutiao.com
+ads&pangolin-sdk-toutiao1.com
+ads pangolin.snssdk.com
+ads&panplayable-toutiao-b.com
+ads$panplayable-toutiao.com
+ads%pglstatp-sdk-toutiao.com
+ads(pglstatp-snssdk-toutiao.com
+ads#pglstatp-toutiao-b.com
+ads!pglstatp-toutiao.com
+ads%sf3-ttcdn-tos.pstatp.com
+ads2mdn-cn.net
+ads2mdn.net
+adsadmob-cn.com
+ads admob.com
+adsads.youtube.com
+adsadsense.com
+ads'adsensecustomsearchads.com
+ads%adsenseformobileapps.com
+ads!adservice.google.com
+ads$advertisercommunity.com
+ads%advertiserscommunity.com
+ads"adwords-community.com
+adsadwords.com
+adsadwordsexpress.com
+ads#app-measurement-cn.com
+ads app-measurement.com
+adsdoubleclick-cn.net
+adsdoubleclick.cn
+adsdoubleclick.com
+adsdoubleclick.net
+ads$google-analytics-cn.com
+ads!google-analytics.com
+adsgoogleadapis.com
+adsgoogleads-cn.com
+ads
googleads.com
+ads$googleadservices-cn.com
+ads!googleadservices.com
+ads googleadsserving.cn
+ads googleanalytics.com
+ads"googleoptimize-cn.com
+adsgoogleoptimize.com
+ads%googlesyndication-cn.com
+ads"googlesyndication.com
+ads$googletagmanager-cn.com
+ads!googletagmanager.com
+ads%googletagservices-cn.com
+ads"googletagservices.com
+ads*googletraveladservices-cn.com
+ads'googletraveladservices.com
+adsgooglevads-cn.com
+ads mail-ads.google.com
+ads)marketingplatform.google.com
+ads
+urchin.com
+ads!analytics.google.com
+ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$
+ads openx.net
+ads openxadexchange.com
+adsopenxcdn.net
+ads openxenterprise.com
+adsopenxmarket.asia
+ads
cdn.pocoiq.cn
+ads
oct.pocoiq.cn
+ads!assets.growingio.com
+ads
onesignal.com
+adsads.pubmatic.com
+adsatom-data.io
+adsanalytics-data.io
+adsironbeast.io
+adsa.baidu.com
+ads
ad.duapps.com
+ads ad.player.baidu.com
+ads
adm.baidu.com
+adsadscdn.baidu.com
+adsadx.xiaodutv.com
+adsae.bdstatic.com
+ads
afd.baidu.com
+ads
als.baidu.com
+ads&api.mobula.sdk.duapps.com
+ads"api.tuisong.baidu.com
+adsappc.baidu.com
+adsb.bdstatic.com
+adsbaichuan.baidu.com
+adsbaidustatic.com
+adsbaidutv.baidu.com
+adsbanlv.baidu.com
+ads
bar.baidu.com
+adsbdplus.baidu.com
+adsbtlaunch.baidu.com
+adsc.baidu.com
+adscb.baidu.com
+adscbjs.baidu.com
+adscjhq.baidu.com
+adscleaner.baidu.com
+ads click.bes.baidu.com
+adsclick.qianqian.com
+adscm.baidu.com
+ads
cpro.baidu.cn
+adscpro.baidu.com
+ads!cpro.baidustatic.com
+ads!cpro.tieba.baidu.com
+ads"cpro.zhidao.baidu.com
+adscpro2.baidu.com
+ads"cpro2.baidustatic.com
+ads
cpu.baidu.com
+ads
crs.baidu.com
+adscstm.baidu.com
+adsdatax.baidu.com
+ads dd713.bj.bcebos.com
+ads dl.client.baidu.com
+adsdl.ops.baidu.com
+adsdl1sw.baidu.com
+adsdl2.bav.baidu.com
+adsdlsw.baidu.com
+adsdlsw.br.baidu.com
+adsdlswbr.baidu.com
+ads!dl-vip.bav.baidu.com
+ads(dl-vip.pcfaster.baidu.co.th
+ads#download.bav.baidu.com
+ads"download.sd.baidu.com
+adsdrmcmm.baidu.com
+adsduiwai.baidu.com
+ads dup.baidustatic.com
+ads
dxp.baidu.com
+ads
dzl.baidu.com
+adse.baidu.com
+adseclick.baidu.com
+adsecma.bdimg.com
+adsecmb.bdimg.com
+adsecmc.bdimg.com
+adseduad.baidu.com
+ads
eiv.baidu.com
+adsem.baidu.com
+adsentry.baidu.com
+ads
ers.baidu.com
+ads
f10.baidu.com
+ads#fc-feed.cdn.bcebos.com
+adsfclick.baidu.com
+adsfclog.baidu.com
+adsfeed.baidu.com
+adsg.baidu.com
+adsgimg.baidu.com
+adsgoutong.baidu.com
+adsgsp1.baidu.com
+adsguanjia.baidu.com
+ads"hao123union.baidu.com
+adshc.baidu.com
+adshm.baidu.com
+adshmma.baidu.com
+ads
hpd.baidu.com
+adsidm.bce.baidu.com
+adsidm-su.baidu.com
+adsiebar.baidu.com
+adsikcode.baidu.com
+adsimg.taotaosou.cn
+adsimg01.taotaosou.cn
+adsimgstat.baidu.com
+adsiwanad.baidu.com
+adsj.br.baidu.com
+adskstj.baidu.com
+ads log.music.baidu.com
+adslxbjs.baidu.com
+adsm1.baidu.com
+adsma.baidu.com
+adsmiao.baidu.com
+adsmobads.baidu.com
+ads"mobads-logs.baidu.com
+adsmpro.baidu.com
+adsmsite.baidu.com
+adsneirong.baidu.com
+adsnsclick.baidu.com
+ads#nsclickvideo.baidu.com
+adsopenrcv.baidu.com
+ads$pc.videoclick.baidu.com
+ads
pos.baidu.com
+adspups.bdimg.com
+ads%push.zhanzhang.baidu.com
+ads qianclick.baidu.com
+adsrelease.baidu.com
+adsres.mi.baidu.com
+ads"rigel.baidustatic.com
+ads#river.zhidao.baidu.com
+adsrj.baidu.com
+adsrplog.baidu.com
+adss.baidu.com
+ads!sa.tuisong.baidu.com
+adssclick.baidu.com
+adssestat.baidu.com
+adsshadu.baidu.com
+adsshare.baidu.com
+adssobar.baidu.com
+adssobartop.baidu.com
+adsspcode.baidu.com
+adsstat.v.baidu.com
+adssu.bdimg.com
+adssu.bdstatic.com
+adstk.baidu.com
+adstkweb.baidu.com
+ads"tob-cms.bj.bcebos.com
+adstongji.baidu.com
+adstoolbar.baidu.com
+adstracker.baidu.com
+adstuijian.baidu.com
+ads*uat1.bfsspadserver.8le8le.com
+ads#ubmcmm.baidustatic.com
+adsucstat.baidu.com
+adsulic.baidu.com
+ads ulog.imap.baidu.com
+adsunion.baidu.com
+ads!unionimage.baidu.com
+adsutility.baidu.com
+ads
utk.baidu.com
+ads videopush.baidu.com
+adsvv84.bj.bcebos.com
+adsw.gdown.baidu.com
+ads
w.x.baidu.com
+adswangmeng.baidu.com
+adsweishi.baidu.com
+ads$wenku-cms.bj.bcebos.com
+ads%wisepush.video.baidu.com
+adswkctj.baidu.com
+adswm.baidu.com
+adsznsv.baidu.com
+adszz.bdstatic.com
+adszzy1.quyaoya.com
+adsad.games.dmm.com
+adsbluekai.com
+adsfout.jp
+adsgmossp-sp.jp
+adsi-mobile.co.jp
+adsim-apps.net
+adsimpact-ad.jp
+ads ladsp.com
+ads
microad.co.jp
+ads
+microad.jp
+ads socdm.com
+ads
+adjust.com
+adsmlog.hiido.com
+adsylog.hiido.com
+adsinner-active.mobi
+ads ogury.com
+ads
+presage.io
+adsogury.co
+ads2016.sina.cn
+adsad.sina.com.cn
+adsadbox.sina.com.cn
+ads!adimages.sina.com.hk
+ads!adimg.mobile.sina.cn
+ads adimg.uve.weibo.com
+ads!adm.leju.sina.com.cn
+adsads.sina.com
+adsalitui.weibo.com
+adsapi.apps.sina.cn
+ads appgift.sinaapp.com
+ads#appsupdate.sinaapp.com
+adsatm.sina.com
+adsbeacon.sina.com.cn
+ads
biz.weibo.com
+ads%click.uve.mobile.sina.cn
+ads click.uve.weibo.com
+ads0#contentrecommend-out.mobile.sina.cn
+ads$count.video.sina.com.cn
+ads counter.sina.com.cn
+adscre.dp.sina.cn
+adscre-dp.sina.cn
+adsd00.sina.com.cn
+adsdcads.sina.com.cn
+adsdl.kjava.sina.cn
+adsdmp.sina.cn
+adsdp.im.weibo.cn
+ads
game.weibo.cn
+adsgame.weibo.com
+ads"gw5.push.mcp.weibo.cn
+ads"gw6.push.mcp.weibo.cn
+ads"int.dpool.sina.com.cn
+ads%interest.mix.sina.com.cn
+ads log.mix.sina.com.cn
+adslog.sina.cn
+ads!mg.games.sina.com.cn
+adsnewspush.sinajs.cn
+ads oascentral.sina.com
+ads#oascentral.sina.com.hk
+adsp4p.sina.com.cn
+adspalmnews.sina.cn
+adspay.mobile.sina.cn
+adspfp.sina.com.cn
+adspfpip.sina.com
+ads!promote.biz.weibo.cn
+adsrm.sina.com.cn
+adsrs.sinajs.cn
+ads"s.img.mix.sina.com.cn
+adssapi.sina.cn
+adssax.sina.cn
+adssax.sina.com.cn
+adssaxn.sina.com.cn
+adssaxs.sina.com.cn
+ads sbeacon.sina.com.cn
+ads"sdkapp.mobile.sina.cn
+ads!sdkapp.uve.weibo.com
+ads$sdkclick.mobile.sina.cn
+adsslog.sina.cn
+adsslog.sina.com.cn
+ads'staticadm.leju.sina.com.cn
+adstjs.sjs.sinajs.cn
+ads"trends.mobile.sina.cn
+ads"u1.img.mobile.sina.cn
+ads&wapwbclick.mobile.sina.cn
+ads!wbapp.mobile.sina.cn
+ads wbapp.uve.weibo.com
+ads#wbclick.mobile.sina.cn
+ads$wbpctips.mobile.sina.cn
+adswidget.weibo.com
+ads woocall.sina.com.cn
+adszymo.mps.weibo.com
+adsads.unitychina.cn
+ads$splash-ads.cdn.unity.cn
+ads%splash-ads.unitychina.cn
+adsunityads.unity.cn
+ads!unityads.unity3d.com
+ads#unityads.unitychina.cn
+ads"advertising.adobe.com
+ads
tubemogul.com
+ads'adeventtracker.spotify.com
+ads$adstudio-assets.scdn.co
+ads#bloodhound.spotify.com
+adsg1.tagtic.cn
+adsxy-log.tagtic.cn
+ads zynga.com
+ads#zyngaplayersupport.com
+ads!ads-api.duolingo.com
+ads!metrics.duolingo.com
+ads'analytics.vpc.duolingo.com
+ads log-sdk.gifshow.com
+adswlog.kuaishou.com
+ads decide.mixpanel.com
+ads mopub.com
+adsevt.mxplay.com
+adsuberads.com
+ads#collector.xhamster.com
+ads a.market.xiaomi.com
+adsad.intl.xiaomi.com
+ads ad.mi.com
+ads
ad.xiaomi.com
+adsad1.xiaomi.com
+adsadmob.xiaomi.com
+ads"adv.sec.intl.miui.com
+adsadv.sec.miui.com
+ads"misc.in.duokanbox.com
+adsmistat.xiaomi.com
+adssentry.d.mi.com
+ads sentry.d.xiaomi.net
+adstjqonline.cn
+ads"tracker.ai.xiaomi.com
+adstracking.miui.com
+adsactives.youku.com
+ads ad.api.3g.youku.com
+ads$ad.api.mobile.youku.com
+ads ad.mobile.youku.com
+ads(a-dxk.play.api.3g.youku.com
+ads
atm.youku.com
+ads#b.smartvideo.youku.com
+adsc.yes.youku.com
+adsdas.api.youku.com
+ads!das.mobile.youku.com
+ads!dev-push.m.youku.com
+adsdl.g.youku.com
+adsdmapp.youku.com
+adse.stat.ykimg.com
+ads#gamex.mobile.youku.com
+ads!guanggaoad.youku.com
+ads"huodong.vip.youku.com
+adshz.youku.com
+adsiyes.youku.com
+adsl.ykimg.com
+adslstat.youku.com
+ads mobilemsg.youku.com
+ads
msg.youku.com
+adsmyes.youku.com
+ads
p.l.youku.com
+adspl.youku.com
+ads#passport-log.youku.com
+adsp-log.ykimg.com
+adspush.m.youku.com
+ads
r.l.youku.com
+ads
s.p.youku.com
+adssdk.m.youku.com
+adsstat.youku.com
+ads$statis.api.3g.youku.com
+ads&store.tv.api.3g.youku.com
+ads&store.xl.api.3g.youku.com
+adstdrec.youku.com
+adstest.ott.youku.com
+ads
v.l.youku.com
+adsval.api.youku.com
+ads
wan.youku.com
+adsykatr.youku.com
+adsykrec.youku.com
+ads emogi.com
+ads"static.sensorsdata.cn
+adsalog.umeng.com
+ads alog.umengcloud.com
+ads
+w.cnzz.com
+adsz.gds.cnzz.com
+ads
ads.wteam.xyz
+adsapplovin.com
+ads
+applvn.com
+adsad.hpplay.cn
+adsadeng.hpplay.cn
+ads#ads-uo.api.leiniao.com
+ads#ads-ut.api.leiniao.com
+adsads.api.my7v.com
+adsads.huan.tv
+adsads.huantest.com
+adsadvapi.joyplus.tv
+ads advapikj.joyplus.tv
+ads$euads-o.api.leiniao.com
+ads!hwads-t.api.my7v.com
+ads kuyun.com
+ads!testads.api.my7v.com
+ads%api-adservices.apple.com
+adsiadsdk.apple.com
+ads
iad.apple.com
+ads qwapi.com
+adsdata.flurry.com
+ads ad.qq.com
+ads
ad.qun.qq.com
+ads!adfilter.imtt.qq.com
+ads
adping.qq.com
+adsadpm.app.qq.com
+adsadsclick.qq.com
+adsadsfile.qq.com
+adsadshmmsg.qq.com
+adsadslvfile.qq.com
+adsadslvseed.qq.com
+ads%adsmind.apdcdn.tc.qq.com
+adsadsqqclick.qq.com
+adsadstestview.qq.com
+adsadsview.qq.com
+adsadsview2.qq.com
+adsadv.app.qq.com
+adsadver.qq.com
+ads
beacon.qq.com
+adsbeaconcdn.qq.com
+ads
btrace.qq.com
+adse.qq.com
+ads
+gdt.qq.com
+adsisdspeed.qq.com
+adslog.tbs.qq.com
+adsmpush.qq.com
+ads
mtrace.qq.com
+ads
pgdt.gtimg.cn
+ads
pingjs.qq.com
+adspush.qq.com
+ads
sngmta.qq.com
+ads
stat.y.qq.com
+adstajs.qq.com
+adstcss.qq.com
+adstrace.qq.com
+adsugdtimg.com
+ads
+wit.qq.com
+ads
+}
+DUOLINGO-ADS!ads-api.duolingo.com
+ads!metrics.duolingo.com
+ads'analytics.vpc.duolingo.com
+ads
+8
+TARGET
+target
+target.comtargetimg1.com
+'
+UBERADS-ADSuberads.com
+ads
+
+GLYPHS
glyphsapp.com
+
+
+INFRAPEDIAinfrapedia.com
+W
+ONEKEYonekey.zendesk.comonekey-asset.com
onekey.soonekeycn.com
+
+
+IMAGEGLASSimageglass.org
+]
+BUYPASSbuypass-ssl.combuypass.com
+buypass.no
+buypass.seminid.no
+
+CATEGORY-BANK-IR
agri-bank.com
ansarbank.combank-maskan.ir
bankmellat.irbanksepah.ir
+bim.irblubank.com
+bmi.ir
+bpi.ir
+bsi.ir
+cbi.irday24.iredbi.ir
enbank.irghbi.irhibank24.com
izbank.irkarafarinbank.ir
mebank.irmresalat.irparsian-bank.compostbank.ir
+qmb.irrb24.ir
refah-bank.ir
rqbank.irsb24.comsbank.ir
shahr-bank.irshaparak.irsinabank.irtejaratbank.ir
+U
+ CLEARASILclearasil.usclearasil.cn
+cnclearasil.com.cn
+cn
+<
+ BITSQUAREbisq.iobisq.networkbitsquare.io
+
+KERNEL
+kernel.org
+x
+NIKKEI
+nikkei.com
nikkei.jpnikkei4946.comnikkei-cnbc.co.jpnikkei.co.jpnikkeibp.co.jp
+k
+DOUYU
douyu.comdouyu.tvdouyucdn.cndouyucdn2.cn
douyuscdn.comdouyutv.com
+1
+JINSHUJUjinshuju.netjinshujucdn.com
+
+UDACITYudacity.com
+9
+YOUZAN
+youzan.comyzcdn.cn
youzanyun.com
+e
+ BILIBILI2bili2.ccbili888.combili999.com($(^|\.)bilibili3(0[1-9]|1[0-2])\.xyz$
+
+CATEGORY-PUBLIC-TRACKER10.rarbg.com12.rarbg.me1337.abcvg.info1c.premierzal.ru6.pocketnet.app6ahddutb1ucc3cp.ru9.rarbg.com
+9.rarbg.me
+9.rarbg.to
+aegir.sexy
amigacity.xyzbigfoot1942.sektori.org($bittorrent-tracker.e-n-c-r-y-p-t.netbt.ktrackers.combt.ptlsp.com
bt.rghost.netbt.sc-ol.combt1.archive.orgbt2.archive.orgbtfile.sdo.combubu.mapfactor.combvarf.tracker.shcanardscitrons.nohost.mech3oh.ru
+concen.orgcoppersurfer.tkd40969.acod.regrucolo.ru
epider.meevan.imexodus.desync.comexplodie.orgfh2.cmp-gaming.comfree.publictracker.xyzh4.trakx.nibba.tradeinferno.demonoid.isipv4.rer.lolipv4.tracker.harry.luisk.richardsw.club
+jutone.comleet-tracker.moemail.artixlinux.orgmartin-gebhardt.eumoonburrow.club
movies.zsw.canew-line.netnyaa.tracker.wf
odd-hd.froh.fuuuuuck.comopen-tracker.demonoid.chopen.acgnxtracker.comopen.acgtracker.comopen.demonii.comopen.demonoid.ch
open.dstud.ioopen.free-tracker.gaopen.stealth.siopen.tracker.clopen.tracker.inkopen.u-p.pwopen.xxtor.comopentor.orgopentracker.i2p.rocksopentracker.iooscar.reyesleon.xyzp2p.publictracker.xyzp4p.arenabg.compirate.t-1.orgpublic.tracker.vraphim.compubt.netretracker.ip.ncnet.ruretracker.lanta.meretracker.local$ retracker01-msk-virt.corbina.netrun.publictracker.xyz
ryjer.comshare.dmhy.orgsu-data.comt-115.rhcloud.com
t.acg.ript.nyaatracker.comt.overflow.biz
+t1.aag.moet1.hloli.org
tamas3.ynh.frtorrents.artixlinux.orgtr.bangumi.moetr.burnabyhighstar.com
+tr.kxmp.cftracker-udp.gbitt.infotracker-zhuqiy.dgj055.icutracker.0x7c0.comtracker.anima.nztracker.artixlinux.orgtracker.auctor.tvtracker.birkenwald.detracker.bitsearch.totracker.bittor.pwtracker.bt4g.comtracker.btcake.comtracker.cloudit.toptracker.coppersurfer.tktracker.cubonegro.loltracker.cyberia.istracker.darkness.servicestracker.ddunlimited.nettracker.deadorbit.nltracker.dler.comtracker.dler.orgtracker.dump.cltracker.edkj.club
tracker.ex.uatracker.expli.toptracker.farted.nettracker.fatkhoala.orgtracker.filemail.comtracker.files.fmtracker.fnix.nettracker.foreverpirates.cotracker.gbitt.infotracker.gcrreen.xyztracker.grepler.comtracker.imgoingto.icu tracker.internetwarriors.nettracker.ipfsscan.iotracker.ipv6tracker.orgtracker.istole.ittracker.jamesthebard.nettracker.kamigami.orgtracker.ktxp.com!tracker.leechers-paradise.orgtracker.lilithraws.orgtracker.loligirl.cntracker.moeking.metracker.mywaifu.besttracker.netmap.toptracker.openbittorrent.comtracker.opentrackr.orgtracker.picotorrent.onetracker.pirateparty.grtracker.prq.totracker.publicbt.com
tracker.qu.axtracker.renfei.nettracker.sktorrent.nettracker.skyts.nettracker.srv00.comtracker.t-rb.orgtracker.tamersunion.orgtracker.tfile.metracker.theoks.nettracker.therarbg.comtracker.therarbg.totracker.thinelephant.orgtracker.tiny-vps.comtracker.token.rotracker.torrent.eu.orgtracker.trackerfix.comtracker.tryhackx.orgtracker.yemekyedim.comtracker.zer0day.totracker.zond.orgtracker1.ctix.cntracker1.itzmx.comtracker1.myporn.clubtracker2.dler.orgtracker2.torrentino.comtracker3.torrentino.comtrackers.ptlsp.comttk2.nbaonlineservice.comu.peer-exchange.downloadwepzone.netwg.mortis.mewww.peckservers.comyolo.liberbear.com
+.
+COUPANGcoupang.comcoupangcdn.com
+$
+GITEE
gitee.comgitee.io
+
+JINJIANG
jjwxc.net
+)
+ADCOLONY-ADSadcolony.com
+ads
+
+
BILIBILI-GAMEbilibiligame.cn
+cnbilibiligame.co
+cnbilibiligame.net
+cnbiligame.co
+cnbiligame.com
+cnbiligame.net
+cn
+
+
CATEGORY-IPFSipns.co
ipfs.techcloudflare-ipfs.comcf-ipfs.comipfs.ioipfs-gateway.cloudc4rex.covia0.comnftstorage.linkjorropo.netcrustwebsites.net4everland.io
dweb.linkipfs.anonymize.comipfs.runfission.comgateway.pinata.cloudipfs.eternum.ioipfs.best-practice.seipfs.lain.la
ipfs.fleek.coipfs.eth.aragon.network
+M
+ MESSENGERfbmessenger.comm.me
messenger.com
+nbabot.net
+S
+UBUNTU
+ubuntu.com
+ubuntu.netubuntuforums.orgubuntu-touch.io
+5
+COLORFULCLOUDScaiyunai.com
caiyunapp.com
+<
+DOCKERcompose-spec.io
+docker.com
docker.io
+
+GITHUB!github-cloud.s3.amazonaws.comgithubhackathon.comghcr.iogithubnext.comgithubpreview.devgithub.blog
+github.comgithub.community
+github.dev
github.io
githubapp.comgithubassets.comgithubcopilot.com
npmjs.orgdependabot.com
+git.iogithubstatus.comgithubuniverse.comgithubusercontent.com
myoctocat.comopensource.guiderepo.newthegithubshop.comatom.io
npm.community
npmjs.comblob.core.windows.netHD^github-production-release-asset-[0-9a-zA-Z]{6}\.s3\.amazonaws\.com$
+@
+FACEBOOKfbcdn-a.akamaihd.netaboutfacebook.com accessfacebookfromschool.comacebooik.comacebook.comadvancediddetection.comaskfacebook.netaskfacebook.org
+atdmt2.comatlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com
click-url.comcomo-hackearfacebook.comcrowdtangle.comdacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.comfaacebok.com
faacebook.comfaasbook.com
facbebook.comfacbeok.com
+facboo.comfacbook.comfacbool.comfacboox.com
faccebook.comfaccebookk.comfacdbook.com
facdebook.com
face-book.com
faceabook.comfacebboc.com
facebbook.comfacebboook.com
facebcook.comfacebdok.com
facebgook.com
facebhook.comfacebkkk.com
facebo-ok.comfaceboak.comfacebock.com
facebocke.comfacebof.comfaceboik.comfacebok.comfacebokbook.comfacebokc.comfacebokk.com
facebokok.comfaceboks.comfacebol.comfacebolk.com
facebomok.comfaceboo.comfacebooa.comfaceboob.comfaceboobok.comfacebooc.com
faceboock.comfacebood.comfacebooe.comfaceboof.comfacebooi.com
facebooik.com
facebooik.orgfacebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-hardware.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.netfacebook.brfacebook.cafacebook.ccfacebook.comfacebook.designfacebook.netfacebook.hufacebook.infecebook.netfacebook.nlfacebook.orgfacebook.se
facebook.shopfacebook.tvfacebook.us
facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com
facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com
facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com
facebookw.comfacebookworld.comfacebool.com
facebool.info
facebooll.comfaceboom.comfaceboon.com
faceboonk.comfaceboooik.com
faceboook.comfaceboop.comfaceboot.comfaceboox.comfacebopk.com
facebpook.comfacebuk.comfacebuok.com
facebvook.com
facebyook.com
facebzook.comfacecbgook.com
facecbook.com
facecbook.orgfacecook.comfacecook.org
facedbook.comfaceebok.com
faceebook.comfaceebot.comfacegbok.com
facegbook.comfaceobk.comfaceobok.com
faceobook.comfaceook.comfacerbooik.com
facerbook.com
facesbooc.comfacesounds.comfacetook.com
facevbook.comfacewbook.cofacewook.comfacfacebook.com
facfebook.com
fackebook.comfacnbook.comfacrbook.com
facvebook.com
facwebook.com
facxebook.comfadebook.com
+faebok.comfaebook.comfaebookc.comfaeboook.comfaecebok.com
faesebook.comfafacebook.comfaicbooc.comfasebokk.comfasebook.comfaseboox.comfavebook.comfaycbok.com
+fb.careers
+fb.com fb.gg fb.mefb.watch
fbacebook.com
fbbmarket.comfbboostyourbusiness.com
fbcdn.com
fbcdn.netfbfeedback.com
+fbhome.comfbidb.io
fbinc.comfbinnovation.comfbmarketing.com
fbreg.com
+fbrpms.com
fbsbx.com
fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org
fburl.comfbwat.chfbworkmail.com
fcacebook.comfcaebook.comfcebook.comfcebookk.comfcfacebook.comfdacebook.infofeacboo.comfeacbook.com
feacbooke.com
feacebook.comfecbbok.comfecbooc.comfecbook.com
feceboock.comfeceboox.com
fececbook.com
feook.comferabook.com
fescebook.comfesebook.com
ffacebook.com
fgacebook.com
ficeboock.comfmcebook.com
fnacebook.comfosebook.com
fpacebook.comfqcebook.com
fracebook.com
freeb.comfreebasics.comfreebasics.net
+freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info
friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.comfsacebok.comfscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.orggacebook.comgameroom.comgfacecbook.com
+groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.orginternet.orgklik.meliverail.comliverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.commyfbfans.comnewsfeed.comnextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.comrocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.netthefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com
worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com
+redkix.com
workplace.comworkplaceusecases.com
+:
+WEIPHONEfeng.comfengimg.comwfdata.club
+*
+ACTALISactalis.com
+actalis.it
+%
+CATEGORY-ENTERTAINMENT-CNmanga.bilibili.comheavenlywind.ccsteampp.netlsplayer.com
+yeshen.comledu.com
+wo1wan.com3dmgame.com
bilicomic.combilicomics.com
+acg.tvacgvideo.comanimetamashi.cnanimetamashi.com
+anitama.cnanitama.net
+b23.tv
bigfun.cnbigfunapp.cn
bili22.cnbili2233.cn
bili23.cn
bili33.cnbiliapi.combiliapi.netbilibili.ccbilibili.cnbilibili.combilibili.netbilibilipay.cnbilibilipay.combilicdn1.combilicdn2.combilicdn3.combilicdn4.combilicdn5.com
+biligo.combiliimg.combilivideo.cn
bilivideo.com
bilivideo.net
hdslb.com
hdslb.orgim9.commaoercdn.com
+mincdn.comyo9.comtiancity.comtiancitycdn.com
+gcores.comku6.com
+ku6cdn.com
+ku6img.comximalaya.com
xmcdn.comu17.comu17i.comu17t.comgifshow.com
+inkwai.comksapisrv.comkuaishou.com
+kwaizt.comkuaishouzt.com
+kwimgs.com
+yximgs.comacfun.cnaixifan.com
+acplay.netdandanplay.comciweimao.comhbooker.comkuangxiangit.combiji.com
+ddmogo.com
+igetget.cnigetget.comluojilab.com
mogoo.com
+sao.cnsaolife.com
douyu.comdouyu.tvdouyucdn.cndouyucdn2.cn
douyuscdn.comdouyutv.comgitv.cngitv.tv 71.am
iqiyi.comiqiyipic.com
+pps.tv
+ppsimg.comqiyi.comqiyipic.com
+qy.net
+71edge.com
+le.comlecloud.com
+lemall.comletv.comletvcdn.comletvimg.com
+ali213.netgamersky.commiaopai.com
muwai.com
tgbus.com
+ro.com xd.cn
+xd.com
xdcdn.netxindong.com
+tapimg.com
+tapimg.net
taptap.cn
+taptap.com
taptap.iotaptapdada.com
+vgtime.comdmzj.comhuya.commsstatic.com
jjwxc.net
pplive.cn
+pplive.compptv.comqingting.fmqtfm.cn
sfacg.comcowlevel.net
cdncl.netkkmh.comkuaikanmanhua.com
kgimg.com
kugou.comlizhi.fmlizhifm.commfuns.cn
zhanqi.tv3304399.com3304399.net3839.com3839apk.com3839app.com3839app.net3839img.com3839pay.com3839pic.com
+3839vc.com
3839video.com4399.cn4399.com4399.net4399api.com4399api.net
4399biule.com4399dmw.com
+4399er.com4399hhh.com4399inc.com4399mail.com
+4399pk.com
4399sj.cn
+4399sj.com4399swf.com
4399wanju.com4399youpai.com
4399youxi.com4399yyy.com5054399.com5054399.net
71acg.com
71acg.netappeeres.combx1k.comedu4399.com
funnycore.comguoping123.com
i3839.com
ihykb.comimg4399.commail4399.com
+me4399.com
+my4399.com
mysiteres.com
nzsiteres.com
qq163.com
qq163.nettuer123.comwanwan4399.com
+we4399.comwebgame163.com
youba.com
+yxhhdl.comdtstatic.comduitang.com
+61.com
+taomee.com
+kumiao.com
youku.com
ykimg.com
+mmstat.comsoku.com
+cibntv.netbilibili.tv
+!cnbiliintl.com
+!cndreamcast.hk
+!cn- upos-hz-mirrorakam.akamaized.net
+!cnbilibiligame.cn
+cnbilibiligame.co
+cnbilibiligame.net
+cnbiligame.co
+cnbiligame.com
+cnbiligame.net
+cn log-sdk.gifshow.com
+adswlog.kuaishou.com
+ads apilog-web.acfun.cn
+adsiq.com
+!cna.ckm.iqiyi.com
+adsad.m.iqiyi.com
+ads
afp.iqiyi.com
+adsc.uaa.iqiyi.com
+ads cloudpush.iqiyi.com
+ads"cm.passport.iqiyi.com
+adscupid.iqiyi.com
+ads#emoticon.sns.iqiyi.com
+ads!gamecenter.iqiyi.com
+ads!hotchat-im.iqiyi.com
+adsifacelog.iqiyi.com
+adsmbdlog.iqiyi.com
+ads msg.71.am
+adsmsg.video.qiyi.com
+ads msg2.video.qiyi.com
+ads#policy.video.iqiyi.com
+adsyuedu.iqiyi.com
+ads
mhystatic.com
+cn mhyurl.cn
+cn
+mihayo.com
+cnmihayou.com
+cn
+mihoyo.com
+cnmihoyocg.com
+cnmihoyogift.com
+cnmihoyomall.com
+cnmiyoushe.com
+cnbenghuai.com
+cnbh3.com
+cnbhsr.com
+cnthemisweeps.com
+cnyuanshen.com
+cn
juequling.com
+cn'^.+-mihayo\.akamaized\.net$
+cn
+%
+CDN77
cdn77.com
cdn77.org
+
+QIHOO360-ADS fenxi.com
+adslianmeng.360.cn
+ads
+mediav.com
+adsmvad.com
+adsqhupdate.com
+adss.360.cn
+adss.so.360.cn
+adss.union.360.cn
+ads
+<
+TIDAL
tidal.com
tidalhifi.com
wimpmusic.com
+
+ZHANQI
zhanqi.tv
+
+ELEME
doservice.com
+ele.me
+ele.toeleme.cneleme.ioelemecdn.cnelemecdn.com
elenet.me
+|
+GREEgree.cngree.comgreeyun.comkinghomechina.com
+zhlyen.comgree.com.cntosot.com.cn
+!
+
+MASTERCARDnab.demdex.net&"nationalaustraliaban.tt.omtrdc.net
mastercard.lu
mastercard.ie
mastercard.az
mastercard.ba
mastercard.be
mastercard.bg
mastercard.by
mastercard.ca
mastercard.ch
mastercard.cltravelexmoneycard.comtravelexch.comtravelexae.comtravelex.qatravelex.ittravelex.frtravelex.detravelex.comtravelex.catravelex.bhtravelex.be
mastercard.mygwktravelex.nlcashpassportglobe.comsimplifycommerce.comsimplify.compricelesstv.compricelesstoronto.capricelesssurprises.compricelesssydney.compricelesssantiago.compricelesspick.compricelesshonolulu.compricelesshongkong.compricelessbeijing.compricelessaruba.compricelessarabia.compricelessafrica.com
priceless.org
priceless.compahabicilemezsurprizler.commastercardmoments.comlovethiscity.com53worldsweeps.com
mastercard.ae53world.com
mastercard.cz
mastercard.de
mastercard.dk
mastercard.es
mastercard.eu
mastercard.fi
mastercard.fr
mastercard.gr
mastercard.hr
mastercard.hu
mastercard.mdmastercard.inc
mastercard.it
mastercard.jo
mastercard.ke
mastercard.kzmastercardcenter.org
mastercard.atmastercard.com
mastercard.nl
mastercard.no
mastercard.om
mastercard.pl
mastercard.pt
mastercard.qa
mastercard.ro
mastercard.rs
mastercard.ru
mastercard.se
mastercard.si
mastercard.sk
mastercard.ua
mastercard.usareyoucreditwise.comborderlessprepaid.combranchportal.com
idservice.incinclusivegrowthscore.com
findacard.com
mastercad.commastercard-email.commastercardacademy.commastercardadvisors.commastercardcenter.com!multicurrencycashpassport.com*&mastercardcenterforinclusivegrowth.orgmastercardconnect.commastercardezsavings.commastercardidtheftalerts.commastercardrestaurant.commastercardservices.commastercardworldwide.commasterpassteststore.commasterintelligence.commcpeaceofmind.commyaccountglobalcash.commycardbenefits.comonedinesfree.compaypass.netpieceofplastic.compredictivetechnologies.com pricelessmarketingengine.comsbitravelcard.comshoppercentre.com!smartcommunitiescoalition.com!smartcommunitiescoalition.org
startpath.comtaptotokyo.comtasteofpremium.jptravelcontroller.comwwwpaypass.combecomeindex.comcashpassport.ca!mastercardbusinessnetwork.comcashpassport.commastercardbiz.comcashpassport.netcorporatecashpassport.commastercardbiz.cashinhangmc.commastercard.com.veintercamcashpassport.com.mxicashpassport.com.mxcashpassport.com.brcashpassport.co.za
+nab.com.aunabtravellercard.com.aumastercard.com.vnmastercard.com.twmastercard.com.trmastercard.com.sgmastercard.com.samastercard.com.phmastercard.com.pemastercard.com.ngmastercard.com.mymastercard.com.mxmastercard.com.lbmastercard.com.kwmastercard.com.hkmastercard.com.gtmastercard.com.gemastercard.com.egmastercard.com.cymastercard.com.comastercard.com.bzmastercard.com.brmastercard.com.bhmastercard.com.aumastercard.com.armastercard.co.zamastercard.co.vemastercard.co.uktravelex.co.intravelex.co.jptravelex.co.nztravelex.co.ukmastercard.co.thtravelex.com.autravelex.com.hktravelex.com.mytravelex.com.omtravelex.com.trmastercard.co.nzmastercard.co.krmastercard.co.kemastercard.co.jpmastercard.co.inmastercard.co.ilmastercard.co.idbidvestbank.co.zaworldcurrencycard.co.za
mastercard.cn
+cnmastercard.com.cn
+cnpriceless.com.cn
+cnpricelessbeijing.cn
+cn#pricelessbeijing.com.cn
+cntravelex.com.cn
+cn
+B
+VIVOvivo.comvivo.com.cnvivoglobal.com
+!cn
+
+XDTYxdty.org
+5
+V2RAY
v2ray.com
+v2ray.cool
v2fly.org
+
+VKmvk.comuserapi.com
vk-cdn.me
+vk-cdn.net
vk-portal.net vk.cc
+vk.com
vk.designvk.link vk.me vk.ruvkcache.comvkgo.app
+vklive.appvkmessenger.comvkmessenger.appvkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.net
+Q
+ CHINANEWS
chinanews.comecns.cnchinanews.com.cn
+cns.com.cn
+
+HSBChsbchsbc.comhsbc.nethsbcinnovationbanking.comhsbcnet.comhsbcprivatebank.comhsbc.aehsbc.amhsbc.bmhsbctrinkaus.dehsbc.frhsbc.cahsbc.lkhsbc-zertifikate.dehsbc-transactionservices.dehsbc-alternatives.dehsbc.ukhsbc.dehsbc.com.eghsbc.com.uyhsbc.com.bhhsbc.com.brhsbc.com.auhsbc.com.hkhsbc.com.mohsbc.com.mthsbc.com.mxhsbc.com.myhsbcamanah.com.myhsbc.com.phhsbc.com.sghsbc.com.trhsbc.com.twhsbc.com.bdhsbc.com.vnhsbc.com.ar
+hsbc.co.uk
+hsbc.co.th
+hsbc.co.nz
+hsbc.co.mu
+hsbc.co.kr
+hsbc.co.jp
+hsbc.co.in
+hsbc.co.idhsbc.com.cn
hsbcqh.com.cnhsbcinsurance.com.cn
+
+RAZER
razer.comrazerofficial.comrazersupport.comrazerzone.jprespawnbyrazer.comrazerapi.com
+cnrazersynapse.com
+cn
razerzone.com
+cn
+
+CATEGORY-TECH-IR
abrha.netafranet.comarvancloud.com
arvancloud.irarzex.ioasiatech.ir
cafebazaar.ircafebazaar.orgdatisnetwork.comdownload.ir
downloadly.irhiweb.iripnumberia.comirancell.iriranserver.com
+mci.irmihanwebhost.commobinnet.irmyket.irneshanmap.irp30download.comp30download.irparsonline.comparspack.compicofile.com
pishgaman.net
+rightel.irsarmayex.comsarzamindownload.com
shatel.irskyroom.onlinesmshooshmand.com
soft98.ir
softgozar.com
sotoon.ir
taliya.ir
+tci.iruplod.ir
+uupload.ir
yasdl.com
+zhaket.com
zoomit.ir
+
+LINOTYPElinotype.com
+*
+RUTENrimg.com.twruten.com.tw
+
+ONEDRIVEonedriveonedriveupdatersharepoint.comonedrive.com1drv.comsharepointonline.comlivefilestore.com
sharepoint.cnonedrive.live.comphotos.live.comspoprod-a.akamaihd.netstorage.live.comstorage.msn.comoneclient.sfx.msskydrive.wns.windows.com1drv
+onedrive
+skydrive
+
+ TECHTIMES
techtimes.com
+
+BILIINTLbstarstatic.combilibili.tvbiliintl.com($upos-bstar1-mirrorakam.akamaized.netapm-misaka.biliapi.netp-bstarstatic.akamaized.net'#upos-bstar-mirrorakam.akamaized.net)%upos-sz-mirrorcosbstar1.bilivideo.com)%upos-sz-mirroralibstar1.bilivideo.comapp.global.bilibili.comapi.global.bilibili.com
+
+CTRIPc-ctrip.comcolinker.comctrip.cn
ctrip.comctripbiz.com
ctripteam.com
doticloud.comeasytrip.comhhtravel.com
izuchebao.com
lvtds.com
shuntu.cn
+skysea.com
suanya.cn
+suanya.com
+tieyou.com
+toptown.cntoursbms.com
+vipdlt.comctrip.co.id
+!cnctrip.co.kr
+!cnctrip.co.th
+!cnctrip.com.hk
+!cnctrip.my
+!cnctrip.sg
+!cnctripbuy.hk
+!cnhhtravel.com.tw
+!cntrip.com
+!cntripcdn.com
+!cn
+.
+KUAIKANkkmh.comkuaikanmanhua.com
+-
+BAIDU baidu
+91.com
+aipage.comantpcdn.comapollo.autobaidu.cn
baidu.combaiduapp.combaidubce.combaiducontent.combaidupcs.combaidustatic.com
+baifae.combaifubao.com
+bcebos.combdcloudapi.com
bdimg.combdstatic.combdtjrcv.com
bdydns.cn
+bdydns.com
+bdydns.netchuanke.com
dlnel.com
dlnel.org
+duapps.com
+dwz.cn
+hao123.com
hao123img.com
+hao222.com
+haokan.comjomocdn.netjomodns.com
+mipcdn.com
nuomi.comquyaoya.com
+shifen.comsmartapps.cn
tieba.comtiebaimg.comxianfae.comxiaodutv.comduxiaoman-int.com
duxiaoman.comduxiaomanfintech.comduxiaomantech.comdxm-cdn.comdxm-int.com
+dxmlcf.comdxmlcfintech.com
+dxmpay.com
dxmstatic.com
+dxmyqh.com
+paydxm.comzuoyebang.cc
zuoyebang.com
+zybang.combaidu.com.cna.baidu.com
+ads
ad.duapps.com
+ads ad.player.baidu.com
+ads
adm.baidu.com
+adsadscdn.baidu.com
+adsadx.xiaodutv.com
+adsae.bdstatic.com
+ads
afd.baidu.com
+ads
als.baidu.com
+ads&api.mobula.sdk.duapps.com
+ads"api.tuisong.baidu.com
+adsappc.baidu.com
+adsb.bdstatic.com
+adsbaichuan.baidu.com
+adsbaidustatic.com
+adsbaidutv.baidu.com
+adsbanlv.baidu.com
+ads
bar.baidu.com
+adsbdplus.baidu.com
+adsbtlaunch.baidu.com
+adsc.baidu.com
+adscb.baidu.com
+adscbjs.baidu.com
+adscjhq.baidu.com
+adscleaner.baidu.com
+ads click.bes.baidu.com
+adsclick.qianqian.com
+adscm.baidu.com
+ads
cpro.baidu.cn
+adscpro.baidu.com
+ads!cpro.baidustatic.com
+ads!cpro.tieba.baidu.com
+ads"cpro.zhidao.baidu.com
+adscpro2.baidu.com
+ads"cpro2.baidustatic.com
+ads
cpu.baidu.com
+ads
crs.baidu.com
+adscstm.baidu.com
+adsdatax.baidu.com
+ads dd713.bj.bcebos.com
+ads dl.client.baidu.com
+adsdl.ops.baidu.com
+adsdl1sw.baidu.com
+adsdl2.bav.baidu.com
+adsdlsw.baidu.com
+adsdlsw.br.baidu.com
+adsdlswbr.baidu.com
+ads!dl-vip.bav.baidu.com
+ads(dl-vip.pcfaster.baidu.co.th
+ads#download.bav.baidu.com
+ads"download.sd.baidu.com
+adsdrmcmm.baidu.com
+adsduiwai.baidu.com
+ads dup.baidustatic.com
+ads
dxp.baidu.com
+ads
dzl.baidu.com
+adse.baidu.com
+adseclick.baidu.com
+adsecma.bdimg.com
+adsecmb.bdimg.com
+adsecmc.bdimg.com
+adseduad.baidu.com
+ads
eiv.baidu.com
+adsem.baidu.com
+adsentry.baidu.com
+ads
ers.baidu.com
+ads
f10.baidu.com
+ads#fc-feed.cdn.bcebos.com
+adsfclick.baidu.com
+adsfclog.baidu.com
+adsfeed.baidu.com
+adsg.baidu.com
+adsgimg.baidu.com
+adsgoutong.baidu.com
+adsgsp1.baidu.com
+adsguanjia.baidu.com
+ads"hao123union.baidu.com
+adshc.baidu.com
+adshm.baidu.com
+adshmma.baidu.com
+ads
hpd.baidu.com
+adsidm.bce.baidu.com
+adsidm-su.baidu.com
+adsiebar.baidu.com
+adsikcode.baidu.com
+adsimg.taotaosou.cn
+adsimg01.taotaosou.cn
+adsimgstat.baidu.com
+adsiwanad.baidu.com
+adsj.br.baidu.com
+adskstj.baidu.com
+ads log.music.baidu.com
+adslxbjs.baidu.com
+adsm1.baidu.com
+adsma.baidu.com
+adsmiao.baidu.com
+adsmobads.baidu.com
+ads"mobads-logs.baidu.com
+adsmpro.baidu.com
+adsmsite.baidu.com
+adsneirong.baidu.com
+adsnsclick.baidu.com
+ads#nsclickvideo.baidu.com
+adsopenrcv.baidu.com
+ads$pc.videoclick.baidu.com
+ads
pos.baidu.com
+adspups.bdimg.com
+ads%push.zhanzhang.baidu.com
+ads qianclick.baidu.com
+adsrelease.baidu.com
+adsres.mi.baidu.com
+ads"rigel.baidustatic.com
+ads#river.zhidao.baidu.com
+adsrj.baidu.com
+adsrplog.baidu.com
+adss.baidu.com
+ads!sa.tuisong.baidu.com
+adssclick.baidu.com
+adssestat.baidu.com
+adsshadu.baidu.com
+adsshare.baidu.com
+adssobar.baidu.com
+adssobartop.baidu.com
+adsspcode.baidu.com
+adsstat.v.baidu.com
+adssu.bdimg.com
+adssu.bdstatic.com
+adstk.baidu.com
+adstkweb.baidu.com
+ads"tob-cms.bj.bcebos.com
+adstongji.baidu.com
+adstoolbar.baidu.com
+adstracker.baidu.com
+adstuijian.baidu.com
+ads*uat1.bfsspadserver.8le8le.com
+ads#ubmcmm.baidustatic.com
+adsucstat.baidu.com
+adsulic.baidu.com
+ads ulog.imap.baidu.com
+adsunion.baidu.com
+ads!unionimage.baidu.com
+adsutility.baidu.com
+ads
utk.baidu.com
+ads videopush.baidu.com
+adsvv84.bj.bcebos.com
+adsw.gdown.baidu.com
+ads
w.x.baidu.com
+adswangmeng.baidu.com
+adsweishi.baidu.com
+ads$wenku-cms.bj.bcebos.com
+ads%wisepush.video.baidu.com
+adswkctj.baidu.com
+adswm.baidu.com
+adsznsv.baidu.com
+adszz.bdstatic.com
+adszzy1.quyaoya.com
+ads
+/
+
+THEINITIUMtheinitium.com
init.shop
+:
+TOKYO-SPORTStospo-keiba.jptokyo-sports.co.jp
+
+PCHOMEecapi-pchome.cdn.hinet.netpchomeonline.com.twecimg.twpchomeec.tw
pcloud.tw
pchome.com.twpchomeonline.com.twpchomepay.com.twpcstore.com.twpiapp.com.tw
rakuya.com.twtagapie.com.twtoget.com.tw
+
+AMPamp.akamaized.netamp.devampproject.comampproject.netampproject.orgcdn.ampproject.org
+cn
+
+ANIME
9anime.cz
9anime.id
9anime.to
9anime.ws
+age.tv
agedm.orgagedm.tvagefans.com
+agemys.org
agedm.appanimedao-tv.comcrunchyroll.comfunimation.com
+vrv.cogogoanime.vcgogoanime.wiki
gogoanime3.co
gogotaku.info
gogo-load.comgogocdn.net
+hidive.com
+
+PBSpbs.org
+
+MUDVODbiggggg.com
mudvod.tvnbys.tvnbys1.tvnbyy.tvnewpppp.comnivod.tv
nivodi.tv
+nivodz.com
+vod360.net
+
+SINA
sinajs.cnsina.cn
+sinajs.comsina.com
97973.comsina.netsinaapp.comsinaedge.comt.cnsinaimg.comxhaiwai.com
+picself.cn
+sinaimg.cnvideoself.cn
wbimg.comwbimg.cnwcdn.cnweibo.cn
weibo.comweibocdn.comweibo.com.cnsina.com.cn2016.sina.cn
+adsad.sina.com.cn
+adsadbox.sina.com.cn
+ads!adimages.sina.com.hk
+ads!adimg.mobile.sina.cn
+ads adimg.uve.weibo.com
+ads!adm.leju.sina.com.cn
+adsads.sina.com
+adsalitui.weibo.com
+adsapi.apps.sina.cn
+ads appgift.sinaapp.com
+ads#appsupdate.sinaapp.com
+adsatm.sina.com
+adsbeacon.sina.com.cn
+ads
biz.weibo.com
+ads%click.uve.mobile.sina.cn
+ads click.uve.weibo.com
+ads0#contentrecommend-out.mobile.sina.cn
+ads$count.video.sina.com.cn
+ads counter.sina.com.cn
+adscre.dp.sina.cn
+adscre-dp.sina.cn
+adsd00.sina.com.cn
+adsdcads.sina.com.cn
+adsdl.kjava.sina.cn
+adsdmp.sina.cn
+adsdp.im.weibo.cn
+ads
game.weibo.cn
+adsgame.weibo.com
+ads"gw5.push.mcp.weibo.cn
+ads"gw6.push.mcp.weibo.cn
+ads"int.dpool.sina.com.cn
+ads%interest.mix.sina.com.cn
+ads log.mix.sina.com.cn
+adslog.sina.cn
+ads!mg.games.sina.com.cn
+adsnewspush.sinajs.cn
+ads oascentral.sina.com
+ads#oascentral.sina.com.hk
+adsp4p.sina.com.cn
+adspalmnews.sina.cn
+adspay.mobile.sina.cn
+adspfp.sina.com.cn
+adspfpip.sina.com
+ads!promote.biz.weibo.cn
+adsrm.sina.com.cn
+adsrs.sinajs.cn
+ads"s.img.mix.sina.com.cn
+adssapi.sina.cn
+adssax.sina.cn
+adssax.sina.com.cn
+adssaxn.sina.com.cn
+adssaxs.sina.com.cn
+ads sbeacon.sina.com.cn
+ads"sdkapp.mobile.sina.cn
+ads!sdkapp.uve.weibo.com
+ads$sdkclick.mobile.sina.cn
+adsslog.sina.cn
+adsslog.sina.com.cn
+ads'staticadm.leju.sina.com.cn
+adstjs.sjs.sinajs.cn
+ads"trends.mobile.sina.cn
+ads"u1.img.mobile.sina.cn
+ads&wapwbclick.mobile.sina.cn
+ads!wbapp.mobile.sina.cn
+ads wbapp.uve.weibo.com
+ads#wbclick.mobile.sina.cn
+ads$wbpctips.mobile.sina.cn
+adswidget.weibo.com
+ads woocall.sina.com.cn
+adszymo.mps.weibo.com
+ads
+.
+SXLmysxl.cn
+sxl.cn
sxlcdn.cn
+
+CHINATELECOM
+189.cnchinatelecom-h.com
+chntel.comchinatelecom.com.cn#chinatelecomglobal.com
+!cnchinatelecomhk.com
+!cn
+ctexcel.ca
+!cnctexcel.com
+!cnctexcel.com.hk
+!cn
+ctexcel.fr
+!cn
+ctexcel.us
+!cn
+T
+FACEBOOK-ADS#analytics.facebook.com
+adspixel.facebook.com
+ads
+u
+FEDORA
getfedora.orgfedoraforum.orgfedorapeople.orgfedoraproject.orgfedoramagazine.org
+j
+PLAYSTATIONplaystationplaystation.complaystation.net sonyentertainmentnetwork.com
+*
+
+QINGTINGFMqingting.fmqtfm.cn
+8
+TERMUX
+termux.com
+termux.dev
+termux.org
+
+
CATEGORY-PORN anime-rule34-world.b-cdn.netwidgets.stripst.com-)misa-prod.s3.ap-northeast-1.amazonaws.com adultpornmengnan.shopcamdolls.com0cgdklr5sfwj.com0plkijj.vip0xxx.ws100bucksbabes.com101boyvideos.com101tubeporn.com
+101xxx.xyz
10bet.com10c10qoo.one10musume.com110xnxx.com1111mod-tube.buzz1111mode.xyz1111modpo.info
114av.xyz
+119474.xyz
11jav.com
123bin.cc
+123sex.top123videos.tv
+126728.net
+128100.xyz13mei13.top
+140033.xyz
+141-hk.com141hongkong.com
+141jav.com
141jj.com159i.com
+161sex.com16885858.com16fhgdty.xyz16honeys.com170.icu
171xx.com177picyy.com
179na.com17lu.xyz17mimei.club17mimei.com17supxxx.com18-teen-porn.com18-teen-xxx.com188channel.com18acg.us18av.pro
18avx.com18commic.com18doujin.com18doujinshi.xyz18exgfs.com
18fby.com
+18h.tv18hmanga.click18hmanga.com18insta.com
+18j.tv
18jms.com18novel.xyz18porncomic.com
+18porno.tv
+18push.com18qt.com
18sex.org
+18tube.xxx
18ww.life
+18yiren.tv191porn.com
+1992qq.xyz1bigclub.com1bokeponline.top1classtube.com
+1jjdg2.vip
1pondo.tv
1pornlist.com1watchmygf.com1xbet.cm
2019baidu.xyz21heise360dh.cctruyen-hentai.ru
21hub.com21naturals.com21vv.cc2371tom.com
+24hjav.com
+24porn.com
+24porn.pro265sdwe3.com
+2789av.com27mmwmmw.top2adultflashgames.com2beeg.me
2bit8.com
+2ch.hk
2chav.com
2dgen.com2gayboys.com30plusgirls.com32bm.cc35s4.com365buymy.com
+36717.info
+3789av.com39group.info3animalsextube.com
3arabporn.com
3d-comics.com3d-toon.com
+3d-xxx.com3dadultgames.net3danimeworld.com3devilattack.net3dfuckhouse.com3dhentai.tv
3dhentaix.com3dsexgames.biz3dsexmovies.biz
3dsexplay.xyz3dsexvilla.com
+3dsexy.net3go.fun3hentai.net
3movs.com
3movs.xyz
+3naked.com
3pornhere.com3pornstarmovies.com3xplanet.com3xplanet.net3xplanetimg.com3xxx.pro40momporntube.com41maonn.com
+444.coffee
+445gei.com
+445jun.com
+445nan.com4550.fun
4club.com4ertik.live
+4ertik.one4greedy.com
+4hu.tv
+4kporn.xxx4ksex.me4kup.net4pig.com
4porn.com
+4porn4.com
4tube.com
4tubefree.net4u4c.com
500caocao.com50dh.app
51cg1.com
51dh.site51luoli.info51mh.app51pincha.cc520aa.tv520avtv.com5278.cc52av.be52av.com52av.one52fuliji.cc
+52hyse.com
531tr.com
+55dndn.com
567321.online
568xe.com
+58avgo.com592r.com
+59mvmv.com5fang.cc
+5mb48g.com5mo.fun5q5zu9f1.me6-ar.com61jxbs42.xyz62fh1bnj.me
+634.tv
+66wwmm.com67maoab.com69-sexgames.com69av.one
69bag.xyz69dys.pw69femdom.com
69flv.com69games.xxx69gayporno.com69hongdq6.buzz69hongdq7.buzz
+69loli.com69luolie.com69re.net69story.com
69tubesex.com69vj.com69xporn.com69xx.one69xx560.xyz
+6arabs.com6e8xr2gk.me6japaneseporn.com6kea.com6mature9.com
6neek.com6sextube.com
+6twseb.com6xxxvideos.com720video.tv
721av.com
748av.com
+75m.co7719.me777xporn.com77maott.com
+7mm.tv7mmtv.sx7mmtv.tv
+7tb.cc
8111y.top81jia.tv81tower.com
+82mvmv.com
+85tube.com
+8664av.com
+88gals.com
88kkn.com88manhua.top88square.com
+89.com
8kcosplay.com8kpornvids.com
+8muses.com
8muses.io
+8muses.xxx8teenxxx.com8thstreetlatinas.com8xxx.net90seconds.asia91avfuli.com
91beiyong.com91cy.app
91dy.club
+91fans.org91gay.me91jinman.com91md.me
91moxiong.com91oo.xyz91pornplus.com
91porny.store91qk41rf.com91quanji.com91rb.com91rb.net91se.fun91sesex.xyz
91sew.xyz91sew40.buzz91vhome.com920share.com
921bb.com
922tp.com
92hm.life92hm.top941tube.com
+9527.rocks9550.fun978.life97dounai.top
99quse.cc99re.com99thz.cc
99thz.com
9cao9.com
+9hentai.ru
+9hentai.to9hentaiz.com9k6v4y.cyou
9tak-nav.buzz9xav.cc
+9xlove.xyz
+9zipai.neta-hentai.tva-teenz.coma1av.xyz
+aa77kk.com
+aaapp.cyouaabb1802.comaabb1803.com
aadmv.comaalah.meaavs.xyzabbywintersfree.comabclider.comabellalist.comabgsp1.buzzabigass.comaboutporno.netabsoluporn.comabsolutewhores.comtruyen-hentai.frtruyen-hentai.com
sb-cd.com
acces-vod.comacgnmanhua.com
+acgww.cyouacjj.netad69.comadanaatikhaber.com
adbkm.com
adorevids.com
adporn.ccadpornu.xyzspankbang.partyadult-h.comadult-home-videos.comadult-list.comadult-sex-games.comadult-web-site.net
spankbang.commushroomtrack.comadult3dcomics.comadult3dfantasycomics.comadult3dporno.comadult3dtoons.comjable.tvcdnlab.liveadultartsites.comadultbay.orgadultblogranking.comadultblogtoplist.comadultcamslover.comadultclinic.jpadultdeepfakes.comadultdvdmarketplace.comadultdvdtalk.comadultempire.com
adultepic.comadulterfree.comadulters.orgcosfans-tw.comadultfilmdatabase.comadultfreex.comadultfriendfinder.comadultgamereviews.comadultgames.games
adultgames.meadultgames18.comadultgamesapk.comadultgamescollector.comadultgameson.comadultgamesportal.comadultgamestop.comadultgamingroom.com
adultgeek.netadulti01.comadultinfojpn.comadultism.comadultlister.comadultmagazinespdf.com
+adulto.vipadultpornvideos.netadultrental.comadultsexgame.bizadultsexgames.bizadultsextoys.com
adulttime.comadulttoontube.comadultvideodump.comadultvideotop.comadultvirtualworlds.netaebn.comafappyending.comaffect3dstore.com
+afkv28.com
aflamporn.comaflamsex.netaflamsexhd.comafriboyz.comagag.tw
agzy1.com
ah-me.comahcathyxxx.com
ahegao.online
ahentaitv.com
ahlxs-me.buzzahlxsdh.sbsahorsecock.comahpornogratuit.comahpornotube.comahsexfilme.comahswingerporno.com
+ahtops.comahtranny.comahvideosexe.com
+ahxxx.clubai7995.siteai91porn.ccaimei133.comaipa553.comairav.cc
+airav.wikiairsextube.com
aisejushi.com
aiwucm-us.sbsaixingge2.cc
+aizyk.buzz
aizyk.xyz
ajsjx.comakiba-online.comakthelp.comalbagals.com
albastudio.co
alhs.linkalhs.xyzall-sex-links.comall3dsexpics.comalldrawingshere.com
+allfet.netallfinegirls.com
allhen.onlineallhorsesex.comalliancesages.comallinternal.comalljapanesepass.com
allmomsex.com
allover30.comallpasswords.comallporncomic.comallpornsites.netallpornsitespass.comallspyclips.comallswingersclubs.orgallthefallen.moe
alohatube.comalotporn.comalphaporno.comalt.comaltporn.netamabitch.comamakings.comamandalist.com
+amanmi.comamapornofilme.comamateur-cougar.comamateur-exhibitionist.orgamateur-fetish.comamateur-gallery-post.comamateur-home-sex.comamateur-porn-clips.comamateur-porn-tube.netamateur-pussies.comamateur-threesomes.comamateuralbum.netamateuranalporn.comamateuranalvideos.comamateurarchiver.comamateurbdsmporn.comamateurblondegirls.comamateurblowjobporn.comamateurcool.comamateurcuckoldporn.comamateure-xtreme.comamateurest.comamateurgalore.netamateurgirlfriends.netamateurhomevids.comamateurhousewifefuck.comamateurmommymovies.comamateuroldsluts.comamateurpages.comamateurporn.photosamateurpornhouse.comamateurpornonly.comamateurpornsexvideos.comamateurs-fuck.comamateurs-gone-wild.comamateursecrets.netamateursexpussy.comamateursexstart.nlamateurslovesporn.comamateursvid.comamateurswingersmovies.comamateurthreesomeporn.comamateurwifefuck.comamateurwifetits.comamateurwifevideos.comamateurwivesvideos.com
amateurxx.orgamatorialesesso.comamatporn.comamatura.comamazingcuckold.comamodoll.comamourangels.comamsterdamhotescort.comamsterdamluxescort.comanacams.com
+anal-f.netanal-pantyhose.com
anal.casa
+anal.mediaanalamateursex.comanalcamshow.comanaldin.comanalfuckvideo.comanalhomeporn.comanallivecams.comanalpornhouse.comanalpornonly.comanalpornosex.comanalsaga.comanalscreen.comanaltime.organalvids.comancensored.comandygod.com
angel-gto.comangelweb.jpanibooru.com
+anilos.comanimal-hentai.comanimal-porn.netanimalforsex.comanimalincum.com
animalporn.meanimalpornxxx.meanimalsporn.netanimalsporn.tvanimalzoosex.meanime-pictures.net
anime-tube.pwanimegal.netanimehentaihub.comanimeidhentai.comanimepornhd.comanimesex.meanimesexhq.comanimestigma.comanimezilla.comanistreaming.xyzannamilk.comannualpelvicexam.comaga-expo.comantarvasnaclips.comantarvasnax.com
anudetube.comanybunny.organybunny.tv
anyhentai.comanyporn.com
anypornhd.comanypornsexxx.com
+anysex.comanyshemale.com
anyxxx.me
+anyxxx.pro
fansta.me
+aoxx69.net
apina.bizapornotube.netaporntv.comapornvideo.com
+app756.com
appyq.com
+dmmrex.com
aqdlt.netarabianchicks.comarabnek.com
+arabxn.comarabxnxx.org
arabysexy.comarabysexy.mobiarcadewank.com
+archivx.to
area51.to
+armovs.comartnudegalleries.comartoferotica.infoarzon.jpasexdoll.comasextube.netashemaletube.comashemaletv.com
asiacrazy.xyzasiamoviepass.comasian-anal-sex.comasianboygay.comasiancamgirllive.comasiancamly.comasianfreeporn.netasiangfvideos.comasiangirlsnextdoor.comasianphd.comasianporn.restasianporn.sexyasianpornjav.comasianpornlabs.comasianpornmovies.comasianpornonly.comasianporntrends.comasianscreens.com
asiansex.sexyasiansexdiary.comasiansmaster.comasianthumbs.orgasianwifeporn.comasianxxxvideos.ccasknudes.com
asmhentai.comasmr.gay
asmrbuluo.comasredas.comass4all.comassesphoto.comassistirhentai.comassoass.comassylum.comatkgallery.com
attackers.net
atube.sex
atube.xxx
+atubex.com
auntymaza.comav-baron.comav-channel.comav-movie.cc
av-th.net
+av-top.comav01.tvav11.org
av1688.cc
av369.net
+av4.usav69.tvav69.usav6k.comav6k.vip
+avbebe.com
avcar.vip
+avcens.xyz
avcnn.com
avcrempie.comavday.tv
avdby-up.buzz
+avdudu.topavdwang.xyz
+avelip.comaventertainments.comavfox.cc
+avgigi.com
avgle.com
avgle.net
+avgod.club
avhbo.comavhd101.com
+avhome.oneavhu.com
+avinin.comavizoon.siteavizoone.comavjb.comavjiasu.comavjoy.meavjzy67.xyzavking-mp4.sbs
avlulu.ccavn.comavnana5.comavnight-shipin.com
+avpanda.ccavple.tv
avrila.cc
+avrila2.ccavrila2023.topavrila23.cc
+avriri.top
+avsee01.tvavseesee.com
avstar.me
+avwong.com
avwto.com
avxxc.comawflapp.topawjq.cc
+awwcn.buzz
awwcn.xyzfuhouse.club
ayshdade.infoayshdee.xyz
+aziani.com
+aznude.com
b-eroland.net
+b3boos.com
b6b33.combabecentrum.combabeimpact.com
babepedia.combabes34.combabes34.probabesandbitches.netbabesandgirls.combabesandstars.combabesaround.com
babesbang.combabesinporn.combabesmachine.combabesnetwork.combabesofindia.combabesource.com
babestube.combabosas.com
babushky.clubbabycondom.comboyloves.ccbabypink.tobackdoorlesbians.combackroomcastingcouch.com
bacon.combacsitinhyeu.vnbadasianpussy.combadjojo.com
badoinkvr.combadsexygirl.combadteenspunished.com
badvirtue.combaeb.com
bai29.xyzballbustingtube.combamtoki.combanan.tvbanatfun.combang-movies.combangbros.combangbrosnetwork.combangher.netbangkokstreetwhores.combangyourwife.combaraero.combarelist.com
bareporno.combarfuck.combarium-enema.com
barss1207.probatsa.mebattleforcecomix.combb33.netbbbaihu.vipbbc-anal.combbcpornonly.com
bbqm1.xyz
bbw-yoyo.buzzbbwmilftube.combbwyoyo.info
bcy01.combdsm-mov.netbdsm.com
bdsmboard.orgbdsmbunker.combdsmcafe.com
bdsmhd.ccbdsmland.orgbdsmlibrary.com
+bdsmlr.combdsmpornonly.combdsmsexgame.combdsmstreak.combdsmtubexxx.com
bdsmtv.ccbeastiegals.combeastysexlinks.combeastythumbs.combeautifulandbusty.combeautyescortsamsterdam.combedstegratisporno.combeeg.com
beeg.restbeegfree.com
beejp.net
+befuck.com
+befuck.netbeiyongzhan1.com
bejav.netbekijkporno.nlbelamionline.combellebound.com
+bellesa.co
bellotube.com
benaughty.funbengalisexvideos.comberlincompanions.combest-sex-games.combestcamsites.netbesterpornos.combestescortgirls.nlbestfreecams.clubbestfreesexgames.combestfreetube.netbestfreetube.xxxbestgames-2022.combesthandjobporn.combesthentaitube.combestiality.gurubestialitysextaboo.combestialitytaboo.tvbestialityvideo.usbestjapanesepornsites.combestjavporn.combestjavporn.net
bestkinky.combestlistofporn.combestporn.subestpornclip.combestporncomix.combestporngames.combestpornsites.eubestpornsites.guidebestporntube.mebestpremiumpornsite.combestsexcam.combesttitstube.combestxxxsites.combesuty99.combetterhdporn.combetween-legs.combeurettesvideo.com
+bffshd.com
bhggn.xyz
+bhzyk.buzz
+bhzyw2.top
+biaoqs.xyzbiaoqs1.xyzbiaoqs2.xyzbidong25.combidong9.com
bigassporn.tvbigblackdicklover.combigboobsalert.combigboobsandhotsex.combigboobsonline.orgbigboobswives.com
bigboss.video
bigcocker.combigdick.combigdickorgasm.combigindiansex.mobibigporn.com
bigsex.tvbigtitsextapes.combigtitsgallery.netbigtitsmodelsdirectory.combigtitsthreesomes.combigtopsites.com
biguz.net
bijukujo.club
+bimbim.com
bimbolive.combioporno.com
biqle.orgbiqle.ruboylove1.ccbitchesgirls.combitchmomporn.combitporno.combizarresexuality.combjini.ccbkkdown.siteblackamateurfuck.comblackamateursvideos.comblacked.comblackhomeporn.comblackmonsterterror.comblackshemalevideo.comblacksonblondes.comblacktowhite.net
+blaoshi.ccboylove.livebloggrowup.comblogterest.net
blowjobit.comblowjobqueens.netbluffyporn.com
+blylq.buzz
bobs-tube.com
bobvoyeur.combocici.buzzbodgirls.combodyfluids-jav.com
bokep.net
bokepseks.org
bokepvidz.combondagecomixxx.netbondagesex-xxx.com
bongacams.com
+bonyu.cyouboobieblog.com
boobpedia.comboobsrealm.comboodigo.com
boodigogo.com
+book18.orgbookmark.xxx
+booloo.comboomba.club
booru.orgbootysource.comboqimod.comboqitube.cc
+borwap.comboshancy.com
+boylove.cc
boulx.comboundhub.combountyhunterporn.com
box57.one
boy18tube.comboycall.comboyfriendtv.comboylabs.netboylove.comboypost.comboysfood.comboyspornpics.com
+boyvid.comboyztube.combrandporno.combrasilincesto.combrasiltudoliberado.combravoerotica.com
bravoporn.combravoteens.com
bravotube.netbravotube.tvbrazzers-porno.onlinebrazzers-xxx.netbrazzersporn.mobibrazzfan.combrdteengal.combreasthealthinfo.combreath-takers.combritsexcash.combrokenteens.com
bromo.combrourou.combrutalbdsmtube.combrutalfetish.combsxm1213.pro
bubbaporn.combuhidoh.netbukkake-jav.combululusexdoll.com
bunnylust.comburningcamel.combustymomsvideo.combustynudebabes.com
+buzzav.combwin.combygpp1207.worldbyjav.me
byjhd.com
c0930.com
+cableav.tvcableav.xyz
cai21.xyz
caime.xyzcallabitch.orgcam4.com
cam69.comcambaddies.com
cambb.xxx
cambro.tv
camcam.cc
+menhdv.comcameraboys.com
camfinder.com
+camfox.comcamgirlfinder.netcamgirlstemple.com
camgoddess.tv
camonster.com
camrabbit.comcams.comcamsoda.comcamsoda1.comcamstagestudio.comcamster.com
camstreams.tvcamsvids.tv
camvideos.orgcamvideos.tvcamvideoshub.comcamwhores-tv.comcamwhores.forumcamwhores.tvcamwhoresbay.comcamwhoreshd.com
camwhoria.comcandidforum-videos.comcandycumcity.comcandypleasure.comcaribbeancom.comcaribbeancompr.comcartoon-sex.tv
cartoon18.comcartoon3thumbs.comcartoonporn.comcartoonporno.xxxcartoonpornonly.comcartoonpornvideos.comcartoonregistry.comcartoonscity.comcartoonsexfantazy.comcartoontube.comcartoonville.netcashback69.comcashvideotube.comcastingcouch-x.comcatalinacruz.comcatmiimi.com
+cavhot.com
cbart.netcc18.bizcc18.tv
+cc18tv.comccav69.info
ccav69.meccav691api.comccavb.tv
celebforum.cocelebmasta.livecelebritygay.comcelebritynakeds.comcelebrityslips.comcelebritystorysite.comcelebsporno.comcelebsroulette.com
+cenkei.comjvid.com
+cerdas.com
ceskeporno.cz
cfake.comcfwives.comcharmescorts.comchatgptvideo.xyzchatgptvideob.buzzchatsex.xxxchatterbate.iochaturbate.comchengjuanseo.comchengrendouyin-app.comchengrenshipin-app.comcherry-tale.comcherryasia.comcherrynudes.com
cherrypai.comcherrypanpan.comcherrypimps.comcherrypornhd.comchianxv.buzzchickteases.com
chikiporn.com
jr24h.comchinchuqi-av.latchinese-porn-videos.comchinese-xnxx.comchinesespanking.comchinesexxxporn.netchipmong13g.buzz
chla3.com
+chocam.com
chuangb15.xyzchubbypornonly.com
+chuneo.xyzchunja19.netchuporno.comchutuno.fun
+chuzs2.xyzchwr7s8u.com
chyoa.comcindymovies.comcinepornogratis.comcitas-para-mayoresde50.eccitasecuador.comcity-hentai.comcityheaven.netcityoflove.comcitytourgirls.comciyuanjie.cc
+ckss98.comclaravenger.com
clasporno.orgclassymomsex.comjkforum.netclinical-videos.com
+clip16.comclipcake.com
cliphayho.comcliphunter.comclipsaoyai.comclipsbai.com
clipseksi.comclipsex.asia
clitgames.comcloudyzgirl.comclubseventeen.comclubsweethearts.com
clubtubes.com
clzz2.xyz
cnnamador.com
cnzjp.xyzcockofhorse.comcocksuckersguide.comcocktailsandcocktalk.com
cockyboys.comcoedcherry.comcoithienthai.comcoitustube.comcolegialasdeverdad.comcolegialasreales.com
+jkface.netcollection-3d.comcollectionofbestporn.comcollegepornonly.comcollegesexgames.comcolliderporn.comcolombianas.webcamcomdotgame.com
+come29.xyzcomicbox.xyzcomicscartoonporn.comcomicsporno.escomicunivers.comcomicuniverse.orgcomixzilla.com
conan.xxxcontactossexoecuador.comcool-comics.com
+cool18.comcoolinet.netcoolsexnew.comcopro.pw
coqnu.comcorbinfisher.comcosplay-jav.comcosplayeromania.jpcosplayporntube.comcosplayworld.netcougarsexmovies.comjkf.netcp44.net
+cpz.tocrabporn.comcrazy-amateurs.comcrazyav.xyz
crazybook.xyz
crazycloud.rucrazyfiction.xyzcrazylivecams.comcrazynovel.xyz
crazyshit.comcrazyxxx3dworld.comcrazyxxx3dworld.netcrazyxxx3dworld.orgcrazyxxxworld.com
creamasia.comcreamlemon.info
crocotube.comcrtsgfb1.topcruel-furies.comcrystalmiss.comcsakporno.hu
+cshive.comcuckfilmswifefuck.com
cuckold69.comcuckoldfuck.comcuckoldingwifey.comcuckoldinterracialporn.comcuckoldinterracialwife.comcuckoldplacetube.comcuckoldporntube.comcuckoldwifesex.comcuckoldwifesexxx.comcuckoldwifetube.comcuckporn.comcuckvideos.comcuckwatchingwife.comcuckwimp.com
+cuebic.bizcultoferotica.comcultura-kolomna.rucum4k.cccumasianporn.com
cumlouder.comcumshotlist.comcumswappingsis.comcumteenporn.comcunhua.picscuntempire.comcurvybbwwives.comcurvyerotic.com
+cwcams.comcy22.tvczechav.comczechbiporn.comczechcasting.comczechhunter.comczechlesbians.comczechmassage.comczechstreets.comczechvr.comczechwifeswap.comcztv117.shop
d-upp.comd2mrry2to5rg.com
+d2pass.comda3dsoul.devdaboja18.com
+dachix.comdaddyslilangel.comdafanhao-app.comdaft.sexdaftporn.comdaftsex-hd.comdaftsex.com
dagfs.comdailybasis.comdailyporn.clubdaindianporn.com
+damduc.orgdamplips.comdanskpornofilm.comdansmovies.comdaretoku-eromanga.infodarkcategories.com
darknaija.comdarknessporn.comdarknun.comdarksidemagazine.com
dasaob.onlinedastanhisexy.ccdatawav.clubdate2night.xyz
ddd-smart.net
+ddff66.com
+ddff77.comdeasians.com
dechamora.comdecorativemodels.com
+deeper.comdeepfake-porn.comdeepfakeporn.netdefinebabe.comdefinefetish.comderpibooru.orgdesihoes.com
desiporn.tubedesipornfilms.com
kemono.sudesiresecrets.comdetentiongirls.comdeutsch-sexfilme.com!deutsche-pornos-kostenlos.xxx deutschepornos-kostenlos.netdeutschsex.comdeviantclip.comdevilsfilm.comdexterhorn.comdezyred.com
dgaqp.com
dgwav.comdh44.lolkemono.partydiamantewebcam.comcoomer.partydiamondgirlstudio.com
dianapost.comcooer.su
dickeomas.comdickhardon.comdidilist.comdigital-anime.comdigitaldesire.comdinotube.comdirty.gamesdirtyasiantube.comdirtydoglinks.comdirtyfarmer.com
dirtyflix.comdirtyhomefuck.comdirtyleague.comdirtyonline.comdirtypornvids.com
dirtyscat.orgdirtyshack.com
dirtyship.comdiscountedporn.comdiscountporn.clubdisneyhentai.com
+zzycdz.comdiyarbakirescort.comdiyuser.buzz
djkav.mom
+dkcloud.cc
dkk37.comdlap001.xyzdlap301.comdldlinks.comdldshare.netdlsitenews.com
dnaav.com
dobbyporn.comdoctor-videos.comdodgersexcartoons.com
doeda.comdogcumshot.netdogfart.comdogfartnetwork.comdogmovie.netdogofcum.comdogspics.netdojin-dl.com
dojin.comdojindb.netdojinmanga.netdojinwatch.comdomywife.com
donkparty.com
donmai.usdonpornogratis.comdonsnaughtymodels.com
doodhwali.comdopaminegirl.comdoseofporn.comdotfreesex.comdoufurufabu.xyzdoujin-eromanga.comdoujin-freee.comdoujin-info.netdoujin-night.comwnoaissulli1.comdoujinfree.comdoujinland.infodoujinnomori.comdoujins.com
douyintt10.medouzinnsi-eromannga.comdownloadpass.comdragonhentai.netdrbdsmporn.com
drbizzaro.comdreamamateurs.comdreammovies.com
driverxxx.comdrivevideo.xyzdrkogyi.comnoisullifb.comdrtuber.com
+drunk6.comdrunkenstepfather.comdrunkentop.comdsex.to
+dswz88.xyzdualeotruyen1s.comdubai-escort-list.com
duckmovie.comdudethrill.comduga.jpdulceecuador.comdump.xxxdumpxxx.netduolaapian126.xyzduolaapian127.xyzduoweiweek.com
+dutrai.comdvdtrailertube.com
dx9527.ccdxyav.codyfl1.pw
+dykycl.com
e-cba.org
+e-goods.rue53w.come621.neteadultgames.com
eastbabes.comeasypic.comeasysexporn.comebalovo.com
ebenporno.comebonyinlove.comebonywebcamhub.comecchinohentai.ruechichimato.comecuatorianas.bestedengay.netedgemeplease.com
efukt.com
egotastic.com
+ehv.cceighteen-store18x.jpeilieili.ccekolojik.org
el-ladies.com
electbabe.comelephantlist.comelephanttube.comelephanttubenew.comelitebabes.comeliteindianporn.com
+elitvip.ruelog-ch.comelog-ch.netelpornoamateur.comlliusno.comempero-right.momempflix.comempornium.site"encuentroscasualesoecuador.comenema-porn.comenema-videos.comenemabasics.comenemaexperiences.comenemahistory.comenemainformation.comisheppc.comenemarotica.comenemas4fun.comenemasexfetish.com
enematube.comenf-cmnf.comenjoyasianporn.com
enjoyfuck.com
entensity.netepikporn.comeporner.com
erito.com
ero-anime.netero-comic-hunter.netero-kawa.comero-ma-nia.comero-manga-platinum.netero-mangalife.com
eroan.xyz
erocurves.comisgame365.ccillusnoi.comerodougazo.comerodoujinshi-world.comeroelog.com
eroero69.work
erofights.comerofullsets.net
+erofus.comerogames.comerogazo-jp.neterogazo-ngo.comerogazopple.comerogazou-pinkline.comerogazoufactory.com
erohentai.neteromanga-ace.comeromanga-cafe.comeromanga-kong.comeromanga-mainichi.comeromanga-school.comeromangajukujo.com
eromazofu.com
erome.comerome.iteropasture.comeropics.org
+eropics.toeroprofile.com
erosberry.comeroshiko.neterotelki.orgillusionze.com
eroterest.neterothots.coerotic-artsites.comerotic-hentai.comerotic-photos.neteroticart-top100.comeroticbeauties.neteroticbeautyhub.comerotichdworld.com
erotictube.me
erotikaweb.huerovizor.ru
+eroxia.comertk.net
escobarvip.itescort.guideescortamsterdam1.comescortdude.comescortgirls.beescortrankings.ukeskimotube.comesmatube.comesperanzagomez.orgesposasymaridos.com
illusiony.comestudiopenthouse.comillusionxz.comeurobabeindex.com02weqj32.comeuropornstar.comeurosexscene.comevaelfie.com
evemodels.comeveria.clubeverydayporn.co
evilangel.comevilx.suexgfvideos.xxxexgirlfriendmarket.comexiporn.com
exoav.comexotic-ghana.comexoticuganda.comexplicittube.comexploitedcollegegirls.comexploitedteensasia.comexplorespanking.comexporntoons.netexposedlatinas.comextraasian.comextraindiansex.comextrajapaneseporn.comextreme-board.comextremepornfilms.comexxxtra.netexxxtrasmall.comexxxtrasmall1.comeyny.comf5pf.com
f6988.com
+f95zone.to
faapy.comfabhairypussy.com
+fabuye.topfakehub.comfaketaxi.comfakings.com
fakku.net
faldgjalg.xyzfameregistry.com
family-sex.mefamily-simulator.iofamilypies.net
familyporn.tvfamilypornhd.comfamilysexsimulator.comfamilysimulator.comfamilysimulator.iofamilystrokes.comfamilyswap.xxxfamous-nudes.comfamousinternetgirls.com$ famousinternetgirlsgalleries.comfamousnudes.comfamouspornstars.comfanaken.com
+fanfox.netfangsung.comfanhaodian.com
fanhowab.buzzfank.rufanleakstoday.comfanqianglu.com
fans-here.com
+fans17.com
fansnudes.com
+fansone.cofansteek.comfantasiasguatemala.comfantasti.ccfap-xxx.com
fap18.net
+fap666.comfapality.com
+fapcat.comfapdude.comfapello.comfaperoni.com
fapforfun.net
faphdporn.comfaphouse.comfapmovz.comfapnado.com
fapomania.com
fapopedia.netfappcelebs.comfappeningbook.comfappeningthots.com
fappenist.comfapphub.com
+fapporn.mefaproulette.cofaproulette.online
fapsafari.comfapster.xxxfapteencam.com
+fapvid.comfareastpornhub.comfastindianporn.comfatstube.comfavelaporno.comfavepornmovs.comfavepornvids.comfavjapaneseporn.comfbiqiyiav.buzz
fbjav.comfbooktaiwan.com
fc2ppv.tvfcw.xxx
fcww0.com
feet9.com
+fei.rufeipang.linkfemalestars.comfemdomcc.net
+femjoy.comfemscat.comferronetwork.comfesery-com.sbsfestinhasbrasil.com
fetish-bb.comfetishbank.netfetishdreamz.comfetishes.camfetishfishcams.comfetishpapa.comfetishpornonly.comfetishshrine.comfetlife.comfffucked.comfgirl.chfi11.comfi11av1.comfi11tv1.comfictionmania.tvfilesmonster.vip
+filme2.xxxfilmeleporno.xxxfilmeporno.blogfilmeporno.xxxfilmesdesexo.blogillusionn5.comillusionn4.comfilmespornos.netfilmporno.itfilmsexeporno.comfiltercams.comfimfiction.netfindasians.livefindbare.com
findcams.livefindhername.netfindsav.com
findtubes.comfindvrporn.comfine-art-nude.orgfineartteens.comfinevids.xxxfirstanalvideos.comfirstgynexam.comfirstpelvicexam.com
fishmpegs.comfitnakedgirls.comfivestarpornsites.comfjlkajhgfa.top
fl310.comflagrasamadores.net
flaru.comflashtranny.com
+fldz8.buzzfleshbot.comfleshlyx.comflexsig.comfli8.xyzflipfap.comflirt4free.com
flirtmoms.comflirtyhoookup.com
fljmh.comfloppy-tits.com
+flyflv.comflyingjizz.comflyyindh-cc.sbs
+fm4.jpfmav.top
+fmav51.icu
follasian.comfootseen.comfootstockings.comforbiddenasian.comforbiddenmomsarchive.comforduck.cyouforhertube.com
forpojie.picsfotoscaserasx.com
+foxgay.com
foxhq.comfoxporns.com
mensheaven.jpfree-3d-porn.comfree-abbywinters.comfree-avx.jpfree-erobooks.comfree-strip-games.comfree-wap-tube.comfree-xxx-porn.org
+free00.com
+free18.net
free64all.comfreeadultcomix.comfreeadultgames.tvfreeanimalporn.netfreearabsexx.com
freeav.tvfreebdsmxxx.orgfreebigmovies.comfreecamsfan.comfreecartoons.bizfreechatnow.comfreegaypornhdtube.comfreegaysexgames.comfreehdinterracialporn.infreehdvideos.xxxfreehentaipic.comfreehentaistream.comfreehqtube.com
freejavbt.comfreejavporn.mobifreelifetimefuckbook.comfreematuresgallery.com
freeomovie.tofreeones.comfreeporn.comfreepornhdonlinegay.comfreepornhentaigames.comfreeporno.asiafreepornpreview.net
freepornq.comfreepornvideos.lifefreesexalbum.comfreesexgames.gamesfreesexgames.wsfreesexvideos2k.comfreesexyindians.comfreesexyindians.orgfreeuseporn.comfreexvideos.orgfreexxx.bestfreexxx.winfreexxxporn.orgfreeyouporn.mobifreieporno.comfreshporno.net
freshscat.comfreudbox.com
freyalist.comfritchy.com
frprn.comfruitycams.comftop.ru
ftopx.comftvgirls.comftvmilfs.comfu62.vipfuck-xxx-movies.comfuck.comfuck.sc
+fuck55.net
fuck6teen.comfuckableteens.netfuckbookecuador.comfuckcuck.com
fuckgames.xxxfuckingawesome.comfuckingfreemovies.comfuckingmatures.comfuckingthreesome.comfuckmatureporn.comfuckmaturepussy.comfuckmeplease.net
fuckmoral.comfuckmypakistanigf.comfucksexhub.comfuckteenvids.comfuckthathussy.comfucktube.com
+fuckup.xxxfuckvideos.biz
+fujossy.jp
fukzr1.ccfulanax.comfuli-wangzhan.com
fuli3.net
fulib711.shopfuliba2021.comfuliba2023.netillusionn3.comillusionn2.comfulldesisex.comfullfuli.com
fullhdxxx.comfullpornnetwork.comfullsexmovs.comfulltaboo.tvfullxxxmovies.netfunshemale.comfuq.com
fuqqt.comfuraffinity.netfurrypornvideos.com
+furuke.comfuskator.com
+fusker.xxxfutanarihq.comfuxporn.comfuzokudx.com
+fxporn.netfzdshare.netg-xxxhub.com
gaito.xyzgallery-dump.clubgalleryarchives.com
gamboporn.comgamcore.com
gamerotic.comgamesathletes.comgamesfuckgirls.comgamesofdesire.comgandhara.rugao1.cc
+gaofuwu.ccgaozs18.buzzgarotaporno.comgastrointestinalexam.comgate.ccgauleporno.xxx
gay.bingogay0day.comgay1069sex.comgay4tube.com
gayapatal.comgayasianamateurs.comgayasiantheater.comgaybeeg.info
gaybf.comgayboystube.com
gaybubble.comgaycamvideos.net
gaycock4u.comgayforit.eugayfuckporn.comgayfuror.comgayharem.com
gayheaven.orggaymaletube.comgaymenring.comgayonthenet.net
+gaypad.netgaypinoyporn.comgayporn.comgayporn.progaypornforyou.comgaypornhdfree.comgaypornlinks.comgaypornlove.netgaypornmenu.comgayporno.fmgaypornonly.comgaypornsky.comgayrawclub.comgayroom.com
illusionl.comgaysonic.eugaystarnews.comgaystream.pwgaythebest.comgaytopcams.comgaytube.com
gayvl.net
gazounabi.com
illusionh.com
+gcolle.netgdian-dh.momgdsrx888.comgeceguby.rugeilegratisporno.com
geileomas.comgeinoueroch.comgelbooru.comgelbooru.meillusiongw.comgeng8cn.xyz
gengba-av.mom
gengba.ccgenkai-hounyo.comgenshin-porn.comgenshinh.com
+getchu.comgetfappy.com
+getporn.tvgetsexgames.com
gfarchive.comgfleaks.com
+gfpics.com
gfpornbox.comgfpornmovies.comgfpornvideos.com
gfrevenge.com
+gfysex.com
+ggdiao.com
ggjav.com
ggpds.comghettotube.comgiantessbooru.comgifnuki.com
gigantits.comgigaporn.orggigaxvideos.com
+ginmoe.comgirl-secret.comgirl7942.comgirlfriendgalleries.netgirlfriendhomeporn.comgirlfriendvideos.comgirlfriendvids.netgirlfuckshorse.netgirlfur.com
girls.xyzgirls2see.chgirlscanner.ccgirlscv.comgirlsdelta.comgirlsfuck-tube.comgirlsheaven-job.netgirlsnudepic.comgirlsofdesire.orggirlsongirlstube.comgirlspoopingtube.comgirlssexxxx.comgirlstryanal.comgirlsway.comgirlswelustfor.comgirlsxxx.netgizmoxxx.comgladporn.comglam0ur.comglamourtits.comgloporn.comgloryholeswallow.comgnai-dh.sbsgnailapp.sbs
gnom-cham.comgnzi.xyz
gnzi1.topgo-gaytube.com
go141.com
go2av.comgockhuatviet.comgofucker.comgofuckmenow.comgohentai.netgold-gay.com
goldengate.hu
+goldgay.tvgoldjizz.comgoldsexvideos.comgoldteenporn.comgoldvip.cyougongkou-cc.sbsgonzo-movies.com
gonzo.comgood-gay.comgoodporn.togoodporno.ccgoodsexporn.orggoporngate.comgoragay.comgosexpod.comgoshemalecams.comgossipfuli4511.xyzgossipfuli5522.xyzgossipfuli6883.xyzgostosanovinha.comgotblop.comgotgayporn.com
gothdporn.comgotporn.com
gouri.xyz
+gqzmnav.ccgrabhentai.com
grabpussy.comgradeuptube.com
+graias.comgraiasmovies.comgrandepornogratis.comgrandfuckauto.xxxgrannylister.comgrannytube.netgreatretroporn.comgreginhollywood.com
+grooby.comgroupfun.com
gt536.topguaranitermal.com
guifw.xyzguochantube.com
guochanw.lifeguruofporn.comguysnightlife.comgyakusimei.com
gynoexam.info
+gyutto.comh-doujinshi.xyzh-flash.comillusionchn.com
h-webtoon.com
h0930.comh18ani1.vip
+h2porn.comh528.comhadesex.comhaha888.xyzhaho.moehaijiao.comhairy-amateurs.comhairy-beauty.comhairy-women-pussy.nethairyclassic.comhairydivas.comhairynature.comhairyolder.comhairypornsite.comhaisetu.nethaitenjp.com
hami-mod.buzzhamsterfucktube.comhamsterporn.tv
hanbao-tv.lolhandjobhub.comhandjobtube4free.com
hanime.me
hanime.tv
+hanime.xxx
+hanime1.mehanr-bao.mom
hao21.xyz
hao62.xyzhaori888.comhardcore-sex-filme.comhardcoregayblog.comhardsex8.comhardsextube.com
hardx.comhbox.jphbrowse.com
+hcbdsm.com
+hclips.com
+hcomic.nethcomicbook.comhd-tubes.com
+hdabla.nethdb1.apphdbigass.comhddgames.cchdfreeporn.net
hdgaytube.xxx
+hdhole.comhdjavonline.comhdouban.comhdouban2.com
+hdouga.comhdporn1080.nethdporn92.comhdporncomics.comhdpornfree.xxx
hdpornmax.nethdpornt.comhdpornvideo.xxxhdready.xxxhdreporn.com
hdsex.prohdsexxx.net
hdtube.cohdtube1.comhdvideosporn.net
+hdxnxx.xxxhdxx.tv
hdzog.comhealth026.clickhealthcarecareeronline.comheartbreakers.galleryheartbreakers.infoheavenlyhentai.comheavy-r.comheavyfetish.com
hegre.comheiguab.topheijidi.lifeheise360181.buzzheise360182.buzzhelixstudios.nethelloavgirls.com
hellporno.comhellven.net
hentai-ani.mehentai-archive.comhentai-books.comhentai-cosplays.comhentai-covers.sitehentai-eroanime.nethentai-for.nethentai-fun.comhentai-gamer.comhentai-gif-anime.comhentai-img.comhentai-moon.comillusionas.comillusion111.comhentai-vostfr.nethentai.desihentai.game
hentai.iohentai.namehentai.pink
+hentai.prohentai.toys
hentai.tvhentai0.comhentai01.comhentai2.nethentai2012.com
hentai247.net
hentai24h.orghentai24h.tvhentai2games.comhentai2read.comhentai2w.comhentai3dvideo.bizhentai44.comhentai4free.nethentai4manga.com
hentai69.lifehentai69.onlinehentaia.nethentaiaction.nethentaiasmr.moehentaibaka.one
hentaibar.comhentaiblue.comhentaibros.comhentaicity.comhentaicloud.comhentaiclub.nethentaicomic.ruhentaicomics.asiahentaicomics.lifehentaicore.nethentaicore.orghentaicovid.comhentaidirectory.orghentaidude.comhentaidude.xxxhentaienvy.com
hentaiera.com
hentaiero.nethentaifc.com
hentaifox.comhentaifox.tvhentaifreak.orghentaifromhell.orghentaigamer.orghentaigamesplanet.comhentaigasm.comhentaihand.comhentaihaven.comhentaihaven.iohentaihaven.mehentaihaven.redhentaihaven.xxxhentaiheadlines.comhentaihere.comhentaiheroes.com
hentaihub.xxx
hentaikey.comhentaiknight.comhentailabs.comhentailegendado.com
hentaimama.iohentaimangaporn.comhentaimovieplanet.comhentainanime.comhentainhaven.comhentainstream.comhentaipapa.com
hentaipaw.comhentaiplay.nethentaiporn.comhentaipornonly.com
hentaiprn.comhentaiprno.comhentaipros.comfabuyemian.comhentairead.comhentairead.infohentairead.vip
hentairox.comhentairules.nethentais.tube
hentaisea.comhentaiseason.comhentaispark.comhentaistream.comhentaistream.tvhentaistube.comhentaisub.infohentaitalk.comhentaitk.comhentaitokyo.comhentaitube.onlinehentaivideos.net
hentaivvz.comhentaiworld.euhentaiworld.tvhentaiworldporn.com
+hentaix.me
hentaixxx.viphentaixxxvids.com
hentaiyes.com
+hentaiz.cohentaiz.mobihentaiz.vip
hentaizap.comhentaizilla.comhentaizz.nethenti-night.comhereistheporn.comherexxx.comhernudepics.comheroero.comhexatronik.comheydouga.comhg.cool
+hgamer.prohh-content.comhiddenvoyeurspy.comhidefporn.wshifiporn.funhifixxx.fun
+hifuli.comhighporn.net
+hihigv.comhilostripper.com
+hiporn.nethippyhillscomix.comhiswifepussy.comhitbdsm.com
hitomi.lahitxhot.com
+hjb246.top
+hjb7e9.tophkbigman.nethkf2023.lathkf202311.sitehkf202312.shophlbelygl.comhlsp1.pwhmd.site
hmfby.com
hmfun.top
hmovie-moe.ushnalady.comhnext.jphnntube.comhobonichielog.comhoes.comaishegw.com
holaporno.xxxholdemstripem.com
holloporn.comhollyrandall.comhome-made-porn-movies.comhome-made-videos.comhome-sex-tapes.com
home-song.comhomefuckingmovies.comhomegrownfreaks.nethomemade-porn-video.comhomemadeamateur.comhomemadeanalporn.comhomemadefucktube.comhomemadepornclip.comhomemadeporntubes.comhomemadevids.nethomemoviestube.comhomepornbay.comhomepornking.comhomepornvideo.nethomesexmade.comhomo.xxx
acgwr.comhonestpornreviews.com
hongjie10.xyz
hongjie11.xyzhongkongdoll.tvhongkongdollvideo.org
+honnaka.jphoodamateurs.comhornybitches.org
hornybutt.com
hornychat.nethornyelephant.comhornygamer.comhornygfporn.comhornygirlsonline.orghornyjav.comhornywhores.net
horse-cum.net
horse4sex.comhorsecock.guruhorsecumshot.net
horsedick.nethorsedicks.nethorsemecum.comhorseporn.tvhot-arab-films.comhot-cartoon.comhot-gayporn.comhot-sex-photos.comhot-sex-tube.com
hot-teens.comhot2048.comhotamateurblowjobs.comhotasianbabes.comhotcandyland.comhotcuckoldwife.comhotcumporn.comhotescortdusseldorf.com
hotfiesta.comhotfucktube.comhotgaylist.comhotgirl.asiahotgirlsclips.com
+hotgoo.comhothdsex.xxxhothomemade.comhotindianbabe.comhotindianxxxsex.com
hotjav.tvhotladsworld.comhotladyhere.com
hotmovies.comhotmovs.com
hotntubes.comhotnudegirls.net
hotporn.todayhotpornbible.comhotpornfile.orghotporntubes.comhotscope.tvhotsexvideo.mobihotsexydolls.comhotstunners.comhotteenfreecam.comhottestfilms.com
hottystop.comhotwifemovies.com
hotzxgirl.com
+howfuck.mehpjav.tvhptv.funhq69.comhqbabes.com
+hqbutt.comhqdesexo.comhqporner.com
+hqseek.comhqtrannytube.com
+hqtube.xxxhqxxxmovies.comhrecords.jphsex.menhsex.tvhshsxkj.comhsxsp1.buzzhsyy.vipacgvipss.comhtyj-bj.comhuabansp.comhuabansp7.clubhuangse.lovehuarenav.comhuarenporn.com
huashundg.comhuati.cchuaxin-lls.xyzhuaxin80.com
huaxinvip.top
hugedildo.com
+hugesex.tv
huj-pizda.comhuluhuluhuluhulu10.workhumoron.comhungryclit.comhunk.wshuohaore.nethussiepass.comhustler.com
+hxcsxs.pro
+hxdoll.com
+hxxn12.tophyperdreams.comhypnohub.net
hypnoporn.net
hypnotube.comhzmn.net
+acgfbw.com
i91dz.comiafd.comiavnight.comibradome.com
icegay.tv
icegaytube.tviceporn.comiceporncasting.comichigocandy.comichineseporn.comicuminside.com
idarkdoll.comideal-teens.comideapocket.comidol-sagasukun.com
iframejav.com
ifuckedmy.momigaychat.comigayporn.tvigetnaughty.com
igkbroker.comigotpornpics.com
ihsd-mp4.pics
ihsdav.cc
iijav.com
+iirmll.com
+ijavhd.comijavtorrent.com
+ikanhm.xyz
+ikanmh.xyziknowthatgirl.comilove-movies.comiloveinterracial.comilovexs.comimagefap.com
imagepost.comimagetwist.com
+imaypb.comimhentai.xxx
+imilfs.com
+imlive.com
+immoral.jp
immxd.comimperiodefamosas.com
imzog.cominaporn.cominasian.clubincestflix.comacgfabu.comincestporn.xxxincestvidz.com
+incezt.netindexxx.comindian-free-xnxx.comindianfuck2.comindiangfvideos.comindiangirlsclub.comindianhiddencams.comindianpornfast.comindianporngirls.comindianpornvideo.orgindianpornvideos2.comindiansexmms2.comindiansexpussy.comindiansexstories.netindiansexstories2.netindienudes.com
acgdv.comindonesiaporn.nameinfinitetoons.cominfinitetube.cominfluencersgonewild.com
+inherd.mominhumanity.cominkedravens.com
+inporn.com
instabang.cominstantfap.cominstantfapgay.com
instawank.com
+insuyo.xyzinteractivesex.xxxinterracial-sites.com
intescort.comintimateinvasions.comintporn.comintramuscularinjection.infoinxporn.com
iooog.sbsiporntoo.comiporntv.netipostnaked.comiqiyiavlive.buzziqq2.cciqq3.cc
iqqtv.netiranianboobs.com
iransextv.com
iranx.netirotv301.topisexlove.twisfocus.net
+iss138.comissitedownrightnow.com
istripper.com
+ita-do.comitaeromanga.comitsfuck.comivintageporn.comiwank.tviwantavnow.comiwantgalleries.comiwantmature.com
iwantporn.netiwara.tviwyn138.comixnxx.tvixxx.com
iyalc.comjabcomix.com
jable.orgjade-net-home.com
+jadult.net
jambotube.com
+janor6.netjapan-whores.comjapan18tube.comjapanbeast.comjapanese-scat.netjapaneseasmr.comjapanesebeauties.netjapanesebeauties.onejapanesegirlspictures.comjapaneselovelygirl.com
japanfist.orgjapanporn.tvjapanxxxfilms.comjapon-girls.comjapteenx.comjapxtube.com
+jasmin.com
jav-angel.netjav-subtitles.com
+jav-vr.netjav.dogjav.galleryjav.guru
+jav.lajav.land
jav.place
+jav.sijav.winejav01.cc
+jav101.com
jav168.cc
jav19.com
+jav223.com
jav24.com
+jav2be.com
+jav321.comjav4you.org
+jav789.com
+jav889.xyzjav9999.comjavbabe.netjavbangers.com
+javbest.tvjavbobo.comjavbooks.comjavbraze.com
+javbuz.com
javcl.com
javct.net
+javcup.comjavdatabase.com
javday.tvjavdisk.comjavdock.com
javdoe.tojavdove.comjavdove8.xyzjavextreme.netjavfilms.com
javfor.mejavforme.ninja
+javfree.la
+javfree.me
+javfree.shjavfuck.netjavfull.net
javfun.me
javfv.com
javgg.netjavgrown.comjavhard.netjavhard.orgjavhaven.com
+javhay.net
javhd.com
javhd.icu
javhd.projavhd.todayjavhd3x.com
javhdfree.netjavhdhello.comjavhdonline.com
javhdporn.com
javhdporn.net
+javher.comjavheroine.comjavhihi.com
javhub.me
+javhub.netjavidol.orgjavjack.comjavjunkies.comjavlands.netjavleak.comjavlibrary.com
javlibrary.tvjavmenu.com
javmix.me
javmix.tvjavmobile.mobijavmodel.comjavmost.com
+javmost.cxjavmost.xyzjavmuch.comjavmulu.net
+javnew.net
+javopen.co
javout.cojavplatform.com
+javpop.comjavpop.linkjavporn.tech
+javporn.wsjavpost.netjavprice.comjavprime.net
javpub.mejavpush.com
javqd.comjavrank.comjavrave.clubjavscat.netjavscatsex.comjavscatting.comjavscreens.com
+javseen.tvjavsex.asia
javsin.tv
javsky.tvjavspanking.comjavstar.clubjavstore.net
javsx.com
+javtag.netjavtasty.com
+javteg.netjavtiful.com
javtorrent.mejavtrailers.comjavtrust.com
+javtube.ccjavtube.comjavtube.netjavvids.comjavxspot.com
javxxx.mejavynow.comjayspov.netjb22.lol
jburl.top
jdav-css.shopjdavsp.asia
+jdavsp.comjdavsp.info
jdavsp.pw
+jdavsp.top
+jdavsp.xyzjdforum.net
jennylist.xyzjenporno.cz
jerk-porn.com
+jerk24.com
jerkdolls.comjerkdude.comjerkmate.comjerkmate.tvjerkmatelive.orgjerkofftocelebs.com
jgg18.xyz
jhzyw.xyzjiaochuanba25.buzzjiaochuanba26.buzzjiayoulu.com
jieav.com
+jilhub.comjimeng22.comjiuse.ai
jiuse.icujiuse.io
acgdg.comjiuse821.comjiuse822.comjiuse823.com
+jstv51.com
+jstv52.com
+jstv53.comjiyou520.comjizzboom.comjizzbunker.comjizzhut.com
+jizzle.comjizzonline.comjjgirls.com
jjsuo.sbs
+jkycjk.mom
+jkzvz.shop
jkzw.shopjlb0011.sitejm98.cc
jmvbt.comjodic-forum.orgjohnpersons.comjoiasmr.comjoinside.orgjokerlu-go.buzzjokerlu.asia
jokerlu.worldjokerlu1.cc
jokerlu1.info
+joyclub.dejoylovedolls.comjoyourself.comjoysporn.comjpav.usjpavcom.com
+jpbabe.com
jpboy1069.netjpg4.bizjpg4.pw
+jpg4us.net
+jpvhub.com
jsz91.comjtube.spacejudeporn.comjuggsjoy.comjuiceced.xyzjuicytwink.comjulesjordan.comjuliamovies.com
acgcf.comjust.xxxjustfamilyporn.comjustfullporn.org
+justhd.xyzjustindianporn.mejustlesbianpussy.comjustnudepic.comjustpicsplease.comjustporn.com
justporn.linkjustporno.es
justporno.sexjustporno.tvjustswallows.comjustusboys.com
juyangbee.xyz
juyangto.infojuzi-js.shop
+juzige.xyz
jzydh.com
+k9vidz.com
+kaamuu.comkairakudoujin.net
+kaktuz.com
+kama-nk.rukamababa.comkampalaexclusiveescorts.com
+kanav.infokanporno.com
kaob3.xyzkarupsha.comkarupspc.com
katestube.comkawaiikawaii.jpkc3000.shopkcqsw-na.sbs
+kdfuli.comkdy202312.shop
+keaiav.comkechtube.comkendralist.com
+kenxxx.com
+kenya4.comerolabs.online
kenyaraha.netkeyporntube.comerolabs.netkhotruyentranhx.com
kichikuou.comkickporn.comkikdirty.com
kimchi.tvkimogirl.cckimosex.com
kindgirls.comkindindianporn.comkindnudist.comkindteenporn.com
kingcomix.comkingextre.me
kingf-av.buzzkingf-av.lolkingf-av.momkingf-av.sbs
kingf-tv.buzzkingfav.sbskingofpics.comkinguno.xyzkink.comkinkbook.comkinklive.comkinkoid.comkinkyfamily.comkinkypeepz.comkir2kos.net
+kismia.comkisscos.netkissjav.com
+kissjav.likkfcc03.com
kkiah.com
+kmdhyy.com
+kmff17.com
koalaporn.comkobe-pastel.com
+kompoz.comkompoz2.comerolabs.gamekoreanpornmovie.comkorewaeroi.comkostenlosepornoclips.comkouwobb.comkphimsex.net
+kpht85.comkpptoto.infokrhentai.comkristenbjorn.comksd235qw.comksescortclub.com
+ksyp10.comku77.xyzkuaimao-app.com
kuanrenxs.comkum.com
kun66.xyzkundun1069.comkusugurizanmai.comkutjeporno.com
+la-mama.rulacomics.org
+ladies.comladybaba.netladyboygold.comladyboygold.euladyboypornonly.comlanasbigboobs.com
langsuirs.com
+lanmdh.netlanniser-ylo.shoplaosijifuli9009.toplaowang.viplargecamtube.comlargeporntube.comlatinaabuse.comlatintubeporn.comlaxd.comlazymike.comlbfmaddiction.com
+lbtube.comlcgirls.comleakedmeat.comleakedzone.comleaksmodels.comleakxxx.com
legsjapan.comleliao1.com
lemoncams.comlenkino.xxxlenporno.redleporno.orglepornochaud.comlepornofrais.comlesbian8.comlesbianpics.orglesbianpornvideos.comlesbiansubmission.comlesboerotica.net
+letfap.com
letmejerk.com
letmejerk.fun
letsdoeit.comletsfuckme.netletsjerk.cclettherebeporn.comlevelsex.com
lewdthots.comlewdvrgames.comlewdweb.net
+lezpoo.comlgbtq.gameslianhonghong.com
lianjiajr.netliboggirls.netlibraryofthumbs.comlifeselector.comlightxxxtube.comlihksnap.com
likeseiyu.comliketruyen.netlikuoo.videolilhumpers.com
+liliav.comlilith-soft.comlimer.tw
+limertw.cclimeteensex.com
lindylist.orglingeriepornonly.comlink-o-rama.comlink2galleries.com
+link69.comlinkjunkies.comlinkshit.comliterotica.comlittleasians.comlittlesexdolls.comliuhefabu.clublivecamclips.comlivejasmin.comlivejasminbabes.net
livemodels.coliveporngirls.comliveprivates.comlivesex.comlivesexasian.com
+livexxx.melizardporn.comll82y2ifdd.topllbd10.shopllcaoxm-avi.sbsllwht88.xyzlmm167.shop
+lmmbtc.comlobstertube.comlocalxlist.orgloholidayhk.com
lolhentai.net
+lolibus.cclolibus.toplolislove.info
+lolita.betlollipopescorts.comlondonhotescort.comlonestarnaughtygirls.comlooporn.com
looti.netlostbetsgames.comlotcrap.comerolabs.com
love4porn.comlove6.tv
love7.xyzloveamateurfacials.com
loveavdh15.cc
loveavdh21.cc
loveavvip.comlovedolltorso.com
lovegirls.camlovehomeporn.comlovejav.netloveloveskill.comlovepartners.lifelovesexbody.com
+lovex.lifelowergiseries.comlp99.pwlpsg.com
+lqpjw.cyoulrysgee.xyzlsawards.com
lsj2.shop
lsj40.xyzlsjfuli308.xyz
+lspimg.com
lss55.comlthgav.buzz
+ltube.life
+lu2100.com
+lu2200.comlu23.com
lu2300.ccluanlunmv.cclubetube.comlucahmelayu.clublucasentertainment.com
+lululu.one
+luoli.infoluotihg-tv.buzz
+luotihg.cc
lupoporno.comluscious.netlushstories.comlustery.comlusthero.com
lustylist.comluticlip.comlutube2310.com
+luvmov.com
+luw666.xyzluw666cm.ccluxuretv.comluxuretv.fun
+lwwcn.buzz
lwwcn.xyz
+lxxlxx.commachigle-sp.commachogaytube.com
erolabs.cloudmachotube.tvmadamlive.tvmadchensex.commaddawgjav.netmadhomemadeporn.commadonna-av.com
+madou.clubmadou.lamadou.tvmadouav.onemadouqu.com
madthumbs.com
madvagina.commafia-linkz.tomagicmovies.commahajantech.commaileoch.commalayporn.sitemalayporn.spacemalaypornhub.commallandrinhas.netmalvastudios.com
mamacitaz.commanga-mill.commanga18.artmangahasu.semangahentai.me
mangahome.com
mangoporn.netmangotporn.com
+manhub.commanhunt.netmanhuntdaily.com
manhwa24h.commanhwahentai.memanporn.xxx
mansurfer.commantochichi.commanurefetish.commanytoon.commanyvids.commaomi-shipin.commarranazas.com
masalabin.commasaladesi.commasalaseen.netmassage-in-taipei.commassagerepublic.commasterwanker.commasturbate2gether.commat6tube.commature-amateur-sex.commature-nl.eumature-porn-flix.commature-tube.sexy
mature.nlmatureclub.com
maturefuck.ccmatureladiesxxx.commatureporner.commaturepornonly.commatures-loving-sex.commaturescam.commaturesexual.commaturesinhd.commaturetube.commaturewifeporn.ccmaturewomenanal.commaturexxxvideos.ccmaximumerotica.com
maya5.netmayijiejie.com
mcstories.com
ero-labs.site
mdpj-mov.shopmdpjoin.buzzmdr-good.sbsmdr100ya.latmdtt-tv.sbsmdyy.de
+me-gay.com
mediasama.commedow.ru
+meendo.commeetandfuck.gamesmeetandfuckgames.commegacamz.commegafilmporno.commegapornfreehd.comero-labs.onlinemegapornpics.com
+meguso.commeilleurpornos.commeitula.netero-labs.netmelonstube.commeme111.com
men18.net
menatplay.comeurogirlsescort.com
+04647.clubfoxtube.commeoriental.com
messytube.commet-nude.commetaporn.commetrotoons.com
meuhentai.commhhanman.xyz
mhqwe.xyzmiaomwu.commidoushe.commiexnoviadesnuda.commihomeone.infomilehighmedia.com
+milfav.icu
+milfed.commilffox.commilfhunter.com
milflove.livemilfmaturesex.netmilfmovs.commilfnut.commilfporn.promilfpornonly.commilfpornpics.xxx
milfprime.commilfs-gone-wild.com
milfs-now.commilfsexstart.nlmilfslesbian.commilfsover30.commilftube.pro
+milfvr.com
+milfzr.commilkmanbook.commimei.storemimi-zhibo.com
mimi2022.link
+mimi22.topmimi222.topmimizy-go.buzz
+mingky.orgmingkyaa.comminisexdoll.comminnano-av.com
minuporno.com
miohentai.com
+missav.commisshotgirls.commistresskym.com
mitao.barmitnaka.commixasiansex.commixmaturesex.commixvintagesex.commjv-art.org
mm-cg.com
mm9841.cc
+mmaaxx.commmgy.cc
+mmscdh.one
mmtongdao.xyz
mmtv.lifemmwxl27.topmobileporngames.commobilepornmovies.commobilevrxxx.commodelmediaus.commodeloswebcambogota.commodelsfreecams.commodeltv.commoeero-library.com
+moefuns.co
+moeimg.net
+moez-m.com
mofos.commofosex.commofosnetwork.commom-gfs.commom-sex-videos.com
mom50.comero-labs.commomesear-chs.buzzmomfucktube.commomhomeporn.commomon-ga.commomoniji.com
+momotk.commoms-sex-videos.commomsbangteens.commomsboysmovies.netmomsexypics.commomsfuckingboys.netmomsgiveass.commomshardcoreporn.commomsneversayno.commomsporn.sumomspornvideos.commomsteachsex.commomsteachsex.infomomsyoungboys.netmomtarts3d.commomtube.club
+monaitv.memonstercockland.commonstersexporn.net
monthlyav.commoozporn.commorazzia.commornporn.commostpopularpornsites.commotherless.commovie-erog.com
movie1000.xyz
moviepost.commoviesarena.commoviesfree4u.xyzmoviesneek.commoystoys.commplstudios.com
+mrbdsm.commrchewsasianbeaver.com
+mrcong.commrdeepfakes.com
mrlivecam.com
+mrloli.commrpinks.commrporngeek.commrpornlive.commrssiren.com
+mrskin.commrvideosdesexo.xxxmt0011.sitemtao.funmuchohentai.commuchomasporno.commulheresafoder.com
+mult34.commultporn.netmuramura.tvero-labs.cloudmuryouav.netmusclegirlflix.com
muycerdas.xxx
muyzorras.commvideoporno.xxx
+mwcu00.commwhentai.net
+mxshm.sitemy-enema.commy3dhentai.commyamateurgirls.netmyamateurtv.commyav886.buzzmyavfun.com
+myavok.com
myavsuper.com
+myavxx.xyzmybabehotz.com
myboylove.commybukkakeporn.com
+mycams.commycartoonsexgames.commycdn.memyclitgames.commycomicsxxx.commyfappening.orgmyfavoritearcade.commyfistingporn.commyfreeblack.commyfreecams.commyfreepaysite.commyfreeporngames.commygaysites.commyhentaicomics.commyhentaigallery.commyhomemadesex.com
+myjkwd.commylf.commylittlenieces.com
+mylust.commymasturbators.commyminisexdoll.commymusclevideo.com
mypornads.commypornadviser.commypornbookmarks.com
mypornfox.com
myporngay.commypornhere.com
+myporno.czmyporno.photosmypornolab.clickmypornstarbook.net
mypornvid.fun
mypornwap.funmyrimmingporn.commysexgames.com
mysexygfs.commyteenwebcam.commytrannycams.com
mywife.ccmywifecuckold.commyxvids.commyxxgirl.commyyoungmomisnude.commyyoungwifeisnude.comnaaktevrouwenporno.com
naihenda.shopnaihendauou.lolnaijauncut.comnailedhard.comnaizitv.topnakadashi.tonaked-girls.me
naked.comnakedamateurmilf.comnakedasiansex.comnakedgirlpic.comnakedgirls.biznakedmodelsxxx.com
nakednews.comnamethatporn.comnamethatpornad.comnan-net.comnaoconto.comnapiszex.comcuinc.tw
nasty.singles
nastyvids.comnaughty.comnaughtyamerica.comnaughtyblog.orgnaughtygamesource.comnaughtyhentai.biznaughtymachinima.comnaughtysophie.comnaughtywomenpics.comnbdh15.buzznee4you.comneedgayporn.com
xhcdn.comnekoxxx.comnenitas.clubxhamsterlive.com
nerdnudes.comnesaporn.com
nesaporn.mobi
netarabic.comnetfapx.comnetpornsex.comnetpornsex.netnetvideogirls.comneuerporno.com
new-akiba.comnew-jero.netnew-redtube.comnew3dcomics.comnewbienudes.comnewbrazz.comnewgrounds.com
newhentai.orgnewlineporn.comnewsensations.comnewsextv.com
newsexwap.com
newsexxxx.comnewxxx24.ccnhentai.com
+nhentai.ionhentai.net
+nhentai.tonhentai.xxxnhentaihaven.comnhentaihaven.orgniceanimegames.comniceporn.tvnichepornsite.comnichepornsites.comnickscipio.com
nicky.xxxxhamster18.desinightclub.eu
+nights.fun
nijiclamp.comnijidoujin.com
+nijie.infonijifeti.comnijigen-daiaru.comnijinchu.comnijioma.blognineteentube.com
+ninpu.cyou
niuc2.comniziero.infonjav.tvnlsexfilmpjes.com
nlt-media.comxhamster18.comnondh-room.momnonktube.comnonstopfap.comnoodlemagazine.com
+norsk.mobinoveltrove.comnovinhabucetuda.comnovinhagostosa10.comnovinhasdozapzap.comnovojoy.comnovostrong.com
+nowjav.com
nozomi.lanrdh99.buzz
nrooms-dh.sbsnsfw.xxx
+nsfw247.to
nsfwmemes.com
ntten-mg.buzz
+nu-bay.comnu36.vipnubilefilms.comnubiles-casting.comnubiles-porn.comnubiles.net
nubileset.comnubilesunscripted.comnuddess.com
nude-pics.orgnude-share.comnude.hunudeandhairy.comnudebeachpussy.comnudecams.camnudecelebforum.comnudedrawer.comnudedxxx.comnudeeroticteens.com
nudefiles.netnudegfporn.com
nudekenya.comnudelive.comnudematurewomenpics.comnudemilfporn.com
+nudes7.com
nudespree.comnudeteen.orgnudeteenboys.netnudeteenladies.comnudevietnam.comnudevista.bestnudevista.club
nudevista.funnudevista.link
nudevista.vipnudewifeporn.comnudewomenpics.net
nudify.onlinenudistbeachporn.comnudistic.com
nudistlog.comnudistsexvideos.comnudistvoyeurbeach.com
nudity911.comnudogram.comnudography.comnudostar.tvnuespournous.com
nuita.net
nukemanga.comnuki-dokoro.com
nurgay.tonurumassage.netnurxxx.mobi
nushemale.comnuuporn.com
nuvid.com
nwxs8.comnyahentai.re
nym97.netobutsumania.com
obutu.comohentai.orgohgratisporrfilm.comohpornocasero.comohpornovideo.comohsesso.com
ohsexfilm.comohsexotube.comohyeah1080.com
+oiobbs.com
+ok.xxxxhamster.xxxokazudouga.tokyookkisokuho.comolder-women-movies.comolder-women-porn.com
+older.tube
oldje.comoli-school.comomafotze.comomg.blogomgteens.comomorashi.jpomorashi.orgonahodouga.comonani-daisuki.com
+one889.apponejapanese.com
+onejav.comonepornlist.comonesiterip.comonindiansex.comonlinefucktube.comonlineporn-vids.comonlineteenhub.comonlinexxxgames.comonly-xxx-porn.comonly-xxx.com
+only3x.comonlyams.comonlycartoonsex.com
onlydudes.comonlyfanspw.comonlyfreelatinaporn.comonlygayvideo.comonlyhdporn.comonlyhentaistuff.comonlyhomemadeanal.comonlyincestporn.comonlyindianporn.tvonlyindianporn2.comonlyleaks.me
onlynudes.orgonlyprime.ruonlysiterip.comonstream.cc
onxxxtube.comonxxxvideo.com
+op7979.comopentgc.comoppai-doga.infooppainorakuen.comoreno3d.com
+orgasm.comorgasmlist.comorgypornonly.comorgyxxxhub.comorientalasianporn.comoriginalindianporn.comorsm.netosakamotion.netosiri-suki-club.com
otaku-168.com
otaku18a.infootaku55.xyzotbm.comotokonokoland.com
+oudoll.comoursexgames.comourshdtv.comourshemales.comoutdoorpublicsex.comover18arcade.comoverthumbs.com
oxlife.cooyeloca.com
ozeex.compacopacomama.compaerosnen.club
+paheal.netpaidpornguide.compaidpornsites.compainfulpussytortures.com
painnovel.com
paipancon.compakistanporntube.netpalcomix.compali.ltdpancolle-movie.jppanda30.shoppandamovies.pwpankwire.compantswalker.net
paon.sitepapalah.comparadisehill.ccpasionmujeres.compassion-hd.compassion.compayserve.compaysitesreviews.net
+pbabes.com
pbjar1205.pro
+pctlwm.compeach-cherry.compeachy18.compeachyforum.compeekvids.compeepholecam.compelvicexam.infopenisbot.com
penthouse.compeopledreamfunding.comperfectgirls.netperfectgonzo.comperfectnaked.comperfectsexnow.comperfectshemales.comperfecttitspics.compersiankitty.com
+person.com
pervclips.comperverse.sexperverttube.competardas.competardas.xxx
xhamster.desi
+petite.onepetiteamateurteen.competiteballerinasfucked.competitehdporn.com
+pgyy67.top
pheonix.moneyphimsex47.clubphimsexhentai.mephimsexkhongche.cyouphimsexnhanh.clubphoto-image.monsterphotos18.comphun.orgphysicalexam.infopicacg2022.com
pichunter.compicpost.compics.vc
+pictoa.compictocum.com
pigav.compikabu.monsterpinduck.compinflix.com
pingguotv.xyzpingxiangpuer.com
pinkdh-bb.sbspinkdino.com
pinkporno.compinkpussy.tv
pinksporn.compinkvelvetvault.com
pinkworld.compiratecams.compirouvr.com
pjbyj.top
pjful-app.lolpjgirls.complanetsuzy.orgplatinumlinks.org
play-bmm.shopplay-bmmer.buzzplaybar.bizplayboy.complayboyplus.complayforceone.complaymeow.complayno1.complayporngame.complayporngames.complaypornogames.complaysexgames.xxxplaysexygame.complayvids.complayyoungtube.compleasefuck.orgpleasurebabe.compleasuregirl.netpleasuremore.complumperpass.complusone8.complusporn.net
plzpf.compmatehunter.compoisontube.com
+pojapp.cfdpojbayj1030.top
+pojie7.compojiefuli20033.xyzpojiefuli9113.xyzponyanimalsex.com
poofetish.compoop-pee.onlinepoopee-puke.compoopeegirls.com
popjav.tvpopporn-world.comporcore.comporinga.net
+porkahd.co
porm.clubporn-bokep.comporn-comic.comporn-discounts.comporn-discounts.xxxporn-gratis.infoporn-images-xxx.comporn-list.siteporn-portal.comporn-sex-video.me
porn-star.comporn.bizporn.comporn.toporn.xxxporn2012.comporn300.comporn300.online
porn34.meporn3dgalleries.comporn4days.ccporn4fap.comporn555.com
+porn5f.com
+porn62.com
porn7.net
porn7.xxx
+porn87.com
+porn91.org
porn93.ccpornachi.compornacho.compornadoo.com
+pornaf.compornaffected.compornandxxxvideos.com
pornaroma.com
pornav.copornaxo.compornbest.org
+pornbit.cc
+pornbl.compornbozz.com
pornbraze.compornburger.com
pornburst.xxxporncana.comporncoil.comporncomics.com
porncomics.meporncomixonline.netporncore.net
porncoven.com
porncrash.comporndabster.com
porndeals.comporndeepfake.netporndex.comporndiamond.comporndig.com
porndigger.meporndiscount.orgporndiscounts.comporndish.comporndisk.com
pornditos.comporndoe.comporndoepremium.comporndork.com
+porndr.comporndroids.compornelephant.compornenix.com
porner.tvpornerbros.compornexpress.netpornfactory.infopornfhd.compornfidelity.compornfind.orgpornfinder.bizpornflip.compornfoolery.com
pornfu.tvpornfuck.net
pornfuror.comporngames.club
porngames.comporngames.gamesporngames.tvporngameshub.comporngamesverse.comporngeek.comporngem.comporngifs.xxxporngladiator.com
+porngo.comporngo.tubexhamster.comporngrabbz.compornguide.blogpornguz.compornhail.compornhat.compornhat.one
+pornhat.tv
+pornhd.compornhd3x.tvpornhd8k.netpornhdfuck.com
pornhdtube.tvpornhdvideos.tvpornheed.compornheli.compornhits.compornhoho.compornhost.compornhub-deutsch.infopornhub-german.compornhub-sexfilme.net
pornhub00.compornhubdeutsch.netpornhubs.videopornhubselect.compornhun.xyzpornhutdeutsch.compornicom.com
+pornid.xxxpornimg.xyz
pornirani.compornjam.compornjav.org
+pornjk.compornkai.compornkind.netpornking.funpornkino.ccpornkro.com
pornktube.com
+pornky.compornlaundry.compornlegendsclub.compornlist18.compornlistdude.compornlulu.com
pornluxme.com
+pornma.compornmadeathome.compornmagnet.orgpornmaki.compornmaster.funpornmate.compornmaturetube.compornmemo.com
pornmonde.compornmovies2.mepornmoviescave.com
+pornmz.com
+pornmz.netpornnetworkdeals.compornnut.comporno-erotica.com
swag.liveporno365.netporno365.websiteporno49.compornoaid.compornoamateurlatino.netpornobae.compornobengala.compornoboard.netpornoboliviaxxx.comswag-live.copornobox.net 5w.agpornobrasil.compornobrasil.orgpornobrasileiro.tvpornobrasileiro.xyz
pornobuzz.netpornocarioca.compornocaserotube.com
+pornocd.rupornocomic.netpornodanke.compornodoido.com
pornodrome.tvpornoecuadorxxx.compornoelena.net
pornofiles.rupornofilmlist.com
pornofint.com
pornofrog.compornogayphy.com
pornogids.net
pornogram.xxxpornogramxxx.comredtube.compornogrund.compornohd.bluepornohd.plus
+ypncdn.com
pornohut.infopornohutdeutsch.netpornoid.compornoincreible.compornoingyen.hupornoirado.compornoitaliano.com
pornojefe.compornojux.compornoko.net
pornokrol.compornolab.netpornolaba.mobipornolandia.xxxpornomasse.compornomineiro.compornomovies.mobipornone.compornoorzel.compornoprive.xxxpornoreino.com
pornorips.compornos.livepornoscanner.compornosex.campornosfilmes.compornoslon.mepornosphere.com
pornotime.net
pornotree.com
pornotron.netyopornshop.compornotube69.nlpornov1080.name
youpornru.compornovenezolanox.compornovideosfree.netpornovideoshub.compornovideow.compornoweb.hupornoweb.winpornoxo.compornozona.tvpornpair.compornpander.compornpaw.com
+pornpen.aipornper.compornpics.compornpost.net
pornproxy.app
+pornqd.compornrabbit.compornreactor.ccpornrips.ccpornrox.compornscat.orgpornscum.com
pornsexer.com
pornshare.biz
pornsites.xxxpornsitesnow.compornsocket.compornsoldiers.compornsos.com
pornspark.compornstarbyface.compornstreams.tvpornstripgames.comporntea.compornteen123.com
+porntn.comporntop.comporntoplinks.comporntrex.comporntry.comporntsunami.comporntube.comporntubent.com
+porntv.com
pornuj.czpornultras.com
pornv.org
+pornve.compornvibe.orgpornvideobb.compornvideos.casapornvideotop.compornvideotube.onlinepornvidhd.clubpornwatchers.compornwebmasters.com
pornwhite.compornwhitelist.compornwild.topornworld.topornxnxxmovies.com
+pornxp.com
+pornxp.net
+pornxp.org
+pornxs.compornxvideos.tvpornxvideos.winpornxxxmovies.ccpornxxxplace.compornxxxweb.compornyeah.com
pornyteen.compornzog.compornzone.comporstoporno.site
porzo.comporzo.tvpostegro.itpostyourgirls.wspovpornonly.compovr.compp6.infoppb-mod.buzz
+ppe.lawyer
pplah.comppp91.ccprastitutki.rupremium-beauty.com
premiumhd.netpremiumpornlist.com
press.vinprestige-av.compretty-ass.xyzprettynubiles.comprettyvirgin.com
pridetube.comprimecurves.comprimeindianporn.comprimematures.comprimepornlist.comprincesscum.comprivate.comprivatecasting-x.comprivateclassics.comprivatevoyeurvideos.comproctoscopeexam.comprofreeporno.comprojectjav.comprojectvoyeur.com
pron.gurupropertysex.comproporn.comprostoporno.netprothots.comproxyadult.org
+prpops.comptapjmp.comptt.sexpu82.vippublic-sex-porn.compublicagentxxx.compublicpornvideo.compublicsexhub.compunishbang.compunishworld.compurelov5.compurelyceleb.compurenudism.com
puretaboo.compurextc.compuripuriunkomura.com
+pururin.topussy-pics.netpussy3dporn.compussyboy.netpussymomsex.compussyporntubes.compussysexgames.compussyshine.infopussyspace.compussyspace.netputinho.netpvt.sexypzforever.skinpzforever01.homespzhanfor.todayqatarescortsvip.com
qattdh.cc
+qattdh.top
+qattdh1.cc
+qattdh2.ccqattdh6.topqbmengmei6.mom
qcmod.xyzqdiehzz7.me
qinav.com
+qingse.oneqise100.comqmov.comqmov.netqmttqg3k.me
+qombol.comqooqlevideo.com
qorno.com
+qporno.xxx
qqbs.asia
qqbs.workquickiepage.comqumingwz.comqysg.cc
+qysg7.buzz
+qysg8.buzzqzav.tvyoupornpremium.comyouporngay.com
r18av.comr18lu-avi.shop
r18lu.comr34porn.netrabbitscams.comrabbitscams.sexrabbitsreviews.comrajwaphq.com
randyblue.com
rapefilms.netrapetube.merat.xxxratedgross.com
+rbc007.com
+rbe996.com
+rbeopp.com
rcl07.xyzrds-yes.buzzre25.vip
reachporn.comreaderswivesonline.comreal-homemade-movies.comreal-mature-porn.comreal-thaipussy.comrealcuckoldsex.comrealdoll.comrealgfporn.comrealitykings.comreallesbianexposed.comrealmaturesfuck.comrealpornclip.comrealsexdoll.comrealteengirls.comrealzoomovies.comrecelebrity.comredamateurtube.comredfaptube.comredgifs.com
redhdtube.xxxredlightcenter.comredmatureporn.comredporn.xxxredporno.czredpornpictures.com
redsexhub.comredteenporn.comredtub3xxx.comredtube.blogredtube9.comredtubepremium.comredwap-xxx.com
redwap.me
+redwap.pro
redxxx.ccredxxxvideo.tv
+ree007.xyzreiporno.comrenderos.com
+repe21.com
resao.comresoubanana.buzzresoubang.buzzretroclassicporn.comretrohomevideos.comretroxxxmovs.com
rexxx.orgrhyw.merhyw31.life
ricefever.com
+rigums.xyzrinvdh7.xyz
risextube.com
+rjgsp.buzzrjgsp1.buzz
+rlczdo.xyz
+rm2029.comro89.comrockettube.comrocksextube.comroloflix.comroloxxx.comromantic-sex-video.comrosemarydoll.comroshy.tv
rou.videoroudao6.buzzroudaosp.ccroughebonysex.comroughman.net
royalcams.com
+rplay.live
+rrl28.buzzrrs1.xyz
+rssing.comrude.comrukoebxx.comrulaisc-tv.buzzrule34h.comrule34pornvids.comrule34video.comruleporn.comrunporn.comrunwayescorts.comrushporn.onlinerushporn.xxxrussianrape.orgruvideos.nets-books.com
+s1s1s1.coms8ds5gfm.xyzsabuibo.net
+sacduc.comsacredhentai.comsaerock.com
safebooru.orgsakuralive.comsambaporno.comsankakucomplex.comsaobjpg.comsaoni91.xyz
+saonia.xyzsaonidh-one.sbs
saonidh.worldsaonidh01.ccsapphicerotica.comsapphicpornonly.com
sarapbabe.com
satan18av.com
+satnym.com
satv01.mesavitabhabhi.comsavitabhabhi.vipsavitahd.netsbgkstv.shop
sca-tolo.infoscandalplanet.com
scanlover.comscat-enema.comscat-japan.com
scat-shop.net
scat.goldscatfap.comscatfinder.com
+scathd.com
scatkings.comscatnetwork.comscatshop.comscatsite.com
scatvids.club
scatville.comscharferporno.comscifisex.net
+scolle.netscorediscounts.clubscrew-my-wife.com
scrolller.com
+sdnice.one
sdnitube.buzzseaporn.org
+search.xxxsecret-flirt-hub.comyouporn.comsecretubes.comsee.xxx
seedmov18.comseehorsepenis.comseematureporn.comseemilfporn.comseemygf.com
seemyporn.comsego8.ccsego8.co
sego8.xyzseiroganmania.comsejie80.com
+seksmet.nlsekswebsite.nlsekur1213.guruselectanescort.comselectyourgame.comselfloversworld.com
seneporno.com
seniortgp.comkeezmovies.comsenpaiheat.comsensualgirls.orgsensualmothers.comsensueel.net
senzuritv.net
+seqing.oneseqingwangzhan.proseqingx.comser7.ccserbiporno.netserlucap.lolserlutv258.xyzserviporno.comseselah.com
sesenovel.comsessoamatorialeitaliano.comsevereporn.comsevgikurtulmaz.comsex-amateur-clips.com
+sex-av.comsex-douga.jpsex-for-work.comsex-gif.orgsex-hay.prosex-hot-sites.com
+sex-ly.comsex-teen.net
sex-young.comsex.camsex.comsex.sexsex.xxxsex0098.com
+sex021.net
sex3.mobisex4arabxxx.com
+sex588.netsex8.ccsexaidh.com
sexalarab.comsexandsplash.comsexanimalvideos.comsexanime.netsexarea.orgsexasia.netsexavidols.comsexbebin.comsexbomba.rusexbombo.comsexbookecuador.com
sexbq.comsexcartoon.bizsexcelebrity.netsexcord.comsexdollpornhd.comsexdolls.comsexdollsshow.com
+sexdug.comsexecherche.comsexedanslepre.net
sexei.netsexemulator.comextremetube.comsexfilm4free.comsexfilmeporno.comsexfilmstube.com
sexfl.xyzsexflashgame.orgsexflexible.com
sexgalaxy.netsexgame.comsexgamefun.comsexgames.ccsexgames.xxxsexgamesbox.comsexgamesclub.comsexguide.ro
sexhd.fun
+sexhd.pics
sexhdmovs.comsexhotgames.com
+sexhub.redsexhubhd.comsexifilm.top
sexiframe.com
sexindians.ccsexinsex.netsexiranian.party
sexjk.com
+sexjobs.it
sexkomix2.comsexkorea.netsexlikereal.comsexmadeathome.comsexmature.clubsexmerci.com
+sexmex.xxx
+sexmix.net
+rk.com
sexmomsex.comsexmovies24.comsexmummy.com
sexmutant.comsexnaweb.netsexnudo.comsexo123.netsexodama.comsexodeamor.comsexopornolive.comsexoquente.blogsexpornimg.comsexpornpictures.comsexpornvideoasian.comsexsaoy.comsexsex1.comsexsiam.com
+sexsim.comsexsimulator.comsexsiteinc.comsexstoriespost.com
sextb.net
+sextime.tv
+sextop.netsextop1.netsextorso.comsextoystop.comsextreffen-portale.comsextreffensite.comsextube.desi
+sextube.fmsextube69free.netsextubebox.comsextubedot.comsextubehub.comsextubeset.comsextubespot.comsextubexxl.com
sextubish.com
+sextvx.com
sextw.netsexu.comsexualhentai.netsexuria.com
+sexvid.xxxsexvideo10.comsexvideo12com.prosexvideos.host
sexvideos.telsexvideosxxx.mobi
+sexvids.cc
sexvr.comsexwebvideo.comsexwenheav.shopsexwithhorse.net
sexxhd.de
+sexxx8.xyz
sexxxdoll.com
sexxxtape.netsexxxx.rodeosexxxxfilms.comsexy-babe-pics.comsexy-beauties.comsexy-models.net
sexy-more.comsexy-older-women.comsexy-photos.netsexy-torrents.comsexy3dtoon.comsexyandfunny.comsexyasiangirls.ccsexyavenue.comsexybabesz.comsexycandidgirls.comsexyculo.comsexyfeet.tvsexyfuckgames.comsexyfucking.rusexygirlfriendtube.comsexygirlspics.comsexyhomewives.comsexyhub.comsexyhumorgames.comsexykittenporn.comsexyoung.mesexypornpictures.orgsexyseeker.comsexysexdoll.comsexyteenssite.com
sexytuber.comsexywetpussy.com
+sexzy4.comsfmcompile.clubsg120.mesgp1.funsgspe.de
+sgspt.buzzsh-xuxingda.comsh83.xyzshadbase.comshadowslaves.comshahvani.com
shahvani.siteshakethesnake.com
shameless.comshapelcounset.xyzsharks-lagoon.frsharkyporn.comsharmota.comshdd.inksheflix.com
shegg.comshegods.comshemale-porn-galls.comshemalebestlabel.com
shemalehd.sexshemaleleaks.comshemalemodelstube.comshemaleporn.funshemaleporn.xxxshemalepornonly.comshemaleporntube.tvshemalespoiledwhore.comshemalestardb.comshemalestube.comshemaletrannypics.comshemaletube.proshemaletubevideos.comshemalez.comshenshi-cha.com
+shequ8.camshequdaohang.comshesfreaky.comsheshaft.comshibashuwu.net
shikorina.netshiroutoav.netshishijump001.com
shit-porn.net
+shithd.comshitjav.comshittytube.comshockingmovies.comshooshtime.comshoptraivip.com
showup.tvshowybeauty.comshrkurl.comshsh201.comshuangmawei.xyzshufflesex.comshymysex.comshywifeswap.comsifangclub.comsigmoidoscopeexam.comsikiswap.comsilkengirl.comsimilar-porn.funsimonsgirls.comsimpcity.susimply-hentai.com
sing4.latsirenxxxstudios.com
+sis.la
+sis001.com
sis001.ussiscache.com
+sisisl.comsiska.videosislovesme.comsissy-university.com
+sissy.gamesissyporncrossdresser.comsiterips.orgsiteripz.comsiteripz.netsituero.com
six9dy.pw
sjcollect.comsjhsp1.buzz
skebetter.com
skinstrip.net
+skokka.comsksarab.topskunkgirl.ccskyporn.onlinesl99mod.buzzsldolls.comsleazyneasy.comslutload.com
sluts.xyz
sluttyrat.comsmallteenpussy.comsmashed.xxx
smmsp.xyzsmokinmovies.comsmplace.comsmutcam.comsmutcams.com
smutindia.com
+smutty.comsmuttymoms.comsmyw.orgsnapwebcams.comsnjulebu.comsocialmediagirls.comsociolotron.comsoftmodels.netsogclub.com
sojiy1124.top
+sokmil.comsonorousporn.comsoolakhi.comsoooyinfor.lol
+soporn.com
sora6.com
sos44.com
souka.xyzsouth-plus.netsoyinyj.topsp.coolspankandbang.comspankbang1.com
spanking.wikispankingstudio.comspankingtube.comspankmonster.comspankred3d.com
spankwire.comspectraltube.comspermyporn.comspicebar.despicybigtits.com
+spizoo.comsqyzh-dh.sbsss7.app
sshs.clubsshs.pwsshs.xyzsss.xxx
ssshuqian.xyz
+sssins.com
+sssjav.com
+sssuo1.xyzstarsze.icu
+staxus.comsteamofporn.comsteamygamer.comsteezylist.comstepdaughter.lovestepfamilyporn.comstepmaturesex.comstepmom.onestepsiblingscaught.comstickofjoy.comstileproject.comstimorolsex.com
stin31.rustocking-tease.comstockingfetishvideo.comstonefoxlingerie.comstonefoxproductions.comstoriesonline.netstraightpornstuds.comstream-mydirtyhobby.biz
streamate.comstreamingporn.xyzstreamlatina.com
streamporn.cc
streamporn.pw
streamsex.comstreetmeatasia.comstrip-poker.xxxstripcamfun.com
stripchat.comstripparadise.comstripselector.comstripskunk.com
studiofow.comstudioluxus.com
stufferdb.comstupidcams.com
+sub147.comsublimedirectory.comsubmityourflicks.comsucksex.comsukafeti.jpbrazzersnetwork.comsukebelinks.com
sumomo-ch.comsunporno.combrazzers.xxxsupanimegames.comsuperadultgames.comsupergratisporno.comsuperhqporn.comsuperjapanesesex.comsupersexeamateur.com
+supjav.comsureporn.com
suxib.comsvensksexfilm.comsvipshipin.storesvscomics.asia
svscomics.comsvsgames.orgswapsmut.comsweetadult-tube.com
sweetsext.comsweetsinner.comswegold.comswingercuckoldporn.comswingerpornfun.comswingerporntube.com swingers-homemade-videos.combrazzers.comswingersexorgy.comswingexpert.nlbrazzer.com
+sxarab.top
sxshentai.com
+sxyprn.com
+sybj91.one
sybjav.onlinesyfor.clicksyzbj36.xyz
szexvideo.topt66y.comtabooporn.tvtabooporns.com
tabootube.xxxtabustudios.cotacamateurs.comtachusz.xyz
taiav.comtaiolongdh.sbstaiwanadultexpo.comtaiwansex.tw
takens.tw
+taknai.comtakporn.comtaleofthenight.comtamilsexvideos.cctanflix.comtantaly.comtaoil-cn.sbs
taqunuhai.viptaradinhos.com
+tasexy.com
+tasexy.toptastyblacks.comtati-log.com
+taxi69.comtaxidrivermovie.comtbib.orgtube8.frteacherfucksteens.comteachmyass.com
teamskeet.comteatroporno.com
teen-girl.netteen-lover.net
teen-sexy.comteen3x.mobiteenagefucking.comteendreams.comteengirlfriendtube.comteenporngallery.netteenporntube.xxxteenpornvideo.xxxteenport.comteenpussypicture.comteenqueens.netteenrave.org
+teensex.meteensloveanal.comteensloveporn.netteensnow.com
teensnow.linkteentube.proteenwebcamtube.comteeztube.comtelegram-porn.comtemetube.xyzterk.nltettediferro.it
+tferwq.comtgirlcentral.comtgirlpostop.comtgp6.com
+tgtube.comtgutube.comthai-xxx.com
+thai69.comthaichix.comthaicuties.com
thaigirls.netthaigirls100.netthdh.cctheav.ccthebestfetishsites.comthebondagefiles.comthecamdude.comthecandidbay.comthecandidforum-voyeur.rutheclubprive.comthecuckold.comthecuckoldporn.comthefappening.prothefappening.wikithefappeningblog.com
+thegay.comthegayoffice.comthehabibshow.comthehentaiworld.com
+thehun.nettheindianleaks.com
thekarups.comtheleakbay.comthelittleslush.comthemilfmovies.comthenewgirlspooping.comthenewporn.comthenipslip.comthepervs.com
+theporn.ccthepornarea.comthepornbest.comthepornbet.comthepornbin.comthepornblender.comthepornguy.orgthepornlinks.comthepornlist.comthepornlist.netthepornlistdude.comthepornmap.comthepornscat.comtheporntoplist.comtheporny.comthesafeporn.comthethothub.com
thetranny.comthevirtualsexreview.comtheyxxx.com
+thisav.comthisvid.comthisvidscat.netthotbook.tv
+thothub.ru
+thothub.tothottok.comthotvids.comthri.xxxthrixxx.comthtmod1.comthumbnailseries.comthz7.netthzu.cctiantang.today
tiava.com
+tiava1.com
tiaz.sitetig-ol-bitties.livetimi1.me
timo0.com
+ting53.xyztinhduc.org
+tiny4k.com
tiohentai.comtitsbox.comtitsintops.comtittykings.com
+tkb008.xyztkb2233.lifetkbqf2.life
+tktube.comtmei-taoyuan.comtnaflix.com
tokyo-hot.comtokyomotion.comtokyomotion.nettokyonightstyle.comtokyoporns.comtomatespodres.comtonicmovies.comtoomadporn.protoon-3d.comtoonsexblog.comtop100nl.nettop100sexgames.comtopadultgames.biztopanime.biztopartporn.comtopbabesblog.orgtopcartoonsites.comtopcelebnudes.comtopchats.comtopchineseporn.comtopcuckolds.comtoperoticartsites.comtopescort.nltopescortbabes.comtopexhib.nettopface.comtopfantasyart.comtopfreepornvideos.com
tophd.xxxtophdsex.com
tophentai.biztophentaicomics.comtopmanga.biztopnudemalecelebs.com
+topporn.metoppornguide.comtoppornoduro.comtoppornsites.comtoppornsites.nettoprealvideos.com
topsexart.comtopsexhdvideos.comtopsexygames.comtoptoonsites.comtopvids.nettopxxxpornvids.comtopyoungporn.com
toroporno.comtorrentkitty.tvtotoleak.com
tourporno.comtownofsins.comtoxin-up.sbstoxinzoo.sbstpornstars.com
+tranny.one
trannygem.com
trannytube.tvtrannyvideosxxx.comtrans500.comtransangels.comtransarmuito.comtranscamslive.comtranspornsites.comtravelgirls.comtrendyporn.comtriballo.nettrikepatrol.comtrixhentai.comtropictube.comtrueamateurmodels.comtrueamateurs.comtrueanal.comtruebeachporn.comtrustedpeach.comtruthordarepics.comtruyen18.xyztruyengihay.nettruyenhentai.xyz
truyenkk1.comtruyentranh86.comtruyenwk.comtryboobs.comtrycuckold.comtryfuckmenow.comtryquinn.com
+tryst.linktsescortsdirectory.comtsmodelstube.com
tssp.best
+tsthai.comtsumino.comtsundora.com
tube8.com
tsyum.comtube-pornomovs.comtube-sex-videos.comtube.bz
+tube18.sextube188.comtube2011.comtube2012.comtube2017.comtube4sex.comtube4world.comtube8zoo.comtubebdsm.comtubecaptain.comtubecop.comtubedna.comtubedupe.com
tubeenema.comtubefuckme.nettubegalore.comtubegold.xxxtubelombia.net
tubemature.tvtubemovies4k.comtubeorigin.comtubepatrol.orgtubepornclassic.comtubepornlist.comtubepornstars.comtubepornup.comtubesafari.com
+tubesex.metubeshemales.com
tubetop69.com
tubetria.mobitubetubetube.com
tubev.pro
tubev.sextubevintageporn.comtubewolf.comtubexclips.comtubinge.comtubsexer.comtubxporn.comtubxporn.xxx digitalplaygroundnetwork.com
tukif.comturbogvideos.com
tushy.com
tw985.comtwavking.comtwcomix.comtwhentai.comtwi-videos.nettwidouga.nettwidouga.tvtwifuli.comtwinkboyfriends.tvtwinkspornos.comtwinkybf.comtwistedlinks.nettwistys.com
twitcomike.jp
+twlegs.comtwline5.comtwoo.com
+tx5254.comtxqzz34r.com
+txvlog.comtxxx.com
txxx1.comtyler-brown.comtyms2022.comtytng189.comtytporno.onlineu3c3.comu9a9.ccu9a9.comuaa.com
uflash.tvuguisupapa.net
+uhairy.com
+uiporn.comujapanesesex.comujizzcn.comuk-exhibitionist.comultradonkey.com
+uncams.comuncensoredhentai.xxxuncensoredsexparties.comunderhentai.netuninhibitedcomix.com
unkoscene.comunusualporn.netup01.ccupdatetube.comupjav.ccuplay-istrip.com
+uplust.comupornia.com
+uporno.xxxura-akiba.jp
+urasma.comurlgalleries.neturukawa.comuselessjunk.com
uup76.com
uusexdoll.comuusextoy.comv-av.comv2ph.com
v7hds.comvagabundasdoorkut.net
vagina.nlvaginacontest.comvaginal-ultrasound.comvaginalultrasound.infovaginapics.provbejeyv.shop
vdoav.comvecchiescopate.casa
venezporn.com
+veporn.com
vepornhd.clubveporno.netvercomicsporno.xxxverhentai.tvverpeliculasporno.gratisvervesex.comveryladyboy.comvgg8.com
video-jav.net
video-one.com
+rdtcdn.comvideo01.orgvideodesexo.blogvideoleak.mevideosamadoresreais.comvideosdemadurasx.comporngub.commen.comvideosection.comvideoshorny.comvideoskaseros.comvideosmadeathome.compornhubpremium.comvideosporno.lifevideostravestis.xxxvideoxxxporn.bizvideozzz.com
+vidown.comvidspornoduro.comviet.sex
+viet69.devviet69.linkviet69.newsviewerswives.netviewgals.comvikiporn.comvintage-erotica-forum.comvintageamateurporn.comvintagehomemadesex.comvintagemedicalpictures.comvintagexxxfilms.com
vipergirls.tovipissy.comvipmatureporn.comvipstudiocali.comviralcum.com
viralporn.comvirginpornlinks.comvirtualpartyworld.comvirtualporn.comvirtualrealgay.comvirtualrealporn.comvirtualrealtrans.comvirtualtaboo.comvitukali.comvivaxnxx.com
vixen.com
+vixvids.tovjav.comvl4x.net
vmwxw.comvnanchoi.cavomitkings.com
voyeureye.com
voyeurhit.comvoyeurhouse.comvoyeurmonkey.comvoyeurpapa.comvoyeurporntapes.comvoyeurstyle.com
voyeurweb.com
vporn.comvpornvideos.com
+vrbgay.com
vrcams.iovrfun18.com
+vrporn.com
vrporncat.comvrpornjack.comvrpornmania.comvrpornranked.comvrsexgames.bizvrsmash.com
+vrsumo.com
+vsezoo.comvulgarx.com
w0512.comw6un.comwaisongcha.compornhub.orgwana-tv.sbswancctv.asiawandan-dh.buzzwanduww.buzz
wankgames.comwankizer.com
+wankoz.com
wankz.comwankzvr.comwant520.comwantmywife.com
+waplog.comwaranlov.comwarddogs.comwasha.tv
waskucity.comwatch-my-gf.comwatch-porn.netwatchersweb.comwatchindianporn.netwatchjavonline.comwatchmyexgf.netwatchmygf.me
watchmygf.netwatchmygf.towatchmygirlfriend.tvwatchteencam.comwater-and-power.comwaterdamagesandiego.orgwatersex.com
+wav.tv
+wbvm4s.comwearehairy.comweav.xyzwebcam-teen.netwebcamgirls.chatwebcamjackers.comwebcammedellin.cowebcamtubexxx.comwebgata.netwebgirlsonline.netweimi180.comweknowporn.comwelcomix.comwellfuckedwife.comwellmaturetube.com
wen21.xyzwet-ass-pussy.comwetandpuffy.com
wetchicks.org
wetnhorny.comwetplace.comwetpussygames.comwetsextube.com
+whasil.xyzwhatboyswant.comwhengirlsplay.comwhentai.comwhereiskpkuang.comwhichav.com
whichav.videowhitexxxtube.comwholevideos.comwhoreasianporn.com
whoreshub.com
whoreslag.comwhoreteensex.comwhorevintagesex.comwhvuxtub.comwhynotbi.comwife-home-videos.comwifehomeporn.comwifeinlove.comwifeinterracialfuck.comwifeloversporn.comwifemovies.netwifesexorgy.comwifesharingpics.comwifevideos.netwifewantstoplay.comwikifeet.comwikiporn.tvwikisexguide.comwildcamporn.com
wildfanny.comwildfreevideos.comwildxxxhardcore.com
willyporn.com
winning11.com
wixipedia.netwiz-s.jpwjny-one.sbs
+wm18s.buzz
wnacg.com
+wnacg.link
wnacg.orgwolfsex-me.sbswonporn.comwonporn.netwoodmancastingx.comworld3d.bizworldescortindex.comworldofslaves.ioworldpornvideos.comworldsex.comwowgirls.comwowindianporn.comwowpornlist.xyzwowstars.comwowyoungporn.com
wtfpeople.com
wunvb.comwuso.mewuyefuli.orgwvm0agb4.me
+ww9094.comwwwpornhub.pro
wxoyt.com
+wyqqdz.com
+wzlthw.com
wzmyg.com
wztv8.com
+wzzyw.buzz
x-art.comx-artvideo.net
x-caprice.comx-fetish.org
+x0rd38.xyzx18r.comx3guide.com
x3vid.comx6av.com
x99av.comxanimeporn.com
xanimeporn.tvxapplist.comxattractive.comxaxy.xyzxb18.me
xbabe.com
+xbabe.mobi
+xbanny.com
xbeegtube.comxbhuijiab.info
xbnat.comxbookcn.netxbooks.work
+xbooru.comxboyvids.comxbrasilporno.com
xcafe.com
xcams.com
+xcg123.com
xchina.co
+xchina.funxcity.jpxcum.com
xdaddy.in
+xdh999.onexdir.vipxdporner.com
xecce.comxemales.comxerotica.comxfantazy.comxfemaledom.comxfockers.comxfreehd.comxfuckonline.comxgames.zonexgaytube.comxgaytube.tv
xgirls.webcamxgroovy.comxgsp.tv
xgtd3.com
+xgtdr.buzzxh-porn.comxh.video
xhamster2.comxhot.proxhub.tvxiangrikui-app.com
+xianir.xyz
xiaofu.me
xiaogirls.com
xiaoou.io
xiaoou.tvxiaoshuobb.life
xiaoyaoge.xyz
xie56.xyz
xin21.xyzxinaia-av.buzz
+xinfhw.comxing66.lifexing840.info
xinggan77.vip
xinlan995.xyzxinmeitulu.com
+xiuren.orgxjavporn.comxkeezmovies.com
+xknoop.comxkontakt18.comxkorean.camxl-gaytube.com
xlecx.org
xlinkz.toxlovecam.comxlydh.cc
+xmalay.com
+xmature.su
+xmav99.com
+xmbsyj.topxmforever.rest
xmissy.nlxmoviesforyou.comxnalgas.comxnertv.shopxnostars.com
xnxvideos.orgxnxx-sex-tube.comxnxx-sex-videos.comxnxx-teens.comxnxx-tv.netxnxx-xxx.winxnxx.health
+xnxx18.pro
+xnxx2.infoxnxx2.it
xnxx2.org
xnxx2.pro
xnxx4porn.comxnxxarab.ccxnxxarabsex.comxnxxcom.clubxnxxcom.xyzxnxxcomvideos.comxnxxfap.infoxnxxhamster.net
+xnxxhd.biz
xnxxhd.tvxnxxmovies.comxnxxporn.dexnxxporn.funxnxxpornvid.comxnxxsexclips.comxnxxsexmovies.comxnxxtime.comxnxxvideos.restxnxxx.cc
xo104.com
+xogogo.com
+xomfsp.xyzxoteens.comxoxoteiras.comxozilla.com
xpaja.netxpee.comxpoleuno.com
xpornblog.comxpornplease.comxqwherb.sbsxsela.ccxshaker.netxshr.onlinexsijishe.com
+xslist.org
xstas.biz
xsvod.xyz
+xsz-av.com
xtapes.to
+xtegvk.xyz
xtube.com
xtubebdsm.comxtubezoo.comxu97.vip
xujan.comxv1.monsterxvds.tv
xvedo.net
xvideo-jp.com
+xvideo.com
+xvideo.runpornhub.comxvideoporno.tvxvideos-dl.topxvideos-porn-video.comxvideos-xxxx.comxvideos.blog
+xvideos.co
+xvideos.laxvideos.redpornhubapparel.comxvideos2.comxvideos3.compornhub-deutsch.netxvideosamadoras.comxvideosbrasil.comxvideosbrasileiro.net
xvideoscom.mexvideosincesto.comxvideosjingxiang.comxvideosnovinha.com
babes.comxvideosnovinhas.comxvideostravestis.xxxphprcdn.com
+phncdn.comxvideoz.winxvidios.blogxvidios.xxx
+xvidzz.comxvirtual.comxvxx.streamxvxxtube.com
+xx-map.comxx9.app
xxbook.ccxxbrits.comxxeronetxx.infoxxfbiaa.xyz
+xxgasm.comxxindianporn.comxxiqiyiavxx.buzz
+xxmovz.com
xxnx.restxxnxx-porn.com
xxnxx-sex.comxxu.mobixxvideo.mobixxvideos.xxx
xxvideoss.org
+xxvids.net
+xxx-av.comxxx-com.cfdxxx-fap.com
xxx-files.orgxxx-porn-fuck.comxxx-porn-tube.com
xxx-porn.info
xxx-video.cfd
xxx-videos.tvxxx-ways.comxxx.comxxx.xxx
xxx18.uno
xxx18teen.netxxx2022.comxxx2023.com
xxx4hindi.comxxxaporn.comxxxassfuck.com
+xxxbit.comxxxbolivianas.comxxxbule.com
xxxbullet.com
xxxbunker.comxxxclub.club
xxxcomics.org
+xxxdan.com
+xxxdesi.ccxxxdinotube.com
xxxengine.netxxxfile.orgxxxfiles.comxxxflare.comxxxforte.com
xxxfree.watchxxxfuckmom.comxxxgames.bizxxxgames.gamesxxxgirls88.comxxxgratisfilms.com
xxxhd.proxxxhdporn.cc
xxxhentai.netxxxhentaipics.comxxxhentaipics.proxxxhomefuck.com
xxxhub123.comxxxhubvideos.comxxxifuck.comxxxindianporn2.comxxxindiantv.comxxxjapanesemovies.comxxxland.netxxxlesbians.mexxxlucah.comxxxmaturepussypics.comxxxmatures.netxxxmofo.comxxxmomporn.tube
xxxmovies.fun
xxxmovies.proxxxn.mexxxn.tv
+xxxner.comxxxnewvideos.com
xxxnu.com
xxxnxx.mexxxpenguin.comxxxpicz.com
+xxxporn.suxxxporn123.comxxxporndig.com
xxxpornhd.proxxxpornmovs.comxxxpornotuber.com
+nutaku.netxxxpornzeed.comxxxreal.com
xxxscenes.netxxxsexanal.comxxxsexcinema.comxxxsexocasero.comxxxsextubes.com
xxxsexzoo.comxxxshame.com
xxxstreams.euxxxstreams.orgxxxstreams.watchxxxteenanal.netxxxtube1.comxxxtubeasian.netxxxtubedot.com
xxxtubegf.comxxxtubenote.comxxxtubeset.comxxxtubezoo.com
xxxv.mobi
+nutaku.comxxxvideo.onexxxvideo.vipxxxvideo.worldxxxvideoamatoriali.com
xxxvideor.comxxxvideos247.comxxxvideoszoo.comxxxvidos.vipxxxvidso.comxxxvirtualworld.comxxxvogue.net
+xxxwow.net
xxxxvideo.unoxxxyaom.xyzxxxymovies.comxxxyoungxxx.comxzone.toxzxxporn.comxzxxtube.com
yaddal.tvyadori.club
+yaeby.infoyamoon.clubyande.reyantaqu.com
yaohubaba.comyaoimangaonline.com
yaoiotaku.comyaole91.xyzyaoliuno.funyaoyaomumu.comyaptube.comyasarang.netyavtube.com
yaya.cyou
yayadizhi.xyz
yazhouse8.com
+yeonda.comyepporn.comyes.xxxyespornfree.comyespornplease.comyespornpleasexxx.com
yeswegays.com
+yft-mv.sbs
+ygugu4.comyhgwgtv.xyzyhy.cool
yinac.xyz
+yinac5.topyinhdhan.sbsyinhuafish.lat
yinmh.comyinshuiger.info
+yinya.shop
ymhsf.top
+ymhsf1.topyouassporn.com
youav.com
+youflix.isyoujism.comyoujizz.sexyoung-amateur-movies.comyoung-webcam.net
young-xxx.netyoungamateursporn.com
younger19.comyoungerbabes.comyoungermommy.comyoungheaven.comyounglibertines.comyoungmommyfucksme.comyoungpornhd.comyoungpornonly.comyoungpornvideos.com
youngsex.sexyyoungsex.videoyoungteenhomeporn.comyoungtube.meyouporn-germany.comyouporner.euyoupornlist.comyoupornxvideos.netyouramateurporn.comyourassbig.com
yourbrain.comyourdailypornvideos.wsyourdirtymind.comyourdoll.comyourflashporn.comyourfreeporn.tvyourgynexam.comyourlust.comyourpelvicexam.com
yourporn.sexyyourporndump.comyourporngod.comyourupskirt.comyourvoyeurvideos.comyourxxxvideos.proyouskbe.comyoutrannytube.comyouwuss.comyoux.xxxyouyu.services
+yoyoav.net
+ypmate.comysav184.xyzysg-link.sbs
yskg-ber.buzz
+ysporn.comyuenuge113.xyzyuenuge18.cc
yusjb.com
+yuvutu.com
ywoos.comyy55.tvyy7y.comyy8y.com
yyfb.cyouyzld188.top
z00.worldz676869.comza77.xyzzatrahal.onlinezazzybabes.com
+zbporn.com
zctb.buzzzeenite.com
+zen8ok.xyzzerochan.netzettai-ero.comzh99.netzhaimankan.comzhainanjidi.xyzzhainanjidid.top
zhangboz1.xyz
+zhtv01.comzhuzhushipin-app.comzibacity.comzingtruyen.net
zishy.comzoig.comzoo-hardcore.com
zoo-porno.biz
zoo-tube8.comzoo-xnxx.comzoofiction.comzoofilianet.com
+zoohun.comzoomobileporn.comzoophilist.netzooporn.prozooporn.shiksha
zooporn.video
zoopornmd.comzooporno.bizzooredtube.comzoosexfarm.com
zoosexnet.comzooskoolvideos.comzootube1.comzooxxxsexporn.redzooyouporn.comzoozhamster.comzorglist.com
+zqqpwz.comzsuxtx-ktv.shop
+zteman.net
+zunked.comzweiporn.com
zzcartoon.comzzdh.bizzzdh.cczzdh.pwzzdh.runzzdh.ws
+zzdh77.comzzdh808.com
+zzdh99.com
+zzgays.comxn--096-4g6em5t.comxn--201-4g6em5t.comxn--202-4g6em5t.comxn--203-4g6em5t.comxn--204-4g6em5t.comxn--205-4g6em5t.comxn--2vxsp6vi4j.comxn--8uq428d76d.tokyoxn--av-o44ep1d.comxn--cck4d8b3009a.comxn--gmq348bujlxrb.comxn--gmq92kd2rm1kx34a.comxn--hckl3e1e8a8ajin0czf.netxn--hhr917d3fecva.xyzxn--mtswd61ejxq.com%!xn--r8jwklh769h2mc880dk1o431a.com%!xn--r8jwklh769hk43amcfoyl3z3a.comxn--sjqr38j.comxn--uis17aj9kmuf.com
xn--urs05q.jpxn--x-qeu1ji09tzlg.bizxn--x-qeu1ji09tzlg.netavmoo.click
avmoo.com
tellme.pwc4slive.comclips4sale.comvideos4sale.comkubakuba.globalkubakuba1996.com
chobit.ccci-en.jp
ci-en.net
+dlsite.com
dlsite.jpdlsitestudio.comnijiyome.jptriokini.com
+mdhcdn.com
javdb.comjdbimgs.com
jdbstatic.comcuntwars.com
faptitans.comhooligapps.comslotbitches.com
smutstone.com
doure.net
+kuaipa.net
+miaopa.netyunlaopo.ccyunlaopo.comyunlaopo.nethentaivn.dehentaivn.lahentaivn.nethtvncdn.netjavcc.cc
javcc.com
+lisiku.comlisiku1.com18comic-god.cc18comic-god.club18comic-god.xyz
+18comic.cc18comic.company18comic.org18comic.vipjmcomic.ltd
+jmcomic.mejmcomic.mobijmcomic.moe
jmcomic1.cityjmcomic1.me
jmcomic1.mobijmcomic2.moe54647.global54647.io54647.online
54647.orge-hentai.orgehgt.org
ehtracker.org
+ehwiki.orgexhentai.orghath.networkhentaiathome.nethentaiverse.orgbili2.ccbili888.combili999.comcamwhores.videochatwhores.comchatwhores.netchatwhores.orgchatwhores.sex
chatwhores.tv
+metart.commetartnetwork.commetcams.comnaiadsystems.com
nsimg.netbdsm123.xyz
bondagesm.xyzboboporn.comboboporn.net
+bobovip.cc
sesez.commydirtyhobby.comshireyishunjian.comyingpianqu.comjavwide.com
+javwide.tv
+hkporn.net
+justav.net
+twporn.netnetflav.comnetflav1.comnetflav5.comjhxl.orgxn--sgt856gbjl.cc
uug22.com
uug23.com
uug25.com
uug26.com
uug27.com
uuk28.com
uun78.com
uun79.com
uun82.com
uun83.com
uun85.com
uun86.com
uun87.com
uun89.com
uun92.com
uun93.com
uun95.com
uun96.com
uun97.com
uun98.com
uun99.com
uux68.comheydoga.com
heyzo.com
+javbus.comjavbus22.com
javcdn.cc
nudevista.comnudevista.es
nudevista.netpornpros.compornprosnetwork.comillusion.jplethalhardcore.comlethalhardcorevr.com
bikaa.xyz
bikac.xyzbikaios.xyzmanhuabika.compicacgp.compicacgy.com
+picacn.xyz
picacomic.com
picacomic.xyzwikawika.xyzxvideos-cdn.comxvideos.com
+btt804.com
+btt904.com
+bttzyw.com
+bttzyw.netcavporn.com
+webcams.tv
+bcicdn.combcrncdn.comjohren.games
+johren.net
sehuatang.net
sehuatang.org
porndude2.comporndudecasting.com
pornsites.comtheporndude.cctheporndude.comtheporndude.vip18eighteen.com40somethingmag.com50plusmilfs.com60plusmilfs.comanalqts.comashleysageellison.comautumn-jade.combeascoremodel.combigboobbundle.combigboobspov.combigtitangelawhite.combigtithitomi.combigtithooker.combigtitterrynova.combigtitvenera.comblackandstacked.combonedathome.combootyliciousmag.combustyangelique.combustyarianna.combustydanniashe.combustydustystash.combustyinescudna.combustykellykay.combustykerrymarie.combustylornamorgan.combustymerilyn.combustyoldsluts.combustysammieblack.comcherrybrady.comchloesworld.comchristymarks.comcock4stepmom.comcodivorexxx.comcreampieforgranny.comcrystalgunnsworld.comdaylenerio.comdesiraesworld.comdianepoppos.comeboobstore.comevanottyvideos.comfeedherfuckher.comflatandfuckedmilfs.comgetscorecash.comgrannygetsafacial.comgrannylovesbbc.comgrannylovesyoungcock.comhomealonemilfs.comibonedyourmom.comifuckedtheboss.comjessicaturner.comjoanabliss.comjuliamiles.comkarinahart.comkarlajames.comleannecrowvideos.com
+legsex.comlinseysworld.commegatitsminka.commickybells.commilfbundle.commilfthreesomes.commilftugs.commillymarks.commommystoytime.comnataliefiore.comnaughtyfootjobs.comnaughtymag.comnaughtytugs.comnicolepeters.comoldhornymilfs.compickinguppussy.com
pornloser.compornmegaload.comreneerossvideos.comsarennasworld.comscoreclassics.comscoregroup.com
scoreland.comscoreland2.com
scorepass.com
+scoretv.tvscoreuniverse.comscorevideos.comsharizelvideos.comsilversluts.comstacyvandenbergboobs.comsusiewildin.comtawny-peaks.comtiffany-towers.comtitsandtugs.comtnatryouts.comvaloryirene.comxlgirls.comyourmomlovesanal.comyourmomsgotbigtits.comyourwifemymeat.comtokyo-tosho.nettokyotosho.info
tokyotosho.seavstar01.meavstar02.meavstar03.meavstar04.comavstar04.meavstar05.meavstar06.meavstar07.comavstar07.meavstar09.comavstar09.meavstar1.comavstar2.comavstar3.comavstar4.comavstar5.comavstar6.comavstar8.comavstar9.comxnxx-cdn.comxnxx.comxnxx.netxnxx.tv
xnxx3.com
+anon-v.com
+anon-v.lol
fans66.twfansking.twx18r.coz18r.coz18r.commoxing.mobimoxing.newsyjcontentdelivery.comyoujizz.com
+168sex.top
a7sex.comctotires.comferryclean.comzhimeishe888.comkonachan.comkonachan.netlivehdcams.comdigitalplayground.com
+porniq.com
+pornmd.comseancody.comthumbzilla.comjiuse.com.coincesto.blog.brkhayannpyar.blogspot.com
dlsite.com.twxxxvideo.blog.brxxxpornozinho.blog.brxxx-hentai.blogspot.comxvideosx.com.brxvideosup.com.brxvideosnovinha.com.brxvideos5.com.br
xvideos.tv.brxvideo.vlog.brwaittingfor001.weebly.comvideosporno.com.brvideosdesexo.com.brvideosdesexo.br.comvideosdepornografia.blog.br
video.fc2.comtufos.com.brtsuradou.noonvob.comtbr.tangbr.netswpr.livedoor.blogswingers.theadulthub.comsupadou.blogism.jpsukebei.nyaa.sisissy.eu.orgsexysites.com.phsexmodel.wordpress.com
sexfilm.al.rusenluocaituan.gumroad.comsecretbabes.co.ukr18.clickme.netr-new-sale.blog.jppornovenezolano.com.vepornotube.blog.brpornohoo.com.mxpornogratis.vlog.brredtube.com.brpornobrasil.blog.brpornobom.com.brporno.org.inporngogo.supertop-100.competardashd.com.veokazudouga.blog.jpnoc.syosetu.comnight.livedoor.bizneotokyo.supertop-100.comnekora.main.jpnarumiya.xii.jpcuinc.oen.twmundomais.com.brmomami18.livedoor.blogmelonbooks.co.jpmegaporno.com.brmd.hkgolden.commachosaonatural.com.bradult.toonsearch.neterotera.blogo.jpillusion.co.jpjusmynote.wordpress.comkenyanporn.blogspot.comkonachan.wjcodes.comindies-av.co.jpplayboy.com.uk
+i69.com.twhtanime.epizy.comhomofans.blogspot.com
hoge.7jp.infohentairank.supertop-100.com"hentai-top100.supertop-100.com!hentai-space.supertop-100.comh-top.supertop-100.comgelbooru.wjcodes.comgbluebooks.blogspot.comgaysheaven.blogspot.comfullbookmm.blogspot.comfulipic.gumroad.comfilmesporno.net.brfilmesporno.com.brethiosex2.wordpress.comestudio360.com.cocavporn.github.ioerodouga.8sp.bizerodou.tousatu.funenemaporn.blogspot.com#elpube-scat-movies.blogspot.comdrmgmggyi-mm.blogspot.comdoujincg.blog.jpdivas.com.uydiarrheafan.livedoor.blogdiamondgirls.co.ukdhlestudio.com.codesire-xx.supertop-100.comcouplecam.co.ukcoliriodemacho.com.brchinasex.com.escentervillage.co.jpbossagency.co.ukblog.descargasgay.combabylongirls.co.ukaxbdoll.com.tw apyarstorybooks.blogspot.com
dmm.co.jpaoaou.iillii.netansin.erodayo.comadultexpo.com.tw2023aga.oen.tw"adultartlinks.supertop-100.comadult789.futoka.jplove-sextoys.co.uk1xbet.co.ke84adult-doujin-free-information-bureau.officialblog.jp!acasadasbrasileirinhas.com.bradult.contents.fc2.com bisyoujyogyaruge.topaz.ne.jpclimateone.blogspot.co.id(^|\.)[1-5]gaoap\.com$!(^|\.)[1-9]+aipai\.(com|net)$!(^|\.)[1-9]+zipai\.(com|net)$(^|\.)[1-9]00caocao\.com$(^|\.)[3-9]0000sao\.com$$ (^|\.)[a-z][1-9][0-9][a-z]\.com$-)(^|\.)[a-z]?fulibl\.(cc|com|org|net|xyz)$(^|\.)1[0-9]{2}\.one$(^|\.)13mei[5-7]\.buzz$(^|\.)18j[efg]\.life$!(^|\.)18jmttios[0-9]{2}\.com$(^|\.)18tv[1-5]\.com$1-(^|\.)2024(3[0-9]|4[0-9]|6[0-9]|7[0-9])\.xyz$(^|\.)3[0-9]{2}\.icu$(^|\.)3[0-9]{2}\.one$ (^|\.)69bag[0-1][1-9]?\.com$ (^|\.)783([a-z][a-z]?)?\.tv$"(^|\.)7mm0([0-1][0-9]?)?\.com$(^|\.)8dgo[1-57-9]\.com$&"(^|\.)91cg([1-9]|[0-9][1-9])?.com$(^|\.)91p[0-9][0-9]?\.com$@<(^|\.)91porn\.(best|com|cool|group|party|plus|site|tw|work)$(^|\.)91porn[0-9]{3}\.me$(^|\.)91porn[0-9]?\.store$(^|\.)91porn[fvxy]\.com$(^|\.)91sew1[1-6]\.buzz$(^|\.)989[a-z]?\.tv$(^|\.)99pp[1-9][0-9]\.com$(^|\.)9cha[0-9]{2}\.cc$:6(^|\.)aipa(111|222|333|444|555|666|777|888|999)\.life$"(^|\.)aisejushi(2|3|5|6)\.com$(^|\.)aiwei[1-9]{2}\.buzz$(^|\.)aqdk[0-9]{3}\.com$(^|\.)avcc1[0-9]\.com$!(^|\.)avstar0[1-9]\.(com|me)$(^|\.)awjd[1-9]?\.tv$(^|\.)awwcn[1-9]?\.top$(^|\.)banyinjia[0-9]?\.com$(^|\.)bhzyk[1-9]?\.xyz$(^|\.)bibeidh1[6-8]\.cc$(^|\.)bjini[0-9]{2}\.buzz$(^|\.)byy[0-9][0-9]?\.icu$HD(^|\.)byyum([3589]|2[235689]|3[34]|4[1-9]|5[1-79]|6[0134679])?\.com$%!(^|\.)cgbb([1-9]|1[0-9]|20)\.com$ (^|\.)chuzs[1-9]{0,2}\.buzz$(^|\.)cosaa[a-z]\.cyou$(^|\.)douyintt[0-9]\.me$(^|\.)doufuru[0-9]?\.cc$ (^|\.)doufuru[0-9]{2}?\.xyz$(^|\.)fby[1-9]?[0-9]\.icu$(^|\.)fby[1-9]?[0-9]\.one$(^|\.)fi11sm([0-9]+)?\.com$(^|\.)fiftymvapi\..+$(^|\.)flsq[0-9]{2}\.com$!(^|\.)forduck[0-1][0-9]\.com$&"(^|\.)gaogediao\.(com|me|net|org)$$ (^|\.)gossipfuli[0-9]{3,4}\.xyz$(^|\.)guifw3[1-3]\.cc$(^|\.)h5ccav[1-5]\.com$(^|\.)hhmen[1-3]\.xyz$(^|\.)hkfg[1-7]\.xyz$(^|\.)hs[1-9]{2}\.vip$(^|\.)jav777\.(cc|tv|work)$(^|\.)jb[1-9][0-9]\.lol$"(^|\.)jbk0([0-1][0-9]?)?\.com$(^|\.)jdyy[1-9]?\.me$(^|\.)jiuse[0-9]{1,3}\.com$"(^|\.)jmtt\.(app|live|tv|vip)$(^|\.)jstv[0-9]{2}\.com$(^|\.)kdfl[0-9]{2}\.xyz$$ (^|\.)kimoav([1-9][0-9]?)?\.com$*&(^|\.)kpkuang\.(bond|fun|info|one|us)$(^|\.)ksyp0[1-9]\.com$(^|\.)lianren[1-7]\.cc$(^|\.)llyysp[0-9]{4}\.top$ (^|\.)loibus\.(cc|com|link)$+'(^|\.)loibus(100|101|202|505|606)\.top$%!(^|\.)luchuxue([0-9]{0,5})\.buzz$(^|\.)maa18[0-2][0-9]\.com$(^|\.)madouqu[0-9]{2}\.cc$(^|\.)mdyy[0-9][0-9]\.cc$(^|\.)mdyy[0-1][0-9]\.com$($(^|\.)mimi\.(cfd|lol|onl|sbs|so|vc)$(^|\.)mimi[0-9]{3}\.com$(^|\.)mitao[1-3]\.tv$(^|\.)mmtv[1-5]\.life$40(^|\.)mmwz\.(fun|in|la|me|one|pro|pw|run|tv|ws)$$ (^|\.)momotk([1-9][0-9]?)?\.uno$(^|\.)nnbw[0-2]\.xyz$%!(^|\.)putaozy([1-9][0-9]?)?\.com$(^|\.)qqbs([0-9]{2})?\.vip$(^|\.)qqsp0[1-3]\.com$(^|\.)rbp[1-9][0-9]\.com$(^|\.)rbyh[1-9]\.buzz$*&(^|\.)rule34\.(asia|us|world|xxx|xyz)$(^|\.)sao[1-6]0000\.com$(^|\.)sbyjs2[6-9]\.buzz$(^|\.)sg11[3-9]\.me$(^|\.)shdd[0-9]{2}\.buzz$$ (^|\.)shuangmawei[0-9]{2}\.buzz$(^|\.)smgsp[0-2]?\.buzz$(^|\.)spankwire[1-9]\.com$(^|\.)ssphb[0-9]{2}\.xyz$ (^|\.)supxxx[0-9]{0,2}\.com$(^|\.)sycf[0-9]?\.xyz$(^|\.)syjc1[1-6]\.xyz$'#(^|\.)tianbiav([1-9]|1[0-6])?\.com$(^|\.)tqav[1-9][0-9]\.com$(^|\.)tt[1-2][0-9]\.tv$(^|\.)ttghg[1-9][0-9]\.xyz$%!(^|\.)tttv([1-9][0-9]?|100)\.com$#(^|\.)twseb([1-9][0-9]?)?\.com$"(^|\.)uu[a-z][1-9][0-9]?\.com$(^|\.)whtdh0[1-3]\.cc$(^|\.)wmm33[0-5]\.com$(^|\.)wyfuli[1-9]\.net$(^|\.)xaa[0-9]?\.one$(^|\.)xaxy[0-9]{2}\.one$(^|\.)xg[0-9]{2}\.vip$(^|\.)xgyy([0-9]{2})?\.vip$!(^|\.)xingdh([0-9]{3})?\.xyz$(^|\.)xlywz[1-9]?\.cc$(^|\.)xomfsp[1-9]?\.buzz$(^|\.)xv[0-9]{4}\.top$ (^|\.)xxxyaom[0-9]{2}\.buzz$(^|\.)yiren[1-9][0-9]\.com$(^|\.)youyuapi\..+$(^|\.)yrrj[1-9]?\.buzz$(^|\.)yygc[0-9]?\.xyz$!(^|\.)zayy([0-9]{0,3})?\.xyz$(^|\.)zh9[0-7]\.net$(^|\.)zy[0-9]{4}\.top$(^|\.)zztt[1-6][0-9]\.com$(^|\.)zzz[1-9][0-9]\.top$($(^|\.)bilibili3(0[1-9]|1[0-2])\.xyz$#(^|\.)cav1(0[2-9]|1[0-9])\.com$#collector.xhamster.com
+ads
+<
+MEITU
meitu.com
meitudata.com
meitustat.com
+0
+PANDANET
+joyjoy.netpandanet-igs.com
+
+MEDIACHINESEGROUPmingpaomonthly.commingpaocanada.commediachinese.commingpaovan.commingpaotor.comenanyang.my
mysinchew.commings-fashion.commingpao.comyzzk.commings.hk
omghk.com
+sinchew.mymingshengbao.com
mingwatch.com
mpfinance.commpweekly.comchinapress.com.mysoccerfanz.com.mysinchew.com.myguangming.com.my
+
+MONOTYPE40fontshop-prod-responsive-images.s3.amazonaws.commonotype.commonotypeimaging.com
bitstream.comitcfonts.comfontexplorerx.com
fonts.com
fonts.netfontbook.comfontshop.comfstopimages.comlinotype.commyfonts.commyfonts.net
+0
+SCENESOURCEscenesource.me
scnsrc.me
+)
+SHANBAY
baydn.comshanbay.com
+_
+BOYLOVE
+boylove.ccboylove.liveboylove1.ccboyloves.ccfuhouse.club
+I
+CATEGORY-NOVEL
ptzwx.comquanben-xiaoshuo.com
+quanben.io
+:
+EBAY-)ebay-25-assets.s3-us-west-1.amazonaws.com
+ebayit.comebay.pl
adcommerce.tvappsonebay.net
+asebay.com
+baazee.com
+bidbay.combidorbuyindia.com
billpoint.combillpoint.infobillpoint.tvbillpoint.usbillpointnewzealand.comblogebay.combookclubcorner.combuiltfromebay.combuyitnow.combuyitnow.netbuyitnow.orgbuyitnow.tvbuyitnowshop.netcafr.cacarebay.comcargigileads.com
cebay.comcollective99.comcommerceos.comconnectcommerce.hkconnectcommerce.infoconnectcommerce.tvconnectedcommerce.comconnectedcommerce.tvcrececonebay.comcreditcardsbay.comcyber-bay.info
cyber-bay.org
+dba.dkdealbay.comdealtime.com
didce.com
douya.orgdreamtoplay.com
e-bay.come-bay.it
e-bay.net21centuryaccess.comeachpay.net
ebahy.comebay-authenticate.netebay-confirm.comebay-course.comebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.comebay-inc.comebay-inc.netebay-inc.orgebay-online.comebay-sales.comebay-stories.comebay-us.comebay-vacation.comebay.atebay.beebay.caebay.chebay.comebay.deebay.esebay.frebayjob.com
wrenchead.comwhisolutions.comrenchead.com
+nexpart.tvnexpart.com
+nexcat.comthebayuk.com
terrapeak.comebay.inebay.itebay.jpebay.ltebay.mnebay.nlebay.orgebay.phebay.pkebayjewelry.comebay.sgebay.usebay.vn
+ebay25.com
+ebay68.com
ebaya.comebayads.comebayads.netebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comteraperk.com
terapeak.infoterapeak.hkterapeak.comterapeak.caebaybags.comebaybank.comebaybenefits.comebayboutique.com
+ebayca.com
+ebayca.orgebaycafe.comebaycar.comebaycareers.com
terapeack.comebaycdn.net
ebaychina.netebayclassifiedsgroup.comebayclassifieds.comebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.comebayclub.com
ebaycoins.comebaycom.comebaycommercenetwork.comebaycourse.com
ebayd.com
+ebayde.comebaydlassifieds.comebaydts.comebayedu.comebayeletro.comebayenterprise.comebayenterprise.infoebayenterprise.netebayenterprise.tvebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com
ebaygroup.com
ebayhabit.com
ebayheels.comebayhots.comebayimg.comebayinc.comebayinc.netebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.comeachpay.com4ebaytraders.comebay.ie
+ebayla.orgebaylisting.com
ebaylocal.netebaylocationsdevacances.comebaymag.comebaymainstreet.comebaymall.comebaymarketplace.net
ebaymotors.caebaymotors.comebaymotors.orgebaymotorsblog.comebaynow.comebaynyc.com
+ebayon.com
+ebayon.netebayoncampus.comebayopen.comebayopensource.comebayopensource.netebaypakistan.netebaypark.com
ebayparts.comebayprivacycenter.com
+ebayqq.com
ebayradio.comebayrtm.comebayseller.comebayshoesstore.comebayshop.comebayshop111.comebayshopping.orgebaysocial.com
ebaysocial.ruebaysoho.com
ebaysohos.comebaystatic.com
ebaystore.comebaystore77.com
ebaystyle.comebaysweden.com
ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com
+ebaytv.orgebayuae.netebayvakantiehuizen.com
ebayvalet.comebayvietnam.netebayworlds.com
ebayy.comedisebay.com
eebay.comepinions.comeu-consumer-empowerment.comexpertmaker.comfairmarket.comfragrancebay.comfrancemail.comhalf.comhalf.tvhalfcanada.com
halfjapan.comhandbagsoutletebay.com
iebay.comirribay.comitsbetterwhenyouwinit.com
liketwice.comliveauction.com
milofetch.commusicbay.netmyconstructionworld.net
+myebay.com
nebay.netpaisapay.cc
paisapay.infopaisapay.tvpremobay.comprivatemarketplaces.netprivatemarketplaces.us
prostores.comrethink.netshopibay.netshoping.com
tearapeak.comsourcingforebay.netsourcingforebay.tvspeybay.comstoresense.com
+svpply.comtelebay.comtelesell.com
texttobuy.orgtheebayshop.comtheopportunityproject.orgtowerauction.com
vendu.com
weareebay.comwatch-ebay.org
wwwdecide.comwwwebay.comwwwebay.netwwwwebay.comxindelu.comxn--3et96bj49ahpq.comxn--4vq475g.comxn--4vq477m.comxn--7hv594h.comxn--hb4aw0g.comxn--q41am8x.comxn--qoq462m.comxn--tkry91n.comxn--ubt498knmf.comxn--xsq421m.comxn--xsq605n.comxn--xsq959n.comxn--yf1at58a.com
xxbay.com
yibei.orggittigidiyor.netgittigidiyorsikayet.com
+gumtree.sg
jijiji.cakiji.cakijii.cakijij.ca
kijiji.ca
kijijiauto.cakijijiautos.cakijijiforbusiness.ca
+kijijii.ca
kijijiraps.cakijji.ca
+kijjiji.ca
automobile.fr
mobile.demobileinternational.com
+q10.jpqoo10.jpachievementanalytics.comcdn-terapeak.comlistinganalytics.netmarketexecutive.netebay.com.sgebay.com.ecebayauthenticate.com.cnebay.com.hksourcingforebay.com.cnebay.com.phebay.com.mt
ebaycbt.co.krterapeak.com.hkebay.com.myebay.com.auebay.com.ar
+ebay.co.za
+ebay.co.ve
+ebay.co.uk
+ebay.co.nz
adcommerce.cn
+cn
appforebay.cn
+cnconnectcommerce.cn
+cn"connectcommerce.com.cn
+cn connectedcommerce.cn
+cncyber-bay.cn
+cncyber-bay.com.cn
+cnebay.cn
+cnebay.com.cn
+cnebay.net.cn
+cnebay.org.cn
+cn
+ebay.yn.cn
+cn
+ebay.zj.cn
+cnebayadvertising.cn
+cnebayclassifieds.cn
+cn"ebayclassifieds.com.cn
+cnebaydesc.cn
+cnebaydesc.com.cn
+cn
+ebaydns.cn
+cnebayenterprise.cn
+cn!ebayenterprise.com.cn
+cn
ebaymotors.cn
+cnebaymotors.com.cn
+cnebaypedia.cn
+cnebaypedia.com.cn
+cnebayshopping.cn
+cnebayshopping.com.cn
+cn
ebaystatic.cn
+cn
ebaystores.cn
+cnhalf.com.cn
+cnprostores.cn
+cnprostores.com.cn
+cnxn--7hvy28f.cn
+cnkijijidns.cn
+cnkijijidns.com.cn
+cn&mobileinternational.com.cn
+cnterapeak.cn
+cn
+
+CATEGORY-BANK-JP
a-bank.jp
114bank.co.jp77bank.co.jp82bank.co.jpakita-bank.co.jpashikagabank.co.jp
awabank.co.jp
+bk.mufg.jp
boj.or.jpchibabank.co.jpchibakogyo-bank.co.jpchikubank.co.jpchugokubank.co.jpdaiichibank.co.jpfukuibank.co.jpfukuokabank.co.jpgunmabank.co.jphigobank.co.jphiroshimabank.co.jp
hokkoku.co.jphokuetsubank.co.jphokutobank.co.jphokuyobank.co.jp
hyakugo.co.jpikedashinsen.co.jpiwatebank.co.jp
iyobank.co.jpjoyobank.co.jpjuhachibank.co.jpjuroku.co.jpkagobank.co.jpkinki.co.jpkitakyushubank.co.jpkiyobank.co.jpkyotobank.co.jpmichinokubank.co.jp
mie.co.jpmiyazakibank.co.jpmizuhobank.co.jpmusashinobank.co.jpnantobank.co.jpnishinipponbank.co.jpogakikyoritsu.co.jpoitabank.co.jpokinawabank.co.jpresonabank.co.jpryukyubank.co.jpsagabank.co.jpsaitama-resona.co.jpsaninbank.co.jpshigagin.co.jpshikokubank.co.jpshimizubank.co.jpshinwabank.co.jpshizuokabank.co.jpshonai.co.jp
+smbc.co.jpsurugabank.co.jptajimabank.co.jptohobank.co.jptohoku-bank.co.jptomibank.co.jptottoribank.co.jptoyobank.co.jptsukubabank.co.jpyamagatabank.co.jpyamaguchibank.co.jpyamanashibank.co.jpyokohamabank.co.jp
+
+CATEGORY-BROWSER-!CN
+chrome
librewolf.netepicbrowser.comkmeleonbrowser.org
brave.combromite.org
+chrome.comcromite.orgdecentr.net
dothq.org
+floorp.appiridiumbrowser.dekiwibrowser.combasilisk-browser.orgchromium.orgwaterfox.netnetsurf-browser.org
opera.compalemoon.orgpulsebrowser.appqutebrowser.orgvivaldi.comminbrowser.orgfirefox.comfirefoxusercontent.comtorproject.org
censorship.nobrowser.kagi.com
+3
+CK101
ck101.com
ckcdn.comckck.fun
+F
+ IDENTRUST
identrust.com
identrust.netidentrust.co.uk
+)
+LEANPLUM-ADSleanplum.com
+ads
+
+0X0
+0x0.st
+:
+BLUESKYbsky.appbsky.networkbsky.social
+5
+CAS
+csdl.ac.cniscas.ac.cn
las.ac.cn
+?
+MAFENGWOmafengwo.cnmafengwo.commafengwo.net
+(
+REDHAT
+redhat.com
+redhat.org
+
+ CAMBRIDGE
cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.org
cam.ac.ukdlib.eastview.com
+
+DRWEBdrweb.bydrweb.cn
drweb.comdrweb.frdrweb.kzdrweb.uzdrweb-av.dedrweb-av.esdrweb-av.itdrweb-av.pldrweb.co.jp
+
+
+PERPLEXITY
perplexity.ai
+"
+POEpoe.com
+poecdn.net
+
+REAGROUPrealtor.com
reastatic.net
proptiger.comhousing.comhousingcdn.comsmartexpos.comrea-asia.com
iproperty.comrumah123.com
+rea.io
+makaan.commove.commoveaws.com
myfun.comthinkofliving.comrea.tech
ippstatic.com
rea-group.com
+rea.design
+rea.globalspacely.com.auhackday.com.aurealcommercial.com.aurealestate.com.auflatmates.com.auiproperty.com.sgiproperty.com.myinventorship.com.ausmartline.com.auhometrack.com.ausquarefoot.com.hkproperty.com.au
+
+ REALCLEAR
realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com
+/
+ STARTPAGE
startpage.comixquick.com
+
+WEBTYPEwebtype.com
+
+CATEGORY-MOOC-CNmoocs.unipus.cnopencourse.pku.edu.cn
study.163.comchinesemooc.org
+cnmooc.orgicourse163.orgicourses.cnmooc.cnopenlearning.compmphmooc.comicve.com.cn
++
+FORBES
+forbes.com
forbesimg.com
+i
+HKBNcsifund.orghkbn.net
+hkbnes.netjos.comhkbn.com.hkspeedtest.com.hk
+
+ZTEbbs.ztedevices.comwww.ztedevices.comnubia.cn
nubia.comredmagic.comztemall.com
ztems.com
+zte.com.cnztedevices.com
+!cn
+
+ KYODONEWS47gyosei.jp
47news.jpkyodo-d.info
+kyodo-d.jpkyodoimages.jpkyodonews.jp
kyodonews.netnewsmart.jp
+nna.jp
+
+NINTENDOfireemblemawakening.com
wiipartyu.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.com100classicbooks.comkirbysepicyarn.commiitomo.commiiverse.comnentindo.netnintendo-europe-sales.comnintendo-europe.comnintendo.atnintendo.benintendo.chnintendo.comnintendo.denintendo.dknintendo.esnintendo.eu
xenoblade.com
wiivc.netnintendo.finintendo.frnintendo.itnintendo.netnintendo.nlnintendo.nonintendo.ptnintendo.runintendo.senintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.comdkr.compokemonmysterydungeon.com
+amiibo.comkirbysuperstarultra.com
+dialga.comgiratina.com
+kyurem.com
pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.compokemon-unitepgame.compokemon.compokemonbank.compokemonblackwhite.com
pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.com donkeykongcountryreturns.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.netxn--mts47c3w9b1qr.netsplatoon2tournament.comstarfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.commariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.comsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com
wii-u.com
+wiifit.comwiifitu.comfire-emblem-heroes.com
wiisports.comwiisportsresort.comwiiugamepad.comnintendo.co.krnintendo.co.jpnintendo.co.uknintendo.co.zanintendo.com.hknintendo.com.ptlegendofzelda.cn
+cn legendofzelda.com.cn
+cnmiitomo.com.cn
+cnnintendolabo.cn
+cnnintendoswitch.cn
+cn!nintendoswitch.com.cn
+cnsupersmashbros.cn
+cn!supersmashbros.com.cn
+cn xn--mts47c3w9b1qr.cn
+cnmariokart.cn
+cnmariokart.com.cn
+cn!supermariobros.com.cn
+cn
+
+PEARSONpearsonassessment.frmypearsonenglish.chactiveteachonline.comaddison-wesley.ch
adobepress.chxn--pearsonenespaol-brb.com
ciscopress.chconnectionsacademy.comconnectionseducation.comconnectionslearning.comthemathsfactor.comecpa.frtalentlens.comilongman.com
integral7.comstark-verlag.ch
+longman.ch
+mut.chmyhelpinglab.commylogiclab.com
mypearson.compearsonassessment.dk
pvue2.commypearsonshop.mxmysocialworklab.com
pvue1.compearson-anaya.compearson-intl.compearson-schule.chpearson-studium.ch
+pearson.chpearsonassessment.depobl-content.compearsonvue.netpearson.compearsonvue.compearsonperu.pepearsononlineacademy.compearsonlongman.ch
+pearson.es
+pearson.fr
+pearson.plpearsonactivelearn.compearsonassessment.be
+pearson.clpearsonhighered.com'#internationalconnectionsacademy.compearsonassessment.nlpearsonassessment.nopearsonassessment.sepearsonassessments.compearsoncanada.capearsonclinical.bepearsonclinical.capearsonenespanol.compearsonelt.com
pearsonelt.chpearsonclinical.depearsonclinical.dkpearsonclinical.espearsonclinical.eupearsonclinical.frpearsonclinical.inpearsonclinical.nlpearsonclinical.nopearsonclinical.sepearsoncmg.compearsoncred.compearsoneducationbooks.com
pearsoned.compearsoneducacion.netpearsonclinical.com.bractivelearnprimary.com.aupearsoned.co.nz
pearson.co.jppearson.com.hkpearsoninstitute.ac.zapearson.com.uypearson.com.arpearson.com.au
+btec.co.ukpearsonclinical.com.au%!pearsonschoolsandfecolleges.co.ukpearsonclinical.co.uk
pearson.co.innetname.com.brmypearsonshop.com.mxquatrum.com.bractivelearnprimary.co.ukescapestudios.co.ukdombosco.com.brpearsonplaces.com.aupearson.com.cn
+cn
+
+SOGOUsogoucdndl.comyidianliulan.cn
+ggowan.com
+go2map.com
pinyin.cn
+qd.inkbinglianhuajianzhan.com
+sgtmos.comsgyeyou.comsgyouxi.comsogo.comsogou.cn
sogou.com
sogou.netyuweikuijianzhan.comggoplay.com sg.cnsogouimecdn.com
sogou-inc.comsogou-op.orgsoso.comyidianliulan.comsososnap.comteemo.cnwannianqingjianzhan.comxiangrikuijianzhan.comxiangrikuisite.com
xinyan.cnyeyousg.comsogoucdn.comsoso.com.cnsogou.com.cn
+Q
+2KGAMES
+2k.com2kcoretech.online2kgames.comtake2games.com
+
+CATEGORY-SOCIAL-MEDIA-CN
+picself.cndandanvoice.com
dandan818.com
+sinaimg.cn
+douban.com
douban.fmdoubanio.com
gracg.comprocg.cn
sinajs.cnsina.cn
+sinajs.comsina.com
97973.comsina.netvideoself.cnsinaedge.comt.cnsinaimg.comxhaiwai.com
+bcyimg.com
tieba.comsinaapp.com
wbimg.comwbimg.cnwcdn.cnweibo.cn
weibo.comweibocdn.combcy.net
zhimg.com
+xhscdn.com
+xhscdn.netxiaohongshu.com
+yy.comyystatic.com
+duowan.comdwstatic.com
zhihu.comsina.com.cnweibo.com.cntieba.baidu.comlf-rc1.yhgfb-cn-static.com2016.sina.cn
+adsad.sina.com.cn
+adsadbox.sina.com.cn
+ads!adimages.sina.com.hk
+ads!adimg.mobile.sina.cn
+ads adimg.uve.weibo.com
+ads!adm.leju.sina.com.cn
+adsads.sina.com
+adsalitui.weibo.com
+adsapi.apps.sina.cn
+ads appgift.sinaapp.com
+ads#appsupdate.sinaapp.com
+adsatm.sina.com
+adsbeacon.sina.com.cn
+ads
biz.weibo.com
+ads%click.uve.mobile.sina.cn
+ads click.uve.weibo.com
+ads0#contentrecommend-out.mobile.sina.cn
+ads$count.video.sina.com.cn
+ads counter.sina.com.cn
+adscre.dp.sina.cn
+adscre-dp.sina.cn
+adsd00.sina.com.cn
+adsdcads.sina.com.cn
+adsdl.kjava.sina.cn
+adsdmp.sina.cn
+adsdp.im.weibo.cn
+ads
game.weibo.cn
+adsgame.weibo.com
+ads"gw5.push.mcp.weibo.cn
+ads"gw6.push.mcp.weibo.cn
+ads"int.dpool.sina.com.cn
+ads%interest.mix.sina.com.cn
+ads log.mix.sina.com.cn
+adslog.sina.cn
+ads!mg.games.sina.com.cn
+adsnewspush.sinajs.cn
+ads oascentral.sina.com
+ads#oascentral.sina.com.hk
+adsp4p.sina.com.cn
+adspalmnews.sina.cn
+adspay.mobile.sina.cn
+adspfp.sina.com.cn
+adspfpip.sina.com
+ads!promote.biz.weibo.cn
+adsrm.sina.com.cn
+adsrs.sinajs.cn
+ads"s.img.mix.sina.com.cn
+adssapi.sina.cn
+adssax.sina.cn
+adssax.sina.com.cn
+adssaxn.sina.com.cn
+adssaxs.sina.com.cn
+ads sbeacon.sina.com.cn
+ads"sdkapp.mobile.sina.cn
+ads!sdkapp.uve.weibo.com
+ads$sdkclick.mobile.sina.cn
+adsslog.sina.cn
+adsslog.sina.com.cn
+ads'staticadm.leju.sina.com.cn
+adstjs.sjs.sinajs.cn
+ads"trends.mobile.sina.cn
+ads"u1.img.mobile.sina.cn
+ads&wapwbclick.mobile.sina.cn
+ads!wbapp.mobile.sina.cn
+ads wbapp.uve.weibo.com
+ads#wbclick.mobile.sina.cn
+ads$wbpctips.mobile.sina.cn
+adswidget.weibo.com
+ads woocall.sina.com.cn
+adszymo.mps.weibo.com
+ads
+
+
+CODEFORCEScodeforces.com
+@
+ KUROGAMES
kurogames.com
+cnaki-game.com
+cn
+7
+PGYER
pgyer.com
+tracup.comfrontjs.com
+
+XAIx.ai
+2
+ CAMWHOREScamwhores.tvcamwhores.video
+
+ESPNespn.api.edge.bamgrid.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.netdtci.codtci.technologyespn.comespn.netespncdn.com
+espnqa.com
watchespn.com
+espn.co.uk
+
+GITVgitv.cngitv.tv
+(
+UDEMY
udemy.comudemycdn.com
+;
+17ZUOYE
+17zuoye.cn17zuoye.com17zuoye.net
+H
+BTTZYW
+btt804.com
+btt904.com
+bttzyw.com
+bttzyw.net
+
+
MINDGEEK-PORNlivehdcams.comdigitalplayground.com
+porniq.com
+pornmd.comseancody.comthumbzilla.comtwistys.com
+webcams.tvwhynotbi.commydirtyhobby.com
+mdhcdn.com
+nutaku.com
+nutaku.netgaytube.com
+phncdn.comphprcdn.com
babes.compornhub-deutsch.netpornhubapparel.compornhub.compornhub.orgpornhubpremium.comredtubepremium.commen.comporngub.com
+rdtcdn.com digitalplaygroundnetwork.com
tube8.comtube8.frbrazzer.combrazzers.combrazzers.xxxbrazzersnetwork.com
mofos.comrealitykings.com
+rk.comextremetube.comkeezmovies.comyouporn.comyouporngay.comyoupornpremium.com
youpornru.comyopornshop.com
+ypncdn.comredtube.comredtube.com.br
+B
+LETHALHARDCORElethalhardcore.comlethalhardcorevr.com
++
+SEGMENT-ADScdn.segment.com
+ads
+4
+
+STATICFILEstaticfile.netstaticfile.org
+
+ ALJAZEERA
+ajplus.net
aljazeera.com
aljazeera.netpalestineremix.comsarajevopodopsadom.comsrebrenica360.comsyhacked.com
+
+GFWkone.comsm-miracle.com
+0rz.tw 10.tt1000giri.net
100ke.org10beasts.net10conditionsoflove.com10musume.com
123rf.com
12bet.com
12vpn.com
12vpn.net1337x.to138.com141hongkong.com
141jj.com141tube.com
173ng.com177pic.info
+17t17p.com18board.com18board.info18onlygirls.com
18p2p.com18virginsex.com
+1949er.org1984bbs.com1984bbs.org1991way.com1998cdp.orgzzux.com1bao.org
1dumb.com
1e100.net1eew.com1mobile.com
+1mobile.tw
1pondo.tv2-hand.info2000fun.com2008xianzhang.info2017.hk2021hkcharter.com
2047.name
+21andy.com
+21join.com
+21pron.com
21sextury.com
+zzcloud.me
zzcartoon.com
+233abc.com24hrs.ca24smile.org25u.com
2lipstube.com2shared.com
2waky.com3-a.net30boxes.com
315lz.com
32red.com
+36rain.com3a5a.com3arabtv.com3boys2girls.com3d-game.com
3proxy.ru3ren.ca3tui.net
404museum.com43110.cf
+466453.com4bluestones.biz
4chan.com4dq.com4everproxy.com4irc.com
4mydomain.com4pu.com
4rbtv.com4shared.com4sqi.net 51.ca
51jav.org51luoben.com5278.cc5299.tv
zyzc9.com5aimiku.com5i01.com5isotoi5.org5maodang.com63i.com64museum.org64tianwang.com
+64wiki.com 66.ca
666kb.com6do.news
6park.com6parkbbs.com6parker.com
6parknews.com7capture.com7cow.com8-d.com85cc.net85cc.us85st.com
+881903.com888.com888poker.com
89-64.org
zyxel.comzyns.com8964museum.comzynamics.com8z1.net9001700.com
908taiwan.org
+91porn.com
+91vps.club
+92ccav.com991.com99btgc01.com
99cn.info9bis.com9bis.net
+9cache.com9gag.comzynaima.coma-normal-day.comzvereff.com
zuola.comaamacau.comabc.com
+zuobiao.me
+zuo.laabc.xyz
abchinese.comabclite.netabebooks.com
+zsrhao.comzspeeder.meablwang.comaboluowang.comabout.googleabout.meaboutgfw.comabs.edu
+zpn.im
acast.com
accim.orgaccountkit.comaceros-de-hispania.com
+acevpn.comacg18.me
+acgbox.org
acgkj.comacgnx.seacmedia365.comacmetoy.comzozotown.comactfortibet.orgzorrovpn.comactivpn.comaculo.us
adcex.comaddictedtocoffee.deaddyoutube.comadelaidebbs.com
+zophar.net
admob.com
+zoozle.netads-twitter.comadsense.comadult-sex-games.comzootool.comadultfriendfinder.com
adultkeep.netadvanscene.com
advertfan.comadvertisercommunity.comzoogvpn.com
+ae.orgaei.orgaenhancers.comaex.com
+af.mil
afantibbs.comafr.com
afreecatv.com
agnesb.fragoogleaday.comagro.hk
+ai-kan.net
+ai-wen.netzonghexinwen.net
ai.googleaiph.netairasia.comairconsole.com
+airvpn.org
aisex.comzonghexinwen.comzonaeuropa.comaiweiwei.comaiweiweiblog.com
akademiye.orgakamaihd.netakiba-online.com
akiba-web.comakow.orgal-islam.com
al-qimmah.netalabout.comalanhou.com
alarab.qaalasbarricadas.orgalexlur.org
alforattv.netalhayat.com
+zomobo.netaliengu.com
alive.baralkasir.comall4mom.orgallcoin.comallconnected.coalldrawnsex.comallervpn.comallfinegirls.comallgirlmassage.comallgirlsallowed.orgallgravure.com
+zodgame.usallinfa.comalljackpotscasino.comallmovie.comallowed.orgalmasdarnews.comalmostmy.comalphaporno.comalternate-tools.comalternativeto.net
+altrec.comalvinalexander.comalwaysdata.comalwaysdata.net
alwaysvpn.com
+zmw.cn
zkaip.com
+amazon.com
ameblo.jpamericangreencard.comamericanunfinished.comamiblockedornot.comamigobbs.netamitabhafoundation.usamnesty.orgzippyshare.com
+amnesty.twamnestyusa.orgamnyemachen.orgamoiist.comampproject.orgamtb-taipei.org
anchor.fmanchorfree.comancsconf.organdfaraway.netandroid-x86.organdroid.comandroidify.comandroidplus.co
androidtv.comandygod.comangela-merkel.de
angelfire.com
+angola.org
angularjs.organimecrazy.netaniscartujo.comannatam.com
+anobii.com
anonfiles.comanontext.comanonymitynetwork.comanonymizer.comanonymouse.org
+anpopo.comanswering-islam.organthonycalzadilla.com
anthropic.comanti1984.comantichristendom.comantiwave.netanyporn.com
+anysex.comao3.org
+ziporn.comaofriend.com
zinio.com
+aojiao.org
+zim.vnaomiwang.comapartmentratings.comapartments.comapat1989.orgapetube.comzillionk.com
ziddu.com
+api.aizi.mediazhuichaguoji.org
zhuatieba.comzhuanxing.cn
apiary.iozhuangbi.me
+apigee.com
+apk-dl.comapk.supportapkcombo.com
apkmirror.comapkmonk.com
+apkplz.comapkpure.comapkpure.netaplusvpn.comzhreader.comzhoushuguang.com
zhongmeng.orgzhongguotese.netzhongguorenquan.orgzhongguo.caappbrain.comappdownloader.netappledaily.comzhinengluyou.com
zhenxiang.bizzhenlibu1984.comappshopper.comappsocks.netappspot.com
appsto.reaptoide.com
zhenlibu.info
+archive.fo
+archive.is
+archive.li
+archive.mdarchive.org
+archive.ph
archive.todayarchiveofourown.comarchiveofourown.orgarchives.govzhengwunet.orgarctosia.comareca-backup.orgarena.taipeiarethusa.suarlingtoncemetery.milarmy.milart4tibet1998.orgarte.tvartofpeacefoundation.orgartstation.com
artsy.net
asacp.orgasdfg.jp
+asg.toasia-gaming.comasiaharvest.orgasianage.comasianews.itasiansexdiary.comasianspiss.comasianwomensfilm.deasiaone.comasiatgp.comasiatoday.usaskstudent.com
+askynz.net
zhengjian.orgzhenghui.orgassembla.comzhanlve.org
+assimp.orgastrill.comzhangtianliang.com
atchinese.com
atdmt.com
atgfw.orgathenaeizou.comatlanta168.com
atlaspost.com
+atnext.com
zhangboli.netzhanbin.netauthorizeddns.netauthorizeddns.orgauthorizeddns.usautodraw.com
av-e-body.com
+av.comav.movie
+zgzcjj.net
avaaz.org
avbody.tv
avcity.tv
+avcool.comavdb.inavdb.tv
avfantasy.comavg.com
avgle.comavidemux.orgavmo.pw
avmoo.com
avmoo.netavmoo.pwavoision.comavyahoo.com
axios.comaxureformac.com
azerbaycan.tvazerimix.comazirevpn.comazubu.tvazurewebsites.netb-ok.ccb0ne.combabylonbee.com
+zgsddh.com
backchina.com
+zfreet.combacktotiananmen.combad.newsbadiucao.combadjojo.com
badoo.com
+zeutch.combaidu.jp
+baijie.orgbailandaily.com
+baixing.me
+baizhi.orgbakgeekhome.tkbanana-vpn.comband.usbandcamp.combandwagonhost.combangbrosnetwork.combangchen.netbangdream.spacebangkokpost.combangyoulater.combankmobilevibe.combannedbook.orgbannednews.orgbanorte.combaramangaonline.combarenakedislam.com
+zeronet.io
zerohedge.com
barton.debastillepost.combayvoice.net
+bb-chat.tvzenmate.combbc.com
+bbc.inbbcchinese.com
bbchat.tvzengjinyan.orgbbg.govbbkz.combbnradio.org
+bbs-tw.com
zello.com
+zb.com
+zattoo.com
zapto.org
+zaozon.com
+zaobao.com
+zannel.com
+zamimg.com
+zalmos.comzacebook.com
z-lib.orgyzzk.com
yysub.netyyjlymb.xyzyyii.orgyx51.netywpw.comyvesgeleyn.com
bbsdigest.combbsfeed.combbsland.com
bbsmo.com
+bbsone.combbtoystore.com
+yuvutu.comyunchao.net
bcchinese.netbcex.ca
bcmorning.combdsmvideos.netbeaconevents.combebo.combeeg.com
+beevpn.combehance.netbehindkink.com000webhost.combeijing2022.artbeijingspring.com
beijingzx.orgbelamionline.com
bell.wikibemywife.ccberic.meberlinerbericht.deberlintwitterwall.comyulghun.combestforchina.orgbestgore.combestpornstardb.combestvpn.combestvpnanalysis.combestvpnserver.combestvpnservice.combestvpnusa.com
+bet365.combetfair.combetternet.co
bettervpn.combettween.com
betvictor.com
bewww.netbeyondfirewall.combfnn.orgbfsh.hk
bgvpn.combianlei.combiantailajiao.combiantailajiao.inbiblesforamerica.org
bibox.combic2011.org
+biedian.mebig.onebigfools.combigjapanesesex.combigmoney.bizbignews.org
+bigone.combigsound.orgbild.de
biliworld.combillypan.combinance.combinux.mebird.so
bit-z.com
+bit.do
+bit.ly
+bitbay.netyuanzhengtang.orgbitchute.combitcointalk.orgbitcoinworld.combitfinex.combithumb.comyuanming.net
+bitmex.combitshare.combitsnoop.combitterwinter.orgbitvise.combitz.ai
+bizhat.com
bjnewlife.orgbjs.orgbjzc.orgbl-doujinsouko.comblacklogic.comblackvpn.comblewpass.com
+blinkx.com
blinw.comblip.tvblockcast.itblockcn.comblockedbyhk.com
blockless.com
ytimg.comytht.net yt.beblog.de
+youxu.info
+youwin.comyouversion.comyoutubekids.comyoutubegaming.comyoutubeeducation.com
youtubecn.comblog.googleyoutube.comyoutube-nocookie.comblog.jpyoutu.beyouthnetradio.orgyouthforfreechina.org
youshun12.com
yousendit.comyourtrap.comyourprivatevpn.comyourlust.comyourlisten.com
yourepeat.comyour-freedom.netyouporngay.comyouporn.com
+youpai.orgyoungspiration.hkyoungpornvideos.comblogblog.comblogcatalog.comblogcity.meblogdns.orgblogger.com
+blogimg.jp
bloglines.com
bloglovin.comyoumaker.comyoujizz.comyoudontcare.comblogspot.aeblogspot.alblogspot.amblogspot.bablogspot.beblogspot.bgblogspot.cablogspot.catblogspot.chblogspot.clyou.comblogspot.comyou-get.org
+yorkbbs.cayong.huyolasite.comyogichen.orgyobt.tvyobt.com
yobit.netyizhihongxing.com
yipub.com
+yinlei.org
yingsuoss.comyilubbs.comblogspot.czblogspot.deblogspot.dkblogspot.fiblogspot.frblogspot.grblogspot.hkblogspot.hrblogspot.hublogspot.ieblogspot.inblogspot.isblogspot.itblogspot.jpblogspot.krblogspot.liblogspot.ltblogspot.lublogspot.mdblogspot.mkblogspot.mxblogspot.myblogspot.nlblogspot.noblogspot.peblogspot.ptblogspot.qablogspot.roblogspot.rublogspot.seblogspot.sgblogspot.siblogspot.skblogspot.snblogspot.twblogspot.ug
+blogtd.net
+blogtd.org
bloodshed.netbloomberg.cn
bloomberg.combloomberg.debloombergview.combloomfortune.comblubrry.comblueangellive.com
+bmfinn.com
bnbstatic.combnews.co
+yigeni.com
+bnn.cobnrmetal.comboardreader.combod.asiabodog88.combolehvpn.net
yidio.combonbonme.com
bonbonsex.combonfoundation.org
bongacams.comboobstagram.comyibaochina.com
+yibada.combookdepository.combookepub.comyhcw.netygto.comboomssr.comborgenmagazine.com
+bot.nu
botanwang.combowenpress.com
boxpn.com
boxun.comboxun.tv
boxunblog.com
boxunclub.comboyangu.comboyfriendtv.comboysfood.comboysmaster.comyeyeclub.com br.stbrainyquote.combrandonhutchinson.combraumeister.org
brave.com
bravotube.netbrazzers.combreached.to
break.combreakgfw.combreaking911.combreakingtweets.com
breakwall.netbriefdream.com
+briian.com
brill.combrizzly.com
brkmd.com
broadbook.combroadpressinc.com
brookings.edu
brucewang.net
brutaltgp.com
+bt2mag.combt95.com
btaia.com
+btbtav.com
btc98.combtcbank.bankbtctrade.im
btdig.com
+btdigg.orgbtku.mebtku.orgbtspread.combtsynckeys.combudaedu.orgyespornplease.combuffered.com
bullguard.com
+bullog.org
bullogger.com
bumingbai.netbunbunhk.combusayari.combusiness-humanrights.org
business.pagebusinessinsider.comyesasia.combusinessweek.combusu.org
busytrade.com
+buugaa.comyes.xxxbuzzhand.combuzzhand.netbuzzorange.combuzzsprout.combvpn.com
+bwgyhw.combwh1.netbwsj.hkyes-news.com bx.tl
bybit.com
yegle.netbypasscensorship.org
byrut.orgc-est-simple.com
+c-span.orgc-spanvideo.org
c100tibet.orgc2cx.com
+cableav.tvcablegatesearch.net
cachinese.com
cacnw.com
cactusvpn.com
cafepress.com
yeeyi.comcaijinglengyan.comcalameo.comcalebelston.com
calendarz.comcalgarychinese.cacalgarychinese.comcalgarychinese.netcam4.comcam4.jpcam4.sgcamfrog.comcampaignforuyghurs.orgcams.com
+yeelou.comcanadameet.comcanalporno.com
canyu.org
+cao.imcaobian.infocaochangqing.comyecl.netcarabinasypistolas.comcardinalkungfoundation.org
+carfax.comyeahteentube.comcaribbeancom.comcarmotorshow.comcarrd.cocartoonmovement.comcasadeltibetbcn.orgydy.comyayabay.comcasinobellini.comcasinoking.comcasinoriva.com
+castbox.fmcatch22.netcatchgod.comcatfightpayperview.xxxyangjianli.comyanghengjun.comyande.recato.org
cattt.com
+cbc.cayam.comcbsnews.comyakbutterblues.comcccat.cccccat.co
ccdtr.org
+cchere.comccim.org
cclife.ca
+cclife.orgcclifefl.orgccthere.comccthere.netcctmweb.net
cctongbao.comccue.caccue.com
+ccvoice.cayadi.sk
+cdbook.orgcdcparty.comcdef.org
cdig.infocdjp.org
+y2mate.comcdn-telegram.org
+xyy69.info
xyy69.comxysblogs.orgxys.orgxxxymovies.com
xxxy.infoxxxy.bizxxxfuckmom.comcdninstagram.comcdp1989.orgcdp1998.orgcdp2006.orgxxx.xxx
cdpeu.org
+cdpusa.org
+cdpweb.org
cdpwu.orgcdw.comcecc.govcellulo.info
cenews.euxxx.comcenterforhumanreprod.comcentralnation.comcenturys.net certificate-transparency.orgxxuz.com
xxlmovies.comcfos.decfr.org
cftfc.comcgdepot.orgcgst.edu
xxbbx.com
+change.org
changeip.namechangeip.netchangeip.org
+changp.comchangsa.netchannelnewsasia.com
+chaoex.comchapm25.comxvinlink.comchatgpt.comchatnook.comchaturbate.comcheckgfw.comchengmingmag.comchenguangcheng.comchenpokong.comchenpokong.netchenpokongvip.com
+xvideos.escherrysave.comchhongbi.orgchicagoncmtv.comxvideos.com
china-mmm.netxvideos-cdn.com
xvideo.ccchina-week.comxvbelink.comchina101.comchina18.orgchina21.comchina21.orgchina5000.uschinaaffairs.orgchinaaid.mechinaaid.netchinaaid.orgchinaaid.uschinachange.orgchinachannel.hkchinacitynews.bechinacomments.orgchinadialogue.netchinadigitaltimes.netchinaelections.orgchinaeweekly.com
chinafile.comchinafreepress.org
chinagate.comchinageeks.orgchinagfw.orgchinagonet.comchinagreenparty.orgchinahorizon.org
chinahush.comchinainperspective.comchinainterimgov.orgchinalaborwatch.orgchinalawandpolicy.comchinalawtranslate.com
chinamule.comchinamz.orgchinanewscenter.com
xuzhiyong.net
xuehua.uschinarightsia.orgchinasmile.net"chinasocialdemocraticparty.com
chinasoul.orgchinasucks.netchinatimes.comchinatopsex.com
+xuchao.orgchinatweeps.com
+xuchao.netchinaway.orgchinaworker.infochinaxchina.com
xtube.comchinayuanmin.orgchinese-hermit.netchinese-leaders.orgchinese-memorial.orgxskywalker.netxskywalker.com
+xsden.infoxrentdvd.comchinesedaily.comchinesedailynews.comchinesedemocracy.comchinesegay.orgchinesen.dexpud.orgchinesepen.orgchineseradioseattle.comchinesetalks.netchineseupress.comchingcheong.comchinman.net
+chithu.org
chobit.ccchrdnet.comchristianfreedom.orgchristianstudy.comxpdo.netchristusrex.org
chrlawyers.hk
+chrome.comchromecast.comchromeenterprise.googlechromeexperiments.comchromercise.comchromestatus.comchromium.orgchuang-yen.orgchubold.com
+chubun.comchurchinhongkong.orgchushigangdrug.ch
+ciciai.com
+cienen.comcineastentreff.de
cipfg.orgcirclethebayfortibet.orgcirosantilli.com
citizencn.com
citizenlab.cacitizenlab.orgcitizenscommission.hkcitizensradio.org
+city365.ca
+city9x.comcitypopulation.decitytalk.tw
civicparty.hk!civildisobediencemovement.orgcivilhrfront.orgciviliangunner.com
civilmedia.twcivitai.com
ck101.comxnxx.comclarionproject.orgclassicalguitarblog.net
claude.aixn--p8j9a0d9c9a.xn--q9jyb4c
+xn--oiq.cc
cleansite.bizcleansite.infocleansite.usclearharmony.netclearsurance.comclearwisdom.netclementine-player.orgxn--ngstr-lra8j.comclinica-tibet.ruclipfish.decloakpoint.comxn--i2ru8q2qg.comcloudflare-ipfs.comcloudfunctions.netclub1069.comclubhouseapi.comclyp.itcmcn.orgcmegroup.comxn--czq75pvv1aj5c.orgxn--9pr62r24a.comcms.gov
cmule.com
cmule.org
+cmx.imcn-proxy.comxn--4gq171p.comxmovies.comxml-training-guide.com
+xm.comxlfmwz.infoxlfmtalk.comxkiwi.tkxjtravelguide.com
+xjp.ccxizang-zhiye.orgxixicui.icu
+xiuren.org
xiongpian.comxinyubbs.net
+cn6.eu
xinshijue.com
cnabc.comxinsheng.netcnd.orgxinjiangpolicefiles.org
+cnineu.comcnn.com
xinhuanet.orgcnpolitics.orgcnproxy.comxing.comxihua.es
cobinhood.com
+cochina.cocochina.orgcode1984.comcodeshare.iocodeskulptor.org
+coin2co.incoinbene.comcoinegg.com
+coinex.com
coingecko.com
+coingi.comcoinmarketcap.comxiezhua.com
cointiger.comcointobe.com
+coinut.comcollateralmurder.comcollateralmurder.org
+com.googlecomefromchina.com
comic-mega.mecommandarms.comcomments.appcommentshk.comcommunistcrimes.orgxiaxiaoqiang.netcommunitychoicecu.comcomparitech.comcompileheart.comcompress.to
xiaomi.eu
conoha.jpcontactmagazine.net
+xiaoma.org
+convio.net
+coobay.com
+cool18.comcoolaler.comcoolder.com
+xiaolan.me
coolncute.comcoolstuffinc.comcorumcollege.comcos-moe.com
xiaohexie.com
cosplayjav.pl
+costco.comcotweet.comcounter.socialcoursehero.comcoze.comcpj.orgcq99.uscrackle.com
crazys.cc
crazyshit.com
crbug.comcrchina.orgcrd-net.orgcreaders.netcreadersnet.comcreativelab5.comcrisisresponse.googlecristyli.com
crocotube.comxiaod.incrossthewall.netcrossvpn.netcroxyproxy.com
crrev.comcrucial.comcrunchyroll.comcsdparty.comcsis.org
csmonitor.comxiaochuncnjp.com
+csuchen.de
xiaobaiwu.comxianqiao.netctao.orgctfriend.netxianjian.tw
ctowc.orgxianchawang.net
+ctwant.comcuhkacs.org
+cuihua.orgcuiweiping.net
+culture.tw
cumlouder.com
curvefish.comcusp.hkcusu.hk
cutscenes.net
+xianba.netxhamster.comcyberghostvpn.com
cynscribe.com
cytode.usd-fukyu.comd100.net
xgmyd.comxfinity.com
d2bay.com
+d2pass.comxerotica.comxda-developers.comxcritic.comdabr.eudabr.me
dabr.mobidadazim.comdadi360.comdafabet.comdafagood.comdafahao.com
dafoh.orgdaftporn.comdagelijksestandaard.nldaidostup.rudailidaili.comxcity.jpdailymotion.comxcafe.indailysabah.comdailyview.twdaiphapinfo.netdajiyuan.comdajiyuan.dedajiyuan.eu
xbtce.comdalailama-archives.org
dalailama.comdalailama.mndalailama.rudalailama80.orgdalailamacenter.orgdalailamafellows.orgdalailamafilm.comdalailamafoundation.orgdalailamahindi.comdalailamainaustralia.orgdalailamajapanese.comdalailamaprotesters.infodalailamaquotes.orgdalailamatrust.orgxbookcn.comdalailamaworld.comdalianmeng.org
daliulian.org
xbabe.comdanke4china.net
xanga.com
+daolan.netdarktech.orgdarktoy.net
darpa.mildarrenliuwei.com
dastrassi.orgdata-vocabulary.org
x365x.com
x24hr.comdaum.netdavid-kilgour.com
dawangidc.comdaxa.cndaylife.com db.tt
+dbc.hk
dbgjd.comdcard.twdcmilitary.com
+x1949x.com
ddhw.info
ddns.info
x.company
ddns.mobiddns.ms
ddns.nameddns.netddns.us
+de-sci.orgdeadline.comdeaftone.com
debug.comdeck.ly
+decodet.codeepmind.com
+deezer.comdefinebabe.comdeja.comdelcamp.net
delicious.com x.com
democrats.orgdemosisto.hkdepositphotos.comx.codesc.se
design.google
+desipro.de
+dessci.com
+x-wall.orgdestroy-china.jpdeutsche-welle.dex-berry.comdeviantart.comdeviantart.netdevio.us
devpn.comdevv.aidfas.mildfn.orgdharamsalanet.comdharmakara.netdhcp.bizdiaoyuislands.orgdifangwenge.orgdigiland.tw
digisfera.comdigitalnomadsproject.org
diigo.com
dilber.se
x-art.com
+dipity.comdirectcreative.comdiscoins.com
disconnect.mediscord.com
+discord.ggdiscordapp.comdiscordapp.net
wzyboy.im
discuss4u.comdish.comwwwhost.bizwww1.bizdisp.cc
+disqus.com
+dit-inc.usdizhidizhi.comdizhuzhishang.comdjangosnippets.org
djorz.com
+dl-laby.jp
wwitv.comdlive.tv
+dlsite.com
dlyoutube.com
dm530.netdmc.nico
dmcdn.netdmhy.org
wuyanblog.comdns-dns.com
dns-stuff.com
+dns.google
dns04.com
dns05.comdns1.usdns2.us
+dns2go.comdnscrypt.org
dnset.com
dnsrd.com
+dnssec.netdnvod.tvdoctorvoice.orgdocumentingreality.comdogfartnetwork.com
dojin.com
dok-forum.netdolc.dewuw.red
dollf.com
wukangrui.netdomains.googlewujieliulan.comdongtaiwang.comdongtaiwang.netdongyangjing.com
dontfilter.usdontmovetochina.comdorjeshugden.comdotplane.com
+dotsub.com
+dotvpn.comdoub.iodoubibackup.comdoublethinklab.org
doubmirror.cfdougscripts.comdouhokanko.netdoujincafe.com
dowei.org
wujie.netwuguoguang.comdphk.orgwufafangwen.comdpr.infodragonex.iodragonsprings.orgdreamamateurs.comdrepung.org
drgan.net
drmingxia.orgdropbooks.tvdropbox.comdropboxusercontent.comdrsunacademy.comdrtuber.com
dscn.info
dsmtp.comdstk.dk
dtdns.netdtiblog.comdtic.mil
+dtwang.org
duanzhihu.com
dubox.comduck.comduckdns.org
wuerkaixi.comduckduckgo.comduckload.comduckmylife.comduga.jp
+duihua.orgduihuahrjournal.org
dumb1.comdunyabulteni.netduoweitimes.com
+duping.net
duplicati.com
+dupola.com
+dupola.netdushi.caduyaoss.com
+dvdpac.com
+dvorak.orgdw-world.comdw-world.de
+dw.com dw.de
+dwnews.com
+dwnews.netdynamic-dns.netdynamicdns.biz
wtfpeople.comwtbn.org
wsjhk.comdynawebinc.com
dyndns-ip.comdyndns-pics.com
+dyndns.org
+dyndns.pro
+dynssl.comdynu.comdynu.netwsj.netdysfz.ccdzze.comwsj.com
+e-gold.come-hentai.orge-hentaidb.comwritesonic.come-traderland.net
wretch.cce123.hkearlytibet.comearthcam.comearthvpn.comeastern-ark.comeasternlightning.orgeastturkestan.comeastturkistan-gov.orgeastturkistancc.org%!eastturkistangovernmentinexile.us
easyca.caeasypic.comebony-beauty.comwrchina.orgebookbrowse.comebookee.comebtcbank.comwqyd.orgechofon.comecimg.twecministry.net
economist.comwpoforum.comedgecastcdn.netedicypages.comedmontonchina.cnedmontonservice.comedns.biz
+edoors.com
edubridge.com
+edupro.org
+wp.comeesti.ee
eevpn.comwozy.in
+effers.comefksoft.com
efukt.com
+eic-av.comeireinikotaerukai.com
eisbb.comeksisozluk.comelectionsmeter.com
elgoog.imellawine.org
+elpais.comeltondisney.com
emaga.com
+emanna.com
woyaolian.org
+empfil.comemule-ed2k.com
emulefans.comemuparadise.mewoxinghuiguo.com
wowrk.comenanyang.my
+encrypt.meencyclopedia.com
enewstree.comenfal.deengagedaily.orgenglishforeveryone.orgwowporn.comenglishpen.orgwowlegacy.mlentermap.comenvironment.googlewowhead.comepac.toepiscopalchurch.orgepochhk.comepochtimes-bg.comepochtimes-romania.comwowgirls.comwow.comepochtimes.com
epochtimes.cz
epochtimes.de
epochtimes.fr
epochtimes.ie
epochtimes.it
epochtimes.jp
epochtimes.ru
epochtimes.seepochtimestr.com
epochweek.comepochweekly.comeporner.com
equinenow.comerabaru.netwow-life.networldvpn.net
erepublik.comerights.neteriversoft.com
erktv.comernestmandel.orgerodaizensyu.comerodoujinlog.comerodoujinworld.comeromanga-kingdom.comeromangadouzin.com
+eromon.neteroprofile.comeroticsaloon.networldjournal.com
+eslite.com
esmtp.bizesu.dogesurance.comworldcat.orgetadult.cometaiwannews.cometherdelta.com
ethermine.orgetherscan.io
+etizer.org
+etokki.comworkersthebig.net
+etowns.net
+etowns.orgetsy.comettoday.netetvonline.hk
+eu.orgeucasino.com
eulam.com
eurekavpt.comeuronews.comworkers.devevschool.net
exblog.jpexchristian.hkexhentai.orgexmo.comexmormon.orgexpatshield.com
expecthim.com
+expekt.comexperts-univers.com
exploader.netexpressvpn.com
+exrates.me
extmatrix.comextremetube.comexx.com
eyevio.jpeyny.comezpc.tk
+ezpeer.comezua.com
+f2pool.com
+f8.comworkerempowerment.orgfacebook.brfacebook.comfacebook.defacebook.designfacebook.hufacebook.infacebook.nlfacebook.sefacebookmail.comfacebookquotes4u.comfaceless.mefacesofnyfw.com%!facesoftibetanselfimmolators.info
factpedia.orgfail.hkfaith100.orgfaithfuleye.comfaiththedog.info
fakku.net
fallenark.com
falsefire.comfalun-co.orgfalun-ny.networkatruna.comfalunart.orgfalunasia.infofalunau.orgfalunaz.netfalundafa-dc.orgfalundafa-florida.orgfalundafa-nc.orgfalundafa-pa.netfalundafa-sacramento.org
falundafa.orgfalundafaindia.orgfalundafamuseum.orgfalungong.clubfalungong.de
wordpress.comfalunhr.orgfaluninfo.de
faluninfo.netfalunpilipinas.netfalunworld.net
familyfed.orgfamunion.com
fan-qiang.comfangbinxing.com
fangeming.comfangeqiang.comfanglizhi.info
fangmincn.org
woopie.tvfangong.orgfangongheike.comfanhaodang.com
fanhaolou.comfanqiang.networkfanqiang.tkfanqiangdang.comfanqianghou.comfanqiangyakexi.netfanqiangzhe.comfanswong.comfantv.hkfanyue.info
fapdu.comfaproxy.comfaqserv.com
+fartit.comfarwestchina.com
woopie.jpfastestvpn.com
+fastpic.rufastssh.com
faststone.org
+fatbtc.com
+favstar.fmfawanghuihui.org
+faydao.comfaz.net
+fb.com fb.mefb.watchfbaddins.com
fbcdn.net
fbsbx.comfbworkmail.comfc2.comfc2blog.netfc2china.com
fc2cn.comwoolyss.comfdc64.de
fdc64.orgfdc89.jpfeedburner.com
feeder.co
+feedly.comwombo.ai
feedx.netfeelssh.comfeer.comfeifeiss.comfeitian-california.orgfeitianacademy.orgfeixiaohao.comfeministteacher.comfengzhenghu.comfengzhenghu.netfevernet.com ff.imfffff.at
+fflick.com
ffvpn.com
fgmtv.net
fgmtv.org
fhreports.net
+wolfax.com
figprayer.com
fileflyer.comfiles2me.com
fileserve.comfilesor.comfillthesquare.orgfilmingfortibet.org
wokar.org
filthdump.comfinancetwitter.comfinchvpn.comfindmespot.comfindyoutube.comfindyoutube.netfingerdaily.com
+finler.netfirearmsworld.netfirebaseio.comfireofliberty.orgfiretweet.iofirstfivefollowers.com
firstpost.com
firstrade.comflagsonline.itflecheinthepeche.frfleshbot.comfleursdeslettres.comflgg.usflgjustice.org
+flickr.comflickrhivemind.netflickriver.com
fling.com
flipboard.comflipkart.com
+flitto.com
flnet.orgflog.tw
+flyvpn.com
flyzy2005.comfnac.befnac.comkonachan.com
fochk.orgfocustaiwan.twfocusvpn.comfofg-europe.netfofg.orgfofldfradio.org
+fooooo.comforeignaffairs.comforeignpolicy.com
+woeser.com wo.tc
wnacg.org
wnacg.com
+wn.comwmflabs.orgwjbk.org
wizcrafts.netwitopia.netwitnessleeteaching.comwithyoutube.comwithgoogle.comforum4hk.com
fotile.mewisevid.comfourthinternational.org
foxdie.us
+foxgay.com
+foxsub.comfoxtang.com
fpmt-osel.orgfpmt.orgfpmt.twfpmtmexico.orgwisdompubs.orgfqok.orgfqrouter.comfranklc.comfreakshare.com
free-gate.orgfree-hada-now.org
free-proxy.czfree-ss.sitefree-ssh.comfree.fr
wireguard.comfreealim.comfreebeacon.comfreebrowser.orgfreechal.com
freechina.netfreechina.newsfreechinaforum.orgfreechinaweibo.comfreeddns.comfreeddns.orgfreedomchina.infofreedomcollection.orgfreedomhouse.orgwiredpen.comfreedomsherald.orgfreeforums.org
+freefq.comfreefuckvids.comfreegao.comfreehongkong.orgfreeilhamtohti.orgfreekazakhs.orgfreekwonpyong.org
freelotto.comfreeman2.com
freemoren.comfreemorenews.comfreemuse.orgfreenet-china.orgfreenetproject.orgfreenewscn.comfreeopenvpn.com
+freeoz.org
+freessh.usfreetcp.com
freetibet.net
freetibet.orgfreetibetanheroes.orgfreetribe.mefreeviewmovies.com
+freevpn.me
+freevpn.nlfreewallpaper4.mefreewebs.comfreewechat.com
freeweibo.comfreewww.bizfreewww.infofreexinwen.comfreeyellow.comfreeyoutubeproxy.netfriendfeed-media.comfriendfeed.comfriends-of-tibet.orgfriendsoftibet.org
fring.comfringenetwork.comfrom-pr.comfrom-sd.comfromchinatousa.netfrommel.netfrontlinedefenders.orgfrootvpn.com
+fscked.org
fsurf.com
ftchinese.comftp1.biz
ftpserver.bizwiredbytes.comwire.comftx.comfucd.com
fuckcnnic.netfuckgfw.orgfulione.comfullerconsideration.com
fulue.comfunf.twfunkyimg.comfunp.comfuq.com
furbo.orgfurhhdl.orgfurinkan.comfurl.netfuturechinaforum.orgfuturemessage.orgfux.com
fuyin.netfuyindiantai.orgwionews.com fw.cmfxcm-chinese.comfxnetworks.com
+fzh999.com
+fzh999.netfzlm.com
+g-area.orgg-queen.comg.co
+g0v.socialg6hentai.comgab.comgabocorp.comgaeproxy.comgaforum.orggagaoolala.comgalaxymacau.comgalenwu.comgalstars.netgame735.comwinwhispers.infogamejolt.com
winning11.com
+wingy.sitewingamestore.comwindscribe.comgamousa.com
+ganges.comganjing.comganjingworld.comgaoming.net
gaopi.netgaozhisheng.netgaozhisheng.orggardennetworks.comgardennetworks.orggartlive.comgate-project.comgate.iogatecoin.com
+gather.comgatherproxy.comwindowsphoneme.com
gaybubble.com
gaycn.net
+gayhub.com
gaymap.ccgaymenring.comgaytube.comgaywatch.comgazotube.com
willw.netgclooney.com
+gclubs.comgcmasia.comgcpnews.com
+gcr.iogdbt.netgdzf.orggeek-art.netgeekerhome.comgeekheart.infogekikame.comgelbooru.comgenerated.photos
+genius.comwilliamhill.com
geocities.comgeocities.jpgeph.iogerefoundation.orgget.appget.devget.howget.pagegetastrill.com
+getchu.comgetcloak.comgetfoxyproxy.orggetfreedur.com
+getgom.com
+geti2p.netgetiton.comgetjetso.comgetlantern.orggetmalus.com
getmdl.iogetoutline.orggetsocialscope.comgetsync.com
gettr.com
gettrials.comgettyimages.comgetuploader.comgfbv.dewildammo.com
+gfsale.comwikiwiki.jp
gfw.press
+gfw.report
ggpht.com
ggssl.comghidra-sre.org
ghostpath.comghut.orggiantessnight.com
+gifree.comgiga-web.jpgigporno.rugirlbanker.com
+git.iogithub.blog
+github.com
github.iogithubassets.comgithubusercontent.com
+gizlen.net
gjczz.com
glass8.euwikiwand.comglobaljihad.netglobalmediaoutreach.comglobalmuseumoncommunism.orgglobalrescue.netglobaltm.orgglobalvoices.orgglobalvoicesonline.org
globalvpn.net
glock.com
gloryhole.comglorystar.megluckman.com
glype.com
gmail.com
+gmgard.comgmhz.orggmll.orggmodules.com
wikipedia.org
wikimedia.org
gnews.org
+go-pki.com
wikimapia.org
go141.comgoagent.bizwikilivres.infogoagentplus.comgobet.ccgodaddy.comgodfootsteps.org
+godns.work
godoc.orgwikileaks.plgodsdirectcontact.org
wikileaks.orggodsimmediatecontact.comgofundme.comgogotunnel.comwikileaks.luwikileaks.eu
gokbayrak.com
+golang.orggoldbet.comgoldbetsports.comgolden-ages.orggoldeneyevault.comgoldenfrog.comgoldjizz.comgoldstep.netgoldwave.comgongm.in
gongmeng.infogongminliliang.com
+gongwt.com
+goo.glgoo.glewikileaks.de
+gooday.xyzgooddns.infogoodhope.schoolgoodreaders.com
goodreads.com
wikileaks.com
goodtv.tvgoofind.com
google.ad
google.ae
google.al
google.am
google.as
google.at
google.az
google.ba
google.be
google.bf
google.bg
google.bi
google.bj
google.bs
google.bt
google.by
google.ca
+google.cat
google.cd
google.cf
google.cg
google.ch
google.ci
google.cl
google.cm
google.cnwikileaks.chwikileaks-forum.com
+wikaba.comwidevine.comwhyx.orgwhylover.comwhotalking.com
whoer.net
+whodns.xyzwhispersystems.orgwhippedass.comwheretowatch.comwhereiswerner.comwheelockslatin.comwheatseeds.orgwhatsonweibo.comwhatsapp.netwhatsapp.comwhatbrowser.orgwhatblocked.com
+wha.la
+wforum.com
+wezone.net
wezhiyong.org
+google.comwexiaobo.orgwetpussygames.comwetplace.com
westpoint.eduwestkit.netwesternwolves.comwesternshugdensociety.org
+westca.com
+wenzhao.cawenyunchao.comwenxuecity.com
wenhui.ch
wengewang.org
wengewang.com
wemigrate.orgwelt.dewelovecock.com
weisuo.wsweiquanwang.orgweiming.infoweijingsheng.org
+weihuo.org
weiboleak.com
+wefong.comwefightcensorship.orgweekmag.infowechatlawsuit.comwebworkerdaily.com
webwarper.netwebsitepulse.comwebs-tv.netwebrush.net
+webrtc.orgwebpkgcache.comwebmproject.orgweblagu.com
webjb.orgwebfreer.com
webevader.orgwebbang.netweb2project.netweb.dev
wearn.comwearehairy.comwdf5.comwd.bible
waymo.comwaveprotocol.org
+wav.tvwattpad.comwatchout.tw
watchmygf.netwatchinese.comwatch8x.comwashingtonpost.comwasheng.netwaselpro.comwarroom.org
google.cv
google.cz
google.de
+google.dev
google.dj
google.dk
google.dm
google.dz
google.ee
google.es
google.fi
google.fm
google.fr
google.ga
google.ge
google.gg
google.gl
google.gm
google.gp
google.gr
google.gy
google.hn
google.hr
google.ht
google.hu
google.ie
google.im
google.iq
google.is
google.it
google.je
google.jo
google.kg
google.ki
google.kz
google.la
google.li
google.lk
google.lt
google.lu
google.lv
google.md
google.me
google.mg
google.mk
google.ml
google.mn
google.ms
google.mu
google.mv
google.mw
google.ne
google.nl
google.no
google.nr
google.nu
google.pl
google.pn
google.ps
google.pt
google.ro
google.rs
google.ru
google.rw
google.sc
google.se
google.sh
google.si
google.sk
google.sm
google.sn
google.so
google.sr
google.st
google.td
google.tg
google.tk
google.tl
google.tm
google.tn
google.to
google.tt
google.vg
google.vu
google.ws
googleapis.cngoogleapis.comgoogleapps.comgooglearth.comgoogleartproject.comgoogleblog.com
googlebot.comgooglechinawebmaster.comgooglecode.comgooglecommerce.comgoogledomains.comgoogledrive.comgoogleearth.comgooglefiber.netgooglegroups.comgooglehosted.comgoogleideas.comgoogleinsidesearch.comgooglelabs.comgooglemail.comgooglemashups.comgooglepagecreator.comgoogleplay.comgoogleplus.comgooglescholar.comusagooglesile.comgooglesource.comgoogleusercontent.comgooglevideo.comgoogleweblight.com
googlezip.netgopetition.com
goproxing.net
goreforum.com
goregrish.comgospelherald.comgot-game.org
gotdns.chgotgeeks.com
gotrusted.comgotw.ca
+gov.taipei
+gov.tw
gr8domain.bizgr8name.bizgrammaly.comgrandtrial.orggrangorz.org
graph.orgwapedia.mobigraphql.orggravatar.comgreat-firewall.com
great-roc.org
greatfire.orgwanz-factory.comgreatfirewall.bizgreatfirewallofchina.netgreatfirewallofchina.orggreatroc.orggreatroc.twgreatzhonghua.orgwant-daily.comwangruoshui.net
wango.orggreenpeace.orggreenreadings.comgreenvpn.netgreenvpn.org
+grindr.comgrotty-monday.comwanglixiong.comgrow.googlegs-discuss.com
gsearch.media
wangjinbo.orggstatic.comgtricks.comgts-vpn.comgtv.orggtv1.orggu-chu-sum.orgguaguass.comguaguass.orgguancha.orgguaneryu.comwangafu.netguangnianvpn.com
guardster.comguishan.orggumroad.com
gun-world.netgunsamerica.comgunsandammo.com
guo.media
guruonline.hkgutteruncensored.com
gvlib.comwanderinghorse.netgvt0.comgvt1.comgvt3.com
gwins.orggwtproject.orggyalwarinpoche.comgyatsostudio.com
+gzm.tvgzone-anime.infoh-china.org
h-moe.com
h1n1china.orgh528.comh5dm.comh5galgame.me
hacg.clubhacg.inhacg.lihacg.mehacg.red
hacken.cc
+hacker.org
hackmd.iohackthatphone.net
hahlo.comwaltermartin.orghandcraftedsoftware.org
hanime.tvhanunyi.comhao.news
happy-vpn.comhaproxy.orghardsextube.comharunyahya.com
hautelook.comhautelookcdn.com
have8.comhbg.comhbo.com
+hclips.comwaltermartin.comhdlt.me
hdtvb.net
hdzog.comheartyit.comheavy-r.com
+hec.suhecaitou.nethechaji.comwallsttv.com
hegre-art.com
wallproxy.comhelloandroid.comhelloqueer.com
+helloss.pwhellotxt.comhellouk.orgwallpapercasa.comhelpeachpeople.comhelplinfen.comhelpster.dehelpuyghursnow.orghelpzhuling.org
hentai.to
hentaitube.tvhentaivideoworld.comheqinglian.netheritage.orgheungkongdiscuss.comhexieshe.comhexieshe.xyz
+hexxeh.netheyuedi.com
heyzo.com
+hgseav.comhhdcb3office.orghhthesakyatrizin.org
wallornot.orghiccears.comhidden-advent.orghide.me
hidecloud.com
+hidein.net
hideipvpn.comhideman.net
hideme.nlhidemy.name
hidemyass.comhidemycomp.com
higfw.comhighpeakspureearth.comhighrockmedia.com
hihiforum.com
hihistory.net
+hiitch.com
hikinggfw.org
hilive.tvhimalayan-foundation.orghimalayanglacier.comhimemix.comhimemix.net
+hitbtc.com
hitomi.la
+hiwifi.comhizb-ut-tahrir.infohizb-ut-tahrir.orghizbuttahrir.orghjclub.info
+hk-pub.comwallmama.comwaiwaier.com
wainao.mewailaike.netwaikeung.orgwaigaobu.com
wahas.comwaffle1999.com
w3schools.comvultryhw.comvuku.ccvtunnel.comhk01.comhk32168.comvrsmash.com
hkacg.com
hkacg.net
vrmtr.com
hkatvnews.comhkbc.nethkbf.orghkbookcity.comhkchronicles.comhkchurch.orgvraiesagesse.net
hkcmi.eduhkcnews.com
hkcoc.com
vpser.net
vporn.comvpnworldwide.com
hkday.nethkdc.ushkdf.orghkej.com
hkepc.comhket.com
hkfaa.comhkfreezone.comhkfront.orghkgalden.comhkgolden.com
+hkgpao.comhkgreenradio.orghkheadline.com
+hkhkhk.com
+vpnvip.comvpnunlimitedapp.com
+vpnuk.infohkjc.comhkjp.org
hklft.com
vpntunnel.com
+hkmap.livehkopentv.comhkpeanut.com
hkptu.orghkreporter.comvpntraffic.com
vpnsp.com
hkusu.net
+hkvwet.comvpnshieldapp.com
+hkzone.orghmoegirl.comhmonghot.com
vpnshazam.com
hmvdigital.cahmvdigital.com
hnjhj.comhnntube.comvpnsecure.mehola.comhola.orgholymountaincn.comholyspiritspeaks.orgvpnreviewz.comvpnreactor.com
homedepot.comhomeperversion.comhomeservershow.com
vpnpronet.comhongkongfp.comhongmeimei.com
+hongzhi.li
+honven.xyz
hootsuite.com
+hoover.orghoovers.comhopedialogue.org
hopto.orghornygamer.com
hornytrip.comhorrorporn.comhostloc.com
+hotair.comhotav.tvhotcoin.com
hotels.cn
+vpnpop.com
+hotgoo.comhotpornshow.com
hotpot.hkhotshame.comhotspotshield.com
hottg.com
+hotvpn.comhougaige.comhowtoforge.comhoxx.comvpnpick.com
hqcdp.orghqjapanesesex.comhqmovies.com
vpnmentor.com
vpnmaster.comhrcchina.org
hrcir.comhrea.orghrichina.org
hrntt.org
+hrtsea.comhrw.org
hrweb.orghsjp.nethsselite.comvpnjack.com
+hstern.nethstt.net ht.ly
htkou.net
+htl.lihtml5rocks.comhttps443.nethttps443.orghua-yue.nethuaglad.comhuanghuagang.org
huangyiyu.com
huaren.us
huaren4us.comhuashangnews.comhuaxia-news.com
huaxiabao.org
huaxin.phhuayuworld.orgvpnintouch.netvpnintouch.com
+hudson.orghuffingtonpost.comhuffpost.comhuggingface.co
+hugoroy.euhuhaitai.com
huhamhire.com
huhangfei.comhuiyi.in
hulkshare.comhulu.com
+huluim.com
humanparty.mehumanrightspressawards.orghung-ya.comhungerstrikeforaids.orghuobi.co
huobi.comhuobi.me
huobi.prohuobi.schuobipro.com
+huping.nethurgokbayrak.comvpninja.nethustlercash.comhut2.ruhutianyi.nethutong9.nethuyandex.com
+hwadzan.tw
+vpnhub.com
+hwinfo.comhxwk.orghxwq.orghybrid-analysis.com
hyperrate.comi-cable.com
vpnhq.com
+i-scmp.com
vpngratis.net i1.hki2p2.dei2runner.com
+i818hk.comiam.soy
iamtopone.comiask.bziask.ca
iav19.comibiblio.orgibit.am
+iblist.comiblogserv-f.net
ibros.org
ibvpn.com
icams.comvpngate.neticedrive.neticij.org
+icl-fi.org
icoco.com
iconpaper.orgicu-project.org
+vpngate.jpvpnforgame.netidemocracy.asia
identi.caidiomconnection.com
+idouga.comidreamx.com
+idv.tw
+ieasy5.com
ied2k.netienergy1.comiepl.usvpnfires.biz
ifanqiang.com
ifcss.orgifjc.orgifreewares.com
+ift.ttigcd.netigfw.net
igfw.techigmg.deignitedetroit.netigoogle.comvpnfire.com
+igvita.com
+ihakka.netihao.org
iicns.com
+vpnfan.com
+ikstar.comikwb.comilbe.comilhamtohtiinstitute.orgillusionfactory.com
+ilove80.beilovelongtoes.com im.tvim88.twimageab.comimagefap.com
imageflea.comimageglass.orgimages-gaytube.comvpndada.com
imageshack.usimagevenue.comimagezilla.netimb.orgimdb.com
+vpncup.com
+img.ly
+imgasd.comimgchili.netimgmega.com
imgur.com
imkev.com
+imlive.comvpncoupons.com
+immoral.jpvpncomparison.orgimpp.mnin-disguise.comin99.orgincapdns.netincloak.com
incredibox.frvpnbook.comindiablooms.comindianarrative.comindiandefensenews.inindiemerch.cominfo-graf.frinitiativesforchina.orginkbunny.net
inkui.com
inmediahk.netinnermongolia.org
inoreader.cominote.twinsecam.orgvpnaccounts.com
insidevoa.com
instagram.com
instanthq.cominstitut-tibetain.orginteractivebrokers.comvpnaccount.orginternet.orginternetdefenseleague.orginternetfreedom.orginternetpopculture.com!inthenameofconfuciusmovie.comvpn4all.com
+inxian.comiownyour.biziownyour.orgipalter.com
+ipfire.orgipfs.ioiphone4hongkong.comiphonehacks.comiphonetaiwan.org
+iphonix.fripicture.ru
ipjetable.net
+ipobar.com
+ipoock.com
+iportal.me
+ippotv.comipredator.se
+vpn.aciptvbin.comipvanish.comiredmail.orgvoy.comironpython.netironsocket.comis-a-hunter.com is.gdisaacmao.com
isasecret.com
voxer.comisgreat.orgislahhaber.netvovo2000.comislamawareness.netislamhouse.comislamicity.comislamicpluralism.orgislamtoday.netismaelan.comismalltits.comismprofessional.netisohunt.comisrabox.com
issuu.comvot.orgistiqlalhewer.comistockphoto.comisunaffairs.com
+isuntv.comisupportuyghurs.orgitaboo.infovoicettank.orgitaliatibet.orgitasoftware.com
+itemdb.comitemfix.comvocus.ccvocn.tv
+itsaol.com
itshidden.comitsky.it
+itweet.netiu45.com
+iuhrdf.org
+iuksky.com
ivacy.comiverycd.comivonblog.comivpn.netiwara.tvixquick.comixxx.comiyouport.comiyouport.org
+izaobao.us
izles.netizlesem.orgj.mpvocativ.comjable.tv
+jamaat.org
jamestown.orgjamyangnorbu.com
+jan.ai
+jandyx.comjanwongphoto.comjapan-whores.comvoatibetanenglish.comvoatibetan.comjav.com
+jav101.com
+jav2be.comjav68.tvjavakiba.org
+javbus.com
javfor.me
javhd.com
+javhip.com
+javhub.netjavhuge.comjavlibrary.com
javmobile.net
+javmoo.com
+javmoo.xyzjavseen.com
+javtag.com
+javzoo.com
+jbtalks.ccjbtalks.com
+jbtalks.myjcpenney.com
jdwsy.comjeanyim.com
jetos.comjex.comjfqu36.club
+jfqu37.xyzjgoodies.comjiangweiping.comjiaoyou8.com
jichangtj.com
jiehua.czjieshibaobao.comjigglegifs.comjigong1024.comvoanews.comjihadology.netjiji.comjims.netjinbushe.orgjingpin.orgjingsim.orgjinpianwang.comjinroukong.comjintian.netjinx.comjitouch.comjizzthis.comjjgirls.com
+jkb.ccjkforum.netjkub.comvoaindonesia.comjmscult.comjoachims.org
voagd.comjobso.tvjoinclubhouse.comjoinmastodon.orgvoachineseblog.comjournalchretien.netjournalofdemocracy.org
joymiihub.comjoyourself.comvoachinese.comvoacantonese.com
jpopforum.netjsdelivr.net
jtvnw.netjubushoushen.comjuhuaren.comjukujo-club.com
juliepost.com
juliereyc.comjunauza.comjune4commemoration.orgjunefourth-20.netjungleheart.com
juoaa.comjustdied.comjustfreevpn.comjusthost.rujusticefortenzin.orgjustmysocks1.netjustpaste.itjusttristan.comjuyuange.orgjuziyue.comjwmusic.orgjyxf.netk-doujin.net
+ka-wai.comvoacambodia.com
kagyu.org
vnet.linkkagyumonlam.orgvmpsoft.comkagyuoffice.orgvmixcore.com
+kaiyuan.de
kakao.comkalachakralugano.orgkankan.todaykannewyork.comkanshifang.com
+kantie.orgkanzhongguo.comkanzhongguo.eu
+kaotic.comkarayou.comkarkhung.comkarmapa-teachings.orgkarmapa.orgkawaiikawaii.jp
+kawase.com
vllcs.org
+kba-tx.orgkcoolonline.com
+kebrum.comkechara.comkeepandshare.comkeezmovies.com
kendatire.com
kendincos.netkenengba.comkeontech.net
+kepard.comkex.com
+keycdn.comkhabdha.orgkhatrimaza.orgvjav.comkichiku-doujinko.comkik.comkillwall.com
kindleren.com
+vizvaz.comkingdomsalvation.orgkinghost.com
vivthomas.comkink.comvivatube.com
kinmen.travelkinokuniya.com
+kir.jpkissbbao.cnkiwi.kzvivaldi.com
kkbox.com
kknews.ccvivahentai4u.netknowledgerush.comknowyourmeme.comkobo.com
kobobooks.comkodingen.com
+viu.tvviu.combeijing1989.comkoolsolutions.com
+koornk.comkoranmandarin.comkorenan2.comkqes.net
+kraken.comksdl.orgvital247.orgkspcoin.com
ktzhk.com
+kucoin.comkui.name
kukuku.uk
+kun.imkurashsultan.comkurtmunger.comkusocity.comkwcg.ca
kwok7.comvisibletweets.com
kxsw.life
+kyofun.com
kyohk.net
+kyoyue.com
kyzyhello.com
+kzeng.infola-forum.orgvirtualrealporn.comlabiennale.org
ladbrokes.comlagranepoca.comlala.imlalulalu.comvip-enterprise.com
lamayeshe.comvinniev.com
+lamrim.com
landofhope.tvlanterncn.cnlantosfoundation.orglaod.cn
+laogai.orglaogairesearch.org
+laomiu.comlaoyang.infolaptoplockdown.com
laqingdan.netlarsgeorge.comlastcombat.com
lastfm.eslatelinenews.com
lausan.hk
+lbank.infovine.co
+le-vpn.comleafyvpn.netlecloud.net
+ledger.com
+vincnd.com
+lefora.com
left21.hklegalporno.comvimperator.org
legsjapan.comleirentv.caleisurecafe.caleisurepro.com
+lematin.ch
+lemonde.frlenwhite.comleorockwell.comlerosua.orglers.google
lesoir.be
letou.comletscorp.net
+lflink.comlflinkup.comlflinkup.netlflinkup.org
+lhakar.orglhasocialwork.org
li.taipeiliangyou.netliangzhichuanmei.comlianyue.netliaowangxizang.net
vimeo.comlibertysculpturepark.comvilavpn.comvijayatemple.org
+libredd.it
lifemiles.comvietdaikynguyen.com
lighti.me
lightnovel.cnlightyearvpn.com
lihkg.comlike.com
+limiao.net
line-apps.com
line-scdn.netline.mevidinfo.orgvideopress.comlinglingfa.comlingvodics.comlink-o-rama.comlinkedin.comlinkideo.comlinkuswell.comvideopediaworld.comlinuxtoy.org
lionsroar.comlipuman.comliquiditytp.com
liquidvpn.comlistennotes.comlistentoyoutube.comlistorious.comvideomo.comliu-xiaobo.orgliudejun.comliuhanyu.comliujianshu.com
liuxiaobo.netliuxiaotong.comlivecoin.netlivedoor.jpliveleak.comlivemint.comlivestream.com
livevideo.comlivingonline.uslivingstream.comliwangyang.comlizhizhuangbi.comlkcn.netlncn.orgload.tolobsangwangyal.comlocalbitcoins.comlocaldomain.wslocalpresshk.com
lockestek.com
+logbot.netvideomega.tv
+logiqx.comvideodetective.comlondonchinese.calonghair.hk
longmusic.comlongtermly.netlongtoes.comlookpic.comlooktoronto.comlotsawahouse.orgvideobam.com
+vidble.comlovetvshow.comlpsg.comlrfz.comlrip.org
+vid.melsforum.netlsm.orglsmchinese.org
lsmkorean.orglsmradio.comlsmwebcast.comlsxszzg.comvictimsofcommunism.orgluckydesigner.space
+luke54.com
+luke54.orglupm.orglushstories.com
+luxebc.com
lvhai.orglvv2.com
lyfhk.net
lzjscript.comlzmtnews.org
m-team.cc
vica.infom.me
viber.comvevo.com
+verybs.commacgamestore.commacrovpn.comversavpn.com
mad-ar.chmadewithcode.commadonna-av.com
+madrau.com
madthumbs.comvermonttibet.orgmagic-net.info
mahabodhi.org
maiio.netmail-archive.commaildns.xyzmaiplus.commaizhong.orgmakemymood.commakkahnewspaper.com
+vercel.appmalaysiakini.com
mamingzhe.com
manchukuo.netmandiant.commangafox.commangafox.memaniash.com
manicur4ik.rumansion.commansionpoker.com
manta.commanyvoices.news
+maplew.com
marc.info
marguerite.su
+martau.commartincartoons.commartsangkagyuofficial.org
maruta.bemarxist.commarxist.netmarxists.orgmash.tomaskedip.commastodon.cloud
mastodon.hostmastodon.socialmastodon.xyzmatainja.commaterial.iomathable.iomathiew-badimon.commatome-plus.commatome-plus.net
+matrix.orgmatsushimakaede.commatters.newsmatters.townveoh.commattwilcox.netmaturejp.com
maxing.jpmayimayi.commcadforums.commcaf.ee
mcfog.com
mcreasite.commd-t.org me.meventureswell.commeansys.comvenetianmacao.comvenchina.commediachinese.com
mediafire.commediafreakcity.com
+medium.com
+meetav.com
+meetup.commefeedia.commefound.com
+venbbs.commega.iomega.nz
megaproxy.com
megarotic.com
megavideo.commegurineluka.com
meizhong.blogmeizhong.reportmeltoday.comvelkaepocha.sk
+memehk.com
memorybbs.com
memri.org
memrijttm.orgmercatox.com
+mercdn.netmercyprophet.orgmergersandinquisitions.orgmeridian-trust.orgmeripet.bizmeripet.comvegasred.commeshrep.com
+mesotw.com
messenger.commeta.commetacafe.commetafilter.com
+metart.commetarthunter.commeteorshowersonline.commetro.taipeivcfbuilder.orgmetrolife.cavcf-online.orgmewe.commeyou.jp
meyul.commfxmedia.com
mgoon.commgstage.commh4u.orgmhradio.orgmichaelanti.commichaelmarketl.commicrovpn.commiddle-way.netmihk.hkmihr.com
mihua.orgvatn.orgmikesoltys.com
milph.netmilsurps.com
+mimiai.netmimivip.com
+mimivv.commindrolling.orgmingdemedia.org
minghui-a.org
minghui-b.orgminghui-school.orgvaticannews.vaminghui.org
+vansky.commingjinglishi.commingjingnews.commingjingtimes.commingpao.commingpaocanada.commingpaomonthly.commingpaonews.com
mingpaony.com
mingpaosf.commingpaotor.commingpaovan.commingshengbao.comminhhue.net
miniforum.orgministrybooks.org
minzhuhua.netminzhuzhanxian.comminzhuzhongguo.org
miroguide.commirrorbooks.commirrormedia.mgmist.vip
vanpeople.com
+mitbbs.commitbbsau.com
+mixero.commixi.jp
+mixpod.commixx.commizzmona.comvanilla-jp.com
vanemu.cn
+mk5000.com
+mlcool.com
mlzs.work
mm-cg.com
+mmaaxx.com
mmmca.commnewstv.com
+van698.commobatek.netmobile01.com
mobileways.demoby.tomobypicture.com
+mod.iomodernchinastudies.org
+van001.commoeerolibrary.comvaleursactuelles.commofaxiehui.com
mofos.commog.com
mohu.clubmohu.ml
+mohu.rocks
mojim.com
v2raytech.commolihua.org
+mondex.orgv2raycn.com
moneyhome.biz
monica.immonitorchina.orgmonocloud.memonster.com
+moodyz.commoon.fmmoonbbs.com
moonbingo.commoptt.twmorningsun.orgmoroneta.com
+mos.rumotherless.commotiyun.commotor4ik.rumousebreaker.com
movements.orgmoviefap.commp3buscador.commpettis.com
mpfinance.commpinews.commponline.hkmqxd.orgmrbasic.commrbonus.com
+mrface.commrslove.commrtweet.com
+msa-it.org
msguancha.commsha.gov
mswe1.org
+mthruf.com
+mtw.tlmubi.commuchosucko.commullvad.netmultiply.commultiproxy.orgmultiupload.commummysgold.com
murmur.twmusicade.netmuslimvideo.commuzi.commuzi.netmuzu.tv
v2ray.com
+mvg.jp
v2fly.org
mx981.commy-formosa.comv2ex.commy-proxy.comuymaarip.com
uygur.orguyghurtribunal.commy03.com
myactimes.commyanniu.commyaudiocast.comuyghurstudies.orgmybbs.us
mybet.commyca168.commycanadanow.commychinamyhome.commychinanet.commychinanews.commychinese.newsmycnnews.commycould.com
+mydad.info
+myddns.commyeasytv.commyeclipseide.comuyghurpress.com
uyghurpen.orgmyfreecams.commyfreepaysite.commyfreshnet.com
+myftp.info
+myftp.namemyiphide.commykomica.org
+mylftv.commymediarom.com
mymoe.moe
+mymom.infouyghurcongress.orgmynetav.netmynetav.orgmynumber.orgmyparagliding.commypicture.infomypikpak.com
+mypop3.net
+mypop3.org
mypopescu.com
+myradio.hkmyreadingmanga.infomysecondarydns.comuyghurcanadian.camysinablog.com
uyghurbiz.orgmyspace.commyspacecdn.com
mytalkbox.com
+mytizi.com
mywww.bizmyz.infonaacoalition.org
+naitik.netuyghuramerican.org
+nakido.com
nakuz.comnalandabodhi.orgnalandawest.orgnamgyal.orgnamgyalmonastery.orgnamsisi.comnanyang.comnanyangpost.com
+nanzao.comnaol.canaol.ccuyghuraa.orgnat.moeuyghur-j.orgnationalawakening.orgnationalinterest.orgnationalreview.comnationsonline.orgnationwide.comnaughtyamerica.com
+uwants.net
+uwants.comnaweeklytimes.comnbcnews.com
+nbtvpn.com
+uvwxyz.xyzuukanshu.com
nchrd.orgncn.org
+nde.dendi.org
+ndr.dened.orgnekoslovakia.net
uu-gg.comneo-miracle.com
+neowin.netnepusoku.comnet-fits.pronetalert.menetbirds.com
netcolony.comnetflav.comnetflix.comnetflix.netnetme.cc
netsarang.comnetsneak.com
network54.comnetworkedblogs.comnetworktunnel.netneverforget8964.orgnew-3lunch.net
new-akiba.comnew96.canewcenturymc.comnewcenturynews.comnewchen.comnewgrounds.comnewhighlandvision.comnewipnow.comutopianpal.com
newmitbbs.com
+newnews.causus.cc
+ustream.tvustibetcommittee.orgusocctn.comusmc.milusma.eduusfk.mil
+uscnpm.orguscardforum.comusaip.eu
usacn.com us.to
urlparser.comurlborg.com
+urchin.comurbansurvival.comurbandictionary.com
newsancai.comnewschinacomment.org
+newscn.orgnewsdetox.ca
+newsdh.comnewsmax.comnewspeak.ccnewstamago.comnewstapa.orgnewstarnet.comnewstatesman.comnewsweek.com
uraban.me
+newtalk.tw
newyorker.comnewyorktimes.com
nexon.comur7s.com
+upwill.orguptodown.com
nextmedia.com
nexton-net.jp
+uproxy.orgupornia.com
+nfjtyd.comnflxext.comnflximg.comnflximg.net
+nflxso.net
nflxvideo.netnga.milngensis.comngodupdongchung.comnhentai.net
+upmedia.mgnhk-ondemand.jpuploadstation.com
+nic.googlenic.govnicovideo.jpnighost.org
+nikkei.comninecommentaries.comninjacloak.comninjaproxy.ninjanintendium.com
ninth.biz
nitter.cc
+nitter.netuploaded.toniu.moeniusnews.com
+njactb.org
+njuice.comuploaded.net
nlfreevpn.comnmsl.websitennews.eu
no-ip.orgnobel.senobelprize.orgnobodycanstop.us
nofile.ionokogiri.org
+nokola.com
noodlevpn.comnorbulingka.org
nordstrom.comnordstromimage.comnordstromrack.comnordvpn.comnotepad-plus-plus.org
upload4u.infonottinghampost.com
novelasia.comnow.com
+now.imnownews.comnowtorrents.comnoxinfluencer.com
noypf.comupholdjustice.orgupghsbc.comuocn.orgnpnt.menps.govnpsboost.com
nradio.me
+nrk.nons01.biz
ns01.infons01.usns02.biz
ns02.infons02.usns1.namens2.namens3.nameuntraceable.usunstable.icu
unseen.isunpo.org
+ntd.tvntdtv.caunodedos.com
ntdtv.comunknownspace.orgntdtv.cz
ntdtv.orgntdtv.runtdtvla.com
+ntrfun.comunix100.comnubiles.net
+nuexpo.comnukistream.comnurgo-software.comnusatrip.com
+nutaku.netnutsvpn.work
+nuuvem.com
nuvid.com
+nuzcom.com
nvdst.com
+nvquan.orgnvtongzhisheng.org
nwtca.orgunitedsocialpress.com
unirule.cloudnyaa.eunyaa.sinybooks.comnydus.canylon-angel.comnylonstockingsonline.com
+nypost.comnyt.comnytchina.comnytcn.me
nytco.comnyti.msnytimes.comunification.net
+nytimg.comnytstyle.com
nzchinese.com
+uni.cc
oanda.comoann.comobservechina.net
obutu.com
obyte.orgocaspro.comoccupytiananmen.comoclp.hkocreampies.comocry.comunholyknight.comoctober-review.org
+oculus.com
oculuscdn.com
+odysee.comoex.comoffbeatchina.comofficeoftibet.com
ofile.org
+ogaoga.org
ogate.orgohmyrss.comunderwoodammo.com
oiktv.comoizoblog.com ok.ruokayfreedom.comokex.com
+okk.twokx.comold-cat.netuncyclopedia.twuncyclopedia.hkolehdtv.com
+olevod.com
+olumpo.comolympicwatch.orgomct.org
+omgili.comomni7.jpomnitalk.comomnitalk.orgomny.fm on.ccon2.com
onapp.comuncyclomedia.orgonedumb.com
+onejav.com
+onion.cityonion.ly
unblocksit.es
onlinecha.comonlineyoutube.comonlygayvideo.comonlytweets.com
+onmoon.com
+onmoon.net
+onmypc.bizonmypc.info
+onmypc.net
+onmypc.org
onmypc.us
onthehunt.com
+ontrac.com
oopsforum.comunblocker.yt
+openai.comopenallweb.comopendemocracy.net
+opendn.xyzopenervpn.in
+openid.net
openleaks.org
+opensea.ioopensource.googleopenstreetmap.org
opentech.fundopenvpn.netopenvpn.orgopenwebster.comunblockdmm.comunblock-us.comopus-gaming.com
umich.eduultraxs.com!organharvestinvestigation.netorganiccrap.com
+orgasm.comorgfree.comultravpn.frorient-doll.comulop.net
+orn.jporzistic.orgosfoora.com
+otcbtc.comotnd.orgotto.deotzo.comourdearamy.comourhobby.comoursogo.com
ulike.netoursweb.netourtv.hkovercast.fm
overdaily.orgoverplay.net
+uku.imovpn.com ow.ly
+owl.liowltail.comoxfordscholarship.comoyax.com
+oyghan.com
ozchinese.comozvoice.orgozxw.com
+ozyoyo.compachosting.compacificpoker.compacketix.netpacopacomama.compadmanet.com
uighurbiz.net
page.linkpage2rss.com
pagodabox.compalacemoon.compaldengyal.compaljorpublications.compaltalk.com
uighur.nlpandapow.copandapow.netpandavpn-jp.compandavpnpro.compandora.com
+pandora.tvpanluan.net
panoramio.compao-pao.netpaper.li
paperb.usparadisehill.ccparadisepoker.com
parkansky.com
+parler.com
parse.comparsevideo.compartycasino.compartypoker.compassion.compassiontimes.hkpasswords.googlepaste.eepastebin.com
+pastie.orgpatreon.com
pawoo.net
+paxful.compbs.org
+pbwiki.compbworks.com
pbxes.com
pbxes.orgpcanywhere.netuhrp.orguhdwallpapers.orgugo.compcij.orgufreevpn.com
+udnbkk.compdetails.compdproxy.comkompozer.netpeace.ca
peacefire.org
peacehall.compearlher.orgpeeasian.com
peing.netpekingduck.orgudn.com
+pen.iopenchinese.compenchinese.net
penthouse.com
pentoy.hkpeoplebookcafe.com
peoplenews.tw
peopo.orgpercy.inperfect-privacy.comperfectgirls.netperiscope.tv
perplexity.aipersecutionblog.compersiankitty.comphapluan.org
+phayul.comphilborges.comphmsociety.org
+phncdn.com
uderzo.ituchicago.eduphotodharma.netphotofocus.comphuquocservices.com
picacomic.compicacomiccn.com
picasaweb.compicidae.netpicturedip.comucdc1998.orgpicturesocial.compimg.twpin-cong.compin6.com
pincong.rocksping.fm
+pinimg.compinkrod.compinoy-n.compinterest.atpinterest.cauc-japan.org
uberproxy.net
pinterest.com
+ubddns.orgpinterest.depinterest.dkpinterest.frpinterest.jppinterest.nlpinterest.se
+ub0.ccpipii.tvpiposay.compiraattilahti.org
+piring.compixeldrain.compixelqi.com
pixiv.net
+pixnet.net
+pk.compki.googplacemix.complayboy.complayboyplus.com
player.fmplayno1.complaypcesor.comu9un.complexvpn.prou15.infoplunder.com
plurk.com
+plus.codes
+plus28.com
+plusbb.compmatehunter.com
+pmates.compo2b.com
pobieramy.toppodbean.com
+podcast.copodictionary.compoe.compokerstars.compokerstars.netpoliticalchina.orgpoliticalconsultation.orgpolitiscales.netpoloniex.compolymer-project.org
polymerhk.com
+poolin.compopo.tw
+popvote.hkpopxi.clickpopyard.compopyard.orgporn.com
porn2.com
porn5.compornbase.orgpornerbros.com
+pornhd.compornhost.compornhub.compornhubdeutsch.net
+pornmm.netpornoxo.compornrapidshare.compornsharing.compornsocket.compornstarclub.comporntube.comporntubenews.comporntvblog.com
pornvisit.com
+port25.bizportablevpn.nlposkotanews.com
+post01.com
+post76.compost852.com
postadult.compostimg.org
typora.io
potato.im
+potvpn.compourquoi.tw
power.compowerapple.compowercx.compowerphoto.orgprayforchina.netpremeforwindows7.com
premproxy.compresentationzen.compresidentlee.twprestige-av.compride.googleprism-break.orgprisoneralert.compritunl.com
privacybox.deprivate.comprivateinternetaccess.comprivatepaste.comprivatetunnel.comprivatevpn.comprivoxy.orgprocopytips.comproject-syndicate.orgprosiben.de
proton.me
protonvpn.comprovideocoalition.comprovpnaccounts.comproxfree.com
proxifier.comproxomitron.info
+proxpn.comproxyanonimo.esproxydns.comtypepad.com
+tycool.comproxypy.net
proxyroad.comproxytunnel.netproyectoclubes.com
prozz.netpsblog.namepscp.tv
+pshvpn.com
+psiphon.catxxx.compsiphon3.compsiphontoday.compstatic.net pt.im
twyac.org
+ptt.ccpttgame.com
+pttvan.orgtwurl.nlpuffinbrowser.com
puffstore.com
pullfolio.com
twttr.com
punyu.com
+pure18.compureconcepts.netpureinsight.orgpurepdf.compurevpn.compurplelotus.orgtwtrland.compursuestar.compushchinawall.compussyspace.computihome.org
putlocker.com
putty.org
puuko.com
pwned.com
pximg.net
+python.com
twtkr.compythonhackers.compytorch.org
+qanote.comqbittorrent.org
+twt.tl
qhigh.com
+qi-gong.me
+qianbai.tw
qiandao.todayqiangwaikan.comqiangyou.org
qidian.caqienkuen.orgqiwen.luqixianglu.cnqkshare.comqoos.comqpoe.com
+twstar.netqstatus.comqtrac.euqtweeter.comquannengshen.orgquantumbooter.netquestvisual.comquitccp.netquitccp.orgquiz.directory
quora.comquoracdn.net
quran.comquranexplorer.com
qusi8.net
+qvodzy.org
qxbbs.org
+qz.com r0.rur18.comradicalparty.org
radiko.jpradio-canada.caradio.gardentwskype.comradiohilight.netradioline.coradiovaticana.org
radiovncr.comrael.orgraggedbanner.comtwreporter.org
+twiyia.comrainbowplan.orgraindrop.iotwitzap.comtwitvid.comrangwang.bizrangzen.netrangzen.org
ranyunfei.comrapbull.netrapidmoviez.comrapidvpn.comrarbgprx.orgraremovie.cc
raremovie.netrateyourmusic.comrationalwiki.org
twitturly.com
+rawgit.com
rawgithub.com
razyboard.comtwitturk.com
rcinet.catwitthat.com
+rd.comrdio.com
+read01.comread100.com
twittertim.esreadmoo.com
readydown.comrealcourage.orgtwitterrific.comrealitykings.comrealraptalk.comrealsexpass.com
+reason.comrebatesrule.netrecordhistory.orgtwittermail.com
twitterkr.comred-lang.orgredballoonsolidarity.org
redbubble.comredchinacn.netredchinacn.orgredd.it
+reddit.comredditlist.comredditmedia.comredditstatic.comredhotlabs.comredtube.com
+referer.usreflectivecode.comregistry.googlerelaxbbs.comtwittergadget.comtwitterfeed.comreleaseinternational.orgreligionnews.comreligioustolerance.org
renminbao.comrenyurenquan.orgresearch.googletwittercounter.comresilio.comresistchina.orgretweeteffect.comretweetist.comretweetrank.comreuters.comreutersmedia.netrevleft.com
+revver.comrfa.orgrfachina.com
twitter4j.org
rfamobile.org
+rfaweb.org
rferl.org
+rfi.fr
+rfi.myrightbtc.com
rigpa.orgriku.merileyguide.com
+riseup.net
+ritouki.jp
ritter.vgrixcloud.comrixcloud.us
rlwlw.comrmbl.ws
rmjdw.com
rmjdw132.inforoadshow.hk
roboforex.comrobustnessiskey.comrocket-inc.netrocksdb.orgrojo.comrolfoundation.org
rolia.netrolsociety.orgronjoneswriter.com
roodo.com
rosechina.net
+rotten.com
rou.videorsdlmonitor.comrsf-chinese.orgrsf.orgrsgamen.org
+rsshub.apprssmeme.comrtalabel.orgrthk.hk
+twitter.jptwitter.comtwittbot.net
+rti.twrtycminnesota.orgruanyifeng.com
rukor.org
+rule34.xxx
+rumble.com
+runbtx.comrushbee.com
+rusvpn.comtwitstat.com
rutracker.net
rutube.ruruyiseek.comrxhj.net
+s-cute.coms-dragon.orgtwitpic.com
twitonmsn.com
+s1heng.com
+s1s1s1.comtwitoaster.com
twitmania.comtwitlonger.coms8forum.com
+twitiq.com
sacks.comsacom.hksadistic-v.comsadpanda.ussafechat.comsafeguarddefenders.comsafervpn.com
safety.googlesaintyculture.comsaiq.mesakuralive.com
sakya.orgtwitgoo.com
samair.rusambhota.orgsankakucomplex.com
+sankei.comtwitgether.com
sapikachu.netsaveliuxiaobo.com
savemedia.comsavethedate.foosavethesounds.infosavetibet.desavetibet.frsavetibet.nl
savetibet.orgsavetibet.rusavetibetstore.orgsaveuighur.orgsavevid.com
say2.infosbme.me
twitchcdn.net
twitch.tv
twitcause.comtwitbrowser.netscasino.com
+schema.orgsciencenets.comscieron.comscmp.comscmpchinese.comscramble.io
+twit2d.com
+scribd.comscriptspot.comtwistory.net
+search.com
+search.xxxtwisternow.com
twisterio.comsearchtruth.comsearx.meseattlefdc.comsecretchina.comsecretgarden.nosecretsline.biz
+twistar.cctwishort.com
+twipple.jpsecureservercdn.netsecuretunnel.comsecurityinabox.orgsecuritykiss.comseed4.meseesmic.com
+seevpn.comseezone.net
sejie.comsellclassics.comsendsmtp.com
sendspace.comsensortower.com
servehttp.com
serveuser.comserveusers.com
+sesawe.net
+sesawe.orgsethwklein.netsetn.comtwip.me
sevenload.com
+sex-11.comsex.comsex3.comsex8.ccsexandsubmission.com
+sexbot.com
sexhu.comsexhuang.comsexidude.comsexinsex.net
+sextvx.com
+sexxxy.biz
+sf.netsfileydy.comsfshibao.comsftindia.org
sftuk.orgshadeyouvpn.com
shadow.ma
shadowsky.xyzshadowsocks-r.comshadowsocks.asiashadowsocks.beshadowsocks.comtwindexx.comshadowsocks.orgshadowsocks9.com
+shahit.bizshambalapost.comshambhalasun.com
shangfang.orgshapeservices.com
twimg.comtwimbow.com
+twilog.orgtwilightsex.comsharebee.com
sharecool.orgtwiggit.org
sharpdaily.hk
sharpdaily.twshat-tibet.comshattered.iosheikyermami.comshellfire.deshenshou.orgshenyun.comshenyunperformingarts.orgshenyunshop.comshenzhoufilm.comshenzhouzhengdao.orgsherabgyaltsen.com
+shiatv.netshicheng.orgshiksha.com
shinychan.comshipcamouflage.comshireyishunjian.comshitaotv.orgshixiao.orgshizhao.orgshkspr.mobishodanhq.comshooshtime.com
+twiffo.com
shopee.twshopping.com
+twifan.com
showhaotu.comshowtime.jp
showwe.twshutterstock.com
shwchurch.orgshwchurch3.comsiddharthasintent.orgsidelinesnews.comsidelinessportseatery.comsierrafriendsoftibet.org
+signal.orgsijihuisuo.clubsijihuisuo.comsilkbook.comsimbolostwitter.comsimplecd.orgsimpleproductivityblog.comtwiends.com
+twicsy.comsingfortibet.comtwicountry.orgsingtao.comsingtaousa.comsino-monthly.comsinoants.com
+sinoca.comsinocast.comsinocism.comsinoinsider.comsinomontreal.ca
+sinonet.ca
sinopitt.infosinoquebec.com
+sipml5.orgsis.xxx
+sis001.com
sis001.ussite2unblock.com
+site90.net
+sitebro.twsitekreator.com
twibs.comsitemaps.orgsix-degrees.io
sixth.bizsjrt.orgsjum.cnsketchappsources.comskimtube.com
+skybet.comtwibbon.comskyvegas.comskyxvpn.comslacker.com
slaytizle.comsleazydream.com
+slheng.comslickvpn.comslideshare.netslinkset.comslutload.comslutmoonbeam.com
slyip.com
slyip.net
+030buy.comsmartdnsproxy.com
smarthide.com
smchbooks.com
+twibble.de
+smhric.org
smith.edu
smyxy.orgsnapchat.com
+snaptu.com
+sndcdn.comsneakme.netsnowlionpub.com
+sobees.comsoc.milsocialblade.comsocialwhale.comsocks-proxy.netsockscap64.com
sockslist.net
+socrec.orgtwibase.comsoftether-download.comtwgreatdaily.com
softether.orgsoftfamous.comsoftnology.bizsoftsmirror.cfsoftwarebychuck.com
twftp.orgsogclub.com
+sogrady.me
+soh.tw
sohcradio.com
sohfrance.orgsokamonline.com
+sokmil.com
+solana.comtwerkingbutt.comsolidaritetibet.orgsolidfiles.comsolv.finance
somee.comsongjianjun.comsonicbbs.ccsonidodelaesperanza.orgsopcast.comsopcast.orgsorazone.netsorting-algorithms.comsos.org
sosreader.comsostibet.orgsoubory.com
soul-plus.netsoulcaliburhentai.net
+soumo.infosoundcloud.comsoundofhope.krsoundofhope.orgsoup.iosoupofmedia.comsourceforge.netsourcewadio.comsouth-plus.orgtwelve.today
tweez.nettweetymail.comsoylentnews.orgtweetwally.com
spankbang.comspankingtube.com
spankwire.comspb.comspeakerdeck.comtweettunnel.comspeedify.comspem.atspencertipping.comspendee.comspicevpn.com
spideroak.com
spike.comtweetree.comspotflux.comspotify.comspreadshirt.es
spring4u.infospringboardplatform.com
springwood.me
+sprite.orgsproutcore.comsproxy.infosquirly.infosquirrelvpn.com
tweetrans.com
+srocket.usss-link.comtweetphoto.comtweetmylast.fmtweetedtimes.com
tweetdeck.comssglobal.cossglobal.me
ssh91.comtweetcs.com
+ssl443.orgsspanel.netsspro.ml
ssr.toolsssrshare.comsss.campsstm.moe
+sstmlt.moe
+sstmlt.netstackoverflow.com
+stage64.hkstandupfortibet.orgstandwithhk.orgstanford.edustarfishfx.comstarp2p.com
startpage.comstartuplivingchina.comtweetboner.bizstatic-economist.comtweetboard.comtweetbackup.comtweepml.orgstaticflickr.comstatueofdemocracy.org
stboy.nettweepmag.comsteamcommunity.comsteel-storm.comsteemit.comsteganos.comsteganos.net
stepchina.comstephaniered.com
sthoo.comstickam.comstickeraction.comstileproject.com
+sto.ccstoporganharvesting.orgstoptibetcrisis.netstoragenewsletter.comtweeplike.mestories.googlestorify.comstorj.iostorm.mgstormmediagroup.com
stoweboyd.comstraitstimes.comstranabg.comstraplessdildo.comstreamable.com
streamate.comstreamingthe.netstreema.comstrikingly.com
strongvpn.comstrongwindpress.com
+student.twstudentsforafreetibet.orgstumbleupon.comstupidvideos.comtweepguide.comsubstack.com
successfn.com
twblogger.com
sugarsync.comsugobbs.comsugumiru18.com
+suissl.comtwbbs.tw
sulian.mesummify.comsumrando.comsun1911.comsundayguardianlive.comsunmedia.casunporno.comsunskyforum.com
twbbs.org
+sunvpn.net
twavi.com
+suoluo.orgsupchina.comsuperfreevpn.comsuperokayama.comsuperpages.comsupervpn.net
superzooi.com
+suppig.netsuprememastertv.comsurfeasy.comtwaud.io
surfshark.com
+suroot.comsurrenderat20.netsustainability.google
svsfx.com
swagbucks.comswissinfo.chswissvpn.net
+switch1.jp
switchvpn.netsydneytoday.comsylfoundation.orgsyncback.com
synergyse.com
sysresccd.org
sytes.net
szbbs.nettwapperkeeper.comt-g.comt.cot.metwaitter.comt35.comt66y.comtaa-usa.orgtaaze.tw
+tabtter.jptw01.org
tacem.org
+tw-npo.orgtw-blog.comtafm.orgtvunetworks.comtagwalk.comtvplayvideos.com
+tvider.comtaipeisociety.orgtaipeitimes.com
taisounds.comtaiwan-sex.comtaiwanbible.com
taiwancon.comtaiwandaily.nettaiwandc.org
taiwanhot.nettvboxnow.comtaiwanjustice.comtaiwanjustice.nettaiwankiss.com
+tvants.comtaiwannation.com
tv.google
+tv.com
tuzaijidi.comtaiwantp.net
tuvpn.comtaiwanus.net
taiwanyes.com
tushycash.comtalk853.comtalkboxapp.com
+talkcc.comtalkonly.nettamiaode.tktanc.orgtangben.com
+tangren.us
+taoism.nettaolun.infotapanwap.comtapatalk.comturntable.fmturkistantimes.comtaup.net
+taweet.com
tbcollege.orgturbotwitter.com
tbicn.org
tbjyt.org
+tbpic.infotbrc.orgtbs-rainbow.org
tbsec.org
turbohide.comtbsmalaysia.orgtbsn.orgtbsseattle.org
+tbssqh.org
tbswd.orgturbobit.nettbthouston.orgtccwonline.org
tcewf.org
tchrd.org
+tcnynj.orgtcpspeed.cotcpspeed.comtcsofbc.org
+tcsovi.orgturansam.orgteachparentstech.orgteamamericany.comtunsafe.comtechnews.twtechspot.comtechviz.netteck.inteco-hk.orgteco-mo.orgteddysun.comteeniefuck.netteensinasia.comtehrantimes.comtelecomspace.com
+telegra.phtelegram-cdn.orgtelegram.dogtelegram.metelegram.orgtelegram.spacetelegramdownload.comtunnelr.com
+telesco.pe
tellme.pw
+tenacy.com
tenor.comtensorflow.orgtenzinpalmo.comterabox.comtew.org
+textnow.me
tfhub.devtfiflve.comtunnelblick.net
+thaicn.comtunnelbear.comtheatlantic.comtheatrum-belli.comthebcomplex.comtheblaze.comtheblemish.comthebobs.comthebodyshop-usa.com
+tunein.comthechinabeat.orgthechinacollection.orgtheconversation.comthedalailamamovie.comthediplomat.comthedw.ustheepochtimes.comthefacebook.comthefrontier.hk
+thegay.comthegioitinhoc.vn
+thegly.comtheguardian.comthehots.infothehousenews.com
+thehun.nettheinitium.comthemoviedb.orgthenewslens.comthepiratebay.orgtheporndude.comtheportalwiki.comtheprint.inthereallove.krtumview.com
tumutanzi.comthestandnews.comthetibetcenter.orgthetibetconnection.orgthetibetmuseum.orgthetibetpost.com
thetinhat.comthetrotskymovie.comthetvdb.comthevivekspot.com
+thewgo.org
+theync.com
thinkgeek.comthinkingtaiwan.comthinkwithgoogle.com
+thisav.com
thlib.orgthomasbernhard.orgthongdreams.comthreadreaderapp.comthreads.netthreatchaos.comthroughnightsfire.comthumbzilla.comthywords.com
+tumblr.comtiananmenduizhi.comtiananmenmother.orgtiananmenuniv.comtiananmenuniv.nettiandixing.orgtianhuayuan.comtianlawoffice.com
tianti.iotiantibooks.orgtuitwit.comtianzhu.orgtibet-envoy.eutibet-foundation.org
+tuidang.setibet-initiative.detibet-munich.detuidang.orgtibet.attibet.ca
tibet.comtibet.fr
tibet.nettibet.nu
tibet.orgtuidang.nettibet.sktibet.totibet3rdpole.orgtibetaction.nettibetaid.orgtibetalk.comtibetan-alliance.org
+tibetan.frtibetanaidproject.orgtibetanarts.org tibetanbuddhistinstitute.orgtibetancommunity.orgtibetancommunityuk.nettibetanculture.orgtibetanentrepreneurs.org!tibetanfeministcollective.orgtibetanhealth.orgtibetanjournal.comtibetanlanguage.orgtibetanliberation.orgtibetanpaintings.comtibetanphotoproject.comtibetanpoliticalreview.orgtibetanreview.nettibetansports.orgtibetanwomen.orgtibetanyouth.orgtibetanyouthcongress.orgtibetcharity.dktibetcharity.intibetchild.org
tibetcity.comtibetcollection.comtibetcorps.orgtibetexpress.nettibetfocus.com
tibetfund.orgtibetgermany.comtibetgermany.de
tibethaus.comtibetheritagefund.org
tibethouse.jptibethouse.org
tibethouse.ustibetinfonet.nettibetjustice.orgtibetkomite.dktuibeitu.nettibetmuseum.orgtibetnetwork.orgtibetoffice.chtubewolf.comtibetoffice.eutibetoffice.orgtibetonline.comtibetonline.tvtibetoralhistory.orgtibetpolicy.eu
tubestack.comtibetsites.comtibetsociety.comtibetsun.comtibetsupportgroup.org
tibetswiss.chtibettelegraph.comtibettimes.nettibettruth.comtibetwrites.orgtubepornclassic.comtigervpn.com
+tiktok.comtiktokv.com
tiltbrush.com
+timdir.comtime.com
tubeislam.comtimesnownews.comtubegals.com
+timsah.comtimtales.comtinc-vpn.org
+tineye.com
tintuc101.comtiny.cctinychat.com
tinypaste.com
tipas.nettubecup.comtistory.comtkcs-collins.com tl.gdtube911.com
tmagazine.comtmdfish.com
+tmi.metmpp.org
tube8.comtube.com
tubaholic.comtnaflix.comtngrnow.comtngrnow.nettnp.orgto-porno.comtogetter.comtoh.info
tokyo-247.com
tokyo-hot.comtokyo-porn-tube.comtokyocn.com
+tu8964.comtono-oka.jptonyyan.net
+toodoc.com
+toonel.net
+top.tvtop10vpn.comtop81.ws
+topbtc.com
ttvnw.net
+topnews.intoppornsites.comtopshareware.com
topsy.com
toptip.ca
tttan.com
+tt1069.comtora.to
torcn.comtorguard.nettorlock.comtorproject.orgtorrentkitty.tvtorrentprivacy.comtorrentproject.setorrenty.orgtorrentz.eutortoisesvn.net
+torvpn.comtsunagarumon.comtotalvpn.comtoutiaoabc.comtowngain.com
+toypark.intoythieves.comtoytractorshow.comtparents.org
+tsquare.tvtracfone.comtradingview.com
tsemtulku.comtranslate.googtransparency.org
tsctv.net
trendsmap.comtrialofccp.orgtrickip.nettrickip.orgtrimondi.detronscan.orgtrouw.nltryheart.jp
+truveo.comtruebuddha-md.orgtrulyergonomic.comtruthsocial.comtruthontour.org
google.com.docn.shafaqna.com
+trt.net.trtreemall.com.twtsdr.uspto.govtrans.wenweipo.com
+tpi.org.tw
+tsu.org.twtosh.comedycentral.comtor.updatestar.comtor.blingblingsquad.net
+ttv.com.tw1-apple.com.twtongil.or.krtn3.shemalez.comtn2.shemalez.comtn1.shemalez.com
tma.co.jptimesofindia.indiatimes.comtimes.hinet.net
ticket.com.twtibetrelieffund.co.uktibetoffice.com.autui.orzdream.comtibet.org.tw
+tibet.a.setibet-house-trust.co.uktianyantong.org.cnthywords.com.twthesaturdaypaper.com.au
google.com.omthecenter.mit.edu
th.hao123.comtelegraph.co.uktech2.in.com
+tdm.com.motbtemple.org.uktbskkinabalu.page.tl
+tbi.org.hktascn.com.autarr.uspto.govtaiwanyes.ning.comtaiwantt.org.twtaiwannews.com.twtaiwanncf.org.twtaiwannation.com.tw1688.com.autaiwannation.50webs.com
tvmost.com.hktahr.org.twtagwa.org.autaedp.org.twtaconet.com.tw
+228.net.tw56cun04.jigsy.comtw.gigacircle.com
tw.hao123.comtw.iqiyi.comtw.jiepang.com8news.com.tw9news.com.au
a5.com.ru
+abc.net.au
abc.pp.ruabematv.akamaized.nettw.streetvoice.comtw.tomonews.nettw.voa.mobitw.yahoo.comabitno.linpie.comt.orzdream.comszetowah.org.hksurfeasy.com.ausunwinism.joinbbs.nettwbbs.net.twsunta.com.tw
suche.gmx.netsubacme.rerouted.orgstore.steampowered.com
+stc.com.sastatic.shemalez.comstatic.comico.twssl.webpack.dess7.vzw.comss.pythonic.lifess.levyhsu.comss.carryzhou.com
srcf.ucam.orgtweets.seraph.mespecxinzl.jigsy.comspaces.hightail.com
sowers.org.hksouthpark.cc.comsouthnews.com.twsolarsystem.nasa.gov softwaredownload.gitbooks.iosoftether.co.jp
sod.co.jp
+smh.com.auskyking.com.twsiteks.uk.tosingpao.com.hksingaporepools.com.sgsinchew.com.myshowbiz.omy.sgshop2000.com.twsharpdaily.com.hk
ac.jiruan.net
share.ovi.comshare.america.govtwimg.edgesuite.netshadowsocks.com.hksettv.com.twsecure.raxcdn.comsecure.logmein.comsecure.hustler.comtwister.net.cosearch.yahoo.comacnw.com.ausearch.aol.comscratch.mit.eduscache2.vzw.comscache1.vzw.comscache.vzw.com
+sbs.com.au
sanmin.com.twsalvation.org.hk
sa.hao123.coms3.amazonaws.com#s3-ap-southeast-2.amazonaws.com#s3-ap-northeast-1.amazonaws.com
s1.nudezz.com
+s.yimg.comruten.com.tw
+rti.org.twrthk.org.hkactimes.com.auadmin.recaptcha.netrelay.firefox.comrelay.com.twrecoveryversion.com.twrecovery.org.twrealforum.zkiz.comreadingtimes.com.twrconversation.blogs.comrcam.target.comraw.githack.comramcity.com.au
raizoji.or.jpraidtalk.com.twtwnorth.org.twraidcall.com.twradioaustralia.net.auqq.co.zaqgirl.com.tw
python.com.twpurpose.nike.compulse.yahoo.compubu.com.tw
+pts.org.twpsiphon.civisec.orgproxynetwork.org.ukproxylist.org.ukposts.careerengine.us
+plm.org.hkplays.com.tw"pioneer-worker.forums-free.compinterest.com.mxpinterest.co.ukpinterest.co.krphosphation13.rssing.comphobos.apple.compemulihan.or.id
+udn.com.tw
+pct.org.twuforadio.com.twpcstore.com.tw
pchome.com.twpcdvd.com.twuighur.narod.ru panamapapers.sueddeutsche.deadpl.org.hkukcdp.co.ukukliferadio.co.ukoversea.istarshine.comoursteps.com.auorientaldaily.com.myoricon.co.jporgancare.org.twordns.he.netopml.radiotime.comunblock.cn.comopenwrt.org.cnopen.com.hkonline.recoveryversion.orgonedrive.live.comold.nabble.comold.honeynet.orgoikos.com.twadult.friendfinder.comnzchinese.net.nz
ae.hao123.comunification.org.twny.visiontimes.comny.stgloballink.comntdtv.com.twntdtv.co.kr
google.com.niupdates.tdesktop.com
npa.go.jpnotify.dropboxapi.comnko.navy.milnitter.pussthecat.org
nic.cz.ccnf.id.au
nexttv.com.twnextmag.com.twnextdigital.com.hknext11.co.jpnewtaiwan.com.twnews100.com.twnews.ycombinator.comnews.yahoo.com
ai.binwang.menews.tvb.comnews.singtao.ca
google.com.np
+ait.org.twalicejapan.co.jpnews.seehua.comuserapi.nytlog.comusers.skynet.benews.omy.sgushuarencity.echainhost.comusinfo.state.govnews.nationalgeographic.comusmgtcg.ning.com
usno.navy.milalliance.org.hkam730.com.hkamazon.co.jpnews.cnyes.comnewlandmagazine.com.aunemesis2.qx.net
+nch.com.twnccwatch.org.twnavyreserve.navy.milnavyfamily.navy.milnational-lottery.co.ukuyghur.co.uknakedsecurity.sophos.commysite.verizon.netamnesty.org.hkmymusic.net.twmyforum.com.ukmyforum.com.hkmyav.com.tw
my.pcloud.comuygur.fc2web.commy.opera.com
+my.mail.rumy-private-network.co.uk
mx.hao123.commoney-link.com.twmo.nightlife141.comaobo.com.aumitao.com.tw
minghui.or.kr
+mike.cz.ccmetroradio.com.hkmetrohk.com.hkvds.rightster.commerit-times.com.twmeme.yahoo.com
+mega.co.nzmedia.org.hkmedia.nu.nlaofriend.com.aumakzhou.warehouse333.comaolchannels.aol.commacts.com.tw
ma.hao123.comm.slandr.net
+vft.com.twm.plixi.com
+ltn.com.tw
+lsd.org.hklotuslight.org.twvideo.aol.caapi-secure.recaptcha.net
video.aol.comvideo.ap.orgvideo.fdbox.comvideo.foxbusiness.comvideo.yahoo.comlotuslight.org.hklogos.com.hklogin.target.comlists.w3.orglinux.org.hk linear-abematv.akamaized.net
line.naver.jplighten.org.twupcoming.yahoo.comlibertytimes.com.twliberal.org.hklegaltech.law.comleeao.com.cnld.hao123img.comlamnia.co.uklama.com.twlab.skk.moekwongwah.com.my
ksnews.com.twapi.dropboxapi.compds.nasa.govkmuh.org.tw
kk-whys.co.jp
kinmen.org.twkingstone.com.twkhmusic.com.twvjmedia.com.hkkb.monitorware.comvlog.xuite.netkagyuoffice.org.twkagyunews.com.hk
vn.hao123.comkagyu.org.zaapi.linksalpha.comkadokawa.co.jpjpl.nasa.gov
jp.hao123.comjornaldacidadeonline.com.br
jma.go.jpjihadintel.meforum.orgjapantimes.co.jp!japanfirst.asianfreeforum.comits.caltech.eduapi.pureapk.comvod-abematv.akamaized.netvod.wwe.comistars.co.nzislam.org.hkisc.sans.eduironbigfools.compython.netiptv.com.twvpn.cmu.eduapi.recaptcha.net($international-news.newsmagazine.asia
inside.com.twindependent.co.uk
impact.org.au
img.dlsite.jpimages.comico.twiipdigital.usembassy.govigotmail.com.tw
+ifan.cz.cc
id.heroku.com
id.hao123.comice.audionow.com
i.lithium.com
i-part.com.tw
hwayue.org.twhurriyet.com.trhudatoriq.web.idhub.docker.com
+hst.net.twhotfrog.com.twhongkong.fandom.comapidocs.linksalpha.com
home.sina.comhojemacau.com.mo
hmv.co.jphkwcc.org.hk
hkupop.hku.hkhkreporter.loved.hkhklts.org.hkhkip.org.ukhkhrm.org.hkhkhrc.org.hkhkdailynews.com.hkhkctu.org.hkapp.box.comhkci.org.hkhk.yahoo.comapp.cloudcone.com
app.evozi.com
w.idaiwan.comapp.heywire.comapp.smartmailcloud.comapp.tutanota.comappledaily.com.hkhk.jiepang.comhk.hao123img.comhk.gradconnection.comhk.frienddy.comhi-on.org.twhelp.linksalpha.com
+heix.pp.ru
heeact.edu.twhd.stheadline.comhakkatv.org.tw
+gvm.com.twguangming.com.mygsp.target.comgreenpeace.com.twgreenparty.org.twgreenfieldbookstore.com.hkappledaily.com.tw
graphis.ne.jpwarbler.iconfactory.net
google.com.vn
google.com.vc
google.com.uy
google.com.ua
google.com.tw
google.com.tr
google.com.tj
google.com.sv
google.com.sl
google.com.sg
google.com.sb
google.com.sa
google.com.qa
google.com.py
wealth.com.tw
google.com.pr
google.com.pk
google.com.ph
google.com.pg
google.com.pe
google.com.patherock.net.nztrtc.com.twapi-verify.recaptcha.nettruth101.co.tv
google.com.nf
google.com.na
google.com.my
google.com.mxwebsite.informer.com
google.com.mt
google.com.mm
google.com.ly
google.com.lb
google.com.kw
google.com.kh
google.com.jm
wego.here.com
google.com.hkapps.evozi.com
google.com.gt
google.com.gi
google.com.gh
google.com.fj
google.com.et
google.com.eg
google.com.ec
google.com.ng
google.com.cy
google.com.cu
google.com.co
google.com.bz
google.com.br
google.com.bo
google.com.bn
google.com.bh
google.com.bd
google.com.au
google.com.ar
google.com.ai
google.com.ag
google.com.afgoogle.co.zwgoogle.co.zmgoogle.co.zagoogle.co.vigoogle.co.vegoogle.co.uzgoogle.co.ukgoogle.co.uggoogle.co.tzgoogle.co.thgoogle.co.nzgoogle.co.mzgoogle.co.magoogle.co.lsgoogle.co.krwhitebear.freebearblog.orggoogle.co.kegoogle.co.jpgoogle.co.ingoogle.co.ilgoogle.co.idgoogle.co.crgoogle.co.ckwiki.cnitter.comwiki.esu.imwiki.gamerp.jpwiki.jqueryui.comwiki.keso.cnwiki.moegirl.orgwiki.oauth.netwiki.phonegap.comgoogle.co.bwgoogle.co.ao
goodtv.com.tw
goo.ne.jp
ar.hao123.comgohappy.com.twgodsdirectcontact.org.twgodsdirectcontact.co.ukgoagent.codeplex.comgo.nesnode.comgnci.org.hkgmozomg.izihost.orgglobal.bing.com
+gfw.org.ua
gfgold.com.hkgeocities.co.jp
+gcc.org.hkgati.org.twgamez.com.twgamer.com.twaspi.org.augamebase.com.twfuyu.org.twftvnews.com.tw
+ftv.com.tw
free4u.com.arfq.wikia.comfourface.nodesnoop.comforum.xinbao.de
forum.tvb.comaspistrategist.org.auzhao.jinhai.dezhao.1984.cityforum.palmislife.comwlcnew.jigsy.comwlx.sowiki.netforum.omy.sgforum.mymaji.comforum.my903.comforum.idsam.comforum.cyberctm.comforum.baby-kingdom.comfilmy.olabloga.plfiddle.jshell.netfeeds.fileforum.comfast.wistia.comfangong.forums-free.comfalungong.org.ukfalun.caltech.eduworkerdemo.org.hkevchk.wikia.cometools.ncol.cometaa.org.auesg.t91y.comeraysoft.com.tr
eracom.com.twepochtimes.co.krepochtimes.co.ilenlighten.org.twenglishfromengland.co.uk
en.hao123.comen.favotter.netemilylau.org.hkefcc.org.hkeeas.europa.euecsm.vs.comecfa.org.twassets.bwbx.io
e-zone.com.hkwriter.zoho.com
e-info.org.twe-classical.com.twdynupdate.no-ip.comdynamicdns.org.ukdynamicdns.me.ukdynamicdns.co.uk%!duckduckgo-owned-server.yahoo.net
+dpp.org.twwufi.org.twdownload.cnet.comdownload.aircrack-ng.orgdomaintoday.com.audomain.club.twdolf.org.hk
dmm.co.jp
+dl.box.netwww.ajsands.comwww.americorps.govwww.antd.orgwww.aolnews.com
+atc.org.auwww.cmoinc.orgwww.dmm.comwww.dwheeler.comwww.eastturkistan.netwww.gmiddle.comwww.gmiddle.netwww.idlcoyote.comwww.klip.mewww.lamenhu.comauntology.fandom.comwww.linksalpha.comzh.wikisource.orgwww.monlamit.org
www.moztw.orgwww.nbc.comwww.orchidbbs.com
www.owind.comwww.oxid.itwww.powerpointninja.comwww.s4miniarchive.comwww.sciencemag.org
www.skype.comwww.tablesgenerator.comwww.taiwanonline.cczh.wikiquote.orgwww.thechinastory.orgwww.wan-press.orgwww.wangruowang.orgwww.websnapr.comzh.wikinews.orgwww1.american.edudisk.yandex.ruwww2.ohchr.orgwww2.rocketbbs.comdisk.yandex.comdiscuss.com.hkdingchin.com.twdevelopers.box.netdestiny.xfiles.toderekhsu.homeip.netdemo.opera-mini.net
+ddns.me.uk
+ddc.com.twdata.flurry.comxa.yimg.comdaodu14.jigsy.comdanbooru.donmai.usdalailamavisit.org.nzdajusha.baywords.comdailynews.sina.comdailymail.co.uk
+dabr.co.uk!d3rhr7kgmtrq1v.cloudfront.net d3c33hcgiwev3.cloudfront.net!d1c37gjwa26taa.cloudfront.net
xfm.pp.ru!d1b183sg0nvnuh.cloudfront.netcyberghost.natado.com
cw.com.tw
+cts.com.twctitv.com.tw
ct.org.tw
+csw.org.uk
css.pixnet.incrossfire.co.krcosmic.monar.chcoolloud.org.twcontests.twilio.comconnect.facebook.netcommunity.windy.comcoinrail.co.kr
+coat.co.jp
co.ng.milcnnews.chosun.comcnex.org.cnxinmiao.com.hkxinqimeng.over-blog.com
+cna.com.twcn2.streetvoice.comcn.voa.mobizh.pokerstrategy.comav.nightlife141.comcn.streetvoice.combabynet.com.hkcn.sandscotaicentral.comcn.ibtimes.comcn.giganews.comcn.freeones.com
cn.fmnnow.comcn.dayabook.com
+cmp.hku.hk
+cmi.org.tw
cloud.mail.rucling.omy.sgcldr.unicode.org
+clb.org.hk
+cl.d0z.netchristiantimes.org.hkchinesenews.net.auchinese.soifind.comchinese.irib.irchinese.engadget.comchinese.donga.comchinayouth.org.hkchinatown.com.auchinapress.com.mychinapost.com.twchina.ucanews.comchina-review.com.uachina-mmm.sa.comchina-mmm.jp.netchat.lmsys.orgch.shvoong.comcfhks.org.hk#certificate.revocationcheck.comcentauro.com.brcdpa.url.tw
cdnews.com.twxxxx.com.aubackpackers.com.twcdn.softlayer.netcdn.seatguru.comxys.dxiong.comcdn.printfriendly.comcdn.jwplayer.comcdn.helixstudios.netbahamut.com.twcdn-images.mailchimp.com
+ccw.org.twyahoo.com.hkcbtc.org.hk
barnabu.co.uk
+yam.org.twcathvoice.org.twcatholic.org.twcatholic.org.hkyasni.co.ukcasatibet.org.mxcari.com.my
+cap.org.hkcams.org.sgcahr.org.twbynet.co.ilbx.in.thbartender.dowjones.com
yes123.com.twbusinesstoday.com.twyesasia.com.hkbuddhanet.com.tw
br.hao123.combooktopia.com.aubooks.com.twbook.zi5.mebook.com.twbolin.netfirms.combnext.com.twblogspot.com.uyblogspot.com.trblogspot.com.ngblogspot.com.mtblogspot.com.esblogspot.com.egblogspot.com.eeblogspot.com.cyblogspot.com.coblogspot.com.by
yomiuri.co.jpblogspot.com.brblogspot.com.aublogspot.com.arblogspot.co.ukzenmate.com.rublogs.tampabay.com*&blogs.libraryinformationtechnology.com
bbc.co.ukblog.xuite.netblog.workflow.isblog.tiney.comblog.taragana.comblog.syx86.com
blog.syx86.cnblog.soylent.comblog.sogoo.org
+bbci.co.ukblog.ranxiang.comblog.pentalogic.netblog.pathtosharepoint.comblog.martinoei.comblog.lester850.infoblog.kangye.orgblog.jackjia.comblog.istef.infobbs.brockbbs.comblog.fuckgfw233.orgblog.foolsmountain.comblog.fizzik.comblog.expofutures.comzdnet.com.twbbs.cantonese.asia$ blog.cryptographyengineering.comblog.cnyes.comblog.calibre-ebook.com
ytn.co.krbitinka.com.arbbs.ecstart.com
+berm.co.nz
+bcc.com.twbcast.co.nzbbs.tuitui.infobbs.sou-tong.orgbbs.skykiwi.combbs.sina.com
bbs.qmzdd.combbs.netbig.com
bbs.mychat.tobbs.morbell.combbs.mikocon.combbs.hanminzu.orgbbs.junglobal.netbbs.huasing.org
zaobao.com.sg
bbs.hasi.wangtw.myblog.yahoo.comhk.knowledge.yahoo.comblog.exblog.co.jpblog.excite.co.jpblog.sina.com.twblog.youthwant.com.twblogs.yahoo.co.jpbuy.yahoo.com.twcbs.ntu.edu.twcdn.assets.lfpcontent.combbs.kimy.com.twcn.theaustralian.com.auzh.ecdm.wikia.comcn.uncyclopedia.wikia.comzh.pttpedia.wikia.comzh.uncyclopedia.wikia.comwww.zensur.freerk.comwww.taup.org.twwww.m-sport.co.ukwww.lib.virginia.eduauctions.yahoo.co.jpwww.businessinsider.com.auebook.hyread.com.twforum.setty.com.twforum.sina.com.hkforum.slime.com.twgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.netgojet.krtco.com.twweiboscope.jmsc.hku.hk!greatfire.us7.list-manage.comhome.so-net.net.twhk.myblog.yahoo.comhk.rd.yahoo.com#voa-11.akacast.akamaistream.netcdn1.lp.saboom.comtopic.youthwant.com.twbitc.bme.emory.eduvpn.sv.cmu.eduithelp.ithome.com.twhkcoc.weather.com.hkfnc.ebc.net.twtv.jtbc.joins.comvideo.aol.co.ukmagazines.sina.com.twme.youthwant.com.twtw.answers.yahoo.commyshare.url.com.twnews.ebc.net.twnews.hk.msn.comnews.msn.com.twnews.sina.com.hknews.sina.com.twnews.tvbs.com.twnytimes.map.fastly.netocsp.int-x3.letsencrypt.orgpage.bid.yahoo.comresearch.jmsc.hku.hk%!rfalive1.akacast.akamaistream.netsearch.yahoo.co.jpshare.youthwant.com.twtw.money.yahoo.comtw.mobi.yahoo.coma248.e.akamai.nettw.mall.yahoo.comtw.knowledge.yahoo.comtw.bid.yahoo.com1989report.hkja.org.hk-)89.64.charter.constitutionalism.solutionsmjlsh.usc.cuhk.edu.hklibrary.usc.cuhk.edu.hk
+9
+KECHUANGkechuang.orgkc.kexinshe.com
+cn
+%
+FONTEXPLORERfontexplorerx.com
+5
+SENSORSDATA-ADS"static.sensorsdata.cn
+ads
+8
+JUSTAV
+hkporn.net
+justav.net
+twporn.net
+S
+ OGURY-ADS ogury.com
+ads
+presage.io
+adsogury.co
+ads
+t
+SCI-HUB
+sci-hub.se
+sci-hub.ee
+sci-hub.st
sci-hub.it.nfsci-hub.mksa.topsci.hubg.org
+$
+TAOMEE
+61.com
+taomee.com
+
+TELEVISION-ADSad.hpplay.cn
+adsadeng.hpplay.cn
+ads#ads-uo.api.leiniao.com
+ads#ads-ut.api.leiniao.com
+adsads.api.my7v.com
+adsads.huan.tv
+adsads.huantest.com
+adsadvapi.joyplus.tv
+ads advapikj.joyplus.tv
+ads$euads-o.api.leiniao.com
+ads!hwads-t.api.my7v.com
+ads kuyun.com
+ads!testads.api.my7v.com
+ads
+$
+AFPafp.comafpforum.com
+
+DIDIdidi.cn
didialift.comdidichuxing.comdidistatic.com
+udache.comxiaojukeji.comdiditaxi.com.cn
didi-food.com
+!cndidiaustralia.blog
+!cndidiglobal.com
+!cndidimobility.co.jp
+!cn
+H
+
+DSLREPORTSbroadbandreports.comdslr.netdslreports.com
+%
+NGINX
nginx.com
nginx.org
+9
+YCOMBINATORstartupschool.orgycombinator.com
+
+BYBITbybit-exchange.github.iobybit.ada.support
bybit.com
bycsi.com
+bytick.com
+byapis.com
bycbe.combymj.io
+
+GARENA"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net
+garena.comgarena.live
garena.my
garena.ph
garena.sg
garena.tv
garena.tw
garena.vn
garenanow.comseagroup.comgarena.co.idgarena.co.th
++
+MYFONTSmyfonts.commyfonts.net
+8
+
+CYBERTRUSTcybertrust.co.jpcybertrust.ne.jp
+)
+KUCOIN
+kucoin.comkucoin.plus
+x
+XIMALAYA-ADS$adbehavior.ximalaya.com
+ads"adse.wsa.ximalaya.com
+adsadse.ximalaya.com
+ads
+)
+ REBRANDLY rb.gy
rebrandly.com
+(
+REDISredis.io
redislabs.com
+
+THOMSONREUTERSthomsonreuters.rureuters.com
elite.comlegaltracker.com
+reuters.tvreutersagency.cnreut.rsthomsonreuters.cathomsonreuters.cn
+tr.com
tmsnrt.rsthomsonreutersmexico.comaranzadi.esthomsonreuters.comreutersmedia.netcorepublishingsolutions.comthomsonreuters.inthomsonreuters.esthomsonreuters.co.nzthomsonreuters.co.ukthomsonreuters.com.sgthomsonreuters.com.trthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pesweetandmaxwell.co.ukthomsonreuters.com.brthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.com.aulivrariart.com.brthomsonreuters.com.ar
+
+5CH2ch.net5ch.net
+S
+GANJI58ganji.com58ganji-corp.com
ganji.comganjistatic1.com
+P
+QWEATHER
hecdn.net
heweather.netqweather.comqweather.net
+
+CATEGORY-BANK-CNicbcccb.com
+ccbcos.combosc.cnunionpayintl.comunionpayintl.cnunionpaysecure.comunionpay.netunionpay.comcup62.cnchinaunionpay.netpsbc.com
+ccbfund.cn
whccb.comkcbebank.comshrbank.com
mybank.cn
+ms-bank.cn
+webank.com
webankcdn.netcsxbank.com
fbank.com
+xwbank.comzgcbank.comyillionbank.com
+z-bank.com
95516.netwegobank.cnsuningbank.com
+kshbank.cnxa-bank.com
newupbank.com
+ymbank.comwxsbank.com
bocgi.combocifunds.cn
+boc.cnbocfullertonbank.combocamchina.combocaviation.com
boccfc.cc
boccfc.cnbankofchina.combocgins.com
bocichina.combocichina.cn
bocim.combank-of-china.com
bocifunds.com
bocigroup.com
95516.comicbcstandard.comicbcstandardbank.comccbfutures.comccbfund.com
ccbxt.comabchina.comicbcstandardresources.comchinaunionpay.com
+ccb.cn
ccbfutures.cnccbleasing.comicbcstandardsecurities.com
95588.comicbcina.combankcomm.comtest-cignacmb.com
8008205555.cn8008205555.comcignacmb-ipmi.comcignacmb.comcignacmbamc.comcmb-leasing.comcmbchina.bizcmbchina.cncmbchina.com
cmbimg.cn
+cmbimg.comcmbt.cn
+cmbuat.com
cmburl.cncmf.bizcmf.ltdcmfchina.com
+cmfunds.cnhsbc.com.cnccbtrust.com.cn
+ccb.com.cnhsbcinsurance.com.cnicbc.com.cnccblife-test.com.cnccbfund.com.cnccb-life.com.cnbankofbeijing.com.cnbocservices.com.cnbocichina.com.cn95588.com.cnicbcmanila.com.cn
+cup.com.cn
hsbcqh.com.cn
icbccs.com.cn
dccnet.com.cnbocifunds.com.cnonebank.com.cnspdb.com.cnnjcb.com.cn
+hxb.com.cncmbc.com.cncitibank.com.cn
+cib.com.cncgbchina.com.cn
+bsb.com.cnchinaunionpay.com.cnicbccstz.com.cn bochk.com
+!cnccbintl.com.hk
+!cnccbseoul.com
+!cncmbi.com.hk
+!cn cmbwinglungbank.com
+!cnicbc-at.com
+!cnicbc-cz.com
+!cnicbc-ltd.com
+!cnicbc-uk.com
+!cnicbc-us.com
+!cnicbc.ae
+!cnicbc.be
+!cn
+icbc.co.id
+!cn
+icbc.co.jp
+!cn
+icbc.co.kr
+!cn
+icbc.co.nl
+!cnicbc.com.au
+!cnicbc.com.es
+!cnicbc.com.kh
+!cnicbc.com.kw
+!cnicbc.com.la
+!cnicbc.com.mm
+!cnicbc.com.mo
+!cnicbc.com.mx
+!cnicbc.com.pe
+!cnicbc.com.pk
+!cnicbc.com.qa
+!cnicbc.com.sg
+!cnicbc.com.vn
+!cnicbc.de
+!cnicbc.eu
+!cnicbc.lu
+!cn
icbcalmaty.kz
+!cnicbcasia.com
+!cn
icbcbr.com.br
+!cnicbci.com.hk
+!cn
icbcindia.com
+!cn
+icbcit.com
+!cnicbclondon.com
+!cn icbcme.ae
+!cn
icbcmoscow.ru
+!cn
+icbcmy.com
+!cn
+icbcnz.com
+!cnicbcpanama.com
+!cnicbcparis.fr
+!cn
+icbcpl.com
+!cn
icbcswiss.com
+!cnicbcthai.com
+!cn
+icbkfs.com
+!cn
+icbkus.com
+!cn
+
+
+CUGBONLINE
cugbonline.cn
+
+ MIHOYO-CN
mhystatic.com
+cn mhyurl.cn
+cn
+mihayo.com
+cnmihayou.com
+cn
+mihoyo.com
+cnmihoyocg.com
+cnmihoyogift.com
+cnmihoyomall.com
+cnmiyoushe.com
+cnbenghuai.com
+cnbh3.com
+cnbhsr.com
+cnthemisweeps.com
+cnyuanshen.com
+cn
juequling.com
+cn'^.+-mihayo\.akamaized\.net$
+cn
+
+
OPENSTREETMAPopenmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.orgosm.orgosmfoundation.orgstateofthemap.comstateofthemap.org
+3
+SEGMENTFAULTsegmentfault.com
sifou.com
+"
+ADBLOCKPLUSadblockplus.org
+
+ALIBABACLOUDalibabacloud.comalicloud.comalibabacloud.co.in
+!cn alibabacloud.com.au
+!cn alibabacloud.com.hk
+!cn alibabacloud.com.my
+!cn alibabacloud.com.sg
+!cn alibabacloud.com.tw
+!cn
+
+
+ BLOOMBERG
bloombergbbgevent.combbhub.io
+bbthat.combgov.combloomberg.cn
bloomberg.combloomberg.fmbloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com
blpevents.comblpprofessional.combmia.orgbnef.combusinessweek.combusinessweekmag.combwbx.iocitylab.com
gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.comtictoc.videobloomberg.co.jpbloomberg.co.krbloomberg.com.br
+.
+U17u17.comu17i.comu17t.com
+"
+TYPENETWORKtypenetwork.com
++
+WIKIDOTwdfiles.comwikidot.com
+2
+YUKETANGrainclassroom.comyuketang.cn
+
+BTDIG
btdig.com
+
+CATEGORY-EDUCATION-IRfaradars.org
+git.ir
+learnby.irtoplearn.comdone.iriranlms.orgwebinarplus.online
+5
+ HINET-ECA
eca.hinet.netgtlsca.nat.gov.tw
+
+SPOTIFY-ADS'adeventtracker.spotify.com
+ads$adstudio-assets.scdn.co
+ads#bloodhound.spotify.com
+ads
+
+APPLEapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net%!beatselectronicsllc.tt.omtrdc.net!www-cdn.icloud.com.akadns.net applebeats-bydreoutletssale.netauricularesbeatsmarkt.comapple.beapple.bgapple.bsapple.caapple.chapple.clapple.cmapple.co
apple.comapple.czapple.deapple.dkapple.ee
swift.orgappleswift.comitunesparty.comitunesmatch.comituneslogin.netituneslatino.comitunesiradio.comitunesfestivals.comitunesessentials.comitunes12days.com
itunes.us
+itunes.rio
+itunes.com
itunes.mx
itunes.hk
+itunes.org12diasderegalosdeitunes.cliutunes.com
itunes.caitunes-radio.netitunesradio.comituneas.comitunbes.comitun.es 12joursdecadeauxdeitunes.com12diasderegalosdeitunes.pe12diasderegalosdeitunes.hn12diasderegalosdeitunes.gt12diasderegalosdeitunes.crapple.esapple.euapple.fiapple.fr
apple.hamburgapple.hnapple.hrapple.huapple.ieapple.inapple.isapple.itapple.joapple.jpapple.krapple.lkapple.ltapple.lvapple.meapple.my
apple.netitunesradio.rioitunesradio.tvitunesstore.coitunesu.com12diasderegalosdeitunes.comapple.nlapple.noapple.pkapple.plapple.ptapple.roapple.rsapple.ruapple.saapple.seapple.sgapple.siapple.skapple.soapple.ttapple.twapple.ukapple.usapple.xn--czr694bapple.xn--fiqs8s
apple.xyz
aplestore.comapple-store.netapple-store.wang
applestor.com
applestore.bg
applestore.cc
applestore.ch
applestore.cmitunesu.net!12diasdepresentesdeitunes.com
wwwitunes.com12diasderegalosdeitunes.coapplestore.comitunesradio.tw
itunes.co
wwwicloud.commylcloud.netmyicloud.net
+me.comios-icloud.comicloudsetup.comicloudsecure.neticloudos.neticloudos.deicloudo.net
+icloudo.deicloudo.com
icloudpay.net
icloudnet.net
applestore.de
applestore.hk
applestore.kr
applestore.meapplestore.neticloudmusic.net
applestore.ph
applestore.qa
applestore.sgapplestore.wangapplestoreonline.comapplestorepro.euonlineapplestore.comapp-store.wangappe-store.comappleappstore.netappleappstore.tv
appsto.reicloudmail.netappstore.hkappstore.myappstore.phasto.retvappstore.netapple-imac.com
appleimac.comimac-apple.comimac-applecomputer.comimac.coicloudhome.comimac.comimac.euimac.grimac.oneimac.rs
imacapple.comimacapplecomputer.comebookforipad.comeuroipad.comfindmyipad.com
indiaipad.comicloude.comipad.de
ipad.host
ipad.wang
ipad3.com
+ipadair.cl
+ipadair.cmicloudbrowser.net
icloudbox.net
+ipadair.frbeats-bydrestore.com
+ipadair.ie
+ipadair.jp
+ipadair.twipadaustralia.comipadmini.cm
icloudads.netipadmini.lkipadpro.buzz
+ukipad.comappleiphone.huappleiphone.netappleiphonecell.combestiphonestuff.comcooliphonecasesstore.comcustom-iphonecase.comdesigneriphonescases.com
dl-iphone.comfundaiphone5s.com
hebiphone.com
hf-iphone.com
+iphine.com
iphone-cd.com
iphone-cn.com
iphone-sh.comiphone-vip1.comiphone-vip2.comiphone-vip3.comiphone-vip4.comiphone-vip5.comiphone-x.tv
iphone-yh.com
iphone-zh.com
iphone.cm
+iphone.com
icloud.vn
icloud.sk
iphone.esiphone.host
icloud.si
iphone.pt
iphone.rs
iphone.ruiphone.wangiphone4.com
icloud.seiphone4s.comiphone5.comiphone5casescovers.comiphone5s5case.com
icloud.roiphonecase2013.comiphonecase5.comiphonecases100.comiphonecases5.com
icloud.ptiphonecollcase.comiphonefc.comiphonegermany.comiphonehangzhou.comiphoneimessage.comiphoneplus.wang
iphonerip.netiphonese.tviphoneunlockimei.comiphonexs.tvonlyiphone5case.comaplleipods.comappleclassicipod.comdownloadsforipod.comipod.caipod.chipod.cmipod.co
+icloud.org
icloud.om
icloud.lvipod.com
icloud.jp
icloud.is
icloud.ie
icloud.hu
icloud.fripod.deipod.esipod.euipod.fripod.gripod.hkipod.isipod.netipod.noipod.pkipod.rsipod.ruipod.tw
ipodcentre.nlipodcleaner.comipoditouch.comipodnano.comipodnano.netipodprices.com
+ipodrip.ca
icloud.fi
ipods.com
icloud.eeipodtouch.co
ipodtouch.com
+myipod.netoffrezdesipods.comsimplyipod.comwwwipodlounge.comimacsources.comlaunchpad.wangmac.wang
+macbook.co
+macbook.hk
+macbook.twmacbook.wang
icloud.de
+icloud.commacbookair.com
icloud.chicloud-isupport.com
macbookair.es
macbookair.hk
macbookair.kr
macbookair.jpmacbookair.net
macbookpro.comacbookpro.comicloud-content.commacbookpro.net
macbookpro.usmacbookpros.commacbooksale.comwwwmacbookair.comapplemx-icloud.com
applewatch.hk
applewatch.tv
applewatch.twapplewatch.wangapplewatchedition.comapplewatchseries3.netapplewatchsport.comapplemusic.berlin
applemusic.coapplemusic.comyourmonsterbeats.comapplemusic.hamburgapplemusic.wangapplemusicconnect.comapplemusicfestival.commusickit.netwwwapplemusic.comworldcoinpay.com
+apple.newsappleenews.comapplenews.berlinapplenews.hamburgapplenews.tvapplenewsformat.com
apple-pay.comapple-pay.rsapple-pay.wangapplepay.berlinwholesaleonlinemart.comwholesalefine.comapplepay.hamburgapplepay.hk
applepay.infoapplepay.jpapplepay.rsapplepay.tvapplepaycash.netapplepaycash.tv!applepaymerchantsupplies.infoapplepaysupplies.berlinapplepaysupplies.comapplepaysupplies.infoapplepaysupplies.netapplepaysupplies.tvapplewallet.comapplewallet.tv
+i-book.com
+i-book.netwholesalediscountpurses.com
ibook.comibook.eu
ibook.netibookpartner.comibooksauthor.com
iphoto.eu
iphoto.no
iphoto.seiphoto.wang
imovie.euimoviegallery.comimoviestage.comapplecare.berlinapplecare.ccapplecare.euapplecare.hamburgapplecare.wangappledarwin.comappledarwin.netdarwinsource.comdarwinsource.orgdarwinsourcecode.comappleaccount.netappleid-applemx.comappleid-applemx.usappleid-iclou.com
appleid-uk.usappleid.berlinappleid.comappleid.hamburg
+appleid.hk
ids-apple.com
myappleid.comappletv.com
+appletv.frappletv.wangappleone.audio
appleone.blog
appleone.chatappleone.cloud
appleone.clubappleone.community
appleone.filmappleone.guide
appleone.hostappleone.space
appleone.techappleone.website
+shazam.comwholesale-exporter1.com
wasdj.com5lml.com
+a0pple.netaapl.twaaplimg.comairport.brusselsairport.com
+airport.euairsupportapp.comairtunes.com
airtunes.infoairtunes.netalchemysynth.com
ap0le.comaple.com
apole.com
+app0le.com
+appl-e.comappl.com
+appl4e.com
appla.comapple-darwin.comapple-darwin.netapple-darwin.org
apple-dns.com
apple-dns.netapple-enews.comapple-expo.com
apple-expo.euapple-hk.com
apple-inc.netapple-livephotoskit.comapple-online.com
apple-usa.netappleafrica.comappleantilles.comappleaustralia.com
vipshoes2.comvipheadphones.comapplebk.netapplecarbon.comapplecard.tvvipbeatsbydre.comapplecentar.rs
vip-beats.comapplecentre.info
v-has.comapplecom.comapplecomputer-imac.com&"usa-beatsbydreheadphonesonsale.net
+unstyle.usapplecomputer.comubnw.nettteshop.comapplecomputer.huapplecomputer.krapplecomputerimac.comapplecomputerinc.info
tradevip1.comapplecoronavirus.comappleexpo.euappleexpo.infoapplefilmaker.comapplefilmmaker.comapplefinalcutproworld.comapplefinalcutproworld.netapplefinalcutproworld.orgapplehongkong.comtopbeatsforsale.comappleinclegal.comappleipodsettlement.comappleiservices.com
applelink.comapplemagickeyboard.comtopbeatsdealer.comapplemasters.infoappleonline.comappleonline.net appleoriginalproductions.com
+appleos.tvapplepencil.netapplepodcasts.comtopbeatsbydrdreoutlet.com
+theuab.netapplereach.comapplereach.net
apples-msk.ruapplescreensavers.comapplescript.infoappleshare.infothebeatsheadphonesale.comapplesurveys.comappletaiwan.com
appletips.netappleweb.netapplexpo.netapplezh.com
applf.com
+applfe.com
+applle.com
applw.comappmediagroup.com
+appule.com
appye.com
apyle.com
beddit.tvbraeburncapital.comburstly.netburstlyrewards.combuyaapl.combuyaapl.netbuyaple.com
camelphat.comcamelspaceeffect.com
+carbon.comcatalina.hk
cdn-apple.com
chomp.com
+coreml.netdashwood360.comdesktopmovie.comdesktopmovie.netdesktopmovie.orgdesktopmovies.netdesktopmovies.orgdeveloper-advisor.comdevice-manager.usdigitalhub.comdiscussionsapple.com
+dot-mac.de
dotmac.dedvdstudiopro.bizdvdstudiopro.comdvdstudiopro.infodvdstudiopro.netdvdstudiopro.orgdvdstudiopro.us
+earpod.net
+ecgapp.netedu-research.orgthebeatsbydre.netemac.in
emagic.de
+eworld.comfaceid99.comfaceid99.netfaceidglobal.comfacetime.netfinalcutpro.comfind-apple.comfirewire.clfirewire.eugeoport.com
+hopstop.tvthebeatsbydre.comidvd.eu
ikids.comthe-monster-beats.comilife.euilife.gr
+ilife.wangimessage.tvinsidemacintosh.comiosinthecar.comipa-iphone.net
ipple.comischool.comitools.info
iwork.comiwork.se
+iwork.wangjetfuelapp.comjetfuelapps.comlatticedata.com
livephotos.tvtakegoto.commac-mini.commac.comszwinnertechnology.com
+mac.eu
+mac.rsmacappsto.re
macboxset.commach-os.commach-os.net
+machos.netmacintosh.eumacintoshsoftware.commacmini.com szcheapmonsterheadphones.commacossierra.commacosx.infomacosxlion.commacpazar.commacreach.commacreach.netmobileme.dksverigebeatsbydrdre.commzstatic.com
+newton.comnext.com
overapple.compowerbook.eupullstring.netquatrowireless.comquicktime.cc
quicktime.comsustainthesound.comquicktime.eu
quicktime.netquicktime.tvreform-apple.comservices-apple.netsiri.comspektral.cctexture.comthinkdifferent.us
+touchid.tvtouchid.wangtracking-location.comtruedepth3d.com
tryrating.comsupplybestjerseys.com
webobjects.de
webobjects.euwebobjects.net
wuxiapple.comwwapple.netwww-sms-apple.comwwwapple.comwwwapple.net
wwwlapple.com xn--fiqs8sxootzz.xn--hxt814e!xn--gtvq61aiijy0b.xn--hxt814exn--gtvz22d.wangxn--gtvz22d.xn--hxt814exn--hxtr4rozx.xn--czr694b xn--kput3imi374g.xn--hxt814e xn--ruq8a011kt6y.xn--hxt814eresearchkit.tvcups.orgcarekit.orgresearchandcare.orgwebobjects.comfoundationdb.orgmacosforge.orgmacruby.commacruby.netmacruby.orgapple-mapkit.comapple-cloudkit.com
wpewebkit.orgresearchkit.hkresearchkit.netresearchkit.orgcalendarserver.orgservicetalk.io
+webkit.org
webkitgtk.orgsuperearsenjoy.comsunglassessale2014.comsulwerphoto.comstudiobeatsbydrdre.comstraightouttasomewhere.comspiritclubs.comspecialtyheadphones.comsoso7778.comsolostudioksale.comsneakerskick.comsneakerpage.netsneaker666.comshoppinguheadphones.comshopping-days.netshopmonsterbeats.comshopdrebeats.comshopcustomizedbeats.com
shopbydre.comshopbeatsdre.comshop-headphones.net
shoestop2.com
+shoers.com
+scnshop.cc100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com
2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com
+aanaan.comabcheadphones.comabeatsbydrdre.com
aeasyshop.com
+airmay.com
+ajtalk.comalbeats.com
annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comapple.aeausbeatsbydrdre.combag-glasses1.com
bandgirlz.combaxsound.com
bbestmall.com
+beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.commonsterbeatscasques.comapple.at
+ipadair.hkbeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com
beats1.cc
beats1.tvbeats123.com
+beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com
beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.combeatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.combeatsep.combeatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.netbeatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang
beatsneon.combeatsnzsale.com
beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.combeatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.combeatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com
+biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com
bookonsky.net
+bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com
brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com
casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com
cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com
+cmhalq.comcnshopin.comcoolmonster.netcozydrdrebeats.comcqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com
drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.comdrebyby.comdremonsterbeatsoutlets.comdreprobeats.comdreprofy.com
+dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.comfree-aa.comfree-sns.comfrishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net
gobeatsye.comgobuyonlinestore.net
goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.comhighbolt.net highdefinitionbeatsbydre.com
hipaa6020.comhipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com
hrsaz.com
ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.comjkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.comlexuemei.comlovebeatsdr.com
lovemarca.comluckyissue.com
+lyzsxx.com
mairbeats.com
+makeeu.commallheadphone.commbeats-tech.commbheadphone.com
+micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.combeats-bydreoutletsale.netmonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com
+ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.comneborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com
newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com
nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com
ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com
onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com
rbsgr.comrepsneakermall.comrepswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.comsamebags.comsanvaras.commacbookair.co.krapple-watch.com.ruwebobjects.co.ukquicktime.com.aumr-apple.com.twmacos.com.au
+mac.com.aulojaiphone.com.brilecture.co.nzichat.co.in
+emac.co.inappleshop.co.uk applepremiumresellers.com.auapplepremiumreseller.com.auapplemalaysia.com.myapplehongkong.com.hkapplecomputers.co.nzapplecomputer.com.twapplecomputer.com.hkapplecomputer.co.nzapplecomputer.co.inapple.co.crapplecentre.com.auapplecentar.co.rsappleaustralia.net.auappleaustralia.com.au1to1conference.com.au1to1computing.com.auibook.co.nzapplepay.com.twapplepay.co.rsapple.comscoreresearch.comapplemusic.com.auipodrocks.com.aumacbookpro.com.aumacbookair.com.esmacbookair.com.aumacbookair.co.uk
iphone.com.gripodshop.com.au
iphone.net.gripod.com.twipod.com.sgipod.com.hkipod.com.fripod.com.au
+ipod.co.za
+ipod.co.uk
+ipod.co.nziphoneclaro.com.briphoneacessorios.com.briphone4.com.brappleclub.com.hkapple.com.plipadmini.com.lkipadair.com.esipadair.com.br
+ipad.co.kr
+imac.co.nzappstore.co.idapplestore.net.grapplestore.com.twapplestore.com.snapplestore.com.ruapplestore.com.roapplestore.com.ptapplestore.com.plapplestore.com.phapplestore.com.myapplestore.com.joapplestore.com.hrapplestore.com.hkapplestore.com.grapplestore.com.egapplestore.com.eeapplestore.com.bnapplestore.com.auapplestore.co.ukapplestore.co.ugapplestore.co.jpapplestore.co.huapple.net.grapple.com.uyapple.com.twapple.com.trapple.com.svapple.com.sgapple.com.pyapple.com.ptapple.com.pr
iphone.com.auapple.com.peapple.com.paapple.com.myapple.com.mxapple.com.mgapple.com.lkapple.com.jmapple.com.gyapple.com.grapple.com.doapple.com.deapple.com.coapple.com.brapple.com.boapple.com.auapple.com.afapple.co.ukapple.co.thapple.co.nzapple.co.mzapple.co.krapple.co.jp"12diasderegalosdeitunes.com.ve"12diasderegalosdeitunes.com.niitunes.co.th"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.co!12diasderegalosdeitunes.co.ve!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.crapple.co.huitunes-apple.com.akadns.netapple.cn
+cnapple.com.cn
+cnapple-store.cn
+cn
applestore.cn
+cnapplestore.com.cn
+cnapple-appstore.cn
+cnappleappstore.cn
+cnappstoreapple.cn
+cniphone-8.com.cn
+cnipod.com.cn
+cn
macbookair.cn
+cnmacbookair.com.cn
+cnapplepaycash.cn
+cnapplepaycash.com.cn
+cnapplepaysupplies.cn
+cn#applepaysupplies.com.cn
+cnappletv4.cn
+cnappletv4.com.cn
+cnapple-dns.cn
+cnapple-dns.com.cn
+cnapple-ibooks.cn
+cn
apple-maps.cn
+cnapplecenter.cn
+cnapplecenter.com.cn
+cnapplecomputer.cn
+cn applecomputer.com.cn
+cnappledns.cn
+cnappledns.com.cn
+cnapplesiri.cn
+cn
ecgapp.com.cn
+cnfaceshift.cn
+cn
+homepod.cn
+cninsidear.cn
+cn
livephotos.cn
+cnlivephotos.com.cn
+cn xn--czrs0t4phtr3a.cn
+cnxn--fiqs8sxootzz.cn
+cn#xn--ohq11k7pl25iyo8a.cn
+cn:.amp-api-edge-lb-cn.itunes-apple.com.akadns.net
+cn7+amp-api-edge-lb.itunes-apple.com.akadns.net
+cn'amp-api-edge.apps.apple.com
+cn."amp-api-search-edge.apps.apple.com
+cn"amp-api.apps.apple.com
+cn#amp-api.music.apple.com
+cn aod.itunes.apple.com
+cn#api-edge.apps.apple.com
+cn(apptrailers.itunes.apple.com
+cn auth.music.apple.com
+cn bag.itunes.apple.com
+cn'bookkeeper.itunes.apple.com
+cn'client-api.itunes.apple.com
+cn cma.itunes.apple.com
+cn!communities.apple.com
+cn(discussionschinese.apple.com
+cn-!downloaddispatch.itunes.apple.com
+cnfides-pol.apple.com
+cn(gspe11-2-cn-ssl.ls.apple.com
+cn&gspe12-cn-ssl.ls.apple.com
+cn&gspe85-cn-ssl.ls.apple.com
+cn5)inappcheck-cn.itunes-apple.com.akadns.net
+cn5)inappcheck-lb.itunes-apple.com.akadns.net
+cn'inappcheck.itunes.apple.com
+cn+init.gc-lb.apple.com.akadns.net
+cninit.gc.apple.com
+cn!init.itunes.apple.com
+cn$iosapps.itunes.apple.com
+cn"js-cdn.music.apple.com
+cn km.support.apple.com
+cnmaps.apple.com
+cn(misc-assets.itunes.apple.com
+cn"myapp.itunes.apple.com
+cn$np-edge.itunes.apple.com
+cn$osxapps.itunes.apple.com
+cn"pd-nk.itunes.apple.com
+cnpd.itunes.apple.com
+cn!play.itunes.apple.com
+cn play.music.apple.com
+cn$se-edge.itunes.apple.com
+cn se2.itunes.apple.com
+cn#search.itunes.apple.com
+cn1%sf-api-token-service.itunes.apple.com
+cnsp.itunes.apple.com
+cn+streamingaudio.itunes.apple.com
+cnsu.itunes.apple.com
+cn!sync.itunes.apple.com
+cn(tf-feedback.itunes.apple.com
+cn upp.itunes.apple.com
+cn!www.support.apple.com
+cn#^a[1-5]\.mzstatic\.com$
+cn0$^cdn(-cn)?[1-4]?\.apple-mapkit\.com$
+cn9-^cl[1-5]-cdn\.origin-apple\.com\.akadns\.net$
+cn!^cl[1-5]\.apple\.com$
+cn+^is[1-5](-ssl)?\.mzstatic\.com$
+cn$^s[1-5]?\.mzstatic\.com$
+cna1.mzstatic.com
+cna2.mzstatic.com
+cna3.mzstatic.com
+cna4.mzstatic.com
+cna5.mzstatic.com
+cn!adcdownload.apple.com
+cn, adcdownload.apple.com.akadns.net
+cn#amp-api.media.apple.com
+cn&api-p-ap-c.smoot.apple.com
+cn&api-p-ap-d.smoot.apple.com
+cn&api-p-ap-e.smoot.apple.com
+cn."app-site-association.cdn-apple.com
+cnappldnld.apple.com
+cn"appldnld.g.aaplimg.com
+cn!appleid.cdn-apple.com
+cnapps.mzstatic.com
+cn$cdn-cn1.apple-mapkit.com
+cn$cdn-cn2.apple-mapkit.com
+cn$cdn-cn3.apple-mapkit.com
+cn$cdn-cn4.apple-mapkit.com
+cn cdn.apple-mapkit.com
+cn!cdn1.apple-mapkit.com
+cn!cdn2.apple-mapkit.com
+cn!cdn3.apple-mapkit.com
+cn!cdn4.apple-mapkit.com
+cn!cds-cdn.v.aaplimg.com
+cn
cds.apple.com
+cn$cds.apple.com.akadns.net
+cncdsassets.apple.com
+cn/#cl1-cdn.origin-apple.com.akadns.net
+cn
cl1.apple.com
+cncl2-cn.apple.com
+cn
cl2.apple.com
+cn/#cl3-cdn.origin-apple.com.akadns.net
+cn
cl3.apple.com
+cn/#cl4-cdn.origin-apple.com.akadns.net
+cncl4-cn.apple.com
+cn
cl4.apple.com
+cn/#cl5-cdn.origin-apple.com.akadns.net
+cn
cl5.apple.com
+cn clientflow.apple.com
+cn+clientflow.apple.com.akadns.net
+cn, cn-smp-paymentservices.apple.com
+cn#configuration.apple.com
+cn."configuration.apple.com.akadns.net
+cncstat.apple.com
+cncstat.cdn-apple.com
+cn."dd-cdn.origin-apple.com.akadns.net
+cndejavu.apple.com
+cn(download.developer.apple.com
+cn!experiments.apple.com
+cngs-loc-cn.apple.com
+cngs-loc.apple.com
+cn%gsp10-ssl-cn.ls.apple.com
+cn!gsp12-cn.ls.apple.com
+cn!gsp13-cn.ls.apple.com
+cn gsp4-cn.ls.apple.com
+cn, gsp4-cn.ls.apple.com.edgekey.net
+cnC7gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net
+cn gsp5-cn.ls.apple.com
+cn%gsp85-cn-ssl.ls.apple.com
+cn(gspe19-2-cn-ssl.ls.apple.com
+cn&gspe19-cn-ssl.ls.apple.com
+cn-!gspe19-cn.ls-apple.com.akadns.net
+cn"gspe19-cn.ls.apple.com
+cn#gspe21-ssl.ls.apple.com
+cngspe21.ls.apple.com
+cn#gspe35-ssl.ls.apple.com
+cn&gspe79-cn-ssl.ls.apple.com
+cn+guzzoni-apple-com.v.aaplimg.com
+cnguzzoni.apple.com
+cn#guzzoni.smoot.apple.com
+cn, icloud-cdn.icloud.com.akadns.net
+cn icloud.cdn-apple.com
+cnimages.apple.com
+cn'images.apple.com.akadns.net
+cn?3images.apple.com.edgekey.net.globalredir.akadns.net
+cninit-kt.apple.com
+cn3'init-p01md-lb.push-apple.com.akadns.net
+cn init-p01md.apple.com
+cn3'init-p01st-lb.push-apple.com.akadns.net
+cn%init-p01st.push.apple.com
+cn3'init-s01st-lb.push-apple.com.akadns.net
+cn%init-s01st.push.apple.com
+cninit.ess.apple.com
+cn(iosapps.itunes.g.aaplimg.com
+cnipcdn.apple.com
+cniphone-ld.apple.com
+cn1%iphone-ld.origin-apple.com.akadns.net
+cn is1-ssl.mzstatic.com
+cnis1.mzstatic.com
+cn is2-ssl.mzstatic.com
+cnis2.mzstatic.com
+cn is3-ssl.mzstatic.com
+cnis3.mzstatic.com
+cn is4-ssl.mzstatic.com
+cnis4.mzstatic.com
+cn is5-ssl.mzstatic.com
+cnis5.mzstatic.com
+cn'itunes-apple.com.akadns.net
+cnitunes.apple.com
+cn#itunesconnect.apple.com
+cn)mesu-cdn.apple.com.akadns.net
+cn+mesu-china.apple.com.akadns.net
+cnmesu.apple.com
+cnml.cdn-apple.com
+cnmusic.apple.com
+cn(ocsp-lb.apple.com.akadns.net
+cnocsp.apple.com
+cn)ocsp2-lb.apple.com.akadns.net
+cnocsp2.apple.com
+cnoscdn.apple.com
+cn-!oscdn.origin-apple.com.akadns.net
+cn(osxapps.itunes.g.aaplimg.com
+cnpancake.apple.com
+cn, pancake.cdn-apple.com.akadns.net
+cnpba0.apple.com
+cn probe.siri.apple.com
+cn1%prod-support.apple-support.akadns.net
+cn&publicassets.cdn-apple.com
+cn#reserve-prime.apple.com
+cns.mzstatic.com
+cn'seed-sequoia.siri.apple.com
+cn'seed-swallow.siri.apple.com
+cnseed.siri.apple.com
+cnsequoia.apple.com
+cn(sh-pod2-smp-device.apple.com
+cn)shazam-insights.cdn-apple.com
+cn(smp-device-content.apple.com
+cnstatic.gc.apple.com
+cn4(stocks-sparkline-lb.apple.com.akadns.net
+cn&stocks-sparkline.apple.com
+cnstore.apple.com
+cn'store.apple.com.edgekey.net
+cn>2store.apple.com.edgekey.net.globalredir.akadns.net
+cn2&store.storeimages.apple.com.akadns.net
+cn+store.storeimages.cdn-apple.com
+cn2&support-china.apple-support.akadns.net
+cnsupport.apple.com
+cn+swallow-apple-com.v.aaplimg.com
+cnswallow.apple.com
+cn."swcatalog-cdn.apple.com.akadns.net
+cnswcatalog.apple.com
+cnswcdn.apple.com
+cnswcdn.g.aaplimg.com
+cnswdist.apple.com
+cn'swdist.apple.com.akadns.net
+cn+swscan-cdn.apple.com.akadns.net
+cnswscan.apple.com
+cnsylvan.apple.com
+cn(tj-pod1-smp-device.apple.com
+cn&updates-http.cdn-apple.com
+cn1%updates-http.cdn-apple.com.akadns.net
+cn!updates.cdn-apple.com
+cnvalid.apple.com
+cn-!valid.origin-apple.com.akadns.net
+cn"weather-data.apple.com
+cn-!weather-data.apple.com.akadns.net
+cn!weather-map.apple.com
+cn"weather-map2.apple.com
+cn weatherkit.apple.com
+cn
www.apple.com
+cn%www.apple.com.edgekey.net
+cn<0www.apple.com.edgekey.net.globalredir.akadns.net
+cnxp.apple.com
+cnresearchkit.cn
+cnresearchkit.com.cn
+cn
+swiftui.cn
+cnswiftui.com.cn
+cn)certs-lb.apple.com.akadns.net
+cncerts.apple.com
+cn'crl-lb.apple.com.akadns.net
+cn
crl.apple.com
+cn(ocsp-lb.apple.com.akadns.net
+cnocsp.apple.com
+cn)ocsp2-lb.apple.com.akadns.net
+cnocsp2.apple.com
+cn beats1.cn
+cn
beats1.com.cn
+cn
beats2.com.cn
+cn beats4.cn
+cnbeatsbydre.com
+cnbeatsbydre.com.cn
+cn
+beatsep.cn
+cnapple-icloud.cn
+cnappleicloud.cn
+cnicloud-apple.cn
+cn
icloud.com.cn
+cn
icloud.net.cn
+cnicloudapple.cn
+cnapple-itunes.cn
+cnitunes-apple.cn
+cnitunesapple.cn
+cnitunesradio.cn
+cnitunesradio.com.cn
+cn
+swiftui.cn
+cnswiftui.com.cn
+cn%api-adservices.apple.com
+adsiadsdk.apple.com
+ads
iad.apple.com
+ads qwapi.com
+ads
+-
+MYRADIO
+myradio.hkmyradio.com.hk
+>
+NETFLAVnetflav.comnetflav1.comnetflav5.com
+,
+MEDIUM
+medium.commedium.systems
+
+NBCUNIVERSALdreamworks.comcnbc.com
+cnbcfm.com
msnbc.com
+nbc.conbc.comnbcnews.comnbcolympics.com
nbcsports.com
+nbcuni.comnbcuniversal.com
s-nbcnews.com
peacocktv.comuniversalorlando.comuniversalpictures.com&"universalpicturesinternational.com!universalstudioshollywood.com
+
+SAMSUNGsamsung
+xn--cg4bkigalaxyappstore.comgalaxymobile.jpgame-platform.netknoxemm.comsamsung.comsamsungapps.comsamsungcloud.com
samsungdm.comsamsunggalaxyfriends.comsamsungknox.comsamsungqbe.comsamsungeshop.com.cn
+cn
+
+ APPLE-DEV-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.netresearchkit.tvcups.orgcarekit.orgresearchandcare.orgappleswift.comwebobjects.comfoundationdb.orgmacosforge.orgmacruby.commacruby.netmacruby.orgapple-mapkit.com
swift.orgapple-cloudkit.com
wpewebkit.orgresearchkit.hkresearchkit.netresearchkit.orgcalendarserver.orgservicetalk.io
+webkit.org
webkitgtk.orgdeveloper.apple.comdevstreaming-cdn.apple.comdevimages-cdn.apple.complaygrounds-cdn.apple.comresearchkit.cn
+cnresearchkit.com.cn
+cn
+swiftui.cn
+cnswiftui.com.cn
+cn
+W
+FLICKR
+flickrflic.kr
+flickr.com
+flickr.netstaticflickr.com
+
+LINKEDINe122475.dscg.akamaiedge.netlicdn.cn.cdn20.comlinkedin.sc.omtrdc.netbizographics.com
licdn.comlinkedin.atlinkedin.comlnkd.inl-0005.dc-msedge.netl-0005.l-msedge.netlicdn.cn
+cnlinkedin.cn
+cn
+
+ICLOUD!www-cdn.icloud.com.akadns.netapplemx-icloud.comicloud-content.comicloud-isupport.com
icloud.ch
+icloud.com
icloud.de
icloud.ee
icloud.fi
icloud.fr
icloud.hu
icloud.ie
icloud.is
icloud.jp
icloud.lv
icloud.om
+icloud.org
icloud.pt
icloud.ro
icloud.se
icloud.si
icloud.sk
icloud.vn
icloudads.net
icloudbox.neticloudbrowser.neticloude.comicloudhome.comicloudmail.neticloudmusic.net
icloudnet.net
icloudpay.neticloudo.com
+icloudo.deicloudo.neticloudos.deicloudos.neticloudsecure.neticloudsetup.comios-icloud.com
+me.commyicloud.netmylcloud.net
wwwicloud.comapple-icloud.cn
+cnappleicloud.cn
+cnicloud-apple.cn
+cn
icloud.com.cn
+cn
icloud.net.cn
+cnicloudapple.cn
+cn
+
+LETV-ADS#api.game.letvstore.com
+adsark.letv.com
+adsdc.letv.com
+adsfz.letv.com
+adsg3.letv.com
+adsletv.allyes.com
+adsminisite.letv.com
+adsmsg.m.letv.com
+adsn.mark.letv.com
+adspro.hoye.letv.com
+adspro.letv.com
+ads
stat.letv.com
+ads"static.app.m.letv.com
+ads
+B
+ SPANKBANG
spankbang.comspankbang.party
sb-cd.com
+3
+
+STREAMABLE
embed-cdn.comstreamable.com
+K
+ ADOBE-ADS"advertising.adobe.com
+ads
tubemogul.com
+ads
+m
+
+DINGDATECH
diiing.cndingdachuxing.comdingdatech.comjintdev.comxiangbababus.com
+
+ FALUNGONGwanokokorosoh.comozvoice.orgbannedbook.orgbroadpressinc.comchinaaffairs.orgdafahao.comdonatecarsoh.orgdongtaiwang.com
falundafa.orgntdtv.jpfalundafamuseum.orgfalungong.club
faluninfo.netfawanghuihui.orgfayuanbooks.com
fgmtv.orgganjing.com
ganjing.worldganjingworld.com
guangming.orgmhradio.orgpersianepochtimes.comstarp2p.comtiandixing.orgtiantibooks.orgtuidang.orgupholdjustice.orgwujieliulan.comxinsheng.netyuanming.netntdtv.kr
zhengjian.orgzhengwunet.org
zhenxiang.bizzhuichaguoji.orgshenyun.comshenyun.orgshenyuncreations.comshenyunperformingarts.orges-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com
trithucvn.net
trithucvn.orgvct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com
vtvan.comwatchinese.combayvoice.net
epochtimes.se
sohcradio.com
sohfrance.orgsoundofhope.eusoundofhope.krsoundofhope.org
epochtimes.itbannedbook.netninecommentaries.comedninfo.comepoch.cloud
epochbase.comepochbuy.comepochcar.comepochhk.com
epochmall.comepochmediagroup.comdajiyuan.comepochstories.com
epochtime.comepochtimes-bg.comepochtimes-romania.com
epochtimes.bgepochtimes.com
epochtimes.cz
epochtimes.de
epochtimes.euvelkaepocha.cztheepochtimessubscribe.com
epochtimes.pl
renminbao.com
epochtimes.ru
ntdvn.com
epochtimes.fraboluowang.com
epochtimes.jp
epochtimes.nltheepochtimes.comdajiyuan.eu
epochshop.comepochtimeshk.orgepochtimestr.com
epochweek.comepochweekly.comerabaru.net
+etviet.comlagranepoca.comminghui.orgntd.com
+ntd.tv
ntdca.com
+ntdimg.comntdtv.cantdtvla.comntdtv-dc.comntdtv.ru
ntdtv.org
ntdtv.comepochtimes.com.twfalundafa.org.twntdtv.com.twntdtv.co.krepochtimes.com.uayuming.qxbbs.orgepochtimes.com.sgepochtimes.co.ukepochtimes.com.auepochtimes.com.brepochtimes.co.krepochtimes.co.ilepoch.org.il
+
+
+IMAGETWISTimagetwist.com
+L
+JIBENCAOZUOjbcz.tvjibencaozuo.commedia.paperclipclub.net
+,
+PAOFUYUNpaofu.cloudpaofuyun.me
+/
+REALTYPErealtype.jprealtype.co.jp
+
+SPOTIFY&"audio-ak-spotify-com.akamaized.net'#audio4-ak-spotify-com.akamaized.net+'cdn-spotify-experiments.conductrics.com&"heads-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.netspotify.com.edgesuite.netspotify.map.fastly.netspotify.map.fastlylb.net
byspotify.compscdn.coscdn.cospoti.fispotify-everywhere.comspotify.comspotify.designspotifycdn.comspotifycdn.netspotifycharts.comspotifycodes.comspotifyforbrands.comspotifyjobs.com
+
+3TYPE3type.cn
+4
+ ARCHLINUX
archlinux.orgarchlinuxarm.org
+
+BLIZZARDblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.netblizzcon-a.akamaihd.netblzmedia-a.akamaihd.netblznav.akamaized.netblizzard.comblizzardgearstore.comblz-contentstack.com
+battle.netdiablo3.comdiabloimmortal.comfiresidegatherings.complayhearthstone.comheroesofthestorm.complayoverwatch.com
starcraft.comstarcraft2.complaywarcraft3.comworldofwarcraft.com
+
+Xads-twitter.comcms-twdigitalassets.comperiscope.tvpscp.tvt.co
tellapart.com
tweetdeck.com
twimg.comtwitpic.comtwitter.biztwitter.com
+twitter.jptwittercommunity.comtwitterflightschool.comtwitterinc.comtwitteroauth.comtwitterstat.ustwtrdns.net
twttr.com
twttr.net
twvid.comvine.co x.comx.ai
+"
+BALTAMATICAbaltamatica.com
+
+
+CODECADEMYcodecademy.com
+
+GOOGLE-PLAYgoogleplay.comxn--ngstr-lra8j.complay-fe.googleapis.com$ play-games.googleusercontent.com!play-lh.googleusercontent.complay.google.complay.googleapis.com(redirector.c.play.google.com
+cn
+.
+PLAYBOYplayboy.complayboy.com.uk
+3
+PPTV
pplive.cn
+pplive.compptv.com
+
+VERCEL
vercel.eventszeit.co
+nextjs.org
+now.sh
+static.funtitle.sh
turborepo.orgvercel-dns.comvercel-status.com
+vercel.app
zeitworld.comhyper.is
+vercel.pubvercel.live
+err.sh
vercel.shvercel.storevercel.blogzeit-world.comzeit-world.netzeit-world.org
+vercel.comzeit.shzeit-world.co.uk
+
+CHAOXINGxuexi365.com
+zaifan.comaichaoxing.comchaoxing.ccchaoxing.com
chaoxingv.com
sslibrary.com
hongbo100.com
lnlib.netmndqlib.net
+mti100.comnihaoafrica.orgnihaorwanda.cn
+sslawy.comzhihang100.com
5read.com
+cxbiji.com
+ssvideo.cnssreader.cn
ylike.netsuperlib.comsuperlib.netuonline-sh.comuonline-sh.net
+16q.cnxxtmail.comxuexi365.netxuexi365.com.cnstudy360.com.cnssvideo.com.cn
zaifan.com.cnssreader.com.cn
+
+NVIDIAnvidia.tt.omtrdc.net
nvidia.nlnvidiaforhp.comgeforce.comtegrazone.krtegrazone.jpgputechconf.com
tegrazone.comtegrazone.cogputechconf.eugputechconf.ingputechconf.jpnvidia.asia
nvidia.at
nvidia.be
nvidia.chshotwithgeforce.comnvidiagrid.net
nvidia.fr
nvidia.tw
nvidia.cz
+nvidia.com
nvidia.se
nvidia.ru
nvidia.ro
nvidia.pl
nvidia.no
nvidia.mx
nvidia.lu
nvidia.jp
nvidia.it
nvidia.in
nvidia.de
nvidia.dk
nvidia.es
nvidia.eu
nvidia.finvidia.co.atnvidia.co.ukgputechconf.com.au
nvidia.com.ua
nvidia.com.tw
nvidia.com.tr
geforce.co.kr
nvidia.com.pl
nvidia.com.pe
nvidia.com.mx
nvidia.com.br
nvidia.com.aunvidia.co.krnvidia.co.jpnvidia.co.in
geforce.co.ukgputechconf.com.twtegrazone.co.kr
nvidia.com.vegputechconf.co.krgeforce.com.tw
+geforce.cn
+cngputechconf.cn
+cn nvidia.cn
+cn
+1
+ORGANICMAPS
omaps.apporganicmaps.app
+"
+ACCUWEATHERaccuweather.com
+_
+ COLLABORA
collabora.com
collabora.orgcollaboraoffice.comcollabora.co.uk
+)
+DMM-PORN
+dmmrex.com
dmm.co.jp
+
+DISCORD#hammerandchisel.ssl.zendesk.com
+dis.gd
+discord.codiscord.comdiscord.designdiscord.dev
+discord.ggdiscord.gift
discord.gifts
discord.mediadiscord.new
discord.store
discord.toolsdiscord-activities.comdiscordactivities.comdiscordapp.comdiscordapp.netdiscordmerch.comdiscordpartygames.comdiscordsays.comdiscordstatus.comairhorn.solutionsairhornbot.combigbeans.solutionswatchanimeattheoffice.com
discordapp.iodiscordcdn.com
+x
+ MICROSOFT/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eas-ms-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.netazure.microsoft.com"azuremarketplace.microsoft.comlocation.microsoft.com!github-cloud.s3.amazonaws.comaz764295.vo.msecnd.net)%bingsettingssearch.trafficmanager.netdefault.exp-tas.comdeveloper.microsoft.com'#download.visualstudio.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netrink.hockeyapp.net+'vscode-sync-insiders.trafficmanager.net"vscode-sync.trafficmanager.net vscode.blob.core.windows.netvscode.search.windows.net vsmarketplacebadge.apphb.comcrl.microsoft.commscrl.microsoft.comocsp.microsoft.comoneocsp.microsoft.com
microsofthotmail
+office skypewindows azurexboxonedriveupdateronedrivebing
+winhec.netsway-cdn.commicrosoft.cl
microsoft.commicrosoft.czmicrosoft.demicrosoft.dkmicrosoft.eemicrosoft.esmicrosoft.eumicrosoft.fimicrosoft.gemicrosoft.humicrosoft.iomicrosoft.ismicrosoft.itmicrosoft.jpmicrosoft.ltmicrosoft.lumicrosoft.lvmicrosoft.md
microsoft.netmicrosoft.plmicrosoft.pt
microsoft.redmicrosoft.romicrosoft.rsmicrosoft.rumicrosoft.semicrosoft.simicrosoft.tvmicrosoft.uamicrosoft.uzmicrosoft.vnfemalefounderscomp.com
+m12.vca-msedge.net
+aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.netaria.msasp.net
aspnetcdn.com
+binads.com
bluehatil.com
boswp.combrazilpartneruniversity.combreakdown.mecentralvalidation.com
+ch9.mscharticulator.comcloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com
crmdynint.comcrossborderexpansion.comdocs.comdynamics.com
edgesuite.net
efproject.netfasttrackreadysupport.comfluidpreview.comfootprintdns.comgameuxmasterguide.com
+gears5.comgearspop.comgearstactics.com
+gfx.ms
+gigjam.comhololens.com
+hotmail.cohotmail.com
+hotmail.euhotmail.nethotmail.orghummingbird.ms
+ie8.coie9.comie10.comie11.cominternetexplorer.cointernetexplorer.com
imaginecup.pl
+ingads.comintunewiki.comiotinactionevents.com
+kidgrid.tvkumo.comlatampartneruniversity.comlive.comlive.eulive.netlivingyourambition.commakecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.commepn.commicrosoft-falcon.iomicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftapp.netmicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com
msads.net
+msauth.netmschallenge2018.com
+msecnd.net
+msedge.net
msft.infomsft.netmsftauth.netmsfteducation.camsftnet.orgmsgamesresearch.com
+msocdn.commsturing.orgmsudalosti.commymicrosoft.comnextechafrica.netnxta.orgo365weve-dev.como365weve-ppe.como365weve.com
+office.com
+office.net
office365.comonenote.comonenote.netonestore.msopticsforthecloud.netoutingsapp.comoutlook.compassport.net
+pixapp.netpowerappscdn.netpowerautomate.compowerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com
+pxt.ios-dc-msedge.nets-microsoft.comazure-devices.net
+s-msft.com
s-msn.com
sfbassets.com
sfbassets.net
+sfx.mssharepoint.comsharepointonline.comsignalr.net
skype.com
+mojang.comskypeassets.comskypeassets.netstaffhub.mssuccesswithteams.comsurface.com
+svc.msazure-devices-int.netsway.comsysinternals.comtailwindtraders.com
+techhub.mstfsallin.nettranslatetheweb.comunlocklimitlesslearning.com
+userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.netvsallin.net
+wbd.mswhat-fan.netwindows-int.netwindows.comwindows.net
+windows.nlwindows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com
+winhec.com
microsoft.cat
+yammer.comminecraftshop.comminecraftservices.com
skype.netmicrosoft.chs-msedge.netazure-mobile.netazure-sphere.comazure-test.net
azure.com
azure.netazurecomcdn.net
azurecomm.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net
azureedge.netazurefd.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.net
cosmosdb.infocosmosdb.netdevopsms.com
gotcosmos.com$ management-azure-devices-int.net management-azure-devices.net"microsoftazuresponsorships.commicrosofteca.commicrosoftiotcentral.commsn.netserverlesslibrary.nettrafficmanager.nettryfunctions.comwindowsazure.com
azure-dns.comazure-dns.info
azure-dns.net
azure-dns.orgmicrosoft.cabing.combing.netbing123.combingads.combingagencyawards.combingapis.combingapistatistics.combingparachute.combingsandbox.combingvisualsearch.com
bingworld.combluehatnights.com
+dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.comgithubhackathon.comghcr.iogithubnext.comgithubpreview.devgithub.blog
+github.comgithub.community
+github.dev
github.io
githubapp.comgithubassets.comgithubcopilot.com
npmjs.orgdependabot.com
+git.iogithubstatus.comgithubuniverse.comgithubusercontent.com
myoctocat.comopensource.guiderepo.newthegithubshop.comatom.io
npm.community
npmjs.com
minecraft.netcallersbane.comelderscrolls.comadaptivecards.ioapi-extractor.com
+apisof.netappcenter.ms
+blazor.netbotframework.comcodethemicrobit.comdevopsassessment.netdot.netgamesstack.comgraphengine.ioinsiderdevtour.com
+jwt.msmicrobit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com
mmdnn.commono-project.commsdn.commsinnovationchallenge.commspairlift.commsropendata.com
nuget.org
nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.com
+sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.euvisualstudio.net
vfsforgit.com
vfsforgit.orgvsassets.io
+vscode.devvscode-cdn.netvscode-unpkg.netxamarin.comdoom.com
+msocsp.commicrosoftnews.ccmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.orgmsn.commsnewskids.commsnewskids.netmsnewskids.orgmsnkids.commicrosoftstart.com
start.commicrosoft.bymicrosoft.beonedrive.com1drv.comlivefilestore.com
sharepoint.cnbethsoft.combethesdagamestudios.combethesda.net
+beth.games
+xbx.lvxboxstudios.comxboxservices.commicrosoft.azforzamotorsport.netforzaracingchampionship.comforzarc.comgamepass.comorithegame.comrenovacionxboxlive.comtellmewhygame.comxbox.coxbox.comxbox.euxbox.org
+xbox360.coxbox360.com
+xbox360.euxbox360.org
+xboxab.comxboxgamepass.comxboxgamestudios.comxboxlive.com
+xboxone.coxboxone.com
+xboxone.euxboxplayanywhere.comvisualstudio.co.ukspoprod-a.akamaihd.netskype-edf.akadns.netskypedata.akadns.netlive.com.aumicrosoftstore.com.hkHD^github-production-release-asset-[0-9a-zA-Z]{6}\.s3\.amazonaws\.com$1drv
+onedrive
+skydrivedcg.microsoft.com
+cndynamics.cn
+cn
+engkoo.com
+cnlync.cn
+cnmicrosoft-smb.cn
+cn microsoftonline-i.cn
+cn"microsoftonline-m-i.cn
+cn microsoftonline-m.cn
+cn"microsoftonline-p-i.cn
+cnµsoftonline-p-i.net.cn
+cn microsoftonline-p.cn
+cn$microsoftonline-p.net.cn
+cnmicrosoftonline.cn
+cnµsofttranslator-int.cn
+cn msauth.cn
+cnmsauthimages.cn
+cnmsftauth.cn
+cnmsftauthimages.cn
+cnmspil.cn
+cnmsra.cn
+cn
+o365cn.com
+cno365files.cn
+cnoffice365-net.cn
+cnoffice365.cn
+cnofficewebapps.cn
+cnonmschina.cn
+cn
+outlook.cn
+cnpbiwebcontent.cn
+cnpowerapps.cn
+cnpowerappsportals.cn
+cnpowerautomate.cn
+cn
+powerbi.cn
+cn
sharepoint.cn
+cn(dl.delivery.mp.microsoft.com
+cn&download.windowsupdate.com
+cn#b.c2r.ts.cdn.office.net
+cn'bg.v4.a.dl.ws.microsoft.com
+cn(bg4.v4.a.dl.ws.microsoft.com
+cnbuild.microsoft.com
+cn2&cdn.marketplaceimages.windowsphone.com
+cn cn.windowssearch.com
+cn#ctldl.windowsupdate.com
+cn"devblogs.microsoft.com
+cn#developer.microsoft.com
+cndocs.microsoft.com
+cn"download.microsoft.com
+cn/#download.visualstudio.microsoft.com
+cn#f.c2r.ts.cdn.office.net
+cnfs.microsoft.com
+cnlearn.microsoft.com
+cn(msgr.dlservice.microsoft.com
+cn, msgruser.dlservice.microsoft.com
+cn, myvs.download.prss.microsoft.com
+cn."oemsoc.download.prss.microsoft.com
+cn#officecdn.microsoft.com
+cn&qh.dlservice.microsoft.com
+cn res-1.cdn.office.net
+cnres.cdn.office.net
+cnsdx.microsoft.com
+cn shell.cdn.office.net
+cn/#silverlight.dlservice.microsoft.com
+cn, slupdate.dlservice.microsoft.com
+cn0$software.download.prss.microsoft.com
+cn(statics.teams.cdn.office.net
+cn, storeedgefd.dsx.mp.microsoft.com
+cn0$surface.downloads.prss.microsoft.com
+cn."vscode.download.prss.microsoft.com
+cn*vz.download.prss.microsoft.com
+cn&wl.dlservice.microsoft.com
+cn&wscont1.apps.microsoft.com
+cn&wscont2.apps.microsoft.com
+cn&xb.dlservice.microsoft.com
+cn 21vbc.com
+cn21vbluecloud.com
+cn21vbluecloud.net
+cnaadrm.cn
+cnaggresmart.com
+cnapihub-internal.cn
+cn$appserviceenvironment.cn
+cnazcrmc-test.cn
+cn azcrmc.cn
+cnazk8s.cn
+cnaznbcontent.cn
+cn aztask.cn
+cnazure-api.cn
+cnazure-apihub.cn
+cnazure-automation.cn
+cn, azure-connectedvehicles-stage.cn
+cn&azure-connectedvehicles.cn
+cn)azure-devices-provisioning.cn
+cnazure-devices.cn
+cnazure.cn
+cnazurecr-test.cn
+cn
+azurecr.cn
+cnazurehdinsight.cn
+cnazureiotsuite.cn
+cnazuremresolver.cn
+cnazureprivatedns.cn
+cnazurerms.cn
+cnazuresandbox.cn
+cnb2clogin.cn
+cn
+b3itech.cn
+cnblueaggrestore.com
+cnbluecloudprod.com
+cncegid-cloud.cn
+cn chinacloud-mobile.cn
+cnchinacloudapi.cn
+cnchinacloudapp.cn
+cnchinacloudsites.cn
+cn hdinsightservices.cn
+cn4(management-azure-devices-provisioning.cn
+cn'management-azure-devices.cn
+cnmcchcdn.com
+cnmgmt-azure-api.cn
+cn#microsoftazurestatus.cn
+cnmicrosoftmetrics.cn
+cnmncmsidlab1.cn
+cn
msappproxy.cn
+cnmschcdn.com
+cnmsftcloudes.cn
+cn
msidentity.cn
+cnmsidlabpbmc.cn
+cntrafficmanager.cn
+cntrustcenter.cn
+cnunity3dcloud.cn
+cnwindowsazure.cn
+cn!windowsazurestatus.cn
+cn".+\.azchcdn[a-s]\.com$
+cnazure-dns.cn
+cn).+\.azure-dns-([1-9]|10)\.cn$
+cnbing.com.cn
+cncn.bing.com
+cncn.bing.net
+cncn.mm.bing.net
+cn
ditu.live.com
+cnbj1.api.bing.com
+cnemoi-cncdn.bing.com
+cnmicrosoftreactor.cn
+cn#microsoftreactor.com.cn
+cnreactorms.com.cn
+cnwww.microsoft.com
+cnmicrosoftnews.cn
+cnmsn.cn
+cnxboxlive.cn
+cn
+'
+MOJImoji.com
mojichina.com
+
+TVDBthetvdb.com
+
+ARCHIVEarchive-it.orgarchive.org
+archive.ph
archive.todayopenlibrary.org
4pcdn.org
+4plebs.org
+4
+CSIScsis-prod.s3.amazonaws.comcsis.org
+
+ INSTAGRAM!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me
igcdn.comigsonar.comigtv.com
imstagram.comimtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.cominstagda.com
instagify.cominstagmania.cominstagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net
instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com
instagran.cominstagranm.com
instagrem.cominstagrm.cominstagtram.cominstagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net
instastyle.tvinstgram.comintagram.comintagrm.comintgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.com graph.instagram.com
+ads)graph-fallback.instagram.com
+ads
+
+EVERNOTEevernote.com
+
+PSTORAGEpstorage.space
+<
+ TAILSCALE
tailscale.comtailscale.io
+ts.net
+
+OSDNosdn.net
+Q
+SOURCEFORGEsourceforge.comsourceforge.net
+sf.netfsdn.com
+
+VIUapi.viu.now.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net
+viu.tvviu.com^ewcdn[0-9]{2}\.nowe\.com$
+N
+ CLOUDCONEclco.cc
+cloudc.one
cloudcone.com
cloudcone.net
+
+MIHOYOgenshinimpact.comhonkaiimpact3.comhonkaistarrail.com
hoyo.linkhoyolab.com
hoyoverse.comn0vadesktop.comzenlesszonezero.com
mhystatic.com
+cn mhyurl.cn
+cn
+mihayo.com
+cnmihayou.com
+cn
+mihoyo.com
+cnmihoyocg.com
+cnmihoyogift.com
+cnmihoyomall.com
+cnmiyoushe.com
+cnbenghuai.com
+cnbh3.com
+cnbhsr.com
+cnthemisweeps.com
+cnyuanshen.com
+cn
juequling.com
+cn'^.+-mihayo\.akamaized\.net$
+cn
+!
+NYAAnyaa.netnyaa.si
+
+MUCINEX
+mucinex.ca
+mucinex.cnmucinex.commucinex.net
+mucinex.tvmucinexprofessional.com
mucinex.co.nzmucinex.com.cn
+A
+OKAAPPSokaapps.com%^(.+\.)*zh\.okaapps\.com$
+cn
+7
+ST
+st.com%stmicroelectronics.com.cn
+cn
+3
+
+TIANYANCHA
jindidata.comtianyancha.com
+
+AP
+ap.org
+apnews.com
+V
+CNETcnet.comcnet.de
cnetfrance.frdownload.com
+cnet.co.kr
+'
+CODING
coding.me
+coding.net
+9
+SQUIRRELVPNsquirrelvpn.comsquirrelgroup.net
+*
+WIWIDEwamawama.com
+wiwide.com
+
+3DM3dmgame.com
+
+MSNmicrosoftnews.ccmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.orgmsn.commsnewskids.commsnewskids.netmsnewskids.orgmsnkids.commicrosoftstart.com
start.commicrosoftnews.cn
+cnmsn.cn
+cn
+
+SOFTBANKsoftbanksb-mobile.jpsb-telecom.netsoftbank-ipo.comsoftbank-jp.comsoftbank-robotics.comsoftbank-telecom.comsoftbank-telecom.netsoftbank.jpsoftbank.tvsoftbankbb.comsoftbankbb.netsoftbankci.comsoftbankhawksstore.jpsoftbankmobile.netsoftbankrobotics.comsoftbanktelecom.comsoftbankusa.netsoftbankventuresasia.comsoftbankworld.com
+
+IBMibmweatherchannelweatherappdomain.cloudbluemix.combluemix.netibm.com
+ibm.euibm.net
+ibm.us
s-bluemix.nets81c.com
consul.io
hashicorp.comnomadproject.io
packer.ioterraform.iovagrantcloud.com
vagrantup.comvaultproject.io
+?
+LIEPIN
+liepin.com
+lietou.comlietou-static.com
+
+PICACG
bikaa.xyz
bikac.xyzbikaios.xyzmanhuabika.compicacgp.compicacgy.com
+picacn.xyz
picacomic.com
picacomic.xyzwikawika.xyz
+
+
TENCENT-GAMESbattlecare.net
+cngameitop.com
+cngameloop.com
+cngcloudcs.com
+cngcloudcstest.com
+cn gcloudcstestonly.com
+cngclouddolphin.com
+cn
gcloudsdk.com
+cn
+gdtimg.com
+cn
goto-game.com
+cngoto-game.mobi
+cngoto-game.net.cn
+cn
goto-game.org
+cnhappyhlddz.com
+cnhdyxgame.com
+cnhkgcloudcs.com
+cnihappystudio.cn
+cnihappystudio.com
+cnin.th
+cnludosuperstar.cn
+cn
ludoworld.net
+cn
mahjongai.net
+cn
mahjongcup.cn
+cnmahjongcup.com
+cnmahjongcup.net
+cnmetalrevolution.com
+cnmidasbuy.com
+cnnagcloudcs.com
+cnproximabeta.com
+cnpubghelper.com
+cn
+pubgno1.cn
+cnpubgtool.com
+cn
qqgameapp.com
+cnrmwxgame.com
+cn
skydweller.cn
+cnsyxlgame.com
+cntencent-gcloud.com
+cntencentstart.com
+cntexasholdemcup.cn
+cntexasholdemcup.com
+cntexasholdemcup.net
+cntimibase.com
+cnvideoxiaoyouxi.com
+cnwcbygame.com
+cnyxdmgame.com
+cnyximg.cn
+cnyxwsgame.com
+cnyzyxgame.com
+cnzcjbgame.com
+cnzhuoyuegame.com
+cn xn--owtw8cc49ajfl.cn
+cn roblox.cn
+cn
roblox.qq.com
+cnrobloxdev.cn
+cnnextstudios.com
+cnnextworkshop.net
+cn mszdld.cn
+cn
+mszdld.com
+cn
+mszdld.net
+cngamebonfire.com
+cn
gouhuo.qq.com
+cnffbuddy.com
+cngotolink.net
+cn
+gtgres.com
+cnrealcybertron.com
+cn
+wegame.com
+cn
wegame.com.cn
+cnwegameplus.com
+cnwerepository.com.cn
+cn
brawlstars.cn
+cnhaydaypop.cn
+cnlabycore.cn
+cnsccreator.cn
+cn
sccreators.cn
+cn
+scescdn.cn
+cnscid.cn
+cnscsentry.cn
+cn
supercell.com
+!cn!supercellcommunity.cn
+cnsupercellsupport.cn
+cncodm.com
+cnbcfmglobal.com
+cntcfmglobal.com
+cnanticheatexpert.com
+cn
+17roco.com
+cnroco.qq.com
+cn
+
+ TEST-IPV6
test-ipv6.comtestipv6.desixte.sttest-ipv6.setest-ipv6.istest-ipv6.hutest-ipv6.cztest-ipv6.cltest-ipv6.epic.networktest-ipv6.arauc.brtest-ipv6.carnet.hrtest-ipv6.fratec.net test-ipv6.freerangecloud.comtest-ipv6.go6.sitest-ipv6.belwue.nettest-ipv6.ttk.rutest-ipv6.iu13.nettest-ipv6.alpinedc.chtest-ipv6.noroutetohost.nettest-ipv6.roedu.net"test-ipv6.ke.liquidtelecom.nettest-ipv6.sin.vr.orgtest-ipv6.cs.umd.edu!test-ipv6.csclub.uwaterloo.catestipv6.cn
+cn
+
+
CHINABROADNET
+chn.cn
ahitv.com
cqccn.comsc96655.com
isxtv.comsdgdwljt.com10099.com.cn
gcable.com.cn
+
+DETTOLdettol-prize.com
dettol.fr
dettol.cz
dettol.ch
dettol.cldettolthailand.comdettolcleannaija.comdettolarabia.com
dettol.be
dettol.at
dettol.pt
+dettol.com
dettol.pl
dettol.pk
dettol.nl
+dettol.net
dettol.ie
dettol.hu
dettol.rudettol.co.nz
dettol.com.sg
dettol.com.ng
dettol.com.my
dettol.com.hk
dettol.com.eg
dettol.com.br
dettol.com.bd
dettol.com.audettol.co.ukdettol.co.kedettol.co.indettolsitishield.co.indettol.co.idespadoldettol.com.ar
dettol.com.cn
+cn
+
+
+FONTSINUSEfontsinuse.com
+
+KNOVEL
+knovel.com
+v
+PINGCAP
+asktug.com
+pingcap.cnpingcap.comtidb.aitidb.net
tidbcloud.comtikv.org
+
+VISAdnsvisa.comeubluecardvisa.comvisa.clvisb.orgvisasavingsedge.cavisaplus.comvisapcsdirect.comvisanet.netvisainfinite.cavisaicsdirect.comvisaglobalfinance.comvisagiftcard.usvisafulfillment.comvisafintechfasttrack.comvisaeverywhereshop.comvisadpsonline.usvisa.comvisadns.comvisadigitalconcierge.comvisadigital.comvisaconciergelac.comvisacheckout.orgvisacheckout.net
visacards.comvisacarddesignlab.comvisa.ievisabank.orgvisa-news.jpvisa-atm.comvaultify.net
vaultify.infovaultify.comtorcidadeouro.comsoccerfinancier.capracticalmoneyskills.jppracticalmoneyskills.capracticalbusinessskills.commhshosting.commiamifintechfestival.comlightbridge.comfinancialsoccer.cavisa.cavisa.be($connaissancesfinancierespratiques.cavisasignaturehotels.comvisaluxuryhotels.com!visaluxuryhotelcollection.comvisainfiniteluxuryhotels.camyvisaluxuryhotels.comfinlitsummit.orgvisa.kyvisamiddleeast.com
visakorea.comvisaitalia.com
visaeurope.sivisa.is
visaeurope.lu
visaeurope.ch
visaeurope.at
+visabg.comvisa.tcvisa.sxvisa.czvisa.devisa.dkvisa.esvisa.fivisa.frvisa.gdvisa.gpvisa.grvisa.hkvisa.huvisabusinessinsights.comvisa.sovisasoutheasteurope.comvisa.ltvisa.lvvisa.mnvisa.mqvisa.nlvisa.novisa.plvisa.ptvisa.rovisa.sevisa.sk
+visa.co.ilvisa.com.hrvisa.com.vivisa.com.vcvisa.com.uyvisa.com.uavisa.com.twvisa.com.trvisa.com.svvisa.com.hkvisa.com.ruvisa.com.pyvisa.com.prvisa.com.gyvisa.com.pevisa.com.pavisa.com.ng$ visaluxuryhotelcollection.com.br$ visaluxuryhotelcollection.com.mxvisa.com.myvisaluxuryhotels.com.arvisa.com.mxvisa.com.msvisa.com.lkvisa.com.lcvisa.com.kzvisa.com.knvisa.com.khvisa.com.jm
+visa.co.crvisa.com.ttvisa.com.vnvisa.com.phvisa.com.gtvisa.com.gevisa.com.ecvisa.com.dovisa.com.dmvisa.com.cyvisa.com.covisa.com.bzvisa.com.bsvisa.com.brvisa.com.bovisa.com.azvisa.com.auvisa.com.arvisa.com.aivisa.com.ag
+visa.co.za
+visa.co.ve
+visa.co.uk
+visa.co.th
+visa.co.nz
+visa.co.ni
+visa.co.ke
+visa.co.jp
+visa.co.invisa.com.hn
+visa.co.idvisa.com.sgvisasignature.co.kr
+visa.co.aovisa.cn
+cnvisa.com.cn
+cn"financialsoccer.com.cn
+cn#practicalmoneyskills.cn
+cn'practicalmoneyskills.com.cn
+cnvisainfinite.cn
+cn
+visapay.cn
+cnvisaplatinum.cn
+cnvisaplatinum.com.cn
+cn
+;
+XUEERSIspeiyou.com
+xesimg.comxueersi.com
++
+AFDIAN
+afdian.net
afdiancdn.com
+"
+DECRYPTIPASTOREdecrypt.day
+G
+HSBC-CNhsbc.com.cn
hsbcqh.com.cnhsbcinsurance.com.cn
+
+CCTV%!xn--fiq53l90et9fpncc7joo6apn8a.cnolympicchannelchina.cncctvpic.comchinaepg.cn
chinalive.comzggbdszt.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8scntv.cn%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn
+cctvlib.cnlivechina.cncctv.com%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn
+cctvpro.cn
livechina.com
cntvwb.cngjgbdszt.cntvcc.cncctv.cn
ipanda.cn
+ipanda.com-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s
+ipanda.netcctvlibrary.cngjgbdszt.net.cn
ipanda.com.cngjgbdszt.com.cntvcc.com.cncctvpro.com.cncctvlibrary.com.cncctvlib.com.cncntv.com.cncnms.net.cncitv.net.cnzggbdszt.com.cnzggbdszt.net.cnzygbdszt.net.cn
+
+
+DUCKDUCKGO
duckduckgo.dk
+ddg.cocometotheduckside.com
duckduckgo.in
+ddg.gg
+ddh.gg
+dgg.gg
dontbubble.usdonttrack.usduck.coduck.comduckduckco.com
duckduckco.de
duckduckgo.ca
duckduckgo.co
duckduckgo.jpduckduckgo.comspreadprivacy.comcispaletter.com
duckduckgo.deprivatebrowsingmyths.comcispaletter.orgprivacysimplified.com
duckduckgo.ke
duckduckgo.mx
duckduckgo.nlduckduckgo.org
duckduckgo.pl
duckduckgo.sg
duckduckgo.ukduckduckhack.com
+duckgo.comducksear.chduckside.com
dukgo.comenteentegeh.defixtracking.comgoduckgo.comhacksear.chjustduckit.comduckduckgo.co.ukduckduckgo.com.twduckduckgo.com.mx
+
+XINGRZ
xingrz.me
++
+FILIMO
+filimo.com
filimo.school
+
+MEADJOHNSONmeadjohnson.commeadjohnson.netmeadjohnson.com.hkmeadjohnson.com.twenfinitas.com.cn
+cnmeadjohnson.com.cn
+cn
+:
+
+SPICEWORKSspiceworks.comspiceworksstatic.com
+
+ TRUSTWAVE
trustwave.com
+
+XD
+ro.com xd.cn
+xd.com
xdcdn.netxindong.com
+tapimg.com
+tapimg.net
taptap.cn
+taptap.com
taptap.iotaptapdada.com
+
+DUREXdurex.ptdurex.ro
durex-shop.chdurex-shopline.comdurex-slovenia.sidurex.atdurex.eedurex.cltrydurex.tvtrydurex.net
shopdurex.complaybydurex.comlovesexdurex.comdurexusa.com
durex.comdurexukraine.comdurexloveclub.comdurexindia.comdurexchina.comdurexcanada.comdurexcam.comdurex.usdurex.sedurex.rudotherex.comdurex.esdurex.dkdurex.dedurex.czdurex.bedewitwithdurex.comdurex.fidurex.frdurex.hudurex.iedurex.itdurex.jpdurex.lvdurex.mxdurex.nldurex.nodurex.pldurex.com.sgdurex.com.pedurex.com.trdurex.com.phdurex.com.pkdurex.com.ngdurex.com.mydurex.com.audurex.com.bddurex.com.codurex.co.iddurex.co.zadurex.co.ukdurex.co.thdurex.co.nzdurex.co.ildurex.com.hrdurex.com.cn
+cndurexchina.com.cn
+cnlovesexdurex.cn
+cn
+0
+REALITYKINGSrealitykings.com
+rk.com
+:
+ SOFTETHER
softether.orgsoftether-download.com
+n
+IFLYTEKiflytek.com
xunfei.cn
+ets100.com
+zhixue.comchangyan.com
xunfeixxj.com
+
+VGTIME
+vgtime.com
+2
+YNETynet.cnynet.comynet.com.cn
+
+SHORTURLshorturl.at
+'
+APAapa.orgpsyccareers.com
+d
+BARRONSbarrons-advisor.combarrons-conferences.combarrons.comwsjbarrons.com
+
+ DAILYMAILmailonsunday.ie
dailym.aimailhealth.com
dailymail.com
+thismon.eedailymail.dkdailymailonline.commailonline.com
+mol.imdailymail.com.audmgmediaprivacy.co.ukmailonsunday.co.uk
anm.co.ukmetro.co.ukdailymail.co.ukthisismoney.co.ukmailonline.co.uk
+
+REURLreurl.cc
+
+FTgisplanning.comexec-appointments.comglobalriskregulator.comfdiintelligence.comfinancialadvisoriq.com
+ft.com
ftadviser.com
ftchinese.comignites.comfundfire.comthenextweb.com
+excedo.comftiecla.comignitesasia.comigniteseurope.comagendaweek.commandatewire.compensions-expert.com
+pwmnet.com
thebanker.comthebankerdatabase.cominvestorschronicle.co.uk
+"
+IYF
+iyf.tvdnvodcdn.me
+-
+PUBMATIC-ADSads.pubmatic.com
+ads
+M
+
+LOCALIZEJSlocalizecdn.comlocalizejs.comlocalizestatus.com
+N
+SYMANTECmanagedpki.comsymantec.com
symcb.com
symcd.com
+
+CATEGORY-VPNSERVICESaaex.ukamytele.com
+ark.tobaicaonetwork.com
bighead.groupblinkload.zone
cloudn.me
conair.me
cordcloud.orgctyun.onlinegeph.io
gfw.press
maying.comocloudplus.com
mray.clubmudfish.netmuncloud.dogrenzhe.cloud
+ssplive.pw
+ssrpass.pwstc-server.comhutao.cloudvilavpn.comvilavpn.xyzvilavpn1.xyzvilavpn2.xyzvilavpn3.xyzvilavpn4.xyzvilavpn5.xyzvilavpn6.xyzvilavpn7.xyzjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.netn3ro.loln3ro.netn3ro.wtfpaofu.cloudpaofuyun.mesurflite.cosurflite.net928.plus
+zind.cloudboslife.bizboslife.netduyaoss.comduyaossr.comsquirrelvpn.comsquirrelgroup.net
dlercloud.com
dlercloud.orgdlercloud.medleris.besthitun.ioxn--90wwvt03e.comairport-gov-cn.comcnix-gov-cn.comxn--d4ty0ojsqzfd.com
+cylink.procylink0122.icu
nexitally.comnexitallysafe.com
nexitcore.comshadowsocks.comshadowsocks.nl
+~
+CYGAMES
+cygames.jpworldflipper.jp
cygames.co.jpworldflipper.akamaized.netumamusume.akamaized.net
+
+IINAiina.io
+
+ GREATFIREapplecensorship.comfreebrowser.orgfreewechat.com
freeweibo.com
freezhihu.org
greatfire.orgpao-pao.netwikiunblocked.org
+
+ WANTMEDIAwantblogger.comchinatimes.comloveparents.orgwant-media.com
+ctwant.com
lecoin.ccbenliton.comzwtvusa.cominfotimes.com.twctitv.com.tw
+ctv.com.twctee.com.twchinatimes.com.twsuperstation.com.tw
+%
+
+ADJUST-ADS
+adjust.com
+ads
+
+FREENODEfreenode.net
+L
+TONECinternetdownloadmanager.comregisteridm.com
tonec.com
+
+ SPACEMAIL
spacemail.com
+&
+
STARFIELDTECHstarfieldtech.com
+
+XHAMSTERwidgets.stripst.comxhamster.com
xhamster.desixhamster.xxxxhamster18.comxhamster18.desixhamsterlive.com
xhcdn.com#collector.xhamster.com
+ads
+
+YANDEX
+yandex
yandex.pl
+yandex.org
yandex.fi
yandex.fr
yandex.az
yandex.byyastatic.net
+yandex.comyandexcloud.net
yandex.uz
yandex.ua
yandex.tm
yandex.tj
yandex.de
yandex.ee
yandex.eu ya.ruyandex.aerodzen.ru
yandex.kg
yandex.kz
yandex.lt
yandex.lv
yandex.md
+yandex.netyandex.jobsxn--d1acpjx3f.xn--p1ai
yandex.ru
yandex.st
yandex.sx
yandex.com.ua
yandex.com.tr
yandex.com.ru
yandex.com.ge
yandex.com.amyandex.co.il
+r
+ZENDESKoutbound.iozdassets.comzdusercontent.comzendesk.com
zndsk.com
zopim.com
+6
+
NIKKAN-GENDAI
+gendai.netnikkan-gendai.com
+"
+NISTnist.govtime.gov
+k
+SLING
dishworld.comslinginternational.com
sling.commovenetworks.com
+movetv.com
+
+GANDI
gandi.net
+
+OSUa.ppy.sh
assets.ppy.shc.ppy.sh
+osu.ppy.sh
m1.ppy.shlazer.ppy.sh
notify.ppy.sh
sentry.ppy.shspectator.ppy.sh
+
+QINIUqbox.me
qiniu.comqiniucdn.comqiniudn.comqiniudns.com
+qiniup.com
qnsdk.com
qnssl.comstaticfile.netstaticfile.org
+
+RARBG
dyncdn.merarbg.merarbg.toproxyrarbg.orgrarbg.israrbgaccess.orgrarbgaccessed.orgrarbgget.orgrarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.orgrarbgprx.orgrarbgto.orgrarbgunblock.comrarbgunblock.orgrarbgunblocked.orgrarbgway.org
+Y
+TENCENTqcloudmarket.com
spcloudhw.com
+apcdns.net
cdn-go.cnfoxmail.comgtimg.cn
gtimg.comidqqimg.comimqq.com
myapp.comqlogo.cnqpic.cn
+qq.comqq.wang
+m1.run
+m6.runoracle-tencent.net
+qqmail.com
qzone.com
+m9.runoracle-tencent.comservicewechat.com
+tencent.cntencent.comoracle-tencent.cntencent.net
+ma.runtencentmusic.com
+tenpay.com
tfogc.com
tlivepush.com
txlivecdn.com
+wechat.comwechatpay.cn
+weiyun.com
wxlivecdn.com
alloyteam.comimweb.ioivweb.io
fyeds.com
+fyeds0.com
+fyeds1.com
+fyeds3.com
+fyeds4.com
+fyeds5.com
+fyeds6.com
+fyeds7.com
+fyeds8.com
+fyeds9.comfymall0.comfymall1.comfymall4.comfymall7.comfymall9.com
fymallqa0.com
fymallqa1.com
fymallqa2.com
fymallqa3.com
fymallqa4.com
fymallqa7.com
fymallqa9.com
openmidas.com
qq.designqqgamedesign.comtencent-cloud.cntencent-cloud.comtencent.designtencentcloud.comtjstats.comwegamedeveloper.comweixinbridge.com
+yuewen.comhongxiu.comlrts.meqdmm.com
+qidian.com
readnovel.comtingbook.comwebnovel.com
+xs8.cnxxsy.net
tcloudedu.com
+tdnsx1.com
aitransfy.comapaas-zone-test.comapigwtencent.combkapigw.com
+bkapps.combkclouds.cc
bktencent.com
+build9s.iobyodonline.com
cdndoctor.com
+cdngot.com
+cdntip.comcdntips.comcdntips.netcdnv1.cncdnv2.cncdnv3.cn cloud-industry-delivery.sitecloudbase.cn
cloudbase.netcloudidaas.com
cloudsite.vip
cncqcloud.comcomputeinit.comcoolsite.vip
dnsv1.comdothework.cnectencent.cnedgeonedy1.com
+essurl.comexmailgz.com
+fsphere.cngaapqcloud.comqcloudsmartiot.com
gmedev.cn
govqcloud.com
+gsadds.comgtm.pub
hr-welink.comidcgcloudcs.com
iemiq.comigtm.pubisd.com
ispqcloud.comitopsdk.com
my-qcloud.commyelasticsearch.comdoh.pubmyqcloud.comonexmail.comopenapp.runovscdns.comovscdns.net
+pn1waq.comqcloud-edumall.com
+qcloud.com
qcloud.laqcloudapps.com
qcloudcdn.comqcloudcdntest.cnqcloudclass.comqcloudcos.cn
qcloudcos.com
dnsv5.com
+dnspod.org
dnsv3.comqclouder.com
qcloudgme.com
qcloudimg.comqcloudipv6.comtapd.cnxn--r70as2s.xn--fiqs8sgitdrone.cnqcloudtcic.com
qcloudtiw.comqcloudtrip.comqcloudtt.com
qcloudwaf.comtcloudhw.net
+qeodns.com
+qeodns.netqqmra.cn
qqmra.comqyunapp.comserverlesscloud.cnsmtcdns.comsmtcdns.netspcdntip.comspcdntipbak.comqcloudns.com
spcloudhw.netsrmkp.cnstarlakelab.comtamaegis.com
qq.xn--fiqs8stcdlive.com
+tcdnhw.com
tcdnkcbak.comtcdnlive.comtcdnlivebak1.comtcdnlivebak2.com
+tcdnos.com
+tcdnos.nettcdntip.comtcdnvod.comtcdnvodbak.comtcloudbase.comtcloudbase.nettcloudbaseapp.comtcloudbi.comtclouddrive.comtourismuser.cnacctdns.netqdwebim.comtcloudscdn.comtcloudscdn.nettcloudhw.com
+techo.chat
tefscloud.com
tefscloud.nettenant-zone-dev.comtencdns.nettencent-cloud.nettencentapps.comtencentbyod.com
tencentcdb.cntencentcdb.com
dnsv4.comtencentclb.comtencentcloud-aiot.comtencentcloudapi.comtencentcloudclub.comtencentcloudcr.comtencentcloudmarket.comtencentcloudns.comtencentcloudsec.comtencentcloudses.com
tencentcos.cntencentcos.comdns.pub
tencentcs.comtencentdayu.com
tencentdb.comtencentdevices.comtencentdigitalassistant.comtencentdms.comtencenteiam.comtencentelasticsearch.com
tencentid.comtencentidentity.comtencentproxy.comtencentrio.comtencenttid.comtencentwemeet.clubtencentwepark.comtencentyun.comtendbcluster.com
+tendis.net
dnsapi.cntestmeet.cntestwaf.com
tgovcloud.com
+tidaas.comdnspod.mobitimmerse.comtlivecdn.comtourismshow.cnacctdns.comtsparkling.comtx-exhibition.com
+txbyod.com
+txidc.wang
+txtyxg.comtxyscdn.comtxyscdn.netuncnn.cn
vcloudstc.com
vcloudstc.net
vcloudvod.comvodtcbk.com
+vxo7tu.comwework-studio.com
+xqymuy.com
+yufuid.comdot.pub
+yufuid.net
yunjitele.com
+dnspod.com
dnspod.cn
dnsv2.com
+dnspod.net
+discuz.org
+discuz.netcomsenz.com
+ym.run
+um.runtencent.com.cn
qq.cn.comtencent.net.cn
qq.com.cn
yufuid.com.cngtimg.com.cnfoxmail.com.cntencentcos.com.cnoracle-tencent.com.cn
dnspod.com.cnqcloudcos.com.cnectencent.com.cn
+rtx.com.cndnsv1.com.cnjrzk.net.cntimatrix.com.cntestjrzk.net.cnoracle-tencent.net.cntencentcdb.com.cn.+\.dnse[0-5]\.(cn|com)$'#.+\.tdnsv([1-9]|1[0-5])\.(com|net)$,(\.(.+-)?ap-beijing(-.+)?\.myqcloud\.com$,(\.(.+-)?ap-nanjing(-.+)?\.myqcloud\.com$-)\.(.+-)?ap-shanghai(-.+)?\.myqcloud\.com$.*\.(.+-)?ap-guangzhou(-.+)?\.myqcloud\.com$,(\.(.+-)?ap-chengdu(-.+)?\.myqcloud\.com$.*\.(.+-)?ap-chongqing(-.+)?\.myqcloud\.com$-)\.(.+-)?ap-shenzhen(-.+)?\.myqcloud\.com$:6\.(.+-)?ap-beijing(-.+)?\.tencentcos\.(cn|com(\.cn)?)$:6\.(.+-)?ap-nanjing(-.+)?\.tencentcos\.(cn|com(\.cn)?)$;7\.(.+-)?ap-shanghai(-.+)?\.tencentcos\.(cn|com(\.cn)?)$<8\.(.+-)?ap-guangzhou(-.+)?\.tencentcos\.(cn|com(\.cn)?)$:6\.(.+-)?ap-chengdu(-.+)?\.tencentcos\.(cn|com(\.cn)?)$<8\.(.+-)?ap-chongqing(-.+)?\.tencentcos\.(cn|com(\.cn)?)$;7\.(.+-)?ap-shenzhen(-.+)?\.tencentcos\.(cn|com(\.cn)?)$
tencent.co.id
+!cntencent.com.hk
+!cnwetv.vip
+!cnwetvinfo.com
+!cnwetv.qq.com
+!cnweui.io
+cnbattlecare.net
+cngameitop.com
+cngameloop.com
+cngcloudcs.com
+cngcloudcstest.com
+cn gcloudcstestonly.com
+cngclouddolphin.com
+cn
gcloudsdk.com
+cn
+gdtimg.com
+cn
goto-game.com
+cngoto-game.mobi
+cngoto-game.net.cn
+cn
goto-game.org
+cnhappyhlddz.com
+cnhdyxgame.com
+cnhkgcloudcs.com
+cnihappystudio.cn
+cnihappystudio.com
+cnin.th
+cnludosuperstar.cn
+cn
ludoworld.net
+cn
mahjongai.net
+cn
mahjongcup.cn
+cnmahjongcup.com
+cnmahjongcup.net
+cnmetalrevolution.com
+cnmidasbuy.com
+cnnagcloudcs.com
+cnproximabeta.com
+cnpubghelper.com
+cn
+pubgno1.cn
+cnpubgtool.com
+cn
qqgameapp.com
+cnrmwxgame.com
+cn
skydweller.cn
+cnsyxlgame.com
+cntencent-gcloud.com
+cntencentstart.com
+cntexasholdemcup.cn
+cntexasholdemcup.com
+cntexasholdemcup.net
+cntimibase.com
+cnvideoxiaoyouxi.com
+cnwcbygame.com
+cnyxdmgame.com
+cnyximg.cn
+cnyxwsgame.com
+cnyzyxgame.com
+cnzcjbgame.com
+cnzhuoyuegame.com
+cn xn--owtw8cc49ajfl.cn
+cn roblox.cn
+cn
roblox.qq.com
+cnrobloxdev.cn
+cnnextstudios.com
+cnnextworkshop.net
+cn mszdld.cn
+cn
+mszdld.com
+cn
+mszdld.net
+cngamebonfire.com
+cn
gouhuo.qq.com
+cnffbuddy.com
+cngotolink.net
+cn
+gtgres.com
+cnrealcybertron.com
+cn
+wegame.com
+cn
wegame.com.cn
+cnwegameplus.com
+cnwerepository.com.cn
+cn
brawlstars.cn
+cnhaydaypop.cn
+cnlabycore.cn
+cnsccreator.cn
+cn
sccreators.cn
+cn
+scescdn.cn
+cnscid.cn
+cnscsentry.cn
+cn
supercell.com
+!cn!supercellcommunity.cn
+cnsupercellsupport.cn
+cncodm.com
+cnbcfmglobal.com
+cntcfmglobal.com
+cnanticheatexpert.com
+cn
+17roco.com
+cnroco.qq.com
+cnintltencentcos.com
+!cn%ap-hongkong.myqcloud.com
+!cn&ap-singapore.myqcloud.com
+!cn#ap-mumbai.myqcloud.com
+!cn$ap-jakarta.myqcloud.com
+!cn"ap-seoul.myqcloud.com
+!cn$ap-bangkok.myqcloud.com
+!cn"ap-tokyo.myqcloud.com
+!cn*na-siliconvalley.myqcloud.com
+!cn$na-ashburn.myqcloud.com
+!cn$na-toronto.myqcloud.com
+!cn%sa-saopaulo.myqcloud.com
+!cn&eu-frankfurt.myqcloud.com
+!cn#eu-moscow.myqcloud.com
+!cn:-.+\.ap-hongkong\.tencentcos\.(cn|com(\.cn)?)$
+!cn;..+\.ap-singapore\.tencentcos\.(cn|com(\.cn)?)$
+!cn8+.+\.ap-mumbai\.tencentcos\.(cn|com(\.cn)?)$
+!cn9,.+\.ap-jakarta\.tencentcos\.(cn|com(\.cn)?)$
+!cn7*.+\.ap-seoul\.tencentcos\.(cn|com(\.cn)?)$
+!cn9,.+\.ap-bangkok\.tencentcos\.(cn|com(\.cn)?)$
+!cn7*.+\.ap-tokyo\.tencentcos\.(cn|com(\.cn)?)$
+!cn?2.+\.na-siliconvalley\.tencentcos\.(cn|com(\.cn)?)$
+!cn9,.+\.na-ashburn\.tencentcos\.(cn|com(\.cn)?)$
+!cn9,.+\.na-toronto\.tencentcos\.(cn|com(\.cn)?)$
+!cn:-.+\.sa-saopaulo\.tencentcos\.(cn|com(\.cn)?)$
+!cn;..+\.eu-frankfurt\.tencentcos\.(cn|com(\.cn)?)$
+!cn8+.+\.eu-moscow\.tencentcos\.(cn|com(\.cn)?)$
+!cncoshk.myqcloud.com
+!cn cossgp.myqcloud.com
+!cncosca.myqcloud.com
+!cn cosger.myqcloud.com
+!cn!hk.file.myqcloud.com
+!cn"sgp.file.myqcloud.com
+!cn!ca.file.myqcloud.com
+!cn"ger.file.myqcloud.com
+!cn ad.qq.com
+ads
ad.qun.qq.com
+ads!adfilter.imtt.qq.com
+ads
adping.qq.com
+adsadpm.app.qq.com
+adsadsclick.qq.com
+adsadsfile.qq.com
+adsadshmmsg.qq.com
+adsadslvfile.qq.com
+adsadslvseed.qq.com
+ads%adsmind.apdcdn.tc.qq.com
+adsadsqqclick.qq.com
+adsadstestview.qq.com
+adsadsview.qq.com
+adsadsview2.qq.com
+adsadv.app.qq.com
+adsadver.qq.com
+ads
beacon.qq.com
+adsbeaconcdn.qq.com
+ads
btrace.qq.com
+adse.qq.com
+ads
+gdt.qq.com
+adsisdspeed.qq.com
+adslog.tbs.qq.com
+adsmpush.qq.com
+ads
mtrace.qq.com
+ads
pgdt.gtimg.cn
+ads
pingjs.qq.com
+adspush.qq.com
+ads
sngmta.qq.com
+ads
stat.y.qq.com
+adstajs.qq.com
+adstcss.qq.com
+adstrace.qq.com
+adsugdtimg.com
+ads
+wit.qq.com
+ads
+
+
BYTEDANCE-ADSbds.snssdk.com
+adsctobsnssdk.com
+ads
dig.bdurl.net
+adsextlog.snssdk.com
+adsi.snssdk.com
+adsmcs.snssdk.com
+ads'pangolin-dsp-toutiao-b.com
+ads%pangolin-dsp-toutiao.com
+ads'pangolin-sdk-toutiao-b.com
+ads%pangolin-sdk-toutiao.com
+ads&pangolin-sdk-toutiao1.com
+ads pangolin.snssdk.com
+ads&panplayable-toutiao-b.com
+ads$panplayable-toutiao.com
+ads%pglstatp-sdk-toutiao.com
+ads(pglstatp-snssdk-toutiao.com
+ads#pglstatp-toutiao-b.com
+ads!pglstatp-toutiao.com
+ads%sf3-ttcdn-tos.pstatp.com
+ads
+
+DWIONfastcdn.comacadn.cnbbbcdns.com
dlgslb.cn
+dlgslb.net
dwion.com
acadn.com
+tlgslb.comglobalcdn.cn
+flxdns.com
flxdns.cnmcadn.cn
tlgslb.cnfastcdn.com.cn
+'
+FLOWUS
+allflow.cn
flowus.cn
+G
+TEXctan.orglatex-project.org
+miktex.orgtug.org
+*
+GITBOOKgitbook.com
+gitbook.io
+C
+MAOCLOUD
+maoyun.commaoyuncloud.cnmaoyuncloud.com
+
+MZEDmzed.com
+,
+RENREN
+renren.comrenren-inc.com
+B
+ SCALEFLEX
scaleflex.com
cloudimage.iocloudimg.io
++
+BOSLIFEboslife.bizboslife.net
+
+CATEGORY-GAME-ACCELERATOR-CN
+leigod.com
tmjiasuqi.com
+xunyou.combohejiasuqi.com
+uu.163.comjiasu.bohe.com
+
+DNSPOD
+dnspod.net
dnsv2.com
dnspod.cn
+dnspod.comdot.pubdnspod.mobi
dnsapi.cndns.pub
dnsv4.com
dnsv3.com
+dnspod.org
dnsv5.comdoh.pub
dnspod.com.cn
+
+SOLIDOTsolidot.org
+M
+
+STRIKINGLYmystrikingly.comstrikingly.comstrikinglycdn.com
+2
+ZOOMzoom.comzoom.uszoom.com.cn
+U
+CATEGORY-TRAVEL-IR
+alibaba.irflightio.commrbilit.comtapsi.ir
+
+FACEBOOK-DEVdevelopers.facebook.comaccountkit.comatscaleconference.combotorch.org
+buck.build
buckbuild.comcomponentkit.orgdraftjs.org
+f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.comfasttext.ccfbf8.comfbinfer.comfblitho.comfbredex.com
+fbrell.comflow.devflow.orgflowtype.org
frescolib.orghacklang.orghhvm.commakeitopen.commcrouter.netmcrouter.orgmessengerdevelopers.com
+ogp.meopengraphprotocol.comopengraphprotocol.org
parse.compyrobot.org
react.comreactjs.comreactjs.orgrecoiljs.orgrocksdb.comrocksdb.netrocksdb.orgyogalayout.com
+
+HPhpstore.corpmerchandise.com
+123-hp.com123hplaserjet.com8008206616.comas-hp.cabaterias-hp.comcampushp.comcolorprotechnology.com
+compaq.orgdavid-laserscanner.com
demoprint.comdigitalpack.comeprintsw.comgaming-notebooks.comgetprintersupports.comhp-imagine.comhp-infolab.com
hp-invent.comhp-invent.info
+hp-mns.comhp-printing.comhp-webplatform.com
hp-ww.com
+hp.com
+hp.company hp.iohp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.com
hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.comhpbundle.comhpcampus.comhpcatridge.com
hpccp.com
hpceo.com
hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com
hpcpi.comhpcu.orghpcustomersupport.comhpcustomersupport.net
+hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.comhpdriver.com
hpdrivers.com
hpdrivers.org
hpeclipse.comhpengage.comhpeprint.comhpeprintcenter.comhpeurope.comhpeventcenter.com
+hpfaqs.comhpfeedback.com
+hpgift.com
+hpgpas.comhpgraphicspartners.com
hpiie.org
+hpinc.info
hpinc.nethpindigopress.comhpinkjet.comhpinstantink.cahpinstantink.comhpkeyboard.comhplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com
hplfmedia.com
hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com
+hpmini.comhpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.comhpserver.comhpservices.comhpshooping.com
+hpshop.com
hpshoping.com
hpshopping.hk
hpsignage.comhpsmart.comhpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com
hpspeaker.comhpsprocket.com
hpsso.comhpstore-china.comhpstore-emea.comhpstore.comhpstorethailand.com
hpsupport.comhpsuresupply.comhptechventures.comhpto.nethptouch.comhptouchpointmanager.comhptrainingcenter.com
hpuae.comhpuniversity.infohpusertraining.com
+hpveer.comhpvirtualthin.com
hpwallart.comhpwellnesscentral.com
hpwsn.comi-123-hp.com
inkchoice.cominstantink.comleavinghpinc.comlife-global.orgmyhpsupport.com
printeron.comprintersetupsupport.comprintspots.comprintspots.netserviceshp.comthecompaqstore.comtouchsmartpc.comtouchsmartpc.nettouchsmartpc.orgworkstations.tvwww8-hp.comxn--6eup7j.comxn--6eup7j.net
+hpstore.cn
+cn
+6
+HUAWEIabhouses.comagconnect.link
dbank.comdbankcdn.cndbankcdn.com
dbankcloud.cndbankcloud.comdbankedge.cn
dbankedge.nethicloud.comhihonor.comhonor.cn
huawei.cn
+huawei.comhuaweiacad.comhuaweiief.cn
huaweiief.comhuaweistatic.com
hwccpc.cn
+hwccpc.comhwht.cnhwocloud.com
+hwtrip.comshanhaitujian.com
vmall.comvmallres.comcdnhwcqwg14.comcdnhwcgrb01.cn
b2bgo.comeduapaashwc.com
hc-cdn.cn
+hc-cdn.com
+hc-sre.comhuaweiapaas.cnhuaweiapaas.comhuaweicloud-dns.cnhuaweicloud-dns.comhuaweicloud-idme.cnhuaweicloud-idme.comhuaweicloud-smn.cnhuaweicloud-smn.comhuaweicloud-smn.nethuaweicloud.cnhuaweicloud.comhuaweicloudapis.cnhuaweicloudapis.comhuaweicloudlive.comhuaweicloudsite.cnhuaweicloudsite.comhuaweicloudwaf.cnhuaweicloudwaf.comhuaweioneaccess.cnhuaweioneaccess.comhuaweimarketplace.comhuaweisafedns.cnhuaweisafedns.comhuaweisafehub.cnhuaweisre.cn
huaweisre.comhuaweiyun.cn
huaweiyun.com
+hwastro.cnhwastro.comhwcdnsre.cnhwcdnsre.comhwclouds-dns.cnhwclouds-dns.comhwclouds-dns.nethwclouds.cnhwclouds.com
hwclouds.mobihwcloudsite.cnhwcloudsite.com
hwcloudvis.cnhwcloudvis.comhweventgrid.cnhweventgrid.comidonguapi.cn
idonguapi.comimc-oneaccess.cnimcapptest.cominanguapi.cn
inanguapi.comixiguapi.comkm6g.cnkm7g.cnkm8g.cnkm9g.cnkmcb-cn-east-3.cnkmcb-cn-north-4.cnkmop-cn-east-3.cnkmop-cn-north-4.cnlivehwc3.cnmodelarts-infer.cnmodelarts-infer.commyhuaweicloud-custom.cnmyhuaweicloud-custom.commyhuaweicloud-koodrive.cnmyhuaweicloud-koodrive.commyhuaweicloud-obs.cnmyhuaweicloud-obs.commyhuaweicloud.cn
+myhwcdn.cnmyhwcdn.commyhwcloudlive.com
myhwclouds.cnmyhwclouds.commyhwclouds.netpagescube.cn576nt.cn
pagescube.compowerapp.iokma1g.cn8gcdp.cncza84.cn7k2k1.cnivwi3.cnlu1da.cnvo6z2.cn3ili6.cnz95rr.cntzygd.cn9coof.cn26r9y.cnmle5p.cnacgab.cnka9bv.cnms2tg.cnx9exk.cn8n82b.cny43f6.cncdnhwchcg02.comcdnhwcurq03.comcdnhwczba04.comcdnhwclxw05.comcdnhwcupf06.comcdnhwcxcy07.comcdnhwcatq08.comcdnhwcztu09.comcdnhwcedi10.comcdnhwcoem01.comcdnhwcllh11.comcdnhwcjog12.comcdnhwcpsd13.comcdnhwcjbj05.cnaadcloud.comcdnhwcaoc115.cncdnhwcajk17.comcdnhwcchh18.comcdnhwcohm19.comcdnhwczjt20.comcdnhwcggk22.comcdnhwczth23.comcdnhwctxz24.comcdnhwcqir15.comcdnhwcyxb02.cncdnhwcywp03.cncdnhwclkl04.cnaadcloud.cncdnhwconz06.cncdnhwcgqa21.comcdnhwckbw08.cncdnhwcsjs09.cncdnhwcjkl10.cncdnhwctmz11.cncdnhwcrpp12.cncdnhwcpqh13.cncdnhwcxsi14.cncdnhwcfzp15.cncdnhwcgvs16.cncdnhwcrgg07.cncdnhwceft18.cncdnhwccvo19.cncdnhwcbvo20.cncdnhwcdkd21.cncdnhwcdvg22.cncdnhwclnh23.cncdnhwckfd24.cncdnhwczxh101.comcdnhwcbzj102.comcdnhwcjqv17.cncdnhwcljk104.comcdnhwclxu105.comcdnhwcbqs106.comcdnhwctnm107.comcdnhwcbni108.comcdnhwczks109.comcdnhwcick110.comcdnhwcead111.comcdnhwcjlg112.comcdnhwckon103.comcdnhwczmn114.comcdnhwcqgw115.comcdnhwckfz116.comcdnhwcqve117.comcdnhwcgnc118.comcdnhwcuim119.comcdnhwcjsb120.comcdnhwccmz121.comcdnhwcibv122.comcdnhwcprh113.comcdnhwcedt124.comcdnhwcofl101.cncdnhwclrd102.cncdnhwcurr103.cncdnhwczid104.cncdnhwcqvk105.cncdnhwczoy106.cncdnhwcuwd107.cncdnhwcogx108.cncdnhwcoph123.comcdnhwceod109.cncdnhwcpcw110.cncdnhwczic111.cncdnhwcozb112.cncdnhwcqrr114.cncdnhwcvix16.comcdnhwctyd116.cncdnhwcidu117.cncdnhwclsl119.cncdnhwcsux118.cncdnhwcbie120.cncdnhwcuxc121.cncdnhwcaip122.cncdnhwcwqz113.cncdnhwcojn124.cncdnhwcscc123.cno7mu8.cn59bob.cntc3bl.cnhiu58.cnkfomn.cnazkr2.cnvm45e.cnbuf35.cnuwtmy.cnfpxyo.cntm2a8.cnr8zc9.cn6ts7c.cn2gkjr.cnns95c.cntm7sg.cnle5vb.cn
huawei.com.cn cn-south-1.myhuaweicloud.commyhwclouds.com.cn!cn-north-11.myhuaweicloud.com cn-north-2.myhuaweicloud.com$ cn-northeast-1.myhuaweicloud.com cn-north-9.myhuaweicloud.com cn-north-6.myhuaweicloud.com$ cn-southwest-2.myhuaweicloud.comami-alliance.org.cn cn-north-3.myhuaweicloud.com cn-north-5.myhuaweicloud.com cn-south-2.myhuaweicloud.com cn-north-1.myhuaweicloud.comcn-east-5.myhuaweicloud.comcn-east-4.myhuaweicloud.comcn-east-3.myhuaweicloud.comcn-east-2.myhuaweicloud.com cn-south-4.myhuaweicloud.comhwclouds.org.cn cn-north-4.myhuaweicloud.com#.+\.cdnhwc([1-9]|10)\.(cn|com)$
+bisheng.cn
+cnbishengcompiler.cn
+cndevui.design
+cn gneec.com
+cngneec.com.cn
+cn
+gneec3.com
+cn
+gneec4.com
+cn
+gneec7.com
+cn
harmonyos.com
+cnhiascend.cn
+cnhiascend.com
+cn hiclc.com
+cnhikunpeng.cn
+cn
hikunpeng.com
+cnhikunpeng.com.cn
+cn
hikunpeng.net
+cn
hisilicon.com
+cnhisilicon.com.cn
+cnhuaweiapaas.com
+cnmindspore.cn
+cn owsgo.com
+cnteleows.com
+cnsaasops.tech
+cn huaweicloud-dns.net
+!cn huaweicloud-dns.org
+!cn&ae-ad-1.myhuaweicloud.com
+!cn)af-north-1.myhuaweicloud.com
+!cn)af-south-1.myhuaweicloud.com
+!cn- ap-southeast-1.myhuaweicloud.com
+!cn- ap-southeast-2.myhuaweicloud.com
+!cn- ap-southeast-3.myhuaweicloud.com
+!cn- ap-southeast-4.myhuaweicloud.com
+!cn(eu-west-0.myhuaweicloud.com
+!cn*eu-west-101.myhuaweicloud.com
+!cn)la-north-2.myhuaweicloud.com
+!cn)la-south-2.myhuaweicloud.com
+!cn(me-east-1.myhuaweicloud.com
+!cn/"my-kualalumpur-1.myhuaweicloud.com
+!cn*na-mexico-1.myhuaweicloud.com
+!cn*ru-moscow-1.myhuaweicloud.com
+!cn- ru-northwest-2.myhuaweicloud.com
+!cn*sa-brazil-1.myhuaweicloud.com
+!cn(tr-west-1.myhuaweicloud.com
+!cn
+P
+KUAISHOU-ADS log-sdk.gifshow.com
+adswlog.kuaishou.com
+ads
+
+ MANHUAGUI
manhuagui.com
+-
+AIXCODERaixcoder.comnnthink.com
+
+CATEGORY-REMOTE-CONTROL,(client-teamviewer-com.trafficmanager.net%!teamviewer.com.cdn.cloudflare.netanydesk.com
nomachine.comrustdesk.comteamviewer.com
teamviewer.us
teamviewer.cn
+cn
+
+DEMONOIDdemonoid.is
+#
+QT qt.ioqt-project.org
+
+REDDITreddit.map.fastly.netredd.it
+reddit.comredditblog.comreddithelp.com
redditinc.comredditmail.comredditmedia.comredditspace.comredditstatic.comredditstatus.comreddit.app.link
+
+UBIQUITIamplifi.comfrontrow.comubncloud.com
+ui.comuisp.comwifiman.comamplifi.com.cn
+cnfrontrow.com.cn
+cnubnt.com
+cnubnt.com.cn
+cn ui.com.cn
+cn
+uum.com.cn
+cnuwn.com
+cn
+>
+ ESPRESSIF
espressif.com
esp32.comesp8266.com
+$
+HUANGHUAGANGhuanghuagang.org
+Q
+LINAKESIlinakesi.comlinakesi.cn
lazycat.cloudheiyu.space
+B
+HASKELLhaskell.orghaskellstack.orgstackage.org
+&
+LIZHIlizhi.fmlizhifm.com
+U
+SIGNAL
+signal.art
+signal.orgsignalusers.orgwhispersystems.org
+
+ UMENG-ADSalog.umeng.com
+ads alog.umengcloud.com
+ads
+w.cnzz.com
+adsz.gds.cnzz.com
+ads
+
+
+ YOUKU-ADSactives.youku.com
+ads ad.api.3g.youku.com
+ads$ad.api.mobile.youku.com
+ads ad.mobile.youku.com
+ads(a-dxk.play.api.3g.youku.com
+ads
atm.youku.com
+ads#b.smartvideo.youku.com
+adsc.yes.youku.com
+adsdas.api.youku.com
+ads!das.mobile.youku.com
+ads!dev-push.m.youku.com
+adsdl.g.youku.com
+adsdmapp.youku.com
+adse.stat.ykimg.com
+ads#gamex.mobile.youku.com
+ads!guanggaoad.youku.com
+ads"huodong.vip.youku.com
+adshz.youku.com
+adsiyes.youku.com
+adsl.ykimg.com
+adslstat.youku.com
+ads mobilemsg.youku.com
+ads
msg.youku.com
+adsmyes.youku.com
+ads
p.l.youku.com
+adspl.youku.com
+ads#passport-log.youku.com
+adsp-log.ykimg.com
+adspush.m.youku.com
+ads
r.l.youku.com
+ads
s.p.youku.com
+adssdk.m.youku.com
+adsstat.youku.com
+ads$statis.api.3g.youku.com
+ads&store.tv.api.3g.youku.com
+ads&store.xl.api.3g.youku.com
+adstdrec.youku.com
+adstest.ott.youku.com
+ads
v.l.youku.com
+adsval.api.youku.com
+ads
wan.youku.com
+adsykatr.youku.com
+adsykrec.youku.com
+ads
+
+ADIDAS
adidas.ie
adidas.ch
adidas.de
adidas.dk
adidas.cz
+adidas.com
adidas.ru
adidas.pl
adidas.se
adidas.be
adidas.nl
adidas.hu
adidas.at
adidas.itadidas.co.in
adidas.com.tw
adidas.com.saadidas.co.uk
adidas.com.cn
+cn
+K
+ CLUBHOUSE
clubhouse.comclubhouseapi.comjoinclubhouse.com
+N
+CNBCcnbc.com
+cnbcfm.com
+nbcuni.comnbcudigitaladops.com
+(
+PLUTOTVpluto.tvplutotv.net
+&
+SETNsetn.comsettv.com.tw
+)
+THEBORINGCOMPANYboringcompany.com
+
+WEBEXwebex.cawebex.frwebex.eswebex.de
webex.comwebex.co.ukwebex.co.nzwebex.co.krwebex.com.auwebex.com.brwebex.com.hkwebex.com.mxwebex.co.jpwebex.co.itwebex.co.inwebex.com.cn
+cn
+
+CATEGORY-ADS-IRadivery.com
+adivery.irkaprila.com
najva.comsabavision.com
+tapsell.iryektanet.com
+
+CISCOcisco.evergage.comciscolivehls-i.akamaihd.net cisco
+mcisco.comapp-dynamics.comcciesecuritylabs.comccievoicelabs.com
ccna5.netcisco-returns.comcisco-warrantyfinder.com
cisco.com
+cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.comciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com
ciscolive.comcisconetspace.comcisconetspace.infocisconetspace.netcisconetapp.comciscopartnermarketing.comciscopowercube.comciscoprice.comciscoresearch.comciscosoftware.com
ciscospark.caciscospark.com
ciscospark.jpciscotaccc.comciscotr.com
ciscoturk.netciscovideo.comciscowebseminars.com
cloudlock.comcloupia.comcloupia.netconnect-in-canada.comcoreoptics.net cs.co
+devm2m.comdnaspaces.io
flipshare.comgpstheseries.cominlethd.cominternetofeverything.comioe.comkscisco.comm2m.comacademynetriders.comobsrvbl.com
metacloud.commindmeld.commultiplydiversity.commyciscobenefits.com
mysdn.com
+mysdn.info
mysdn.netnetacad.comnetacad.netobservable.netmediafiles-cisco.com
parstream.com
parstream.net
parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.comtandberg.com
+versly.comvideochampion.comvirtuata.comwballiance.com!whyiwantciscotelepresence.comwifi-mx.comyoutubecisco.comcciernslabs.com
webex.comappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org
+mearki.com
meraki-go.com
meraki.hkmerakigo.com
+tail-f.com
tailf.comwebex.cawebex.frwebex.eswebex.deappdynamics.co.ukwebex.co.ukwebex.co.nzwebex.co.krwebex.com.auwebex.com.brwebex.com.hkwebex.com.mxwebex.co.jpwebex.co.itwebex.co.incisco.cn
+cncisco.com.cn
+cnnetwork-auth.cn
+cnwebex.com.cn
+cn
+
+CTEXCEL
+ctexcel.ca
+!cnctexcel.com
+!cnctexcel.com.hk
+!cn
+ctexcel.fr
+!cn
+ctexcel.us
+!cn
+
+GETTYIMAGESgettyimages.iegettyimages.chgettyimages.degettyimages.cagettyimages.dkgettyimages.segettyimages.ptgettyimages.esgettyimages.comgettyimages.nogettyimages.nlgettyimages.itgettyimages.begettyimages.atgettyimages.ingettyimages.figettyimages.frgettyimages.hkgettyimages.aegettyimages.co.ukgettyimages.com.mxgettyimages.com.brgettyimages.com.augettyimages.co.nzgettyimages.co.jp
+
+MARVEL
+marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.comthemarvelexperiencetour.com
+
+
+PASKOOCHEHpaskoocheh.com
+Y
+DAZNdazn-api.comdazn.com
+dazndn.com
+indazn.com
indaznlab.com
+O
+DONGJIAOanmo.comdjdjapp.comdongjiao.ccdongjiaoapp.com
+
+GEOLOCATION-CNmanga.bilibili.comhospital.pku.edu.cnss.bjmu.edu.cnbbs.ztedevices.comwww.ztedevices.comp1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.comwww.libvideo.com0,hellofontpreview.oss-cn-beijing.aliyuncs.com-)hellowebfonts.oss-cn-beijing.aliyuncs.comp1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.comp3-novel.byteimg.comp6-novel.byteimg.com#geetest.datasink.sensorsdata.cnmoocs.unipus.cnopencourse.pku.edu.cn
study.163.comicbc tmall
+taobao
+alipayalibaba baidu citiccookicut.com
+uyunad.com
xiamenair.com sq.cc
+funcdn.com
leigod.cn
+52pojie.cnkafan.cnitsk.com
wuyou.net
+klpbbs.com
mcbbs.net
uiwow.com
anxia.com
116cd.net
116cd.com
+pcbeta.com
fofa.infoinfinitynewtab.com
+inftab.com
ip138.com
ipplus360.com423down.comghxi.com
+moulem.com
+fdcyun.commingyuanyun.com
+mypaas.com116cd.cnmyypark.commihuashi.comudesk.cnxedge.cc
ezpro.pro51togic.comitdog.cnwebmasterhome.cnguoxuedashi.comguoxuemi.commojidict.comwinos.meupe.netsuzuki-china.com
chugou360.comycrx360.com
jikeiot.cloud
+zyh365.com
+115img.com
+cma.cn
+nmc.cn
+cnr.cncyol.com
webterren.com
+zzdtec.com0123456789.com0379home.com
+055110.com
05sun.com0759job.com
100bt.com100offer.com
11467.com
+114chn.com
114piaowu.com
114shouji.com
+119you.com123juzi.com123juzi.net123u.com1637.com
16888.com16rd.com
17173.com178linux.com
17989.com
17cdn.com17house.com
18183.com188.com1905.com
19yxw.com
1nongjing.com
1ting.com1zhe.com21cn.com2265.com2288.org2345.com258.com263.net289.com2cto.com3000.com
+310win.com
+315che.com3234.com32r.com3322.org3387.com33lc.com3454.com3456.cc
+35.com3533.com360aiyi.com
+360doc.com
360jq.com360zhyx.com
+365azw.com
+365dmp.com
+37.com3733.com3839.com
+39.net3conline.com3d66.com
+3elife.net3h3.com3yx.com
40407.com500.com500d.me
+50bang.org
+51.com 51.la
+510you.com51credit.com
51cto.com51eshop.com
51gaifang.com51hejia.com51jingying.com51meishu.com
+51sole.com
51wendang.com
51yes.com5253.com
52hxw.com
+52miji.com52pk.com52z.com53kf.com
+55.com
+56.com5577.com
55bbs.com
58pic.com
5bite.com5fun.com5gzm.net5khouse.com5you.com66wz.com68h5.com
+6rooms.com714.com7230.com
+72byte.com
7down.com7k7k.com
7moor.com7po.com
+7x24cc.com
+7xdown.com
818ps.com8264.com
84399.com885.com
+900.la917.com91danji.com
95508.com9553.com962.net9718.com
99166.com998.com999d.com99danji.com9ht.com
+9xgame.com9xu.coma9vg.com
+aardio.com
acetaffy.club
+adxvip.com
+afzhan.com
agrantsem.com
aiemy.comaiketour.com
aiops.com
aipai.comairchangan.com
airguilin.comaisee.tvaiskycn.com
+aizhan.com
aldwx.comalittle-tea.com
+allyes.comanfensi.com
+anquan.org
+anruan.com
+aotrip.net
aoyou.comapk3.comapk8.comaplaybox.comappchina.com
+appinn.com
arpun.combabytree.combabytreeimg.com
baidufree.combaifendian.com
baihe.combaixing.combaixing.netbamenzhushou.combangongziyuan.combaofeng.combaoxianshichang.com
bearychat.combeihaidc.combeijing-lipin.combengbeng.com
benmi.com
berui.combestopview.com
biancheng.netbianews.combibaodao.com
bidchance.combiddingx.combihu.com
+bio360.net
bio4p.com
bio-equip.combiodiscover.combishijie.combitecoin.combiyehome.netbjcathay.combobo.com
bojianger.com
+bokecc.com
boosj.com
btgtravel.com
bthhotels.com
btime.comcabbagebox.com
caijingwu.com
+caiyun.comcang.comcankaoxiaoxi.comcardbaobao.com
+carnoc.com
cdn20.com
cecdc.comcecport.comcentanet.com
cerambath.org
+ch.comchachaba.comchangba.comchaojituzi.net
chashebao.comchazhengla.com
+che168.comchina-chair.comchina-nengyuan.com
china.comchinacache.comchinacache.netchinachugui.comchinadongchu.comchinafph.comchinakaoyan.comchinalawedu.comchinapay.comchinapp.netchinapubmed.net
chinasspp.comchinatranslation.net
chinaunix.netchinaweiyu.comchinawutong.comchinazns.comchongdiantou.com
+chouti.com
chuangxin.comchuansong.mechuansongme.com
+chushou.tvchuyu.me
city8.comcjol.comclouddn.comcloudxns.comcnanzhi.comcnblogs.com
+cnepub.com
cnlaw.netcnzz.comcocodiy.comcode666.com
+cofeed.com
+cofool.comcoindog.comcontentchina.com
cpppf.org
cr173.com
crsky.com
csbew.com
+csmjzs.com
csslcloud.net
+ctfile.comctiforum.comctoutiao.com
ctsbw.com
+cubead.com
cwxzx.com
+cyagen.com
cybtc.comcyts.comcztv.com
cztvcloud.com
dadajiasu.com
dadighost.comdaguzhe.comdajiabao.com
dajie.comdajieimg.com
dalongyun.comdangbei.comdanji100.com
+danji6.comdaocloud.iodaovoice.iodayukaoshi.comdazijia.com
+dcdkjx.com
dd373.com
ddooo.comdedecms.comdeepinos.orgdevelenv.com
+dginfo.comdgphospital.comdianchacha.comdiandian.comdiandianqi.comdianwannan.comdingxiang-inc.com
+diopic.netdiyiyou.comdj99.com
dockerone.com
+dockone.iodogedoge.com
+donews.com
+dongao.comdongguantoday.comdopa.com
+douxie.com
+downcc.comdownxia.com
+downyi.com
+dpfile.comdreams-travel.comdrivergenius.com
+dui.aiduiopen.com
duoduocdn.com
duokanbox.com
+duomai.comduoshuo.com
duote.comdxpmedia.com
+dxycdn.com
dyhjw.com
+dzdvip.comdzsc.comdzw3.com
dzwww.comeasesale.com
easiu.comeastday.comeastsoo.com
+eayyou.com
ebico.com
ebrun.com
ecjobhome.comeeyy.com
eflycloud.comelecfans.comemarbox.com
+emumax.com
enterdesk.comeoeandroid.com
+eolink.com
excelhome.netextfans.comf.cx
faloo.comfamulei.com
fanli.comfangxiaoer.comfanxian.comfastapi.net
+feihuo.com
feiniaomy.comfengkongcloud.comfengniao.comfengxian110.com
+fhldns.com
fimmu.comfinchina.comfixdown.com
fqjob.netfreebuf.comfugetech.comfuwj.comfxxz.com
+fzaqjy.comgame234.comgameabc.comgamemei.com
+gaodun.comgaoshouyou.comgaoxiaojob.com
+gdjdxy.comgdliontech.comgdrc.comgeilicdn.com
getui.com
+gezida.comgfan.com
+giocdn.comglobrand.comgm86.com
gmz88.comgobasearcher.comgold678.com
golue.comgongxiangcj.comgoosail.com
goufw.comgreenxiazai.com
growingio.com
gtags.net
guabu.comguaiguai.comguanaitong.comguanhaobio.comgucheng.com
guigu.org
guoxinmac.com
gupzs.comgushiwen.orgguzhangting.com
+gwdang.comgxairlines.com
+gxb.iogzwanju.comh5uc.comhack520.comhackhome.comhackinn.comhaishun.comhanboshi.com
handanjob.comhangjiayun.com
haolietou.com
haote.comhaoyouyinxiang.comhefei.cc
+heisha.net
hellobike.com
hello-inc.com
helpothers.cn
henha.comhenkuai.com
herostart.com
hiido.comhitv.comhiyd.comhktheone.comhn-cbec.com
+hnrcsc.comhntv.tv
hnyuyuhui.comhollycrm.comhomeinns.comhomekoo.comhongsanban.comhongyuanqh.com
+houdao.comhouyuantuan.comhteacher.nethuanqiu.comhuashengdaili.com
huatu.com
huize.com
hujia.orghunantv.comhuochepiao.comhuocheso.com
huxiu.comhxfy888.comhxsd.comiask.com
+ibaotu.comibuychem.comicaidao.com
ichangtou.com
idongdong.com
igao7.com
+iheima.comijiandao.com
+ikafan.comim2maker.com
im-cc.com
+imedao.comimgo.tv
imooc.com
indienova.com
infoq.cominfoqstatic.com
+ip-cdn.comipinyou.comiranshao.com
irs01.comishumei.com
it165.net
it168.com
it610.com
iteye.com
+itjuzi.com
itmop.com
iyiou.com
+izuche.com
+jandan.netjb51.comjia.comjiameng.com
jianbihua.comjianguoyun.comjianzhi8.comjiaodong.net
jiaoyimao.comjiasuhui.comjiasule.comjiathis.comjiayuan.comjiazhao.comjiemeng8.comjikexueyuan.comjinianbi.comjinrongren.net
jinse.com
jinti.comjiqizhixin.comjisuxia.com
jiuzhilan.comjj20.comjkbl.comjmstatic.comjob5588.com
+job910.com
jobjm.comjsbc.com
+jsrdgg.comjstv.com
jsyks.comjuefeng.com
+julive.com
jumei.com
juwan.com
juxia.com
jyimg.comk366.com
kaifubiao.com
kaixin001.comkameng98.com
+kanimg.com
kankanews.com
kantianqi.netkanzhun.comkaopu001.com
kejet.netkf5.com
+kimiss.comkingdee.com
+kiyuu.clubkkzj.com
+kongfz.com
+kouclo.com
+koudai.comkoudai8.comkq7.com
ksord.com
kuaaa.com
kuaidi100.comkuaihou.comkuaizhan.com
kuqin.com
+kuyiso.comlady8844.comlanhuapp.com
laomaotao.net
laomaotao.org
lascn.net
lawxp.comleangoo.comleanote.comleikeji.comleiphone.comleiting.comleju.comleturich.org
lianmishu.com
+liantu.com
lianzhuli.comliaoxuefeng.comliba.comlibaclub.comlieyunwang.com
lightonus.com
+likuso.comlinkvans.com
linsn.comlinuxidc.com
+liqucn.comliulanqi.net
liuxiaoer.comlive800.comliweijia.comlixinger.comlkkbrand.comlonghoo.net
+longre.comlongtugame.comlongzhu.com
lotpc.com
+loupan.com
+lu.com
lufax.comlufaxcdn.comlunwengo.netluyouqi.com
+lvmama.comlvsexitong.com
lxway.commaisanqi.com
+mamecn.com
manhuatai.com
manmankan.com
+mapbar.commayi.com
+mayihr.com
+mcbang.com
mdpda.commechina.orgmeifang.commeika360.com
meilishuo.commeimingteng.com
+meiqia.commeishichina.commeishij.netmengtuoshi.wangmgtv.commiaobolive.commiaozhen.com
+miercn.commijisou.commikecrm.comminhangshi.commiusi.comjia.cc
+mmbang.commmbang.info
+mofang.commofazhu.com
+mokahr.commoleecel.commoocollege.commop.commsanjia.com
+mscbsc.commukewang.com
+mumayi.com
+muomou.commuzhiwan.com
+mydown.com
mydrivers.com
myshow360.netmyyx618.commyzaker.com
naixuecha.comnetbian.com
+newasp.netnewbandeng.com
newyx.net
noknok.cnnowscore.com
nruan.comntalker.comnvsheng.com
nx-sc.com
nzbdw.comoadz.com
oeeee.com
offcn.comofficese.com
+oicq88.com
okooo.com
+ol-cdn.com
+ol-img.com
+oneapm.comonegreen.net
+oneyac.comonlinedown.netonlinesjtu.comonlylady.com
+opdown.com
ottcn.com
+oupeng.com
+p2peye.comp5w.netpaipaibang.com
paopaoche.netpc6.com
+pchome.net
pcpop.com
peccn.compgzs.compharmacodia.com
piaoliang.compingplusplus.compingwest.com
+pingxx.compintu360.com
pipaw.com
pipaw.netpptbest.com
+pubyun.com
qc188.comqcds.comqd8.comqd-metro.comqh24.comqiangbus.comqianjia.comqianlima.comqianzhan.comqiaobutang.comqichacha.com
+qie.tvqifeiye.comqijiayoudao.netqingdaochina.orgqingdaonews.comqingsongchou.comqiumibao.comqizuang.com
qqddc.comqqgexingqianming.comqqrizhi.comqqshuoshuo.com
+qschou.com
+qtmojo.com
+qudong.com
+qugame.com
qunar.comqunarzz.comqunjielong.comqyer.comrockyenglish.comrong360.comrtbasia.com
ruan8.com
+runoob.comrzrc114.com
saibo.com
sanguosha.com
+sanwen.netsast.fun
scdng.comscoregg.com
+sczsxx.comsdo.com
+sencdn.com
seniverse.comsenlinjimore.com
+sgamer.comshanbay.comshang360.com
+shangc.netshanghairc.comshangshi360.com
shangzhibo.tvshanshuihotel.comsharejs.com
shebiaotm.comshelter-china.comshelterdome.netshengdaosoft.comshenmayouxi.com
sheui.com
shijiexia.com
shixiseng.comshmetro.comshoujihuifu.comshouyoubus.com
shssp.orgshuidichou.comshuidihuzhu.comshumensy.comshuoshuokong.com
+shutcm.com
+simei8.comsimuwang.comsinesafe.com
sjwyx.com
+skimit.net
skycn.comsllssrq.com
+snimay.com
sobot.com
sofreight.comsoftwhy.com
+sojson.com
+somode.comsouqian.comsouthmoney.comsparkletour.comspringtour.comssports.comstarbaby.ccstarbaby.comsun0769.com
+sunrtb.comsupermap.comsupermapcloud.com
+sys321.comszfw.orgszhk.comszzfgjj.comt1y5.com
taihe.comtaihuoniao.comtangeche.comtanx.com
+tao123.com
+taoche.comte5.com
tenxcloud.comtianjimedia.comtianjin-air.comtianlailive.com
+tianqi.comtietuku.com
+tiexue.nettimedoo.comdraftstatic.comtitanar.comtjjt360.com
tmcdn.net
+tobosu.comtom.comtongdun.nettopthink.comtouqikan.com
+touzid.com
travelsky.com
trunktech.comtrustexporter.comtrustutn.org
tudou.comtudouui.comtuer123.comtuicool.com
+tuiwen.net
tujia.com
tuniu.comtutuapp.com
tuwan.comtuwanjun.com
txrjy.comu.tools
ucbug.com
+uggame.comuoko.comurselect.comurumqi-air.com
useso.comuuu9.comuzzf.com
v5875.comvalue500.comvamaker.comvdolady.comveryhuo.comveryzhun.com
vic18.comvideojj.comvip.com
vobao.com
+vpgame.comwangyangyang.vipwannianli8.comwanplus.com
wanwushuo.com
wanyiwang.com
wanyx.com
+wdjimg.comwdzj.com
weand.comweicaifu.comweidian.comweilaicaijing.comweiphone.netweixing.comweiyangx.comwelltrend-edu.comwenjuan.comwhlovehome.com
wicresoft.com
+win007.comwin8.netwindows10zj.comwindows7en.com
windowszj.comwinegame.netwinwin7.comwishdown.com
wmzhe.comwnhuifu.com
wodingche.com
womai.comwondercv.comwonnder.com
+wooyun.orgworktile.comwoyaogexing.com
woyoo.com
wqiis.comwrating.com
wtown.com
wumii.com
+wuming.comwuximediaglobal.com
wywyx.comxafc.com
xbiao.com
xdwan.com
+xfdown.comxiachufang.comxiaobaixitong.comxiaoe-tech.com
xiaogouh5.com
xiaoka.tv
xiaokaxiu.comxiaomiflash.comxiaomingtaiji.comxiaoxiongxitong.comxiaoyuxitong.com
xiayx.comxiazaiba.com
xingjiesj.comxinrenxinshi.comxinshipu.comxingtan001.comxitong8.comxitu.comxiu8.com
+xiucai.comxiziwang.netxmhouse.com
xnpic.com
xpgod.com
+xsa239.comxuanchuanyi.com
xue51.comxuekanba.comxuexicha.comxundupdf.comxywy.com
+xzking.comyahui.cc
+yaolan.com
yaoyl.com
yaozh.com
+ycgame.com
+yeepay.com
yesky.comyh31.com
yigao.comyigoonet.com
yihedoors.comyikaochacha.comyikexue.comyingjia360.comyinhang123.net
yinyuetai.comyinzhaowang.com
+yiqifa.com
+yiqifa.orgyisu.com
yitaifang.com
yiwan.comyixi.tvyizhibo.com
yjbys.comynhr.com
+yocajr.com
+youboy.comyoujiao.comyouke.coyoulian.funyoushang.comyouxiake.com
youxihezi.netyouxila.com
youxiniao.comyouxigt.com
youzu.comyoyojie.com
yoyou.com
ypppt.comyrz.name
+yslyhr.com
ysten.com
+yuewen.com
yunaq.comyunba.ioyundaex.comyundasys.com
+yundun.com
yunkanpan.comyunqishi.net
yunshipei.com
yunzhijia.com
yupoo.com
yuzua.com
yxbao.com
+yxdown.com
+yytcdn.comz28j.com
+zampda.netzampdsp.comzastatic.com
+zbjimg.comzczj.com
+zdfans.comzgjm.org
+zgjsks.com
zglxw.com
zgzcw.comzhanbuba.comzhangyoubao.com
zhanzhang.net
zhaodanji.comzhaokao.netzhaopin.comzhcw.com
+zhenai.com
zhibo8.cc
zhidx.comzhifang.com
+zhipin.comzhiziyun.comzhongkao.comzhuangjiba.comzhuanyewanjia.comzhuayoukong.comzhubajie.comzhugeapi.netzhugeio.com
zimuzu.io
zixiaomao.comzixuntop.com
zjstv.comzmengzhu.comzongheng.com
+zpb365.com
+zrblog.netzsxq.com
zuche.comzuchecdn.comzuhaowan.comzuidaima.comzuowen8.comzuowenwang.net
+fm3838.comlarsonlimited.comrunsheng.comvzuu.com
+zoom3g.com
+zoomyou.cn
ecombdapi.com
+huaban.com
dancf.comkujiale.comwss.zonehisensehitachi.commoseeker.com
+jsw118.comsxcxldjy.comshanxijianzhuzizhi.comjztvnews.com
vhengdata.comnanyuenews.comeducoder.nettokcoder.comtrustie.netcenturyenglish.comgotokeep.comkeepcdn.comflyme.cnmeizu.cn
meizu.com
mzres.com
+ehaier.com
haier.com
haier.nethaiersmarthomes.com
+maoyun.commaoyuncloud.cnmaoyuncloud.com3type.cn
wolai.com
+wol.tvwostatic.cnjisuanke.com
+acwing.comlingkou.xyzlingkou.comleetcode.cn
51nod.comleetcode-cn.com
hihocoder.com
+lingkou.cnkidsccshow.com
vijos.orgoi-wiki.comopenjudge.cnrqnoj.cn
+uoj.ac
+115cdn.netanmo.comdjdjapp.comdongjiao.ccdongjiaoapp.com
founderff.com
iztzq.comszse.cn
zlfund.cnajzq.comavicsec.com
ccnew.comcczq.comcczq.netlufunds.comcfzq.comcgws.comchinalions.com
+howbuy.comcicc.com
+ciccwm.comcindasc.comcjsc.com
cnhbstock.com
+fund123.cn
+5ifund.com
csfounder.com
ctsec.com
+zofund.com
dfham.com
+zhfund.com
ydamc.comxqfunds.comxf-fund.comdxzq.netubssdic.comtongtaiamc.com
swsmu.comfcsc.cnfzfinancing.com
+py-axa.comghsl.cnorient-fund.com
ocfund.cn
+nffund.commfcteda.comgrzq.comgsgh.cnshzq.comgtja.com
guodu.com
jtamc.com
jsfund.cnhazq.comhczq.com
+igwfmc.com
+hlzqgs.comhongtastock.com
+hsfund.comhongdefund.comhftfund.com
+swhysc.comhuajingsec.comhuajinsc.cn
huayingsc.com
+hffunds.cnhxzq.cngowinamc.com
gfund.comgalaxyasset.comjpmorganchina.comjyzq.cn
jzsec.comkysec.cnlczq.comlhzq.com
+ftfund.commorganstanleyhuaxin.commszq.comnesc.cn
+fsfund.comnomuraoi-sec.com
+shgsec.com
+shhxzq.comgszq.comsseinfo.com
htsec.comforesightfund.comfadfunds.comtfzq.com
tpyzq.comvanho.cn
west95582.com
+ctfund.comwlzq.cnwxzq.comxcsc.comxsdzq.cncryuantafund.comchanganfunds.comykzq.comytzq.comcfund108.comzszq.com
+ztfsec.com
+bosera.com
+99fund.com
+abc-ca.comavicfund.cn
bdfund.cn
+bobbns.com
+115cdn.com115.comsnodehome.cn
snodehome.com
+szbdyd.com
caiyunapp.comcaiyunai.com
yunfancdn.com
+yfscdn.net
yfp2p.net
yfdts.netyfcloud.com
yfcdn.net
+yfcalc.comyfcache.combootcdn.net
+bootcdn.cnyuanbei.bizshengyizhuanjia.com
+shengyi.ai
laoban100.comi2oo.cnzhuanzfx.com
+youdao.comyeah.netydstatic.com
+qiyukf.com
+netease.imnetease.comnetease-inc.com
nease.net
+lofter.com
kaola.comicourse163.org
+haowu.link166.net166.com
+163yun.com
163qiyukf.com163mail.com163industry.com163cn.tv163.com127.net127.com126.net126.link126.comle5vb.cntm7sg.cnns95c.cn2gkjr.cn6ts7c.cnr8zc9.cntm2a8.cnheavenlywind.ccsteampp.netlsplayer.com
+yeshen.comledu.com
+wo1wan.com3dmgame.com
bilicomic.combilicomics.com
+acg.tvacgvideo.comanimetamashi.cnanimetamashi.com
+anitama.cnanitama.net
+b23.tv
bigfun.cnbigfunapp.cn
bili22.cnbili2233.cn
bili23.cn
bili33.cnbiliapi.combiliapi.netbilibili.ccbilibili.cnbilibili.combilibili.netbilibilipay.cnbilibilipay.combilicdn1.combilicdn2.combilicdn3.combilicdn4.combilicdn5.com
+biligo.combiliimg.combilivideo.cn
bilivideo.com
bilivideo.net
hdslb.com
hdslb.orgim9.commaoercdn.com
+mincdn.comyo9.comtiancity.comtiancitycdn.com
+gcores.comku6.com
+ku6cdn.com
+ku6img.comximalaya.com
xmcdn.comu17.comu17i.comu17t.comgifshow.com
+inkwai.comksapisrv.comkuaishou.com
+kwaizt.comkuaishouzt.com
+kwimgs.com
+yximgs.comacfun.cnaixifan.com
+acplay.netdandanplay.comciweimao.comhbooker.comkuangxiangit.combiji.com
+ddmogo.com
+igetget.cnigetget.comluojilab.com
mogoo.com
+sao.cnsaolife.com
douyu.comdouyu.tvdouyucdn.cndouyucdn2.cn
douyuscdn.comdouyutv.comgitv.cngitv.tv 71.am
iqiyi.comiqiyipic.com
+pps.tv
+ppsimg.comqiyi.comqiyipic.com
+qy.net
+71edge.com
+le.comlecloud.com
+lemall.comletv.comletvcdn.comletvimg.com
+ali213.netgamersky.commiaopai.com
muwai.com
tgbus.com
+ro.com xd.cn
+xd.com
xdcdn.netxindong.com
+tapimg.com
+tapimg.net
taptap.cn
+taptap.com
taptap.iotaptapdada.com
+vgtime.comdmzj.comhuya.commsstatic.com
jjwxc.net
pplive.cn
+pplive.compptv.comqingting.fmqtfm.cn
sfacg.comcowlevel.net
cdncl.netkkmh.comkuaikanmanhua.com
kgimg.com
kugou.comlizhi.fmlizhifm.commfuns.cn
zhanqi.tv3304399.com3304399.net3839apk.com3839app.com3839app.net3839img.com3839pay.com3839pic.com
+3839vc.com
3839video.com4399.cn4399.com4399.net4399api.com4399api.net
4399biule.com4399dmw.com
+4399er.com4399hhh.com4399inc.com4399mail.com
+4399pk.com
4399sj.cn
+4399sj.com4399swf.com
4399wanju.com4399youpai.com
4399youxi.com4399yyy.com5054399.com5054399.net
71acg.com
71acg.netappeeres.combx1k.comedu4399.com
funnycore.comguoping123.com
i3839.com
ihykb.comimg4399.commail4399.com
+me4399.com
+my4399.com
mysiteres.com
nzsiteres.com
qq163.com
qq163.netwanwan4399.com
+we4399.comwebgame163.com
youba.com
+yxhhdl.comdtstatic.comduitang.com
+61.com
+taomee.com
+kumiao.com
youku.com
ykimg.com
+mmstat.comsoku.com
+cibntv.net
fuwai.compkuh6.cn
+yctdyy.com
+smuszh.comfpxyo.cnfoundertype.comnubia.cn
nubia.comredmagic.comztemall.com
ztems.comuwtmy.cn
+189.cnchinatelecom-h.com
+chntel.combuf35.cnroborock.com
frontwize.com
qingcache.com
qingcloud.comqingstor.com
routewize.com
+yunify.com
saraba1st.com
+narwal.comnarwaltech.comhf-aw.cn
hf-aw.comhuafeng-accuweather.cn
huafengaw.com
weathercn.com
diiing.cndingdachuxing.comdingdatech.comjintdev.comxiangbababus.com
+aitcfw.com
+aizgtc.com
hangzhouyq.cnhangzhouyq.com
+zgxytc.com
zgzsa.comzhonshian.cn
zhonshian.com
zjzsa.comvm45e.cn
51job.com51jobcdn.comyingjiesheng.comyingjiesheng.netazkr2.cn
doc88.com
docin.com
+douding.cn
4paradigm.comoray.comoray.net
+orayer.comorayimg.comsunlogin.net
+todesk.comtower.imshimo.im
yuque.com
+allflow.cn
flowus.cnwamawama.com
+wiwide.com
+picself.cndandanvoice.com
dandan818.com
+sinaimg.cn
+douban.com
douban.fmdoubanio.com
gracg.comprocg.cn
sinajs.cnsina.cn
+sinajs.comsina.com
97973.comsina.netvideoself.cnsinaedge.comt.cnsinaimg.comxhaiwai.com
+bcyimg.com
tieba.comsinaapp.com
wbimg.comwbimg.cnwcdn.cnweibo.cn
weibo.comweibocdn.combcy.net
zhimg.com
+xhscdn.com
+xhscdn.netxiaohongshu.com
+yy.comyystatic.com
+duowan.comdwstatic.com
zhihu.comkfomn.cnhiu58.cntc3bl.cn59bob.cnsogoucdndl.comyidianliulan.cn
+ggowan.com
+go2map.com
pinyin.cn
+qd.inkbinglianhuajianzhan.com
+sgtmos.comsgyeyou.comsgyouxi.comsogo.comsogou.cn
sogou.com
sogou.netyuweikuijianzhan.comggoplay.com sg.cnsogouimecdn.com
sogou-inc.comsogou-op.orgsoso.comyidianliulan.comsososnap.comteemo.cnwannianqingjianzhan.comxiangrikuijianzhan.comxiangrikuisite.com
xinyan.cnyeyousg.comsogoucdn.como7mu8.cncdnhwcscc123.cnsichuanair.comccb.com
+ccbcos.combosc.cnunionpayintl.comunionpayintl.cnunionpaysecure.comunionpay.netunionpay.comcup62.cnchinaunionpay.netpsbc.com
+ccbfund.cn
whccb.comkcbebank.comshrbank.com
mybank.cn
+ms-bank.cn
+webank.com
webankcdn.netcsxbank.com
fbank.com
+xwbank.comzgcbank.comyillionbank.com
+z-bank.com
95516.netwegobank.cnsuningbank.com
+kshbank.cnxa-bank.com
newupbank.com
+ymbank.comwxsbank.com
bocgi.combocifunds.cn
+boc.cnbocfullertonbank.combocamchina.combocaviation.com
boccfc.cc
boccfc.cnbankofchina.combocgins.com
bocichina.combocichina.cn
bocim.combank-of-china.com
bocifunds.com
bocigroup.com
95516.comicbcstandard.comicbcstandardbank.comccbfutures.comccbfund.com
ccbxt.comabchina.comicbcstandardresources.comchinaunionpay.com
+ccb.cn
ccbfutures.cnccbleasing.comicbcstandardsecurities.com
95588.comicbcina.combankcomm.comtest-cignacmb.com
8008205555.cn8008205555.comcignacmb-ipmi.comcignacmb.comcignacmbamc.comcmb-leasing.comcmbchina.bizcmbchina.cncmbchina.com
cmbimg.cn
+cmbimg.comcmbt.cn
+cmbuat.com
cmburl.cncmf.bizcmf.ltdcmfchina.com
+cmfunds.cncdnhwcojn124.cncdnhwcwqz113.cncdnhwcaip122.cncdnhwcuxc121.cncdnhwcbie120.cncdnhwcsux118.cncdnhwclsl119.cncdnhwcidu117.cncdnhwctyd116.cncdnhwcvix16.comcdnhwcqrr114.cncdnhwcozb112.cncdnhwczic111.cncdnhwcpcw110.cncdnhwceod109.cncdnhwcoph123.comcdnhwcogx108.cncdnhwcuwd107.cncdnhwczoy106.cncdnhwcqvk105.cncdnhwczid104.cncdnhwcurr103.cncdnhwclrd102.cncdnhwcofl101.cncdnhwcedt124.comcdnhwcprh113.comcdnhwcibv122.comcdnhwccmz121.comcdnhwcjsb120.comdangdang.comddimg.cnguanggaotongapp.cnjutongbao.online
jutongbao.top
manmanbuy.comgree.cngree.comgreeyun.comkinghomechina.com
+zhlyen.comcdnhwcuim119.comcdnhwcgnc118.com
hupun.com
+newniu.comwanliniu.comcdnhwcqve117.comcdnhwckfz116.com
+ihuman.com
+hongen.com
juejin.cn
juejin.imxitu.io
dengguobi.comhouyicaiji.comjinglingbiaozhu.comoschina.net
gitee.comgitee.io
openkylin.topubuntukylin.combaltamatica.comgitcode.com
+gitchat.cncsdn.netkaifayun.com
+csdnimg.cncsto.comcsdn.com
+gitbook.cn
+datasea.cn
codechina.netgitcode.netmysxl.cn
+sxl.cn
sxlcdn.cn
openmidas.com
qq.designqqgamedesign.comtencent-cloud.cntencent-cloud.comtencent.designtencentcloud.comtjstats.comwegamedeveloper.comweixinbridge.comxueyuanjun.com
coding.me
+coding.net
pgyer.com
+tracup.comfrontjs.com
+asktug.com
+pingcap.cnpingcap.comtidb.aitidb.net
tidbcloud.comtikv.orgjinrishici.comruby-china.orgrubyconfchina.org
+tipdim.orgblogjava.netcnitblog.comcnweblog.comcppblog.com
phpweblog.net
teachblog.net
deepin.cn
+deepin.com
deepin.io
+deepin.orgchinauos.com
uniontech.com
+goproxy.cn
+goproxy.iosegmentfault.com
sifou.comaixcoder.comnnthink.com
apifox.cn
+apifox.com
+apipost.cnapipost.netcdnhwcqgw115.comcdnhwczmn114.comcdnhwckon103.comc-t.workcowtransfer.comnewcoder.comnowcoder.comnowcoder.netnowcoder.org10086.cn139.comchinamobile.comchinamobileltd.com
migucloud.commigu.cn
+cmvideo.cn
miguvideo.comandfx.cn
andfx.net
+cmicrwx.cncmpassport.comfetion-portal.com
fetionpic.commmarket.commmarket6.com
irsnp.commdcdn.cnmidea.cn
midea.commideaepayuat.com
msmartlife.cnmsmartlife.comsmartmidea.netcdnhwcjlg112.comhainanairlines.comhnacargo.com
hnair.com10044.cnlanzouf.comlanzouq.com
feimaoyun.comwoozooo.comlanzoug.com
+weiyun.comlanzouy.com
+123pan.comaliyundrive.comlanzoux.combaidupan.comilanzou.comlanosso.com
+lanzou.comlanzoub.comlanzouc.comlanzoue.com
+yunpan.com
+lanzov.comlanzoum.comlanzoui.comlanzouj.comlanzouk.comlanzoul.comlanzouh.comlanzouo.comlanzoup.comlanzouw.comlanzous.comlanzout.comlanzouu.comlanzouv.comcdnhwcead111.comcdnhwcick110.comcdnhwczks109.comcdnhwcbni108.comcdnhwctnm107.comdji.comdji.net
+djicdn.com
+djiops.comdjiservice.orgskypixel.comkechuang.orgjinshuju.netjinshujucdn.com
doservice.com
+ele.me
+ele.toeleme.cneleme.ioelemecdn.cnelemecdn.com
elenet.me40017.cn
+17u.cn17u.net17usoft.com17usoft.net
elong.comelongstatic.com
+ly.com
lagou.comlgstatic.com
polyv.netvideocc.net8btc.combystack.com
chainnode.commatpool.commatpool.net 18.cn
dfcfw.com
eastmoney.comeastmoneyfutures.comcdnhwcbqs106.comcdnhwclxu105.comcdnhwcljk104.comc-ctrip.comcolinker.comctrip.cn
ctrip.comctripbiz.com
ctripteam.com
doticloud.comeasytrip.comhhtravel.com
izuchebao.com
lvtds.com
shuntu.cn
+skysea.com
suanya.cn
+suanya.com
+tieyou.com
+toptown.cntoursbms.com
+vipdlt.com
wenxin-ge.com
sbsjk.comancientbooks.cn
apabi.combjinfobank.com
blyun.comchinabooktrading.com
+chndoi.org
+cnbksy.comcnki.net
cspro.org
+noi.cncnsciedu.com
ibcet.org
medicexam.net
+umajor.netvipexam.orgcnthinkers.com
cqvip.comtongxianghuicn.comxuexi365.netxxtmail.com
duxiu.comer07.com
ersjk.com
twscholar.com
+gtarsc.comhtcases.com
hwshu.com
hytung.cnincopat.com
+lawyee.org
neohytung.comnmrdata.comnssd.cn
+16q.cn
+pkulaw.com
+rdfybk.com
+resset.comsciencechina.cn
sslibrary.com
tokyotrial.cn
+crggcn.comairitilibrary.cn
+wf.pub
51ccd.comuonline-sh.net
+yiigle.comuonline-sh.comsuperlib.netsuperlib.comxuexi365.com
+zaifan.comaichaoxing.comchaoxing.ccchaoxing.com
chaoxingv.com
hongbo100.com
lnlib.netmndqlib.net
+mti100.comnihaoafrica.orgnihaorwanda.cn
+sslawy.comzhihang100.com
5read.com
+cxbiji.com
+ssvideo.cnssreader.cn
ylike.netcdnhwcjqv17.cncdnhwcbzj102.comcdnhwczxh101.comcdnhwckfd24.cncdnhwclnh23.cncdnhwcdvg22.cncdnhwcdkd21.cncdnhwcbvo20.cncdnhwccvo19.cncdnhwceft18.cncdnhwcrgg07.cncdnhwcgvs16.cncdnhwcfzp15.cncdnhwcxsi14.cncdnhwcpqh13.cncdnhwcrpp12.cncdnhwctmz11.cn
feidee.cn
+feidee.com
+feidee.netssjlicai.comsui.com
smzdm.comsmzdmimg.com
+zdmimg.comzhidemai.comerji.net
+chinaz.com
+chinaz.net
+liepin.com
+lietou.comlietou-static.comdidi.cn
didialift.comdidichuxing.comdidistatic.com
+udache.comxiaojukeji.comcdnhwcjkl10.cn
+mi-img.com
+mi.com
mifile.cn
+mijia.techmiui.com
+miwifi.com
xiaomi.cn
+xiaomi.com
+xiaomi.netxiaomiev.comxiaomimobile.comxiaomixiaoai.comxiaomiyoupin.com
+saxyit.com
+fspcdn.com
+fun.tvfunshion.comfunshion.netibidian.comjvcsmart.cncdnhwcsjs09.cn
baijiayun.com
guokr.comhellofont.cnhellowebfont.comcdnhwckbw08.cncdnhwcgqa21.comvaptcha.comvaptcha.netiflytek.com
xunfei.cn
+ets100.com
+zhixue.comchangyan.com
xunfeixxj.comsinopec-usa.comsinopec.comsinopecgroup.comsinopecsales.comcdnhwconz06.cn
+ziroom.comziroomapartment.com
+nga.cn178.com
+ngabbs.comngacn.ccmob.com
+dutils.com
accuratead.cn
10010.com114menhu.comchinaunicom.commychinaunicom.com wo.cnwo116114.comaadcloud.cncdnhwclkl04.cncdnhwcywp03.cn
51cdn.com
8686c.com
cdn30.orgchinanetcenter.com
lxdns.com
+lxdns.info
lxdns.orgourdvsss.comspeedws.infospeedws.org
+wangsu.com
+wscdns.comwscdns.info
+wscdns.orgagora.io
+agoraio.cnagoralab.coyinxiang.comzdns.cn
zdnscloud.bizzdnscloud.cn
zdnscloud.comzdnscloud.info
zdnscloud.netcdnhwcyxb02.cncdnhwcqir15.comcdnhwctxz24.comcdnhwczth23.comcdnhwcggk22.comcdnhwczjt20.comcdnhwcohm19.comcdnhwcchh18.com3songshu.comhaidilao.comlkcoffee.comluckincoffeecdn.comyyds.co517lppz.comlppz.comlppzimg.com
+heytea.com
aicdn.comupai.comupaiyun.com
upcdn.net
upyun.com
oncdp.comcnsuning.com
+suning.comsuningcloud.comsuningestate.comsuningholdings.com
hecdn.net
heweather.netqweather.comqweather.nettoutiaocloud.com
wtturl.cnactivity01.comactivity02.comactivity03.comactivity04.comactivity05.comactivitybyte.comactivity-dy.comactivity-wbsj.com
+aihst8.comali-api-test.netali-gtm-01.netali-gtm-pressure.comali-restore.netamemv.cn
amemv.com
amemv.netarco.designawemeughun.comawemeuglang.comawemeugsoul.comawemeugwave.combaikevod.combdactivity.com
+bdgslb.com
bdispatch.com
bdispatch.netbdns-api-test.netbdns-boe.combdns-boe.netbdns-gtm-01.netbdns-gtm-pressure.combdns-restore.net
bdns-test.com
bdns-test.net
bdppe.netbdsagslb.combdsagslbtest.combdxigualive.combdxiguavod.combdzjdsagslb.combetaband.net
betadance.netbetastar.cnbfcdnbf.combfcdnrd.combfcdnsc.com
boxdouyin.com
+bvfcdn.combx0byte.combyte000.combyte008.com
+byte00.com
+byte00.netbyte7bw.net
+byteac.combyteacct.combyteacctimg.combyteactivity11.combyteactivity12.combyteactivity13.combyteactivity14.combyteactivity15.combyteactivity16.combyteactivity.combyteadverts.combyteapi.com
+bytecdn.cnbytecdn.combytecdn.net
bytecdntp.combytecimg.combytedanceapi.combytedance-boe.netbytedance.cn
bytedance.com
bytedance.net
bytedance.orgbytedapm.combytedcdn.combyted-dast.com
byted-edu.combytedeliver.combytedgames.combytedns1.combytedns2.combytedns3.combytedns4.combytedns5.combytedns6.combytedns7.combytedns.combytednsdoc.combytedns.net
byted.orgbytedsocial.combyted-static.combyted-ug.com
byte-edge.combyte-edgeworker.combytefae.combytefast.netbytefcdn.combytefcdnrd.com
bytegecko.combytegeckoext.com
bytegoofy.combytegqpo.netbytegrowth.com
byte-gslb.combytegslb.combytehwm.combyteics.combyteics.netbyteimgc.combyteimg.combyteintl.net
bytelb000.net
+bytelb.com
+bytelb.net
bytemaimg.combytemastatic.combytemedi.com
bytenewst.combyteorg.combyteorge.combyteq5k.combyteq8u.netbytescm.combytesslb.netbytetcc.com
bytetech.infobyte-test.cn
byte-test.com
byte-test.netbytetos.combytetraffic.netbytetstatic.combytetstatic.netbytevalk.combytevcloudvod.combytexservice.comcdnbuild.comcdnbuild.netcdndns1.comcdndns2.com
ceair.comdoubo03.com
douyinact.com
qhcdn.comvariflight.comtingyun.com
druid.vipduoshan.comfedlearner.netfeelgood.cngslbdns.comgslbdns.nethuaxiong.comhuoshancdn.comhuoshangroup.comhuoshanimg.comhuoshanlive.comhuoshanparty.comhuoshante8.comhuoshanvideo.cnhuoshanvideo.nethuoshanvod.comhuoshanxiaoshipin.cnhuoshanxiaoshipin.nethuoshanzhibo.cnhuoshanzhibo.nethypercachenet.comibdxigualive.comibdxiguavod.com
ibytedapm.com
+icphoto.cnidouyinliving.comidouyinpic.comidouyinstatic.comidouyinvod.com
iesdouyin.com
iesdouyin.net
ieshuodong.cnieshuodong.net
ihst8.comihuoshanimg.comihuoshanlive.comihuoshanstatic.comihuoshanvod.comiluckysf.netitmanager.clubitoutiaoliving.comjokecommunity.cnjokecommunity.comjokecommunity.net
jstti.com
+jtamac.com
kesong.cokolbuyer.cnlivecdnstatic.comlocal-ip.onlineluckysf.netmodernjs.cn
+myimis.com
ndcpp.comneihancommunity.cnneihancommunity.comneihancommunity.netnextvid.netneyetwatcher.comoortgslb.comopenbcs.com
openve.cnoriginalimg.comoriginalstatic.comoriginalvod.com
pacmantwo.comppkankan01.com
+pstatp.comqingfuwucdn.net
qishui.cn
+qishui.comqishuimusic.cnqualitycloud.topsamasty.comsearchstatic.comsearchtoutiaolive.comshidianguji.com
+sinflb.netsinf.net
sinf-test.net
+snssdk.comsupercachenet.comtekkenthree.com
tetrisone.comtiapi.cn
tiapi.net
+tlbapm.com
+toscdn.com
toutiao11.com
toutiao12.com
toutiao13.com
toutiao14.com
toutiao15.com
toutiaocdn.cntoutiaocdn.nettoutiaocloud.cntoutiaojisu.comtoutiaolite1.comtoutiaolite2.comtoutiaolite.comtoutiaoliving.comtoutiaopic.com
toutiaowap.cntoutiaowap.comtoutiaowap.nettr-test-ali.nettr-testboe.nettr-test.net
ttbyte.cn
+ttbyte.com
+ttbyte.net
+ttjisu.com
ttwebview.comugshare-img.com
vcloudapi.comvcloud-byte.comvestack-beta.comvestack-cicd.comvestack-preview.comvestack-sandbox.comvfcdnrd.comvolcanicengine.comvolcdns-test.comvolcdns-test.net
+voleai.comwoaihuoshan.com
+wohst8.comtoutiaocloud.netxiguaapp.cnxiguaapp.comxiguashipin.cnxiguashipin.net
xiguavideo.cnxiguavideo.net
xsgtvacct.comzijieapi.cnzijieapi.comzijieapi.netzijiecdn.cnzijiecdn.comzijiecdn.netzijiedj.comzijieimg.cnzijieimg.comzijieimg.netzijietiaodong.comzijieurl.cnzijieurl.comzijieurl.netzijiewap.cnzijiewap.comzijiewap.net
+zilrms.com
+ziyrta.com
zjbyte.cn
+zjbyte.com
+zjbyte.net
zjcdn.com
+zjfcdn.com
+zjgslb.comtoutiao.comtoutiaoapi.comtoutiaocdn.com
vemarsdev.com
99uri.comfeishu-pre.nettoutiaohao.net
toutiaoimg.cntoutiaoimg.comtoutiaoimg.nettoutiaopage.comtoutiaostatic.comtoutiaovod.com
+douyin.com
douyincdn.comdouyinliving.com
douyinpic.comdouyinstatic.com
douyinvod.comhuoshan.comhuoshanstatic.comhuoshanzhibo.com
+ixigua.comixiguavideo.comixgvideo.combdxiguaimg.combdxiguastatic.com
baike.com
feishu.cn
+feishu.net
feishucdn.com
feishupkg.com
+wukong.comwukongwenda.cnwukongwenda.comdcarapi.comdcarimg.comdcarlive.comdcarstatic.comdcarvod.com
+dcdapp.com
dongchedi.comdongchediapp.com
365yg.comgogokid.com
pipix.comqznovelvod.com
faceu.comulikecam.com
+rsproxy.cnbaseopendev.com
bytecloud.com
+byteoc.combytewebservice.com
+bytexns.cnbytexns.combytexns.net
bytexopen.com
meegobeta.comoceancloudapi.com
+okr.cnokr.comvscenevideo.comanycross.com
blmpb.combytedancehermestest.comfalconsending.com
+fei-shu.cn!feishu-3rd-party-services.comfeishu-boe.netfeishu-customer.cn
feishu-pre.cntoutiaohao.com
feishu-psc.cnfeishu-staging.cnfeishuapp-cdn.netfeishuapp.cn
feishuapp.comfeishudoc.cn
feishudoc.comfeishuhuiyi.cnfeishuhuiyi.comfeishuimg-boe.comfeishuimg-pre.com
feishuimg.comfeishukacdn.comfeishumeetings.cnfeishumeetings.comfeishuoffice.cnfeishuoffice.com feishuopenplatformrecord.comfeishustatus.cnfeishuvc.cnfeishuvc.comgetfeishu.cn
getfeishu.com
+getsays.cngetsays.com
lackvc.cnsecurityfeishu.cn
securityfs.cnstatusfeishu.cnlarkofficecdn.comthelarkcloud.comlarkofficeimg.com
larkcloud.com
larkcloud.net
+larkfn.comlarkmeetings.cnlarkmeetings.comlarkoffice.comstatuslarkoffice.comlarkofficeapp-boe.comlarkofficeapp-pre.comlarkofficeapp.comlarkofficeboe.comlark.cnlarkofficepkg.comlark-passport-qa-sg.netlarkofficepre.comlarkrooms.cn
larkrooms.comlarksuite-pre.com
larksuite.com
+larkvc.comlarksuiteimg.comlarksuitecdn.comlarksuiteimg-boe.comlarksuiteimg-pre.comqznovelstatic.comqznovelpic.comqznovel.comnovelfmvod.comnovelfmstatic.comnovelfmpic.comnovelfm.comaigc-cloud.combdegnine.com
+bplslb.com
bpltm.combyte-dns.combyte-dns.netbytehouse.cnbyteinspire.cnbyteinspire.combytevdn-boe.combytevdn.comcache4ever.comcache666.comcloudendpoint.cndouyincloud.netdouyincloud.run
dycloudbk.comdycloud.runemr-volces.com
+feilian.cniccvlog.comifeilian.cnifeilian.cominspirecloud.cninspirecloud.comisealsuite.comivolces.comkfcbest.com
kych5.commultilingual-volc.comqingfuwuapi.cnqingfuwucdn.comqingfuwu.cnqingfuwu.comslbauto.com
sms18.comtoutiaopanapi.comtoutiaopan.com
+ttgslb.com
ttgtm.comvecdnlb.comvecloudgame.comvedcdnlb.comvedsalb.comveefdev.comveew-alb-cn1.comveew-alb-cn2.comveew-alb-ts.com
+vegalb.com
+vegslb.com
vegtm.net
veicplive.comve-imcloud.com99uri.cnvemarsstatic.com
vemarsweb.comvertciot.com
vestack.cloudve-trafficroute.comve-trafficroute.netvolcadocean.comvolcadvc.comvolcalb.comvolcautovod.comvolcbiz.com
volcca.cn
+volcca.com
+volcca.netvolccdn1.comvolccdn2.com
+volccdn.cnvolccdn.comvolcddos001.comvolcddos.comvolcdem.comvolcdlspace.cn
+volcdn.comvolc-dns.comvolcdns.comvolc-dns.netvolc-dns.pubvolcdns.pubvolceapi.comvolceapplog.comvolcecr.comvolcecw.comvolc-embed.comvolcenginapi.comvolcenginealb.comvolcengineapi.com
volcengine.cnvolcengine.comvolcengine-dns.comvolcenginedns.comvolcengine-dns.netvolcenginedns.netvolcengine.netvolcenginepaas.com
+volces.comvolcfake.comvolcfcdnbyte.comvolcfcdn.comvolcfcdndvs.comvolcfcdnplus.comvolcfcdnrd.comvolcfcdnsc.comvolcfxgjrtm.com
volcgroup.comvolcgslb.comvolcgtm.comvolciad.com
volcimagex.cnvolcimagex.comvolcimagex.netvolcimagextest.comvolcmagicpage.com
volcmcdn1.com
volcmcdn2.com
volcmcdn3.com
volcmcdn4.comvolcmgs.comvolcmusecdn.comvolcocic.comvolcopjrtm.comvolcpartner.comvolcpartner.netvolcsiriusbd.comvolcsirius.comvolcspaceeduc.comvolctracer.com
volctrack.comvolctraffic.comvolctranscdn.com
volcvideo.comvolcvideos.comvolcvms.comvolcvod.comvolcwaf001.comvolcwaf.comwritingo-editor.comwritingo.net
ytxptd.cn
ytxptz.cnzebracdn.com
zjytxd.cn
zjytxp.cnzvip.cn
+muyewx.comactivity-zhendingtech.comchangdunovel.comfanqienovel.comfanqieopen.comfanqieopenpic.comfanqieopenstatic.comfanqieopenvod.com
fanqiesdk.comfanqiesdkpic.comfanqiesdkstatic.comfanqiesdkvod.comfqnovel.com
fqnovelim.comfqnovel-op.com
fqnovelop.comfqnovelpic.comfqnovelstatic.comfqnovelvod.comihaohaoxuexi.comcdnhwcajk17.comcdnhwcaoc115.cnaadcloud.comcdnhwcjbj05.cncdnhwcpsd13.comcdnhwcjog12.comcdnhwcllh11.comcdnhwcoem01.comcdnhwcedi10.combjyouth.netsqqnh.cn
sqqnh.orgcdnhwcztu09.comluckyair.netchinaamc.com
citicbank.comciticcapital.comciticiam.comciticifh.comciticsf.comclsa.com
+csc108.com
+ecitic.comcdnhwcatq08.comcdnhwcxcy07.com
+apimkt.net
cdndo.comclk1.cnclk1.topecloud-gdu.com
fshark.cnglobalrdp.cnglobalssh.cn
iprdp.net
ipssh.netme1.ltdslk1.net
u-cdn.net
ucgslb.cn
+ucgslb.comucgslb.info
+ucgslb.net
+ucgslb.topucloud-edm.com
ucloud.cn
ucloud365.comucloudadmin.com
ucloudapi.com
ucloudgda.comucloudnaming.cnucloudnaming.comucloudnaming.infoucloudnaming.net
ucloudoss.comucloudstack.cnucloudstack.comucloudstack.netucloudstor.comucloudufile.comucnaming.cnucnaming.com
ucnaming.infoucnaming.net
uewaf.comufileos.comugslb.cn
ugslb.com
+ugslb.info
ugslb.net
ugslb.top
+ugslb2.net
uhasadmin.com
+unaming.cnunaming.infounaming.netuslk.netuucl.vipcdnhwcupf06.comcdnhwclxw05.comchiphell.comchinaso.com
+pg0.cngeetest.com
+renren.comrenren-inc.com
tendcloud.comtalkingdata.comtalkinggame.com
+cpatrk.netfastcdn.comacadn.cnbbbcdns.com
dlgslb.cn
+dlgslb.net
dwion.com
acadn.com
+tlgslb.comglobalcdn.cn
+flxdns.com
flxdns.cnmcadn.cn
tlgslb.cncdnhwczba04.compkoplink.com
+youzan.comyzcdn.cn
youzanyun.com
+leigod.com
tmjiasuqi.com
+xunyou.combohejiasuqi.comcdnhwcurq03.comcdnhwchcg02.comnattest-china.commobmore.com
umeng.comumengcloud.com
umsns.comumtrack.comdouyinfe.comwhalecloud.com
+pddpic.com
pinduoduo.com
pinduoduo.net
yangkeduo.comyudou.cnyushiyan.netxuetangx.com
+x-cloud.cckuaiduizuoye.com
liulishuo.com
+llsapp.com
+llscdn.com
llsserver.com
baicizhan.com
baicizhan.org
+bczcdn.combczeducation.cnzhan.comburningvocabulary.cnburningvocabulary.comdgjy.net
91yunxiao.com
aiyunxiao.com
haofenshu.comiyunxiao.comyunxiao.comkeboyunxiao.com
ketangpai.com
pigai.orgweilaiyunxiao.com
+magedu.com
oldboyedu.com
eduei.com
+edu.cnchinesemooc.org
+cnmooc.orgicourses.cnmooc.cnopenlearning.compmphmooc.com
+koocdn.comkoolearn.comkoopass.com
baydn.com
zhihuishu.com
+17zuoye.cn17zuoye.com17zuoye.netapplysquare.comapplysquare.net
+cctalk.com
hjapi.com
hjfile.cnhujiang.com
yeshj.comspeiyou.com
+xesimg.comxueersi.com
banmaaike.comxiaoyuankousuan.comybccode.com
yuanfudao.com
yuansouti.comyuantiku.comrainclassroom.comyuketang.cny43f6.cn
+antutu.commafengwo.cnmafengwo.commafengwo.netoppo.cnheytapcs.comallawntech.com
oppo.mobioppo.comheytapdownload.comheytapimage.comheytapmobi.com
+myoppo.comrealmemobile.comfinzfin.comcoloros.com
+heytap.comoppodigital.com
oppoer.meoppomobile.comoppopay.comopposhop.cn
+realme.com
realmebbs.com8n82b.cn
jindidata.comtianyancha.comx315.comqcc.comqichamao.com
qixin.comqyyjt.cnx9exk.cnms2tg.cnairchinacargo.comka9bv.cn
+hacpai.com
ld246.com
ldmnq.comjbcz.tvjibencaozuo.comacgab.cn
feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.comsf-saas.comsfcar.hksffix.cnsfgy.orgmle5p.cnfgo.wiki
jikipedia.com
+mbalib.comqiuwen.wikisec-wiki.comshidianbaike.comhuijistatic.com
huijiwiki.commoegirl.orgmcmod.cn26r9y.cnkimg.cnkingsoft.comksmobile.com
+ks-cdn.comks-cdn1.com
ksyun.comksyuncdn.com
ksyungslb.comseasungames.comxishanju.comxoyo.comxoyocdn.comcbjq.comtestplus.cn
+wps.cnwps.com
wpscdn.cn
+wpscdn.com
+kscord.com
51dzt.com
iciba.com
docer.comkdocs.cnwpsmail.netpapocket.com
wpspdf.cncmcm.comcmcmcdn.com
liebao.cnduba.comduba.netijinshan.comlenovogame.comthinkprinter.cn
+lenovo.netileapcloud.comlenovocloudos.com
lenovo.cn
+lenovo.comlenovoeservice.com
lxzjjt.cn
+zxsales.cnthinkprinter.netlenovomm.cn
+lxzjjt.comthinkcloudlab.comthinkpad.comlenovoprinter.netlenovoprinter.comblurdev.comchainedbox.com
fm365.com
+idea123.cnlenovoimage.comjuhuiwan.comlenovomm.comjuhuiwan.netlenauth.comcftsupport.com
+baiying.cnlenovoimage.cn
+lx.pub
+lx.runsurepush.cn
+zui.cnzui.com
+zuk.cnzuk.comiprintworks.cn
+dayin8.com
lenovocust.cnlenovomobile.comcunchuhulian-ln.cnlenovonetapp.com9coof.cntzygd.cnz95rr.cn3ili6.cnvo6z2.cnlu1da.cnivwi3.cn7k2k1.cncza84.cn8gcdp.cnkma1g.cnpowerapp.io
+360.cn360.com360.net
+360-jr.com360chou.com360daikuan.com360huzhubao.com
+360jie.com360jinrong.net
+360kan.com360kuai.com
360os.com360panyun.cn360qhcdn.com360safe.com
360shouji.com
360taojin.com360totalsecurity.com360tpcdn.com360tres.com360webcache.com360zqaq.comanquanke.comappjiagu.combaomitu.com
haoso.com
+haosou.com
+haosou.neti360mall.comludashi.comnicaifu.com
nzwgs.com
douyinact.net
qhimg.comqhimgs0.comqhimgs1.comqhimgs2.comqhimgs3.comqhimgs4.comqhimgs5.comqhimgs6.com
qhmsg.com
qhres.com
+qhres2.comqhstatic.com
qihoo.com
qihoo.net
+qihuapi.cnqihucdn.comqiku.comqikucdn.com
+so.comsou.comurlqh.cnxiaoluyouxuan.comxiaoluzhidian.comxjietiao.com
+youhua.com
yunpan.cn75.team
+75team.com
pagescube.comhuangyuhui.net114blog.com
mryys.commryys.cn4thworkshop.com4thworkshop.cn
+sojump.com
+wjx.cnwjx.comwjx.topcoolapk.comcoolapkmarket.comcoolapkmarket.net
+chn.cn
ahitv.com
cqccn.comsc96655.com
isxtv.comsdgdwljt.com576nt.cnpagescube.cnanjukestatic.com
ganji.com5858.com
+58.com
58antenna.comganjistatic1.com
58che.com58control.cn
+58corp.com
58dns.org
58lovepet.com
58uxd.com58v5.cn58xinghuo.cn
58xinghuo.com58xueche.com
+anjuke.com58antenna.cnchinahr.com
+daojia.com
chrstatic.comdiandao.orgfang.com
sofun.com
soufunimg.com
jxedt.com
jxksw.net
+roomeet.cnxinchong.com
zhuancorp.comzhuanspirit.comzhuanzhuan.com58ganji.com58ganji-corp.commyhwclouds.netmyhwclouds.com
vancl.comvanclimg.com
vcimg.com
+afdian.net
afdiancdn.combitauto.combitautoimg.comcheyisou.com
yiche.com
yccdn.comjianshu.com
+jianshu.io
meitu.com
meitudata.com
meitustat.comebtrust.com
ebfortune.com
+eb-ind.comebasset.comebchina.comebchinaintl.comceblease.com
ebfcn.comsunlife-everbright.comcebbank.comebscn-am.com
ebscn.comeverbright.com
secec.com
myhwclouds.cn
+pingan.comyqb.commyhwcloudlive.comgongqingyun.cnjzfz.net
sumkoo.cn
+sumkoo.com
+sumkoo.net
veeqi.netwenmingban.comzhiyuanhe.cnmyhwcdn.com
+myhwcdn.cnlearnywhere.cnbbdc.cnbeingfine.cn1tyy.cnqtyy.cn
+coolab.top
+is-cool.cn
+qlisten.cnlangeasy.cnmyhuaweicloud.cnmyhuaweicloud-obs.commyhuaweicloud-obs.cnmyhuaweicloud-koodrive.commyhuaweicloud-koodrive.cntaikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.commogu.commogucdn.commogujie.comjuneyaoair.com
+91.com
+aipage.comantpcdn.comapollo.autobaidu.cn
baidu.combaiduapp.combaidubce.combaiducontent.combaidupcs.combaidustatic.com
+baifae.combaifubao.com
+bcebos.combdcloudapi.com
bdimg.combdstatic.combdtjrcv.com
bdydns.cn
+bdydns.com
+bdydns.netchuanke.com
dlnel.com
dlnel.org
+duapps.com
+dwz.cn
+hao123.com
hao123img.com
+hao222.com
+haokan.comjomocdn.netjomodns.com
+mipcdn.com
nuomi.comquyaoya.com
+shifen.comsmartapps.cntiebaimg.comxianfae.comxiaodutv.comduxiaoman-int.com
duxiaoman.comduxiaomanfintech.comduxiaomantech.comdxm-cdn.comdxm-int.com
+dxmlcf.comdxmlcfintech.com
+dxmpay.com
dxmstatic.com
+dxmyqh.com
+paydxm.comzuoyebang.cc
zuoyebang.com
+zybang.commyhuaweicloud-custom.com315dian.com
+doucang.cndoucang.com
+drp321.com
+erp.cn
erp321.cn
+erp321.com
+erp321.net
jsterp.cn
jugongdan.comjushuitan.cn
jushuitan.com
jushuitan.netjushuitan-inc.comjuxieyun.com
scm121.cn
+scm121.com
+shopss.com
shuiyaohuo.cnshuiyaohuo.com
surerp.cn
+surerp.com
+sursung.cnsursung.comqbox.me
qiniu.comqiniucdn.comqiniudn.comqiniudns.com
+qiniup.com
qnsdk.com
qnssl.comstaticfile.netstaticfile.orgipip.netcapitalonline.netmyhuaweicloud-custom.cnqcloudmarket.com
spcloudhw.com
+apcdns.net
cdn-go.cnfoxmail.comgtimg.cn
gtimg.comidqqimg.comimqq.com
myapp.comqlogo.cnqpic.cn
+qq.comqq.wang
+m1.run
+m6.runoracle-tencent.net
+qqmail.com
qzone.com
+m9.runoracle-tencent.comservicewechat.com
+tencent.cntencent.comoracle-tencent.cntencent.net
+ma.runtencentmusic.com
+tenpay.com
tfogc.com
tlivepush.com
txlivecdn.com
+wechat.comwechatpay.cn
wxlivecdn.com
alloyteam.comimweb.ioivweb.io
fyeds.com
+fyeds0.com
+fyeds1.com
+fyeds3.com
+fyeds4.com
+fyeds5.com
+fyeds6.com
+fyeds7.com
+fyeds8.com
+fyeds9.comfymall0.comfymall1.comfymall4.comfymall7.comfymall9.com
fymallqa0.com
fymallqa1.com
fymallqa2.com
fymallqa3.com
fymallqa4.com
fymallqa7.com
fymallqa9.comhongxiu.comlrts.meqdmm.com
+qidian.com
readnovel.comtingbook.comwebnovel.com
+xs8.cnxxsy.net
tcloudedu.com
+tdnsx1.com
aitransfy.comapaas-zone-test.comapigwtencent.combkapigw.com
+bkapps.combkclouds.cc
bktencent.com
+build9s.iobyodonline.com
cdndoctor.com
+cdngot.com
+cdntip.comcdntips.comcdntips.netcdnv1.cncdnv2.cncdnv3.cn cloud-industry-delivery.sitecloudbase.cn
cloudbase.netcloudidaas.com
cloudsite.vip
cncqcloud.comcomputeinit.comcoolsite.vip
dnsv1.comdothework.cnectencent.cnedgeonedy1.com
+essurl.comexmailgz.com
+fsphere.cngaapqcloud.comqcloudsmartiot.com
gmedev.cn
govqcloud.com
+gsadds.comgtm.pub
hr-welink.comidcgcloudcs.com
iemiq.comigtm.pubisd.com
ispqcloud.comitopsdk.com
my-qcloud.commyelasticsearch.comdoh.pubmyqcloud.comonexmail.comopenapp.runovscdns.comovscdns.net
+pn1waq.comqcloud-edumall.com
+qcloud.com
qcloud.laqcloudapps.com
qcloudcdn.comqcloudcdntest.cnqcloudclass.comqcloudcos.cn
qcloudcos.com
dnsv5.com
+dnspod.org
dnsv3.comqclouder.com
qcloudgme.com
qcloudimg.comqcloudipv6.comtapd.cnxn--r70as2s.xn--fiqs8sgitdrone.cnqcloudtcic.com
qcloudtiw.comqcloudtrip.comqcloudtt.com
qcloudwaf.comtcloudhw.net
+qeodns.com
+qeodns.netqqmra.cn
qqmra.comqyunapp.comserverlesscloud.cnsmtcdns.comsmtcdns.netspcdntip.comspcdntipbak.comqcloudns.com
spcloudhw.netsrmkp.cnstarlakelab.comtamaegis.com
qq.xn--fiqs8stcdlive.com
+tcdnhw.com
tcdnkcbak.comtcdnlive.comtcdnlivebak1.comtcdnlivebak2.com
+tcdnos.com
+tcdnos.nettcdntip.comtcdnvod.comtcdnvodbak.comtcloudbase.comtcloudbase.nettcloudbaseapp.comtcloudbi.comtclouddrive.comtourismuser.cnacctdns.netqdwebim.comtcloudscdn.comtcloudscdn.nettcloudhw.com
+techo.chat
tefscloud.com
tefscloud.nettenant-zone-dev.comtencdns.nettencent-cloud.nettencentapps.comtencentbyod.com
tencentcdb.cntencentcdb.com
dnsv4.comtencentclb.comtencentcloud-aiot.comtencentcloudapi.comtencentcloudclub.comtencentcloudcr.comtencentcloudmarket.comtencentcloudns.comtencentcloudsec.comtencentcloudses.com
tencentcos.cntencentcos.comdns.pub
tencentcs.comtencentdayu.com
tencentdb.comtencentdevices.comtencentdigitalassistant.comtencentdms.comtencenteiam.comtencentelasticsearch.com
tencentid.comtencentidentity.comtencentproxy.comtencentrio.comtencenttid.comtencentwemeet.clubtencentwepark.comtencentyun.comtendbcluster.com
+tendis.net
dnsapi.cntestmeet.cntestwaf.com
tgovcloud.com
+tidaas.comdnspod.mobitimmerse.comtlivecdn.comtourismshow.cnacctdns.comtsparkling.comtx-exhibition.com
+txbyod.com
+txidc.wang
+txtyxg.comtxyscdn.comtxyscdn.netuncnn.cn
vcloudstc.com
vcloudstc.net
vcloudvod.comvodtcbk.com
+vxo7tu.comwework-studio.com
+xqymuy.com
+yufuid.comdot.pub
+yufuid.net
yunjitele.com
+dnspod.com
dnspod.cn
dnsv2.com
+dnspod.net
+discuz.org
+discuz.netcomsenz.com
+ym.run
+um.runmodelarts-infer.commodelarts-infer.cnlivehwc3.cnkmop-cn-north-4.cnkmop-cn-east-3.cnkmcb-cn-north-4.cnkmcb-cn-east-3.cnkm9g.cnkm8g.cnkm7g.cnkm6g.cnixiguapi.com
inanguapi.cominanguapi.cnimcapptest.comimc-oneaccess.cn
idonguapi.comidonguapi.cnhweventgrid.comhweventgrid.cnhwcloudvis.com
hwcloudvis.cnhwcloudsite.comhwcloudsite.cn
hwclouds.mobihwclouds.comhwclouds.cnhwclouds-dns.nethwclouds-dns.comlianjia.com
ljcdn.com
miaomiaoz.commiaomiaozhe.comoneplus.com
+oneplus.cnoneplus.net
opstatics.comoneplusbbs.comh2os.com
+cnmstl.netfofa.sot00ls.cc
t00ls.net
+tools.team
cugbonline.cndida365.com
+sandai.netthunderurl.com
+xunlei.com
00cdn.com
88cdn.com
p2cdn.comthundercdn.comxycloud.com
xycdn.com
+j-test.com
+42r.cn
+5566ua.com
aurorapush.cn
+e0n.cnjapps.cnjchat.io
+jiguang.cnjmlk.cojpush.cnjpush.iojpushoa.com
+jsurvey.cn
jvoice.cn
+kc9.cn
+n0q.cnpushcfg.com
+s0n.cnhailuoai.com
+liblib.art
+chatglm.cn
+zhipuai.cn
botvip.cntiangong.cn
+doubao.commarscode.cnbaichuan-ai.comrwkv.comxingyeai.commoonshot.cnrwkv.cnminimaxi.comhwclouds-dns.cnhwcdnsre.comhwcdnsre.cnhwastro.com
+hwastro.cndianping.com
+maoyan.commeituan.commeituan.net
mtyun.com
neixin.cnsankuai.comsohu.comssimg.cn
cnfol.comcnfolimg.comzqrb.cncnstock.com21jingji.com
yicai.com
ssajax.cn
+sohucs.com
dgtle.com
stockstar.comecns.cn
chinanews.com
+xueqiu.com
jrjimg.cn
+cls.cncailianpress.comwallstreetcn.com
+itc.cnwallstcn.comsnowballsecurities.comthsi.cn
+ths123.comdanjuanfunds.com
+yundzh.com
+caixin.comnews.cn
xinhuanet.com
people.cnaiganggu.com
expreview.com
anzhuo.cnidcquan.com
+admin5.comhupu.comhupucdn.com
shihuo.cnwfdata.clubjiemian.comfengimg.comcoolbuy.com
ifanr.comifanr.inifanrusercontent.com
+ifanrx.com
+minapp.com
+lancdn.comlandiannews.comlandian.viplandian.xyzourl.co
wsoso.com
+fengcx.com
ifeng.comifengimg.comstcn.comfengedu.comifengweekly.com6655.comcooldock.com
+ithome.comlapin365.comruanmei.com
+saayaa.com
win7china.com
win8china.comphoenixcenter.cn
hexun.com
jianyuweb.comsolidot.org%!xn--fiq53l90et9fpncc7joo6apn8a.cnolympicchannelchina.cncctvpic.comchinaepg.cn
chinalive.comzggbdszt.cn-)xn--kprv4ewxfr9cpxcc7joo6apn8a.xn--fiqs8scntv.cn%!xn--kprv4ewxfr9cpxcc7joo6apn8a.cn
+cctvlib.cnlivechina.cncctv.com%!xn--fiq53l6wcx3kp9bc7joo6apn8a.cn
+cctvpro.cn
livechina.com
cntvwb.cngjgbdszt.cntvcc.cncctv.cn
ipanda.cn
+ipanda.com-)xn--fiq53l6wcx3kp9bc7joo6apn8a.xn--fiqs8s
+ipanda.netcctvlibrary.cnfeng.comtmtsmartrun.comtmtsmartlife.com
+tivitv.com
checkzeit.com
+72whys.comchaindd.comtmtpost.com
sspai.com36krcnd.com36krcdn.com36kr.com36dianping.comgeekpark.netynet.cnynet.com
huaweiyun.comhuaweiyun.cn
huaweisre.comhuaweisre.cnhuaweisafehub.cnhuaweisafedns.comhuaweisafedns.cnhuaweimarketplace.comhuaweioneaccess.comhuaweioneaccess.cnhuaweicloudwaf.comhuaweicloudwaf.cnhuaweicloudsite.comhuaweicloudsite.cnhuaweicloudlive.comhuaweicloudapis.comhuaweicloudapis.cnhuaweicloud.comhuaweicloud.cnhuaweicloud-smn.nethuaweicloud-smn.comhuaweicloud-smn.cnhuaweicloud-idme.comhuaweicloud-idme.cnhuaweicloud-dns.comhuaweicloud-dns.cnhuaweiapaas.comhuaweiapaas.cnlinakesi.comlinakesi.cn
lazycat.cloudheiyu.spacemoji.com
mojichina.com
jdair.net
+flycua.com
csair.comchinaexpressair.cometao.comtaobizhong.com
95095.com9game.cn
+aliapp.orgalibaba-inc.comalibaba.comalibabacapital.comalibabacorp.comalibabadoctor.comalibabafuturehotel.comalibabagroup.comalibabaplanet.comalibabaued.comalibabausercontent.comalifanyi.com
+aliimg.com
+alikmd.comalimama.comalimebot.com
+alimei.comalios.cn
alipay.cn
+alipay.com
alipaydns.comalipayobjects.comaliplus.comaliresearch.comalisoft.com
alisports.com
alitianji.comaliunicorn.com
+aliway.comaliwork.com
alixiaomi.comalizhaopin.comalyms.cn
+asczwa.comasczxcefsv.com
+asmlink.cnatatech.org
+b2byao.com
bazai.com
bcvbw.com
cheng.xin
cloudeagle.cndamai.cndayu.com
+dfkhgj.comdoctoryou.aidoctoryou.cndongting.com
+dratio.comemas-poc.com
+gongyi.xinialicdn.comiconfont.cn
+ics.design
+jhgtgb.com
+kanbox.com
+lazada.comliangxinyao.comm-now.cn
+maitix.com
mdeer.commei.commiaostreet.com
mshare.ccnic.xinphilanthropy.xinphpwind.comphpwind.netqingtingtrip.com
rexpos.cnshenjing.com
shuqi.comlwurl.toshuqireader.com
sparenode.com
supet.com
ttpod.com
wandoujia.comxin.xinxinlingshou.cnyowhale.com
yunos-inc.com
yunos.comyushanfang.com
+zuodao.comaliexpress.comalipayplus.comalicloudccp.com
+alipan.comaliyundrive.netcainiao.comlaiwang.comdingtalkapps.comdingtalk.netcainiao-inc.com
freshhema.comhemamax.com
+hemaos.comhemashare.cnshyhhema.comantfortune.com
+antfin.comantgroup.comantgroup-inc.cn sm.cn1688.com25pp.com
juhuasuan.comgoofish.com
56che.com
+taobao.com
+taobao.org
taobaocdn.com
+mashort.cntaopiaopiao.com tb.cntbcache.comtburl.in
tmall.comtmalltv.comtmjl.aiquark.cnalitrip.com
feizhu.cn
+feizhu.com
+fliggy.com
+iuynfg.com
xiami.comxiami.fm
xiami.net
+koubei.comzhisheng.com
npmmirror.comlingshoujia.comalibabacloud.comalicloud.compailitao.comteambition.comteambition.netteambitionapis.com uc.cn
uc123.com
ucweb.comuczzd.cna-map.cna-map.co
+a-map.link
a-map.vipacloudrender.comamap.comamapauto.comanav.comautonavi.com
gaode.comalibabadns.com
+alicdn.comalicloudapi.comalidayu.com
+alidns.com
alikunlun.comaliyun-inc.comaliyun-iot-share.com
+aliyun.com
aliyuncdn.comcdngslb.comhichina.comica-alliance.orgkunlunaq.comkunlunar.comkunlunca.com
kunluncan.comkunlunea.com
kunlungem.comkunlungr.com
kunlunhuf.comkunlunle.comkunlunli.comkunlunno.comkunlunpi.comkunlunra.comkunlunsa.comkunlunsc.comkunlunsl.comkunlunso.comkunlunta.comkunlunvi.comkunlunwe.com
mxhichina.commyalicdn.comdingtalk.comdingtalk.cndingding.xinddurl.to
+hc-sre.com
+hc-cdn.com
hc-cdn.cneduapaashwc.com
b2bgo.comcdnhwcgrb01.cncdnhwcqwg14.comvmallres.com
vmall.comshanhaitujian.com
+hwtrip.comhwocloud.comhwht.cn
+hwccpc.com
hwccpc.cnhuaweistatic.combootcss.comphpcomposer.com
jcloudimg.netjcloudlb.com
300hu.com
360buy.cn
+360buy.com
360buyimg.com360buyinternational.com
+360top.com
+7fresh.combaitiao.comblackdragon.com
caiyu.comchicalot.cncloud-beijing.comcloud-hebi.comcloud-ningbo.comcloud-ordos.comcloud-shenzhen.comcloud-shiyan.comcloud-wuhan.comcloud-xian.comcloud-xm.comcloud-zhaoqing.comcloud-zhongwei.comcloudanqing.comcloudbaoshan.comcloudbeibei.comcloudbinzhou.comcloudchangde.comcloudchangsha.comcloudchangzhou.comcloudchaozhou.comcloudchengde.comcloudchengdu.comcloudchuzhou.comcloudczs.comclouddalian.comclouddatong.comclouddongying.comcloudfoshan.comcloudfuqing.comcloudganzhou.comcloudguangzhou.comcloudhaidong.comcloudhefei.comcloudhengshui.comcloudhuaihua.comcloudhuizhou.comcloudjinan.comcloudjinchang.comcloudjingzhou.comcloudjining.comcloudjiujiang.comcloudkunming.comcloudleshan.comcloudlijiang.comcloudlishui.comcloudluohe.comcloudluoyang.comcloudmeishan.comcloudnanan.comcloudnanjing.comcloudnanning.comcloudnantong.comcloudquanzhou.comcloudsanya.comcloudshanghai.comcloudshaoyang.comcloudshenfuxingqu.comcloudsiping.comcloudsuqian.comcloudtangshan.comcloudtianjin.comcloudtongchuan.comcloudtongliang.comcloudweinan.comcloudxiangtan.comcloudxianyou.comcloudxining.comcloudyanan.comcloudyancheng.comcloudyantai.comcloudyinchuan.comcloudyueyang.comcloudyuncheng.com
cloudyuxi.comcloudzhongshan.comcloudzhuhai.com
+dao123.com
goselling.comhealthjd.comduolabao.com
isvjcloud.com
isvjd.comjcloud-cache.comjcloud-cache.netjcloud-cdn.comjcloud-live.comjcloud-oss.com
+jcloud.comjcloudcache.comjcloudcache.netjcloudcs.comjclouddn.com
jclouddns.com
jclouddns.netjcloudec.comjcloudedge.comjcloudedge.net1huizhan.comjcloudgslb.net
jcloudimg.comjcloudgslb.com3.cnprestodb-china.comjcloudlive.comjcloudlv.com
jcloudoss.comjcloudresolve.comjcloudresolve.netjcloudss.comjcloudstatic.comjcloudstatic.netjcloudvideo.comjcloudvideo.net
jclps.com
+jd-app.comjd-ex.cn
jd-ex.comyizhitou.comyiyaojd.comyihaodianimg.com
jd-ex.net jd.cn
+jd.com
yihaodian.comjd.shopjdbusiness.comjdcache.com
jdcdn.comjdcloud-api.comjdcloud-api.netjdcloud-edu.comjdcloud-elite.comjdcloud-elive.comjdcloud-livebuy.comjdcloud-mail.comjdcloud-openapi.comjdcloud-oss.comjdcloud.comjdcloudcache.comjdcloudcache.netjdcloudcdn.comjdcloudcdn.net
jdcloudcs.comjdclouddns.comjdclouddns.netjdcloudedge.comjdcloudedge.net
jdcloudlb.com
jdcloudlb.netjdcloudlive.comjdcloudlive.netjdcloudresolve.comjdcloudresolve.netjdcloudsite.comjdcloudstatic.comjdcloudstatic.netjdcloudstatus.comjdcloudstatus.netjdcloudvideo.comjdcloudvideo.netjdcloudwaf.comjddapeigou.comjddebug.com
jddglobal.comjdemall.com
jdfw1.com
+jdgslb.com
+jdgslb.netjdh.com
jdjinrong.com
+jdl.cnjdl.comyhd.com
jdlike.cn
jdpay.comjdpaydns.comjdwl.comjdx.com
jhscm.comjingdong.comjingdongjinrong.comjingpinhui.com
+jingxi.com
+jkcsjd.com
+joybuy.com
joybuy.eslinglonglife.com
logiseasy.com
mayshijia.comminitiao.commissjia.net
ocwms.compaidaojia.cn
+paipai.comxjoycity.comjcloudlb.netqianxun.comqingzhouip.com
sgsic.comtoplife.com
+vg.com
+vipmro.com
+vipmro.netwangyin.com
wdfok.comwuliujie.cnwuliujie.com
xianjiqun.com
huaweiief.comhuaweiief.cnhuaweiacad.com
+huawei.com
huawei.cnhonor.cnhihonor.comtongfangpc.commechrevo.comhicloud.comvivo.com
dbankedge.net
b3log.orgabhouses.comagconnect.link
dbank.comdbankcdn.cndbankcdn.com
dbankcloud.cndbankcloud.comdbankedge.cnguba.com.cn
360buy.com.cnchinabank.com.cnduiou.com.cnjd-ex.com.cn
jd.com.cn
+jdl.com.cnprestodb.net.cnalihealth.com.cn
alipay.com.cnsaee.org.cncainiao.com.cnoss-cn-beijing.aliyuncs.comoss-cn-chengdu.aliyuncs.com"oss-cn-wulanchabu.aliyuncs.com oss-cn-shanghai.aliyuncs.com!oss-cn-huhehaote.aliyuncs.com#oss-cn-zhangjiakou.aliyuncs.com oss-cn-shenzhen.aliyuncs.comoss-cn-heyuan.aliyuncs.com oss-cn-hangzhou.aliyuncs.comoss-cn-nanjing.aliyuncs.com!oss-cn-guangzhou.aliyuncs.comoss-cn-qingdao.aliyuncs.comwanfangdata.com.cn
people.com.cn
+cns.com.cn
ipanda.com.cn
+nbd.com.cn
cs.com.cngjgbdszt.net.cn
10jqka.com.cn
+dzh.com.cn
gw.com.cn
tigeek.net.cnvivo.com.cnjiemian.com.cn
+jrj.com.cnzygbdszt.net.cnzggbdszt.net.cncaijing.com.cntvcc.com.cncctvpro.com.cncctvlibrary.com.cncctvlib.com.cncntv.com.cncnms.net.cncitv.net.cnzggbdszt.com.cnynet.com.cngjgbdszt.com.cnchinanews.com.cnxinghuo.xfyun.cncaac.gov.cnhbhk.com.cntibetairlines.com.cnright.com.cn
mypaas.com.cntencentcdb.com.cnoracle-tencent.net.cntestjrzk.net.cntimatrix.com.cnjrzk.net.cndnsv1.com.cn
+rtx.com.cnectencent.com.cndiditaxi.com.cn
dnspod.com.cnoracle-tencent.com.cntencentcos.com.cn
unihan.com.cngtimg.com.cn
yufuid.com.cn
qq.com.cntencent.net.cn
qq.cn.comtencent.com.cnmirrors.yun-idc.combaidu.com.cnbubei.com.cnis-cool.com.cnlearnywhere.com.cnlangeasy.com.cnbeingfine.com.cnzyhe.com.cnzhiyuanyun.com.cn
pingan.com.cn
+ebf.com.cn58cdn.com.cn
58.com.cn
gcable.com.cn10099.com.cn
haosou.com.cn
+cma.gov.cnbaiying.com.cnthinkprinter.com.cn
lenovo.com.cnlenovovip.com.cnlenovoprinter.com.cnjvcsmart.com.cnjhwan.com.cnjuhuiwan.com.cn
+zuk.com.cnlenovocare.com.cnmoegirl.org.cnsf-tech.com.cnmedia.paperclipclub.netairchina.com.cnhongdunwang.com.cn
nearme.com.cnicve.com.cnjiasu.bohe.comfastcdn.com.cnurtc.com.cn
ucloud.com.cnciticprufunds.com.cncitic-prudential.com.cnbjyouth.gov.cnluogu.com.cncsco.com.cn
hsbcqh.com.cn
ccfund.com.cn
qishui.com.cnqishuimusic.com.cngogokid.com.cn
+okr.com.cnlf-rc1.yhgfb-cn-static.comsina.com.cnweibo.com.cnzdnscloud.org.cnzdnscloud.net.cnzdnscloud.com.cnzdns.org.cnzdns.net.cnzcmbc.com.cn
wo.com.cnchinaunicom.com.cn10010.com.cnsinopecnews.com.cnfontstar.com.cnhanyi.com.cnzhiliaowenda.com.cnthtf.com.cnhoopchina.com.cnfoxmail.com.cncnki.com.cncidp.com.cn
+ccf.org.cnssreader.com.cnstudy360.com.cnssvideo.com.cn
zaifan.com.cn
drcnet.com.cn
+csdl.ac.cnwind.com.cn
las.ac.cnpishu.com.cniscas.ac.cnqcloudcos.com.cn
18.com.cn1234567.com.cnxuexi365.com.cnmidea.com.cnprogrammer.net.cnprogrammer.com.cncsdn.net.cnkata.com.cnhupun.com.cntosot.com.cngree.com.cnicbccstz.com.cnchinaunionpay.com.cn
+bsb.com.cncgbchina.com.cn
+cib.com.cncitibank.com.cncmbc.com.cn
+hxb.com.cnnjcb.com.cnspdb.com.cnonebank.com.cnbocifunds.com.cn
dccnet.com.cn
icbccs.com.cn
+cup.com.cnicbcmanila.com.cn95588.com.cnbocichina.com.cnbocservices.com.cnbankofbeijing.com.cnccb-life.com.cnccbfund.com.cnccblife-test.com.cnicbc.com.cnhsbcinsurance.com.cn
+ccb.com.cnccbtrust.com.cnhsbc.com.cnsogou.com.cnsoso.com.cnzhiding.com.cnzhonshian.com.cnchinatelecom.com.cn
+zte.com.cnpuh3.net.cn
cninfo.com.cncfsc.com.cngkzq.com.cncnht.com.cnhrsec.com.cndaton.com.cndfzq.com.cn
huawei.com.cn cn-south-1.myhuaweicloud.commyhwclouds.com.cn!cn-north-11.myhuaweicloud.com cn-north-2.myhuaweicloud.com$ cn-northeast-1.myhuaweicloud.com cn-north-9.myhuaweicloud.com cn-north-6.myhuaweicloud.com$ cn-southwest-2.myhuaweicloud.comami-alliance.org.cn cn-north-3.myhuaweicloud.com cn-north-5.myhuaweicloud.com cn-south-2.myhuaweicloud.com cn-north-1.myhuaweicloud.comcn-east-5.myhuaweicloud.comcn-east-4.myhuaweicloud.comcn-east-3.myhuaweicloud.comcn-east-2.myhuaweicloud.com cn-south-4.myhuaweicloud.comhwclouds.org.cn cn-north-4.myhuaweicloud.com
yhfund.com.cndgzq.com.cndtsbc.com.cndwjq.com.cneasec.com.cnessence.com.cn
thfund.com.cntaipingfund.com.cnewww.com.cn
gf.com.cnhfzq.com.cn
phfund.com.cnghzq.com.cngjzq.com.cnhuaan.com.cnmsjyfund.com.cnglsc.com.cn
guosen.com.cngyzq.com.cnpostfund.com.cn
+zts.com.cni618.com.cnchinastock.com.cnhtsc.com.cnhx168.com.cn
boscam.com.cn
stocke.com.cngffunds.com.cn
gefund.com.cnjhzq.com.cn
furamc.com.cnfullgoal.com.cnlongone.com.cnnjzq.com.cn
+sse.com.cnswsc.com.cntebon.com.cn
efunds.com.cn
dbfund.com.cnwkzq.com.cnxyzq.com.cncib-fund.com.cnchinanature.com.cnydsc.com.cnzdzq.com.cnlarksuite.com.ttdns1.comlarksuite.com.ttdns2.com!lenovo.com.cdn.cloudflare.net.+\.dnse[0-5]\.(cn|com)$'#.+\.tdnsv([1-9]|1[0-5])\.(com|net)$,(\.(.+-)?ap-beijing(-.+)?\.myqcloud\.com$,(\.(.+-)?ap-nanjing(-.+)?\.myqcloud\.com$-)\.(.+-)?ap-shanghai(-.+)?\.myqcloud\.com$.*\.(.+-)?ap-guangzhou(-.+)?\.myqcloud\.com$,(\.(.+-)?ap-chengdu(-.+)?\.myqcloud\.com$.*\.(.+-)?ap-chongqing(-.+)?\.myqcloud\.com$-)\.(.+-)?ap-shenzhen(-.+)?\.myqcloud\.com$:6\.(.+-)?ap-beijing(-.+)?\.tencentcos\.(cn|com(\.cn)?)$:6\.(.+-)?ap-nanjing(-.+)?\.tencentcos\.(cn|com(\.cn)?)$;7\.(.+-)?ap-shanghai(-.+)?\.tencentcos\.(cn|com(\.cn)?)$<8\.(.+-)?ap-guangzhou(-.+)?\.tencentcos\.(cn|com(\.cn)?)$:6\.(.+-)?ap-chengdu(-.+)?\.tencentcos\.(cn|com(\.cn)?)$<8\.(.+-)?ap-chongqing(-.+)?\.tencentcos\.(cn|com(\.cn)?)$;7\.(.+-)?ap-shenzhen(-.+)?\.tencentcos\.(cn|com(\.cn)?)$#.+\.cdnhwc([1-9]|10)\.(cn|com)$bilibiligame.cn
+cnbilibiligame.co
+cnbilibiligame.net
+cnbiligame.co
+cnbiligame.com
+cnbiligame.net
+cn
mhystatic.com
+cn mhyurl.cn
+cn
+mihayo.com
+cnmihayou.com
+cn
+mihoyo.com
+cnmihoyocg.com
+cnmihoyogift.com
+cnmihoyomall.com
+cnmiyoushe.com
+cnbenghuai.com
+cnbh3.com
+cnbhsr.com
+cnthemisweeps.com
+cnyuanshen.com
+cn
juequling.com
+cn'^.+-mihayo\.akamaized\.net$
+cn&^ntp([1-7])?\.aliyun\.com$
+cntime.izatcloud.net
+cntime.xtracloud.net
+cn'^ntp([1-5])?\.tencent\.com$
+cncn.pool.ntp.org
+cnntp.neu.edu.cn
+cnntp.ntsc.ac.cn
+cn
+ntp.org.cn
+cnweui.io
+cn
+bisheng.cn
+cnbishengcompiler.cn
+cndevui.design
+cn gneec.com
+cngneec.com.cn
+cn
+gneec3.com
+cn
+gneec4.com
+cn
+gneec7.com
+cn
harmonyos.com
+cnhiascend.cn
+cnhiascend.com
+cn hiclc.com
+cnhikunpeng.cn
+cn
hikunpeng.com
+cnhikunpeng.com.cn
+cn
hikunpeng.net
+cn
hisilicon.com
+cnhisilicon.com.cn
+cnhuaweiapaas.com
+cnmindspore.cn
+cn owsgo.com
+cnteleows.com
+cnsaasops.tech
+cnkc.kexinshe.com
+cn cf-ns.com
+cn cf-ns.net
+cn
+cf-ns.site
+cn
+cf-ns.tech
+cn
+cftest5.cn
+cn
+cftest6.cn
+cncftest7.com
+cncftest8.com
+cncloudflare-cn.com
+cn!cloudflareanycast.net
+cncloudflarechina.cn
+cncloudflarecn.net
+cn cloudflareglobal.net
+cn%cloudflareinsights-cn.com
+cncloudflareperf.com
+cncloudflareprod.com
+cn!cloudflarestaging.com
+cn#cloudflarestoragegw.com
+cn
+a2z.org.cn
+cnamazonaws.cn
+cnamazonaws.com.cn
+cn$amazonwebservices.com.cn
+cnamazonworkdocs.cn
+cn!amazonworkdocs.com.cn
+cn"asfiovnxocqpcry.com.cn
+cn
aws-border.cn
+cn%aws-icp-domain-manager.cn
+cn
+awsapps.cn
+cnawsapps.com.cn
+cnawsstatic.cn
+cncloudfront-cn.net
+cncloudfront-test.cn
+cn
cloudfront.cn
+cnnwcdcloud.cn
+cnnwcdcloud.com.cn
+cn
+nwcddns.cn
+cnnwcdinfosec.cn
+cn
+route53.cn
+cnsagemaker.com.cn
+cn-!.+\.amzndns-cn\.(biz|cn|com|net)$
+cn8,.+\.awsdns-cn-[0-9][0-9]\.(biz|com|net|top)$
+cn, .+\.awsdns-cn-[0-9][a-e0-9]\.cn$
+cn
+doubao.com
+cncoze.cn
+cnbluepoch.com
+cn sl916.com
+cnweui.io
+cnbattlecare.net
+cngameitop.com
+cngameloop.com
+cngcloudcs.com
+cngcloudcstest.com
+cn gcloudcstestonly.com
+cngclouddolphin.com
+cn
gcloudsdk.com
+cn
+gdtimg.com
+cn
goto-game.com
+cngoto-game.mobi
+cngoto-game.net.cn
+cn
goto-game.org
+cnhappyhlddz.com
+cnhdyxgame.com
+cnhkgcloudcs.com
+cnihappystudio.cn
+cnihappystudio.com
+cnin.th
+cnludosuperstar.cn
+cn
ludoworld.net
+cn
mahjongai.net
+cn
mahjongcup.cn
+cnmahjongcup.com
+cnmahjongcup.net
+cnmetalrevolution.com
+cnmidasbuy.com
+cnnagcloudcs.com
+cnproximabeta.com
+cnpubghelper.com
+cn
+pubgno1.cn
+cnpubgtool.com
+cn
qqgameapp.com
+cnrmwxgame.com
+cn
skydweller.cn
+cnsyxlgame.com
+cntencent-gcloud.com
+cntencentstart.com
+cntexasholdemcup.cn
+cntexasholdemcup.com
+cntexasholdemcup.net
+cntimibase.com
+cnvideoxiaoyouxi.com
+cnwcbygame.com
+cnyxdmgame.com
+cnyximg.cn
+cnyxwsgame.com
+cnyzyxgame.com
+cnzcjbgame.com
+cnzhuoyuegame.com
+cn xn--owtw8cc49ajfl.cn
+cn roblox.cn
+cn
roblox.qq.com
+cnrobloxdev.cn
+cnnextstudios.com
+cnnextworkshop.net
+cn mszdld.cn
+cn
+mszdld.com
+cn
+mszdld.net
+cngamebonfire.com
+cn
gouhuo.qq.com
+cnffbuddy.com
+cngotolink.net
+cn
+gtgres.com
+cnrealcybertron.com
+cn
+wegame.com
+cn
wegame.com.cn
+cnwegameplus.com
+cnwerepository.com.cn
+cn
brawlstars.cn
+cnhaydaypop.cn
+cnlabycore.cn
+cnsccreator.cn
+cn
sccreators.cn
+cn
+scescdn.cn
+cnscid.cn
+cnscsentry.cn
+cn!supercellcommunity.cn
+cnsupercellsupport.cn
+cncodm.com
+cnbcfmglobal.com
+cntcfmglobal.com
+cnanticheatexpert.com
+cn
+17roco.com
+cnroco.qq.com
+cn
+bisheng.cn
+cnbishengcompiler.cn
+cndevui.design
+cn gneec.com
+cngneec.com.cn
+cn
+gneec3.com
+cn
+gneec4.com
+cn
+gneec7.com
+cn
harmonyos.com
+cnhiascend.cn
+cnhiascend.com
+cn hiclc.com
+cnhikunpeng.cn
+cn
hikunpeng.com
+cnhikunpeng.com.cn
+cn
hikunpeng.net
+cn
hisilicon.com
+cnhisilicon.com.cn
+cnhuaweiapaas.com
+cnmindspore.cn
+cn owsgo.com
+cnteleows.com
+cnsaasops.tech
+cn
+A
+ICLOUDPRIVATERELAYmask-h2.icloud.commask.icloud.com
+)
+LISIKU
+lisiku.comlisiku1.com
+
+
+SALESFORCEappcloud.comappexchange.comattic.iobeyondcore.combuddymedia.comchatter.comcloudcraze.comcotweet.comdata.comdemandware.comdesk.comdocumentforce.comdreamforce.comeinstein.comexacttarget.com
force.comgovforce.comgravitytank.comheywire.comkrux.commarketingcloud.commetamind.io
+pardot.comquotable.comradian6.comrelateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.comsequence.comsfdcstatic.com
+sforce.comsite.com
+social.comsteelbrick.com
twinprime.comweinvoiceit.com
+"
+VOLMOEmox.moevol.moe
+`
+AMDamd.comamdfanstore.com
+radeon.com
+amd.com.cnwww.amd.com
+cn
+
+CATEGORY-SECURITIES-CN
founderff.com
iztzq.comszse.cn
zlfund.cnajzq.comavicsec.com
ccnew.comcczq.comcczq.netlufunds.comcfzq.comcgws.comchinalions.com
+howbuy.comcicc.com
+ciccwm.comcindasc.comcjsc.com
cnhbstock.com
+fund123.cn
+5ifund.com
csfounder.com
ctsec.com
+zofund.com
dfham.com
+zhfund.com
ydamc.comxqfunds.comxf-fund.comdxzq.netubssdic.comtongtaiamc.com
swsmu.comfcsc.cnfzfinancing.com
+py-axa.comghsl.cnorient-fund.com
ocfund.cn
+nffund.commfcteda.comgrzq.comgsgh.cnshzq.comgtja.com
guodu.com
jtamc.com
jsfund.cnhazq.comhczq.com
+igwfmc.com
+hlzqgs.comhongtastock.com
+hsfund.comhongdefund.comhftfund.com
+swhysc.comhuajingsec.comhuajinsc.cn
huayingsc.com
+hffunds.cnhxzq.cngowinamc.com
gfund.comgalaxyasset.comjpmorganchina.comjyzq.cn
jzsec.comkysec.cnlczq.comlhzq.com
+ftfund.commorganstanleyhuaxin.commszq.comnesc.cn
+fsfund.comnomuraoi-sec.com
+shgsec.com
+shhxzq.comgszq.comsseinfo.com
htsec.comforesightfund.comfadfunds.comtfzq.com
tpyzq.comvanho.cn
west95582.com
+ctfund.comwlzq.cnwxzq.comxcsc.comxsdzq.cncryuantafund.comchanganfunds.comykzq.comytzq.comcfund108.comzszq.com
+ztfsec.com
+bosera.com
+99fund.com
+abc-ca.comavicfund.cn
bdfund.cn
+bobbns.comcsco.com.cn
hsbcqh.com.cn
ccfund.com.cnzdzq.com.cnydsc.com.cnchinanature.com.cncib-fund.com.cnxyzq.com.cnwkzq.com.cn
dbfund.com.cn
efunds.com.cntebon.com.cnswsc.com.cn
+sse.com.cnnjzq.com.cnlongone.com.cnfullgoal.com.cn
furamc.com.cnjhzq.com.cn
gefund.com.cngffunds.com.cn
stocke.com.cn
boscam.com.cnhx168.com.cnhtsc.com.cnchinastock.com.cni618.com.cn
+zts.com.cnpostfund.com.cngyzq.com.cn
guosen.com.cnglsc.com.cnmsjyfund.com.cnhuaan.com.cngjzq.com.cnghzq.com.cn
phfund.com.cnhfzq.com.cn
gf.com.cnewww.com.cntaipingfund.com.cn
thfund.com.cnessence.com.cneasec.com.cndwjq.com.cndtsbc.com.cndgzq.com.cn
yhfund.com.cndfzq.com.cndaton.com.cnhrsec.com.cncnht.com.cngkzq.com.cncfsc.com.cn
cninfo.com.cn
+
+QICHAMAOqichamao.com
+Z
+METAfbcdn-a.akamaihd.netdevelopers.facebook.commeta.aimeta.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me
igcdn.comigsonar.comigtv.com
imstagram.comimtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.cominstagda.com
instagify.cominstagmania.cominstagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net
instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com
instagran.cominstagranm.com
instagrem.cominstagrm.cominstagtram.cominstagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net
instastyle.tvinstgram.comintagram.comintagrm.comintgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me
messenger.com
+nbabot.net
binoculus.com
buyoculus.comocul.usoculus-china.com
+oculus.comoculus2014.comoculus3d.comoculusblog.comoculusbrand.comoculuscasino.net
oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.comoculusvr.compowersunitedvr.comthreads.net wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.netwhatsapp.ccwhatsapp.com
whatsapp.infowhatsapp.netwhatsapp.orgwhatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.comacebooik.comacebook.comadvancediddetection.comaskfacebook.netaskfacebook.org
+atdmt2.comatlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com
click-url.comcomo-hackearfacebook.comcrowdtangle.comdacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.comfaacebok.com
faacebook.comfaasbook.com
facbebook.comfacbeok.com
+facboo.comfacbook.comfacbool.comfacboox.com
faccebook.comfaccebookk.comfacdbook.com
facdebook.com
face-book.com
faceabook.comfacebboc.com
facebbook.comfacebboook.com
facebcook.comfacebdok.com
facebgook.com
facebhook.comfacebkkk.com
facebo-ok.comfaceboak.comfacebock.com
facebocke.comfacebof.comfaceboik.comfacebok.comfacebokbook.comfacebokc.comfacebokk.com
facebokok.comfaceboks.comfacebol.comfacebolk.com
facebomok.comfaceboo.comfacebooa.comfaceboob.comfaceboobok.comfacebooc.com
faceboock.comfacebood.comfacebooe.comfaceboof.comfacebooi.com
facebooik.com
facebooik.orgfacebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-hardware.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.netfacebook.brfacebook.cafacebook.ccfacebook.comfacebook.designfacebook.netfacebook.hufacebook.infecebook.netfacebook.nlfacebook.orgfacebook.se
facebook.shopfacebook.tvfacebook.us
facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com
facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com
facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com
facebookw.comfacebookworld.comfacebool.com
facebool.info
facebooll.comfaceboom.comfaceboon.com
faceboonk.comfaceboooik.com
faceboook.comfaceboop.comfaceboot.comfaceboox.comfacebopk.com
facebpook.comfacebuk.comfacebuok.com
facebvook.com
facebyook.com
facebzook.comfacecbgook.com
facecbook.com
facecbook.orgfacecook.comfacecook.org
facedbook.comfaceebok.com
faceebook.comfaceebot.comfacegbok.com
facegbook.comfaceobk.comfaceobok.com
faceobook.comfaceook.comfacerbooik.com
facerbook.com
facesbooc.comfacesounds.comfacetook.com
facevbook.comfacewbook.cofacewook.comfacfacebook.com
facfebook.com
fackebook.comfacnbook.comfacrbook.com
facvebook.com
facwebook.com
facxebook.comfadebook.com
+faebok.comfaebook.comfaebookc.comfaeboook.comfaecebok.com
faesebook.comfafacebook.comfaicbooc.comfasebokk.comfasebook.comfaseboox.comfavebook.comfaycbok.com
+fb.careers
+fb.com fb.gg fb.mefb.watch
fbacebook.com
fbbmarket.comfbboostyourbusiness.com
fbcdn.com
fbcdn.netfbfeedback.com
+fbhome.comfbidb.io
fbinc.comfbinnovation.comfbmarketing.com
fbreg.com
+fbrpms.com
fbsbx.com
fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org
fburl.comfbwat.chfbworkmail.com
fcacebook.comfcaebook.comfcebook.comfcebookk.comfcfacebook.comfdacebook.infofeacboo.comfeacbook.com
feacbooke.com
feacebook.comfecbbok.comfecbooc.comfecbook.com
feceboock.comfeceboox.com
fececbook.com
feook.comferabook.com
fescebook.comfesebook.com
ffacebook.com
fgacebook.com
ficeboock.comfmcebook.com
fnacebook.comfosebook.com
fpacebook.comfqcebook.com
fracebook.com
freeb.comfreebasics.comfreebasics.net
+freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info
friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.comfsacebok.comfscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.orggacebook.comgameroom.comgfacecbook.com
+groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.orginternet.orgklik.meliverail.comliverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.commyfbfans.comnewsfeed.comnextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.comrocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.netthefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com
worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com
+redkix.com
workplace.comworkplaceusecases.comaccountkit.comatscaleconference.combotorch.org
+buck.build
buckbuild.comcomponentkit.orgdraftjs.org
+f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.comfasttext.ccfbf8.comfbinfer.comfblitho.comfbredex.com
+fbrell.comflow.devflow.orgflowtype.org
frescolib.orghacklang.orghhvm.commakeitopen.commcrouter.netmcrouter.orgmessengerdevelopers.com
+ogp.meopengraphprotocol.comopengraphprotocol.org
parse.compyrobot.org
react.comreactjs.comreactjs.orgrecoiljs.orgrocksdb.comrocksdb.netyogalayout.com graph.instagram.com
+ads)graph-fallback.instagram.com
+adsgraph.whatsapp.com
+adsgraph.whatsapp.net
+ads
+(
+ANON-V
+anon-v.com
+anon-v.lol
+
+CATEGORY-COMPANIESlgelectronics.122.2o7.netfbcdn-a.akamaihd.netdevelopers.facebook.comqualcomm.sc.omtrdc.net3/google-ohttp-relay-safebrowsing.fastly-edge.compublicca.googleapis.com#preprod-publicca.googleapis.comclients1.google.compki.google.comalt1-mtalk.google.comalt2-mtalk.google.comalt3-mtalk.google.comalt4-mtalk.google.comalt5-mtalk.google.comalt6-mtalk.google.comalt7-mtalk.google.comalt8-mtalk.google.commtalk-dev.google.commtalk-staging.google.commtalk.google.commtalk4.google.comfirebase.google.comfirebase.googleapis.com#firebaseappcheck.googleapis.com,(firebasedynamiclinks-ipv4.googleapis.com,(firebasedynamiclinks-ipv6.googleapis.com'#firebasedynamiclinks.googleapis.com)%firebaseinappmessaging.googleapis.com($firebaseinstallations.googleapis.com%!firebaselogging-pa.googleapis.com"firebaselogging.googleapis.com+'firebaseperusertopics-pa.googleapis.com'#firebaseremoteconfig.googleapis.com
ai.google.dev%!alkalicore-pa.clients6.google.com+'alkalimakersuite-pa.clients6.google.com
ai.google.dev%!alkalicore-pa.clients6.google.com+'alkalimakersuite-pa.clients6.google.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk!scholar.googleusercontent.comscholar.l.google.comcdn.js7k.com,(client-teamviewer-com.trafficmanager.net%!teamviewer.com.cdn.cloudflare.netmdn.mozillademos.orgnvidia.tt.omtrdc.netapple.com.akadns.net%!courier-push-apple.com.akadns.netpush-apple.com.akadns.net-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net%!beatselectronicsllc.tt.omtrdc.net!www-cdn.icloud.com.akadns.net3dns-1.adobe.com3dns-2.adobe.com3dns-3.adobe.com3dns-4.adobe.com3dns-5.adobe.com3dns.adobe.comactivate-sea.adobe.comactivate-sjc0.adobe.comactivate.adobe.comactivate.wip1.adobe.comactivate.wip2.adobe.comactivate.wip3.adobe.comactivate.wip4.adobe.comadobe-dns-1.adobe.comadobe-dns-2.adobe.comadobe-dns-3.adobe.comadobe-dns-4.adobe.comadobe-dns.adobe.com
adobeereg.comcrl.versign.netereg.adobe.comereg.wip.adobe.comereg.wip1.adobe.comereg.wip2.adobe.comereg.wip3.adobe.comereg.wip4.adobe.comhl2rcv.adobe.comhlrcv.stage.adobe.comlm.licenses.adobe.comlmlicenses.wip4.adobe.comna1r.services.adobe.comood.opsource.netpractivate.adobepractivate.adobe.compractivate.adobe.ipppractivate.adobe.newoapractivate.adobe.ntp
wip.adobe.comwip1.adobe.comwip2.adobe.comwip3.adobe.comwip4.adobe.comwwis-dubc1-vip100.adobe.comwwis-dubc1-vip101.adobe.comwwis-dubc1-vip102.adobe.comwwis-dubc1-vip103.adobe.comwwis-dubc1-vip104.adobe.comwwis-dubc1-vip105.adobe.comwwis-dubc1-vip106.adobe.comwwis-dubc1-vip107.adobe.comwwis-dubc1-vip108.adobe.comwwis-dubc1-vip109.adobe.comwwis-dubc1-vip110.adobe.comwwis-dubc1-vip111.adobe.comwwis-dubc1-vip112.adobe.comwwis-dubc1-vip113.adobe.comwwis-dubc1-vip114.adobe.comwwis-dubc1-vip115.adobe.comwwis-dubc1-vip116.adobe.comwwis-dubc1-vip117.adobe.comwwis-dubc1-vip118.adobe.comwwis-dubc1-vip119.adobe.comwwis-dubc1-vip120.adobe.comwwis-dubc1-vip121.adobe.comwwis-dubc1-vip122.adobe.comwwis-dubc1-vip123.adobe.comwwis-dubc1-vip124.adobe.comwwis-dubc1-vip125.adobe.comwwis-dubc1-vip30.adobe.comwwis-dubc1-vip31.adobe.comwwis-dubc1-vip32.adobe.comwwis-dubc1-vip33.adobe.comwwis-dubc1-vip34.adobe.comwwis-dubc1-vip35.adobe.comwwis-dubc1-vip36.adobe.comwwis-dubc1-vip37.adobe.comwwis-dubc1-vip38.adobe.comwwis-dubc1-vip39.adobe.comwwis-dubc1-vip40.adobe.comwwis-dubc1-vip41.adobe.comwwis-dubc1-vip42.adobe.comwwis-dubc1-vip43.adobe.comwwis-dubc1-vip44.adobe.comwwis-dubc1-vip45.adobe.comwwis-dubc1-vip46.adobe.comwwis-dubc1-vip47.adobe.comwwis-dubc1-vip48.adobe.comwwis-dubc1-vip49.adobe.comwwis-dubc1-vip50.adobe.comwwis-dubc1-vip51.adobe.comwwis-dubc1-vip52.adobe.comwwis-dubc1-vip53.adobe.comwwis-dubc1-vip54.adobe.comwwis-dubc1-vip55.adobe.comwwis-dubc1-vip56.adobe.comwwis-dubc1-vip57.adobe.comwwis-dubc1-vip58.adobe.comwwis-dubc1-vip59.adobe.comwwis-dubc1-vip60.adobe.comwwis-dubc1-vip61.adobe.comwwis-dubc1-vip62.adobe.comwwis-dubc1-vip63.adobe.comwwis-dubc1-vip64.adobe.comwwis-dubc1-vip65.adobe.comwwis-dubc1-vip66.adobe.comwwis-dubc1-vip67.adobe.comwwis-dubc1-vip68.adobe.comwwis-dubc1-vip69.adobe.comwwis-dubc1-vip70.adobe.comwwis-dubc1-vip71.adobe.comwwis-dubc1-vip72.adobe.comwwis-dubc1-vip73.adobe.comwwis-dubc1-vip74.adobe.comwwis-dubc1-vip75.adobe.comwwis-dubc1-vip76.adobe.comwwis-dubc1-vip77.adobe.comwwis-dubc1-vip78.adobe.comwwis-dubc1-vip79.adobe.comwwis-dubc1-vip80.adobe.comwwis-dubc1-vip81.adobe.comwwis-dubc1-vip82.adobe.comwwis-dubc1-vip83.adobe.comwwis-dubc1-vip84.adobe.comwwis-dubc1-vip85.adobe.comwwis-dubc1-vip86.adobe.comwwis-dubc1-vip87.adobe.comwwis-dubc1-vip88.adobe.comwwis-dubc1-vip89.adobe.comwwis-dubc1-vip90.adobe.comwwis-dubc1-vip91.adobe.comwwis-dubc1-vip92.adobe.comwwis-dubc1-vip93.adobe.comwwis-dubc1-vip94.adobe.comwwis-dubc1-vip95.adobe.comwwis-dubc1-vip96.adobe.comwwis-dubc1-vip97.adobe.comwwis-dubc1-vip98.adobe.comwwis-dubc1-vip99.adobe.comgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net openaiapi-site.azureedge.net2.openaicom-api-bdcpf8c6d2e9atf6.z01.azurefd.net1-openaicomproductionae4b.blob.core.windows.net.*production-openaicom-storage.azureedge.netcisco.evergage.comciscolivehls-i.akamaihd.net%!servd-anthropic-website.b-cdn.netcdn.js7k.com/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.netmwf-service.akamaized.net)%officecdn-microsoft-com.akamaized.net3/statics-marketingsites-eas-ms-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.netazure.microsoft.com"azuremarketplace.microsoft.comlocation.microsoft.com!github-cloud.s3.amazonaws.comaz764295.vo.msecnd.net)%bingsettingssearch.trafficmanager.netdefault.exp-tas.comdeveloper.microsoft.com'#download.visualstudio.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netrink.hockeyapp.net+'vscode-sync-insiders.trafficmanager.net"vscode-sync.trafficmanager.net vscode.blob.core.windows.netvscode.search.windows.net vsmarketplacebadge.apphb.comcrl.microsoft.commscrl.microsoft.comocsp.microsoft.comoneocsp.microsoft.comapi.viu.now.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.net,(impala-media-production.s3.amazonaws.comhpstore.corpmerchandise.comvmware.tt.omtrdc.netfaronics.kayako.com inteldell
+xn--cg4bkisamsung canonbingonedriveonedriveupdaterxbox azurewindows skype
+officehotmail
microsoftjava
+oracle
+flickr yahoo ciscogodaddyplaystationsony apple
panasonic
+yandexawsimdb
+kindle
+zapposyamaxunxn--jlq480n2rg
xn--cckwcxetd
+amazonweatherweatherchannelibmyoutubexn--qcka1pmcxn--flw351e nexushangoutguge
+googlegooggoo gmailglegbizdclk
+chromeandappstore.mycanon.sedaumpcbang.comdaum.netkakaovx.comkakaohealthcare.commetabora.io
+lg.comlgappstv.comlge.comlgecareers.com
+lghvac.com
xuite.net
hinet.net
emome.netfaronics.cadeepfreeze.com
faronics.techlghvacstory.comlgrecyclingprogram.comlgsalesportal.comdeepfreeze.techdeepfreeze.netfaronics.comfaronicslabs.comfaronicswise.com
deepfreeze.eu
atlassian.com
atlassian.netbitbucket.io
bitbucket.org
statuspage.io
+trello.com
trellocdn.com123dapp.com123dappipad.com123dartisan.com
123dcatch.com123dcircuits.com123dcreature.com123dcreaturenews.com123ddesign.com123ddoodler.com123dmake.com123dnews.com123dpro.com123dpro.net123dsculpt.com20yearsoffea.com360autodesk.com360nexus.com360nexus.net
+360plm.com360trailers.com3d-december.com3ddecember.com
3december.com3decemberonline.com3drules.com3dstudio.com
3dtin.com
3dtin.net5-d.com
51tuqiang.com5axis-machining.com
+acdocs.com
+adinst.com
adskcloud.com
adskcloud.netadskeng.netadskengineering.net
adskengpp.net
adskengpr.net
adtcc.comaecexcellence.comaerospace-cadcam.comaerospace-design.comairgunstudio.com
alias.comaliasadvantage.comaliasimaginationsengine.comaliasple.comaliasshowcase.comaliassketchbook.comaliassketchbookpro.comaliassystems.com aliasvisualizationstudio.comaliaswavefront.comarchitectural-cadcam.comarnoldrenderer.com
+artcam.comartcamexpress.comartcaminsignia.comartcamjewelsmith.com
artcampro.comassemblesystems.comautocad-schulungen.comautocad.comautocad360.com
autocad3d.comautocadarchitecturecc.comautocadexpert.comautocadformac.comautocadfreestyle.com
autocadlt.comautocadltbg.comautocadmac.comautocadmobile.comautocadsucks.comautocadsucks.net
autocadws.com
autocadws.netautodesk-aia-me.comautodesk-events.comautodesk-kickoff.comautodesk-mm.comautodesk-news.comautodesk-online.comautodesk-service.comautodesk-services.comautodesk-support.comautodesk-university.comautodesk-usability.comautodesk.comautodesk.devautodesk.netautodesk123d.comautodesk123dnews.comautodesk360.comautodesk360access.comautodesk360beta.comautodesk360bim.comautodesk360express.comautodesk360forbim.comautodesk360forplm.comautodesk360nexus.comautodesk360nexus.netautodesk360plm.comautodesk360pro.com!autodesk360solutionforbim.com!autodesk360solutionforplm.comautodesk360vault.comautodeskaecfeed.comautodeskandcitrix.comautodeskarcade.comautodeskautocadlt.comautodeskautomotive.comautodeskbim360.comautodeskbookrequest.comautodeskbuild.comautodeskbuildingops.comautodeskbuildspc.comautodeskcave.comautodeskchronicle.comautodeskcommunications.comautodeskcompetitions.com!autodeskdesigncompetition.com"autodeskdesigncompetitions.comautodeskdiscussions.comautodeskdocandmedia.comicloudbrowser.netautodeskdocandmediaasia.comautodeskdocandmediaemea.com!autodeskdocandmediaeurope.comautodeskegitimleri.comautodeskenterprise.comautodeskevents.comautodeskfashionstyler.comautodeskforgames.comautodeskforge.comautodeskformit.comautodeskfoundation.comautodeskfusionlifecycle.comautodeskgovernment.net#autodeskgreenbuildingstudio.comautodeskhelp.comautodeskicpcouncil.comautodeskimpression.comautodeskinform.comautodeskinstant.comautodeskjournal.comautodesklearning.comautodesklistens.comautodesklivedesign.comautodesklms.com$ autodeskmanufacturingacademy.com%!autodeskmayaformotiongraphics.comautodeskmedbookrequest.comautodeskmedia.comautodeskmediarequest.comautodeskmeetings.comautodeskmfg.com%!autodeskmotiongraphicsandmore.comautodesknews.comautodeskonline.comautodeskpartner.comautodeskplm.comautodeskplm360.comautodeskplm360.netautodeskproductreviews.comautodeskprofiles.comautodeskprograms.comautodeskresearch.comautodeskrevit.comautodeskrevit.netautodeskrevitsucks.comautodeskrevitsucks.netautodeskseek.comautodesksketchbook.com"autodesksketchbookdesigner.comautodeskstylebook.comautodesksubscription.comautodesksucks.comautodesksucks.netautodesktechdays.comautodesktechx.comautodesktinkerbox.comautodesktravel.comautodeskturkiye.comautodeskuniversity.comautodeskuniversity2013.comautodeskvasari.comautodeskvasari.netautodeskvietnam.comautodeskviewer.comautodeskworkshop.comautodeskworkshop.netautomotive-cadcam.comautosketch.comauxdubai.comavatara.combehindthescreenz.combest4bim.combestbim.com
betterbim.combetterwithautodesk.combim-360.com
+bim360.com
+bim360.netbim360field.combim360glue.com
bim360ops.combim3dcontent.combimadsk.combimglue.combimlibrary.com
bimseeker.com
bimsource.combimworld.com
bridgebim.combrni.combuilding3dcontent.comcad-mep.comcadcamsystemsinc.comcadduct.com
+cadmep.comcadoverlay.com
+cadren.com
caice.comcam-duct.comcamduct.comceramics-cadcam.com
+cfd-tv.comcfdesign.comchina-autodesk.comcitrixandautodesk.comcivil3d.comcivilcc.comcivilsoftware.netclimate-server.comcompass-system.comcompass-systems.comconstructware.comcontechacademy.comcrankplayer.comcreatewhatsnext.comcreativepass.comcreatwhatsnext.comdarwindimensions.comdelcam-ams.comdelcam-electrode.com
delcam-na.comdelcam-robotics.comdelcam-services.com
+delcam.comdelcamconsulting.comdelcamforsolidworks.comdelcamna.comdelcamtv.comdelcamuniversity.com
delcamusa.comdesign-ledrev.comdesign-ledrevolution.comdesignledrevolution.comdesignsformovement.com
designxml.com
designxml.netdestinationbim.comdigitalprototyping.comdiscreet.comdodv.comdrainage.com
drnastran.comdwg.comdwgtrueconvert.comdwgtrueview.comdynamobuilds.comdynamopackages.comdynamoreach.comecotect.comecotect.net
+ecscad.comecspublisher.comeducation-cadcam.comember3dp.comemberprinter.comemergingsolutions.comenergystarbuildings.comeraofconnection.com
esopworld.com#eueuropeansustainabledesign.neteurocodesoftware.com!europeansustainabledesign.com!europeansustainabledesign.net($europeansustainabledesigncouncil.com($europeansustainabledesigncouncil.netevalviewer.comevolver.com
evolver3d.comevolverpro.comextensions4revit.comfakeorfoto.comfakeorphoto.comfeanonlinear.comfeaturecam.com
+five-d.comflameunleashed.com
flowfront.com
flowfront.netfluidfxapp.com
fmdesktop.comfollowpype.comfootwear-cadcam.com
formit360.comformitfactory.comfreefbx.comfusionlifecycle.comfusionproductionapps.com$ futureofbritishmanufacturing.comfutureofmaktingthings.com
gbxml.netgeneticconstructor.comgeospatialimaging.comgeospatialinfo.comgetbuzzsaw.comgivemebuzzsaw.comgobuildx.netgovernmentengineer.comgreenbuildingstudio.com
hmsxpress.comhomestylerapp.comhomestylernews.comhorizontal-llc.comhorizontal-systems.comhorizontalglue.comhorizontalsystems.com
hsm-works.comhsm-xpress.comhsmexpress.comhsmworks.com
hsmxpress.comidea-server.comimagemodeler.comimaginationsengine.comimpactdesignhub.cominfraworks.cominstallbuzzsaw.comintelisolve.cominventor-certified.cominventorfusion.cominventorseries.comistorytell.comizmirautodeskegitimleri.com
jasa3dmax.comjasaautocad.comkaydara.comkeepyourcad.comkynogon.comlasersawapp.comlicenseparser.comlivesketchshare.comlrfdsoftware.comlunchwithpype.commachine-dna.commadewithmaya.commadewithstudiotools.commagestic.commakeanything.commakeitrealcontest.commakingstartshere.commap-software.commapguide.commappingonline.commarinecadcam.commarkingmenus.commatchmover.commaxillofacial-cadcam.commayacomplete.commayaconductors.commayafluideffects.commayaformotiongraphics.com
mayagames.commayamasters.commayamentor.netmayamentors.commayamentors.netmayaonlinux.com
mayaonmac.com
mayaonosx.commayapressbooks.com
mayasucks.commayaunlimited.commayauser.commayauser.netmayavisualization.commedicalimplants-cadcam.com
meshmixer.commeshmixerforum.commimistudio.commimistyler.commmmanual.commoldflow.commoldflowexpress.commoleculardesigntoolkit.com molecularsimulationtools.commolecularviewer.com
molviewer.commorewithautodesk.commotiongraphicsandmore.commudbox3d.commy1stflame.com
myautocad.commyautodeskbenefits.commyfirstflame.commymapportal.comnastranincad.com
nastrannx.comnastrantraining.comnastranworldwide.comnavisworks.comnavisworks.net
+neicad.comneiexplicit.com
+neifea.com
neimotion.comneinastranincad.comneisoftware.comneisolutions.comneiworks.com
nenastran.comnetzerobuildings.comnetzerobuildingstudio.comnew2fea.comnewtofea.comnextgenerationcam.comnonlinearnastran.com
objectarx.comoneteamconference.comopenreality.comopticore.comorthopaedic-cadcam.comorthotics-cadcam.compackaging-cadcam.compackagingcadcam.com
partmaker.com
pi-vr.compixlr-o-matic.compixlromatic.complansondemand.complasticlabs.complastics-cadcam.com
plug-into.comportfoliowall.compoweranimator.compowerinspect.com
powermill.compowermillna.compowershape-e.compowershape.comprofilemaster.comprojectpoint.comprojectpoint.netprojectshoreline.comprojectvasari.comps-exchange.comrapidprototyping-cadcam.comreality-computing.comrealpeople-realprojects.comrealpeoplerealprojects.comrealviz.comretimer.com
revit.comrevitcc.comrevitsucks.netrobobat.comrobotoffice.comsavoycomputing.com
scaleform.com
scpic.netsculpoly.comshotgridsoftware.comshotgridstudio.comshotguncloud.com
shotgunfx.comshotgunlocalhost.comshotgunsoftware.comshotgunsoftware.netshotgunstudio-test.comshotgunstudio.comshotgunvfx.comsimsquad.comsimulationsquad.comsketchbookdesigner.comsketchbookmobile.comsketchbooknews.comsketchbookpro.com
skymatter.comsmartfea.comsmartnastran.com
socailcam.com
socialcam.comsocialcammail.com
socialkam.comsqu1.comsquidplatform.comssttest.netstingrayengine.comstudiopaint.comstudiosucks.comsubmittal-log.com!sustainablebuildingstudio.com sustainabledesigncouncil.com sustainabledesigncouncil.netsuxiebu.comswiss-machining.comswiss-turn.com
t-splines.comthe-area.comthe123d.comthedesignworkshop.comthedesk.comtheinventionworks.comtheinventionworks.net
timefxapp.comtinkerboxapp.com
tinkercad.comtinkerentertainment.comtinkerplay.nettire-cadcam.comtoolmaking-cadcam.comtopobase.comtoy-cadcam.com
toycadcam.comtruebim.comtruedwg.comtrunest.comtrusted-dwg.comtrusteddwg.comtryalias.com
trydesign.comtspline.comtsplines.comtweakadmin.comtweakfilms.comtweaksoftware.comtyre-cadcam.comtyrecadcam.comupfrontcfd.comupfrontfea.comvelaserver.comvelastaging.comvelasync.comvelasystems.comvelatest.comviriondb.comvortexmachining.comvred-essentials.comvredessentials.comvredprofessional.com
vrnastran.comxn--74q434dwff.comxn--74q434dwff.net
corel.com
corel.net
coreldraw.app
coreldraw.comcorelstore.comdigitalocean.comdigitaloceanspaces.com do.conginxconfig.iometa.aimeta.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me
igcdn.comigsonar.comigtv.com
imstagram.comimtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.cominstagda.com
instagify.cominstagmania.cominstagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net
instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com
instagran.cominstagranm.com
instagrem.cominstagrm.cominstagtram.cominstagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net
instastyle.tvinstgram.comintagram.comintagrm.comintgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.comfbmessenger.comm.me
messenger.com
+nbabot.net
binoculus.com
buyoculus.comocul.usoculus-china.com
+oculus.comoculus2014.comoculus3d.comoculusblog.comoculusbrand.comoculuscasino.net
oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.comoculusvr.compowersunitedvr.comthreads.net wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.netwhatsapp.ccwhatsapp.com
whatsapp.infowhatsapp.netwhatsapp.orgwhatsapp.tvwhatsappbrand.comaboutfacebook.com accessfacebookfromschool.comacebooik.comacebook.comadvancediddetection.comaskfacebook.netaskfacebook.org
+atdmt2.comatlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com
click-url.comcomo-hackearfacebook.comcrowdtangle.comdacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.comfaacebok.com
faacebook.comfaasbook.com
facbebook.comfacbeok.com
+facboo.comfacbook.comfacbool.comfacboox.com
faccebook.comfaccebookk.comfacdbook.com
facdebook.com
face-book.com
faceabook.comfacebboc.com
facebbook.comfacebboook.com
facebcook.comfacebdok.com
facebgook.com
facebhook.comfacebkkk.com
facebo-ok.comfaceboak.comfacebock.com
facebocke.comfacebof.comfaceboik.comfacebok.comfacebokbook.comfacebokc.comfacebokk.com
facebokok.comfaceboks.comfacebol.comfacebolk.com
facebomok.comfaceboo.comfacebooa.comfaceboob.comfaceboobok.comfacebooc.com
faceboock.comfacebood.comfacebooe.comfaceboof.comfacebooi.com
facebooik.com
facebooik.orgfacebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-hardware.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.netfacebook.brfacebook.cafacebook.ccfacebook.comfacebook.designfacebook.netfacebook.hufacebook.infecebook.netfacebook.nlfacebook.orgfacebook.se
facebook.shopfacebook.tvfacebook.us
facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com
facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com
facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com
facebookw.comfacebookworld.comfacebool.com
facebool.info
facebooll.comfaceboom.comfaceboon.com
faceboonk.comfaceboooik.com
faceboook.comfaceboop.comfaceboot.comfaceboox.comfacebopk.com
facebpook.comfacebuk.comfacebuok.com
facebvook.com
facebyook.com
facebzook.comfacecbgook.com
facecbook.com
facecbook.orgfacecook.comfacecook.org
facedbook.comfaceebok.com
faceebook.comfaceebot.comfacegbok.com
facegbook.comfaceobk.comfaceobok.com
faceobook.comfaceook.comfacerbooik.com
facerbook.com
facesbooc.comfacesounds.comfacetook.com
facevbook.comfacewbook.cofacewook.comfacfacebook.com
facfebook.com
fackebook.comfacnbook.comfacrbook.com
facvebook.com
facwebook.com
facxebook.comfadebook.com
+faebok.comfaebook.comfaebookc.comfaeboook.comfaecebok.com
faesebook.comfafacebook.comfaicbooc.comfasebokk.comfasebook.comfaseboox.comfavebook.comfaycbok.com
+fb.careers
+fb.com fb.gg fb.mefb.watch
fbacebook.com
fbbmarket.comfbboostyourbusiness.com
fbcdn.com
fbcdn.netfbfeedback.com
+fbhome.comfbidb.io
fbinc.comfbinnovation.comfbmarketing.com
fbreg.com
+fbrpms.com
fbsbx.com
fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org
fburl.comfbwat.chfbworkmail.com
fcacebook.comfcaebook.comfcebook.comfcebookk.comfcfacebook.comfdacebook.infofeacboo.comfeacbook.com
feacbooke.com
feacebook.comfecbbok.comfecbooc.comfecbook.com
feceboock.comfeceboox.com
fececbook.com
feook.comferabook.com
fescebook.comfesebook.com
ffacebook.com
fgacebook.com
ficeboock.comfmcebook.com
fnacebook.comfosebook.com
fpacebook.comfqcebook.com
fracebook.com
freeb.comfreebasics.comfreebasics.net
+freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info
friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.comfsacebok.comfscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.orggacebook.comgameroom.comgfacecbook.com
+groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.orginternet.orgklik.meliverail.comliverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.commyfbfans.comnewsfeed.comnextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.comrocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.netthefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com
worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com
+redkix.com
workplace.comworkplaceusecases.comaccountkit.comatscaleconference.combotorch.org
+buck.build
buckbuild.comcomponentkit.orgdraftjs.org
+f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.comfasttext.ccfbf8.comfbinfer.comfblitho.comfbredex.com
+fbrell.comflow.devflow.orgflowtype.org
frescolib.orghacklang.orghhvm.commakeitopen.commcrouter.netmcrouter.orgmessengerdevelopers.com
+ogp.meopengraphprotocol.comopengraphprotocol.org
parse.compyrobot.org
react.comreactjs.comreactjs.orgrecoiljs.orgrocksdb.comrocksdb.netyogalayout.com
+spacex.comamplifi.comfrontrow.comubncloud.com
+ui.comuisp.comwifiman.comduolingo.comvastenm.comintel.tvsaffrontech.comintel.afintel.agintel.aiintel.arintel.atintel.azintel.baintel.bgintel.bhintel.biintel.bointel.bsintel.byintel.caintel.ccintel.cgintel.chintel.clintel.cm
intel.comintel.crintel.cuintel.czintel.de
+ospray.org
+ospray.netclearlinux.org
+acpica.comsnap-telemetry.ioopenvinotoolkit.org
+oneapi.comintellinuxgraphics.netintellinuxgraphics.comhyperscan.iointel.ttbarefootnetworks.com
+xscale.comxn--ztsq84g.cnxeon.comvpro.netvpro.com
+vokevr.comtrustedanalytics.nettrustedanalytics.comthunderbolttechnology.netintel.acintel.dkintel.dzintel.ecintel.eeintel.egintel.esintel.euintel.fiintel.frintel.gaintel.gdintel.geintel.glintel.gmintel.grintel.gsintel.gtintel.gyintel.hkintel.hnintel.htintel.huintel.ieintel.inintel.iointel.itintel.jeintel.jointel.jpintel.keintel.laintel.lcintel.lkintel.ltintel.luintel.lyintel.maintel.mdintel.meintel.mgintel.mkintel.mnintel.mpintel.mtintel.muintel.mwintel.mxintel.myintel.ngintel.nlintel.nuintel.nzintel.paintel.peintel.phintel.plintel.pnintel.reintel.rointel.ruintel.rwintel.saintel.scintel.seintel.sgintel.siintel.skintel.snintel.srintel.stintel.svintel.sxintel.syintel.tfintel.tjintel.tlintel.tmintel.tn
+01.orgtheintelstore.comintel.aeintel.uaintel.ukintel.usintel.uyintel.uzintel.vgintel.vnintel.vuintel.wfintel.yt
+altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net
buyaltera.comceleron.comceleron.netcentrino.comcentrino.net
chips.comcilk.comcilk.netcloudinsights.comclusterconnection.comcoreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com
easic.comenpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.comintc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com
intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.comintelgo.netintelinsight.cominteliotmarketplace.com
+intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component
intelplay.comintelquark.comintelrealsense.comintelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com
itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.commovidius.commovidius.netnervanasys.com
nevex.comnextgenerationcenter.com
+niosii.com
+niosii.netomekinteractive.com
+omnitek.tvopenamt.comopendroneid.orgoptanedifference.com
+pc.compentium.compentium.netpintool.compoweredbyintel.comreconinstruments.comreconjet.comresearchintel.comintel.twsensorynetworks.com
+siport.comsmart-edge.comfaronics.euworkspaceone.comwhatisworkspaceone.comwhatisairwatch.comgetwsone.com
+getws1.comairwatchqa.comairwatchexpress.com
air-watch.comvsphere.netvsphere.comalivevue.com
alivevmax.comalivevm.com
alivertsm.comaliverewind.comalivercm.comaliveprofiler.com
aliveitsm.comaliveipc.com
+heptio.com
gopivotal.com
velocloud.com
+nyansa.comkubeapps.comkubeacademy.comwisecoin.com
+wiseid.comwisekey.com
cloudlive.comx.aiskyperfectjsat.spacesptvbroadcast.comspcc-sp.com
hominis.media
jsati.comjsatmobile.comcloudhealthtech.comqualcomm.comsnapdragonbooth.comcdmatech.comdragoniscoming.comgobianywhere.comhellosmartbook.com
+brewmp.comipleadership.org
+iskoot.commeetsmartbook.compatenttruth.org
pixtronix.comqctconnect.com
+qprize.comqualcomm-email.com
xtracloud.netwirelessreach.comairgonetworks.comimod.comberkanawireless.comwipower.com
+uplinq.com
snapdragon.cnqualcomm.dequalcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com
qualphone.comquicinc.comcloudcredibility.comdockerizer.combitnamistudio.combitnamiapp.combitnami.com
+badaas.comavinetworks.comappcloud.comappexchange.comattic.iobeyondcore.combuddymedia.comchatter.comcloudcraze.comcotweet.comdata.comdemandware.comdesk.comdocumentforce.comdreamforce.comeinstein.comexacttarget.com
force.comgovforce.comgravitytank.comheywire.comkrux.commarketingcloud.commetamind.io
+pardot.comquotable.comradian6.comrelateiq.comsalesforce.comsalesforce.orgsalesforceiq.comsalesforceliveagent.com salesforcemarketingcloud.comsequence.comsfdcstatic.com
+sforce.comsite.com
+social.comsteelbrick.com
twinprime.comweinvoiceit.coms-rewards.hksmartone.comhkcircleapp.comhomephoneplus.comip73.coms-cashonmobile.comhealthreach.hksahabatsetiasmartone.combarkadahansasmartone.comsmartoneholdings.comsmartonerobotics.comwise-research.comsmartonesolutions.hkvaluegb.comxlstudio.com
+st.com
collabora.com
collabora.orgcollaboraoffice.comworkspaceair.comstuidok110.comstarship-ent.comshownote.comkarechat.aimsoopent.com
melon.compastahealth.comkakaopay.comdaumcdn.net
kakaocorp.comkakaopaysec.comkpinsurances.comgleline.comdolphiners.comfashionbykakao.comprivacysandbox.commfg-inspector.com
google.am
google.as
google.at
google.az
google.ba
google.be
google.bf
google.bg
google.bi
google.bj
google.bs
google.bt
google.by
google.ca
+google.cat
google.cd
google.cf
google.cg
google.ch
google.ci
google.cl
google.cm
google.co
+google.com
google.cv
google.cz
google.de
google.djxn--p8j9a0d9c9a.xn--q9jyb4cnew.dayiam.soyhey.booget.rsvpget.pageget.newget.howget.devget.appcrr.comcharlestonroadregistry.com
+golang.org
+golang.net
+golang.com
godoc.org
+go.devgo-lang.orggo-lang.netgo-lang.compolymerproject.orgpolymer-project.orgkaggleusercontent.com
+kaggle.net
kaggle.io
+kaggle.comfastlane.toolsfastlane.cidartpad.devdartlang.orgdart.devblogger.comblogspot.mdblogspot.lublogspot.ltblogspot.liblogspot.fiblogspot.jpblogspot.itblogspot.isblogspot.inblogspot.ieblogspot.hublogspot.hrblogspot.hkblogspot.grblogspot.frblogspot.krblogspot.tdblogblog.comblogspot.czblogspot.cvblogspot.myblogspot.nlblogspot.noblogspot.peblogspot.ptblogspot.qablogspot.reblogspot.roblogspot.rsblogspot.rublogspot.seblogspot.sgblogspot.siblogspot.comblogspot.skblogspot.snblogspot.dkblogspot.twblogspot.deblogspot.ugblogspot.vnblogspot.clblogspot.chblogspot.cf
google.dk
google.dm
google.dz
google.ee
google.es
google.fi
google.fm
google.fr
google.ga
google.ge
google.gg
google.gl
google.gm
google.gr
google.gy
google.hn
google.hr
google.ht
google.hu
google.ie
google.im
google.iq
google.is
google.it
google.je
google.jo
google.kg
google.ki
google.kz
google.la
google.li
google.lk
google.lt
google.lu
google.lv
google.md
google.me
+revolv.com
google.mk
google.ml
google.mn
google.ms
google.mu
google.mv
google.mw
google.ne
google.nl
google.no
google.nr
google.nu
google.pl
google.pn
google.ps
google.pt
google.ro
google.rs
google.ru
google.rw
google.sc
google.se
google.sh
google.si
google.sk
google.sm
google.sn
google.so
google.sr
google.st
google.td
google.tg
google.tl
google.tm
google.tn
google.to
google.tt
google.vg
google.vu
google.ws0emm.com
1e100.net
1ucrs.com
+466453.comabc.xyzadgoogle.net
+admeld.comangulardart.org
+api.ai
+apigee.comappbridge.caappbridge.ioappbridge.itappspot.com
+apture.comarea120.com
+asp-cc.comautodraw.combandpage.combaselinestudy.combaselinestudy.orgbazel.buildbdn.devbeatthatquote.com
blink.orgbrocaproject.com
+brotli.org
bumpshare.com
+bumptop.cabumptop.combumptop.netbumptop.org
bumptunes.comcampuslondon.com certificate-transparency.org
+chrome.comchromebook.comchromecast.comchromeos.devchromium.orgchronicle.securitychroniclesec.comcloudburstresearch.comcloudfunctions.netcloudproxy.appcloudrobotics.comcobrasearch.comcodespot.com
conscrypt.com
conscrypt.orgcookiechoices.org
coova.com
coova.net
coova.orgcrossmediapanel.com
cs4hs.comdartsearch.netdataliberation.org
debug.comdebugproject.comdevsitetest.howdialogflow.comdigitalassetlinks.orgdocs.newepisodic.comfeedburner.com
+fflick.comfinanceleadsonline.com
+fitbit.com
+foofle.comfroogle.comfuchsia.dev
g-tun.comg.co g.dev
+g.pagegateway.dev
+gcr.iogerritcodereview.comgetbumptop.comggoogle.comgipscorp.com
globaledu.org
gmail.comgmodules.com
gogle.com
+gogole.comgonglchuangl.net
+goo.gl
+googel.com
+googil.com
googl.comgoogle-access.netgoogle-syndication.com
google.berlin
+google.dev
+google.net
+google.orggoogle.ventures"googleacquisitionmigration.com
googleapis.cngoogleapis.comgoogleapps.comgooglearth.comgoogleblog.com
googlebot.comgooglecapital.comgooglecert.netgooglecode.comgooglecommerce.comblogspot.cablogspot.bjblogspot.bgblogspot.beblogspot.bagoogledanmark.comgoogledomains.comgoogledrive.comgooglee.comgoogleearth.comgooglefiber.comgooglefiber.netgooglefinland.comgooglemail.comgooglemaps.comgooglepagecreator.comgooglephotos.comgoogleplus.comgooglesource.comgooglestore.comgooglesverige.comgoogleusercontent.comgoogleventures.com
googlezip.net
+googlr.com
+goolge.comgooogle.com
gridaware.appgsrc.iogstatic.com
+gsuite.com
+gv.comgvt0.comgvt1.comgvt2.comgvt3.comgvt5.comgvt6.comgvt7.comgvt9.comhaplorrhini.comhdrplusdata.orghindiweb.comblogspot.amhtml5rocks.comhwgo.comiamremarkable.orgidx.devigoogle.com
impermium.comitasoftware.com
+j2objc.orgjibemobile.comkeyhole.comkeytransparency.comkeytransparency.fookeytransparency.org
lanternal.comlike.commadewithcode.commaterial.iomdialog.commeet.newridepenguin.commobileview.pagemoodstocks.comnear.bynest.comnomulus.foo
+oauthz.comon.hereon2.comonefifteen.netonefifteen.orgoneworldmanystories.com
openthread.ioopenweave.ioorbitera.com
page.linkpagespeedmobilizer.com
pageview.mobi
panoramio.compartylikeits1986.orgpaxlicense.org
+picasa.com
picasaweb.com
picasaweb.net
picasaweb.org
+picnik.compittpatt.com
+pixate.compostini.com
google.aeprojectara.comprojectbaseline.compublishproxy.comquestvisual.comquickoffice.comquiksee.com
google.mg
google.alyoutube-nocookie.comsavethedate.foo
+saynow.comschemer.comscreenwisetrends.comscreenwisetrendspanel.com
+sheets.new
+slides.newsnapseed.com
solveforx.com
+stadia.devstcroixmosquito.comstcroixmosquitoproject.comstudywatchbyverily.comstudywatchbyverily.orgstxmosquito.comstxmosquitoproject.comstxmosquitoproject.netstxmosquitoproject.org
synergyse.comtensorflow.org
tfhub.devthecleversense.comthegooglestore.comblogspot.althinkquarterly.comthinkwithgoogle.com
tiltbrush.comtxcloud.net
txvia.comunfiltered.news
useplannr.comusvimosquito.comusvimosquitoproject.comvelostrata.com
+verily.comverilylifesciences.comverilystudyhub.comverilystudywatch.comverilystudywatch.org
+wallet.com
waymo.comwaze.comweb.appweb.devwebappfieldguide.comwebmproject.orgwebpkgcache.com
+webrtc.orgweltweitwachsen.dewhatbrowser.org
whats.newwidevine.comwithgoogle.com
womenwill.comblogspot.aewomenwill.idwomenwill.inwomenwill.mx
x.company
+x.team
xn--9kr7l.comxn--9trs65b.comxn--flw351e.comxn--ggle-55da.comxn--gogl-0nd52e.comxn--gogl-1nd42e.comxplr.cozukunftswerkstatt.de
+v8.dev
v8project.organdroid.comandroidify.comfirebase.comfirebase.iofirebaseapp.comfirebaseio.comgoogleplay.comxn--ngstr-lra8j.comblogspot.mxblogspot.mk
+youtube.dk
+youtube.de
+youtube.czdeepmind.com
+youtube.cr
+youtube.es
+youtube.fi
+youtube.fr
+youtube.ge
+youtube.gr
+youtube.gtflutter.devflutterapp.compub.dev
+youtube.hk
+youtube.hr
+youtube.hu
+youtube.ie
+youtube.in
+youtube.iq
+youtube.isdeps.dev
deps.infoopensourceinsight.devopensourceinsights.dev
google.ad
+youtube.ru
+youtube.az
ytimg.comwithyoutube.comyoutu.berun.app yt.be
+youtube.ae
+youtube.al
+youtube.am
+youtube.at
+youtube.ro
+youtube.ba
+youtube.be
+youtube.bg
+youtube.bh
+youtube.bo
+youtube.by
+youtube.cayoutube.cat
+youtube.ch
+youtube.qa
+youtube.coyoutubemobilesupport.comyoutubekids.comyoutubego.inyoutubego.id
youtubego.comyoutubegaming.comyoutubefanfest.comyoutubeeducation.com
+youtube.vn
+youtube.uy
+youtube.ug
+youtube.ua
+youtube.tv
+youtube.tn
+youtube.svyoutube.soy
+youtube.rs
+youtube.sk
ggpht.comyoutube.com
+youtube.si
+youtube.sg
+youtube.se
+youtube.sa
+youtube.ee
+youtube.sngooglevideo.com
+youtube.cl
+youtube.pt
+youtube.pr
+youtube.pl
+youtube.pk
+youtube.ph
+youtube.pe
+youtube.pa
+youtube.no
+youtube.nl
+youtube.ni
+youtube.ng
+youtube.my
+youtube.mx
+youtube.mn
+youtube.mk
+youtube.me
+youtube.md
+youtube.ma
+youtube.ly
+youtube.lv
+youtube.lu
+youtube.lt
+youtube.lk
+youtube.la
+youtube.kz
+youtube.kr
+youtube.jp
+youtube.jo
+youtube.itwindowsuem.comwhychoosevmwareeuc.comwhychooseview.comwhychoosehorizon.com
+vnware.netvmwservices.comvmwsalesrewards.comvmworld2013.comvmworld2010.comvmworld.comvmwlearningplatform.comvmwlabconnect.com
+vmwidm.comvmwidm-ads.comvmwhorizonair.com
vmwgcomms.comvmwdemo.com
vmwarevmc.comvmwareviewpoint.comvmwareusergroupstore.comvmwarestuff.comvmwarelearningplatform.comvmwarelearning.comvmwareidentity.comvmwarehorizon.comvmwaregrid.comvmwareemeablog.comvmwaredemandcenter.comvmwarecloud.com!vmwarecertificationvideos.comvmwareausnews.comvmware20mosaic.com
+vmware.comvmware-techcenter.comvmware-cloudmanagement.comvmw.comvmtestdrive.com
+vmmark.comvmglobal.net
+virsto.net
+virsto.comvidmpreview.comvfabric.net
vcloudair.netvcanedge.comssdevrd.comsnapvolumes.compivotalinitiative.comlatamvmwareforum.comitfromtheinside.comimmidio.comhwslabs.com
greenplum.net
gopivotal.netgitstar.netgitstar.comgetboxer.comgeodesummit.comgemfire.netexperience-vmware.comcrit-staging.com
+cpedge.com
+cmpaas.comcloudvolumes.comcloudchoose.com
+cfblob.comdellcdn.comdell.comdell-brand.comcivitai.com
cloudcone.net
cloudcone.com
+cloudc.oneclco.ccline.melinemyshop.com
gcld-line.comlinegame.jp
linetv.twlinefriends.comlinecorp.com
line-scdn.net
+lin.ee
+nhncorp.jpline.bizline-cdn.netline-beta.me
line-apps.comline-apps-rc.comline-apps-beta.comlineshoppingseller.comlinemobile.com
prismlive.com
plug.game
naverlabs.comnaverads.comnaver.jpmodoo.atgrafolio.comband.uswebtoonscorp.comwebtoons.comwattpad.comstudioncorp.comstudiolico.comvday.iosnowcorp.comsnow.menaverfincorp.comworksmobile.com
+ncloud.comnaverncp.comnavercloudcorp.comclova.aipstatic.net
nheos.com
navercorp.com
naver.netnaver.me
naver.comsamsungqbe.comsamsungknox.comsamsunggalaxyfriends.com
samsungdm.comsamsungcloud.comsamsungapps.comsamsung.comknoxemm.comgame-platform.netgalaxymobile.jpgalaxyappstore.comporkbun.comgiffgaff.comxn--6eup7j.netxn--6eup7j.comwww8-hp.comworkstations.tvtouchsmartpc.orgtouchsmartpc.nettouchsmartpc.comthecompaqstore.comserviceshp.comprintspots.netprintspots.comprintersetupsupport.com
printeron.commyhpsupport.comlife-global.orgleavinghpinc.cominstantink.com
inkchoice.comi-123-hp.com
hpwsn.comhpwellnesscentral.com
hpwallart.comhpvirtualthin.com
+hpveer.comhpusertraining.comhpuniversity.info
hpuae.comhptrainingcenter.comhptouchpointmanager.comhptouch.comhpto.nethptechventures.comhpsuresupply.com
hpsupport.comhpstorethailand.comhpstore.comhpstore-emea.comhpstore-china.com
hpsso.comhpsprocket.com
hpspeaker.comhpsoftware.comhpsmartupdate.comhpsmartstage.comhpsmarts.comhpsmart.com
hpsignage.com
hpshopping.hk
hpshoping.com
+hpshop.comhpshooping.comhpservices.comhpserver.comhpsalescentral.comhpprintersupplies.comhpprinterinstalls.comhpprinterdrivers.comhpphotoscanners.comhppavillionlaptop.comhppage5000.comhponlineprinting.comhponlinehelp.comhpofficejetprinter.comhpmobile.com
+hpmini.comhpmicrcartridge.comhpmemorychips.comhpmarketplace.comkakaostyle.composty.kr
1thek.comappdomain.cloudbluemix.combluemix.netibm.com
+ibm.euibm.net
+ibm.us
s-bluemix.nets81c.com
consul.io
hashicorp.comnomadproject.io
packer.ioterraform.iovagrantcloud.com
vagrantup.comvaultproject.iomusixmatch.com
+mxmcdn.netuber-assets.comuber.comubereats.com
vultr.comsandisk.com
+sandisk.sg
+sandisk.itwesterndigital.comwdc.comg-technology.com
+sandisk.ae
+wd.com
+sandisk.id
+sandisk.nl
+sandisk.in
+sandisk.de
+sandisk.es
+sandisk.fr
+sandisk.hkhplipopensource.com
hplip.net
hplfmedia.comhplatexknowledgecenter.comhplargeformatremote.comhplaptopbattery.comhplaptop.comkakaoilaas.comkrosspictures.comyahoo.psyahoo.snyahoo.atyahoo.azyahoo.bayahoo.beyahoo.bgyahoo.biyahoo.bsyahoo.btyahoo.byyahoo.ca
yahoo.catyahoo.cdyahoo.cgyahoo.chyahoo.clyahoo.cmstaticflickr.com
+flickr.net
+flickr.comflic.kryahoo.aeyusercontent.com
ymail.comyimg.jpyimg.comyho.comyahoosportsbook.comyahoosandbox.comyahoomusic.comyahoohealth.comyahoofinance.comyahoodns.net
yahooapis.comtechcrunch.com
yahoo.com
+myguide.hkmaktoob.comyahoo.wsyahoo.vgyahoo.tnyahoo.asyahoo.tmyahoo.tlyahoo.deyahoo.tkyahoo.tgyahoo.styahoo.sryahoo.soyahoo.isyahoo.smyahoo.skyahoo.siyahoo.dkyahoo.sgyahoo.djyahoo.seyahoo.rwyahoo.ruyahoo.royahoo.ptyahoo.amyahoo.pnyahoo.plyahoo.phyahoo.nuyahoo.noyahoo.nl
yahoo.netyahoo.mxyahoo.mwyahoo.mkyahoo.meyahoo.mdyahoo.lvyahoo.luyahoo.ltyahoo.layahoo.joyahoo.czyahoo.jeyahoo.ityahoo.shyahoo.dmyahoo.eeyahoo.esyahoo.fiyahoo.fmyahoo.fryahoo.geyahoo.ggyahoo.glyahoo.gmyahoo.gpyahoo.gryahoo.gyyahoo.hkyahoo.hryahoo.huyahoo.ieyahoo.imyahoo.inhpkeyboard.comhpinstantink.comhpinstantink.cahpinkjet.comhpindigopress.com
hpinc.net
+hpinc.info
hpiie.orghpgraphicspartners.com
+hpgpas.com
+hpgift.comhpfeedback.com
+hpfaqs.comhpeventcenter.comhpeurope.comhpeprintcenter.comhpeprint.comhpengage.com
hpeclipse.com
hpdrivers.org
hpdrivers.comhpdriver.comhpdreamcolor.comhpdownloadstore.comhpdesktopcomputer.comhpdesignjetl25500.com
+hpdaas.comhpcustomersupport.nethpcustomersupport.comhpcu.org
hpcpi.comhpcontinuum.comhpconnectedstage.comhpconnected.ushpconnected.orghpconnected.nethpconnected.comhpcomputerservices.comhpcomputers.comhpcodewarsbcn.com
hpcmw.net
hpceo.com
hpccp.comhpcatridge.comhpcampus.comhpbundle.comhpbuiltforlearning.comhpbluecarpet.nethpbluecarpet.com
hpbestbuy.comhpapplicationscenter.comhpallinoneprinter.comhp3dsamplepromo.comhp3dprinter.comhp3dmetals.comhp3d.com hp.io
+hp.company
+hp.com
hp-ww.comhp-webplatform.comhp-printing.com
+hp-mns.com
inshot.cc
+inshot.com
inshotapp.com
perplexity.aikakaoenterprise.comkakaobankcontent.comkakaobank.io
kakaobank.comkakaopiccoma.comkakaomobility.comkakaoinvestment.comkakaobrain.com
+ss2.usawsedstart.comaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.plamaaozn.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com
amazon.ae
amazon.ca
+amazon.com
amazon.dewholeplanetfoundation.orgwholekidsfoundation.orgwholefoodsmarket.comwholefoods.comwholecitiesfoundation.orgwfm.com
primevideo.tv
+amazon.dev
amazon.es
amazon.fr
amazon.in
amazon.itamazon.jobs
amazon.jp
amazon.nl
+amazon.red
amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonbusiness.orgamazonbusinessblog.comamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazonlaunchpad.com!amazonliterarypartnership.comamazonlumberyard.wang
amazonpay.comamazonpay.in
amazonsdi.comamazonstudiosguilds.comamazonvideodirect.com
amzn.asiaamzn.comamzn.to
amznl.comassociates-amazon.comgameon-masters.comgdansk-amazon.com
awsbraket.commedia-amazon.com
primeday.infosiege-amazon.comssl-images-amazon.comueberamazon.deyamaxun.com
alexa.comaudible.comcreatespace.comamazontrust.comawstrust.comaboutamazon.esaboutamazon.deawsautoscaling.comelasticbeanstalk.comprimevideo.orgimages-amazon.comaboutamazon.euthinkboxsoftware.com
amazonaws.comamazonaws.info
amazonaws.net
amazonaws.orgamazonaws.tv
amazonses.comamazonworkdocs.comamplifyapp.comamplifyframework.comaws-iot-hackathon.comawsautopilot.comacmvalidations.comamazonaws-china.comacmvalidationsaws.comawseducate.com
amazonaws.bizawseducate.netawseducate.orgawsglobalaccelerator.comawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com
awsstatic.comawsthinkbox.comawstrack.mecdkworkshop.comcloudfront.comcloudfront.netcontainersonaws.comawscommandlineinterface.comaesworkshops.comprimevideo.infoaboutamazon.comboxofficemojo.comimdb.comimdb.tomedia-imdb.coma2z.com
kindle.it
kindle.in
+kindle.com
kindle.de
kindle.jp
kindle.frkindleproject.comkindleoasisnews.com
kindle.eskindleoasis.comkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.usprimevideo.com
primevideo.ccaiv-cdn.netamazonprimevideos.comamazonvideo.ccamazonvideo.comprime-video.comhp-invent.info
hp-invent.comhp-infolab.comhp-imagine.comgetprintersupports.comgaming-notebooks.comeprintsw.comdigitalpack.com
demoprint.comdavid-laserscanner.com
+compaq.orgcolorprotechnology.comamd.comamdfanstore.com
+radeon.comcampushp.comdrweb.bydrweb.cn
drweb.comdrweb.frdrweb.kzdrweb.uzdrweb-av.dedrweb-av.esdrweb-av.itdrweb-av.plbaterias-hp.comhubblephone.com
+tsi.aiopenweathermap.orgas-hp.ca
razer.comrazerofficial.comrazersupport.comrazerzone.jprespawnbyrazer.comkakao.vc
yandex.pl
+yandex.org
yandex.fi
yandex.fr
yandex.az
yandex.byyastatic.net
+yandex.comyandexcloud.net
yandex.uz
yandex.ua
yandex.tm
yandex.tj
yandex.de
yandex.ee
yandex.eu ya.ruyandex.aerodzen.ru
yandex.kg
yandex.kz
yandex.lt
yandex.lv
yandex.md
+yandex.netyandex.jobsxn--d1acpjx3f.xn--p1ai
yandex.ru
yandex.st
yandex.sx8008206616.com123hplaserjet.com
+123-hp.com
canon.netcanon.mec-ij.comanydesk.com
nomachine.comrustdesk.comteamviewer.com
teamviewer.usacer-group.comacer.comasus.com
asuscloud.comasuswebstorage.comblurams.comfirefox.commozilla.communityfirefoxusercontent.commdn.devmozilla.orgextensionworkshop.combugzilla.org
getpocket.comseamonkey-project.orgthunderbird.net
+mozgcp.net
crates.iodocs.rsmozilla.commozilla.netmdnplay.devmdnyalp.dev
rustup.rs
rust-lang.orgcanon.lucanon.ltcanon.kzcanon.itcanon.iecanon.hucanon.hr
chegg.comcheggcdn.com
nvidia.nlnvidiaforhp.comgeforce.comtegrazone.krtegrazone.jpgputechconf.com
tegrazone.comtegrazone.cogputechconf.eugputechconf.ingputechconf.jpnvidia.asia
nvidia.at
nvidia.be
nvidia.chshotwithgeforce.comnvidiagrid.net
nvidia.fr
nvidia.tw
nvidia.cz
+nvidia.com
nvidia.se
nvidia.ru
nvidia.ro
nvidia.pl
nvidia.no
nvidia.mx
nvidia.lu
nvidia.jp
nvidia.it
nvidia.in
nvidia.de
nvidia.dk
nvidia.es
nvidia.eu
nvidia.ficanon.grcanon.gecanon.nlcanon.ficanon.escanon.eecanon.dkcanon.decanon.no
canon-cee.comcanon.frcanon.plcanon.ptcanon.rocanon.rscanon.ru
+ipadair.cmcanon.sicanon.cz
canon.comcanon.skonkakao.net
panasonic.companasonic.jptechnics.com
qwant.comqwant.deqwant.frqwant.it
kgslb.combeats-bydreoutletssale.netauricularesbeatsmarkt.comapple.beapple.bgapple.bsapple.caapple.chapple.clapple.cmapple.co
apple.comapple.czapple.deapple.dkapple.ee
swift.orgappleswift.comitunesparty.comitunesmatch.comituneslogin.netituneslatino.comitunesiradio.comitunesfestivals.comitunesessentials.comitunes12days.com
itunes.us
+itunes.rio
+itunes.com
itunes.mx
itunes.hk
+itunes.org12diasderegalosdeitunes.cliutunes.com
itunes.caitunes-radio.netitunesradio.comituneas.comitunbes.comitun.es 12joursdecadeauxdeitunes.com12diasderegalosdeitunes.pe12diasderegalosdeitunes.hn12diasderegalosdeitunes.gt12diasderegalosdeitunes.crapple.esapple.euapple.fiapple.fr
apple.hamburgapple.hnapple.hrapple.huapple.ieapple.inapple.isapple.itapple.joapple.jpapple.krapple.lkapple.ltapple.lvapple.meapple.my
apple.netitunesradio.rioitunesradio.tvitunesstore.coitunesu.com12diasderegalosdeitunes.comapple.nlapple.noapple.pkapple.plapple.ptapple.roapple.rsapple.ruapple.saapple.seapple.sgapple.siapple.skapple.soapple.ttapple.twapple.ukapple.usapple.xn--czr694bapple.xn--fiqs8s
apple.xyz
aplestore.comapple-store.netapple-store.wang
applestor.com
applestore.bg
applestore.cc
applestore.ch
applestore.cmitunesu.net!12diasdepresentesdeitunes.com
wwwitunes.com12diasderegalosdeitunes.coapplestore.comitunesradio.tw
itunes.co
wwwicloud.commylcloud.netmyicloud.net
+me.comios-icloud.comicloudsetup.comicloudsecure.neticloudos.neticloudos.deicloudo.net
+icloudo.deicloudo.com
icloudpay.net
icloudnet.net
applestore.de
applestore.hk
applestore.kr
applestore.meapplestore.neticloudmusic.net
applestore.ph
applestore.qa
applestore.sgapplestore.wangapplestoreonline.comapplestorepro.euonlineapplestore.comapp-store.wangappe-store.comappleappstore.netappleappstore.tv
appsto.reicloudmail.netappstore.hk
auth0.comappstore.phasto.retvappstore.netapple-imac.com
appleimac.comimac-apple.comimac-applecomputer.comimac.coicloudhome.comimac.comimac.euimac.grimac.oneimac.rs
imacapple.comimacapplecomputer.comebookforipad.comeuroipad.comfindmyipad.com
indiaipad.comicloude.comipad.de
ipad.host
ipad.wang
ipad3.com cheapbeatsbydreoutlet-nz.comzipcine.com#autodeskdocandmediaamericas.com
icloudbox.net
+ipadair.frbeats-bydrestore.com
+ipadair.ie
+ipadair.jp
+ipadair.twipadaustralia.comipadmini.cm
icloudads.netipadmini.lkipadpro.buzz
+ukipad.comappleiphone.huappleiphone.netappleiphonecell.combestiphonestuff.comcooliphonecasesstore.comcustom-iphonecase.comdesigneriphonescases.com
dl-iphone.comfundaiphone5s.com
hebiphone.com
hf-iphone.com
+iphine.com
iphone-cd.com
iphone-cn.com
iphone-sh.comiphone-vip1.comiphone-vip2.comiphone-vip3.comiphone-vip4.comiphone-vip5.comiphone-x.tv
iphone-yh.com
iphone-zh.com
iphone.cm
+iphone.com
icloud.vn
icloud.sk
iphone.esiphone.host
icloud.si
iphone.pt
iphone.rs
iphone.ruiphone.wangiphone4.com
icloud.seiphone4s.comiphone5.comiphone5casescovers.comiphone5s5case.com
icloud.roiphonecase2013.comiphonecase5.comiphonecases100.comiphonecases5.com
icloud.ptiphonecollcase.comiphonefc.comiphonegermany.comiphonehangzhou.comiphoneimessage.comiphoneplus.wang
iphonerip.netiphonese.tviphoneunlockimei.comiphonexs.tvonlyiphone5case.comaplleipods.comappleclassicipod.comdownloadsforipod.comipod.caipod.chipod.cmipod.co
+icloud.org
icloud.om
icloud.lvipod.com
icloud.jp
icloud.is
icloud.ie
icloud.hu
icloud.fripod.deipod.esipod.euipod.fripod.gripod.hkipod.isipod.netipod.noipod.pkipod.rsipod.ruipod.tw
ipodcentre.nlipodcleaner.comipoditouch.comipodnano.comipodnano.netipodprices.com
+ipodrip.ca
icloud.fi
ipods.com
icloud.eeipodtouch.co
ipodtouch.com
+myipod.netoffrezdesipods.comsimplyipod.comwwwipodlounge.comimacsources.comlaunchpad.wangmac.wang
+macbook.co
+macbook.hk
+macbook.twmacbook.wang
icloud.de
+icloud.commacbookair.com
icloud.chicloud-isupport.com
macbookair.es
macbookair.hk
macbookair.kr
macbookair.jpmacbookair.net
macbookpro.comacbookpro.comicloud-content.commacbookpro.net
macbookpro.usmacbookpros.commacbooksale.comwwwmacbookair.comapplemx-icloud.com
applewatch.hk
applewatch.tv
applewatch.twapplewatch.wangapplewatchedition.comapplewatchseries3.netapplewatchsport.comapplemusic.berlin
applemusic.coapplemusic.comyourmonsterbeats.comapplemusic.hamburgapplemusic.wangapplemusicconnect.comapplemusicfestival.commusickit.netwwwapplemusic.comworldcoinpay.com
+apple.newsappleenews.comapplenews.berlinapplenews.hamburgapplenews.tvapplenewsformat.com
apple-pay.comapple-pay.rsapple-pay.wangapplepay.berlinwholesaleonlinemart.comwholesalefine.comapplepay.hamburgapplepay.hk
applepay.infoapplepay.jpapplepay.rsapplepay.tvapplepaycash.netapplepaycash.tv!applepaymerchantsupplies.infoapplepaysupplies.berlinapplepaysupplies.comapplepaysupplies.infoapplepaysupplies.netapplepaysupplies.tvapplewallet.comapplewallet.tv
+i-book.com
+i-book.netwholesalediscountpurses.com
ibook.comibook.eu
ibook.netibookpartner.comibooksauthor.com
iphoto.eu
iphoto.no
iphoto.seiphoto.wang
imovie.euimoviegallery.comimoviestage.comapplecare.berlinapplecare.ccapplecare.euapplecare.hamburgapplecare.wangappledarwin.comappledarwin.netdarwinsource.comdarwinsource.orgdarwinsourcecode.comappleaccount.netappleid-applemx.comappleid-applemx.usappleid-iclou.com
appleid-uk.usappleid.berlinappleid.comappleid.hamburg
+appleid.hk
ids-apple.com
myappleid.comappletv.com
+appletv.frappletv.wangappleone.audio
appleone.blog
appleone.chatappleone.cloud
appleone.clubappleone.community
appleone.filmappleone.guide
appleone.hostappleone.space
appleone.techappleone.website
+shazam.comwholesale-exporter1.com
wasdj.com5lml.com
+a0pple.netaapl.twaaplimg.comairport.brusselsairport.com
+airport.euairsupportapp.comairtunes.com
airtunes.infoairtunes.netalchemysynth.com
ap0le.comaple.com
apole.com
+app0le.com
+appl-e.comappl.com
+appl4e.com
appla.comapple-darwin.comapple-darwin.netapple-darwin.org
apple-dns.com
apple-dns.netapple-enews.comapple-expo.com
apple-expo.euapple-hk.com
apple-inc.netapple-livephotoskit.comapple-online.com
apple-usa.netappleafrica.comappleantilles.comappleaustralia.com
vipshoes2.comvipheadphones.comapplebk.netapplecarbon.comapplecard.tvvipbeatsbydre.comapplecentar.rs
vip-beats.comapplecentre.info
v-has.comapplecom.comapplecomputer-imac.com&"usa-beatsbydreheadphonesonsale.net
+unstyle.usapplecomputer.comubnw.nettteshop.comapplecomputer.huapplecomputer.krapplecomputerimac.comapplecomputerinc.info
tradevip1.comapplecoronavirus.comappleexpo.euappleexpo.infoapplefilmaker.comapplefilmmaker.comapplefinalcutproworld.comapplefinalcutproworld.netapplefinalcutproworld.orgapplehongkong.comtopbeatsforsale.comappleinclegal.comappleipodsettlement.comappleiservices.com
applelink.comapplemagickeyboard.comtopbeatsdealer.comapplemasters.infoappleonline.comappleonline.net appleoriginalproductions.com
+appleos.tvapplepencil.netapplepodcasts.comtopbeatsbydrdreoutlet.com
+theuab.netapplereach.comapplereach.net
apples-msk.ruapplescreensavers.comapplescript.infoappleshare.infothebeatsheadphonesale.comapplesurveys.comappletaiwan.com
appletips.netappleweb.netapplexpo.netapplezh.com
applf.com
+applfe.com
+applle.com
applw.comappmediagroup.com
+appule.com
appye.com
apyle.com
beddit.tvbraeburncapital.comburstly.netburstlyrewards.combuyaapl.combuyaapl.netbuyaple.com
camelphat.comcamelspaceeffect.com
+carbon.comcatalina.hk
cdn-apple.com
chomp.com
+coreml.netdashwood360.comdesktopmovie.comdesktopmovie.netdesktopmovie.orgdesktopmovies.netdesktopmovies.orgdeveloper-advisor.comdevice-manager.usdigitalhub.comdiscussionsapple.com
+dot-mac.de
dotmac.dedvdstudiopro.bizdvdstudiopro.comdvdstudiopro.infodvdstudiopro.netdvdstudiopro.orgdvdstudiopro.us
+earpod.net
+ecgapp.netedu-research.orgthebeatsbydre.netemac.in
emagic.de
+eworld.comfaceid99.comfaceid99.netfaceidglobal.comfacetime.netfinalcutpro.comfind-apple.comfirewire.clfirewire.eugeoport.com
+hopstop.tvthebeatsbydre.comidvd.eu
ikids.comthe-monster-beats.comilife.euilife.gr
+ilife.wangimessage.tvinsidemacintosh.comiosinthecar.comipa-iphone.net
ipple.comischool.comitools.info
iwork.comiwork.se
+iwork.wangjetfuelapp.comjetfuelapps.comlatticedata.com
livephotos.tvtakegoto.commac-mini.commac.comszwinnertechnology.com
+mac.eu
+mac.rsmacappsto.re
macboxset.commach-os.commach-os.net
+machos.netmacintosh.eumacintoshsoftware.commacmini.com szcheapmonsterheadphones.commacossierra.commacosx.infomacosxlion.commacpazar.commacreach.commacreach.netmobileme.dksverigebeatsbydrdre.commzstatic.com
+newton.comnext.com
overapple.compowerbook.eupullstring.netquatrowireless.comquicktime.cc
quicktime.comsustainthesound.comquicktime.eu
quicktime.netquicktime.tvreform-apple.comservices-apple.netsiri.comspektral.cctexture.comthinkdifferent.us
+touchid.tvtouchid.wangtracking-location.comtruedepth3d.com
tryrating.comsupplybestjerseys.com
webobjects.de
webobjects.euwebobjects.net
wuxiapple.comwwapple.netwww-sms-apple.comwwwapple.comwwwapple.net
wwwlapple.com xn--fiqs8sxootzz.xn--hxt814e!xn--gtvq61aiijy0b.xn--hxt814exn--gtvz22d.wangxn--gtvz22d.xn--hxt814exn--hxtr4rozx.xn--czr694b xn--kput3imi374g.xn--hxt814e xn--ruq8a011kt6y.xn--hxt814eresearchkit.tvcups.orgcarekit.orgresearchandcare.orgwebobjects.comfoundationdb.orgmacosforge.orgmacruby.commacruby.netmacruby.orgapple-mapkit.comapple-cloudkit.com
wpewebkit.orgresearchkit.hkresearchkit.netresearchkit.orgcalendarserver.orgservicetalk.io
+webkit.org
webkitgtk.orgsuperearsenjoy.comsunglassessale2014.comsulwerphoto.comstudiobeatsbydrdre.comstraightouttasomewhere.comspiritclubs.comspecialtyheadphones.comsoso7778.comsolostudioksale.comsneakerskick.comsneakerpage.netsneaker666.comshoppinguheadphones.comshopping-days.netshopmonsterbeats.comshopdrebeats.comshopcustomizedbeats.com
shopbydre.comshopbeatsdre.comshop-headphones.net
shoestop2.com
+shoers.com
+scnshop.cc100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com
2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com
+aanaan.comabcheadphones.comabeatsbydrdre.com
aeasyshop.com
+airmay.com
+ajtalk.comalbeats.com
annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comapple.aeausbeatsbydrdre.combag-glasses1.com
bandgirlz.combaxsound.com
bbestmall.com
+beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.commonsterbeatscasques.comapple.at
+ipadair.hkbeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com
beats1.cc
beats1.tvbeats123.com
+beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com
beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.combeatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.combeatsep.combeatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.netbeatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang
beatsneon.combeatsnzsale.com
beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.combeatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.combeatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com
+biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com
bookonsky.net
+bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com
brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com
casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com
cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com
+ipadair.clcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com
+cmhalq.comcnshopin.comcoolmonster.netcozydrdrebeats.comcqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com
drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.comdrebyby.comdremonsterbeatsoutlets.comdreprobeats.comdreprofy.com
+dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.comfree-aa.comfree-sns.comfrishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net
gobeatsye.comgobuyonlinestore.net
goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.comhighbolt.net highdefinitionbeatsbydre.com
hipaa6020.comhipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com
hrsaz.com
ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.comjkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.comlexuemei.comlovebeatsdr.com
lovemarca.comluckyissue.com
+lyzsxx.com
mairbeats.com
+makeeu.commallheadphone.commbeats-tech.commbheadphone.com
+micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.combeats-bydreoutletsale.netmonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com
+ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.comneborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com
newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com
nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com
ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com
onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com
rbsgr.comrepsneakermall.comrepswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.comsamebags.comsanvaras.comcanon.tjcanon.uacanon.chcanon.cacanon.bgcanon.becanon.bacanon.azcanon.uzcanon.amcanonfoundation.orgcanon-ois.qacanon-me.comcanon-europe.comcanon-europa.comcanon-emirates.aecanon-emea.comcanonproprinters.com
canon-cna.comcanon-cmos-sensors.comcanon.atcanon.lvgiffgaff.designalicloud.comalibabacloud.com
spacemail.com
spaceship.com
+snapkit.cosnapchat.comsnap.comsnap-dev.net
+sc-cdn.netnowe.hknowe.comnow.comhkteducation.comnow-ashare.comuhub.compccw.comhktshop.comnetvigator.compccwglobal.comhkt.comhkt-eye.comhkt-enterprise.com
hkcsl.comesmarthealth.comviu.com
+viu.tvmoov.hkpccwsolutions.com
+now-tv.comhktpremier.comrouterboard.com
mynetname.net mt.lvmikrotik.comxboxplayanywhere.com
+xboxone.euxboxone.com
+xboxone.coxboxlive.comxboxgamestudios.comxboxgamepass.com
+xboxab.comxbox360.org
+xbox360.euxbox360.com
+xbox360.coxbox.orgxbox.euxbox.comxbox.cotellmewhygame.comrenovacionxboxlive.comorithegame.comgamepass.comforzarc.comforzaracingchampionship.comforzamotorsport.netmicrosoft.azxboxservices.comxboxstudios.com
+xbx.lv
+beth.gamesbethesda.netbethesdagamestudios.combethsoft.com
sharepoint.cnlivefilestore.comsharepointonline.com1drv.comonedrive.comsharepoint.commicrosoft.bemicrosoft.by
start.commicrosoftstart.commsnkids.commsnewskids.orgmsnewskids.netmsnewskids.commsn.commicrosoftnewskids.orgmicrosoftnewskids.netmicrosoftnewskids.commicrosoftnewsforkids.orgmicrosoftnewsforkids.netmicrosoftnewsforkids.commicrosoftnews.orgmicrosoftnews.netmicrosoftnews.commicrosoftnews.cc
+msocsp.comdoom.comxamarin.comvscode-unpkg.netvscode-cdn.net
+vscode.devvsassets.io
vfsforgit.org
vfsforgit.comvisualstudio.netvisualstudio.euvisualstudio.covisualstudio.comvisualstudio-staging.comuwpcommunitytoolkit.comtimelinestoryteller.comsqlserveronlinux.com
+sankie.netpwabuilder.composhtestgallery.comopentranslatorstothings.org
nugettest.org
nuget.orgmsropendata.commspairlift.commsinnovationchallenge.commsdn.commono-project.com
mmdnn.commicrosoftsqlserver.commicrosoftsilverlight.netmicrosoftsilverlight.orgmicrosoftsilverlight.commicrosoftreactor.orgmicrosoftreactor.netkakaotalk.jpkakaoent.comsonybuilding.jpmotionpictureser.com sonyentertainmentnetwork.comsony-semicon.comginzasonypark.jpsony-africa.com
sony-asia.comsony-europe.complaystation.netsony-latin.comsony-mea.comsony-olympus-medical.comsony-promotion.eusony.atsony.basony.besony.bgsony.bizsony.casony.chsony.clplaystation.comyourfantasybeginsnow.com
+wwtbam.comsony.eswheelpop.com#sonypicturestelevisiongames.comsonypicturestelevision.comsonypicturesstudios.comsony.comsonypicturesmuseum.comsonypicturesanimation.comsonypictures.comsonyclassics.complayshowtv.comsony.euplayshow.iosony.roimageworks.com
sovec.net
+sonypcl.jpsonylatvija.comsonykigyo.jpsonyglobalsolutions.jpsonydna.comsonydesign.comnuro.jpsonybsc.comsony.uasony.sksony.sisony.sesony.czsony.desony.dksony.eesony.rusony.fisony.rssony.frsony.grsony.hrsony.husony.iesony.itsony.kzsony.ltsony.lusony.lvsony.netsony.nlsony.nosony.plsony.ptmicrosoftreactor.infomicrosoftiotinsiderlabs.commicrosoftgamestack.commicrosoftadc.commicrobit.org
+jwt.msinsiderdevtour.comgraphengine.iogamesstack.comdot.netdevopsassessment.netcodethemicrobit.combotframework.com
+blazor.netappcenter.ms
+apisof.netapi-extractor.comadaptivecards.ioelderscrolls.comcallersbane.com
minecraft.net
npmjs.com
npm.communityatom.iothegithubshop.comrepo.newopensource.guide
myoctocat.comgithubusercontent.comgithubuniverse.comgithubstatus.com
+git.iodependabot.com
npmjs.orggithubcopilot.comgithubassets.com
githubapp.com
github.io
+github.dev10xfotolia.com2o7.netacrobat.comadbecrsl.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com
adobe.comadobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecontent.ioadobecreativityawards.comadobedc.net
adobedemo.comadobedtm.comadobeexchange.comadobeexperienceawards.comadobegov.comadobehiddentreasures.comadobejanus.comadobeku.comadobelanding.comadobelogin.com
adobeoobe.comadobeplatinumclub.comadobeprojectm.comadobesc.com
adobesign.comadobesigncdn.comadobespark.comadobess.comadobestock.comadobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.comassetsadobe.com
authorxml.combusinesscatalyst.comccnsite.com
ccpsx.com
+demdex.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.comdouwriteright.comechocdn.comechosign.com
edgefonts.netenablementadobe.com
ftcdn.net
gostorego.comimagineecommerce.commacromedia.commagentoliveconference.commarketing-nirvana.comomniture.com
+omtrdc.net
photoshop.complacesdocs.comsundanceignite2016.comworldsecureemail.comworldsecuresystems.comadobe.iodevelopria.combehance.nets2stagehance.comadobecc.comadobecce.comadobeccstatic.comcreativecloud.comcreativesdk.comcotolia.comffotolia.comfiotolia.comfoftolia.comfonolia.comfotiolia.comfotoiia.comfotolia-noticias.com
+fotolia.ccfotolia.com
+fotolia.tvfotolja.comfptolia.comgfotolia.commotolia.comphotolia.nettenbyfotolia.comvotolia.combluefootcms.commageconf.commagento.commagento.netmagentocommerce.commagentomobile.commarketing-cloud.commarketo.commarketo.net
+marketo.tvmarketodesigner.commarketolive.com
+mktdns.commkto-c0100.commktorest.commktroute.commobilemarketo.com&"revenue-performance-management.comtoutapp.comcompresspdf.newpdf.newsign.new
+scene7.comtypekit.comtypekit.netgithub.community
+github.com
aorus.comgigabyte.comkakaocdn.netgodaddy.comx.co
+ai.comchatgpt.com
oaistatic.comoaiusercontent.com
+openai.comgithub.blogbandwagonhost.combwh1.netbwh8.net
bwh81.net
bwh88.net
bwh89.net
bwhstatus.com
zigzag.kr
+mcisco.comapp-dynamics.comcciesecuritylabs.comccievoicelabs.com
ccna5.netcisco-returns.comcisco-warrantyfinder.com
cisco.com
+cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.comciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com
ciscolive.comcisconetspace.comcisconetspace.infocisconetspace.netcisconetapp.comciscopartnermarketing.comciscopowercube.comciscoprice.comciscoresearch.comciscosoftware.com
ciscospark.caciscospark.com
ciscospark.jpciscotaccc.comciscotr.com
ciscoturk.netciscovideo.comciscowebseminars.com
cloudlock.comcloupia.comcloupia.netconnect-in-canada.comcoreoptics.net cs.co
+devm2m.comdnaspaces.io
flipshare.comgpstheseries.cominlethd.cominternetofeverything.comioe.comkscisco.comm2m.comacademynetriders.comobsrvbl.com
metacloud.commindmeld.commultiplydiversity.commyciscobenefits.com
mysdn.com
+mysdn.info
mysdn.netnetacad.comnetacad.netobservable.netmediafiles-cisco.com
parstream.com
parstream.net
parstream.orgservices-exchange.comstatic-cisco.comtandberg-china.comtandberg.com
+versly.comvideochampion.comvirtuata.comwballiance.com!whyiwantciscotelepresence.comwifi-mx.comyoutubecisco.comcciernslabs.com
webex.comappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.org
+mearki.com
meraki-go.com
meraki.hkmerakigo.com
+tail-f.com
tailf.comwebex.cawebex.frwebex.eswebex.degithubpreview.devgithubnext.comghcr.iogithubhackathon.comsprinklesapp.comrenovacionoffice.comoffice365tw.comoffice365love.commsunlimitedcloudsummit.com!microsoftpartnersolutions.commicrosoftmxfilantropia.comimgsmail.rumail.rumycdn.me
anthropic.com
claude.aiclaudeusercontent.comaccbusiness.com
+atandt.comatt-bundles.com
att-japan.comatt-mail.comatt-promotions.comatt-rsvp.comatt.comatt.jobsatt.net
+att.tvattalascom.comattbelieves.comattbusiness.net
attcenter.comattcollaborate.comattexperts.com
attglobal.netattinnovationspace.comattinternetservice.com
+attjoy.comattnetclient.comattonlineoffers.comattproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com
+attssl.comattstadium.comattsuppliers.comatttvnow.comattuverseoffers.comattuverseonline.comattvoip.comattwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com
bellsouth.net
+budatt.com
+cobatt.com
currently.com
currently.netdirectvbusinessmarket.comenterprisepaging.com
itcanwait.commymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com
signalbar.comsundayready.comsynaptic.netthanksloyalty.com
tvpromise.com
+uverse.comwebhosting.comatt-idns.net
+attdns.com
+attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.comdierectv.com
+dirctv.com
direcpath.com
direcpath.netdirecttv-deals.tvdirecttv-dish.comdkrecttv.comdirecttv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.comdirectv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com
directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.comdireectv.com
+diretv.comdtv2009offers.comfreedirecttvspecial.comgetdirect.tv
hddirectv.comle-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com
txdirectv.com
xandr.comcsifund.orghkbn.net
+hkbnes.netjos.commicrosoftlatamholiday.commicrosoftdiplomados.com
kakao.comdaumkakao.io
+oath.cloudoath.comouroath.comstatic-verizon.com
+uplynk.comverizon.comverizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.comvzw.com
+xo.comomniroot.commicrosoftcloudsummit.commicrosoft-give.commasalladeloslimites.comflipwithsurface.com
+dictate.msbluehatnights.com
bingworld.combingvisualsearch.combingsandbox.combingparachute.combingapistatistics.combingapis.combingagencyawards.combingads.combing123.combing.netbing.commicrosoft.ca
azure-dns.org
azure-dns.netazure-dns.info
azure-dns.comwindowsazure.comtryfunctions.comtrafficmanager.netserverlesslibrary.netmsn.netmicrosoftiotcentral.commicrosofteca.com"microsoftazuresponsorships.com management-azure-devices.net$ management-azure-devices-int.net
gotcosmos.comdevopsms.comcosmosdb.net
cosmosdb.infoazurewebsites.netazurestackvalidation.comazuresmartspaces.netazureserviceprofiler.comazureplanetscale.netazureplanetscale.infoazureiotsuite.comazureiotsolutions.comazureiotcentral.comazurefd.net
azureedge.netazureedge-test.netazuredns-prd.orgazuredns-prd.infoazuredigitaltwins.netazuredigitaltwins.comazuredigitaltwin.comazuredevopslaunch.comazuredatabricks.netazurecosmosdb.netazurecosmosdb.infoazurecosmosdb.comazurecosmos.netazurecontainer.io
azurecomm.netazurecomcdn.net
azure.netmindgeek.comlivehdcams.comdigitalplayground.com
+porniq.com
+pornmd.comseancody.comthumbzilla.comtwistys.com
+webcams.tvwhynotbi.commydirtyhobby.com
+mdhcdn.com
+nutaku.com
+nutaku.netgaytube.com
+phncdn.comphprcdn.com
babes.compornhub-deutsch.netpornhubapparel.compornhub.compornhub.orgpornhubpremium.comredtubepremium.commen.comporngub.com
+rdtcdn.com digitalplaygroundnetwork.com
tube8.comtube8.frbrazzer.combrazzers.combrazzers.xxxbrazzersnetwork.com
mofos.comrealitykings.com
+rk.comextremetube.comkeezmovies.comyouporn.comyouporngay.comyoupornpremium.com
youpornru.comyopornshop.com
+ypncdn.comredtube.com
azure.com
neuralink.comkakaocloud.comkakaogamescorp.com
oracleimg.comoracleinfinity.io
covid19rx.org
+oracle.comoraclecloud.comoraclefoundation.org
+bronto.comcovid19-rx.orgsun.comvirtualbox.orgaddthis.comaddthiscdn.comaddthisedge.comateam-oracle.comjava.comjava.net
tailscale.comtailscale.io
+ts.netmyqnapcloud.comqlink.toqnap.comboringcompany.cominternetdownloadmanager.comregisteridm.com
tonec.comlogitech.fr
logicoolg.comlogitech.bizlogitech.comlogi.comlogitech.io
logitechg.comlogitechg.frworldsfastestgamer.netazure-test.netazure-sphere.comazure-mobile.nets-msedge.netyour-server.deyour-objectstorage.comsecond-ns.de
second-ns.comhtznr.li
+hetzner.dehetzner.companyhetzner.com
hetzner.cloudfirst-ns.de
+winhec.netsway-cdn.commicrosoft.cl
microsoft.commicrosoft.czmicrosoft.demicrosoft.dkmicrosoft.eemicrosoft.esmicrosoft.eumicrosoft.fimicrosoft.gemicrosoft.humicrosoft.iomicrosoft.ismicrosoft.itmicrosoft.jpmicrosoft.ltmicrosoft.lumicrosoft.lvmicrosoft.md
microsoft.netmicrosoft.plmicrosoft.pt
microsoft.redmicrosoft.romicrosoft.rsmicrosoft.rumicrosoft.semicrosoft.simicrosoft.tvmicrosoft.uamicrosoft.uzmicrosoft.vnfemalefounderscomp.com
+m12.vca-msedge.net
+aka.msankarazirvesi2018.comapplicationinsights.ioapplicationinsights.netaria.msasp.net
aspnetcdn.com
+binads.com
bluehatil.com
boswp.combrazilpartneruniversity.combreakdown.mecentralvalidation.com
+ch9.mscharticulator.comcloudapp.netcloudappsecurity.comcortanaanalytics.comcortanaskills.comcrmdynint-gcc.com
crmdynint.comcrossborderexpansion.comdocs.comdynamics.com
edgesuite.net
efproject.netfasttrackreadysupport.comfluidpreview.comfootprintdns.comgameuxmasterguide.com
+gears5.comgearspop.comgearstactics.com
+gfx.ms
+gigjam.comhololens.com
+hotmail.cohotmail.com
+hotmail.euhotmail.nethotmail.orghummingbird.ms
+ie8.coie9.comie10.comie11.cominternetexplorer.cointernetexplorer.com
imaginecup.pl
+ingads.comintunewiki.comiotinactionevents.com
+kidgrid.tvkumo.comlatampartneruniversity.comlive.comlive.eulive.netlivingyourambition.commakecode.orgmanagedmeetingrooms.commeetfasttrack.commeetyourdevices.commepn.commicrosoft-falcon.iomicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft365.commicrosoftaccountguard.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftapp.netmicrosoftcloud.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftedge.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftlatamaitour.commicrosoftlinc.commicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.commicrosoftready.commicrosoftsiteselection.commicrosoftstore.commicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commomentumms.commorphcharts.commpnevolution.comms-studiosmedia.comms365surfaceoffer.com
msads.net
+msauth.netmschallenge2018.com
+msecnd.net
+msedge.net
msft.infomsft.netmsftauth.netmsfteducation.camsftnet.orgmsgamesresearch.com
+msocdn.commsturing.orgmsudalosti.commymicrosoft.comnextechafrica.netnxta.orgo365weve-dev.como365weve-ppe.como365weve.com
+office.com
+office.net
office365.comonenote.comonenote.netonestore.msopticsforthecloud.netoutingsapp.comoutlook.compassport.net
+pixapp.netpowerappscdn.netpowerautomate.compowerbi.compowershellgallery.comprojectmurphy.netprojectsangam.com
+pxt.ios-dc-msedge.nets-microsoft.comazure-devices.net
+s-msft.com
s-msn.com
sfbassets.com
sfbassets.net
+sfx.mssignalr.net
skype.com
+mojang.comskypeassets.comskypeassets.netstaffhub.mssuccesswithteams.comsurface.com
+svc.msazure-devices-int.netsway.comsysinternals.comtailwindtraders.com
+techhub.mstfsallin.nettranslatetheweb.comunlocklimitlesslearning.com
+userpxt.iovideobreakdown.comvideoindexer.aivirtualearth.netvsallin.net
+wbd.mswhat-fan.netwindows-int.netwindows.comwindows.net
+windows.nlwindows8.hkwindowscommunity.netwindowsmarketplace.comwindowsphone-int.comwindowsphone.comwindowssearch.comwindowsupdate.com
+winhec.com
microsoft.cat
+yammer.comminecraftshop.comminecraftservices.com
skype.netmicrosoft.ch
youtube.co.aeyahoo.co.uzlogitech.com.cnlogicool.co.jpredtube.com.bryahoo.co.aoyahoo.co.bwyahoo.co.ckyahoo.co.cryahoo.co.idyahoo.co.ilyahoo.co.inyahoo.co.jpyahoo.co.kryahoo.co.mzyahoo.co.nzyahoo.co.thyahoo.co.tzyahoo.co.ukyahoo.co.veyahoo.co.viyahoo-news.com.hkyahoo.co.zayahoo.com.afyahoo.com.agyahoo.com.aiyahoo.com.aryahoo.com.auyahoo.com.boyahoo.com.bryahoo.com.coyahoo.com.doyahoo.com.ecyahoo.com.egyahoo.com.esyahoo.com.fjyahoo.com.giyahoo.com.gtyahoo.com.hkyahoo.com.kwyahoo.com.lbyahoo.com.mtyahoo.com.mxyahoo.com.myyahoo.com.nayahoo.com.nfyahoo.com.omyahoo.com.payahoo.com.peyahoo.com.phyahoo.com.pkyahoo.com.pryahoo.com.pyyahoo.com.sayahoo.com.sbyahoo.com.sgyahoo.com.svyahoo.com.tjyahoo.com.tryahoo.com.twyahoo.com.uayahoo.com.uyyahoo.com.vcyahoo.com.vnyahoo.com.bzyahoo.com.lyyahoo.com.bdspeedtest.com.hkhkbn.com.hkwebex.co.inwebex.co.itwebex.co.jpwebex.com.mxwebex.com.hkwebex.com.brwebex.com.auwebex.co.krwebex.co.nzwebex.co.ukappdynamics.co.uk
marketo.co.ukmageconf.com.uasony-semicon.co.jpsony-hes.co.jp
+sony.co.crsonynetwork.co.jp
+sony.co.id
+sony.co.in
+sony.co.kr
+sony.co.nz
+sony.co.thso-net.ne.jpsony.com.arsony.com.ausony.com.bosony.com.brsony.com.cosony.com.ecsony.com.gtsony.com.hk
so-net.net.twsony.com.hnsonytc.co.jpsonystoragemedia.co.jpsonyprotechnosupport.co.jpsony.com.mksony.com.mxsony.com.mysony.com.nisony.com.pasony.com.pesony.com.phsony.com.sgsonybo.co.jpsony.com.svsony.com.trsony.com.twsony.com.vn
+sony.co.jpsony.com.do
+sony.co.ukchtf.org.tw
+cht.com.twapple.co.hu!12diasderegalosdeitunes.co.cr!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.ve"12diasderegalosdeitunes.com.co"12diasderegalosdeitunes.com.hnitunes.co.th"12diasderegalosdeitunes.com.ni"12diasderegalosdeitunes.com.veapple.co.jpapple.co.krapple.co.mzapple.co.nzapple.co.thapple.co.ukapple.com.afapple.com.auapple.com.boapple.com.brapple.com.coapple.com.deapple.com.doapple.com.grapple.com.gyapple.com.jmapple.com.lkapple.com.mgapple.com.mxapple.com.myapple.com.paapple.com.pe
iphone.com.auapple.com.prapple.com.ptapple.com.pyapple.com.sgapple.com.svapple.com.trapple.com.twapple.com.uyapple.net.grapplestore.co.huapplestore.co.jpapplestore.co.ugapplestore.co.ukapplestore.com.auapplestore.com.bnapplestore.com.eeapplestore.com.egapplestore.com.grapplestore.com.hkapplestore.com.hrapplestore.com.joapplestore.com.myapplestore.com.phapplestore.com.plapplestore.com.ptapplestore.com.roapplestore.com.ruapplestore.com.snapplestore.com.twapplestore.net.grappstore.co.id
+imac.co.nz
+ipad.co.kripadair.com.bripadair.com.esipadmini.com.lkapple.com.plappleclub.com.hkiphone4.com.briphoneacessorios.com.briphoneclaro.com.br
+ipod.co.nz
+ipod.co.uk
+ipod.co.zaipod.com.auipod.com.fripod.com.hkipod.com.sgipod.com.tw
iphone.net.gripodshop.com.au
iphone.com.grmacbookair.co.ukmacbookair.com.auvisualstudio.co.ukspoprod-a.akamaihd.netskype-edf.akadns.netskypedata.akadns.netlive.com.aumicrosoftstore.com.hk
+sena.co.krlionhearts.co.krootbstudio.co.krmacbookair.com.esmacbookpro.com.auipodrocks.com.auapplemusic.com.auapple.comscoreresearch.comapplepay.co.rsapplepay.com.twibook.co.nz1to1computing.com.au1to1conference.com.auappleaustralia.com.auappleaustralia.net.auapplecentar.co.rsapplecentre.com.auapple.co.crapplecomputer.co.inapplecomputer.co.nzapplecomputer.com.hkapplecomputer.com.twapplecomputers.co.nzapplehongkong.com.hkapplemalaysia.com.myapplepremiumreseller.com.au applepremiumresellers.com.auappleshop.co.uktheclub.com.hk1010.com.hk
+now.com.hk
+emac.co.inichat.co.inilecture.co.nzlojaiphone.com.br
+mac.com.aumacos.com.aumr-apple.com.twquicktime.com.auwebobjects.co.ukapple-watch.com.rumacbookair.co.krgeforce.com.twgputechconf.co.kr
nvidia.com.vetegrazone.co.krgputechconf.com.tw
geforce.co.uknvidia.co.innvidia.co.jpnvidia.co.kr
nvidia.com.au
nvidia.com.br
nvidia.com.mx
nvidia.com.pe
nvidia.com.pl
geforce.co.kr
nvidia.com.tr
nvidia.com.tw
nvidia.com.uagputechconf.com.aunvidia.co.uknvidia.co.atfaronics.co.ukfaronicswise.co.ukdeveloper.allizom.orgmdn.mozit.cloudmdn.allizom.netyandex.co.il
yandex.com.am
yandex.com.gecanon.com.hkcanon.com.aucanon.com.mycanon.com.bycanon.com.mkcanon.com.trcanon.com.alcanon.com.mtcanon.com.cycanon.co.zacanon.co.ukcanon.co.ilcanon.com.twcanon-se.com.twcanon-ebm.com.hk
yandex.com.ru
yandex.com.tr
yandex.com.uaopenweather.co.ukdrweb.co.jp
+amd.com.cnwholefoodsmarket.co.uklinefriends.com.tw
google.com.trlogitechg.com.cngoogle.co.kr
amazon.com.au
amazon.com.br
amazon.com.mx
amazon.com.tramazonaws.co.ukkindle.co.jpkindle.co.ukamazon.co.jp
sandisk.co.jp
sandisk.co.krsandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.tw
sandisk.co.ukdeepfreeze.com.brfaronics.com.augoogle.co.ckgoogle.co.crgoogle.co.idgoogle.co.ilgoogle.co.in
google.com.uygoogle.co.keamazon.co.ukgoogle.co.lsgoogle.co.magoogle.co.mzgoogle.co.nzgoogle.co.thgoogle.co.tzgoogle.co.uggoogle.co.ukgoogle.co.uzgoogle.co.vegoogle.co.vigoogle.co.zagoogle.co.zmgoogle.co.zw
google.com.af
google.com.ag
google.com.ai
google.com.ar
google.com.au
google.com.bd
google.com.bh
google.com.bnblogspot.com.cyblogspot.co.idblogspot.com.uyblogspot.co.nzblogspot.co.ukblogspot.co.zablogspot.com.arblogspot.com.aublogspot.com.trblogspot.com.eeblogspot.com.coblogspot.co.atblogspot.co.ilblogspot.com.egblogspot.com.esblogspot.com.mtblogspot.com.byblogspot.com.brblogspot.co.keblogspot.com.ng
google.com.bo
google.com.br
google.com.bz
google.com.co
google.com.cu
google.com.cy
google.com.do
google.com.ec
google.com.eg
google.com.et
google.com.fj
google.com.gh
google.com.gi
google.com.gt
google.com.hk
google.com.jm
google.com.kh
google.com.kw
google.com.lb
google.com.ly
google.com.mm
google.com.mt
google.com.mx
google.com.my
google.com.na
google.com.ng
google.com.ni
google.com.np
google.com.om
google.com.pa
google.com.pe
google.com.pg
google.com.ph
google.com.pk
google.com.pr
google.com.py
google.com.qa
google.com.sa
google.com.sb
google.com.sg
google.com.sl
google.com.sv
google.com.tjlogitechio.com.cn
google.com.tw
google.com.uagoogle.co.jp
youtube.co.za
google.com.vchowtogetmo.co.ukthinkquarterly.co.ukwomenwill.com.brgoogle.co.bwgoogle.co.aoaboutamazon.com.au
youtube.co.at
youtube.co.cr
youtube.co.huyoutubego.com.br
youtube.co.idyoutubego.co.inyoutubego.co.id
youtube.co.il
youtube.co.in
youtube.co.jp
youtube.co.ke
youtube.co.kr
youtube.co.ma
youtube.co.nz
youtube.co.thaboutamazon.co.ukclickedu.co.ukfaronics.com.sg
youtube.co.tz
youtube.co.ug
youtube.co.uk
youtube.co.veyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tr
google.com.vnyoutube.com.uyyoutube.com.ve
youtube.co.zwgooglecompare.co.ukyoutube.com.twyoutube.com.uacollabora.co.uksmartonesolutions.com.hkqualcomm.co.krqualcomm.co.idqualcomm.co.inqualcomm.co.jpqualcomm.com.brqualcomm.co.ukqualcomm.com.twskyperfectv.co.jpwisekey.com.hkintel.com.pyintel.com.uyintel.com.twintel.com.trintel.co.aeintel.com.arintel.co.idintel.co.ilintel.co.jpintel.co.krintel.co.ukintel.com.peintel.com.bointel.com.auintel.com.printel.com.brintel.com.cointel.com.ecintel.com.hkintel.com.jmintel.com.mxintel.com.myintel.co.zaintel.co.crintel.com.phintel.com.ve
lge.co.krkakao.co.kr
antenna.co.krawesomeent.co.krbhent.co.kristent.co.krjwide.co.krlogosfilm.co.kr
megamon.co.krdeepfreeze.co.uknaver.com.akadns.netnaverads.com.akadns.netitunes-apple.com.akadns.netgtlsca.nat.gov.tw!openai.com.cdn.cloudflare.net&".+\.amzndns\.(co\.uk|com|net|org)$0,.+\.awsdns-[0-9][0-9]\.(co\.uk|com|net|org)$=9^chatgpt-async-webps-prod-\S+-\d+\.webpubsub\.azure\.com$HD^github-production-release-asset-[0-9a-zA-Z]{6}\.s3\.amazonaws\.com$^ewcdn[0-9]{2}\.nowe\.com$1drv
+onedrive
+skydrive#sentry.hetzner.company
+ads graph.instagram.com
+ads)graph-fallback.instagram.com
+adsgraph.whatsapp.com
+adsgraph.whatsapp.net
+adsamplifi.com.cn
+cnfrontrow.com.cn
+cnubnt.com
+cnubnt.com.cn
+cn ui.com.cn
+cn
+uum.com.cn
+cnuwn.com
+cnduolingo.cn
+cn!ads-api.duolingo.com
+ads!metrics.duolingo.com
+ads'analytics.vpc.duolingo.com
+adsintel.cn
+cnintel.com.cn
+cnintelrealsense.cn
+cngpsonextra.net
+cn
izatcloud.net
+cn!qceventscenter.com.cn
+cnqualcomm.cn
+cn*qualcomm.cn.cdn.cloudflare.net
+cnxtracloud.cn
+cn%stmicroelectronics.com.cn
+cn google.cn
+cng.cn
+cngkecnapps.cn
+cngooglecnapps.cn
+cn
+gstatic.cn
+cngstaticcnapps.cn
+cnwww.recaptcha.net
+cn265.com
+cn2mdn-cn.net
+cn2mdn.net
+cnadmob-cn.com
+cn adservice.google.com
+cnai.ytimg.com
+cn"app-measurement-cn.com
+cnapp-measurement.com
+cnapps5.oingo.com
+cn#avail.googleflights.net
+cn beacons.gcp.gvt2.com
+cnbeacons.gvt2.com
+cnbeacons2.gvt2.com
+cnbeacons3.gvt2.com
+cn"borgmon.adz.google.com
+cnc.admob.com
+cn(c.android.clients.google.com
+cn, cache-management-prod.google.com
+cn!cache.pack.google.com
+cncheckin.gstatic.com
+cn clickserve.cc-dt.com
+cn%clickserve.dartsearch.net
+cn%clickserver.googleads.com
+cn)clientservices.googleapis.com
+cncn.widevine.com
+cn)cnappinstall.googleadapis.com
+cn)connectivitycheck.gstatic.com
+cn$content.googleadapis.com
+cn0$crashlyticsreports-pa.googleapis.com
+cncrl.pki.goog
+cncsi.gstatic.com
+cndartsearch-cn.net
+cn$dg-meta.video.google.com
+cn"distribution.qatp1.net
+cn"distribution.qcpp1.net
+cn"distribution.qpdp1.net
+cn
dl.google.com
+cndl.l.google.com
+cndoubleclick-cn.net
+cndoubleclick.net
+cn$download.mlcc.google.com
+cndownload.qatp1.net
+cndownload.qcpp1.net
+cndownload.qpdp1.net
+cn*download.tensorflow.google.com
+cn+emmapplecodevice.googleapis.com
+cn-!firebase-settings.crashlytics.com
+cn&fontfiles.googleadapis.com
+cn$fontfiles.googleapis.com
+cn"fonts.googleadapis.com
+cn fonts.googleapis.com
+cnfonts.gstatic.com
+cng0.gstatic.com
+cng1.gstatic.com
+cng2.gstatic.com
+cng3.gstatic.com
+cngonglchuangl.net
+cngongyichuangyi.net
+cn#google-analytics-cn.com
+cn google-analytics.com
+cn#googleadservices-cn.com
+cn googleadservices.com
+cngoogleanalytics.com
+cngoogleapis-cn.com
+cngoogleapps-cn.com
+cn googleflights-cn.net
+cn!googleoptimize-cn.com
+cngoogleoptimize.com
+cngoogleplex.com
+cn$googlesyndication-cn.com
+cn!googlesyndication.com
+cn#googletagmanager-cn.com
+cn googletagmanager.com
+cn$googletagservices-cn.com
+cn!googletagservices.com
+cn)googletraveladservices-cn.com
+cn&googletraveladservices.com
+cngooglevads-cn.com
+cngoto.google.com
+cngstatic-cn.com
+cn%gstaticadssl.l.google.com
+cngtm.oasisfeng.com
+cn!imasdk.googleapis.com
+cn monitoring.qatp1.net
+cn monitoring.qcpp1.net
+cn monitoring.qpdp1.net
+cn
ocsp.pki.goog
+cn, pagead-googlehosted.l.google.com
+cn0$performanceparameters.googleapis.com
+cn!pki-goog.l.google.com
+cnplay.1ucrs.com
+cn'prod-controlbe.floonet.goog
+cn$prod-databe.floonet.goog
+cn$prod.databe.floonet.goog
+cnqagpublic.qatp1.net
+cnqagpublic.qcpp1.net
+cnqagpublic.qpdp1.net
+cnqgadmin.qatp1.net
+cnqgadmin.qcpp1.net
+cnqgadmin.qpdp1.net
+cn!qpx.googleflights.net
+cnqualysapi.qatp1.net
+cnqualysapi.qcpp1.net
+cnqualysapi.qpdp1.net
+cn!qualysguard.qatp1.net
+cn!qualysguard.qcpp1.net
+cn!qualysguard.qpdp1.net
+cn
recaptcha.net
+cnrecaptcha-cn.net
+cnredirector.bdn.dev
+cn(redirector.c.chat.google.com
+cn(redirector.c.mail.google.com
+cn(redirector.c.pack.google.com
+cn-!redirector.c.youtubeeducation.com
+cn&redirector.gcpcdn.gvt1.com
+cnredirector.gvt1.com
+cn, redirector.offline-maps.gvt1.com
+cn$redirector.snap.gvt1.com
+cn*redirector.xn--ngstr-lra8j.com
+cn(regioninfo-pa.googleapis.com
+cn'safebrowsing.googleapis.com
+cn"scanservice1.qatp1.net
+cn"scanservice1.qcpp1.net
+cn"scanservice1.qpdp1.net
+cnservice.urchin.com
+cn$settings.xn--9trs65b.com
+cn-!ssl-google-analytics.l.google.com
+cnssl.gstatic.com
+cn*staging-controlbe.floonet.goog
+cn'staging-databe.floonet.goog
+cn0$staging-regioninfo-pa.googleapis.com
+cn'staging.databe.floonet.goog
+cnsupport.1ucrs.com
+cntac.googleapis.com
+cn%test.bugs-qa.chromium.org
+cn&test.gbugs-qa.chromium.org
+cntools.google.com
+cntools.l.google.com
+cn"update.crashlytics.com
+cn!update.googleapis.com
+cnwear.googleapis.com
+cn-!www-google-analytics.l.google.com
+cn-!www-googletagmanager.l.google.com
+cn"www.destinationurl.com
+cn www.googleadapis.com
+cnwww.gstatic.com
+cnwww.pxcc.com
+cn
xn--9kr7l.com
+cnxn--flw351e.com
+cn$applemdm.corp.google.com
+cndns.corp.google.com
+cn!g3doc.corp.google.com
+cn(gmskiosk-ssl.corp.google.com
+cngo.corp.google.com
+cn!gorom.corp.google.com
+cn goto.corp.google.com
+cn(l2-uberproxy.corp.google.com
+cn"logger.corp.google.com
+cn&logger-dev.corp.google.com
+cn!login.corp.google.com
+cn'proxyconfig.corp.google.com
+cn, rapture-autopush.corp.google.com
+cn#rapture.corp.google.com
+cn(rapture-prod.corp.google.com
+cn(rapture-test.corp.google.com
+cn"r.cert.corp.google.com
+cn%ssh-relay.corp.google.com
+cn'sslredirect.corp.google.com
+cn/#streaming-uberproxy.corp.google.com
+cn8,streaming-uberproxy-rotation.corp.google.com
+cnsup.corp.google.com
+cn)supportcenter.corp.google.com
+cn*sup-ssh-relay2.corp.google.com
+cn)sup-ssh-relay.corp.google.com
+cn$techstop.corp.google.com
+cn&uberproxy4.corp.google.com
+cn&uberproxy6.corp.google.com
+cn%uberproxy.corp.google.com
+cn, uberproxy-debug4.corp.google.com
+cn+uberproxy-debug.corp.google.com
+cn2&uberproxy-pen-redirect.corp.google.com
+cn vext.corp.google.com
+cnsup.l.google.com
+cn*uberproxy-with-cn.l.google.com
+cn+uberproxy-with-cn4.l.google.com
+cn+uberproxy-with-cn6.l.google.com
+cnqiao-cn.com
+cngvt1-cn.com
+cngvt2-cn.com
+cn!pki-goog.l.google.com
+cn
+c.pki.goog
+cn
+i.pki.goog
+cn
+o.pki.goog
+cncrl.pki.goog
+cn
crls.pki.goog
+cn
ocsp.pki.goog
+cn-!firebase-settings.crashlytics.com
+cn(redirector.c.play.google.com
+cn2mdn-cn.net
+ads2mdn.net
+adsadmob-cn.com
+ads admob.com
+adsads.youtube.com
+adsadsense.com
+ads'adsensecustomsearchads.com
+ads%adsenseformobileapps.com
+ads!adservice.google.com
+ads$advertisercommunity.com
+ads%advertiserscommunity.com
+ads"adwords-community.com
+adsadwords.com
+adsadwordsexpress.com
+ads#app-measurement-cn.com
+ads app-measurement.com
+adsdoubleclick-cn.net
+adsdoubleclick.cn
+adsdoubleclick.com
+adsdoubleclick.net
+ads$google-analytics-cn.com
+ads!google-analytics.com
+adsgoogleadapis.com
+adsgoogleads-cn.com
+ads
googleads.com
+ads$googleadservices-cn.com
+ads!googleadservices.com
+ads googleadsserving.cn
+ads googleanalytics.com
+ads"googleoptimize-cn.com
+adsgoogleoptimize.com
+ads%googlesyndication-cn.com
+ads"googlesyndication.com
+ads$googletagmanager-cn.com
+ads!googletagmanager.com
+ads%googletagservices-cn.com
+ads"googletagservices.com
+ads*googletraveladservices-cn.com
+ads'googletraveladservices.com
+adsgooglevads-cn.com
+ads mail-ads.google.com
+ads)marketingplatform.google.com
+ads
+urchin.com
+ads!analytics.google.com
+ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$
+adsggpht.cn
+cn
+sandisk.cn
+cnyahoo.cn
+cnyahoo.com.cn
+cn
ads.yahoo.com
+adsgemini.yahoo.com
+ads
ysm.yahoo.com
+adsaboutamazon.cn
+cnalexafund.cn
+cnalexafund.com.cn
+cn amazon.cn
+cnamazonbusiness.cn
+cn!amazonbusiness.com.cn
+cnamazonchoice.cn
+cnamazonchoice.com.cn
+cnamazonchoices.cn
+cn amazonchoices.com.cn
+cnamazoninspire.cn
+cn amazoninspire.com.cn
+cnamazonlaunchpad.cn
+cn"amazonlaunchpad.com.cn
+cn amazonlending.com.cn
+cnamazonnow.cn
+cnamazonnow.com.cn
+cnassoc-amazon.cn
+cnprimeday.cn
+cnprimeday.com.cn
+cn
+yamaxun.cn
+cnz.cn
+cn+images-cn.ssl-images-amazon.com
+cn-!images-cn-8.ssl-images-amazon.com
+cn amazon-adsystem.com
+adsserving-sys.com
+ads
+a2z.org.cn
+cnamazonaws.cn
+cnamazonaws.com.cn
+cn$amazonwebservices.com.cn
+cnamazonworkdocs.cn
+cn!amazonworkdocs.com.cn
+cn"asfiovnxocqpcry.com.cn
+cn
aws-border.cn
+cn%aws-icp-domain-manager.cn
+cn
+awsapps.cn
+cnawsapps.com.cn
+cnawsstatic.cn
+cncloudfront-cn.net
+cncloudfront-test.cn
+cn
cloudfront.cn
+cnnwcdcloud.cn
+cnnwcdcloud.com.cn
+cn
+nwcddns.cn
+cnnwcdinfosec.cn
+cn
+route53.cn
+cnsagemaker.com.cn
+cn-!.+\.amzndns-cn\.(biz|cn|com|net)$
+cn8,.+\.awsdns-cn-[0-9][0-9]\.(biz|com|net|top)$
+cn, .+\.awsdns-cn-[0-9][a-e0-9]\.cn$
+cn kindle.cn
+cnkindleoasis.cn
+cnkindleoasis.com.cn
+cnamazonprimevideo.cn
+cn#amazonprimevideo.com.cn
+cnwww.amd.com
+cnrazerapi.com
+cnrazersynapse.com
+cn
razerzone.com
+cn
teamviewer.cn
+cnacer.com.cn
+cnasus.com.cn
+cn
+geforce.cn
+cngputechconf.cn
+cn nvidia.cn
+cnpanasonic.cn
+cnapple.cn
+cnapple.com.cn
+cnapple-store.cn
+cn
applestore.cn
+cnapplestore.com.cn
+cnapple-appstore.cn
+cnappleappstore.cn
+cnappstoreapple.cn
+cniphone-8.com.cn
+cnipod.com.cn
+cn
macbookair.cn
+cnmacbookair.com.cn
+cnapplepaycash.cn
+cnapplepaycash.com.cn
+cnapplepaysupplies.cn
+cn#applepaysupplies.com.cn
+cnappletv4.cn
+cnappletv4.com.cn
+cnapple-dns.cn
+cnapple-dns.com.cn
+cnapple-ibooks.cn
+cn
apple-maps.cn
+cnapplecenter.cn
+cnapplecenter.com.cn
+cnapplecomputer.cn
+cn applecomputer.com.cn
+cnappledns.cn
+cnappledns.com.cn
+cnapplesiri.cn
+cn
ecgapp.com.cn
+cnfaceshift.cn
+cn
+homepod.cn
+cninsidear.cn
+cn
livephotos.cn
+cnlivephotos.com.cn
+cn xn--czrs0t4phtr3a.cn
+cnxn--fiqs8sxootzz.cn
+cn#xn--ohq11k7pl25iyo8a.cn
+cn:.amp-api-edge-lb-cn.itunes-apple.com.akadns.net
+cn7+amp-api-edge-lb.itunes-apple.com.akadns.net
+cn'amp-api-edge.apps.apple.com
+cn."amp-api-search-edge.apps.apple.com
+cn"amp-api.apps.apple.com
+cn#amp-api.music.apple.com
+cn aod.itunes.apple.com
+cn#api-edge.apps.apple.com
+cn(apptrailers.itunes.apple.com
+cn auth.music.apple.com
+cn bag.itunes.apple.com
+cn'bookkeeper.itunes.apple.com
+cn'client-api.itunes.apple.com
+cn cma.itunes.apple.com
+cn!communities.apple.com
+cn(discussionschinese.apple.com
+cn-!downloaddispatch.itunes.apple.com
+cnfides-pol.apple.com
+cn(gspe11-2-cn-ssl.ls.apple.com
+cn&gspe12-cn-ssl.ls.apple.com
+cn&gspe85-cn-ssl.ls.apple.com
+cn5)inappcheck-cn.itunes-apple.com.akadns.net
+cn5)inappcheck-lb.itunes-apple.com.akadns.net
+cn'inappcheck.itunes.apple.com
+cn+init.gc-lb.apple.com.akadns.net
+cninit.gc.apple.com
+cn!init.itunes.apple.com
+cn$iosapps.itunes.apple.com
+cn"js-cdn.music.apple.com
+cn km.support.apple.com
+cnmaps.apple.com
+cn(misc-assets.itunes.apple.com
+cn"myapp.itunes.apple.com
+cn$np-edge.itunes.apple.com
+cn$osxapps.itunes.apple.com
+cn"pd-nk.itunes.apple.com
+cnpd.itunes.apple.com
+cn!play.itunes.apple.com
+cn play.music.apple.com
+cn$se-edge.itunes.apple.com
+cn se2.itunes.apple.com
+cn#search.itunes.apple.com
+cn1%sf-api-token-service.itunes.apple.com
+cnsp.itunes.apple.com
+cn+streamingaudio.itunes.apple.com
+cnsu.itunes.apple.com
+cn!sync.itunes.apple.com
+cn(tf-feedback.itunes.apple.com
+cn upp.itunes.apple.com
+cn!www.support.apple.com
+cn#^a[1-5]\.mzstatic\.com$
+cn0$^cdn(-cn)?[1-4]?\.apple-mapkit\.com$
+cn9-^cl[1-5]-cdn\.origin-apple\.com\.akadns\.net$
+cn!^cl[1-5]\.apple\.com$
+cn+^is[1-5](-ssl)?\.mzstatic\.com$
+cn$^s[1-5]?\.mzstatic\.com$
+cna1.mzstatic.com
+cna2.mzstatic.com
+cna3.mzstatic.com
+cna4.mzstatic.com
+cna5.mzstatic.com
+cn!adcdownload.apple.com
+cn, adcdownload.apple.com.akadns.net
+cn#amp-api.media.apple.com
+cn&api-p-ap-c.smoot.apple.com
+cn&api-p-ap-d.smoot.apple.com
+cn&api-p-ap-e.smoot.apple.com
+cn."app-site-association.cdn-apple.com
+cnappldnld.apple.com
+cn"appldnld.g.aaplimg.com
+cn!appleid.cdn-apple.com
+cnapps.mzstatic.com
+cn$cdn-cn1.apple-mapkit.com
+cn$cdn-cn2.apple-mapkit.com
+cn$cdn-cn3.apple-mapkit.com
+cn$cdn-cn4.apple-mapkit.com
+cn cdn.apple-mapkit.com
+cn!cdn1.apple-mapkit.com
+cn!cdn2.apple-mapkit.com
+cn!cdn3.apple-mapkit.com
+cn!cdn4.apple-mapkit.com
+cn!cds-cdn.v.aaplimg.com
+cn
cds.apple.com
+cn$cds.apple.com.akadns.net
+cncdsassets.apple.com
+cn/#cl1-cdn.origin-apple.com.akadns.net
+cn
cl1.apple.com
+cncl2-cn.apple.com
+cn
cl2.apple.com
+cn/#cl3-cdn.origin-apple.com.akadns.net
+cn
cl3.apple.com
+cn/#cl4-cdn.origin-apple.com.akadns.net
+cncl4-cn.apple.com
+cn
cl4.apple.com
+cn/#cl5-cdn.origin-apple.com.akadns.net
+cn
cl5.apple.com
+cn clientflow.apple.com
+cn+clientflow.apple.com.akadns.net
+cn, cn-smp-paymentservices.apple.com
+cn#configuration.apple.com
+cn."configuration.apple.com.akadns.net
+cncstat.apple.com
+cncstat.cdn-apple.com
+cn."dd-cdn.origin-apple.com.akadns.net
+cndejavu.apple.com
+cn(download.developer.apple.com
+cn!experiments.apple.com
+cngs-loc-cn.apple.com
+cngs-loc.apple.com
+cn%gsp10-ssl-cn.ls.apple.com
+cn!gsp12-cn.ls.apple.com
+cn!gsp13-cn.ls.apple.com
+cn gsp4-cn.ls.apple.com
+cn, gsp4-cn.ls.apple.com.edgekey.net
+cnC7gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net
+cn gsp5-cn.ls.apple.com
+cn%gsp85-cn-ssl.ls.apple.com
+cn(gspe19-2-cn-ssl.ls.apple.com
+cn&gspe19-cn-ssl.ls.apple.com
+cn-!gspe19-cn.ls-apple.com.akadns.net
+cn"gspe19-cn.ls.apple.com
+cn#gspe21-ssl.ls.apple.com
+cngspe21.ls.apple.com
+cn#gspe35-ssl.ls.apple.com
+cn&gspe79-cn-ssl.ls.apple.com
+cn+guzzoni-apple-com.v.aaplimg.com
+cnguzzoni.apple.com
+cn#guzzoni.smoot.apple.com
+cn, icloud-cdn.icloud.com.akadns.net
+cn icloud.cdn-apple.com
+cnimages.apple.com
+cn'images.apple.com.akadns.net
+cn?3images.apple.com.edgekey.net.globalredir.akadns.net
+cninit-kt.apple.com
+cn3'init-p01md-lb.push-apple.com.akadns.net
+cn init-p01md.apple.com
+cn3'init-p01st-lb.push-apple.com.akadns.net
+cn%init-p01st.push.apple.com
+cn3'init-s01st-lb.push-apple.com.akadns.net
+cn%init-s01st.push.apple.com
+cninit.ess.apple.com
+cn(iosapps.itunes.g.aaplimg.com
+cnipcdn.apple.com
+cniphone-ld.apple.com
+cn1%iphone-ld.origin-apple.com.akadns.net
+cn is1-ssl.mzstatic.com
+cnis1.mzstatic.com
+cn is2-ssl.mzstatic.com
+cnis2.mzstatic.com
+cn is3-ssl.mzstatic.com
+cnis3.mzstatic.com
+cn is4-ssl.mzstatic.com
+cnis4.mzstatic.com
+cn is5-ssl.mzstatic.com
+cnis5.mzstatic.com
+cn'itunes-apple.com.akadns.net
+cnitunes.apple.com
+cn#itunesconnect.apple.com
+cn)mesu-cdn.apple.com.akadns.net
+cn+mesu-china.apple.com.akadns.net
+cnmesu.apple.com
+cnml.cdn-apple.com
+cnmusic.apple.com
+cn(ocsp-lb.apple.com.akadns.net
+cnocsp.apple.com
+cn)ocsp2-lb.apple.com.akadns.net
+cnocsp2.apple.com
+cnoscdn.apple.com
+cn-!oscdn.origin-apple.com.akadns.net
+cn(osxapps.itunes.g.aaplimg.com
+cnpancake.apple.com
+cn, pancake.cdn-apple.com.akadns.net
+cnpba0.apple.com
+cn probe.siri.apple.com
+cn1%prod-support.apple-support.akadns.net
+cn&publicassets.cdn-apple.com
+cn#reserve-prime.apple.com
+cns.mzstatic.com
+cn'seed-sequoia.siri.apple.com
+cn'seed-swallow.siri.apple.com
+cnseed.siri.apple.com
+cnsequoia.apple.com
+cn(sh-pod2-smp-device.apple.com
+cn)shazam-insights.cdn-apple.com
+cn(smp-device-content.apple.com
+cnstatic.gc.apple.com
+cn4(stocks-sparkline-lb.apple.com.akadns.net
+cn&stocks-sparkline.apple.com
+cnstore.apple.com
+cn'store.apple.com.edgekey.net
+cn>2store.apple.com.edgekey.net.globalredir.akadns.net
+cn2&store.storeimages.apple.com.akadns.net
+cn+store.storeimages.cdn-apple.com
+cn2&support-china.apple-support.akadns.net
+cnsupport.apple.com
+cn+swallow-apple-com.v.aaplimg.com
+cnswallow.apple.com
+cn."swcatalog-cdn.apple.com.akadns.net
+cnswcatalog.apple.com
+cnswcdn.apple.com
+cnswcdn.g.aaplimg.com
+cnswdist.apple.com
+cn'swdist.apple.com.akadns.net
+cn+swscan-cdn.apple.com.akadns.net
+cnswscan.apple.com
+cnsylvan.apple.com
+cn(tj-pod1-smp-device.apple.com
+cn&updates-http.cdn-apple.com
+cn1%updates-http.cdn-apple.com.akadns.net
+cn!updates.cdn-apple.com
+cnvalid.apple.com
+cn-!valid.origin-apple.com.akadns.net
+cn"weather-data.apple.com
+cn-!weather-data.apple.com.akadns.net
+cn!weather-map.apple.com
+cn"weather-map2.apple.com
+cn weatherkit.apple.com
+cn
www.apple.com
+cn%www.apple.com.edgekey.net
+cn<0www.apple.com.edgekey.net.globalredir.akadns.net
+cnxp.apple.com
+cnresearchkit.cn
+cnresearchkit.com.cn
+cn
+swiftui.cn
+cnswiftui.com.cn
+cn)certs-lb.apple.com.akadns.net
+cncerts.apple.com
+cn'crl-lb.apple.com.akadns.net
+cn
crl.apple.com
+cn(ocsp-lb.apple.com.akadns.net
+cnocsp.apple.com
+cn)ocsp2-lb.apple.com.akadns.net
+cnocsp2.apple.com
+cn beats1.cn
+cn
beats1.com.cn
+cn
beats2.com.cn
+cn beats4.cn
+cnbeatsbydre.com
+cnbeatsbydre.com.cn
+cn
+beatsep.cn
+cnapple-icloud.cn
+cnappleicloud.cn
+cnicloud-apple.cn
+cn
icloud.com.cn
+cn
icloud.net.cn
+cnicloudapple.cn
+cnapple-itunes.cn
+cnitunes-apple.cn
+cnitunesapple.cn
+cnitunesradio.cn
+cnitunesradio.com.cn
+cn
+swiftui.cn
+cnswiftui.com.cn
+cn%api-adservices.apple.com
+adsiadsdk.apple.com
+ads
iad.apple.com
+ads qwapi.com
+ads
+adobedc.cn
+cn"advertising.adobe.com
+ads
tubemogul.com
+adsaoruszone.cn
+cngigabyte.cn
+cn$o33249.ingest.sentry.io
+ads openaicom.imgix.net
+adscisco.cn
+cncisco.com.cn
+cnnetwork-auth.cn
+cnwebex.com.cn
+cnatt.cn
+cn
+attcorp.cn
+cnyahoo.cn
+cnyahoo.com.cn
+cn
ads.yahoo.com
+adsgemini.yahoo.com
+ads
ysm.yahoo.com
+adsmyqnapcloud.cn
+cn
+qlinkto.cn
+cnqnap.com.cn
+cndcg.microsoft.com
+cndynamics.cn
+cn
+engkoo.com
+cnlync.cn
+cnmicrosoft-smb.cn
+cn microsoftonline-i.cn
+cn"microsoftonline-m-i.cn
+cn microsoftonline-m.cn
+cn"microsoftonline-p-i.cn
+cnµsoftonline-p-i.net.cn
+cn microsoftonline-p.cn
+cn$microsoftonline-p.net.cn
+cnmicrosoftonline.cn
+cnµsofttranslator-int.cn
+cn msauth.cn
+cnmsauthimages.cn
+cnmsftauth.cn
+cnmsftauthimages.cn
+cnmspil.cn
+cnmsra.cn
+cn
+o365cn.com
+cno365files.cn
+cnoffice365-net.cn
+cnoffice365.cn
+cnofficewebapps.cn
+cnonmschina.cn
+cn
+outlook.cn
+cnpbiwebcontent.cn
+cnpowerapps.cn
+cnpowerappsportals.cn
+cnpowerautomate.cn
+cn
+powerbi.cn
+cn
sharepoint.cn
+cn(dl.delivery.mp.microsoft.com
+cn&download.windowsupdate.com
+cn#b.c2r.ts.cdn.office.net
+cn'bg.v4.a.dl.ws.microsoft.com
+cn(bg4.v4.a.dl.ws.microsoft.com
+cnbuild.microsoft.com
+cn2&cdn.marketplaceimages.windowsphone.com
+cn cn.windowssearch.com
+cn#ctldl.windowsupdate.com
+cn"devblogs.microsoft.com
+cn#developer.microsoft.com
+cndocs.microsoft.com
+cn"download.microsoft.com
+cn/#download.visualstudio.microsoft.com
+cn#f.c2r.ts.cdn.office.net
+cnfs.microsoft.com
+cnlearn.microsoft.com
+cn(msgr.dlservice.microsoft.com
+cn, msgruser.dlservice.microsoft.com
+cn, myvs.download.prss.microsoft.com
+cn."oemsoc.download.prss.microsoft.com
+cn#officecdn.microsoft.com
+cn&qh.dlservice.microsoft.com
+cn res-1.cdn.office.net
+cnres.cdn.office.net
+cnsdx.microsoft.com
+cn shell.cdn.office.net
+cn/#silverlight.dlservice.microsoft.com
+cn, slupdate.dlservice.microsoft.com
+cn0$software.download.prss.microsoft.com
+cn(statics.teams.cdn.office.net
+cn, storeedgefd.dsx.mp.microsoft.com
+cn0$surface.downloads.prss.microsoft.com
+cn."vscode.download.prss.microsoft.com
+cn*vz.download.prss.microsoft.com
+cn&wl.dlservice.microsoft.com
+cn&wscont1.apps.microsoft.com
+cn&wscont2.apps.microsoft.com
+cn&xb.dlservice.microsoft.com
+cn 21vbc.com
+cn21vbluecloud.com
+cn21vbluecloud.net
+cnaadrm.cn
+cnaggresmart.com
+cnapihub-internal.cn
+cn$appserviceenvironment.cn
+cnazcrmc-test.cn
+cn azcrmc.cn
+cnazk8s.cn
+cnaznbcontent.cn
+cn aztask.cn
+cnazure-api.cn
+cnazure-apihub.cn
+cnazure-automation.cn
+cn, azure-connectedvehicles-stage.cn
+cn&azure-connectedvehicles.cn
+cn)azure-devices-provisioning.cn
+cnazure-devices.cn
+cnazure.cn
+cnazurecr-test.cn
+cn
+azurecr.cn
+cnazurehdinsight.cn
+cnazureiotsuite.cn
+cnazuremresolver.cn
+cnazureprivatedns.cn
+cnazurerms.cn
+cnazuresandbox.cn
+cnb2clogin.cn
+cn
+b3itech.cn
+cnblueaggrestore.com
+cnbluecloudprod.com
+cncegid-cloud.cn
+cn chinacloud-mobile.cn
+cnchinacloudapi.cn
+cnchinacloudapp.cn
+cnchinacloudsites.cn
+cn hdinsightservices.cn
+cn4(management-azure-devices-provisioning.cn
+cn'management-azure-devices.cn
+cnmcchcdn.com
+cnmgmt-azure-api.cn
+cn#microsoftazurestatus.cn
+cnmicrosoftmetrics.cn
+cnmncmsidlab1.cn
+cn
msappproxy.cn
+cnmschcdn.com
+cnmsftcloudes.cn
+cn
msidentity.cn
+cnmsidlabpbmc.cn
+cntrafficmanager.cn
+cntrustcenter.cn
+cnunity3dcloud.cn
+cnwindowsazure.cn
+cn!windowsazurestatus.cn
+cn".+\.azchcdn[a-s]\.com$
+cnazure-dns.cn
+cn).+\.azure-dns-([1-9]|10)\.cn$
+cnbing.com.cn
+cncn.bing.com
+cncn.bing.net
+cncn.mm.bing.net
+cn
ditu.live.com
+cnbj1.api.bing.com
+cnemoi-cncdn.bing.com
+cnmicrosoftreactor.cn
+cn#microsoftreactor.com.cn
+cnreactorms.com.cn
+cnwww.microsoft.com
+cnmicrosoftnews.cn
+cnmsn.cn
+cnxboxlive.cn
+cnsnapads.com
+adsalibabacloud.co.in
+!cn alibabacloud.com.au
+!cn alibabacloud.com.hk
+!cn alibabacloud.com.my
+!cn alibabacloud.com.sg
+!cn alibabacloud.com.tw
+!cncanon.cn
+cncanon.com.cn
+cn
+hpstore.cn
+cnsamsungeshop.com.cn
+cn heptio.cn
+cn
+
+MAINICHImachigoto.jpmainichi-athletepartners.jpmainichi.jpmainichibooks.commeijinsen.jp
mirailab.techmottainai.infonewsgawakaru.comweekly-economist.comsponichi.co.jp
+_
+DIGITALOCEANdigitalocean.comdigitaloceanspaces.com do.conginxconfig.io
+"
+FOUNDERTYPEfoundertype.com
+4
+LASTFMlastfm.freetls.fastly.netlast.fm
+
+LINUX
linux.org
+v
+PHOENIX
+fengcx.com
ifeng.comifengimg.comphoenixcenter.cnfengedu.comifengweekly.com
+6
+AIRCHINAairchinacargo.comairchina.com.cn
+*
+BETTEREXPLAINEDbetterexplained.com
+3
+
+CERTINOMIScertinomis.com
certinomis.fr
+
+SONYPICTURESimageworks.commotionpictureser.complayshow.ioplayshowtv.comsonyclassics.comsonypictures.comsonypicturesanimation.comsonypicturesmuseum.comsonypicturesstudios.comsonypicturestelevision.com#sonypicturestelevisiongames.comwheelpop.com
+wwtbam.comyourfantasybeginsnow.com
+X
+ASUSasus.com
asuscloud.comasuswebstorage.comasus.com.cn
+cn
+1
+ SEHUATANG
sehuatang.net
sehuatang.org
+:
+VPNGATE
+opengw.net
+vpngate.jpvpngate.net
+D
+RUST
rust-lang.org
rustup.rs
crates.iodocs.rs
+
+TIPDM
+tipdim.org
+
+
+XIAOMI-ADS a.market.xiaomi.com
+adsad.intl.xiaomi.com
+ads ad.mi.com
+ads
ad.xiaomi.com
+adsad1.xiaomi.com
+adsadmob.xiaomi.com
+ads"adv.sec.intl.miui.com
+adsadv.sec.miui.com
+ads"misc.in.duokanbox.com
+adsmistat.xiaomi.com
+adssentry.d.mi.com
+ads sentry.d.xiaomi.net
+adstjqonline.cn
+ads"tracker.ai.xiaomi.com
+adstracking.miui.com
+ads
+
+GFYCAT
+gfycat.com
+L
+
+KUAIYIKEJI
dengguobi.comhouyicaiji.comjinglingbiaozhu.com
+6
+ RULEOFLAWrolfoundation.orgrolsociety.org
+
+
+SF-EXPRESS
feng1.comrongechain.comsf-airlines.comsf-cityrush.comsf-express.comsf-financial.comsf-saas.comsfcar.hksffix.cnsfgy.orgsf-tech.com.cn
+
+TLD-OPENNIC bazarbbschancoincybdynemcepicfreefurgeek
+gopherindykokulib libreneonulloossoz
+parody
+piratermtetiuu
+
+YOUQUAN
+aitcfw.com
+aizgtc.com
hangzhouyq.cnhangzhouyq.com
+zgxytc.com
zgzsa.comzhonshian.cn
zhonshian.com
zjzsa.comzhonshian.com.cn
+
+CATEGORY-BANK-MMtuncommercialbank.comnptsibinbank.comagdbank.comayabank.com
+ysx-mm.comyomabank.com
ablmm.comshwebank.commmtourismbank.comkbzbank.com
+kbzpay.commabbank.commwdbank.commdbankpublic.commobmyanmar.comfirstprivatebank.com.mmmmbbank.com.mmmmftb.gov.mmmminsurance.gov.mmmicb.gov.mm
+meb.gov.mm
+mcb.com.mmgbank.com.mmabank.com.mmsmedevelopmentbank.com.mmchid.com.mm
+uab.com.mmwaveomoney.com.mm
+cbm.com.mm
cbbank.com.mm
+N
+HAIER
+ehaier.com
haier.com
haier.nethaiersmarthomes.com
+
+ LARACASTS
laracasts.com
+(
+IHUMAN
+ihuman.com
+hongen.com
+
+THEPORNDUDE
porndude2.comporndudecasting.com
pornsites.compornwebmasters.comtheporndude.cctheporndude.comtheporndude.vip
+
+BBC!aod-pod-uk-live.akamaized.net!as-dash-uk-live.akamaized.net as-hls-uk-live.akamaized.net!ve-dash-uk-live.akamaized.net%!ve-uhd-push-uk-live.akamaized.net"vod-dash-uk-live.akamaized.net"vod-dash-ww-live.akamaized.net!vod-hls-uk-live.akamaized.net!vod-sub-uk-live.akamaized.net#vod-thumb-uk-live.akamaized.net#vod-thumb-ww-live.akamaized.net&"vs-cmaf-push-uk-live.akamaized.net'#vs-cmaf-pushb-ww-live.akamaized.net%!vs-hls-push-uk-live.akamaized.net&"vs-hls-pushb-uk-live.akamaized.netbbcbbc-reporting-api.appbbcverticals.combbc.com
+bbc.inbbcpersian.com
+bbc.net.uk
+bbci.co.ukbbcmedia.co.ukbbc.mp-pxcdn.com
bbc.co.ukbidi.net.ukbbcfmt.s.llnwi.net
+
+CATEGORY-MEDIAdeutschewelle.h-cdn.com!aod-pod-uk-live.akamaized.net!as-dash-uk-live.akamaized.net as-hls-uk-live.akamaized.net!ve-dash-uk-live.akamaized.net%!ve-uhd-push-uk-live.akamaized.net"vod-dash-uk-live.akamaized.net"vod-dash-ww-live.akamaized.net!vod-hls-uk-live.akamaized.net!vod-sub-uk-live.akamaized.net#vod-thumb-uk-live.akamaized.net#vod-thumb-ww-live.akamaized.net&"vs-cmaf-push-uk-live.akamaized.net'#vs-cmaf-pushb-ww-live.akamaized.net%!vs-hls-push-uk-live.akamaized.net&"vs-hls-pushb-uk-live.akamaized.net"zeenews-fonts.s3.amazonaws.com foxnewsplayer-a.akamaihd.net!himalaya-exchange.zendesk.comasahishimbun.sc.omtrdc.netcbsi.live.ott.irdeto.com%!cbsplaylistserver.aws.syncbak.comcbsservice.aws.syncbak.comlink.theplatform.com
bloombergshowtimecbsskytheguardianfoxbbcfoxnews.comcnnpolitics.comtver.jpcaijinglengyan.comchinadecoding.comchinadigitaltimes.netchinaeconomicreview.comscreens-lab.jpgorin.jp
cnyes.com
+dogatch.jp!universalstudioshollywood.com&"universalpicturesinternational.comd100.netuniversalpictures.comettoday.neteventsinfocus.orgfactwire.orgfortuneinsight.comfreebeacon.com
gbnews.ukhk01.comhkcitizenmedia.comhkcnews.comhkej.com
+hkgpao.comhongkongfp.com
inmediahk.netuniversalorlando.com
jfengtime.com
landofhope.tv
+limedia.twlocalpresshk.com
peacocktv.commdnkids.com
s-nbcnews.commirrormedia.mgnbcuniversal.commy-formosa.com
+newtalk.tw
newyorker.com
nextapple.comnownews.comnpr.org on.ccpassiontimes.hk
peoplenews.twpost852.comqmap.pubrealvision.comrfa.org
+rfi.frrsf.org
+rt.com
+rtings.comshuziyimin.org
+nbcuni.comsinoinsider.com
+socrec.orgstorm.mgtaipeitimes.com
nbcsports.comtheaffairs.comtheatlantic.comthegatewaypundit.comthenationalpulse.comthenewslens.comthestandnews.comtnntoday.comnbcolympics.comnbcnews.comtwgreatnews.com
unwire.hk
+upmedia.mgnbc.comwarroom.orgwashingtonpost.com
+nbc.coweiyuksj.com
+wenzhao.ca
wired.com
msnbc.comyibaochina.comyoulucky.com
zerohedge.comzoomingin.tv
+ap.org
+apnews.com
+dw.combanned.videoinfowars.cominfowarsmedia.comfreedomplatform.tv
londonreal.tv
rferl.orgazadiradio.comazadliq.org
azathabar.comazatliq.orgazattyk.orgazattyq.orgazatutyun.amcurrenttime.tvekhokavkaza.comeuropalibera.orgevropaelire.orgfactograph.infoidelreal.orgkavkazr.com
krymr.commashaalradio.com
ozodi.orgozodlik.orgradiofarda.comradiomarsho.comradiosvoboda.org
+cnbcfm.com
severreal.orgsibreal.orgslobodnaevropa.mksvaboda.orgcnbc.comsvobodnaevropa.bgszabadeuropa.hucstatic.net
+curbed.com
eater.comfunnyordie.commeridian.netpolygon.com
+racked.com
+recode.netsbnation.comtheverge.comvox-cdn.comvox.comvoxcreative.comvoxfieldguide.comvoxmedia.com
+voxops.netbusinessfocus.iobbgevent.combbhub.io
+bbthat.combgov.combloomberg.cn
bloomberg.combloomberg.fmbloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.comblpcareers.com
blpevents.comblpprofessional.combmia.orgbnef.combusinessweek.combusinessweekmag.combwbx.iocitylab.com
gotraffic.netlondonmithraeum.comneweconomyforum.comnewenergyfinance.comquicktake.videotechatbloomberg.comtictoc.videodreamworks.compplusstatic.comparamountplus.com
+c-span.orgc-spanvideo.org
+nikkei.com
nikkei.jpnikkei4946.commtvnservices.comcbsaavideo.comamlg.ionow.comnowe.comnowe.hk
+now-tv.comnow-ashare.com
paramount.comnyt.comnyt.netnytchina.comnytcn.me
nytco.comnyti.msnytimes.comnytstyle.comtimestalks.com
tvbweekly.combigbigshop.com
encoretvb.comtvb.comtvbanywhere.com
+tvbusa.com
mytvsuper.comviacomcbspressexpress.com
viacomcbs.com
+viacom.com
+viacbs.com
cbssvideo.com
boxun.combowenpress.comcnn.com
+cnn.io
+cnn.it
cnnarabic.comcnnlabs.comcnnmoney.chcnnmoney.comcnnmoneystream.com
cbsstatic.comgannett-cdn.comgannett.comgannettdigital.comusatoday.comusatodaynetworkservice.combusinessinsider.jpbusinessinsider.myinsiderintelligence.cominsider.cominsider-intelligence.combusinessinsider.esbusinessinsider.combusinessinsider.frbusinessinsider.debusinessinsider.mxbusinessinsider.inbusinessinsider.nlbusinessinsider.sg
cbssports.comcbspressexpress.comcbsnews.comwatchout.tw
+waa.tw
+zaobao.com
zaobao.sg
cbsivideo.comwanokokorosoh.comozvoice.orgbannedbook.orgbroadpressinc.comchinaaffairs.orgdafahao.comdonatecarsoh.orgdongtaiwang.com
falundafa.orgntdtv.jpfalundafamuseum.orgfalungong.club
faluninfo.netfawanghuihui.orgfayuanbooks.com
fgmtv.orgganjing.com
ganjing.worldganjingworld.com
guangming.orgmhradio.orgpersianepochtimes.comstarp2p.comtiandixing.orgtiantibooks.orgtuidang.orgupholdjustice.orgwujieliulan.comxinsheng.netyuanming.netntdtv.kr
zhengjian.orgzhengwunet.org
zhenxiang.bizzhuichaguoji.orgshenyun.comshenyun.orgshenyuncreations.comshenyunperformingarts.orges-visiontimes.comkannewyork.comkanzhongguo.comkanzhongguo.eusecretchina.com
trithucvn.net
trithucvn.orgvct.newsvisiontimes.comvisiontimes.devisiontimes.frvisiontimes.itvisiontimes.netvisiontimesjp.com
vtvan.comwatchinese.combayvoice.net
epochtimes.se
sohcradio.com
sohfrance.orgsoundofhope.eusoundofhope.krsoundofhope.org
epochtimes.itbannedbook.netninecommentaries.comedninfo.comepoch.cloud
epochbase.comepochbuy.comepochcar.comepochhk.com
epochmall.comepochmediagroup.comdajiyuan.comepochstories.com
epochtime.comepochtimes-bg.comepochtimes-romania.com
epochtimes.bgepochtimes.com
epochtimes.cz
epochtimes.de
epochtimes.euvelkaepocha.cztheepochtimessubscribe.com
epochtimes.pl
renminbao.com
epochtimes.ru
ntdvn.com
epochtimes.fraboluowang.com
epochtimes.jp
epochtimes.nltheepochtimes.comdajiyuan.eu
epochshop.comepochtimeshk.orgepochtimestr.com
epochweek.comepochweekly.comerabaru.net
+etviet.comlagranepoca.comminghui.orgntd.com
+ntd.tv
ntdca.com
+ntdimg.comntdtv.cantdtvla.comntdtv-dc.comntdtv.ru
ntdtv.org
ntdtv.comcbsistatic.comcbsinteractive.com
+cbsimg.net
cbsig.net
+cbsiam.com
+cbsi.videocbsi.comcbscorporation.comcbs.comamericasvoice.newsafpforum.comafp.com
+mi9cdn.com47gyosei.jp
47news.jpkyodo-d.info
+kyodo-d.jpkyodoimages.jpkyodonews.jp
kyodonews.netnewsmart.jp
+nna.jp
+manoto1.tvmanototv.comandysparis.comnewsmax.com
+newsmax.in
newsmaxtv.com
realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.orgrealclearscience.comrealclearworld.com
+gendai.netnikkan-gendai.comelectrek.cotypeisbeautiful.comappleinsider.comdigitaltrends.comengadget.com
macrumors.comslashdot.orgtechnews.tw
techradar.comycombinator.comandroidpolice.com9to5mac.com9to5google.com
tomsguide.com9to5terminal.com9to5toys.comdronedj.comandroidauthority.comspaceexplored.comthetype.com
zdnet.comstartupschool.org9cdn.net
6park.com6parkbbs.com
6parknews.com
+cool18.com
popo8.com
+parkvv.comxwbo.comi-cable.com
init.shophuffingtonpost.jphuffingtonpost.eshuffingtonpost.grhuffingtonpost.inhuffingtonpost.frhuffpostbrasil.comhuffingtonpost.dehuffpost.comhuffpostmaghreb.comhuffpostarabi.comhuffingtonpost.comhuffingtonpost.ithuffingtonpost.cahuffingtonpost.krtheinitium.comskysportsracing.comskysportsonline.comskysports.ie
+myradio.hkskysports.fr
aweencore.com
awetv.comherringnetwork.com
oanencore.comoann.comtospo-keiba.jp
skysports.comamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.combbg.govdandalinvoa.comdarivoa.comdengeamerika.comdengiamerika.comglasamerike.netgolos-ameriki.rugolosameriki.com
insidevoa.com
pashtovoa.compersagg.comradiyoyacuvoa.comurduvoa.comvoa.govvoaafaanoromoo.comvoaafrique.comvoabambara.com
voabangla.comvoacambodia.comvoacantonese.comvoachinese.comvoadeewanews.comvoadeewaradio.comvoahausa.comvoaindonesia.comvoakorea.comvoalingala.comvoandebele.comvoanews.com
+voanews.euvoanoticias.com
voanouvel.comvoaportugues.comvoashona.com
voasomali.comvoaswahili.comvoathai.comvoatibetan.comvoatibetanenglish.comvoatiengviet.comvoatour.comvoazimbabwe.comzeriamerikes.com
breitbart.combbc-reporting-api.appbbcverticals.combbc.com
+bbc.inbbcpersian.comskyoceanrescue.itskyoceanrescue.deskyoceanrescue.com
skyassets.comsky.com
axios.com
+i-scmp.com4gtv.tvscmp.com
+neowin.netrumah123.comnypost.helpadhelpnews.comapi.newstimesmembership.com
bigcharts.comthetimes.ie
thesun.ie
talksport.com
page3.comdreamteamfc.combarrons.com
+rea.global
+rea.designfnlondon.com
rea-group.com
ippstatic.comrea.techhuanyuju.comthinkofliving.com
myfun.commansionglobal.commarketwatch.commoveaws.commove.com
+makaan.com
+rea.io
iproperty.comrea-asia.comnewsamerica.comsmartexpos.comhousingcdn.comhousing.com
proptiger.com
reastatic.netnewscorp.comnewscorpaustralia.comrealtor.comnypostreprints.comdowjones.comnewssyndication.comnewsukadops.com
+nypost.com
+nlm.iodjreprints.comharpercollinsadvantage.comharpercollinschristian.comstoryful.comharpercollins.ca#harpercollinsspeakersbureau.comshelfstuff.combookclubgirl.comharperapps.comharperacademic.com
epicreads.com
+hcpdts.comwsjbarrons.com
+collins.inwireless.radiolibrarylovefest.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.comwsj.comwsj.jobswsj.netwsjmediakit.comwsjplus.comwsjshop.comwsjwine.combarrons-advisor.combarrons-conferences.comharpercollins.comdowjoneson.comdowjones.ioneow.innikkansports.comasahicom.jp
asahi.comasagaku.com
+aiasahi.jpsyhacked.comsrebrenica360.comsarajevopodopsadom.compalestineremix.com
aljazeera.net
aljazeera.com
+ajplus.netudnfunlife.comudndata.comudn.commpweekly.com
mpfinance.com
mingwatch.commingshengbao.com
+sinchew.my
omghk.commings.hkyzzk.commingpao.commings-fashion.com
mysinchew.comenanyang.mymingpaotor.commingpaovan.commediachinese.commingpaocanada.commingpaomonthly.comfantv.hkhkopentv.com!yiqiedoushiganggangkaishi.orgrolsociety.orgrolfoundation.org
+rexcha.comnfscofficial.comnfscdict.comnfsc.globalhpayshop.comhimalaya.exchangeradiotavisupleba.ge
gwins.orgsvoboda.org
gwiki.net
guo.mediagtvmediagroupfairfund.comgtv1.orggtv.org
gnews.orggfashion.com
gettr.com
+gclubs.comg-tvapp.comglobalvoicesonline.orgglobalvoices.orgtheguardiandns.comtheguardian.comguardianapis.com
+gu-web.netdev-theguardian.comdev-guardianapis.combbgwatch.comweekly-economist.comnewsgawakaru.commottainai.info
mirailab.techmeijinsen.jpmainichibooks.commainichi.jpmainichi-athletepartners.jpetvonline.hkrthk.hksankei-ad-info.cominnovations-i.com
sankei-ad.net
ironna.jptvnaviweb.jpjapan-forward.com
keiba.net
business-i.jpseiron-sankei.com
mostly.jp
+sankei.com
+ign.jpmetropolitana.tokyosankei-call.jpseasidestory.tokyo
+sanspo.com
sankeishop.jpsankei-kurashi.comsankei-shougakukai.jpsankei-tours.comsankeibiz.jp
sankei.jpmachigoto.jpthebankerdatabase.com
thebanker.com
+pwmnet.compensions-expert.commandatewire.comagendaweek.comigniteseurope.comsetn.comignitesasia.comprivilege.tw
+atnext.comtomonews.net
appledaily.hkappledaily.com
sharpdaily.twtwnextdigital.combestmallawards.comapplefruity.comprivilege.hknext.hk
omoplanet.comnextwork.twnextwork.hknextmgz.com
nextmedia.comftiecla.com
+excedo.comthenextweb.comfundfire.comignites.com
ftchinese.com
ftadviser.com
+ft.comfinancialadvisoriq.comfdiintelligence.comglobalriskregulator.comexec-appointments.comgisplanning.comsoccermatchpass.comshopspeedtv.com
rprimelab.com
+forbes.com
forbesimg.commalayalamanorama.commanorama.commanoramanews.commanoramaonline.commanoramayearbook.inonmanorama.com
radiomango.fm
theman.in
+theweek.invanitaonline.com
+vanitha.invanithaveedu.comhkheadline.comsingtao.comsingtaonewscorp.commy-magazine.me
singtaola.comsingtaousa.comstheadline.comsingtaoopo.comheadlinejobs.hk
+sing68.comsingtaobooks.com
+eduplus.hkbastillepost.comrealmilwaukeenow.comrealamericanstories.tvrealamericanstories.orgrealamericanstories.netrealamericanstories.infoetwealth.comhket.com
hketgroup.comrealamericanstories.com
+q13fox.comq13.comparadisehotelquizfox.comorlandohurricane.comnewsnowfox.commyq2.com
myfoxzone.commyfoxtwincities.commyfoxtampabay.commatters.newsmatters.onematters.townmattersprotocol.iowantblogger.comchinatimes.comloveparents.orgwant-media.com
+ctwant.com
lecoin.ccbenliton.comzwtvusa.commyfoxtampa.commyfoxphoenix.commyfoxphilly.commyfoxorlando.commyfoxny.commyfoxmaine.comchuokoron.jp
fujinkoron.jp
+hochi.newsyomilogi.comthe-japan-news.commyfoxlubbock.commyfoxlosangeles.commyfoxla.commyfoxhurricane.commyfoxhouston.commyfoxdfw.commyfoxdetroit.commyfoxdc.commyfoxchicago.comnbcudigitaladops.commailonsunday.ie
dailym.aimailhealth.com
dailymail.com
+thismon.eedailymail.dkdailymailonline.commailonline.com
+mol.immyfoxcharlotte.commyfoxboston.commyfoxaustin.commyfoxatlanta.com
my9nj.commy45.com
+my29tv.commy20houston.com
+medium.commedium.systems
+bgr.inbollywoodlife.comcareerfundas.comcricketcountry.comdnai.indnaindia.comearngeek.comekhindi.com
+ind.sh
india.comindiancolleges.comitripto.com
oncars.inprepsure.comthehealthsite.comwionews.com
yo1health.comzee.com
+zeebiz.comzeeentertainment.comzeenews.comthomsonreuters.rureuters.com
elite.comlegaltracker.com
+reuters.tvreutersagency.cnreut.rsthomsonreuters.cathomsonreuters.cn
+tr.com
tmsnrt.rsthomsonreutersmexico.comaranzadi.esthomsonreuters.comreutersmedia.netcorepublishingsolutions.comthomsonreuters.inthomsonreuters.es
+my20dc.com
+my13la.commaskedsingerfox.comkilmeadeandfriends.comjoeswall.comgooddaychicago.comgeraldoatlarge.com
+fse.tvcoronavirusnow.comcasoneexchange.com
+anidom.comafewmomentswith.commyfoxsanfran.comktvu.com
+cnbeta.com
cnbetacdn.comkicu.tv
economist.comeconomistgroup.comeconomistgroupcareers.comeiu.combentobox.tvfoxsoccerplus.net
fox5storm.comfox.com
+fox.tvfox10.tv
fox10news.comfox10phoenix.com
fox11.comfox13memphis.com
fox13news.com
fox23.comfox23maine.com
+fox247.com
fox247.tv
fox26.comfox26houston.comfox28media.com
fox29.comfox2detroit.comfox2news.com
fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com
fox42kptm.com
fox46.comfox46charlotte.com
fox47.comfox49.tvfox4news.comfox51tns.netfox5atlanta.comfoxsoccerplus.tv
+fox5ny.comfoxsoccershop.comfox6now.comfox7.comfox7austin.comfox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com
+foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.comfoxcincy.com
foxcincy.jobsfoxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com
foxcredit.com
foxcredit.orgfoxd.tv
+foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tvfoxdigitalmovies.comfoxdoua.comfoxentertainment.com
+foxest.com
+foxfaq.com
+foxfdm.comfoxfiles.com
+foxinc.com
foxkansas.com
foxla.comfoxla.tvfoxlexington.comfoxmediacloud.com
foxnation.comfoxnebraska.com
+foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com
+foxnews.cc
+881903.comfoxnews.netfoxnews.org
+foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com
foxnewsgo.net
foxnewsgo.orgfoxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com
foxon.comfoxphiladelphia.comfoxplus.comfoxpoker.com
foxrad.io
foxredeem.comfoxrelease.comfoxrichmond.com
foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org
foxsoccer.netfoxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfox-corporation.com
+fox5dc.comfox-news.comfoxsportsflorida.comfoxsports-newyork.comfoxsports-world.comfoxsports.clfoxsports.co
foxsports.comfoxsports.gtfoxsports.info
foxsports.netfoxsports.pewogx.comwoflthenewsstation.comwofl.tvwhosthehost.comwhatthefox.comthegeorgiascene.comthefoxnation.comtheclasshroom.com
testonfox.comteenchoice.com
speedxtra.comspeedracegear.comfoxsports.svfoxsports.uyfoxsports2.comfoxsports-chicago.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com
foxsuper6.com
+foxtel.comspeedfantasybid.comspeeddreamride.comfoxtelevisionstations.com
foxtv.comfoxtvdvd.com
foxuv.comfoxweatherwatch.com
fssta.com
+fxn.ws
fxnetwork.comfxnetworks.comthomsonreuters.co.nzdailymail.co.ukthomsonreuters.com.arkidspot.com.authomsonreuters.com.authomsonreuters.co.krthomsonreuters.co.jpthomsonreuters.com.brsweetandmaxwell.co.ukthomsonreuters.com.pethomsonreuters.com.mythomsonreuters.com.hkthomsonreuters.com.trthomsonreuters.com.sgthomsonreuters.co.ukheraldsun.com.aumailonline.co.ukbnext.com.tw9nation.com.aumetro.co.uk
anm.co.ukmailonsunday.co.ukdmgmediaprivacy.co.ukdailymail.com.au
yomiuri.co.jpyomiuri-systec.co.jp#yomiuri-shimbun.pressreader.comyomiuri-ryokou.co.jpyomiuri-johkai.co.jpryokoyomiuri.co.jp
ync.ne.jp
yomikyo.or.jpsuperstation.com.twchinatimes.com.twctee.com.tw
+ctv.com.twctitv.com.twinfotimes.com.tw
yes123.com.tw
+ltn.com.twumagazine.com.hkulifestyle.com.hkettrade.com.hketpress.com.hketnet.com.hketbc.com.hkeprc.com.hkgoldcoastbulletin.com.authestandard.com.hkeastweek.com.hkjobmarket.com.hkpcmarket.com.hkeasttouch.com.hkappledaily.com.hkappledaily.com.twapplehealth.com.hkfoxsports.com.gtfoxsports.com.mxfoxsports.com.vefoxsports.com.uyfoxsports.com.py
foxtel.com.aufoxsports.net.brfoxsports.com.pefoxsports.com.brfoxsports.com.cofoxsports.com.ecfoxsports.com.bofoxsports.com.arfoxsports.co.ve
deluxe.com.hk
eracom.com.twnextdigital.com.hk
nxtdig.com.tw
nxtdig.com.hknextdigital.com.twnextfilm.com.hknextwork.com.twnextwork.com.hk
nexttv.com.twnextplus.com.hknextmag.com.twnextmedia.com.twsettv.com.twzakzak.co.jp
iza.ne.jpsankei-books.co.jpsankei-digital.co.jpsankei-eiga.co.jpsankei-kaihatsu.co.jpsankei.co.jpinvestorschronicle.co.ukknowswho.co.jpthetimes.co.ukthesundaytimes.co.uk
the-tls.co.uksportswomenoftheyear.co.uksportswomanoftheyear.co.ukmytimesplus.co.uk
driving.co.ukbestrecipes.com.ausponichi.co.jpbodyandsoul.com.authesun.co.ukthescottishsun.co.uksunbingo.co.ukbridge-studio.co.ukcairnspost.com.aucnivogue.com.auguardianapps.co.uk
+guim.co.ukguimcode.co.ukcouriermail.com.auproperty.com.ausquarefoot.com.hkhometrack.com.ausmartline.com.auinventorship.com.auiproperty.com.mydailytelegraph.com.auflatmates.com.aurealestate.com.aurealcommercial.com.auhackday.com.aubusinesstoday.com.twgeelongadvertiser.com.auapexprint.com.hkthisismoney.co.uk
cnbeta.com.twlivrariart.com.brnativeincolour.com.aunewcastlenewslocal.com.au
+news.co.uknews.com.au1degree.com.aunews.net.aunewsadds.com.aunewsapi.com.aunewscareers.co.uknewscdn.com.aunewscommercial.co.uknewsconcierge.com.aunewslicensing.co.ukadelaidenow.com.aunewsprinters.co.uknewsxtend.com.au
ntnews.com.aunatgeokidsbooks.co.ukharpercollins.co.ukegmontbooks.co.uk
collins.co.ukharpercollins.com.au%!harpercollinschildrensbooks.co.ukchinapress.com.mysoccerfanz.com.mysinchew.com.myguangming.com.myplacemyad.com.ausavvyshopper.net.ausupercoach.com.au
+udn.com.twtaste.com.autheaustralian.com.authechronicle.com.authemercury.com.authemessengeradelaide.com.autownsvillebulletin.com.auweeklytimesnow.com.auwhimn.com.auwirelessgroup.co.ukiproperty.com.sgwhereilive.com.auharpercollins.co.inasakonet.co.jpnewsprestigenetwork.com.auftvnews.com.tw
+ftv.com.tw
+tver.co.jpbidi.net.uk
bbc.co.ukbbc.mp-pxcdn.combbcmedia.co.uk
+bbci.co.uk
+bbc.net.uktokyo-sports.co.jpmyradio.com.hkhuffingtonpost.com.auhuffingtonpost.co.ukhuffingtonpost.co.zahuffingtonpost.com.mxcabletv.com.hkzdnet.redvideo.ioepoch.org.il9now.com.au9news.com.aufreeviewplus.net.au
+mi9.com.auintheknow.com.aunine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au
yourtv.com.auepochtimes.co.ilepochtimes.co.krepochtimes.com.bram730.com.hkepochtimes.com.auepochtimes.co.ukepochtimes.com.sgyuming.qxbbs.orgepochtimes.com.uantdtv.co.krntdtv.com.twfalundafa.org.twepochtimes.com.tw
zaobao.com.sgbusinessinsider.com.aubusinessinsider.com.plbusinessinsider.co.zadelicious.com.autvmedia.net.aubigbigchannel.com.hktvbeventpower.com.hktvbanywhere.com.sg
+tvb.com.au
+now.com.hknikkeibp.co.jpnikkei.co.jpnikkei-cnbc.co.jpbloomberg.com.brbloomberg.co.krbloomberg.co.jpspacely.com.au
escape.com.au
+ydn.com.tw
wealth.com.twvjmedia.com.hk
tvmost.com.hktvbs.com.twtaiwannews.com.twsingpao.com.hkmoney-link.com.twmirrormedia.com.twltsports.com.tw
inside.com.tw
+ebc.net.tw
cw.com.tw
+cup.com.hkcoolloud.org.tw
+cna.com.twcmmedia.com.twbusinessweekly.com.twbbcfmt.s.llnwi.nettvbc.com.cn
+cn
thetype.cloud
+cnetnet.com.cn
+cnetnetchina.com.cn
+cn
+
+DINGTALKddurl.todingding.xindingtalk.cndingtalk.comdingtalk.netdingtalkapps.comlaiwang.comlwurl.to
+
+
MICROSOFT-DEVaz764295.vo.msecnd.net)%bingsettingssearch.trafficmanager.netdefault.exp-tas.comdeveloper.microsoft.com'#download.visualstudio.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netrink.hockeyapp.net+'vscode-sync-insiders.trafficmanager.net"vscode-sync.trafficmanager.net vscode.blob.core.windows.netvscode.search.windows.net vsmarketplacebadge.apphb.comadaptivecards.ioapi-extractor.com
+apisof.netappcenter.ms
+blazor.netbotframework.comcodethemicrobit.comdevopsassessment.netdot.netgamesstack.comgraphengine.ioinsiderdevtour.com
+jwt.msmicrobit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com
mmdnn.commono-project.commsdn.commsinnovationchallenge.commspairlift.commsropendata.com
nuget.org
nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.com
+sankie.netsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.euvisualstudio.net
vfsforgit.com
vfsforgit.orgvsassets.io
+vscode.devvscode-cdn.netvscode-unpkg.netxamarin.comvisualstudio.co.ukmicrosoftreactor.cn
+cn#microsoftreactor.com.cn
+cnreactorms.com.cn
+cn
+
+ROBOROCKroborock.com
+0
+ SURUGA-YA
suruga-ya.comsuruga-ya.jp
+
+WOOLITE
+woolite.cawoolite.com
+woolite.pl
+woolite.uswoolitecarpet.com
+woolite.cn
+cnwoolite.com.cn
+cn
+6
+AGORAagora.io
+agoraio.cnagoralab.co
+T
+ DLERCLOUD
dlercloud.com
dlercloud.orgdlercloud.medleris.best
+/
+ILLUSIONillusion.jpillusion.co.jp
+
+%CATEGORY-ENTERPRISE-QUERY-PLATFORM-CN
jindidata.comtianyancha.comx315.comqcc.comqichacha.comqichamao.com
qixin.comqyyjt.cnaiqicha.baidu.comhongdunwang.com.cn
+_
+COREL
corel.com
corel.net
coreldraw.app
coreldraw.comcorelstore.com
+
+WPS
+wps.cnwps.com
wpscdn.cn
+wpscdn.com
+kscord.com
51dzt.com
iciba.com
docer.comkdocs.cnwpsmail.netpapocket.com
wpspdf.cn
+
+9NEWS9cdn.net
+mi9cdn.com9now.com.au9news.com.aufreeviewplus.net.au
+mi9.com.au9nation.com.aunine.com.aunineentertainment.com.aunineentertainmentco.com.auninemediaroom.com.auninemsn.com.austatic9.net.au
yourtv.com.au
+d
+AUTODESK123dapp.com123dappipad.com123dartisan.com
123dcatch.com123dcircuits.com123dcreature.com123dcreaturenews.com123ddesign.com123ddoodler.com123dmake.com123dnews.com123dpro.com123dpro.net123dsculpt.com20yearsoffea.com360autodesk.com360nexus.com360nexus.net
+360plm.com360trailers.com3d-december.com3ddecember.com
3december.com3decemberonline.com3drules.com3dstudio.com
3dtin.com
3dtin.net5-d.com
51tuqiang.com5axis-machining.com
+acdocs.com
+adinst.com
adskcloud.com
adskcloud.netadskeng.netadskengineering.net
adskengpp.net
adskengpr.net
adtcc.comaecexcellence.comaerospace-cadcam.comaerospace-design.comairgunstudio.com
alias.comaliasadvantage.comaliasimaginationsengine.comaliasple.comaliasshowcase.comaliassketchbook.comaliassketchbookpro.comaliassystems.com aliasvisualizationstudio.comaliaswavefront.comarchitectural-cadcam.comarnoldrenderer.com
+artcam.comartcamexpress.comartcaminsignia.comartcamjewelsmith.com
artcampro.comassemblesystems.comautocad-schulungen.comautocad.comautocad360.com
autocad3d.comautocadarchitecturecc.comautocadexpert.comautocadformac.comautocadfreestyle.com
autocadlt.comautocadltbg.comautocadmac.comautocadmobile.comautocadsucks.comautocadsucks.net
autocadws.com
autocadws.netautodesk-aia-me.comautodesk-events.comautodesk-kickoff.comautodesk-mm.comautodesk-news.comautodesk-online.comautodesk-service.comautodesk-services.comautodesk-support.comautodesk-university.comautodesk-usability.comautodesk.comautodesk.devautodesk.netautodesk123d.comautodesk123dnews.comautodesk360.comautodesk360access.comautodesk360beta.comautodesk360bim.comautodesk360express.comautodesk360forbim.comautodesk360forplm.comautodesk360nexus.comautodesk360nexus.netautodesk360plm.comautodesk360pro.com!autodesk360solutionforbim.com!autodesk360solutionforplm.comautodesk360vault.comautodeskaecfeed.comautodeskandcitrix.comautodeskarcade.comautodeskautocadlt.comautodeskautomotive.comautodeskbim360.comautodeskbookrequest.comautodeskbuild.comautodeskbuildingops.comautodeskbuildspc.comautodeskcave.comautodeskchronicle.comautodeskcommunications.comautodeskcompetitions.com!autodeskdesigncompetition.com"autodeskdesigncompetitions.comautodeskdiscussions.comautodeskdocandmedia.com#autodeskdocandmediaamericas.comautodeskdocandmediaasia.comautodeskdocandmediaemea.com!autodeskdocandmediaeurope.comautodeskegitimleri.comautodeskenterprise.comautodeskevents.comautodeskfashionstyler.comautodeskforgames.comautodeskforge.comautodeskformit.comautodeskfoundation.comautodeskfusionlifecycle.comautodeskgovernment.net#autodeskgreenbuildingstudio.comautodeskhelp.comautodeskicpcouncil.comautodeskimpression.comautodeskinform.comautodeskinstant.comautodeskjournal.comautodesklearning.comautodesklistens.comautodesklivedesign.comautodesklms.com$ autodeskmanufacturingacademy.com%!autodeskmayaformotiongraphics.comautodeskmedbookrequest.comautodeskmedia.comautodeskmediarequest.comautodeskmeetings.comautodeskmfg.com%!autodeskmotiongraphicsandmore.comautodesknews.comautodeskonline.comautodeskpartner.comautodeskplm.comautodeskplm360.comautodeskplm360.netautodeskproductreviews.comautodeskprofiles.comautodeskprograms.comautodeskresearch.comautodeskrevit.comautodeskrevit.netautodeskrevitsucks.comautodeskrevitsucks.netautodeskseek.comautodesksketchbook.com"autodesksketchbookdesigner.comautodeskstylebook.comautodesksubscription.comautodesksucks.comautodesksucks.netautodesktechdays.comautodesktechx.comautodesktinkerbox.comautodesktravel.comautodeskturkiye.comautodeskuniversity.comautodeskuniversity2013.comautodeskvasari.comautodeskvasari.netautodeskvietnam.comautodeskviewer.comautodeskworkshop.comautodeskworkshop.netautomotive-cadcam.comautosketch.comauxdubai.comavatara.combehindthescreenz.combest4bim.combestbim.com
betterbim.combetterwithautodesk.combim-360.com
+bim360.com
+bim360.netbim360field.combim360glue.com
bim360ops.combim3dcontent.combimadsk.combimglue.combimlibrary.com
bimseeker.com
bimsource.combimworld.com
bridgebim.combrni.combuilding3dcontent.comcad-mep.comcadcamsystemsinc.comcadduct.com
+cadmep.comcadoverlay.com
+cadren.com
caice.comcam-duct.comcamduct.comceramics-cadcam.com
+cfd-tv.comcfdesign.comchina-autodesk.comcitrixandautodesk.comcivil3d.comcivilcc.comcivilsoftware.netclimate-server.comcompass-system.comcompass-systems.comconstructware.comcontechacademy.comcrankplayer.comcreatewhatsnext.comcreativepass.comcreatwhatsnext.comdarwindimensions.comdelcam-ams.comdelcam-electrode.com
delcam-na.comdelcam-robotics.comdelcam-services.com
+delcam.comdelcamconsulting.comdelcamforsolidworks.comdelcamna.comdelcamtv.comdelcamuniversity.com
delcamusa.comdesign-ledrev.comdesign-ledrevolution.comdesignledrevolution.comdesignsformovement.com
designxml.com
designxml.netdestinationbim.comdigitalprototyping.comdiscreet.comdodv.comdrainage.com
drnastran.comdwg.comdwgtrueconvert.comdwgtrueview.comdynamobuilds.comdynamopackages.comdynamoreach.comecotect.comecotect.net
+ecscad.comecspublisher.comeducation-cadcam.comember3dp.comemberprinter.comemergingsolutions.comenergystarbuildings.comeraofconnection.com
esopworld.com#eueuropeansustainabledesign.neteurocodesoftware.com!europeansustainabledesign.com!europeansustainabledesign.net($europeansustainabledesigncouncil.com($europeansustainabledesigncouncil.netevalviewer.comevolver.com
evolver3d.comevolverpro.comextensions4revit.comfakeorfoto.comfakeorphoto.comfeanonlinear.comfeaturecam.com
+five-d.comflameunleashed.com
flowfront.com
flowfront.netfluidfxapp.com
fmdesktop.comfollowpype.comfootwear-cadcam.com
formit360.comformitfactory.comfreefbx.comfusionlifecycle.comfusionproductionapps.com$ futureofbritishmanufacturing.comfutureofmaktingthings.com
gbxml.netgeneticconstructor.comgeospatialimaging.comgeospatialinfo.comgetbuzzsaw.comgivemebuzzsaw.comgobuildx.netgovernmentengineer.comgreenbuildingstudio.com
hmsxpress.comhomestylerapp.comhomestylernews.comhorizontal-llc.comhorizontal-systems.comhorizontalglue.comhorizontalsystems.com
hsm-works.comhsm-xpress.comhsmexpress.comhsmworks.com
hsmxpress.comidea-server.comimagemodeler.comimaginationsengine.comimpactdesignhub.cominfraworks.cominstallbuzzsaw.comintelisolve.cominventor-certified.cominventorfusion.cominventorseries.comistorytell.comizmirautodeskegitimleri.com
jasa3dmax.comjasaautocad.comkaydara.comkeepyourcad.comkynogon.comlasersawapp.comlicenseparser.comlivesketchshare.comlrfdsoftware.comlunchwithpype.commachine-dna.commadewithmaya.commadewithstudiotools.commagestic.commakeanything.commakeitrealcontest.commakingstartshere.commap-software.commapguide.commappingonline.commarinecadcam.commarkingmenus.commatchmover.commaxillofacial-cadcam.commayacomplete.commayaconductors.commayafluideffects.commayaformotiongraphics.com
mayagames.commayamasters.commayamentor.netmayamentors.commayamentors.netmayaonlinux.com
mayaonmac.com
mayaonosx.commayapressbooks.com
mayasucks.commayaunlimited.commayauser.commayauser.netmayavisualization.commedicalimplants-cadcam.com
meshmixer.commeshmixerforum.commimistudio.commimistyler.commmmanual.commoldflow.commoldflowexpress.commoleculardesigntoolkit.com molecularsimulationtools.commolecularviewer.com
molviewer.commorewithautodesk.commotiongraphicsandmore.commudbox3d.commy1stflame.com
myautocad.commyautodeskbenefits.commyfirstflame.commymapportal.comnastranincad.com
nastrannx.comnastrantraining.comnastranworldwide.comnavisworks.comnavisworks.net
+neicad.comneiexplicit.com
+neifea.com
neimotion.comneinastranincad.comneisoftware.comneisolutions.comneiworks.com
nenastran.comnetzerobuildings.comnetzerobuildingstudio.comnew2fea.comnewtofea.comnextgenerationcam.comnonlinearnastran.com
objectarx.comoneteamconference.comopenreality.comopticore.comorthopaedic-cadcam.comorthotics-cadcam.compackaging-cadcam.compackagingcadcam.com
partmaker.com
pi-vr.compixlr-o-matic.compixlromatic.complansondemand.complasticlabs.complastics-cadcam.com
plug-into.comportfoliowall.compoweranimator.compowerinspect.com
powermill.compowermillna.compowershape-e.compowershape.comprofilemaster.comprojectpoint.comprojectpoint.netprojectshoreline.comprojectvasari.comps-exchange.comrapidprototyping-cadcam.comreality-computing.comrealpeople-realprojects.comrealpeoplerealprojects.comrealviz.comretimer.com
revit.comrevitcc.comrevitsucks.netrobobat.comrobotoffice.comsavoycomputing.com
scaleform.com
scpic.netsculpoly.comshotgridsoftware.comshotgridstudio.comshotguncloud.com
shotgunfx.comshotgunlocalhost.comshotgunsoftware.comshotgunsoftware.netshotgunstudio-test.comshotgunstudio.comshotgunvfx.comsimsquad.comsimulationsquad.comsketchbookdesigner.comsketchbookmobile.comsketchbooknews.comsketchbookpro.com
skymatter.comsmartfea.comsmartnastran.com
socailcam.com
socialcam.comsocialcammail.com
socialkam.comsqu1.comsquidplatform.comssttest.netstingrayengine.comstudiopaint.comstudiosucks.comsubmittal-log.com!sustainablebuildingstudio.com sustainabledesigncouncil.com sustainabledesigncouncil.netsuxiebu.comswiss-machining.comswiss-turn.com
t-splines.comthe-area.comthe123d.comthedesignworkshop.comthedesk.comtheinventionworks.comtheinventionworks.net
timefxapp.comtinkerboxapp.com
tinkercad.comtinkerentertainment.comtinkerplay.nettire-cadcam.comtoolmaking-cadcam.comtopobase.comtoy-cadcam.com
toycadcam.comtruebim.comtruedwg.comtrunest.comtrusted-dwg.comtrusteddwg.comtryalias.com
trydesign.comtspline.comtsplines.comtweakadmin.comtweakfilms.comtweaksoftware.comtyre-cadcam.comtyrecadcam.comupfrontcfd.comupfrontfea.comvelaserver.comvelastaging.comvelasync.comvelasystems.comvelatest.comviriondb.comvortexmachining.comvred-essentials.comvredessentials.comvredprofessional.com
vrnastran.comxn--74q434dwff.comxn--74q434dwff.net
+
+CATEGORY-EDUCATION-CNmoocs.unipus.cnopencourse.pku.edu.cn
study.163.comyudou.cnyushiyan.netxuetangx.com
+x-cloud.cckuaiduizuoye.com
liulishuo.com
+llsapp.com
+llscdn.com
llsserver.com
baicizhan.com
baicizhan.org
+bczcdn.combczeducation.cnzhan.comburningvocabulary.cnburningvocabulary.comdgjy.net
91yunxiao.com
aiyunxiao.com
haofenshu.comiyunxiao.comyunxiao.comkeboyunxiao.com
ketangpai.com
pigai.orgweilaiyunxiao.com
+magedu.com
oldboyedu.com
eduei.com
+edu.cnchinesemooc.org
+cnmooc.orgicourse163.orgicourses.cnmooc.cnopenlearning.compmphmooc.com
+koocdn.comkoolearn.comkoopass.com
baydn.comshanbay.com
zhihuishu.com
+17zuoye.cn17zuoye.com17zuoye.netapplysquare.comapplysquare.net
+cctalk.com
hjapi.com
hjfile.cnhujiang.com
yeshj.comspeiyou.com
+xesimg.comxueersi.com
banmaaike.comxiaoyuankousuan.comybccode.com
yuanfudao.com
yuansouti.comyuantiku.comrainclassroom.comyuketang.cnicve.com.cn
+-
+DWdeutschewelle.h-cdn.com
+dw.com
+
+HTTPDNS
+dns.jd.comdns.weibo.cndns.weixin.qq.comdns.weixin.qq.com.cnhttpdns-api.aliyuncs.comhttpdns-sc.aliyuncs.comhttpdns.alicdn.comhttpdns.bilivideo.comhttpdns.c.cdnhwc2.comhttpdns.meituan.comhttpdns.music.163.comhttpdns.n.netease.comhttpdns.push.oppomobile.comhttpdns.volcengineapi.comhttpdns.yunxindns.comkuaishou.httpdns.prolofter.httpdns.c.163.commusic.httpdns.c.163.comhttpdns.baidu.comhttpdns.baidubce.comhttpsdns.baidu.com
+
+ SWISSSIGN
digital-id.chdigitalid.chmanaged-pki.chmanaged-pki.depki-post.chpki-posta.chpki-poste.chroot-signing.chrootsigning.comssl-certificate.ch
+swissid.chswissign.comswissign.liswisssign-group.chswisssign-group.comswisssign-group.liswisssign.ch
swisssign.comswisssign.li
swisssign.net
swisssign.orgswisssigner.chswisssigner.comswisssigngroup.chswisssigngroup.comswissstick.comswisstsa.chswisstsa.litrustdoc.chtrustsign.chzert.ch
++
+TYPEKITtypekit.comtypekit.net
+
+CATEGORY-NETDISK-CNlanzouf.comlanzouq.com
+ctfile.com
feimaoyun.comwoozooo.comlanzoug.com
+weiyun.comlanzouy.com
+123pan.comaliyundrive.comlanzoux.combaidupan.comilanzou.comlanosso.com
+lanzou.comlanzoub.comlanzouc.comlanzoue.com
+yunpan.com
+lanzov.comlanzoum.comlanzoui.comlanzouj.comlanzouk.comlanzoul.comlanzouh.comlanzouo.comlanzoup.comlanzouw.comlanzous.comlanzout.comlanzouu.comlanzouv.comcloud.189.cnyunpan.aliyun.comyun.139.compan.quark.cn
pan.baidu.com
+
+DEDAObiji.com
+ddmogo.com
+igetget.cnigetget.comluojilab.com
mogoo.com
+sao.cnsaolife.com
+
+DUOLINGOduolingo.comduolingo.cn
+cn!ads-api.duolingo.com
+ads!metrics.duolingo.com
+ads'analytics.vpc.duolingo.com
+ads
+
+TABOOLAtaboola.com
+H
+ ZYNGA-ADS zynga.com
+ads#zyngaplayersupport.com
+ads
+
+EAea.tt.omtrdc.neteaassets-a.akamaihd.net#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com
chillingo.comcommandandconquer.comconquerwithcharacter.com
crysis.jpdawngate.comdawngatechronicles.com
+dicela.com
+dicela.netea-anz-press.com
+ea.comeaaccess.comeacashcard.com
eacodigos.comeamobile.comeanordic.com
+eaplay.comeasports.comeasports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr
futpromos.com
futunited.comghostgames.comheroesofdragonage.com
hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org
maxis.commysimsracing.com
play4free.complayapex.compogo.compogobeta.com
+popcap.comprojectapex.com
pvzheroes.comspearhead.krspeedhunters.com
spore.comssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.comtiburon.com
+tnt-ea.comultimaforever.comunravel2.comunraveltwo.comvisceralgames.com
+yogify.comanthemgame.comanthemthegame.comapexlegends.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com
battlelog.combioware.combiowarestore.comeamythic.comeamythic.net
cncrivals.comcamelot-europe.comcamelotherald.comcamelotherald.netdaoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.comdice.se
dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comeafootballworld.comfifastreet.comfifastreet3.com
frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.comnfsworld.comteamneedforspeed.complantsvszombies2.com
+pvzgw2.comseaofsolitude.comsimcity-buildit.comsimcity.com
+skate2.comstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com
swjfo.com
swtor.com
swtor.net
+mysims.comthesims.comthesims3.comthesims4.comthesimssocial.com
titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com
+uo.comuoherald.comxdsummit.comeastore.comlordofultima.com
+origin.com
origin.tv
eakorea.co.krdungeonkeeper.com.cn
+,
+HITUNhitun.ioxn--90wwvt03e.com
+2
+NEWRELIC-ADS"js-agent.newrelic.com
+ads
+
+LIFEWIRElifewire.com
+%
+RUMBLErmbl.ws
+rumble.com
+
+SMARTONEs-rewards.hksmartone.comhkcircleapp.comhomephoneplus.comip73.coms-cashonmobile.comhealthreach.hksahabatsetiasmartone.combarkadahansasmartone.comsmartoneholdings.comsmartonerobotics.comwise-research.comsmartonesolutions.hkvaluegb.comsmartonesolutions.com.hk
+'
+WATCHOUTwatchout.tw
+waa.tw
+
+APPLE-UPDATEoscdn.apple.comxp.apple.comappldnld.apple.comgnf-mr.apple.comgs.apple.comig.apple.commesu.apple.comosrecovery.apple.comgnf-mdn.apple.comgg.apple.comswcdn.apple.com
skl.apple.comswdist.apple.comswdownload.apple.comswpost.apple.comswscan.apple.comupdates-http.cdn-apple.comupdates.cdn-apple.comns.itunes.apple.com
+
+HOTSTARhotstar.comhotstar-cdn.nethotstar-labs.comhotstarext.comhsprepack.akamaized.net ^hses[1-7]?\.akamaized\.net$
+*
+JOHRENjohren.games
+johren.net
+*
+APIPOST
+apipost.cnapipost.net
+
+
+STEAMf3b7q2p3.ssl.hwcdn.net steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteammobile.akamaized.netsteampipe-kr.akamaized.net#steampipe-partner.akamaized.netsteampipe.akamaized.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamvideo-a.akamaihd.netvalvesoftware.com
+s.team
steam-api.comsteam-chat.comsteamcommunity.com
steamdeck.comsteamgames.complayartifact.comsteamstatic.comunderlords.comsteampowered.comsteam.eca.qtlglb.comsteam.apac.qtlglb.comsteam.naeu.qtlglb.comsteam.ru.qtlglb.comsteam.cdn.on.netsteam.cdn.webra.ru"edge.steam-dns.top.comcast.netsteam.cdn.orcon.net.nzsteam.cdn.slingshot.co.nzsteamcontent.com
+cnsteamserver.net
+cn steamusercontent.com
+cncsgo.wmsj.cn
+cn
dota2.wmsj.cn
+cn
wmsjsteam.com
+cndl.steam.clngaa.com
+cndl.steam.ksyna.com
+cn st.dl.bscstorage.net
+cnst.dl.eccdnx.com
+cn!st.dl.pinyuncloud.com
+cn."steampipe.steamcontent.tnkjmec.com
+cn&steampowered.com.8686c.com
+cn%steamstatic.com.8686c.com
+cn xz.pphimalayanrt.com
+cnsteamchina.com
+cn
+
+
THESCOREGROUP18eighteen.com40somethingmag.com50plusmilfs.com60plusmilfs.comanalqts.comashleysageellison.comautumn-jade.combeascoremodel.combigboobbundle.combigboobspov.combigtitangelawhite.combigtithitomi.combigtithooker.combigtitterrynova.combigtitvenera.comblackandstacked.combonedathome.combootyliciousmag.combustyangelique.combustyarianna.combustydanniashe.combustydustystash.combustyinescudna.combustykellykay.combustykerrymarie.combustylornamorgan.combustymerilyn.combustyoldsluts.combustysammieblack.comcherrybrady.comchloesworld.comchristymarks.comcock4stepmom.comcodivorexxx.comcreampieforgranny.comcrystalgunnsworld.comdaylenerio.comdesiraesworld.comdianepoppos.comeboobstore.comevanottyvideos.comfeedherfuckher.comflatandfuckedmilfs.comgetscorecash.comgrannygetsafacial.comgrannylovesbbc.comgrannylovesyoungcock.comhomealonemilfs.comibonedyourmom.comifuckedtheboss.comjessicaturner.comjoanabliss.comjuliamiles.comkarinahart.comkarlajames.comleannecrowvideos.com
+legsex.comlinseysworld.commegatitsminka.commickybells.commilfbundle.commilfthreesomes.commilftugs.commillymarks.commommystoytime.comnataliefiore.comnaughtyfootjobs.comnaughtymag.comnaughtytugs.comnicolepeters.comoldhornymilfs.compickinguppussy.com
pornloser.compornmegaload.comreneerossvideos.comsarennasworld.comscoreclassics.comscoregroup.com
scoreland.comscoreland2.com
scorepass.com
+scoretv.tvscoreuniverse.comscorevideos.comsharizelvideos.comsilversluts.comstacyvandenbergboobs.comsusiewildin.comtawny-peaks.comtiffany-towers.comtitsandtugs.comtnatryouts.comvaloryirene.comxlgirls.comyourmomlovesanal.comyourmomsgotbigtits.comyourwifemymeat.com
+
+WIKIHOWwikihow.com
+)
+WYNDwyndlabs.aiwynd.network
+'
+HACPAI
+hacpai.com
ld246.com
+4
+MYDIRTYHOBBYmydirtyhobby.com
+mdhcdn.com
+f
+
TAYLORFRANCIStandfonline.comtaylorandfrancis.comtaylorfrancis.comtandf.co.uk
+
+MFUNSmfuns.cn
+v
+NATIONALGEOGRAPHICnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.comngeo.com
+
+TWITTERads-twitter.comcms-twdigitalassets.comperiscope.tvpscp.tvt.co
tellapart.com
tweetdeck.com
twimg.comtwitpic.comtwitter.biztwitter.com
+twitter.jptwittercommunity.comtwitterflightschool.comtwitterinc.comtwitteroauth.comtwitterstat.ustwtrdns.net
twttr.com
twttr.net
twvid.comvine.co x.com
+
+1337X1337x.to1337x.gd1337x.is1337x.st1337x.tw
+1337xto.to
1337xx.to
x1337x.eu
x1337x.se
x1337x.ws
+,
+BANDCAMPbandcamp.com
+bcbits.com
+@
+HAVEIBEENPWNEDhaveibeenpwned.compwnedpasswords.com
+
+CATEGORY-GOV-RUpskbelgorod.ruchel.rugu-st.ru
+emias.info
mgfoms.ru
+edu.ru
+cbr.runalog.ru
+mos.ru
mosreg.ru
+spb.ru
sevastopol.ru
+sev.ru
+adygeya.rubashkiria.ruburyatia.ruchuvashia.ru
crimea.rudagestan.ru
grozny.rui-ola.ru
+izhevsk.rukalmykia.ru
+karelia.rukazan.rukchr.rukhakassia.ru
+mari-el.rumari.rumordovia.ru
+nalchik.ru
+ptz.rurkomi.rutatarstan.rutuva.ru
+udm.ruudmurtia.ruulan-ude.ruvladikavkaz.ru
+yakutia.rualtai.ruchita.rukamchatka.ru
khabarovsk.ru
+khv.rukrasnodar.sukrasnoyarsk.rukuban.ru
marine.ruperm.rustavropol.ru
+bir.ru vl.ruvladivostok.ruamur.ruarkhangelsk.ruastrakhan.ru
government.ru
+stv.rugosuslugi.ru
surgut.ru
+bryansk.ruchelyabinsk.ru
ekburg.ru xn--80acgfbsl1azdqr.xn--p1ai
+irk.ru
+irkutsk.ru
+ivanovo.ru
+jar.ru
kaluga.rukemerovo.rukirov.ru
koenig.rukostroma.ru
kurgan.rukursk.ru
+lipetsk.ru
+magadan.rumurmansk.ru nn.ru
+nov.runovosibirsk.ru
+nsk.ruomsk.ru
+orb.ruoryol.rupenza.ru
+gov.ru
+psk.rupskov.ru
+rnd.ru
ryazan.rusakhalin.ru
samara.ru
+saratov.rusimbirsk.rusmolensk.ru
tambov.ru
+tom.rutomsk.rutsaritsyn.ru
+tsk.rutula.rutver.ru
tyumen.ruvladimir.ru
+vlg.ruvolgograd.ru
+vologda.ruvoronezh.ru
+vrn.ru
vyatka.ruyaroslavl.ruyuzhno-sakhalinsk.ruchukotka.rujamal.ru
+cbg.ruyamal.ru
+W
+ETHEREUM
+devcon.orgethereum.foundationethereum.orgetherscan.io
+
+NETEASE-ADSanalytics.163.com
+ads
crash.163.com
+ads crashlytics.163.com
+ads g.163.com
+ads
+k
+ PANASONIC
panasonic
panasonic.companasonic.jptechnics.companasonic.cn
+cn
+R
+
TRUYEN-HENTAItruyen-hentai.comtruyen-hentai.frtruyen-hentai.ru
+:
+ZHANGTAOmob.com
+dutils.com
accuratead.cn
+
+AKAMAIak1.net
+aka-ai.com
+aka-ai.net
akacrypto.netakadeem.net
+akadns.com
+akadns.netakadns6.net
+akaeai.com
+akafms.net
+akagtm.orgakahost.net
+akaint.netakam.net
+akamaa.com
+akamah.com
+akamak.com
+akamam.comakamai-access.comakamai-access.netakamai-cdn.com akamai-platform-internal.netakamai-platform-staging.comakamai-platform.netakamai-regression.netakamai-staging.netakamai-sucks.netakamai-thailand.comakamai-thailand.netakamai-trials.com
+akamai.netakamaiedge.netakamaientrypoint.netakamaietpcnctest.com#akamaietpcompromisedcnctest.com'#akamaietpcompromisedmalwaretest.comakamaietpmalwaretest.comakamaietpphishingtest.comakamaihd-staging.netakamaihd.comakamaihd.netakamaimagicmath.netakamainewzealand.comakamaiphillipines.comakamaiphillipines.netakamaitech.comakamaitech.netakamaitechnologies.comakamaitechnologies.netakamaisingapore.netakamaistream.netakamaized-staging.net
akamaized.netakamaizercentral.com
+akamci.com
akami.com
akami.net
+akamii.com
+akamqi.com
akastream.com
akastream.net
+akatns.netedgekey.net
edgesuite.net
iamakamai.com
iamakamai.netsoasta-dswb.com
+srtcdn.netakamai.co.kraccdn.com.cn
+cnakadns88.net
+cnakadns99.net
+cn
+akamai.com
+cnakcdn.com.cn
+cn aptdn.net
+cn
edgekey88.net
+cnjanrain.biz
+cnjanrainservices.com
+cn
skycdn.com.cn
+cn
+
+
+
+CLOUDFLAREcloudflarepreview.comcf-ipfs.comcloudflare-dns.comargotunnel.comcloudflare-esni.comcloudflare-gateway.comcloudflare-quic.comcloudflare.comcloudflare.net
cloudflare.tvcloudflareaccess.comcloudflareapps.comcloudflarebolt.comcloudflareclient.comcloudflareinsights.comcloudflareok.comcloudflarepartners.comcloudflareportal.comcloudflare-ech.com
+cfl.recloudflarestatus.comcloudflaressl.comcloudflarestorage.comcloudflarestream.comcloudflaretest.comcloudflarewarp.com
every1dns.netisbgpsafeyet.comcloudflare-ipfs.compacloudflare.com
pages.devtrycloudflare.comvideodelivery.net
warp.plusworkers.devcloudflareresolve.comone.one.one cf-ns.com
+cn cf-ns.net
+cn
+cf-ns.site
+cn
+cf-ns.tech
+cn
+cftest5.cn
+cn
+cftest6.cn
+cncftest7.com
+cncftest8.com
+cncloudflare-cn.com
+cn!cloudflareanycast.net
+cncloudflarechina.cn
+cncloudflarecn.net
+cn cloudflareglobal.net
+cn%cloudflareinsights-cn.com
+cncloudflareperf.com
+cncloudflareprod.com
+cn!cloudflarestaging.com
+cn#cloudflarestoragegw.com
+cn
+,
+NARWAL
+narwal.comnarwaltech.com
+Y
+JFROG!d29vzk4ow07wi7.cloudfront.net
jfrog.com
jfrog.orgbintray.com
+5
+KUBAKUBAkubakuba.globalkubakuba1996.com
+
+LENOVOlenovogame.comthinkprinter.cn
+lenovo.netileapcloud.comlenovocloudos.com
lenovo.cn
+lenovo.comlenovoeservice.com
lxzjjt.cn
+zxsales.cnthinkprinter.netlenovomm.cn
+lxzjjt.comthinkcloudlab.comthinkpad.comlenovoprinter.netlenovoprinter.comblurdev.comchainedbox.com
fm365.com
+idea123.cnlenovoimage.comjuhuiwan.comlenovomm.comjuhuiwan.netlenauth.comcftsupport.com
+baiying.cnlenovoimage.cn
+lx.pub
+lx.runsurepush.cn
+zui.cnzui.com
+zuk.cnzuk.comiprintworks.cn
+dayin8.com
lenovocust.cnlenovomobile.comcunchuhulian-ln.cnlenovonetapp.comlenovocare.com.cn
+zuk.com.cnjuhuiwan.com.cnjhwan.com.cnzhiliaowenda.com.cnlenovoprinter.com.cnlenovovip.com.cn
lenovo.com.cnthinkprinter.com.cnbaiying.com.cn!lenovo.com.cdn.cloudflare.net
+
+MINIminimini.jp
minicanada.caatlantaminidealers.comgreatergothammini.commini.kzmini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini.mamini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com
mini-coupe.camini-dubai.com
+mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.commini-ksa.commini-kuwait.commini-lebanon.commini-me.com
mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.commini.ammini.atmini.bemini.bgmini.bymini.camini.ccmini.chmini.clmini.commini.czmini.demini.dktroisrivieresmini.com
+trmini.comsouthfloridamini.comshopminiusa.compugetsoundmini.comminiyaletown.caminiworkshop.comminiwindsor.com
miniwidget.caminiwholesaleconnect.comminivilledequebec.comminivilledequebec.caminivictoria.comminivictoria.caminivaughanwest.comminivaughanwest.caminivancouver.caminivalueservice.comminiusatires.comminiusaservice.comminiusa.comminitroisrivieres.caminitoronto.caminitakesthestates.comministjohns.caministeagathe.comministcatharines.caminispygear.comminispecialoffers.camini.dzmini.esmini.fimini.frmini.gpmini.humini.iemini.inmini.ismini.it4myminicard.com!midatlanticbmwmotorcycles.comaboutyourmini.commini-connected.nomini.mdmini.mqmini.mumini.mymini.ncmini.nlmini.nomini.ptmini.remini.romini.rsmini.rumini.semini.simini.skmini.tmmini.tnmini.ua
+mini101.caminiargentina.comminibrossard.caminibrossard.commini.luminicaribbean.comminiccrc.ca
minicooper.caminidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com
minidurham.caminidurham.com
minie.com
+minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com
+minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.comminilat.comminilaval.ca
minilaval.com
minilondon.ca
minilondon.cominimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.comminishop.ca
minispace.commini.com.mxmini.com.mtmini.com.plmini.com.sgmini.com.pemini.com.pamini.com.comini.com.momini.com.brmini.com.mkmini.com.hrmini.com.gtmini.com.grmini.com.bnmini.com.domini.com.phmini.com.cymini.com.pymini.com.ecmini.com.ar
+mini.co.za
+mini.co.uk
+mini.co.th
+mini.co.me
+mini.co.kr
+mini.co.il
+mini.co.id
+mini.co.crmini-connected.co.ukmini.com.trmini.com.twmini.com.uy
+y
+NETLIFY!d33wubrfki0l68.cloudfront.netbitballoon.comnetlify.appnetlify.comnetlifystatus.com
+J
+36KR36dianping.com36kr.com36krcdn.com36krcnd.com
+P
+ANACONDAanaconda.cloudanaconda.comanaconda.orgconda.io
+l
+HINET
emome.net
hinet.net
xuite.net
+cht.com.twchtf.org.twgtlsca.nat.gov.tw
+
+WEBNOVELwebnovel.com
+
+NIKEnikenikegadgets.comnikeasia.combeijingnike.combetternike.combuynikechina.comcheap-nike.comcheapnikedunks.comcheapnikeoutlet.comclassicnike.comcnnikebrand.comcustomnikeshoes.comeasynike.com
+eenike.comfashionnike.comfinenike.comfoampositeshoes.comgoldnikeclub.com
+gonike.comhandbags-nike.comhightopnikes.com
+idnike.cominikesneakers.comjustdoit.uskicksnike1.comkidsnikeshoes.com
+mynike.comnike-air-max.comnike-dunksb.comnike-fr.comnike-org.comnike-uk.comnike-us.comnike-usa.comnike.cinike.comnike.gynike.hknikefuelband.com
nike.shopnike.usnike.xn--hxt814enike0594.com
+nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.comair-nike-shoes.comnikeaustralia.comnikeaw77.com
nikeb.comnikebbn.comnikebetrue.comnikebetterworld.comnikebetterworld.infonikebetterworld.netnikebetterworld.orgnikebiz.infonikebuy.com
+nikeby.comnikecdn.comnikecompany.comnikeconfluence.comnikechosen.com
nikecloud.comnikeclub.com
nikecraft.comnikedawn.com
nikedunks.netnikedunksshoes.com
nikeelite.comnikefactorystore.comnikefind.comnikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org
+nikefr.comnikefrance.comnikefree.comnikefreeshoes.com
nike.host
airmax360.comxn--74q035i.xn--hxt814enikegolf.canikegrid.comnikehelp.comnikehightops.comnikehyperdunk.comnikeidshoes.comnikeinc.comnikeincchemistry.comnikeinstock.com
+nikeit.comnikeitalia.com
nikeitaly.com
+nikekd.comnikekid.comnikelink.comnikeliuxiang.com
nikelives.comnikelunarglide.comnikemarketing.comnikenews.com
+niken7.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.comnikeplus.comnikeplus.org
nikepress.com
nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunner.comnikerunningshoes.com
+nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.comnikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com
nikestore.comnikestyles.comnikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.comnikeusa.comnikewear.com
nikey.comnikezoom.comnke6.comoutletnike.comrunnike.comrunningnike.comsale-nikeshoes.comstatic-nike.comswoo.sh
+swoosh.com
swoosh.tvthedailysnkr.comverygoodnike.comwomensnikeshox.comnikegenealogy.comnike.com.brnike.com.hknikestore.com.au
just-do-it.cn
+cnnike-shox.cn
+cnnike.cn
+cnnikebetterworld.cn
+cn"nikebetterworld.com.cn
+cnnikechina.cn
+cnnikegolf.cn
+cn nikeid.cn
+cn
nikeid.com.cn
+cnnikeinc.com.cn
+cn
+nikelab.cn
+cnnikelab.com.cn
+cnnikeliuxiang.cn
+cnnikeliuxiang.com.cn
+cnnikemall.cn
+cnnikemall.com.cn
+cnnikerunclub.cn
+cnnikerunclub.com.cn
+cnnikerunning.com.cn
+cnnikestore.cn
+cn
+
+PCCWapi.viu.now.com dfp6rglgjqszk.cloudfront.net!d1k2us671qcoau.cloudfront.net!d2anahhhmp1ffz.cloudfront.nethktpremier.com
+now-tv.compccwsolutions.commoov.hk
+viu.tvviu.comesmarthealth.com
hkcsl.comhkt-enterprise.comhkt-eye.comhkt.compccwglobal.comnetvigator.comhktshop.compccw.comuhub.comnow-ashare.comhkteducation.comnow.comnowe.comnowe.hktheclub.com.hk1010.com.hk
+now.com.hk^ewcdn[0-9]{2}\.nowe\.com$
+
+SHOPIFY
myshopify.comshop.appshopify.comshopify.devshopifycdn.comshopifycloud.comshopifystatus.comshopifysvc.com
+*
+PAYPALvenmo.s3.amazonaws.comaccount-paypal.infoaccount-paypal.netaccount-paypal.orgaccountpaypal.comaccountpaypal.netaccountpaypal.organfutong.com
+beibao.com
bill-safe.combillmelater.combillmelater.infobillmelater.netbml.infobuyfast-paysmart.netcashify.comdevtools-paypal.comexperiencebillmelater.comfundpaypal.com
+gmoney.org
+i-o-u.infologin-paypal.comlogin-paypal.infomywaytopay.infomywaytopay.net
+pa9pal.compaaypal.com
paily.net
paily.org
+paipal.com
+pavpal.compaydiant.compaylike.com
+paypa1.com
+paypa1.orgpaypaal.compaypal-activate.compaypal-activate.infopaypal-activate.orgpaypal-apac.compaypal-apps.compaypal-biz.compaypal-brandcentral.compaypal-business.compaypal-business.netpaypal-business.orgpaypal-cardcash.compaypal-cash.compaypal-center.compaypal-center.infopaypal-center.netpaypal-center.orgpaypal-communication.compaypal-communications.compaypal-communications.netpaypal-community.compaypal-community.netpaypal-comunidad.compaypal-corp.compaypal-database.compaypal-database.uspaypal-donations.compaypal-dynamic.compaypal-engineering.compaypal-europe.compaypal-excelinvoicing.compaypal-exchanges.compaypal-forward.compaypal-galactic.compaypal-gift.compaypal-gifts.compaypal-gpplus.compaypal-here.compaypal-hrsystem.compaypal-innovationlab.compaypal-integration.compaypal-japan.compaypal-knowledge.compaypal-labs.compaypal-latam.compaypal-learning.compaypal-login.compaypal-login.infopaypal-login.orgpaypal-login.uspaypal-luxury.compaypal-mainstreet.netpaypal-marketing.compaypal-media.compaypal-merchantloyalty.compaypal-mobilemoney.compaypal-network.orgpaypal-notice.compaypal-notify.compaypal-online.infopaypal-online.netpaypal-online.orgpaypal-optimizer.compaypal-pages.compaypal-photocard.compaypal-plaza.compaypal-portal.compaypal-prepagata.compaypal-prepagata.netpaypal-prepaid.compaypal-profile.compaypal-proserv.compaypal-qrshopping.orgpaypal-recargacelular.compaypal-redeem.compaypal-referral.compaypal-retail.compaypal-scoop.compaypal-search.compaypal-secure.netpaypal-secure.orgpaypal-security.netpaypal-security.orgpaypal-service.orgpaypal-signin.compaypal-signin.uspaypal-special.compaypal-specialoffers.compaypal-sptam.compaypal-support.compaypal-survey.compaypal-survey.orgpaypal-status.compaypal-team.compaypal-viewpoints.net
paypal.ca
+paypal.com
paypal.hkpaypal.info
paypal.jp
paypal.me
paypal.so
paypal.uspaypalbeacon.compaypalbenefits.compaypalbrasil.compaypalcommunity.compaypalcommunity.netpaypalcommunity.orgpaypalcorp.compaypalcredit.compaypalcreditcard.compaypalgivingfund.orgpaypalhere.compaypalhere.infopaypalhere.netpaypalhere.org
paypalhere.tvpaypali.net
paypalinc.compaypalindia.compaypalinsuranceservices.orgpaypall.compaypallabs.compaypalme.com
paypalnet.net
paypalnet.orgpaypalnetwork.infopaypalnetwork.netpaypalnetwork.orgpaypalobjects.compaypalonline.netpaypalonline.orgpaypalprepagata.compaypalprepagata.netpaypalservice.compaypalshopping.compaypalshopping.netpaypalsurvey.compaypalx.compaypaly.compayppal.compayypal.compdncommunity.com
+pp-soc.comppaypal.com
pppds.compypl.com
pypl.infopypl.netpypl.tvsecure-paypal.infosecurepaypal.info
sslpaypal.orgthepaypalshop.comtheshoppingexpresslane.netwww-paypal.info
www-paypal.usbraintreegateway.combraintreegateway.tvbraintreepayments.combraintreepayments.infobraintreepayments.orgbraintreepayments.tv!braintreepaymentsolutions.combraintreeps.combriantreepayments.netbriantreepayments.tvcard.iogetbraintree.comkrakenjs.comloanbuilder.comswiftcapital.comsimility.comcashify.netswiftbank.infoswiftbank.usswiftfinancial.comswiftfinancial.infoswiftfinancial.netvenmo-touch.com
venmo.com
+venmo.info
venmo.net
venmo.org
cash2.comfilipino-music.net
+s-xoom.comwebmoneyinfo.com2.wiremoneytoirelandwithxoomeasierandcheaper.comwwwxoom.comxoom-experience.comxoom.comxoom.ioxoom.usxoomcom.com
paypal.com.hk
paypal.com.sganfutong.cn
+cnanfutong.com.cn
+cn beibao.cn
+cn
beibao.com.cn
+cn
paypal.com.cn
+cn
paypal.net.cn
+cn
paypal.org.cn
+cnpaypalcommunity.cn
+cn
paypalhere.cn
+cnpaypalhere.com.cn
+cnxn--bnq297cix3a.cn
+cnxoom.net.cn
+cn
+
+SFACG
sfacg.com
+-
+BITFLYERbitflyer.combitflyer.jp
+,
+CYLINK
+cylink.procylink0122.icu
+&
+HUYAhuya.commsstatic.com
+A
+DCARDdcard.ccdcard.io
+dcard.linkdcard.tw
+9
+EMBEDLYembed.lyembedly.complayerjs.io
+
+IQIYI 71.am
iqiyi.comiqiyipic.com
+pps.tv
+ppsimg.comqiyi.comqiyipic.com
+qy.net
+71edge.comiq.com
+!cna.ckm.iqiyi.com
+adsad.m.iqiyi.com
+ads
afp.iqiyi.com
+adsc.uaa.iqiyi.com
+ads cloudpush.iqiyi.com
+ads"cm.passport.iqiyi.com
+adscupid.iqiyi.com
+ads#emoticon.sns.iqiyi.com
+ads!gamecenter.iqiyi.com
+ads!hotchat-im.iqiyi.com
+adsifacelog.iqiyi.com
+adsmbdlog.iqiyi.com
+ads msg.71.am
+adsmsg.video.qiyi.com
+ads msg2.video.qiyi.com
+ads#policy.video.iqiyi.com
+adsyuedu.iqiyi.com
+ads
+=
+JABLEcdnlab.livejable.tvmushroomtrack.com
+.
+JIEMIANjiemian.comjiemian.com.cn
+
+18COMIC18comic-god.cc18comic-god.club18comic-god.xyz
+18comic.cc18comic.company18comic.org18comic.vipjmcomic.ltd
+jmcomic.mejmcomic.mobijmcomic.moe
jmcomic1.cityjmcomic1.me
jmcomic1.mobijmcomic2.moe
+
+CATEGORY-NTP-CN&^ntp([1-7])?\.aliyun\.com$
+cntime.izatcloud.net
+cntime.xtracloud.net
+cn'^ntp([1-5])?\.tencent\.com$
+cncn.pool.ntp.org
+cnntp.neu.edu.cn
+cnntp.ntsc.ac.cn
+cn
+ntp.org.cn
+cn
+/
+CODEBERGcodeberg.org
codeberg.page
+
+ TONGCHENG40017.cn
+17u.cn17u.net17usoft.com17usoft.net
elong.comelongstatic.com
+ly.com
+
+WHOLEFOODSMARKETwfm.comwholecitiesfoundation.orgwholefoods.comwholefoodsmarket.comwholekidsfoundation.orgwholeplanetfoundation.orgwholefoodsmarket.co.uk
+`
+OAN
aweencore.com
awetv.comherringnetwork.com
oanencore.comoann.com
+8
+ PLAYCOVERplaycover.ioplaycover.workers.dev
+@
+QWANT
qwant.comqwant.deqwant.frqwant.it
+1
+HOMEBREWhomebrew.bintray.combrew.sh
+.
+HUBBLEPHONEhubblephone.com
+tsi.ai
+I
+KEMONOcooer.sucoomer.partykemono.party
kemono.su
+V
+ NUDEVISTA
nudevista.comnudevista.es
nudevista.net
nudevista.vip
+0
+
+POSTIMAGESpostimages.org
+postimg.cc
+
+ADGUARDadguard.appadguard.comadguard.info
+adguard.ioadguard.org
+adtidy.net
+adtidy.orgagrd.ioadguard-dns.comadguard-dns.ioadguardvpn.comadguard-vpn.comadguard-vpn.online
+
+BEATS%!beatselectronicsllc.tt.omtrdc.net100beatscheap.com1monsterbeatsbydreus.com2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com
2beatsdre.com2buybeatsbydre.com2drdrebeats.com40shopping.com4beatsbydre.com5beatsbydre.comaaagradeheadphones.com
+aanaan.comabcheadphones.comabeatsbydrdre.com
aeasyshop.com
+airmay.com
+ajtalk.comalbeats.com
annstores.netaokwholesale.netaucheapbeats.comaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.comauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.comausbeatsbydrdre.combag-glasses1.com
bandgirlz.combaxsound.com
bbestmall.com
+beatbd.combeatbydre2013.combeatbydremonster.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com
beats1.cc
beats1.tvbeats123.com
+beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com
beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.combeatsbydresales.us'#beatsbydresalesonline-australia.com beatsbydresaleonlines-nz.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydrespeakers.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrestorevip.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.combeatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.combeatselectronic.netbeatselectronics.combeatsep.combeatsep.net beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combestshoesale2014.netbeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.netbeatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang
beatsneon.combeatsnzsale.com
beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.combeatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.combeatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combegin-trade.combestbeats4u.com
+biitii.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.combloommicroventures.com
bookonsky.net
+bossae.combrandeasygo.combrandelectronic.combrandproducts1688.com
brands098.combusinesswebwise.combuy-from-shanghai.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyminibeatbox.combuyonlineheadphones.combuyshoponly.combuzzardflapper.combybeatsdre.combydrebeats.comcanada-beatsbydre.com
casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comcheap-beats-by-dre.netcheap-beatsbydre.comcheapbagshoes.com
cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.comcheapbeatsdrdresolo.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.com cheapmonstersbeatsonsale.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.uscheapnewbeatsbydre.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheerwholesale.uschihair-straightener.comchinaclothesstore.comciattackers.com
+cmhalq.comcnshopin.comcoolmonster.netcozydrdrebeats.comcqcorea.comcuffiesaldi.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcybermondaybeats4sale.comdanemarket.comdanmarkbeatsbydrdre.comdctbeatsbydre.comdealsbeatsblackfriday.comdetaliczny.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdkbeatsbydre.comdrbeatsukmart.comdrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com
drdrefnac.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoutletstore.comdrebeatsoldes.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.comdrebyby.comdremonsterbeatsoutlets.comdreprobeats.comdreprofy.com
+dtsell.comearphonescheapest.comebuyheadphones.comesbeatsbydrebuy.cometheadphones.comfamosascalvas.comfindmybeats.comfr-beatsbydrestore.comfrancecasquebeatssolde.comfrcasquesbeats.comfree-aa.comfree-sns.comfrishoes.comgamebeforethegame.comgetdrebeatssale.comgmnetworks.net
gobeatsye.comgobuyonlinestore.net
goodsdunk.netheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comhellokittybeats.comhighbolt.net highdefinitionbeatsbydre.com
hipaa6020.comhipzoom.nethonawalaan.comhotbeatsonsale.comhotmonsterbeats.comhottestheadphonesonline.com
hrsaz.com
ibeats-uk.comibeatsbydre.ccibeatsbydre.comigoshopping.net illianacomputerrecycling.comimonsterbeats.comincentivetravelgifts.comioffergift.com islamiccenterofnewlondon.comitaliabeatsbydrdre.comjkbeats.comkickshatchannel.comkobbeatssbydredk.comkopfhorergunstigshop.comleecountytimes.comlexuemei.comlovebeatsdr.com
lovemarca.comluckyissue.com
+lyzsxx.com
mairbeats.com
+makeeu.commallheadphone.commbeats-tech.commbheadphone.com
+micstl.commmonsterheadphones.netmonbeats2013.commonster-beats-by-dr-dre.com monster-beats-headphones.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatssalg.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstershopcheapbeats.netmoreheadphones.com
+ms4dre.commybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.commyferrariheadphones.comnamemybeats.comneborder.comnegozimonsterbeats.comnegoziomonsterbeats.comnewbeatsblackfriday.com
newbemany.comnewdrediscount.comnewestbeatsbydre.comnewlysprung.netnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.comnewschristmasshopping.comnflhotsalejerseys.com
nicesshop.netofferairjordanlebron.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.com
ogameblog.comonbeatsbydresale.com onlinemonsterbeatsonsale.com
onsalekey.comonsaletrend.comoutletbeatsshop.compascherbeatsmonster.compaulsimon-music.comperfectkickz.netpersoneelsland.compicknicekicks.netpickshoesclothes.com pillbeatsblackfridaysale.compocketbiketrader.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compromonsterbeatsbydre.comprostudiobeatscybersale.com
rbsgr.comrepsneakermall.comrepswing.com!salebeatslasteststyle4you.comsaleblackfridaydrebeats.comsalecheaphandbags.comsamebags.comsanvaras.com
+scnshop.cc
+shoers.com
shoestop2.comshop-headphones.netshopbeatsdre.com
shopbydre.comshopcustomizedbeats.comshopdrebeats.comshopmonsterbeats.comshopping-days.netshoppinguheadphones.comsneaker666.comsneakerpage.netsneakerskick.comsolostudioksale.comsoso7778.comspecialtyheadphones.comspiritclubs.comstraightouttasomewhere.comstudiobeatsbydrdre.comsulwerphoto.comsunglassessale2014.comsuperearsenjoy.comsupplybestjerseys.comsustainthesound.comsverigebeatsbydrdre.com szcheapmonsterheadphones.comszwinnertechnology.comtakegoto.comthe-monster-beats.comthebeatsbydre.comthebeatsbydre.netthebeatsheadphonesale.com
+theuab.nettopbeatsbydrdreoutlet.comtopbeatsdealer.comtopbeatsforsale.com
tradevip1.comtteshop.comubnw.net
+unstyle.us&"usa-beatsbydreheadphonesonsale.net
v-has.com
vip-beats.comvipbeatsbydre.comvipheadphones.com
vipshoes2.com
wasdj.comwholesale-exporter1.comwholesalediscountpurses.comwholesalefine.comwholesaleonlinemart.comworldcoinpay.comyourmonsterbeats.com beats1.cn
+cn
beats1.com.cn
+cn
beats2.com.cn
+cn beats4.cn
+cnbeatsbydre.com
+cnbeatsbydre.com.cn
+cn
+beatsep.cn
+cn
+4
+
+CLOUDINARYcloudinary.comcloudinary.net
+
+FQNOVELp3-novel.byteimg.comp6-novel.byteimg.comactivity-zhendingtech.comchangdunovel.comfanqienovel.comfanqieopen.comfanqieopenpic.comfanqieopenstatic.comfanqieopenvod.com
fanqiesdk.comfanqiesdkpic.comfanqiesdkstatic.comfanqiesdkvod.comfqnovel.com
fqnovelim.comfqnovel-op.com
fqnovelop.comfqnovelpic.comfqnovelstatic.comfqnovelvod.comihaohaoxuexi.com
+muyewx.comnovelfm.comnovelfmpic.comnovelfmstatic.comnovelfmvod.comqznovel.comqznovelpic.comqznovelstatic.comqznovelvod.com(ads3-normal-hl.zijieapi.com
+ads(ads5-normal-hl.zijieapi.com
+ads'log3-applog-hl.fqnovel.com
+ads'log5-applog-hl.fqnovel.com
+ads#p3-ad-sign.byteimg.com
+ads#p6-ad-sign.byteimg.com
+ads#p9-ad-sign.byteimg.com
+ads)rtlog3-applog-hl.fqnovel.com
+ads)rtlog5-applog-hl.fqnovel.com
+ads
+
+VERISIGNverisign.netverisign.sgverisign.chverisign.esverisigninc.comverisign.comverisign.vnverisign.frverisign.usverisign.bizverisign.tw
verisign.nameverisign.severisign.hkverisign.deverisign.dkverisign.proverisign.org
verisign.asiaverisign.in
verisign.info
verisign.jobs
verisign.mobiverisign.com.esverisign.com.vnverisign.com.brverisign.co.inverisign.com.twverisign.com.sgverisign.com.hkverisign.com.cnverisign.com.auverisign.co.uk
+
+VULTR
vultr.com
+B
+APPLOVIN-ADSapplovin.com
+ads
+applvn.com
+ads
+
+ CANONICAL
canonical.com
launchpad.netlaunchpadcontent.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.orgsnapcraft.iosnapstore.io
+ubuntu.com
+ubuntu.netubuntuforums.orgubuntu-touch.io
+2
+REABBLEreabble.com
+reabble.cn
+cn
+
+ BRILLIANT
brilliant.org
+
+CATEGORY-GAMES,(ubisoft-uplay-savegames.s3.amazonaws.com,(ubisoft-orbit-savegames.s3.amazonaws.comubistatic3-a.akamaihd.neta.ppy.sh
assets.ppy.shc.ppy.sh
+osu.ppy.sh
m1.ppy.shlazer.ppy.sh
notify.ppy.sh
sentry.ppy.shspectator.ppy.sh%!prd-priconne-redive.akamaized.netf3b7q2p3.ssl.hwcdn.net steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteammobile.akamaized.netsteampipe-kr.akamaized.net#steampipe-partner.akamaized.netsteampipe.akamaized.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamvideo-a.akamaihd.netea.tt.omtrdc.neteaassets-a.akamaihd.net#cloudsync-prod.s3.amazonaws.comorigin-a.akamaihd.netrtm.tnt-ea.comssl-lvlt.cdn.ea.comlolstatic-a.akamaihd.netopgg-static.akamaized.net"avatargarenanow-a.akamaihd.netcdngarenanow-a.akamaihd.netdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.netblizzard.nefficient.co.krblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.netblizzcon-a.akamaihd.netblzmedia-a.akamaihd.netblznav.akamaized.net1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netplaystationxboxriotgames.tvubisoftconnect.com
fanatical.comfitgirl-repacks.sitegame-repack.sitehumblebundle.com
loverslab.comminecraft.wikimodrinth.com
nexusmods.com
+papermc.ioplanetminecraft.comprismlauncher.orgprotondb.comquiltmc.orgspeedrun.comsteamdb.infogenshinimpact.comhonkaiimpact3.comhonkaistarrail.com
hoyo.linkhoyolab.com
hoyoverse.comn0vadesktop.comzenlesszonezero.comubi.comubisoft.comriotpoints.com
uplay.com
+2k.com2kcoretech.online2kgames.comtake2games.complaystation.complaystation.net sonyentertainmentnetwork.compriconne-redive.jpvalvesoftware.com
+s.team
steam-api.comsteam-chat.comsteamcommunity.com
steamdeck.comsteamgames.complayartifact.comsteamstatic.comunderlords.comsteampowered.comsteamunlocked.netnikke-de.combluearchive.jpriotpin.com
+rsg.scrockstargames.compinkcore.netpinkcore.comforgecdn.netcurseforge.com
+mojang.comnikke-en.comnikke-fr.comnikke-jp.comnikke-kr.com
nikke-sea.comawayoutgame.combattlefieldbadcompany2.combattlefront2.combattlefrontii.combejewled-stars.combejeweledstars.comcapitalgames.com
chillingo.comcommandandconquer.comconquerwithcharacter.com
crysis.jpdawngate.comdawngatechronicles.com
+dicela.comdodi-repacks.siteea-anz-press.com
+ea.comeaaccess.comeacashcard.com
eacodigos.comeamobile.comeanordic.com
+eaplay.comeasports.comeasports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comelectronicarts.comelectronicarts.fr
futpromos.com
futunited.comghostgames.comheroesofdragonage.com
hutpromos.commaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.org
maxis.commysimsracing.com
play4free.complayapex.compogo.compogobeta.com
+popcap.comprojectapex.com
pvzheroes.comspearhead.krspeedhunters.com
spore.comssx3.comstarwarsbattlefront.comstarwarsbattlefront2.comtiberiumalliances.comtiburon.com
+tnt-ea.comultimaforever.comunravel2.comunraveltwo.comvisceralgames.com
+yogify.comanthemgame.comanthemthegame.comapexlegends.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldheroes.combattlefieldv.com
battlelog.combioware.combiowarestore.comeamythic.comeamythic.net
cncrivals.comcamelot-europe.comcamelotherald.comcamelotherald.netdaoc.netdarkageofcamelot.comdarkness-risen.comdeadspacegame.comdice.se
dragonage.comdragonagekeep.comdragonagemovie.comthedreadwolfrises.comdungeonkeeper.cndungeonkeeper.comeafootballworld.comfifastreet.comfifastreet3.com
frostbite.comindustrialtoys.commasseffect.commasseffectarchives.comeamirrorsedge.commirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.comblackboxgames.comeablackbox.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.comnfsworld.comteamneedforspeed.complantsvszombies2.com
+pvzgw2.comseaofsolitude.comsimcity-buildit.comsimcity.com
+skate2.comstarwarsfallenorder.comstarwarsjedifallenorder.comstarwarstheoldrepublic.comswjedifallenorder.com
swjfo.com
swtor.com
swtor.net
+mysims.comthesims.comthesims3.comthesims4.comthesimssocial.com
titanfall.commythicentertainment.commythicentertainment.netmythicgames.comultimaonline.com
+uo.comuoherald.comxdsummit.comeastore.comlordofultima.com
+origin.com
origin.tvminecraftshop.comminecraftservices.comillusion.jp
minecraft.net
+joyjoy.netpandanet-igs.comcallersbane.comleagueoflegends.comriot-games.comhistoryofdota.orginstituteofwar.orgmolesports.comrgpub.ioleagueoflegends.inforiot.comriot.netriotcdn.net
riotgames.comriotgames.inforiotgames.jp
riotgames.net
+dicela.netelderscrolls.comfabricmc.netrstatic.nethistoryofdota.com
supremacy.net championshipseriesleague.comlcsmerch.comleaguehighschool.comleagueoflegends.ca
supremacy.comhistoryofdota.netleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comlearnwithleague.comlol-europe.comlolclub.orglolespor.comlolesports.com
lolfanart.net
+lolpcs.com
lolstatic.comlolusercontent.comconvrgencegame.compvp.net
+pvp.tvulol.complayvalorant.comriotforgegames.comruinedking.comdoom.combethsoft.combethesdagamestudios.com
+cygames.jpworldflipper.jpbethesda.net
+beth.games
+xbx.lv
+lowiro.com op.ggbattlebreakers.comeac-cdn.comeasy.aceasyanticheat.net
epicgames.com
epicgames.devfortnite.comparagon.complayparagon.comroborecall.comshadowcomplex.comspyjinx.comunrealengine.comunrealtournament.com
+garena.comgarena.live
garena.my
garena.ph
garena.sg
garena.tv
garena.tw
garena.vn
garenanow.comseagroup.comxboxstudios.comxboxservices.com
nexon.comnexon.ioxboxplayanywhere.com
+xboxone.eufireemblemawakening.com
wiipartyu.comayudanintendo.combowsersinsidestory.comexcitebots.comflipnotestudio.comgloryofheracles.comhackyourconsole.com100classicbooks.comkirbysepicyarn.commiitomo.commiiverse.comnentindo.netnintendo-europe-sales.comnintendo-europe.comnintendo.atnintendo.benintendo.chnintendo.comnintendo.denintendo.dknintendo.esnintendo.eu
xenoblade.com
wiivc.netnintendo.finintendo.frnintendo.itnintendo.netnintendo.nlnintendo.nonintendo.ptnintendo.runintendo.senintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.compersonaltrainermath.complaynintendo.comthelegendarystarfy.comthewonderful101.comwariolandshakeit.comwariowarediy.comyoshisnewisland.comac-pocketcamp.comdiddykongracing.comdkr.compokemonmysterydungeon.com
+amiibo.comkirbysuperstarultra.com
+dialga.comgiratina.com
+kyurem.com
pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.compokemon-unitepgame.compokemon.compokemonbank.compokemonblackwhite.com
pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.com donkeykongcountryreturns.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.netxn--mts47c3w9b1qr.netsplatoon2tournament.comstarfox.comdrmario-world.commarioandluigidreamteam.commariobroswii.commariokart7.commariokart8.commariosupersluggers.comnewsupermariobrosu.comsupermario.comsupermario3dworld.comsupermariogalaxy.comsupermariorun.comsuperpapermario.comnintendowii.com
wii-u.com
+wiifit.comwiifitu.comfire-emblem-heroes.com
wiisports.comwiisportsresort.comwiiugamepad.comxboxone.com
+xboxone.coxboxlive.comxboxgamestudios.comxboxgamepass.com
+xboxab.comynoproject.netblizzard.comblizzardgearstore.comblz-contentstack.com
+battle.netdiablo3.comdiabloimmortal.comfiresidegatherings.complayhearthstone.comheroesofthestorm.complayoverwatch.com
starcraft.comstarcraft2.complaywarcraft3.comworldofwarcraft.comgog.comgog-statics.comdodi-repacks.downloadforzamotorsport.netforzaracingchampionship.comforzarc.comgamepass.comorithegame.comrenovacionxboxlive.comtellmewhygame.comxbox.coxbox.comxbox.euxbox.org
+xbox360.coxbox360.com
+xbox360.euxbox360.orgnexoncdn.co.krriotgames.co.krnintendo.co.uknintendo.co.jpnintendo.co.krnintendo.com.ptnexon.co.jpgarena.co.thgarena.co.idumamusume.akamaized.networldflipper.akamaized.netsekai.colorfulpalette.org
lolshop.co.krleagueoflegends.co.krnintendo.com.hk
cygames.co.jpillusion.co.jpdungeonkeeper.com.cn
eakorea.co.krnintendo.co.zasteam.cdn.on.netsteam.ru.qtlglb.comsteam.naeu.qtlglb.comsteam.apac.qtlglb.comsteam.eca.qtlglb.comsteam.cdn.webra.ru"edge.steam-dns.top.comcast.netsteam.cdn.orcon.net.nzsteam.cdn.slingshot.co.nz*&^epicgames-download\d\.akamaized\.net$
mhystatic.com
+cn mhyurl.cn
+cn
+mihayo.com
+cnmihayou.com
+cn
+mihoyo.com
+cnmihoyocg.com
+cnmihoyogift.com
+cnmihoyomall.com
+cnmiyoushe.com
+cnbenghuai.com
+cnbh3.com
+cnbhsr.com
+cnthemisweeps.com
+cnyuanshen.com
+cn
juequling.com
+cn'^.+-mihayo\.akamaized\.net$
+cn)uplaypc-s-ubisoft.cdn.ubi.com
+cnsteamcontent.com
+cnsteamserver.net
+cn steamusercontent.com
+cncsgo.wmsj.cn
+cn
dota2.wmsj.cn
+cn
wmsjsteam.com
+cndl.steam.clngaa.com
+cndl.steam.ksyna.com
+cn st.dl.bscstorage.net
+cnst.dl.eccdnx.com
+cn!st.dl.pinyuncloud.com
+cn."steampipe.steamcontent.tnkjmec.com
+cn&steampowered.com.8686c.com
+cn%steamstatic.com.8686c.com
+cn xz.pphimalayanrt.com
+cnsteamchina.com
+cnbattlecare.net
+cngameitop.com
+cngameloop.com
+cngcloudcs.com
+cngcloudcstest.com
+cn gcloudcstestonly.com
+cngclouddolphin.com
+cn
gcloudsdk.com
+cn
+gdtimg.com
+cn
goto-game.com
+cngoto-game.mobi
+cngoto-game.net.cn
+cn
goto-game.org
+cnhappyhlddz.com
+cnhdyxgame.com
+cnhkgcloudcs.com
+cnihappystudio.cn
+cnihappystudio.com
+cnin.th
+cnludosuperstar.cn
+cn
ludoworld.net
+cn
mahjongai.net
+cn
mahjongcup.cn
+cnmahjongcup.com
+cnmahjongcup.net
+cnmetalrevolution.com
+cnmidasbuy.com
+cnnagcloudcs.com
+cnproximabeta.com
+cnpubghelper.com
+cn
+pubgno1.cn
+cnpubgtool.com
+cn
qqgameapp.com
+cnrmwxgame.com
+cn
skydweller.cn
+cnsyxlgame.com
+cntencent-gcloud.com
+cntencentstart.com
+cntexasholdemcup.cn
+cntexasholdemcup.com
+cntexasholdemcup.net
+cntimibase.com
+cnvideoxiaoyouxi.com
+cnwcbygame.com
+cnyxdmgame.com
+cnyximg.cn
+cnyxwsgame.com
+cnyzyxgame.com
+cnzcjbgame.com
+cnzhuoyuegame.com
+cn xn--owtw8cc49ajfl.cn
+cn roblox.cn
+cn
roblox.qq.com
+cnrobloxdev.cn
+cnnextstudios.com
+cnnextworkshop.net
+cn mszdld.cn
+cn
+mszdld.com
+cn
+mszdld.net
+cngamebonfire.com
+cn
gouhuo.qq.com
+cnffbuddy.com
+cngotolink.net
+cn
+gtgres.com
+cnrealcybertron.com
+cn
+wegame.com
+cn
wegame.com.cn
+cnwegameplus.com
+cnwerepository.com.cn
+cn
brawlstars.cn
+cnhaydaypop.cn
+cnlabycore.cn
+cnsccreator.cn
+cn
sccreators.cn
+cn
+scescdn.cn
+cnscid.cn
+cnscsentry.cn
+cn
supercell.com
+!cn!supercellcommunity.cn
+cnsupercellsupport.cn
+cncodm.com
+cnbcfmglobal.com
+cntcfmglobal.com
+cnanticheatexpert.com
+cn
+17roco.com
+cnroco.qq.com
+cn
kurogames.com
+cnaki-game.com
+cnleagueoflegends.cn
+cn
+lpl.com.cn
+cn6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$
+cn;/^epicgames-download\d-\d+\.file\.myqcloud\.com$
+cnlegendofzelda.cn
+cn legendofzelda.com.cn
+cnmiitomo.com.cn
+cnnintendolabo.cn
+cnnintendoswitch.cn
+cn!nintendoswitch.com.cn
+cnsupersmashbros.cn
+cn!supersmashbros.com.cn
+cn xn--mts47c3w9b1qr.cn
+cnmariokart.cn
+cnmariokart.com.cn
+cn!supermariobros.com.cn
+cn sl916.com
+cngog.qtlglb.com
+cn$gogalaxy.gog-statics.com
+cn'menu-static.gog-statics.com
+cn'productcard.gog-statics.com
+cn(static-login.gog-statics.com
+cn'www4-static.gog-statics.com
+cn."^cdn-akamai-.+\.gog-services\.com$
+cn(^gog-cdn-.+\.footprint\.net$
+cn, ^images(-\d)?\.gog-statics\.com$
+cnxboxlive.cn
+cnbilibiligame.cn
+cnbilibiligame.co
+cnbilibiligame.net
+cnbiligame.co
+cnbiligame.com
+cnbiligame.net
+cnbluearchive-cn.com
+cn
+6
+DERIBITderibit.cdn.prismic.ioderibit.com
+4
+
SMTIAOJIAOSHIjhxl.orgxn--sgt856gbjl.cc
+2
+
GROWINGIO-ADS!assets.growingio.com
+ads
+[
+HUPUN
hupun.com
+newniu.comwanliniu.comhupun.com.cnkata.com.cn
+
+ROCKSTAR1-gamedownloads-rockstargames-com.akamaized.net)%media-rockstargames-com.akamaized.net*&videos-rockstargames-com.akamaized.netrockstargames.com
+rsg.sc
+.
+ASPROEXasproex.comasproexapi.com
+
+HUOBIhtx.com
+hbabit.com
+hbfile.net
huobi.comhuobi.me
huobi.prohuobi.sc
huobiasia.viphuobigroup.comhuobitoken.com
+
+CUTTLYcutt.ly
+
+J-TEST
+j-test.com
+
+LGlgelectronics.122.2o7.net
+lg.comlgappstv.comlge.comlgecareers.com
+lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.com
lge.co.kr
+e
+METART
+metart.commetartnetwork.commetcams.comnaiadsystems.com
nsimg.net
+.
+OPopgg-static.akamaized.net op.gg
+h
+51JOB
51job.com51jobcdn.comyingjiesheng.comyingjiesheng.netzhiding.com.cn
+
+ALI213
+ali213.net
+
+AZUREazure.microsoft.com"azuremarketplace.microsoft.com azureazure-devices-int.netazure-devices.netazure-mobile.netazure-sphere.comazure-test.net
azure.com
azure.netazurecomcdn.net
azurecomm.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.netazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net
azureedge.netazurefd.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.net
cosmosdb.infocosmosdb.netdevopsms.com
gotcosmos.com$ management-azure-devices-int.net management-azure-devices.net"microsoftazuresponsorships.commicrosofteca.commicrosoftiotcentral.commsn.netserverlesslibrary.nettrafficmanager.nettryfunctions.comwindowsazure.com
azure-dns.comazure-dns.info
azure-dns.net
azure-dns.org 21vbc.com
+cn21vbluecloud.com
+cn21vbluecloud.net
+cnaadrm.cn
+cnaggresmart.com
+cnapihub-internal.cn
+cn$appserviceenvironment.cn
+cnazcrmc-test.cn
+cn azcrmc.cn
+cnazk8s.cn
+cnaznbcontent.cn
+cn aztask.cn
+cnazure-api.cn
+cnazure-apihub.cn
+cnazure-automation.cn
+cn, azure-connectedvehicles-stage.cn
+cn&azure-connectedvehicles.cn
+cn)azure-devices-provisioning.cn
+cnazure-devices.cn
+cnazure.cn
+cnazurecr-test.cn
+cn
+azurecr.cn
+cnazurehdinsight.cn
+cnazureiotsuite.cn
+cnazuremresolver.cn
+cnazureprivatedns.cn
+cnazurerms.cn
+cnazuresandbox.cn
+cnb2clogin.cn
+cn
+b3itech.cn
+cnblueaggrestore.com
+cnbluecloudprod.com
+cncegid-cloud.cn
+cn chinacloud-mobile.cn
+cnchinacloudapi.cn
+cnchinacloudapp.cn
+cnchinacloudsites.cn
+cn hdinsightservices.cn
+cn4(management-azure-devices-provisioning.cn
+cn'management-azure-devices.cn
+cnmcchcdn.com
+cnmgmt-azure-api.cn
+cn#microsoftazurestatus.cn
+cnmicrosoftmetrics.cn
+cnmncmsidlab1.cn
+cn
msappproxy.cn
+cnmschcdn.com
+cnmsftcloudes.cn
+cn
msidentity.cn
+cnmsidlabpbmc.cn
+cntrafficmanager.cn
+cntrustcenter.cn
+cnunity3dcloud.cn
+cnwindowsazure.cn
+cn!windowsazurestatus.cn
+cn".+\.azchcdn[a-s]\.com$
+cnazure-dns.cn
+cn).+\.azure-dns-([1-9]|10)\.cn$
+cn
+Z
+PICSEEpics.ee
picsee.co
+picsee.propise.pwpros.ee
+pse.is
+E
+ HIIDO-ADSmlog.hiido.com
+adsylog.hiido.com
+ads
++
+RUBY
ruby-lang.orgrubygems.org
+
+TENCENT-ADS ad.qq.com
+ads
ad.qun.qq.com
+ads!adfilter.imtt.qq.com
+ads
adping.qq.com
+adsadpm.app.qq.com
+adsadsclick.qq.com
+adsadsfile.qq.com
+adsadshmmsg.qq.com
+adsadslvfile.qq.com
+adsadslvseed.qq.com
+ads%adsmind.apdcdn.tc.qq.com
+adsadsqqclick.qq.com
+adsadstestview.qq.com
+adsadsview.qq.com
+adsadsview2.qq.com
+adsadv.app.qq.com
+adsadver.qq.com
+ads
beacon.qq.com
+adsbeaconcdn.qq.com
+ads
btrace.qq.com
+adse.qq.com
+ads
+gdt.qq.com
+adsisdspeed.qq.com
+adslog.tbs.qq.com
+adsmpush.qq.com
+ads
mtrace.qq.com
+ads
pgdt.gtimg.cn
+ads
pingjs.qq.com
+adspush.qq.com
+ads
sngmta.qq.com
+ads
stat.y.qq.com
+adstajs.qq.com
+adstcss.qq.com
+adstrace.qq.com
+adsugdtimg.com
+ads
+wit.qq.com
+ads
+
+ UNITY-ADSads.unitychina.cn
+ads$splash-ads.cdn.unity.cn
+ads%splash-ads.unitychina.cn
+adsunityads.unity.cn
+ads!unityads.unity3d.com
+ads#unityads.unitychina.cn
+ads
+1
+ZIROOM
+ziroom.comziroomapartment.com
+
+CSDNgitcode.com
+gitchat.cncsdn.netkaifayun.com
+csdnimg.cncsto.comcsdn.com
+gitbook.cn
+datasea.cn
codechina.netgitcode.net
iteye.comcsdn.net.cnprogrammer.com.cnprogrammer.net.cn
+
+HEROKU
heroku.co
+heroku.com
heroku.me
herokuapp.com
herokucdn.comherokucharge.com
herokussl.comheroku-app.comheroku-charge.comcodei.sh
+codeish.co
+codeish.io
+
+NIXOS
nixos.org
+5
+CNKIcnki.net
+chndoi.orgcnki.com.cn
+#
+FZDMfzdm.com
fffdm.com
+
+MIDEA
irsnp.commdcdn.cnmidea.cn
midea.commideaepayuat.com
msmartlife.cnmsmartlife.comsmartmidea.netmidea.com.cn
+
+DISNEYespn.api.edge.bamgrid.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.netthestationbymaker.com
+babble.com
disney.bgdisneymagicmomentsme.com
disney.chthemarvelexperiencetour.commarvelsuperwar.com marvelsuperheroseptember.commarvelspotlightplays.commarvelsdoubleagent.commarvelpinball.com
+disney.commarvelparty.netmarveldimensionofheroes.commarvel10thanniversary.com
+marvel.com
disney.cz
disney.de
disney.dk
disney.es
disney.fidisneymagicmoments.it
disney.gr
disney.hu
disney.id
disney.in
disney.io
disney.it
disney.my
disney.nl
disney.no
disney.ph
disney.pl
disney.pt
disney.ro
disney.ru
disney.se
disney.sghotstarext.comhotstar-labs.com20thcenturystudios.jpadventuresbydisney.comdisneymagicmoments.plbabyzone.combamgrid.comhotstar-cdn.net
+dilcdn.comdisney-asia.comdisney-discount.comdisney-plus.nethotstar.comdisney-studio.comdisney-studio.net
watchespn.comdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyiejobs.comdisneyinflight.comdisneyinternational.comdisneyinternationalhd.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.com
+espnqa.comespncdn.comespn.netdisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frespn.comdisneymagicmoments.gr
disney.fr
disney.be
disney.cadisneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com
disneynow.comdisneypeoplesurveys.comdtci.technologydisneyplus.comdtci.codisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneystreaming.comdisneysubscription.comdmed.technologydisneytvajobs.comdisneyworld-go.com
+dssott.comgo-disneyworldgo.com
+go.com
mickey.tvmoviesanywhere.comnomadlandmovie.chplaymation.comshopdisney.comshops-disney.comsorcerersarena.comspaindisney.comstar-brasil.comstar-latam.comstarwars.com#starwarsgalacticstarcruiser.comstarwarskids.comstreamingdisney.netdisney.asiathisispolaris.comwatchdisneyfe.comnatgeomaps.comnationalgeographic.com"nationalgeographicpartners.comngeo.comstarott.comstarplus.comedgedatg.comabc.comabc-studios.com
disney.com.brdisneyturkiye.com.tr
+espn.co.ukdisney.co.jp"beautyandthebeastmusical.co.ukdisneytickets.co.ukdisney.co.krdisneyplus.bn5x.netdisneymagicmoments.gen.trdisneymagicmoments.co.zadisneymagicmoments.co.uk20thcenturystudios.com.brdisney.co.thdisney.co.ildisney.co.ukdisney.co.zadisneymagicmoments.co.il20thcenturystudios.com.auhsprepack.akamaized.net
disney.com.tw
disney.com.hk
disney.com.au!disney-portal.my.onetrust.comdisney.my.sentry.io$ disneyplus.com.ssl.sc.omtrdc.net ^hses[1-7]?\.akamaized\.net$
+7
+FONTAWESOMEfontawesome.comfortawesome.com
+0
+
+MUSIXMATCHmusixmatch.com
+mxmcdn.net
+
+PIXIVbooth.pm
fanbox.cc
pixiv.net
pixiv.orgpixiv.me
pximg.netpixiv.co.jp
ads-pixiv.net
+ads
+G
+TMDBtmdb-image-prod.b-cdn.netthemoviedb.orgtmdb.org
+'
+4PLEBS
4pcdn.org
+4plebs.org
+H
+BLENDERbigbuckbunny.orgblender.orgelephantsdream.org
+1
+CATEGORY-FORUMS-IRquera.ir
quera.org
+1
+ LIBERAPAY
liberapay.com
liberapay.org
+0
+OPENWRTopenwrt.orglede-project.org
+:
+ZAOBAO
+zaobao.com
zaobao.sg
zaobao.com.sg
+0
+N3ROn3ro.loln3ro.netn3ro.wtf
+
+ SPEEDTEST($www.speedtest.net.cdn.cloudflare.net
cdnst.netcellmaps.comekahau.cloud
+ekahau.com
ookla.comooklaserver.netpingtest.netspeedtest.co
speedtest.netspeedtestcustom.comwebtest.netOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$
+ads
+-
+C-SPAN
+c-span.orgc-spanvideo.org
+
+GOOGLE-REGISTRY-TLDmemeingfoozipmov nexusdadphdprofesqrsvpboodaynewdevpageapphowsoyxn--q9jyb4c
+
+IEEEieee.orgieee.tvtryengineering.org
ieee-ccnc.org
ieee-ecce.orgieeemce.orgstandardsuniversity.orgieee-region6.orgieee.caieeer10.org
+ieeer5.org
+ieeer8.orgieeeusa.orgieeefoundation.orgieee-into-focus.org
ieee-vics.orgieeeday.orgdatasheets360.comglobalspec.com
ieee-isto.orgtechstreet.comcomputer.org
+comsoc.orgembs.orgemcs.org
grss-ieee.org
ieee-aess.orgieee-cas.org
ieee-ceda.orgieee-edusociety.orgieee-ies.orgieee-ims.org
ieee-npss.org
ieee-pels.orgieee-pes.orgieee-ras.orgieee-sensors.org
ieee-tems.org
ieee-uffc.orgieeeaps.orgieeecsc.orgieeecss.orgieeedeis.orgieeemagnetics.orgieeenano.orgieeeoes.orgieeesmc.orgieeesystemscouncil.org
itsoc.orgmtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org
vtsociety.org
+C
+CIWEIMAOciweimao.comhbooker.comkuangxiangit.com
+3
+
+IMAGESHACKimageshack.com
imageshack.us
+
+
STACKEXCHANGE
askubuntu.comblogoverflow.comcodeforaliving.iomathoverflow.netserverfault.comsstatic.net
stackapps.com
stackauth.comstackexchange.com
stackmod.blogstackoverflow.blogstackoverflow.costackoverflow.comstackoverflow.emailstackoverflowbusiness.comstackoverflowcareers.comstacksnippets.net
superuser.comtex-talk.netthesffblog.com
+x
+6PARK
6park.com6parkbbs.com
6parknews.com
+cool18.com
popo8.com
+parkvv.comxwbo.com
+9
+
+ARTSTATIONartstation.comartstationmedia.com
+
+CATEGORY-ANDROID-APP-DOWNLOADapkpure.comapkpure.netcdnpure.compureapk.com
+winudf.comapkcombo.com
apkmirror.com
+%
+RTHKetvonline.hkrthk.hk
++
+VAPTCHAvaptcha.comvaptcha.net
+j
+ WEATHERCNhf-aw.cn
hf-aw.comhuafeng-accuweather.cn
huafengaw.com
weathercn.com
+
+CODEcode.org
+*
+
+FLURRY-ADSdata.flurry.com
+ads
+
+
+HOOLIGAPPScuntempire.comcuntwars.comdirtyleague.com
faptitans.comhooligapps.comslotbitches.com
smutstone.comtownofsins.com
+
+TIKTOKbyteoversea.com
+!cn
+muscdn.com
+!cn
+musical.ly
+!cntik-tokapi.com
+!cn
+tiktok.com
+!cntiktokcdn-us.com
+!cn
tiktokcdn.com
+!cntiktokd.net
+!cntiktokd.org
+!cntiktokv.com
+!cn
+tiktokv.us
+!cn
+tiktokw.us
+!cn
ttwstatic.com
+!cn,p16-tiktokcdn-com.akamaized.net
+!cn
+
+CATEGORY-SCHOLAR-CNwww.libvideo.com
wenxin-ge.com
sbsjk.comancientbooks.cn
apabi.combjinfobank.com
blyun.comchinabooktrading.com
+chndoi.org
+cnbksy.comcnki.net
cspro.org
+noi.cncnsciedu.com
ibcet.org
medicexam.net
+umajor.netvipexam.orgcnthinkers.com
cqvip.comtongxianghuicn.comxuexi365.netxxtmail.com
duxiu.comer07.com
ersjk.com
twscholar.com
+gtarsc.comhtcases.com
hwshu.com
hytung.cnincopat.com
+lawyee.org
neohytung.comnmrdata.comnssd.cn
+16q.cn
+pkulaw.com
+rdfybk.com
+resset.comsciencechina.cn
sslibrary.com
tokyotrial.cn
+crggcn.comairitilibrary.cn
+wf.pub
51ccd.comuonline-sh.net
+yiigle.comuonline-sh.comsuperlib.netsuperlib.comxuexi365.com
+zaifan.comaichaoxing.comchaoxing.ccchaoxing.com
chaoxingv.com
hongbo100.com
lnlib.netmndqlib.net
+mti100.comnihaoafrica.orgnihaorwanda.cn
+sslawy.comzhihang100.com
5read.com
+cxbiji.com
+ssvideo.cnssreader.cn
ylike.netiscas.ac.cnpishu.com.cn
las.ac.cnwind.com.cn
+csdl.ac.cn
drcnet.com.cndata.pharmacodia.com
zaifan.com.cnssvideo.com.cnstudy360.com.cnwanfangdata.com.cnssreader.com.cn
+ccf.org.cncidp.com.cncnki.com.cn
unihan.com.cnxuexi365.com.cn
+U
+DOWJONESdjreprints.comdowjones.comdowjones.iodowjoneson.com
+
+LARK-GLOBALlarkofficecdn.comthelarkcloud.comlarkofficeimg.com
larkcloud.com
larkcloud.net
+larkfn.comlarkmeetings.cnlarkmeetings.comlarkoffice.comstatuslarkoffice.comlarkofficeapp-boe.comlarkofficeapp-pre.comlarkofficeapp.comlarkofficeboe.comlark.cnlarkofficepkg.comlark-passport-qa-sg.netlarkofficepre.comlarkrooms.cn
larkrooms.comlarksuite-pre.com
larksuite.com
+larkvc.comlarksuiteimg.comlarksuitecdn.comlarksuiteimg-boe.comlarksuiteimg-pre.comlarksuite.com.ttdns2.comlarksuite.com.ttdns1.comlarkoffice.com.bytedns1.com%!frontier-lark-lb-v3.lf.bytelb.net
+
+58TONGCHENGanjukestatic.com
ganji.com5858.com
+58.com
58antenna.comganjistatic1.com
58che.com58control.cn
+58corp.com
58dns.org
58lovepet.com
58uxd.com58v5.cn58xinghuo.cn
58xinghuo.com58xueche.com
+anjuke.com58antenna.cnchinahr.com
+daojia.com
chrstatic.comdiandao.orgfang.com
sofun.com
soufunimg.com
jxedt.com
jxksw.net
+roomeet.cnxinchong.com
zhuancorp.comzhuanspirit.comzhuanzhuan.com58ganji.com58ganji-corp.com
58.com.cn58cdn.com.cn
+P
+WISEKEYwisecoin.com
+wiseid.comwisekey.comwisekey.com.hk
+;
+UC uc.cn
uc123.com
ucweb.comuczzd.cn
+H
+COOLAPKcoolapk.comcoolapkmarket.comcoolapkmarket.net
+'
+CUINCcuinc.twcuinc.oen.tw
+
+LDMNQ
ldmnq.com
+@
+JQUERY
+jquery.comjquerymobile.comjqueryui.com
+h
+OPENSOURCEINSIGHTSdeps.dev
deps.infoopensourceinsight.devopensourceinsights.dev
+
+ WIKIMEDIA
mediawiki.org
wikibooks.orgwikidata.orgwikimediafoundation.org
wikimedia.orgwikinews.org
wikipedia.org
wikiquote.orgwikisource.orgwikiversity.orgwikivoyage.orgwiktionary.orgwmfusercontent.org
+w.wiki
toolforge.orgwikimediacloud.orgwmcloud.orgwmflabs.org
+
+ Z-LIBRARY
+1lib.cloud1lib.cz1lib.domains1lib.education1lib.eu1lib.limited1lib.pl1lib.to1lib.tw2lib.org3lib.netart1lib.comb-ok.africa
b-ok.asiab-ok.ccb-ok.globalb-ok.orgbook4you.org
+bookfi.net
booksc.eu
booksc.me
+booksc.org
+booksc.xyzbookshome.info
bookshome.netbookshome.world
+de1lib.org
+hk1lib.orglibsolutions.applibsolutions.domainslibsolutions.net
+ma1lib.org
+sg1lib.orgsinglelogin.appsinglelogin.mesinglelogin.resinglelogin.site
z-lib.orgz-library.se
zlib.lifezlibcdn.comzlibcdn2.com
+
+ APKMIRROR
apkmirror.com
+
+CATEGORY-FOOD-CN3songshu.comhaidilao.comlkcoffee.comluckincoffeecdn.comyyds.co517lppz.comlppz.comlppzimg.com
+heytea.com
+
+ FASTSTONE
faststone.org
+s
+COMODO
+comodo.com
+comodo.netcomodoca.com
comodoca2.com
comodoca3.com
comodoca4.com
+e
+
DISCOVERYPLUS
disco-api.comdiscoveryplus.com*&content-ause1-ur-discovery1.uplynk.com
+
+ WORDPRESSvideopress.com w.org
wordpress.com
wordpress.orgwordpress.tv
wp-themes.com
+wp.com
wpvip.com
+
+ APPLE-PKI)certs-lb.apple.com.akadns.net
+cncerts.apple.com
+cn'crl-lb.apple.com.akadns.net
+cn
crl.apple.com
+cn(ocsp-lb.apple.com.akadns.net
+cnocsp.apple.com
+cn)ocsp2-lb.apple.com.akadns.net
+cnocsp2.apple.com
+cn
+
+BINGlocation.microsoft.combingbing.combing.netbing123.combingads.combingagencyawards.combingapis.combingapistatistics.combingparachute.combingsandbox.combingvisualsearch.com
bingworld.combluehatnights.com
+dictate.msflipwithsurface.commasalladeloslimites.commicrosoft-give.commicrosoftcloudsummit.commicrosoftdiplomados.commicrosoftlatamholiday.commicrosoftmxfilantropia.com!microsoftpartnersolutions.commsunlimitedcloudsummit.comoffice365love.comoffice365tw.comrenovacionoffice.comsprinklesapp.combing.com.cn
+cncn.bing.com
+cncn.bing.net
+cncn.mm.bing.net
+cn
ditu.live.com
+cnbj1.api.bing.com
+cnemoi-cncdn.bing.com
+cn
+*
+BOOTCDN
+bootcdn.cnbootcdn.net
+
+TIDELIFTtidelift.com
+
+WANGSU
51cdn.com
8686c.com
cdn30.orgchinanetcenter.com
lxdns.com
+lxdns.info
lxdns.orgourdvsss.comspeedws.infospeedws.org
+wangsu.com
+wscdns.comwscdns.info
+wscdns.org
+
+CATEGORY-FINANCEhsbc
longbridge.hkagdbank.comtuncommercialbank.comlongbridge.globalifastgp.comayabank.com
+ysx-mm.comyomabank.com
ablmm.comshwebank.commmtourismbank.comkbzbank.com
+kbzpay.commabbank.commwdbank.commdbankpublic.commobmyanmar.comwise.comtransferwise.com
wbrks.com
lbkrs.comlongportapp.comlongbridgeapp.com
longbridge.sghsbc.detradingview.comnptsibinbank.comlongbridge.cloudifasttv.comifastnetwork.com
+fsmone.comifastgb.commql5.comhsbc.comhsbc.nethsbcinnovationbanking.comhsbcnet.comhsbcprivatebank.comhsbc.aehsbc.amhsbc.bmhsbctrinkaus.dehsbc.frhsbc.cahsbc.lkhsbc-zertifikate.dehsbc-transactionservices.dehsbc-alternatives.dehsbc.ukfxcorporate.com
ifastcorp.comfundsupermart.comgbank.com.mmhsbc.com.brhsbc.com.auhsbc.com.hkhsbc.com.mohsbc.com.mthsbc.com.mxhsbc.com.myhsbcamanah.com.myhsbc.com.phhsbc.com.sghsbc.com.trhsbc.com.twhsbc.com.bdhsbc.com.vnhsbc.com.ar
+hsbc.co.uk
+hsbc.co.th
+hsbc.co.nz
+hsbc.co.mu
+hsbc.co.kr
+hsbc.co.jp
+hsbc.co.in
+hsbc.co.idhsbc.com.cn
hsbcqh.com.cnhsbcinsurance.com.cnhsbc.com.bhhsbc.com.uyhsbc.com.eg
cbbank.com.mm
+cbm.com.mmwaveomoney.com.mm
+uab.com.mm
fsmone.com.hk
fsmone.com.myifastcapital.com.myifastfinancial.com.hkifastfinancial.co.inifastgp.com.hkchid.com.mmsmedevelopmentbank.com.mmabank.com.mm
+mcb.com.mm
+meb.gov.mmmicb.gov.mmmminsurance.gov.mmmmftb.gov.mmmmbbank.com.mmfirstprivatebank.com.mmifastps.com.cn
+cn
+$
+JD
jcloudimg.netjcloudlb.com
300hu.com
360buy.cn
+360buy.com
360buyimg.com360buyinternational.com
+360top.com
+7fresh.combaitiao.comblackdragon.com
caiyu.comchicalot.cncloud-beijing.comcloud-hebi.comcloud-ningbo.comcloud-ordos.comcloud-shenzhen.comcloud-shiyan.comcloud-wuhan.comcloud-xian.comcloud-xm.comcloud-zhaoqing.comcloud-zhongwei.comcloudanqing.comcloudbaoshan.comcloudbeibei.comcloudbinzhou.comcloudchangde.comcloudchangsha.comcloudchangzhou.comcloudchaozhou.comcloudchengde.comcloudchengdu.comcloudchuzhou.comcloudczs.comclouddalian.comclouddatong.comclouddongying.comcloudfoshan.comcloudfuqing.comcloudganzhou.comcloudguangzhou.comcloudhaidong.comcloudhefei.comcloudhengshui.comcloudhuaihua.comcloudhuizhou.comcloudjinan.comcloudjinchang.comcloudjingzhou.comcloudjining.comcloudjiujiang.comcloudkunming.comcloudleshan.comcloudlijiang.comcloudlishui.comcloudluohe.comcloudluoyang.comcloudmeishan.comcloudnanan.comcloudnanjing.comcloudnanning.comcloudnantong.comcloudquanzhou.comcloudsanya.comcloudshanghai.comcloudshaoyang.comcloudshenfuxingqu.comcloudsiping.comcloudsuqian.comcloudtangshan.comcloudtianjin.comcloudtongchuan.comcloudtongliang.comcloudweinan.comcloudxiangtan.comcloudxianyou.comcloudxining.comcloudyanan.comcloudyancheng.comcloudyantai.comcloudyinchuan.comcloudyueyang.comcloudyuncheng.com
cloudyuxi.comcloudzhongshan.comcloudzhuhai.com
+dao123.com
goselling.comhealthjd.comduolabao.com
isvjcloud.com
isvjd.comjcloud-cache.comjcloud-cache.netjcloud-cdn.comjcloud-live.comjcloud-oss.com
+jcloud.comjcloudcache.comjcloudcache.netjcloudcs.comjclouddn.com
jclouddns.com
jclouddns.netjcloudec.comjcloudedge.comjcloudedge.net1huizhan.comjcloudgslb.net
jcloudimg.comjcloudgslb.com3.cnprestodb-china.comjcloudlive.comjcloudlv.com
jcloudoss.comjcloudresolve.comjcloudresolve.netjcloudss.comjcloudstatic.comjcloudstatic.netjcloudvideo.comjcloudvideo.net
jclps.com
+jd-app.comjd-ex.cn
jd-ex.comyizhitou.comyiyaojd.comyihaodianimg.com
jd-ex.net jd.cn
+jd.com
yihaodian.comjd.shopjdbusiness.comjdcache.com
jdcdn.comjdcloud-api.comjdcloud-api.netjdcloud-edu.comjdcloud-elite.comjdcloud-elive.comjdcloud-livebuy.comjdcloud-mail.comjdcloud-openapi.comjdcloud-oss.comjdcloud.comjdcloudcache.comjdcloudcache.netjdcloudcdn.comjdcloudcdn.net
jdcloudcs.comjdclouddns.comjdclouddns.netjdcloudedge.comjdcloudedge.net
jdcloudlb.com
jdcloudlb.netjdcloudlive.comjdcloudlive.netjdcloudresolve.comjdcloudresolve.netjdcloudsite.comjdcloudstatic.comjdcloudstatic.netjdcloudstatus.comjdcloudstatus.netjdcloudvideo.comjdcloudvideo.netjdcloudwaf.comjddapeigou.comjddebug.com
jddglobal.comjdemall.com
jdfw1.com
+jdgslb.com
+jdgslb.netjdh.com
jdjinrong.com
+jdl.cnjdl.comyhd.com
jdlike.cn
jdpay.comjdpaydns.comjdwl.comjdx.com
jhscm.comjingdong.comjingdongjinrong.comjingpinhui.com
+jingxi.com
+jkcsjd.com
+joybuy.com
joybuy.eslinglonglife.com
logiseasy.com
mayshijia.comminitiao.commissjia.net
ocwms.compaidaojia.cn
+paipai.comxjoycity.comjcloudlb.netqianxun.comqingzhouip.com
sgsic.comtoplife.com
+vg.com
+vipmro.com
+vipmro.netwangyin.com
wdfok.comwuliujie.cnwuliujie.com
xianjiqun.comprestodb.net.cn
+jdl.com.cn
jd.com.cnjd-ex.com.cnduiou.com.cnchinabank.com.cn
360buy.com.cnjd.co.th
+!cnjd.hk
+!cnjd.id
+!cnjd.ru
+!cnads.union.jd.com
+adsc-nfa.jd.com
+adscps.360buy.com
+ads
+jzt.jd.com
+ads
stat.m.jd.com
+adsimg-x.jd.com
+ads
+
+OPENJSFOUNDATIONamp.akamaized.netopenjsf.org
+nodejs.orgamp.devampproject.comampproject.netampproject.orgelectronjs.org
+jquery.comjquerymobile.comjqueryui.commochajs.orgcdn.ampproject.org
+cn
+>
+CNBETA
+cnbeta.com
cnbetacdn.com
cnbeta.com.tw
+
+GIGABYTEgigabyte2.azureedge.netsa78gs.wpc.edgecastcdn.net"sni1dcb6gl.wpc.edgecastcdn.net
aorus.comgigabyte.comaoruszone.cn
+cngigabyte.cn
+cn
+B
+RB51nurofensk-prod-env.eu-west-1.elasticbeanstalk.com
finish.bg
finish.si
+rb.com
+rb.netrbbusinessshop.comrbdigitalab.comrbdigitallab.comrbeuroinfo.comrbgrads.comrbgraduates.comrbmavericks.comrbnainternational.com
rbplc.comrbrandlibrary.com
rbspeakup.comreckitt.netreckittbenckiser.comreckittbenckiser.netreckittbenckiser.tvreckittprofessional.comdettol-prize.com
dettol.fr
dettol.cz
dettol.ch
dettol.cldettolthailand.comdettolcleannaija.comdettolarabia.com
dettol.be
dettol.at
dettol.pt
+dettol.com
dettol.pl
dettol.pk
dettol.nl
+dettol.net
dettol.ie
dettol.hu
dettol.rustrepsils.usstrepsils.fistrepsils.sistrepsils.hustrepsils.ie
strepsils.netstrepsils.plstrepsils.ptstrepsils.ro
+cepacol.cacepacol.comstrepsils.frstrepsils.hrstrepsils.chairwickarabia.comdurex.ptdurex.ro
durex-shop.chdurex-shopline.comdurex-slovenia.sidurex.atdurex.eedurex.cltrydurex.tvtrydurex.net
shopdurex.complaybydurex.comlovesexdurex.comdurexusa.com
durex.comdurexukraine.comdurexloveclub.comdurexindia.comdurexchina.comdurexcanada.comdurexcam.comdurex.usdurex.sedurex.rudotherex.comdurex.esdurex.dkdurex.dedurex.czdurex.bedewitwithdurex.comdurex.fidurex.frdurex.hudurex.iedurex.itdurex.jpdurex.lvdurex.mxdurex.nldurex.nodurex.pl
+repsils.nostrepsilsarabia.comdobendan.destrepsils.esstrepsils.ru
+nurofen.nonurofen.net
+nurofen.it
+nurofen.ie
+nurofen.bg
+nurofen.pt
+nurofen.ro
+nurofen.es
+nurofen.de
+nurofen.cz
+nurofen.sk
+nurofen.hu
enfagrow4.com
nutramigen.plnutramigen.net
enfaaplus.comenfababy.comenfabebe.comenspireformula.com
enfasmart.com
+enfamil.pt
+enfamil.pl
+enfamil.esenfamil.com
+enfamil.ca
+airwick.ru
+nurofen.ru
+nurofen.hrnurofengel.com
+nurofen.at
+nurofen.pl
+nurofen.frmucinexprofessional.com
+mucinex.tvmucinex.netmucinex.com
+mucinex.cn
+mucinex.caschiffvitamins.commovefreerewards.commovefreeoffers.com
movefrees.com
move-free.netmeadjohnson.commeadjohnson.netkeepmovingwithmovefree.compifpafarabia.com
vanish.se
vanish.espowerofresolve.comspraynwash.com
vanish.at
vanish.be
vanish.ch
vanish.clvanishstains.com
vanishinfo.czvanishcentroamerica.comvanisharabia.com
vanish.frpowerofresolve.ca
vanish.pl
vanish.ru
vanish.ro
vanish.pt
vanish.hu
vanish.no
vanish.nl
vanish.it
vanish.ie
vanish.de
vanish.dk
vanish.si
vanish.fi
vanish.skmorteincam.commortein.com
lysol.net
lysol.comlysol.cllysol.ca
finishinfo.fi
finishinfo.cz
finishinfo.it
finishinfo.jpfinishinfo.com
finishinfo.cl
finishinfo.befinishdishwashing.comfinishdishwashing.ca
finish.lvdigital-rb.comfinishwin.be
+airwick.fi
+airwick.pl
+airwick.ca
+airwick.ch
+airwick.clvipoo.es
+airwick.at
+airwick.us
+airwick.tvairwick.com
+airwick.sk
+airwick.fr
+airwick.se
+airwick.hr
+airwick.cz
+airwick.de
+airwick.dk
+airwick.esstrepsils.at
calgon.chnurofen.com
+airwick.hu
+airwick.ie
+airwick.it
+airwick.jpairwick.net
+airwick.nl
+airwick.no
+airwick.be
+airwick.pt
+airwick.ro
rb-crisis.com
finish.ro
finish.pt
finish.pl
finishinfo.nl
finish.hu
finish.gr
finish.frclearasil.usveet.tvveet.clveet.dkveet.chveet.seveetclub.itveetcentroamerica.comveet.ruveetarabia.comveet.usveet.atveet.comveet.caveet.beveetbangladesh.comveet.roveet.ptveet.noveet.nlveet.jpveet.huveet.frveet.fiveet.esveet.de
finish.es
finish.definisharabia.com
finishinfo.ru
finishinfo.sefinishkilpailu.fi
finish.atyarininsuyu.com
finishinfo.no
finish.skcalgoncarbon-china.com
calgon.tv
calgon.be
calgon.pt
calgon.nlcalgoncarbon.com
+airwick.sicalgonit.com
+woolite.cawoolite.com
+woolite.pl
+woolite.uswoolitecarpet.comaerogardcn.com
calgon.es
calgon.fr
calgon.ru
calgon.ie
calgon.it
+calgon.com
calgon.at
calgon.deveet.com.bdcalgon.co.uk
+veet.co.in
+veet.co.kr
+veet.co.nz
+veet.co.ukveet.com.arveet.com.au
+enfa.co.iddurex.co.za
calgon.com.trveet.com.brveet.com.coveet.com.hkveet.com.mxveet.com.myveet.com.phenfabebe.com.brveet.com.sgveet.com.tr
+veet.co.za
airwick.co.in
airwick.co.nz
airwick.co.ukmeadjohnson.com.hkairwick.com.auairwick.com.brairwick.com.mxairwick.com.trvanishstains.com.auvanish.co.idvanish.co.ilvanish.co.invanishbancaseulook.com.bro2action.co.krvanish.co.ukvanish.co.za
vanish.com.ar
vanish.com.br
vanish.com.co
vanish.com.hrfinishinfo.com.aufinishinfo.com.arfinishbrasil.com.br
finish.com.tr
finish.com.hrfinish.co.zafinish.co.ukfinish.co.nzfinish.co.kr
vanish.com.mx
vanish.com.my
vanish.com.pe
vanish.com.sglizol.co.inlysol.co.crlysol.com.mx
vanish.com.trvanish.co.nzmeadjohnson.com.tw
mortein.co.in
mortein.co.nz
mortein.co.zamortein.com.aumortein.com.brmortein.com.ngmortein.com.pk
airwick.co.zastrepsils.com.hk
+veet.co.idveet.com.pkenfabebe.com.coenfabebe.com.doenfabebe.com.ecenfabebe.com.mxenfabebe.com.pebebepremium3.com.boenfamama.com.phenfamama.com.ar
mucinex.co.nzmucinex.com.cnenfabebe3.com.arenfagrow.com.sgenfagrow.com.phenfagrow.com.myenfagrow.com.bnenfabebe.com.veenfagrow.co.indurex.com.hrdurex.co.ildurex.co.nzdurex.co.thdurex.co.ukenfa.com.vndurex.co.iddurex.com.codurex.com.bddurex.com.audurex.com.mydurex.com.ngnurofen.com.au
nurofen.co.uk
nurofen.co.ilnurofen.com.sg
nurofen.co.za
nurofen.co.nzdurex.com.pkdurex.com.phdurex.com.trdurex.com.pedurex.com.sgespadoldettol.com.ardettol.co.iddettolsitishield.co.indettol.co.indettol.co.kedettol.co.uk
dettol.com.au
dettol.com.bd
dettol.com.br
dettol.com.eg
dettol.com.hk
dettol.com.my
dettol.com.ng
dettol.com.sgdettol.co.nzstrepsils.co.krstrepsils.com.twstrepsils.com.phaerogard.com.austrepsils.com.austrepsils.com.costrepsils.com.brstrepsils.com.arstrepsils.co.zastrepsils.co.nzgraneodin.com.mxreckittbenckiser.cn
+cn#reckittbenckiser.com.cn
+cn
dettol.com.cn
+cndurex.com.cn
+cndurexchina.com.cn
+cnlovesexdurex.cn
+cnenfinitas.com.cn
+cnmeadjohnson.com.cn
+cn vanish.cn
+cnairwick.com.cn
+cnclearasil.cn
+cnclearasil.com.cn
+cnveet.cn
+cnveet.com.cn
+cn
+woolite.cn
+cnwoolite.com.cn
+cnaerogard.com.cn
+cn calgon.cn
+cn$dishwashingexpert.com.cn
+cn
finish.com.cn
+cnlysol.cn
+cnlysol.com.cn
+cn
+mortein.cn
+cnmovefree.cn
+cn
+nurofen.cn
+cnnurofen.com.cn
+cnstrepsils.cn
+cnstrepsils.com.cn
+cn
+j
+REDTUBElivehdcams.comredtube.comredtubepremium.com
+rdtcdn.comredtube.com.br
+D
+YY
+yy.comyystatic.com
+duowan.comdwstatic.com
+
+CATEGORY-SCHOLAR-IR ac.ir
+edu.ir
+iranlms.ir
+jtt.irsanjesh.org
+sharif.edu
sharif.ir
srttu.edu
+
+CATEGORY-TECH-MEDIAelectrek.cotypeisbeautiful.comappleinsider.comdigitaltrends.comengadget.com
macrumors.comslashdot.orgtechnews.tw
techradar.comtheverge.comycombinator.comandroidpolice.com9to5mac.com9to5google.com
tomsguide.com9to5terminal.com9to5toys.comdronedj.comandroidauthority.comspaceexplored.comthetype.com
zdnet.comstartupschool.orgzdnet.redvideo.io
thetype.cloud
+cn
+;
+CLOUDFLARE-IPFScf-ipfs.comcloudflare-ipfs.com
+
+CATEGORY-ACGcolorfulstage.comlapriere.jpmagicalmirai.commikuexpo.com
+piapro.netsnowmiku.combowlroll.net
crypton.co.jp
+
+KAKAOkakaogamescorp.comkakaocloud.comdaumkakao.io
kakao.com
zigzag.krkakaocdn.netkakaoent.comkakaotalk.jp
kgslb.comonkakao.netkakao.vckakaobrain.comkakaoinvestment.comkakaomobility.comkakaopiccoma.com
kakaobank.comkakaobank.iokakaobankcontent.comkakaoenterprise.comkrosspictures.comkakaoilaas.com
1thek.composty.krkakaostyle.comfashionbykakao.comdolphiners.comgleline.comkpinsurances.comkakaopaysec.com
kakaocorp.comdaumcdn.netkakaopay.compastahealth.com
melon.commsoopent.comkarechat.aishownote.comstarship-ent.comstuidok110.comvastenm.comzipcine.comdaumpcbang.comdaum.netkakaovx.comkakaohealthcare.commetabora.io
+sena.co.krlionhearts.co.krootbstudio.co.kr
megamon.co.krlogosfilm.co.krjwide.co.kristent.co.krbhent.co.krawesomeent.co.kr
antenna.co.krkakao.co.kr
+[
+ PIRATEBAYpirates-forum.org
torrindex.netthepiratebay.org
+apibay.org
+-
+PROJECTSEKAIsekai.colorfulpalette.org
+
+
CATEGORY-ORGScsis-prod.s3.amazonaws.coma.ppy.sh
assets.ppy.shc.ppy.sh
+osu.ppy.sh
m1.ppy.shlazer.ppy.sh
notify.ppy.sh
sentry.ppy.shspectator.ppy.shaomedia.org
atypi.org
+change.orgglobalsecurity.orgiana.orgietf.orgitu.intopte.org
smpte.org
+un.org
+w3.orgwho.intwto.orgopenmaps.orgopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.orgosm.orgosmfoundation.orgstateofthemap.comstateofthemap.orgpaskoocheh.comrolfoundation.orgrolsociety.orgcsis.orgemojipedia.orgworldemojiawards.comworldemojiday.comxn--yt8h.laf-dro1d.orgf-droid.comf-droid.org
+fdroid.orgieee.orgieee.tvtryengineering.org
ieee-ccnc.org
ieee-ecce.orgieeemce.orgstandardsuniversity.orgieee-region6.orgieee.caieeer10.org
+ieeer5.org
+ieeer8.orgieeeusa.orgieeefoundation.orgieee-into-focus.org
ieee-vics.orgieeeday.orgdatasheets360.comglobalspec.com
ieee-isto.orgtechstreet.comcomputer.org
+comsoc.orgembs.orgemcs.org
grss-ieee.org
ieee-aess.orgieee-cas.org
ieee-ceda.orgieee-edusociety.orgieee-ies.orgieee-ims.org
ieee-npss.org
ieee-pels.orgieee-pes.orgieee-ras.orgieee-sensors.org
ieee-tems.org
ieee-uffc.orgieeeaps.orgieeecsc.orgieeecss.orgieeedeis.orgieeemagnetics.orgieeenano.orgieeeoes.orgieeesmc.orgieeesystemscouncil.org
itsoc.orgmtt.orgphotonicssociety.orgsignalprocessingsociety.orgtechnologyandsociety.org
vtsociety.orgnist.govtime.gov
+ppy.sharchive-it.orgarchive.org
+archive.ph
archive.todayopenlibrary.org
4pcdn.org
+4plebs.orgccstatic.orgcreativecommons.orgcreativecommons.engineeringlicensebuttons.net
+
+FINISH
finish.sk
finishinfo.noyarininsuyu.com
finish.atfinishkilpailu.fi
finishinfo.se
finishinfo.rufinisharabia.com
finish.de
finish.es
finish.fr
finish.gr
finish.hu
finishinfo.nl
finish.pl
finish.pt
finish.ro
finish.sifinishwin.be
finish.bg
finish.lvfinishdishwashing.cafinishdishwashing.com
finishinfo.be
finishinfo.clfinishinfo.com
finishinfo.jp
finishinfo.it
finishinfo.cz
finishinfo.fifinishinfo.com.aufinishinfo.com.arfinishbrasil.com.br
finish.com.tr
finish.com.hrfinish.co.zafinish.co.ukfinish.co.nzfinish.co.kr$dishwashingexpert.com.cn
+cn
finish.com.cn
+cn
+
+GEEKPARKgeekpark.net
+
+ LAUNCHPAD
launchpad.netlaunchpadcontent.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org
+!
+NAT-TESTnattest-china.com
+
+NYTIMESnyt.comnyt.netnytchina.comnytcn.me
nytco.comnyti.msnytimes.comnytstyle.comtimestalks.com
+j
+TAPTAP
+tapimg.com
+tapimg.net
taptap.cn
+taptap.com
taptap.iotaptapdada.com
+g
+BRAZZERSbrazzer.combrazzers.combrazzers.xxxbrazzersnetwork.com
mofos.com
+
+
CLOUDFLARE-CN cf-ns.com
+cn cf-ns.net
+cn
+cf-ns.site
+cn
+cf-ns.tech
+cn
+cftest5.cn
+cn
+cftest6.cn
+cncftest7.com
+cncftest8.com
+cncloudflare-cn.com
+cn!cloudflareanycast.net
+cncloudflarechina.cn
+cncloudflarecn.net
+cn cloudflareglobal.net
+cn%cloudflareinsights-cn.com
+cncloudflareperf.com
+cncloudflareprod.com
+cn!cloudflarestaging.com
+cn#cloudflarestoragegw.com
+cn
+
+KINGSOFTkimg.cnkingsoft.comksmobile.com
+ks-cdn.comks-cdn1.com
ksyun.comksyuncdn.com
ksyungslb.comseasungames.comxishanju.comxoyo.comxoyocdn.comcbjq.comtestplus.cn
+wps.cnwps.com
wpscdn.cn
+wpscdn.com
+kscord.com
51dzt.com
iciba.com
docer.comkdocs.cnwpsmail.netpapocket.com
wpspdf.cncmcm.comcmcmcdn.com
liebao.cnduba.comduba.netijinshan.com
+=
+KOOLEARN
+koocdn.comkoolearn.comkoopass.com
+H
+ACFUNacfun.cnaixifan.com apilog-web.acfun.cn
+ads
+.
+ BOOMERANG
boomerang.com
+wbdnbo.net
+
+ EPICGAMESbattlebreakers.comeac-cdn.comeasy.aceasyanticheat.net
epicgames.com
epicgames.devfortnite.comparagon.complayparagon.comroborecall.comshadowcomplex.comspyjinx.comunrealengine.comunrealtournament.com*&^epicgames-download\d\.akamaized\.net$6*^cdn\d-epicgames-\d+\.file\.myqcloud\.com$
+cn;/^epicgames-download\d-\d+\.file\.myqcloud\.com$
+cn
+
+CATEGORY-HOSPITAL-CNhospital.pku.edu.cnss.bjmu.edu.cn
fuwai.compkuh6.cn
+yctdyy.com
+smuszh.compuh3.net.cn
+*
+MOXINGmoxing.mobimoxing.news
+
+UMENGmobmore.com
umeng.comumengcloud.com
umsns.comumtrack.com
+uyunad.comwhalecloud.comalog.umeng.com
+ads alog.umengcloud.com
+ads
+w.cnzz.com
+adsz.gds.cnzz.com
+ads
+
+PASTEBINpastebin.com
+
+UNITY
unity.comunity3d.comads.unitychina.cn
+ads$splash-ads.cdn.unity.cn
+ads%splash-ads.unitychina.cn
+adsunityads.unity.cn
+ads!unityads.unity3d.com
+ads#unityads.unitychina.cn
+ads
+%
+ZHIHU
zhihu.com
zhimg.com
+
+CATEGORY-HTTPDNS-CN%httpdns-api.aliyuncs.com
+ads$httpdns-sc.aliyuncs.com
+adshttpdns.alicdn.com
+adshttpdns.baidu.com
+ads!httpdns.baidubce.com
+ads httpdns.bcelive.com
+ads!httpdns.n.shifen.com
+adshttpsdns.baidu.com
+ads3&httpdns-browser.platform.dbankcloud.cn
+ads"httpdns.c.cdnhwc2.com
+ads$httpdns.huaweicloud.com
+ads+httpdns.platform.dbankcloud.cn
+ads,httpdns.platform.dbankcloud.com
+ads$httpdns1.cc.cdnhwc5.com
+ads
dns.iqiyi.com
+ads"dns.qiyipic.iqiyi.com
+ads
doh.iqiyi.com
+adshdns.ksyun.com
+ads!kuaishou.httpdns.pro
+ads httpdns.meituan.com
+ads#httpdnsvip.meituan.com
+ads&httpdns-sdk.n.netease.com
+ads"httpdns.music.163.com
+ads"httpdns.n.netease.com
+ads%lofter.httpdns.c.163.com
+ads$music.httpdns.c.163.com
+ads(httpdns.push.oppomobile.com
+ads*httpdns.ocloud.oppomobile.com
+adsdns.weixin.qq.com
+ads!dns.weixin.qq.com.cn
+adshttpdns.kg.qq.com
+ads*httpdns.ocloud.heytapmobi.com
+ads(httpdns.push.heytapmobi.com
+ads"apidns.kwd.inkuai.com
+ads
+dns.jd.com
+adsdns.weibo.cn
+adsdoh.ptqy.gitv.tv
+ads"dotserver.douyucdn.cn
+ads"httpdns.bilivideo.com
+ads%httpdns.browser.miui.com
+adshttpdns.cctv.com
+ads(httpdns.danuoyi.tbcache.com
+ads httpdns.gslb.yy.com
+ads#httpdns.kwd.inkuai.com
+adshttpdns.pro
+ads&httpdns.volcengineapi.com
+ads"httpdns.yunxindns.com
+adshttpdns.zybang.com
+ads
+
+ IQIYI-ADSa.ckm.iqiyi.com
+adsad.m.iqiyi.com
+ads
afp.iqiyi.com
+adsc.uaa.iqiyi.com
+ads cloudpush.iqiyi.com
+ads"cm.passport.iqiyi.com
+adscupid.iqiyi.com
+ads#emoticon.sns.iqiyi.com
+ads!gamecenter.iqiyi.com
+ads!hotchat-im.iqiyi.com
+adsifacelog.iqiyi.com
+adsmbdlog.iqiyi.com
+ads msg.71.am
+adsmsg.video.qiyi.com
+ads msg2.video.qiyi.com
+ads#policy.video.iqiyi.com
+adsyuedu.iqiyi.com
+ads
+O
+MOMOmomo.dmmomo5188.commomomall.com.twmomoshop.com.tw
+
+IKEAikea.maikea.mxikea.auikea.beikea.bgikea.bhikea.caikea.chikea.clingkacentres.com
ingka.dev
ingka.comikea.netikea.comikea.usikea.uaikea.skikea.siikea.sgikea.saikea.ruikea.rsikea.deikea.roikea.qaikea.ptikea.prikea.plikea.phikea.omikea.noikea.nlikea.myikea.atikea.aeikea.lvikea.czikea.krikea.jpikea.joikea.itikea.isikea.inikea.ieikea.ltikea.dkikea.huikea.doikea.eeikea.egikea.esikea.fiikea.frikea.grikea.hkikea.hrikea.com.twikea.com.trikea.com.inikea.com.cyikea.com.sgikea.com.grikea.com.ruikea.com.roikea.com.ptikea.com.prikea.com.plikea.com.omikea.com.myikea.com.mxikea.com.lvikea.com.ua
+ikea.co.caikea.com.kwikea.com.saikea.com.egikea.com.doikea.com.deikea.com.au
+ikea.co.uk
+ikea.co.th
+ikea.co.pl
+ikea.co.ph
+ikea.co.om
+ikea.co.kr
+ikea.co.jp
+ikea.co.il
+ikea.co.id
+ikea.co.deikea.com.hk
+ikea.co.atikea.cn
+cningka-dt.cn
+cningka-internal.cn
+cningka-system.cn
+cn
+
+JIGUANG
+42r.cn
+5566ua.com
aurorapush.cn
+e0n.cnjapps.cnjchat.io
+jiguang.cnjmlk.cojpush.cnjpush.iojpushoa.com
+jsurvey.cn
jvoice.cn
+kc9.cn
+n0q.cnpushcfg.com
+s0n.cn
+1
+ STACKPATH
stackpath.com
stackpath.dev
+:
+JETBRAINS-AI
grazie.aigrazie.aws.intellij.net
+&
+
STEAMUNLOCKEDsteamunlocked.net
+
+TINYURLtinyurl.com
+/
+XVIDEOSxvideos-cdn.comxvideos.com
+
+YUEWEN
+yuewen.comhongxiu.comlrts.meqdmm.com
+qidian.com
readnovel.comtingbook.comwebnovel.com
+xs8.cnxxsy.net
+6
+75TEAM75.team
+75team.combaomitu.com
+
+DMMapi-p.videomarket.jpdmm.comdmm-extension.comdmmapis.com
+dmmrex.com
dmm.co.jpad.games.dmm.com
+adsbluekai.com
+adsfout.jp
+adsgmossp-sp.jp
+adsi-mobile.co.jp
+adsim-apps.net
+adsimpact-ad.jp
+ads ladsp.com
+ads
microad.co.jp
+ads
+microad.jp
+ads socdm.com
+ads
+&
+GEOLOCATION-!CN3dns-1.adobe.com3dns-2.adobe.com3dns-3.adobe.com3dns-4.adobe.com3dns-5.adobe.com3dns.adobe.coma.ppy.shabematv.akamaized.netactivate-sea.adobe.comactivate-sjc0.adobe.comactivate.adobe.comactivate.wip1.adobe.comactivate.wip2.adobe.comactivate.wip3.adobe.comactivate.wip4.adobe.comadobe-dns-1.adobe.comadobe-dns-2.adobe.comadobe-dns-3.adobe.comadobe-dns-4.adobe.comadobe-dns.adobe.com
adobeereg.com
ai.google.dev%!alkalicore-pa.clients6.google.com+'alkalimakersuite-pa.clients6.google.comalt1-mtalk.google.comalt2-mtalk.google.comalt3-mtalk.google.comalt4-mtalk.google.comalt5-mtalk.google.comalt6-mtalk.google.comalt7-mtalk.google.comalt8-mtalk.google.comamp.akamaized.netangle.com.tw anime-rule34-world.b-cdn.net!aod-pod-uk-live.akamaized.netapi-p.videomarket.jpapi.viu.now.comapl-hamivideo.cdn.hinet.netapple.com.akadns.net-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net!as-dash-uk-live.akamaized.net as-hls-uk-live.akamaized.netasahishimbun.sc.omtrdc.net
assets.ppy.sh&"audio-ak-spotify-com.akamaized.net'#audio4-ak-spotify-com.akamaized.net"avatargarenanow-a.akamaihd.netaz764295.vo.msecnd.netazure.microsoft.com"azuremarketplace.microsoft.combcovlive-a.akamaihd.netbcsecure01-a.akamaihd.net%!beatselectronicsllc.tt.omtrdc.netbeck-online.beck.de)%bingsettingssearch.trafficmanager.netblizzard.nefficient.co.krblizzcon-a.akamaihd.netblzddist1-a.akamaihd.netblzddistkr1-a.akamaihd.netblzmedia-a.akamaihd.netblznav.akamaized.netbnetcmsus-a.akamaihd.netbnetproduct-a.akamaihd.netbnetshopus.akamaized.netbrightcove.imgix.netbybit-exchange.github.iobybit.ada.supportc.ppy.shcbsi.live.ott.irdeto.com%!cbsplaylistserver.aws.syncbak.comcbsservice.aws.syncbak.com+'cdn-spotify-experiments.conductrics.comcdn.js7k.comcdn.jsdelivr.netcdngarenanow-a.akamaihd.netchinapower.csis.orgcisco.evergage.comciscolivehls-i.akamaihd.net,(client-teamviewer-com.trafficmanager.netclients1.google.com#cloudsync-prod.s3.amazonaws.comcommunity.oneplus.com%!courier-push-apple.com.akadns.netcrl.microsoft.comcrl.versign.netcsis-prod.s3.amazonaws.com!d1g1f25tn8m2e6.cloudfront.net!d1k2us671qcoau.cloudfront.net!d1m7jfoe9zdc1j.cloudfront.net!d1mhjrowxxagfy.cloudfront.net!d1oca24q5dwo6d.cloudfront.net!d1w2poirtb3as9.cloudfront.net!d1xhnb4ptk05mw.cloudfront.net!d1ymi26ma8va5x.cloudfront.net!d29vzk4ow07wi7.cloudfront.net!d2aba1wr3818hz.cloudfront.net!d2anahhhmp1ffz.cloudfront.net!d2dylwb3shzel1.cloudfront.net!d2e2de1etea730.cloudfront.net!d2nvs31859zcd8.cloudfront.net!d2um2qdswy1tb0.cloudfront.net!d2vjef5jvl6bfs.cloudfront.net!d2xmjdvx03ij56.cloudfront.net!d33wubrfki0l68.cloudfront.net!d36nr0u3xmc4mm.cloudfront.net!d3aqoihi2n8ty8.cloudfront.net!d3c27h4odz752x.cloudfront.net!d3vd9lfkzbru3h.cloudfront.netd6d4ismr40iw.cloudfront.net d6tizftlrpuof.cloudfront.netdatabank.worldbank.orgdatabase.asahi.com ddacn6pr5v0tl.cloudfront.netdefault.exp-tas.comderibit.cdn.prismic.iodeutschewelle.h-cdn.comdeveloper.microsoft.comdevelopers.facebook.com dfp6rglgjqszk.cloudfront.net dgeft87wbj63p.cloudfront.netdl.begellhouse.comdlgarenanow-a.akamaihd.net!dlmobilegarena-a.akamaihd.net'#download.visualstudio.microsoft.com dqrpb9wgowsf5.cloudfront.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net ds0h3roq6wcgc.cloudfront.netdtlgalleryint.cloudapp.net dykkng5hnh52u.cloudfront.nete122475.dscg.akamaiedge.netea.tt.omtrdc.neteaassets-a.akamaihd.net-)ebay-25-assets.s3-us-west-1.amazonaws.comecapi-pchome.cdn.hinet.netelib.maruzen.co.jpereg.adobe.comereg.wip.adobe.comereg.wip1.adobe.comereg.wip2.adobe.comereg.wip3.adobe.comereg.wip4.adobe.comespn.api.edge.bamgrid.comespn.hb.omtrdc.netespndotcom.tt.omtrdc.netf3b7q2p3.ssl.hwcdn.netfandom.zendesk.comfaronics.kayako.comfbcdn-a.akamaihd.netfirebase.google.comfirebase.googleapis.com#firebaseappcheck.googleapis.com,(firebasedynamiclinks-ipv4.googleapis.com,(firebasedynamiclinks-ipv6.googleapis.com'#firebasedynamiclinks.googleapis.com)%firebaseinappmessaging.googleapis.com($firebaseinstallations.googleapis.com%!firebaselogging-pa.googleapis.com"firebaselogging.googleapis.com+'firebaseperusertopics-pa.googleapis.com'#firebaseremoteconfig.googleapis.comfirstsearch.oclc.org40fontshop-prod-responsive-images.s3.amazonaws.com foxnewsplayer-a.akamaihd.net1-gamedownloads-rockstargames-com.akamaized.netgamer-cds.cdn.hinet.netgamer2-cds.cdn.hinet.netgigabyte2.azureedge.net!github-cloud.s3.amazonaws.com.*gitlab-assets.oss-cn-hongkong.aliyuncs.com3/google-ohttp-relay-safebrowsing.fastly-edge.comhamivideo.hinet.net#hammerandchisel.ssl.zendesk.com&"heads-ak-spotify-com.akamaized.net'#heads4-ak-spotify-com.akamaized.net!himalaya-exchange.zendesk.comhl2rcv.adobe.comhlrcv.stage.adobe.comhomebrew.bintray.comhpstore.corpmerchandise.com"hulu.playback.edge.bamgrid.comi.jeded.com/+img-prod-cms-rt-microsoft-com.akamaized.netimg-s-msn-com.akamaized.net,(impala-media-production.s3.amazonaws.comimperial.insendi.comlastfm.freetls.fastly.netlazer.ppy.shlgelectronics.122.2o7.netlicdn.cn.cdn20.com linear-abematv.akamaized.netlink.theplatform.comlinkedin.sc.omtrdc.net*&live-patreon-marketing.pantheonsite.iolm.licenses.adobe.comlmlicenses.wip4.adobe.comlocation.microsoft.comlolstatic-a.akamaihd.net
m1.ppy.shmdn.mozillademos.org)%media-rockstargames-com.akamaized.netmedone-education.thieme.com-)misa-prod.s3.ap-northeast-1.amazonaws.com&"mobilelive-hamivideo.cdn.hinet.netmscrl.microsoft.commtalk-dev.google.commtalk-staging.google.commtalk.google.commtalk4.google.commuse.jhu.edumwf-service.akamaized.netna1r.services.adobe.comnab.demdex.net&"nationalaustraliaban.tt.omtrdc.netnetflix.com.edgesuite.net
notify.ppy.sh51nurofensk-prod-env.eu-west-1.elasticbeanstalk.comnvidia.tt.omtrdc.netocsp.microsoft.com)%officecdn-microsoft-com.akamaized.netonekey.zendesk.comoneocsp.microsoft.comood.opsource.net openaiapi-site.azureedge.net2.openaicom-api-bdcpf8c6d2e9atf6.z01.azurefd.net1-openaicomproductionae4b.blob.core.windows.netopgg-static.akamaized.netorigin-a.akamaihd.net
+osu.ppy.sh#p-events-delivery.akamaized.net#p16-tiktokcdn-com.akamaized.net&"paper-attachments.s3.amazonaws.compchomeonline.com.twpki.google.com poshtestgallery.cloudapp.netpractivate.adobepractivate.adobe.compractivate.adobe.ipppractivate.adobe.newoapractivate.adobe.ntp%!prd-priconne-redive.akamaized.net#preprod-publicca.googleapis.com.*production-openaicom-storage.azureedge.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.net$ public-us-pingsx.api.clonoth.compublicca.googleapis.compush-apple.com.akadns.netpvr-hamivideo.cdn.hinet.netqualcomm.sc.omtrdc.netreddit.map.fastly.netrink.hockeyapp.netrtm.tnt-ea.comsa78gs.wpc.edgecastcdn.netscc.ott.hinet.netscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk!scholar.googleusercontent.comscholar.l.google.com
sentry.ppy.sh%!servd-anthropic-website.b-cdn.net"sni1dcb6gl.wpc.edgecastcdn.netspectator.ppy.shspotify.com.edgesuite.netspotify.map.fastly.netspotify.map.fastlylb.netssl-lvlt.cdn.ea.com"static-hamivideo.cdn.hinet.net3/statics-marketingsites-eas-ms-com.akamaized.net3/statics-marketingsites-eus-ms-com.akamaized.net40statics-marketingsites-wcus-ms-com.akamaized.net steambroadcast.akamaized.netsteamcdn-a.akamaihd.net!steamcommunity-a.akamaihd.netsteammobile.akamaized.netsteampipe-kr.akamaized.net#steampipe-partner.akamaized.netsteampipe.akamaized.netsteamstore-a.akamaihd.net#steamusercontent-a.akamaihd.net"steamuserimages-a.akamaihd.netsteamvideo-a.akamaihd.nett21.nikkei.co.jpt21ipau.nikkei.co.jp%!teamviewer.com.cdn.cloudflare.nettesla-cdn.thron.comtmdb-image-prod.b-cdn.net&"tvcastlive-hamivideo.cdn.hinet.net,(ubisoft-orbit-savegames.s3.amazonaws.com,(ubisoft-uplay-savegames.s3.amazonaws.comubistatic3-a.akamaihd.net#ulrichsweb.serialssolutions.com$ upos-hz-mirrorakam.akamaized.net!ve-dash-uk-live.akamaized.net%!ve-uhd-push-uk-live.akamaized.netvenmo.s3.amazonaws.com*&videos-rockstargames-com.akamaized.netvmware.tt.omtrdc.netvod-abematv.akamaized.net"vod-dash-uk-live.akamaized.net"vod-dash-ww-live.akamaized.net!vod-hls-uk-live.akamaized.net!vod-sub-uk-live.akamaized.net#vod-thumb-uk-live.akamaized.net#vod-thumb-ww-live.akamaized.net&"vs-cmaf-push-uk-live.akamaized.net'#vs-cmaf-pushb-ww-live.akamaized.net%!vs-hls-push-uk-live.akamaized.net&"vs-hls-pushb-uk-live.akamaized.net+'vscode-sync-insiders.trafficmanager.net"vscode-sync.trafficmanager.net vscode.blob.core.windows.netvscode.search.windows.net vsmarketplacebadge.apphb.com#weblive-hamivideo.cdn.hinet.netwetv.qq.comwidgets.stripst.com
wip.adobe.comwip1.adobe.comwip2.adobe.comwip3.adobe.comwip4.adobe.comwrds-www.wharton.upenn.eduwwis-dubc1-vip100.adobe.comwwis-dubc1-vip101.adobe.comwwis-dubc1-vip102.adobe.comwwis-dubc1-vip103.adobe.comwwis-dubc1-vip104.adobe.comwwis-dubc1-vip105.adobe.comwwis-dubc1-vip106.adobe.comwwis-dubc1-vip107.adobe.comwwis-dubc1-vip108.adobe.comwwis-dubc1-vip109.adobe.comwwis-dubc1-vip110.adobe.comwwis-dubc1-vip111.adobe.comwwis-dubc1-vip112.adobe.comwwis-dubc1-vip113.adobe.comwwis-dubc1-vip114.adobe.comwwis-dubc1-vip115.adobe.comwwis-dubc1-vip116.adobe.comwwis-dubc1-vip117.adobe.comwwis-dubc1-vip118.adobe.comwwis-dubc1-vip119.adobe.comwwis-dubc1-vip120.adobe.comwwis-dubc1-vip121.adobe.comwwis-dubc1-vip122.adobe.comwwis-dubc1-vip123.adobe.comwwis-dubc1-vip124.adobe.comwwis-dubc1-vip125.adobe.comwwis-dubc1-vip30.adobe.comwwis-dubc1-vip31.adobe.comwwis-dubc1-vip32.adobe.comwwis-dubc1-vip33.adobe.comwwis-dubc1-vip34.adobe.comwwis-dubc1-vip35.adobe.comwwis-dubc1-vip36.adobe.comwwis-dubc1-vip37.adobe.comwwis-dubc1-vip38.adobe.comwwis-dubc1-vip39.adobe.comwwis-dubc1-vip40.adobe.comwwis-dubc1-vip41.adobe.comwwis-dubc1-vip42.adobe.comwwis-dubc1-vip43.adobe.comwwis-dubc1-vip44.adobe.comwwis-dubc1-vip45.adobe.comwwis-dubc1-vip46.adobe.comwwis-dubc1-vip47.adobe.comwwis-dubc1-vip48.adobe.comwwis-dubc1-vip49.adobe.comwwis-dubc1-vip50.adobe.comwwis-dubc1-vip51.adobe.comwwis-dubc1-vip52.adobe.comwwis-dubc1-vip53.adobe.comwwis-dubc1-vip54.adobe.comwwis-dubc1-vip55.adobe.comwwis-dubc1-vip56.adobe.comwwis-dubc1-vip57.adobe.comwwis-dubc1-vip58.adobe.comwwis-dubc1-vip59.adobe.comwwis-dubc1-vip60.adobe.comwwis-dubc1-vip61.adobe.comwwis-dubc1-vip62.adobe.comwwis-dubc1-vip63.adobe.comwwis-dubc1-vip64.adobe.comwwis-dubc1-vip65.adobe.comwwis-dubc1-vip66.adobe.comwwis-dubc1-vip67.adobe.comwwis-dubc1-vip68.adobe.comwwis-dubc1-vip69.adobe.comwwis-dubc1-vip70.adobe.comwwis-dubc1-vip71.adobe.comwwis-dubc1-vip72.adobe.comwwis-dubc1-vip73.adobe.comwwis-dubc1-vip74.adobe.comwwis-dubc1-vip75.adobe.comwwis-dubc1-vip76.adobe.comwwis-dubc1-vip77.adobe.comwwis-dubc1-vip78.adobe.comwwis-dubc1-vip79.adobe.comwwis-dubc1-vip80.adobe.comwwis-dubc1-vip81.adobe.comwwis-dubc1-vip82.adobe.comwwis-dubc1-vip83.adobe.comwwis-dubc1-vip84.adobe.comwwis-dubc1-vip85.adobe.comwwis-dubc1-vip86.adobe.comwwis-dubc1-vip87.adobe.comwwis-dubc1-vip88.adobe.comwwis-dubc1-vip89.adobe.comwwis-dubc1-vip90.adobe.comwwis-dubc1-vip91.adobe.comwwis-dubc1-vip92.adobe.comwwis-dubc1-vip93.adobe.comwwis-dubc1-vip94.adobe.comwwis-dubc1-vip95.adobe.comwwis-dubc1-vip96.adobe.comwwis-dubc1-vip97.adobe.comwwis-dubc1-vip98.adobe.comwwis-dubc1-vip99.adobe.com!www-cdn.icloud.com.akadns.net"zeenews-fonts.s3.amazonaws.comztedevices.com adult
+zapposyoutube
+yandexyamaxun yahooxn--qcka1pmcxn--jlq480n2rgxn--flw351e
+xn--cg4bki
xn--cckwcxetdxboxwindowsweatherchannelweatherwalmart volvotheguardian
+targetsonysoftbank skypeskyshowtimesamsungpornplaystation
panasonic
+oracle
+officenikenico nexusmitmini
microsoft
mcdonaldsmcd
+kindlejava intelimdbibmhsbchotmailhangoutguge gucci
+googlegooggoogodaddy gmailglegbizfox
+flickrdelldclk cisco
+chromecerncbs canonbridgestonebmw
bloombergbingbbc azureaws appleand
+amazonjuggsjoy.combdsm-mov.net1337x.gd1337x.is1337x.st1337x.to1337x.tw
+1337xto.to
1337xx.to138.com13mei13.top
+140033.xyz
+141-hk.com141hongkong.com
+141jav.com
141jj.com141tube.com159i.com
+161sex.combrowserleaks.org
+ipleak.net16885858.com
+168sex.top16fhgdty.xyz16honeys.com170.icu
171xx.com
173ng.com177pic.info177picyy.com
179na.com17lu.xyz17mimei.club17mimei.com17supxxx.com
+17t17p.com18-teen-porn.com18-teen-xxx.com188channel.com18acg.us18av.pro
18avx.com18board.com18board.info18comic-god.cc18comic-god.club18comic-god.xyz
+18comic.cc18comic.company18comic.org18comic.vip18commic.com18doujin.com18doujinshi.xyz18eighteen.com18exgfs.com
18fby.com
+18h.tv18hmanga.click18hmanga.com18insta.com
+18j.tv
18jms.com18novel.xyz18onlygirls.com
18p2p.com18porncomic.com
+18porno.tv
+18push.com18qt.com
18sex.org
+18tube.xxx18virginsex.com
18ww.life
+18yiren.tv191porn.com
+1949er.org1984bbs.com1984bbs.org
+zzycdz.com1991way.com
+1992qq.xyzzzux.com1998cdp.org1bao.org1bigclub.com1bokeponline.top1classtube.com
+zzgays.com1drv.com1drv.ms
1dumb.com
1e100.net1eew.com1inch.io
+1jjdg2.vip
+1lib.cloud1lib.cz1lib.domains1lib.education1lib.eu1lib.limited1lib.pl1lib.to1lib.tw1mobile.com
+1mobile.tw1monsterbeatsbydreus.com
1pondo.tv
1pornlist.com
1thek.com
+zzdh99.comzzdh808.com
1ucrs.com1watchmygf.com1xbet.cm
+zzdh77.com2-hand.info2000fun.com2008xianzhang.info2013beatsbydrdreonline.com2013beatsbydrdreshop.com2013beatsbydreshop.com2013beatshdcybermonday.com2013cheapestbeats.com2013newbeatsworld.com2013pascherbeatsbydre.com2014cheapbeatsbydre.com2017.hk
2019baidu.xyz2021hkcharter.comzzdh.ws
2047.namezzdh.runzzdh.pw20thcenturystudios.jp20yearsoffea.com
+21andy.com21centuryaccess.com21heise360dh.cc
21hub.com
+21join.com21naturals.com
+21pron.com
21sextury.com21vv.cczzdh.cc
+233abc.com2371tom.com
+24hjav.com24hrs.ca
+24porn.com
+24porn.pro24smile.org25u.com265.com265sdwe3.com
+2789av.com27mmwmmw.top2adultflashgames.com
2beatsdre.com2beeg.me
2bit8.com2buybeatsbydre.com
+2ch.hk2ch.net
2chav.com
2dgen.com2drdrebeats.com2gayboys.com
+2k.com2kcoretech.online2kgames.com2lib.org
2lipstube.com2mdn-cn.net2mdn.net2o7.net2shared.com
2waky.com3-a.net30boxes.com30plusgirls.com
315lz.com32bm.cc
32red.com35s4.com360autodesk.com360nexus.com360nexus.net
+360plm.com360trailers.com365buymy.com
+36717.info
+36rain.com
+3789av.com39group.info3a5a.comzzdh.biz3animalsextube.com
3arabporn.com3arabtv.com3boys2girls.com
3d-comics.com3d-december.com
+zzcloud.me3d-game.com3d-toon.com
+3d-xxx.com3dadultgames.net3danimeworld.com3ddecember.com
3december.com3decemberonline.com3devilattack.net3dfuckhouse.com3dhentai.tv
3dhentaix.com3drules.com3dsexgames.biz3dsexmovies.biz
3dsexplay.xyz3dsexvilla.com
+3dsexy.net3dstudio.com
3dtin.com
3dtin.net3go.fun3hentai.net3lib.net
3movs.com
3movs.xyz
+3naked.com
3pornhere.com3pornstarmovies.com
3proxy.ru3ren.ca
zzcartoon.com3tui.net3xplanet.com3xplanet.net3xplanetimg.com3xxx.pro
404museum.com40momporntube.com40shopping.com40somethingmag.com41maonn.com43110.cf
+444.coffee
+445gei.com
+445jun.com
+445nan.com4550.fun
+466453.com47gyosei.jp
47news.jp4beatsbydre.com4bluestones.biz4cdn.org
4chan.com
4chan.org4channel.org
4club.com4dq.com4ebaytraders.com4ertik.live
+4ertik.one4everland.io4everproxy.com
zyzc9.com4greedy.com4gtv.tv
+4hu.tv4irc.com
+4kporn.xxx4ksex.me4kup.net
4mydomain.com4myminicard.com
4pcdn.org4pig.com
+4plebs.org
4porn.com
+4porn4.com4pu.com
4rbtv.com4shared.com4sqi.net
4tube.com
4tubefree.net4u4c.com5-d.com
500caocao.com50dh.app50plusmilfs.com 51.ca
51cg1.com
51dh.site
51jav.org51luoben.com51luoli.info51mh.app51pincha.cc
51tuqiang.com520aa.tv520avtv.com5278.cc5299.tv52av.be52av.com52av.one52fuliji.cc
+52hyse.com
531tr.com53world.com53worldsweeps.com54647.global54647.io54647.online
54647.org
+55dndn.com
567321.online
568xe.com
zyxel.com
+58avgo.com592r.com
+59mvmv.com5aimiku.com5axis-machining.com5beatsbydre.com5ch.net5fang.cc5i01.com5isotoi5.org5lml.com5maodang.com
+5mb48g.com5mo.fun5q5zu9f1.me 5w.ag6-ar.com60plusmilfs.com61jxbs42.xyz62fh1bnj.me
+634.tv63i.com64museum.org64tianwang.com
+64wiki.com 66.ca
666kb.com
+66wwmm.com67maoab.com69-sexgames.com69av.one
69bag.xyz69dys.pw69femdom.com
69flv.com69games.xxx69gayporno.com69hongdq6.buzz69hongdq7.buzz
+69loli.com69luolie.com69re.net69story.com
69tubesex.com69vj.com69xporn.com69xx.one69xx560.xyz
+6arabs.com6do.news6e8xr2gk.me6japaneseporn.com6kea.com6mature9.com
6neek.com
6park.com6parkbbs.com6parker.com
6parknews.com6sextube.com
+6twseb.com6xxxvideos.com720video.tv
721av.com
748av.com
+75m.co7719.me
777tv.net777xporn.com77maott.com7capture.com7cow.com
+7mm.tv7mmtv.sx7mmtv.tv
+7tb.cc8-d.com8008206616.com
8111y.top81jia.tv81tower.com
+82mvmv.com85cc.net85cc.us85st.com
+85tube.com
+8664av.com
+881903.com888.com888poker.com
+88gals.com
88kkn.com88manhua.top88square.com
89-64.orgzyns.com
+89.com8964museum.com
8kcosplay.com8kpornvids.com
+8muses.com
8muses.io
+8muses.xxxzynamics.com8teenxxx.com8thstreetlatinas.com8xxx.net8z1.net9001700.com
908taiwan.org90seconds.asia91avfuli.com
91beiyong.com91cy.app
91dy.club
+91fans.org91gay.me91jinman.com91md.me
91moxiong.com91oo.xyz
+91porn.com91pornplus.com
91porny.store91qk41rf.com91quanji.com91rb.com91rb.net91se.fun91sesex.xyz
91sew.xyz91sew40.buzz91vhome.com
+91vps.club920share.com
921bb.com
922tp.com928.plus
+92ccav.com
92hm.life92hm.top941tube.com
+9527.rocks9550.fun978.life97dounai.top991.com99btgc01.com
99cn.info
99quse.cc99re.com99thz.cc
99thz.com
9anime.cz
9anime.id
9anime.to
9anime.ws9bis.com9bis.net
+9cache.com
9cao9.com9cdn.net9gag.com
+9hentai.ru
+9hentai.to9hentaiz.com9k6v4y.cyouzynaima.comzwtvusa.comzweiporn.com
9tak-nav.buzz9to5google.com9to5mac.com9to5terminal.com9to5toys.com9xav.cc
+9xlove.xyz
+9zipai.neta-hentai.tva-msedge.neta-normal-day.comzvereff.coma-teenz.com
+a0pple.neta1av.xyza2z.com
zuola.com
a7sex.com
+aa77kk.com
+zuobiao.meaaagradeheadphones.com
+aaapp.cyouaabb1802.comaabb1803.comaacrjournals.org
aadmv.comaaex.ukaalah.meaamacau.com
+aanaan.comaapl.twaaplimg.com
+zuo.la
+zunked.comaave.comaavs.xyzzukunftswerkstatt.dezuckerberg.netzuckerberg.comabbywintersfree.comabc-studios.comabc.com
+zteman.netzsuxtx-ktv.shopabc.xyzabcheadphones.com
abchinese.comabclider.comabclite.net
+zsrhao.comzspeeder.mezsh.org
+zqqpwz.com
+zpn.imabeatsbydrdre.comabebooks.comabellalist.comabema-tv.comabema.ioabema.tvzozotown.comzorrovpn.comzorglist.com
zopim.com
+zophar.net
+zoozle.netzoozhamster.comzooyouporn.comzooxxxsexporn.redzootube1.comzootool.comzooskoolvideos.com
zoosexnet.comabgsp1.buzzzoosexfarm.comzooredtube.comabigass.comzooporno.biz
zoopornmd.com
zooporn.video
ablmm.comablwang.comaboluowang.comabout.mezooporn.shikshaaboutamazon.comzooporn.proaboutamazon.deaboutamazon.esaboutamazon.euaboutamazon.fraboutamazon.inaboutamazon.itaboutamazon.jpaboutamazon.plaboutfacebook.comaboutgfw.comaboutmcdonalds.comaboutporno.netaboutyourmini.comabow.jpzoophilist.netzoomobileporn.comabs.eduabsoluporn.comabsolutewhores.comac-pocketcamp.com ac.irzoomingin.tvzoom.uszoom.com
+zoohun.comzoogvpn.comzoofilianet.comzoofiction.comacademynetriders.comzoo-xnxx.com
zoo-tube8.com
zoo-porno.biz
acast.comaccbusiness.comzoo-hardcore.com
acces-vod.comzonghexinwen.netzonghexinwen.comzonaeuropa.com accessfacebookfromschool.com
+zomobo.netzoig.comzohowebstatic.comzohouniversity.com
zohostatic.in
accim.orgaccount-paypal.infoaccount-paypal.netaccount-paypal.orgzohostatic.comaccountkit.comaccountpaypal.comaccountpaypal.netaccountpaypal.orgzohoschools.comzohopublic.comaccuweather.comaccv.es
+acdocs.comzohomerchandise.comacebooik.comacebook.comzohomeetups.comacer-group.comzohocdn.comacer.comaceros-de-hispania.comzoho.inzoho.eu
+acevpn.comacg18.me
+acgbox.org
acgcf.com
acgdg.com
acgdv.comacgfabu.com
+acgfbw.com
acgkj.comacgnmanhua.comacgnx.seacgvipss.com
acgwr.com
+acgww.cyou!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.comachievementanalytics.comacjj.net
+aclweb.orgzoho.comacm.orgacmedia365.com
+zodgame.usacmetoy.comacmvalidations.comacmvalidationsaws.com
zndsk.comzlibcdn2.comzlibcdn.com
+acpica.com
zlib.lifeacrobat.comacs.org
zkaip.comactalis.com
+actalis.itactfortibet.org
zishy.comzippyshare.com
+ziporn.comzipcine.comactiveteachonline.comactivpn.com
zinio.comzingtruyen.net
+zind.cloud
+zim.vnaculo.usad69.comzillionk.com
zigzag.kr
ziddu.comzibacity.comzi.mediazhuzhushipin-app.comadanaatikhaber.comzhuichaguoji.orgadaptivecards.io
zhuatieba.comadbecrsl.com
adbkm.comadblockplus.org
adcex.com
adcommerce.tvaddictedtocoffee.deaddison-wesley.chzhuangbi.meaddthis.comaddthiscdn.comaddthisedge.comaddtoany.comaddyoutube.comadelaidebbs.com
+zhtv01.comzhreader.comadgoogle.netadguard-dns.comadguard-dns.ioadguard-vpn.comadguard-vpn.onlineadguard.appadguard.comadguard.info
+adguard.ioadguard.orgadguardvpn.comadhelpnews.com
adidas.at
adidas.be
adidas.chzhoushuguang.com
zhongmeng.org
+adidas.comzhongguotese.netzhongguorenquan.org
adidas.cz
adidas.de
adidas.dk
adidas.hu
adidas.ie
adidas.it
adidas.nl
adidas.pl
adidas.ru
adidas.se
+adinst.comzhongguo.cazhinengluyou.com
+admeld.comadmob-cn.com
admob.comadobe-aemassets-value.comadobe-audience-finder.com"adobe-video-partner-finder.com
adobe.comadobe.ioadobe.lyadobeaemcloud.comadobeaemcloud.netadobeawards.comadobecc.comadobecce.comadobeccstatic.comadobecontent.ioadobecreativityawards.comadobedc.net
adobedemo.comadobedtm.comadobeexchange.comadobeexperienceawards.comadobegov.comadobehiddentreasures.comadobejanus.comadobeku.comadobelanding.comadobelogin.com
adobeoobe.comadobeplatinumclub.com
adobepress.chadobeprojectm.comadobesc.com
adobesign.comadobesigncdn.comadobespark.comadobess.comadobestock.comadobetag.comadobetarget.comadobetcstrialdvd.comadobetechcomm.comadobetechcommcallback.comadobetechcommdemo.comadobexdplatform.com
adorevids.comzhimeishe888.com
adporn.ccadpornu.xyz
zhenxiang.bizzhenlibu1984.comads-twitter.com
zhenlibu.infoadsense.com
adskcloud.com
adskcloud.netadskeng.netadskengineering.net
adskengpp.net
adskengpr.net
adtcc.com
+adtidy.net
+adtidy.org
12vpn.comzhengwunet.orgadult-h.comadult-home-videos.comadult-list.comadult-sex-games.comadult-web-site.net
zhengjian.orgzhenghui.orgadult3dcomics.comadult3dfantasycomics.comadult3dporno.comadult3dtoons.comzhanlve.orgzhangtianliang.comadultartsites.comadultbay.orgadultblogranking.comadultblogtoplist.comadultcamslover.comadultclinic.jpadultdeepfakes.comadultdvdmarketplace.comadultdvdtalk.comadultempire.com
adultepic.comadulterfree.comadulters.org
zhangboz1.xyzadultfilmdatabase.comadultfreex.comadultfriendfinder.comadultgamereviews.comadultgames.games
adultgames.meadultgames18.comadultgamesapk.comadultgamescollector.comadultgameson.comadultgamesportal.comadultgamestop.comadultgamingroom.com
adultgeek.netadulti01.comadultinfojpn.comadultism.com
adultkeep.net
zhangboli.netadultlister.comadultmagazinespdf.com
+adulto.vipadultpornvideos.netadultrental.comadultsexgame.bizadultsexgames.bizadultsextoys.com
adulttime.comadulttoontube.comadultvideodump.comadultvideotop.comadultvirtualworlds.netzhanbin.netzhainanjidid.topzhainanjidi.xyzzhaimankan.comadvancediddetection.comzh99.net
+zgzcjj.net
+zgsddh.comadvanscene.com
+zfreet.comadventofcode.comadventuresbydisney.com
advertfan.comadvertisercommunity.com
adx.promo
+zeutch.comzettai-ero.com
+ae.org
aeasyshop.comaebn.comzert.ch
+zeronet.ioaecexcellence.comaei.org
zerohedge.comzerochan.netaenhancers.comzeriamerikes.comaerogardcn.com
zeplin.ioaerospace-cadcam.comaerospace-design.com
+zeplin.dev
+zenodo.orgaesworkshops.comaex.comzenmate.comzenlesszonezero.com
+af.mil
afantibbs.comzengjinyan.orgafappyending.comafewmomentswith.comaffect3dstore.comaffirmtrust.comzendesk.com
+afkv28.com
aflamporn.comaflamsex.netaflamsexhd.comafp.comafpforum.comafr.com
afreecatv.comafriboyz.comzencoder.com
+zencdn.net
+zen8ok.xyz
zello.comaga-expo.comagag.twagdbank.com
+age.tv
agedm.app
agedm.orgagedm.tvagefans.com
+agemys.orgagendaweek.com
zeitworld.com
agnesb.frzeit.shagoogleaday.comagrd.iozeit.cozeit-world.orgzeit-world.netzeit-world.comagro.hk
zeeuk.com
zeetv.comagu.org
agzy1.com
ah-me.comzeenite.comahcathyxxx.comzeenews.comzeeentertainment.com
ahegao.online
ahentaitv.com
+zeebiz.comzeebioskop.com
ahlxs-me.buzzahlxsdh.sbsahmia.fiahorsecock.comzee5.tvahpornogratuit.comahpornotube.comzee5.inzee5.comahsexfilme.comahswingerporno.com
+ahtops.comahtranny.comzee.comahvideosexe.com
+ahxxx.club
+ai-kan.net
+ai-wen.netzdusercontent.com
+ai.com
zdnet.comai7995.siteai91porn.ccaiaa.org
+aiasahi.jpzdassets.com
zctb.buzzaimei133.com
+zbporn.comzb.live zb.io
+zb.com
+zb.appzazzybabes.comzavat.pw
+zattoo.comzatrahal.onlineaimsciences.orgaipa553.comaiph.netair-nike-shoes.com
air-watch.comairasia.comairav.cc
+airav.wikiairconsole.com
zapto.orgairgonetworks.comairgunstudio.comairhorn.solutionsairhornbot.com
+airiti.comairitilibrary.com
airmax360.com
+airmay.comairport-gov-cn.comairport.brusselsairport.com
+airport.euairsextube.comairsupportapp.comairtunes.com
airtunes.infoairtunes.net
+airvpn.orgairwatchexpress.comairwatchqa.com
+airwick.at
+airwick.be
+airwick.ca
+airwick.ch
+airwick.cl
+01.org
zapper.fi
+zaozon.com
zaobao.sgairwick.com
+zaobao.com
+zannel.com
+zamimg.com
+zalmos.com
+airwick.cz
+airwick.de
+airwick.dk
+airwick.es
+airwick.fi
+airwick.fr
+airwick.hr
+airwick.hu
+airwick.ie
+airwick.it
+airwick.jpairwick.net
+airwick.nl
+airwick.no
+airwick.pl
+airwick.pt
+airwick.ro
+airwick.ru
+airwick.se
+airwick.si
+airwick.sk
+airwick.tv
+airwick.usairwickarabia.com
aisejushi.com
aisex.comaishegw.comzacebook.comaiv-cdn.netaiweiwei.comaiweiweiblog.com
aiwucm-us.sbsaixingge2.cc
+aizyk.buzz
aizyk.xyz
+ajplus.net
ajsjx.com
+ajtalk.comak1.net
+aka-ai.com
+aka-ai.net
+aka.ms
akacrypto.netakadeem.net
akademiye.org
+akadns.com
+akadns.netakadns6.net
+akaeai.com
+akafms.net
+akagtm.orgakahost.net
+akaint.netakam.net
+akamaa.com
+akamah.comakamai-access.comakamai-access.netakamai-cdn.com akamai-platform-internal.netakamai-platform-staging.comakamai-platform.netakamai-regression.netakamai-staging.netakamai-sucks.netakamai-thailand.comakamai-thailand.netakamai-trials.comza77.xyz
+akamai.netakamaiedge.netakamaientrypoint.netakamaietpcnctest.com#akamaietpcompromisedcnctest.com'#akamaietpcompromisedmalwaretest.comakamaietpmalwaretest.comakamaietpphishingtest.comakamaihd-staging.netakamaihd.comakamaihd.netakamaimagicmath.netakamainewzealand.comakamaiphillipines.comakamaiphillipines.netakamaisingapore.netakamaistream.netakamaitech.comakamaitech.netakamaitechnologies.comakamaitechnologies.netakamaized-staging.net
akamaized.netakamaizercentral.com
+akamak.com
+akamam.com
+akamci.com
akami.com
akami.net
+akamii.com
+akamqi.comakasha.world
akastream.com
akastream.net
+akatns.netakiba-online.com
akiba-web.comakow.orgakthelp.comal-islam.com
al-qimmah.netalabout.comalanhou.com
alarab.qaalasbarricadas.orgalbagals.com
albastudio.coalbeats.comz676869.comalchemysynth.com
+z5.com
+z5.app
alexa.comz18r.comalexanderstreet.comalexlur.orgz18r.co
z00.world
alfera.in
alfera.my
alforattv.netalhayat.com
alhs.linkalhs.xyz
alias.comaliasadvantage.comaliasimaginationsengine.comaliasple.comaliasshowcase.comaliassketchbook.comaliassketchbookpro.comaliassystems.com aliasvisualizationstudio.comaliaswavefront.comz-library.sealibabacloud.com
z-lib.orgyzzk.comyzld188.top
yysub.netyyjlymb.xyzyyii.orgalicloud.comaliengu.com
aliexpress.rualihealth.hk
alipay.hkalipaymo.com
yyfb.cyou
alive.baraliveipc.com
aliveitsm.comaliveprofiler.comalivercm.comaliverewind.com
alivertsm.comalivevm.com
alivevmax.comalivevue.com
aljazeera.com
aljazeera.netalkasir.comall-sex-links.comall3dsexpics.comall4mom.orgallcoin.comallconnected.coyy8y.comalldrawingshere.comalldrawnsex.comallervpn.com
+allfet.netallfinegirls.comallgirlmassage.comallgirlsallowed.orgallgravure.com
allhen.onlineallhorsesex.comyy7y.comyy55.tvyx51.netywpw.comalliancesages.comallinfa.comallinternal.comalljackpotscasino.comalljapanesepass.com
allmomsex.comallmovie.com
ywoos.com
allover30.comallowed.orgallpasswords.comallporncomic.comallpornsites.netallpornsitespass.comallspyclips.comallswingersclubs.orgallthefallen.moeyvesgeleyn.comalmasdarnews.com
+yuvutu.comalmostmy.com
yusjb.com
alohatube.comalotporn.com
alphabet.asiaalphabet.atalphabet.bealphabet.bizalphabet.chyusercontent.comyunlaopo.netyunlaopo.comalphabet.comyunlaopo.ccyunchao.netyulghun.comyuenuge18.ccyuenuge113.xyzalphabet.czalphabet.dealphabet.esalphabet.eualphabet.fr
alphabet.infoalphabet.jpalphabet.ltalphabet.lualphabet.lvalphabet.mxalphabet.noyuanzhengtang.orgalphabet.plalphabet.ptalphabet.ukalphabet.usalphabetfinance.netalphaporno.comyuanming.net
ytimg.comalphera-finance.in
+alphera.caytht.net yt.bealphera.com
+ysx-mm.com
+ysporn.com
yskg-ber.buzz
+alphera.de
+alphera.es
+alphera.ie
+alphera.in
+alphera.myalphera.netysg-link.sbsalpherafinancialservices.esalpherafinancialservices.inalpherafs.caysav184.xyz
+ypncdn.com
+ypmate.comalpherafs.iealpherafs.inalpherafs.myalpinelinux.org
+yoyoav.netyouyu.services
+youxu.infoyoux.xxxyouwuss.comalt.com
+altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net
+youwin.comalternate-tools.comalternativeto.netyouversion.com
altmetric.comyoutubemobilesupport.comyoutubekids.comaltporn.net
+altrec.comalvinalexander.comalwaysdata.comalwaysdata.net
alwaysvpn.comyoutubego.inyoutubego.id
youtubego.comamaaozn.comamabitch.comamakings.comamamanualofstyle.comamandalist.com
+amanmi.comamapornofilme.comamateur-cougar.comamateur-exhibitionist.orgamateur-fetish.comamateur-gallery-post.comamateur-home-sex.comamateur-porn-clips.comamateur-porn-tube.netamateur-pussies.comamateur-threesomes.comamateuralbum.netamateuranalporn.comamateuranalvideos.comamateurarchiver.comamateurbdsmporn.comamateurblondegirls.comamateurblowjobporn.comamateurcool.comamateurcuckoldporn.comamateure-xtreme.comamateurest.comamateurgalore.netamateurgirlfriends.netamateurhomevids.comamateurhousewifefuck.comamateurmommymovies.comamateuroldsluts.comamateurpages.comamateurporn.photosamateurpornhouse.comamateurpornonly.comamateurpornsexvideos.comamateurs-fuck.comamateurs-gone-wild.comamateursecrets.netamateursexpussy.comamateursexstart.nlamateurslovesporn.comamateursvid.comamateurswingersmovies.comamateurthreesomeporn.comamateurwifefuck.comamateurwifetits.comamateurwifevideos.comamateurwivesvideos.com
amateurxx.orgamatorialesesso.comamatporn.comamatura.comamazingcuckold.com 12joursdecadeauxdeitunes.comamazon-fashions.comamazon-jp-recruiting.comamazon-lantern.comamazon-launchpad.com
amazon.ae
amazon.cayoutubegaming.comyoutubefanfest.com
+amazon.comyoutubeeducation.com
youtubecn.comyoutubecisco.com
+youtube.vn
amazon.de
+amazon.dev
amazon.es
amazon.fr
amazon.in
amazon.itamazon.jobs
amazon.jp
amazon.nl
+amazon.red
amazon.sgamazonalexavoxcon.comamazonauthorinsights.comamazonaws-china.com
amazonaws.biz
+youtube.uy
amazonaws.comamazonaws.info
amazonaws.net
amazonaws.orgamazonaws.tvamazonbusiness.orgamazonbusinessblog.comamazondevicesupport.comamazonfctours.comamazonianblog.comamazonimages.comamazonlaunchpad.com!amazonliterarypartnership.comamazonlumberyard.wang
amazonpay.comamazonpay.inamazonprimevideos.com
amazonsdi.com
amazonses.comamazonstudiosguilds.comamazontrust.comamazonvideo.ccamazonvideo.comamazonvideodirect.comamazonworkdocs.com
+youtube.ugamc.comamcn.comamcnetworks.comamcplus.comamd.comamdfanstore.com
+youtube.uaameba.jpamebame.com
amebaownd.comamebaowndme.com
ameblo.jp
+youtube.tv
+youtube.tnamericangreencard.comamericanunfinished.comamericasvoice.newsamerikaninsesi.comamerikaninsesi.orgamerikaovozi.comamerikayidzayn.comamerikiskhma.com
+youtube.svyoutube.soy
+youtube.sn
+youtube.sk
+youtube.si
+youtube.sgamiblockedornot.comamigobbs.net
+amiibo.comamitabhafoundation.us
+youtube.seamlg.ioamnesty.org
+youtube.sa
+amnesty.twamnestyusa.orgamnyemachen.orgamodoll.com
+youtube.ruamoiist.comamourangels.comamp.devamplifi.comamplifyapp.comamplifyframework.comampproject.comampproject.netampproject.org
+youtube.rsams.orgams02.spaceamsterdamhotescort.comamsterdamluxescort.comamtb-taipei.orgamytele.com
amzn.asiaamzn.comamzn.to
amznl.comanacams.comanaconda.cloudanaconda.comanaconda.org
+youtube.ro
+anal-f.netanal-pantyhose.com
anal.casa
+anal.mediaanalamateursex.comanalcamshow.comanaldin.comanalfuckvideo.comanalhomeporn.comanallivecams.comanalpornhouse.comanalpornonly.comanalpornosex.comanalqts.comanalsaga.comanalscreen.comanaltime.organalvids.comanalytictech.com
anandtech.com
+anatomy.tvanb.organcensored.com
anchor.fmanchorfree.com
+youtube.qa
+youtube.ptancsconf.org12diasderegalosdeitunes.peandfaraway.net
+youtube.pr
+youtube.plandroid-x86.organdroid.comandroidauthority.comandroidify.comandroidplus.coandroidpolice.com
androidtv.comandygod.comandysparis.comanfutong.com
angel-gto.com
+youtube.pkangela-merkel.de
angelbeats.jp
angelfire.comangelweb.jp
+youtube.ph
+youtube.pe
+youtube.pa
+angola.organgulardart.org
angularjs.org
+youtube.no
+youtube.nlanibooru.com
+youtube.ni
+anidom.com
+anigema.jp
+anilos.comanimal-hentai.comanimal-porn.netanimalforsex.comanimalincum.com
animalporn.meanimalpornxxx.meanimalsporn.netanimalsporn.tvanimalzoosex.meanime-pictures.net
anime-tube.pwanimecrazy.netanimedao-tv.comanimegal.netanimehentaihub.comanimeidhentai.comanimepornhd.comanimesex.meanimesexhq.comanimestigma.comanimezilla.comaniscartujo.comanistreaming.xyzankarazirvesi2018.com
+youtube.ngannamilk.comannatam.com
+youtube.my
+youtube.mx
annstores.netannualpelvicexam.comannualreviews.org
+anobii.com
+anon-v.com
+anon-v.lol
anonfiles.comanontext.comanonymitynetwork.comanonymizer.comanonymouse.org
+anpopo.com
+youtube.mnanswering-islam.org
+youtube.mk
+youtube.meantarvasnaclips.comantarvasnax.com
+youtube.md
+youtube.maanthemgame.comanthemthegame.comanthonycalzadilla.com
anthropic.com
+youtube.lyanti1984.comantichristendom.com
+youtube.lv
+youtube.lu
+youtube.lt
+youtube.lkantiwave.net
anudetube.comanybunny.organybunny.tvanydesk.com
anyhentai.comanyporn.com
anypornhd.comanypornsexxx.com
+anysex.comanyshemale.com
anyxxx.me
+anyxxx.proao3.org
+youtube.la
+youtube.kz
+youtube.kraoc.cat
+youtube.jpaofriend.com
+youtube.jo
+aojiao.orgaokwholesale.net
+youtube.itaomedia.orgaomiwang.com
+youtube.is
aorus.com
+aoxx69.net
+youtube.iq
+youtube.in
+youtube.ie
+youtube.hu
+youtube.hr
+youtube.hk
+youtube.gt
+youtube.gr
+youtube.ge
+youtube.fr
+youtube.fi
+ap.org
ap0le.comapa.org
+apache.orgapartmentratings.comapartments.comapat1989.orgapetube.comapexlegends.com
+youtube.es
+youtube.eeapi-extractor.com
+api.ai
+youtube.dk
+youtube.deapi.news
apiary.io
+apibay.org
+youtube.cz
+apigee.com
apina.biz
+youtube.cr
+apisof.net
+apk-dl.comapk.supportapkcombo.com
apkmirror.comapkmonk.com
+apkplz.comapkpure.comapkpure.netaple.com
aplestore.comaplleipods.comyoutube.comaplusvpn.com
+apnews.com
apole.com
+youtube.co
+youtube.cl
+youtube.chapornotube.netaporntv.comapornvideo.comapp-dynamics.comapp-measurement-cn.comapp-measurement.comapp-store.wangyoutube.cat
+youtube.ca
+youtube.by
+app0le.com
+app756.comappbrain.comappbridge.caappbridge.ioappbridge.itappcenter.msappcloud.comappdomain.cloudappdownloader.net
+youtube.boappdynamics.comappdynamics.deappdynamics.frappdynamics.infoappdynamics.jpappdynamics.orgappe-store.comappexchange.com
+appl-e.comappl.com
+appl4e.com
appla.com12diasderegalosdeitunes.hnapple-cloudkit.comapple-darwin.comapple-darwin.netapple-darwin.org
apple-dns.com
apple-dns.netapple-enews.comapple-expo.com
apple-expo.euapple-hk.comapple-imac.com
apple-inc.netapple-livephotoskit.comapple-mapkit.comapple-online.com
apple-pay.comapple-pay.rsapple-pay.wangapple-store.netapple-store.wang
apple-usa.net
+youtube.bhapple.aeapple.atapple.beapple.bgapple.bsapple.caapple.chapple.clapple.cmapple.co
+youtube.bg
+youtube.be
+youtube.ba
+youtube.az
+youtube.at
+youtube.am
+youtube.al
+youtube.ae
apple.comyoutube-nocookie.com02weqj32.comyoutu.beyoutrannytube.comyouthnetradio.orgyouthforfreechina.orgyouskbe.com
youshun12.com
yousendit.comyourxxxvideos.proyourwifemymeat.comyourvoyeurvideos.comyourupskirt.comyourtrap.comyourprivatevpn.comyourporngod.comyourporndump.com
yourporn.sexyyourpelvicexam.comyourmonsterbeats.comyourmomsgotbigtits.comyourmomlovesanal.comyourlust.comyourlisten.comyourgynexam.comyourfreeporn.tvapple.czapple.deapple.dkapple.eeapple.esapple.euapple.fiapple.fr
apple.hamburgapple.hnapple.hrapple.huapple.ieapple.inapple.isapple.itapple.joapple.jpapple.krapple.lkapple.ltapple.lvapple.meapple.my
apple.netyourflashporn.com
+apple.newsapple.nlapple.noapple.pkapple.plapple.ptapple.roapple.rsapple.ruapple.saapple.seapple.sgapple.siapple.skapple.soapple.ttapple.twapple.ukapple.usapple.xn--czr694bapple.xn--fiqs8s
apple.xyzappleaccount.netappleafrica.comappleantilles.comappleappstore.netappleappstore.tvappleaustralia.comyourfantasybeginsnow.com
yourepeat.comapplebk.netapplecarbon.comapplecard.tvapplecare.berlinapplecare.ccapplecare.euapplecare.hamburgapplecare.wangapplecensorship.comyourdoll.comapplecentar.rsyourdirtymind.comapplecentre.infoappleclassicipod.comyourdailypornvideos.wsapplecom.comapplecomputer-imac.com
yourbrain.comyourassbig.comapplecomputer.comyouramateurporn.comyour-server.deapplecomputer.huapplecomputer.krapplecomputerimac.comapplecomputerinc.infoyour-objectstorage.comapplecoronavirus.comappledaily.comyour-freedom.netyoupornxvideos.net
appledaily.hkappledarwin.comappledarwin.netappleenews.comappleexpo.euappleexpo.infoapplefilmaker.comapplefilmmaker.comapplefinalcutproworld.comapplefinalcutproworld.netapplefinalcutproworld.orgapplefruity.com
youpornru.comapplehongkong.comyoupornpremium.comappleid-applemx.comappleid-applemx.usappleid-iclou.com
appleid-uk.usappleid.berlinappleid.comappleid.hamburg
+appleid.hk
appleimac.comappleinclegal.comappleinsider.comappleiphone.huappleiphone.netappleiphonecell.comappleipodsettlement.comappleiservices.com
applelink.comapplemagickeyboard.comyoupornlist.comapplemasters.infoapplemusic.berlin
applemusic.coapplemusic.comyouporngay.comapplemusic.hamburgapplemusic.wangapplemusicconnect.comapplemusicfestival.comapplemx-icloud.comapplenews.berlinapplenews.hamburgapplenews.tvapplenewsformat.comappleone.audio
appleone.blog
appleone.chatappleone.cloud
appleone.clubappleone.community
appleone.filmappleone.guide
appleone.hostappleone.space
appleone.techappleone.websiteappleonline.comappleonline.net appleoriginalproductions.com
+appleos.tvapplepay.berlinyouporner.euyouporn.comapplepay.hamburgapplepay.hk
applepay.infoapplepay.jpapplepay.rsapplepay.tvapplepaycash.netapplepaycash.tv!applepaymerchantsupplies.infoapplepaysupplies.berlinapplepaysupplies.comapplepaysupplies.infoapplepaysupplies.netapplepaysupplies.tvapplepencil.netapplepodcasts.comyouporn-germany.com
+youpai.orgapplereach.comapplereach.net
apples-msk.ruapplescreensavers.comapplescript.infoappleshare.infoyoungtube.me
applestor.com
applestore.bg
applestore.cc
applestore.ch
applestore.cmyoungteenhomeporn.comyoungspiration.hkyoungsex.video
youngsex.sexyapplestore.comyoungpornvideos.comyoungpornonly.comyoungpornhd.comyoungmommyfucksme.comyounglibertines.comyoungheaven.comyoungermommy.comyoungerbabes.com
younger19.comyoungamateursporn.com
young-xxx.netyoung-webcam.netyoung-amateur-movies.comyoumaker.comyoulucky.comyoujizz.sex
applestore.de
applestore.hk
applestore.kr
applestore.meapplestore.netyoujizz.com
applestore.ph
applestore.qa
applestore.sgapplestore.wangapplestoreonline.comapplestorepro.euapplesurveys.comappleswift.comappletaiwan.com
appletips.netappletv.com
+appletv.frappletv.wangapplewallet.comapplewallet.tv
applewatch.hk
applewatch.tv
applewatch.twapplewatch.wangapplewatchedition.comapplewatchseries3.netapplewatchsport.comappleweb.netapplexpo.netapplezh.com
applf.com
+applfe.comapplicationinsights.ioapplicationinsights.net
+applle.com
applw.comappmediagroup.comapprovedusedbmw.comyoujism.com
+youflix.isappsflayer.comappshopper.comappsocks.netappsonebay.netappspot.com
appsto.reyoudontcare.comappstore.hkappstore.myappstore.ph
+appule.com
appye.com
appyq.com
youav.com
+apress.comaps.orgyouassporn.comaptoide.comyou.com
+apture.comyou-get.orgyoshisnewisland.com
apyle.com
aqdlt.net
+yorkbbs.cayopornshop.comyong.huarabianchicks.comarabidopsis.orgarabnek.com
+arabxn.comarabxnxx.org
arabysexy.comarabysexy.mobiaranzadi.esyomilogi.comarcadewank.com
+arcgis.comarcgisonline.comyomabank.comyolasite.com
+yogify.comyogichen.orgarchitectural-cadcam.comarchive-it.orgyogalayout.com
+archive.fo
+archive.is
+archive.li
+archive.mdarchive.org
+archive.ph
archive.todayarchiveofourown.comarchiveofourown.netarchiveofourown.orgarchives.govyobt.tv
+archivx.to
archlinux.orgarchlinuxarm.orgyobt.com
yobit.net
yo1health.comarctosia.comynoproject.net
+ymhsf1.top
ymhsf.top
ymail.comyjcontentdelivery.comyizhihongxing.comarea120.com
area51.toareca-backup.orgarena.taipeiarethusa.suarewereadyyet.comareyoucreditwise.comargotunnel.com!yiqiedoushiganggangkaishi.orgaria.ms
yipub.com
+yinya.shopyinshuiger.info
yinmh.com
+yinlei.org
+ark.toarlingtoncemetery.milyinhuafish.latyinhdhan.sbs
yingsuoss.com
+armovs.comarmy.milyingpianqu.comarnoldrenderer.com
+arphic.com
+yinac5.top
yinac.xyzyimg.jpart1lib.comart4tibet1998.org
+artcam.comartcamexpress.comartcaminsignia.comartcamjewelsmith.com
artcampro.comyimg.comarte.tvyilubbs.comartixlinux.orgartnudegalleries.comartoferotica.info
+yigeni.comartofpeacefoundation.org
yidio.com
yibei.orgyibaochina.com
+yibada.comyhy.coolartstation.comartstationmedia.comartstor.org
artsy.netyho.comyhgwgtv.xyz
arxiv.orgarzon.jpas-hp.ca
asacp.orgasagaku.com
asahi.comasahicom.jpyhcw.netascelibrary.org
+ygugu4.comygto.com
+yft-mv.sbsyeyeclub.com
yeswegays.comasdfg.jpyespornpleasexxx.com
+asebay.comyespornplease.comasexdoll.comasextube.netyespornfree.com
+asg.toyesasia.comasha.orgashemaletube.comashemaletv.comyes.xxxashleysageellison.comyes-news.comyepporn.comasia-gaming.com
+yeonda.com
asiacrazy.xyzasiaharvest.org
yegle.netasiamoviepass.comasian-anal-sex.comasianage.comasianboygay.comasiancamgirllive.comasiancamly.comasianews.itasianfreeporn.netasiangfvideos.comasiangirlsnextdoor.comasianphd.comasianporn.restasianporn.sexyasianpornjav.comasianpornlabs.comasianpornmovies.comasianpornonly.comasianporntrends.comasianscreens.com
asiansex.sexyasiansexdiary.comasiansmaster.comasianspiss.comasianthumbs.orgasianwifeporn.comasianwomensfilm.deasianxxxvideos.ccasiaone.comasiatgp.comasiatoday.us
yeeyi.comaskfacebook.netaskfacebook.org
+yeelou.comyecl.netyeahteentube.comasknudes.comaskstudent.com
askubuntu.com
+askynz.netasm.orgasme.org
asmhentai.comasminternational.orgasmr.gay
asmrbuluo.comasn-online.org
+asp-cc.comasp.netaspbjournals.orgydy.comycombinator.comaspenpublishing.com
yazhouse8.com
yayadizhi.xyzyayabay.com
yaya.cyou
aspnetcdn.comasproex.comasproexapi.comyavtube.comasredas.comass4all.comyastatic.netassembla.comassemblesystems.comassesphoto.comassetsadobe.com
+assimp.orgassistirhentai.comassoass.comassociates-amazon.comyasarang.netassylum.comyarnpkg.comyarininsuyu.comastm.orgasto.reyaptube.comastrill.comyaoyaomumu.comyaoliuno.funyaole91.xyzasus.com
asuscloud.comasuswebstorage.com
yaoiotaku.com
+atandt.comyaoimangaonline.com
atchinese.com
atdmt.com
+atdmt2.comateam-oracle.com
atgfw.orgathenaeizou.com
yaohubaba.comatkgallery.comatlanta168.comatlantaminidealers.comyantaqu.comyangjianli.comatlasdmt.comatlasonepoint.com
atlaspost.com
atlassian.com
atlassian.net
+atnext.comatom.ioatos.netyanghengjun.comyandexcloud.netatscaleconference.com
yandex.uzatt-bundles.comatt-idns.net
att-japan.comatt-mail.comatt-promotions.comatt-rsvp.comatt.comatt.jobsatt.net
+att.tv
attackers.netattalascom.comattbelieves.comattbusiness.net
attcenter.comattcollaborate.com
+attdns.com
+attdns.netattexperts.com
attglobal.net
yandex.uaattic.ioattinnovationspace.comattinternetservice.com
+attjoy.comattnetclient.comattonlineoffers.comattproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com
+attssl.comattstadium.comattsuppliers.comatttvnow.comattuverseoffers.comattuverseonline.comattvoip.comattwatchtv.comattwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com
atube.sex
atube.xxx
+atubex.com
atwiki.jp
atypi.org
yandex.tm
yandex.tj
yandex.sx
yandex.staucheapbeats.com
yandex.ru
yandex.pl
+yandex.orgaudible.comaudiencenetwork.comaudiencenetwork.tvaudiobeatsau.comaudiobeatsbydre.comaudiomonsterbeatsonline.com
+yandex.net
yandex.md
yandex.lv
yandex.lt
auntymaza.com
yandex.kzauricularemonsterbeats.com#auricularesbeatsbaratosshop.comauricularesbeatsmarkt.com
auroraoss.comausbeatsbydrdre.com
auth0.comauthorizeddns.netauthorizeddns.orgauthorizeddns.us
authorxml.com
authy.comautocad-schulungen.comautocad.comautocad360.com
autocad3d.comautocadarchitecturecc.comautocadexpert.comautocadformac.comautocadfreestyle.com
autocadlt.comautocadltbg.comautocadmac.comautocadmobile.comautocadsucks.comautocadsucks.net
autocadws.com
autocadws.netautodesk-aia-me.comautodesk-events.comautodesk-kickoff.comautodesk-mm.comautodesk-news.comautodesk-online.comautodesk-service.comautodesk-services.comautodesk-support.comautodesk-university.comautodesk-usability.comautodesk.comautodesk.devautodesk.netautodesk123d.comautodesk123dnews.comautodesk360.comautodesk360access.comautodesk360beta.comautodesk360bim.comautodesk360express.comautodesk360forbim.comautodesk360forplm.comautodesk360nexus.comautodesk360nexus.netautodesk360plm.comautodesk360pro.com!autodesk360solutionforbim.com!autodesk360solutionforplm.comautodesk360vault.comautodeskaecfeed.comautodeskandcitrix.comautodeskarcade.comautodeskautocadlt.comautodeskautomotive.comautodeskbim360.comautodeskbookrequest.comautodeskbuild.comautodeskbuildingops.comautodeskbuildspc.comautodeskcave.comautodeskchronicle.comautodeskcommunications.comautodeskcompetitions.com!autodeskdesigncompetition.com"autodeskdesigncompetitions.comautodeskdiscussions.comautodeskdocandmedia.com#autodeskdocandmediaamericas.comautodeskdocandmediaasia.comautodeskdocandmediaemea.com!autodeskdocandmediaeurope.comautodeskegitimleri.comautodeskenterprise.comautodeskevents.comautodeskfashionstyler.comautodeskforgames.comautodeskforge.comautodeskformit.comautodeskfoundation.comautodeskfusionlifecycle.comautodeskgovernment.net#autodeskgreenbuildingstudio.comautodeskhelp.comautodeskicpcouncil.comautodeskimpression.comautodeskinform.comautodeskinstant.comautodeskjournal.comautodesklearning.comautodesklistens.comautodesklivedesign.comautodesklms.com$ autodeskmanufacturingacademy.com%!autodeskmayaformotiongraphics.comautodeskmedbookrequest.comautodeskmedia.comautodeskmediarequest.comautodeskmeetings.comautodeskmfg.com%!autodeskmotiongraphicsandmore.comautodesknews.comautodeskonline.comautodeskpartner.comautodeskplm.comautodeskplm360.comautodeskplm360.netautodeskproductreviews.comautodeskprofiles.comautodeskprograms.comautodeskresearch.comautodeskrevit.comautodeskrevit.netautodeskrevitsucks.comautodeskrevitsucks.netautodeskseek.comautodesksketchbook.com"autodesksketchbookdesigner.comautodeskstylebook.comautodesksubscription.comautodesksucks.comautodesksucks.netautodesktechdays.comautodesktechx.comautodesktinkerbox.comautodesktravel.comautodeskturkiye.comautodeskuniversity.comautodeskuniversity2013.comautodeskvasari.comautodeskvasari.netautodeskvietnam.comautodeskviewer.comautodeskworkshop.comautodeskworkshop.netautodraw.com
automobile.frautomotive-cadcam.comautosketch.com
yandex.kgautumn-jade.comauxdubai.comav-baron.comav-channel.com
av-e-body.comav-movie.cc
av-th.net
+av-top.com
+av.comav.movieyandex.jobsav01.tvav11.org
av1688.cc
av369.net
+av4.usav69.tvav69.usav6k.comav6k.vip
avaaz.org
yandex.fr
yandex.fiavatara.com
+avbebe.com
avbody.tv
avcar.vip
+avcens.xyz
avcity.tv
avcnn.com
+avcool.com
avcrempie.comavday.tvavdb.inavdb.tv
avdby-up.buzz
+avdudu.topavdwang.xyz
+avelip.comaventertainments.com
avfantasy.comavfox.ccavg.com
+avgigi.com
avgle.com
avgle.net
+avgod.club
avh.world
avhbo.comavhd101.com
+avhome.oneavhu.comavidemux.orgavinetworks.com
+avinin.comavizoon.siteavizoone.comavjb.comavjiasu.comavjoy.meavjzy67.xyzavking-mp4.sbs
avlulu.ccavmo.pwavmoo.click
avmoo.com
avmoo.netavmoo.pwavn.comavnana5.comavnight-shipin.comavoision.com
+avpanda.cc
yandex.euavple.tv
yandex.ee
avrila.cc
+avrila2.ccavrila2023.topavrila23.cc
+avriri.top
+avsee01.tvavseesee.comavsforum.com
avstar.meavstar01.meavstar02.meavstar03.meavstar04.comavstar04.meavstar05.meavstar06.meavstar07.comavstar07.meavstar09.comavstar09.meavstar1.comavstar2.comavstar3.comavstar4.comavstar5.comavstar6.comavstar8.comavstar9.com
+avwong.com
avwto.com
avxde.orgavxhm.isavxhm.seavxlive.icu
avxxc.comavyahoo.comawayoutgame.com
aweencore.comawempire.com
yandex.de
awetv.com
+yandex.comawflapp.topawjq.cc
yandex.by12diasderegalosdeitunes.gtaws-iot-hackathon.comawsautopilot.comawsautoscaling.com
awsbraket.comawscommandlineinterface.comawsedstart.comawseducate.comawseducate.netawseducate.orgawsglobalaccelerator.comawsloft-johannesburg.comawsloft-stockholm.comawssecworkshops.com
awsstatic.comawsthinkbox.comawstrack.meawstrust.com
+awwcn.buzz
awwcn.xyz
yandex.az
axios.comaxureformac.comayabank.comyandex.aero
+030buy.comyande.re
ayshdade.infoayshdee.xyzayudanintendo.comazadiradio.comazadliq.org
azathabar.comazatliq.orgazattyk.orgazattyq.orgazatutyun.am
azerbaycan.tvazerimix.com
+aziani.comazirevpn.com
+aznude.comazubu.tvyamoon.clubazure-devices-int.netazure-devices.net
azure-dns.comazure-dns.info
azure-dns.net
azure-dns.orgazure-mobile.netazure-sphere.comazure-test.net
azure.com
azure.netazurecomcdn.net
azurecomm.netazurecontainer.ioazurecosmos.netazurecosmosdb.comazurecosmosdb.infoazurecosmosdb.net
+azurecr.ioazuredatabricks.netazuredevopslaunch.comazuredigitaltwin.comazuredigitaltwins.comazuredigitaltwins.netazuredns-prd.infoazuredns-prd.orgazureedge-test.net
azureedge.netazurefd.netazureiotcentral.comazureiotsolutions.comazureiotsuite.comazureplanetscale.infoazureplanetscale.netazureserviceprofiler.comazuresmartspaces.netazurestackvalidation.comazurewebsites.net
b-eroland.netb-ok.africa
b-ok.asiab-ok.ccb-ok.globalb-ok.orgb0ne.com
+b3boos.com
b6b33.com
+yammer.com
+yamibo.comyamaxun.com
+04647.club
+baazee.com
+babble.combabecentrum.combabeimpact.comyam.com
babepedia.com
babes.combabes34.combabes34.probabesandbitches.netbabesandgirls.combabesandstars.combabesaround.com
babesbang.combabesinporn.combabesmachine.combabesnetwork.combabesofindia.combabesource.com
babestube.combabosas.comyale.edu
babushky.clubyakbutterblues.combabycondom.combabylonbee.comyahoosportsbook.comyahoosandbox.combabypink.tobabyzone.comyahoomusic.com
backchina.combackdoorlesbians.comyahoohealth.comyahoofinance.combackroomcastingcouch.comyahoodns.netbacktotiananmen.com
yahooapis.comyahoo.wsyahoo.vg
bacon.combacsitinhyeu.vnbad.news
+badaas.combadasianpussy.comyahoo.tn
+badgen.netbadiucao.combadjojo.com
badoinkvr.com
badoo.combadsexygirl.combadteenspunished.com
badvirtue.combaeb.comyahoo.tmyahoo.tlyahoo.tkbag-glasses1.comyahoo.tgyahoo.st
bai29.xyzbaicaonetwork.comyahoo.srbaidu.jp
+baijie.orgbailandaily.comyahoo.soyahoo.sn
+baixing.me
+baizhi.orgyahoo.smbakgeekhome.tkyahoo.skballbustingtube.comyahoo.sibaltimorebmw.comyahoo.shbamgrid.comyahoo.sgbamtoki.combanan.tvbanana-vpn.combanatfun.comyahoo.seyahoo.rwband.us
bandag.cc
+bandag.combandcamp.com
bandgirlz.comyahoo.rubandpage.comyahoo.robandwagonhost.comyahoo.ptbang-movies.combangbros.combangbrosnetwork.combangchen.netbangdream.spacebangher.netbangkokpost.combangkokstreetwhores.comyahoo.psyahoo.pnbangyoulater.combangyourwife.combankmobilevibe.combanned.videobannedbook.netbannedbook.orgbannednews.orgbanorte.combaraero.combaramangaonline.combarefootnetworks.combarelist.combarenakedislam.com
bareporno.combarfuck.combarium-enema.combarkadahansasmartone.comyahoo.plyahoo.phyahoo.nuyahoo.noyahoo.nl
yahoo.netyahoo.mxyahoo.mwyahoo.mkyahoo.mebarrons-advisor.combarrons-conferences.combarrons.comyahoo.mdyahoo.lvyahoo.lu
barss1207.proyahoo.ltyahoo.la
barton.deyahoo.jobaselinestudy.combaselinestudy.orgyahoo.jeyahoo.itbasilisk-browser.orgyahoo.isyahoo.inyahoo.imyahoo.iebastillepost.combastropfirestone.combaterias-hp.comyahoo.huyahoo.hryahoo.hkyahoo.gybatsa.me
+battle.netbattlebreakers.combattlefield.combattlefield1943.combattlefield3.combattlefield4.combattlefield5.combattlefieldbadcompany2.combattlefieldheroes.combattlefieldv.combattleforcecomix.combattlefront2.combattlefrontii.com
battlelog.comyahoo.grbaxsound.combayareabmw.combayvoice.netbazel.build
+bb-chat.tvbb33.netbbbaihu.vipyahoo.gpbbc-anal.combbc-reporting-api.appyahoo.gmyahoo.glbbc.com
+bbc.inyahoo.ggyahoo.gebbcchinese.com
bbchat.tvyahoo.fryahoo.fmbbcpersian.combbcpornonly.comyahoo.fibbcverticals.comyahoo.es
bbestmall.combbg.govbbgevent.combbgwatch.combbhub.ioyahoo.eebbkz.combbnradio.org
bbqm1.xyzyahoo.dm
+bbs-tw.comyahoo.dkyahoo.djyahoo.deyahoo.cz
yahoo.comyahoo.cmyahoo.clyahoo.chyahoo.cgyahoo.cd
yahoo.catyahoo.cayahoo.byyahoo.btyahoo.bsyahoo.biyahoo.bg
bbsdigest.combbsfeed.combbsland.com
bbsmo.com
+bbsone.comyahoo.be
+bbthat.combbtoystore.com
bbw-yoyo.buzzbbwmilftube.combbwyoyo.infobby.combbycastatic.cabbycloud.combbycontent.combbycontent.netbbyintl.com
bbystatic.com
bbyurl.usyahoo.bayahoo.azyahoo.atyahoo.as
+bcbits.comyahoo.amyahoo.ae
bcchinese.net0cgdklr5sfwj.combcex.ca
+yaeby.info
+bcicdn.com
bcmorning.comyadori.clubyadi.sk
yaddal.tv ya.rubcove.videobcovlive.iobcrncdn.com
+y2mate.comxzxxtube.comxzxxporn.com
bcvp0rtal.com
bcy01.comxzone.tobdn.devjustpicsplease.combdsm.combdsm123.xyz
bdsmboard.orgbdsmbunker.combdsmcafe.com
bdsmhd.ccbdsmland.orgbdsmlibrary.com
+bdsmlr.combdsmpornonly.combdsmsexgame.combdsmstreak.combdsmtubexxx.com
bdsmtv.ccbdsmvideos.net
+xyy69.infobeaconevents.combeascoremodel.combeastiegals.combeastysexlinks.combeastythumbs.com
+beatbd.combeatbydre2013.com!beatbydreheadphonesonsale.combeatbydrekopen.combeatbydremonster.combeatbydreuk2014.combeatdrdres.combeatfactoryoutlets.combeatmonstersaustralia.netbeats-by-dre-australia.combeats-bydrdre.netbeats-bydre-mall.combeats-bydrecheapsale.combeats-bydreoutletonline.combeats-bydreoutletsale.combeats-bydreoutletsale.netbeats-bydreoutletssale.netbeats-bydrestore.combeats-bydreuk.combeats-deal.combeats-dre-us.com"beats-headphones-buy-cheap.combeats-headphones.usbeats-sale.combeats-seller.combeats-soaho.com
beats1.cc
beats1.tvbeats123.com
+beats4.netbeats4outlets.combeats4salecheap.combeatsallsale.combeatsaudifonos.combeatsaudiobydre.combeatsaudiobydre.netbeatsaudios.netbeatsbeatsmonster.combeatsbestdeals.combeatsblackfridaydeals.netbeatsblackfridayretails.combeatsboxingdayuksale.combeatsbydrdre-headphones.combeatsbydrdre-officials5.combeatsbydrdre-online.combeatsbydrdre-onsale.combeatsbydrdre-store.combeatsbydrdre-store.usbeatsbydrdre4sale.combeatsbydrdrebiz.combeatsbydrdrecustom.combeatsbydrdredanmark.combeatsbydrdremall.combeatsbydrdreoutlet.combeatsbydrdres.combeatsbydrdresale.netbeatsbydrdrestore.combeatsbydrdreus.com!beatsbydre-beatsheadphone.combeatsbydre-chen.combeatsbydre-club.combeatsbydre-headphones.com!beatsbydre-headphonesshop.combeatsbydre-mall.combeatsbydre-outlet.combeatsbydre-outletsale.netbeatsbydre-outletstore.combeatsbydre-sell.combeatsbydre-store.combeatsbydre-studio.combeatsbydre-us.com
beatsbydre.jpbeatsbydre2081.combeatsbydre411.combeatsbydre4usales.combeatsbydreauofficial.combeatsbydreausale.net beatsbydreaustralia-sale.com!beatsbydreaustraliaonline.com"beatsbydreaustraliaonlines.com beatsbydreaustraliasales.combeatsbydrebeatsby.com!beatsbydreblackfriday2013.com beatsbydreblackfridaypro.combeatsbydreboxingdayca.combeatsbydrecasquesfr.com#beatsbydrecheap-outletstore.combeatsbydrecheaper.com"beatsbydrecheaponlinesales.combeatsbydrecolors.com beatsbydrecustomwireless.com&"beatsbydrecybermondaydeals2013.com&"beatsbydrecybermondaydeals2013.netbeatsbydredanmarks.com"beatsbydredealsblackfriday.com"beatsbydredealscybermonday.combeatsbydrediscount.com beatsbydrediscountonline.netbeatsbydredr.combeatsbydreexecutivesale.com beatsbydreformall2013-nl.com beatsbydreforsalesonline.com beatsbydreforshop2013-nl.combeatsbydreforstore.combeatsbydreforyououtlet.combeatsbydrefr.com!beatsbydrefrcasquepascher.combeatsbydrefriday.combeatsbydregot.combeatsbydrehd.combeatsbydrehd.netbeatsbydreheadphones-nz.combeatsbydreheadphonesolo.combeatsbydrehut.combeatsbydreinexpensive.combeatsbydreireland-sales.com beatsbydreirelandonlines.combeatsbydreirelandsale.com beatsbydreirelandsonline.combeatsbydremall2013.com"beatsbydremonsteraustralia.combeatsbydrenls.combeatsbydrenorge1.net!beatsbydreofficialdanmark.combeatsbydreoksale.combeatsbydreol.combeatsbydreonlie2013-nl.com!beatsbydreonlines-ireland.combeatsbydreonlines-uk.combeatsbydreonlinesale-nz.combeatsbydreoordopjes.combeatsbydreoslo.combeatsbydreoutletsale.combeatsbydreoutletscheap.combeatsbydrerealstore.combeatsbydres-shop.combeatsbydresale-uk.combeatsbydresalemall2013.com beatsbydresaleonlines-nz.combeatsbydresales.us'#beatsbydresalesonline-australia.combeatsbydresdanmark.netbeatsbydreshop-uk.combeatsbydreshops.netbeatsbydresingapores.combeatsbydresingaporesale.combeatsbydresold.com%!beatsbydresolohdonline-canada.combeatsbydresonline-nz.combeatsbydrespeakers.combeatsbydressale.combeatsbydressolo.combeatsbydresstudio.combeatsbydrestorevip.com"beatsbydrestudio-australia.combeatsbydrestudio.combeatsbydretoutlet.combeatsbydreuk.combeatsbydreuk.netbeatsbydreus.combeatsbydrevipde.combeatsbydrew.combeatsbydrsmonsterinusa.combeatsbymusic.netbeatsbysdrbre.combeatsbysdrdres.combeatscasque-france.combeatscheap-nz.combeatscheap-uk.combeatscheapforsale.combeatscollection2014.combeatscustomblackfriday.combeatsdanmark2013.combeatsdrdre-headphones.combeatsdrdre-it.combeatsdrdre-solo.combeatsdrdre2014.combeatsdrdrecuffie.netbeatsdrdrekaufenschweiz.netbeatsdrdreneon.combeatsdre-monster.combeatsdre.netbeatsdre4cheap.combeatsdrecheap.combeatsdredreheadphones.combeatsdreforsale.combeatsdreinau.combeatsdremonster-uk.com!beatsdrenewcolorful4usale.combeatsdreoutletsale.combeatsdresale2013.combeatsdresalestore.combeatsdresolo2013.combeatsdreus.combeatsearbudsheadphoness.combeatselectronic.netbeatselectronics.combeatsep.combeatsep.netbeatsfacstore.combeatsfactoroutlets.combeatsfactorycollection.combeatsfactoryoutles.combeatsforcheap-usa.combeatsforme.combeatsfranceofficiel.com beatsheadphones-discount.combeatsheadphones1.combeatsheadphones2u.combeatsheadphonesale.combeatsheadphonesdealer.combeatsheadphonesforcheap.netbeatsheadphonesonline.combeatsheadphoness.combeatsheadphonestudio.combeatsheadphonesusamall.combeatshopuk.combeatsincanada.combeatsinsingapore.combeatsireland.netbeatsjoy.combeatsmonstersales.combeatsmusic.combeatsmusic.wang
beatsneon.combeatsnzsale.com
beatsodre.combeatsofdre-usa.combeatsonblackfriday2013.combeatsone.netbeatsoutlet.netbeatsoutletanytime.combeatsoutletonlines.combeatspascher-bydre.combeatspascher-fr.netbeatspascher.netbeatspaschers.netbeatspillnewcolor.combeatspills.combeatspromonsterjp.combeatspromotions.combeatssales.combeatssaleus.combeatssaustraliabuy.combeatssbyaustralia.combeatssbydredanmark.combeatsshop-uk.combeatsshop-usa.combeatsshopstore.combeatssingapores.combeatssingaporeshop.com beatsstudiohodetelefoner.combeatsstudiosite.combeatstoreusa.combeatsua.combeatswholesale.usbeatswirelesscheap.combeatswirelesscuffie.combeatthatquote.com
xyy69.combeautifulandbusty.comxysblogs.orgbeautyescortsamsterdam.comxys.orgxxxyoungxxx.combebo.combecomeindex.comxxxymovies.com
beddit.tvxxxyaom.xyz
xxxy.infoxxxy.biz
xxxxvideo.uno
+xxxwow.netxxxvogue.netbedstegratisporno.combeeg.com
beeg.restbeegfree.com
beejp.netxxxvirtualworld.comxxxvidso.com
+beevpn.com
+befuck.com
+befuck.netbegin-trade.combehance.netxxxvidos.vipxxxvideoszoo.combehindkink.combehindthescreenz.comxxxvideos247.com
+beibao.combeijing1989.combeijing2022.artbeijingnike.combeijingspring.com
beijingzx.org
xxxvideor.comxxxvideoamatoriali.comxxxvideo.worldbeiyongzhan1.com
bejav.netbejeweledstars.combejewled-stars.combekijkporno.nlbelamionline.comxxxvideo.vipxxxvideo.one
xxxv.mobixxxtubezoo.comxxxtubeset.comxxxtubenote.com
bell.wikibellebound.com
xxxtubegf.com
+bellesa.co
bellotube.com
bellsouth.netxxxtubedot.combemywife.cc
benaughty.funxxxtubeasian.netbengalisexvideos.combenliton.combentobox.tvxxxtube1.comxxxteenanal.netberic.meberkanawireless.comberkeley.eduxxxstreams.watchxxxstreams.orgberlincompanions.comberlinerbericht.deberlintwitterwall.com
xxxstreams.euxxxshame.com
xxxsexzoo.comxxxsextubes.comxxxsexocasero.comxxxsexcinema.comxxxsexanal.combest-sex-games.com
xxxscenes.netbest4bim.combestbeats4u.combestbhy.combestbim.combestbuy-audio.com"bestbuy-communityrelations.combestbuy-giftcard.infobestbuy-int.combestbuy-jobs.com
+bestbuy.cabestbuy.comxxxreal.combestbuy.infobestbuy24x7solutions.combestbuybusiness.com'#bestbuybusinessadvantageaccount.combestbuycanada.cabestbuycanada.combestbuycanadaltd.cabestbuycharityclassic.combestbuycoffeemakers.combestbuyethics.combestbuyforbusiness.cabestbuygsm.combestbuyideax.com!bestbuyphotoworkshoptours.combestbuyrewards.combestbuyrewardzone.cabestbuys.combestbuysgeeksquad.combestbuysolutions.netbestbuystores.combestbuytradein.com
bestbuyus.combestcamsites.netbesterpornos.combestescortgirls.nlbestforchina.orgbestfreecams.clubbestfreesexgames.combestfreetube.netbestfreetube.xxxbestgames-2022.combestgore.combesthandjobporn.combesthentaitube.combestiality.gurubestialitysextaboo.combestialitytaboo.tvbestialityvideo.usbestiphonestuff.combestjapanesepornsites.combestjavporn.combestjavporn.net
bestkinky.combestlistofporn.combestmallawards.comxxxpornzeed.combestporn.subestpornclip.combestporncomix.combestporngames.combestpornsites.eubestpornsites.guidebestpornstardb.combestporntube.mebestpremiumpornsite.comxxxpornotuber.combestsexcam.combestshoesale2014.netbesttitstube.combestvpn.combestvpnanalysis.combestvpnserver.combestvpnservice.combestvpnusa.combestxxxsites.combesuty99.combesztbuy.com
+bet365.combetfair.com
+beth.gamesbethesda.netbethesdagamestudios.combethsoft.com
betterbim.combetterexplained.combetterhdporn.combetternet.cobetternike.comxxxpornmovs.com
bettervpn.combetterwithautodesk.combettween.com
betvictor.combetween-legs.combeurettesvideo.com
xxxpornhd.pro
bewww.netxxxporndig.comxxxporn123.com
+xxxporn.subextbuy.combeyondcore.combeyondfirewall.comxxxpicz.com
+bffshd.comxxxpenguin.combfnn.orgbfsh.hk
xxxnxx.me
xxxnu.combgov.com
+bgr.inxxxnewvideos.com
+xxxner.com
bgvpn.comxxxn.tvxxxn.me
xxxmovies.pro
xxxmovies.funxxxmomporn.tube
bhggn.xyzxxxmofo.comxxxmatures.netxxxmaturepussypics.com
+bhzyk.buzz
+bhzyw2.topxxxlucah.comxxxlesbians.mebianlei.combiantailajiao.combiantailajiao.in
+biaoqs.xyzbiaoqs1.xyzbiaoqs2.xyzbiblesforamerica.orgxxxland.net
bibox.combic2011.orgxxxjapanesemovies.comxxxindiantv.comxxxindianporn2.com
+bidbay.comxxxifuck.combidong25.combidong9.combidorbuyindia.comxxxhubvideos.com
xxxhub123.comxxxhomefuck.com
+biedian.mebienvenuechezbestbuy.cabig.one
bigassporn.tvbigbeans.solutionsxxxhentaipics.probigbigshop.combigblackdicklover.combigboobbundle.combigboobsalert.combigboobsandhotsex.combigboobsonline.orgbigboobspov.combigboobswives.com
bigboss.videobigbuckbunny.org
bigcharts.com
bigcocker.comxxxhentaipics.com
xxxhentai.netbigdick.combigdickorgasm.comxxxhdporn.ccbigfools.combiggggg.com
bighead.group
xxxhd.proxxxgratisfilms.combigindiansex.mobibigjapanesesex.combigmoney.bizbignews.org
+bigone.combigporn.com
bigsex.tvbigsound.orgbigtitangelawhite.combigtithitomi.combigtithooker.combigtitsextapes.combigtitsgallery.netbigtitsmodelsdirectory.combigtitsthreesomes.combigtitterrynova.combigtitvenera.combigtopsites.com
biguz.netxxxgirls88.com
+biitii.com
bijukujo.club
bikaa.xyz
bikac.xyzbikaios.xyzxxxgames.gamesxxxgames.bizbild.dexxxfuckmom.combili2.ccbili888.combili999.combilibili.tvbiliintl.combiliplus.com
biliworld.com
xxxfree.watch
bill-safe.combillmelater.combillmelater.infobillmelater.net
billpoint.combillpoint.infobillpoint.tvbillpoint.usbillpointnewzealand.combillypan.comxxxforte.combim-360.com
+bim360.com
+bim360.netbim360field.combim360glue.com
bim360ops.combim3dcontent.comxxxflare.combimadsk.com
+bimbim.com
bimbolive.combimglue.combimlibrary.comxxxfiles.comxxxfile.org
bimseeker.com
bimsource.combimworld.com
+binads.com
+binance.ccbinance.charity
binance.cloud
+binance.cobinance.combinance.info
+binance.mebinance.netbinance.org
+binance.usbinance.visionbinanceapi.combinancecnt.combinancezh.be
binancezh.bizbinancezh.ccbinancezh.co
binancezh.combinancezh.info
binancezh.ink
binancezh.kimbinancezh.linkbinancezh.livebinancezh.mobi
binancezh.net
binancezh.probinancezh.sh
binancezh.top
xxxengine.netbing.combing.netbing123.combingads.combingagencyawards.combingapis.combingapistatistics.combingparachute.combingsandbox.combingvisualsearch.com
bingworld.com
binoculus.combintray.combinux.mexxxdinotube.com
+xxxdesi.cc
+xxxdan.com
xxxcomics.orgxxxclub.club
xxxbunker.com
xxxbullet.comxxxbule.comxxxbolivianas.com
+xxxbit.combiologists.comxxxassfuck.combiomedcentral.com
+bioone.orgbioporno.comxxxaporn.combiorxiv.org
xxx4hindi.comxxx2023.combioware.combiowarestore.comxxx2022.com
xxx18teen.net
biqle.orgbiqle.ru
xxx18.unobird.soxxx.xxxxxx.comxxx-ways.com
xxx-videos.tv
xxx-video.cfd
xxx-porn.infoxxx-porn-tube.comxxx-porn-fuck.com
xxx-files.orgxxx-fap.comxxx-com.cfd
+xxx-av.com
+xxvids.net
xxvideoss.orgbisq.iobisq.networkxxvideos.xxx
bit-z.com
+bit.do
+bit.lybitballoon.com
+bitbank.cc
+bitbay.netbitbucket.io
bitbucket.orgxxvideo.mobibitchesgirls.combitchmomporn.combitchute.combitcoin.orgbitcointalk.orgbitcoinworld.comxxuz.combitfinex.combitflyer.combitflyer.jp
+bitget.combithumb.comxxu.mobi
bitly.combitly.is
+bitmex.combitnami.combitnamiapp.combitnamistudio.combitporno.combitquick.cobitshare.combitsnoop.combitsquare.iobitstamp.net
bitstream.combitterwinter.orgbittrex.combitvise.com
bitwarden.combitwarden.eu
bitwarden.netbitz.aibizarresexuality.com
+bizhat.combizographics.combjini.cc
bjnewlife.orgbjs.orgbjzc.orgbkkdown.sitebl-doujinsouko.com
xxnxx-sex.comblackamateurfuck.comblackamateursvideos.comxxnxx-porn.comblackandstacked.comblackboxgames.com
xxnx.rest
+xxmovz.comblacked.comblackfridaydrebeatsnew.comblackfridaydrebeatsshop.comblackhomeporn.comblacklogic.comblackmonsterterror.com
xxlmovies.comxxiqiyiavxx.buzzxxindianporn.comblackshemalevideo.comblacksonblondes.com blackstonespoliceservice.comblacktowhite.netblackvpn.com
+xxgasm.com
+blaoshi.cc
+blazor.netxxfbiaa.xyzxxeronetxx.infoxxbrits.comblender.orgblewpass.com
blink.orgblinkload.zone
+blinkx.com
blinw.comblip.tvblizzak-juken.jpblizzard.comblizzardgearstore.com
xxbook.ccblockcast.itblockcn.comblockedbyhk.com
blockfrost.io
blockless.com
xxbbx.com
xxbay.comblog.dexx9.app
+xx-map.comxwbo.comxvxxtube.comxvxx.streamxvirtual.comxvinlink.com
+xvidzz.comxvidios.xxxblog.jpxvidios.blogxvideoz.winxvideostravestis.xxxxvideosnovinhas.comxvideosnovinha.comxvideosjingxiang.comxvideosincesto.com
xvideoscom.mexvideosbrasileiro.netxvideosbrasil.comxvideosamadoras.comxvideos3.comxvideos2.comxvideos.redblogblog.comblogcatalog.comblogcity.meblogdns.orgblogebay.comblogger.combloggrowup.com
+blogimg.jp
bloglines.com
bloglovin.comblogoverflow.com
+xvideos.la
+xvideos.esblogspot.aeblogspot.alblogspot.amblogspot.bablogspot.beblogspot.bgblogspot.bjblogspot.cablogspot.catblogspot.cfblogspot.chblogspot.clxvideos.com
+xvideos.coxvideos.blogxvideos-xxxx.comxvideos-porn-video.comxvideos-dl.topxvideos-cdn.comblogspot.comxvideoporno.tv
+xvideo.run
+xvideo.com
xvideo.cc
xvideo-jp.com
xvedo.netxvds.tvxvbelink.comxv1.monster
xuzhiyong.net
xujan.com
xuite.net
xuehua.usblogspot.cvblogspot.czblogspot.deblogspot.dkblogspot.fiblogspot.frblogspot.grblogspot.hkblogspot.hrblogspot.hublogspot.ieblogspot.inblogspot.isblogspot.itblogspot.jpblogspot.krblogspot.liblogspot.ltblogspot.lublogspot.mdblogspot.mkblogspot.mxblogspot.myblogspot.nlblogspot.noblogspot.peblogspot.ptblogspot.qablogspot.reblogspot.roblogspot.rsblogspot.rublogspot.seblogspot.sgblogspot.siblogspot.skblogspot.snblogspot.tdblogspot.twblogspot.ugblogspot.vn
+blogtd.net
+blogtd.orgblogterest.net
bloodshed.net
+xuchao.org
+xuchao.netxu97.vip
bloomberg.comxtubezoo.combloomberg.debloomberg.fmbloomberg.tvbloombergapps.combloombergarcade.combloombergbeta.combloombergbna.combloombergbreakaway.combloombergbriefs.combloombergchina.combloombergenvironment.combloombergforeducation.combloomberggovernment.combloombergindices.combloombergindustry.combloomberglabs.combloomberglaw.combloomberglive.combloomberglp.combloombergmedia.combloombergnext.combloombergpolarlake.combloombergprep.combloombergquint.combloombergradio.combloombergsef.combloombergspace.combloombergstatus.combloombergsurvey.combloombergtax.combloombergtax1.combloombergtaxtech.com!bloombergtradingchallenge.combloombergtv.mnbloombergvault.combloombergview.combloomfortune.combloommicroventures.com
xtubebdsm.combloomsburycollections.combloomsburydesignlibrary.com
xtube.com
xtracloud.net
blowjobit.comblowjobqueens.netblpcareers.com
blpevents.comblpprofessional.comblubrry.comblueangellive.combluearchive.jpbluefootcms.com
+xtegvk.xyz
bluehatil.combluehatnights.combluemix.combluemix.netbluestacks.com
xtapes.tobluffyporn.comblurams.com
+xsz-av.com
+blylq.buzzblz-contentstack.com
xsvod.xyz
xstas.biz
+xslist.orgxskywalker.netxskywalker.comxsijishe.com
+bmfinn.combmia.orgbmj.combml.infoxshr.onlinexshaker.netxsela.cc
+xsden.info
+xscale.combmw-abudhabi.combmw-adventskalender.combmw-albania.combmw-antilles.frbmw-art-journey.combmw-arts-design.combmw-asia.com bmw-auslieferungszentrum.combmw-authority-vehicles.combmw-bahrain.combmw-businessdrive.combmw-calgary.cabmw-carit.debmw-classic.combmw-clubs-international.combmw-connected-drive.combmw-connecteddrive.aebmw-connecteddrive.atbmw-connecteddrive.bebmw-connecteddrive.bgbmw-connecteddrive.cabmw-connecteddrive.ch
xsava.xyzxrentdvd.comxqwherb.sbsbmw-connecteddrive.comxpud.orgxposed.infoxpornplease.com
xpornblog.comxpoleuno.comxplr.cobmw-connecteddrive.czbmw-connecteddrive.debmw-connecteddrive.dkbmw-connecteddrive.eebmw-connecteddrive.esbmw-connecteddrive.fibmw-connecteddrive.frbmw-connecteddrive.grbmw-connecteddrive.hubmw-connecteddrive.iebmw-connecteddrive.itbmw-connecteddrive.jpbmw-connecteddrive.krbmw-connecteddrive.ltbmw-connecteddrive.lubmw-connecteddrive.lvbmw-connecteddrive.mxbmw-connecteddrive.mybmw-connecteddrive.nlbmw-connecteddrive.nobmw-connecteddrive.plbmw-connecteddrive.ptbmw-connecteddrive.robmw-connecteddrive.rubmw-connecteddrive.sebmw-connecteddrive.sgbmw-connecteddrive.sibmw-connecteddrive.skbmw-connecteddrive.twbmw-corporate-sales.combmw-diplomatic-sales.comxpee.combmw-drivingexperience.com
bmw-dubai.com
+bmw-eg.com
bmw-fleet.net
bmw-ghana.combmw-golfsport.com
bmw-group.com
bmw-group.netbmw-grouparchiv.debmw-grouparchives.com
+bmw-gta.cabmw-i-pure-impulse.combmw-i.jpbmw-int1.combmw-iraq.combmw-jordan.combmw-konzernarchiv.debmw-ksa.combmw-kuwait.com
+bmw-lao.labmw-lebanon.combmw-m-safetycar.com
bmw-m.combmw-mdrivetour.com
+bmw-me.combmw-military-sales.combmw-motorcycle.combmw-motorcycles.vnbmw-motorrad-abudhabi.com bmw-motorrad-authorities.combmw-motorrad-dubai.combmw-motorrad-motorsport.com!bmw-motorrad-now-or-never.com&"bmw-motorrad-service-inclusive.combmw-motorrad-test-ride.combmw-motorrad.atbmw-motorrad.bebmw-motorrad.bgbmw-motorrad.bhbmw-motorrad.bobmw-motorrad.cabmw-motorrad.chbmw-motorrad.clbmw-motorrad.coxpdo.net
xpaja.netxozilla.comxoxoteiras.comxoteens.comxoomcom.combmw-motorrad.comxoom.usxoom.ioxoom.comxoom-experience.com
+xomfsp.xyz
+xogogo.com
xo104.com
+xo.comxnxxx.ccxnxxvideos.restbmw-motorrad.crbmw-motorrad.czbmw-motorrad.debmw-motorrad.dkbmw-motorrad.dzbmw-motorrad.ecbmw-motorrad.eebmw-motorrad.esbmw-motorrad.fibmw-motorrad.frbmw-motorrad.grbmw-motorrad.gtbmw-motorrad.hubmw-motorrad.inbmw-motorrad.itbmw-motorrad.jpbmw-motorrad.lubmw-motorrad.mabmw-motorrad.nlbmw-motorrad.nobmw-motorrad.pabmw-motorrad.plbmw-motorrad.ptbmw-motorrad.robmw-motorrad.rsbmw-motorrad.rubmw-motorrad.sabmw-motorrad.sebmw-motorrad.sibmw-motorrad.skbmw-motorrad.svbmw-motorrad.twbmw-motorrad.uabmw-motorrad.uybmw-motorsport.combmw-mountains.combmw-museum.combmw-museum.netbmw-nigeria.combmw-oman.com
bmw-ottawa.cabmw-pakistan.combmw-plant-munich.comxnxxtime.combmw-powertrain.combmw-product-highlights.com
bmw-qatar.combmw-routes.com
+bmw-rp.combmw-rrdays.combmw-saudiarabia.combmw-security-vehicles.combmw-special-sales.combmw-sports.com
bmw-sudan.combmw-tahiti.combmw-tunisia.combmw-vancouver.cabmw-voli.mebmw-welt.combmw-welt.netbmw-welt.tvbmw-werk-berlin.de
bmw-world.com
bmw-world.netbmw-world.tvbmw-worldfinal.combmw-yachtsport.com
+bmw-yeg.ca
bmw-yemen.com
+bmw.am
+bmw.at
+bmw.az
+bmw.ba
+bmw.bb
+bmw.be
+bmw.bg
+bmw.bm
+bmw.bs
+bmw.by
+bmw.ca
+bmw.cc
+bmw.ch
+bmw.clxnxxsexmovies.comxnxxsexclips.comxnxxpornvid.comxnxxporn.funxnxxporn.dexnxxmovies.com
xnxxhd.tv
+xnxxhd.bizxnxxhamster.netxnxxfap.infoxnxxcomvideos.combmw.comxnxxcom.xyzxnxxcom.clubxnxxarabsex.comxnxxarab.cc
xnxx4porn.com
xnxx3.com
xnxx2.pro
xnxx2.orgxnxx2.it
+xnxx2.info
+xnxx18.proxnxx.tvxnxx.netxnxx.healthxnxx.comxnxx-xxx.winxnxx-tv.netxnxx-teens.comxnxx-sex-videos.comxnxx-sex-tube.comxnxx-cdn.com
xnxvideos.orgxnostars.comxnertv.shopxnalgas.comxn--yt8h.laxn--yf1at58a.comxn--xsq959n.comxn--xsq605n.comxn--xsq421m.com
+bmw.cw
+bmw.cz
+bmw.de
+bmw.dk
+bmw.dz
+bmw.ee
+bmw.es
+bmw.fi
+bmw.fr
+bmw.gp
+bmw.gr
+bmw.hn
+bmw.hr
+bmw.ht
+bmw.hu
+bmw.ie
+bmw.in
+bmw.is
+bmw.it
+bmw.kg
+bmw.kz
+bmw.lc
+bmw.lk
+bmw.lt
+bmw.lu
+bmw.lv
+bmw.ly
+bmw.ma
+bmw.md
+bmw.mn
+bmw.mq
+bmw.mu
+bmw.nc
+bmw.nl
+bmw.no
+bmw.pl
+bmw.ps
+bmw.pt
+bmw.re
+bmw.ro
+bmw.rs
+bmw.se
+bmw.si
+bmw.sk
+bmw.sn
+bmw.tm
+bmw.tt
+bmw.ua
+bmw.uz
+bmw.vnbmwarchiv.atbmwarchiv.debmwartjourney.combmwasia.combmwauslieferungszentrum.combmwbikes.com
bmwbkk.de
+bmwccrc.cabmwcenternet.combmwchampionship.combmwchampionshipusa.combmwcharitygolf.combmwcitychallenge.combmwclassic.combmwcolorado.combmwconnecteddrive.combmwcustomapparel.com
bmwdcsnet.netbmwdealercareers.combmwdealerdirect.combmwdelawarevalley.combmwfilms.combmwgroup-classic-heart.combmwgroup-classic.combmwgroup-gaad.combmwgroup-plants.combmwgroup-posdigital.combmwgroup-werke.combmwgroup.atbmwgroup.com
bmwgroup.jobsbmwgroup.netbmwgroupclassic.combmwgroupdesignworks.combmwgroupdirect.combmwgroupfs.combmwgroupinfobahn.combmwgroupna.com
bmwhk.combmwi.cabmwi.jpbmwiventures.combmwjamaica.com
+bmwlat.combmwlifestyle.cabmwm.combmwmagazine.combmwmagazine.debmwmass.combmwmass.net
bmwmc.netbmwmontreal.cabmwmotorcycles.combmwmotorcycleusa.comxn--x-qeu1ji09tzlg.netxn--x-qeu1ji09tzlg.biz
xn--urs05q.jpxn--uis17aj9kmuf.combmwmotorradhk.combmwmotorshowblog.combmwmotorsport.combmwmperformance.com
bmwmuseum.netbmwmyanmar.combmwofannapolis.combmwofcentralpa.combmwoftulsa.combmwondemandusa.com
bmworegon.combmwperformancecenter.combmwpittsburgh.combmwproductnews.com
bmwsafari.com
+bmwsfl.com
+bmwsfl.net
+bmwshop.cabmwspecialoffers.ca
bmwsports.combmwstartupgarage.combmwstep.combmwstepconnections.combmwsummerschool.combmwtampabay.com
+bmwusa.combmwusaservice.combmwusatires.combmwusfactory.combmwusrideracademy.combmwvalueservice.combmwwholesaleconnect.combmwworld.combmwworld.netbmwworld.tvbmwzentrum.comxn--ubt498knmf.com
bnbstatic.combnef.combnews.coxn--tkry91n.com
+bnn.cobnrmetal.comxn--sjqr38j.comxn--sgt856gbjl.ccboardreader.com xn--ruq8a011kt6y.xn--hxt814eboboporn.comboboporn.net
+bobovip.cc
bobs-tube.com
bobvoyeur.com
bochk.combocici.buzzbod.asia%!xn--r8jwklh769hk43amcfoyl3z3a.combodgirls.combodog88.com%!xn--r8jwklh769h2mc880dk1o431a.combodyfluids-jav.comxn--qoq462m.com0emm.com
bokep.net
bokepseks.org
bokepvidz.combolehvpn.netxn--q41am8x.combollywoodlife.comxn--pearsonenespaol-brb.comboltdns.netxn--p8j9a0d9c9a.xn--q9jyb4c
+xn--oiq.ccxn--ngstr-lra8j.comxn--mtswd61ejxq.comxn--mts47c3w9b1qr.net xn--kput3imi374g.xn--hxt814e0plkijj.vipxn--i2ru8q2qg.comxn--hxtr4rozx.xn--czr694bxn--hhr917d3fecva.xyzbonbonme.com
bonbonsex.combondagecomixxx.netbondagesex-xxx.com
bondagesm.xyzxn--hckl3e1e8a8ajin0czf.netbonedathome.combonfoundation.org
bongacams.com
+bonyu.cyouboobieblog.com
boobpedia.comboobsrealm.comboobstagram.comboodigo.com
boodigogo.comxn--hb4aw0g.comxn--gtvz22d.xn--hxt814e
+book18.orgbook4you.orgbookclubcorner.combookclubgirl.combookdepository.combookepub.com
+bookfi.netxn--gtvz22d.wangbooking.combookmark.xxxbookmybridgestonetyre.com
bookonsky.net!xn--gtvq61aiijy0b.xn--hxt814e
booksc.eu
booksc.me
+booksc.org
+booksc.xyzbookshome.info
bookshome.netbookshome.worldbooksinprint.combookstagram.comxn--gogl-1nd42e.com
+booloo.comboomba.club
boomerang.comboomssr.com
booru.orgbooth.pmbootstrapcdn.combootyliciousmag.combootysource.comxn--gogl-0nd52e.comboqimod.comboqitube.ccborderlessprepaid.comxn--gmq92kd2rm1kx34a.comxn--gmq348bujlxrb.comborgenmagazine.comboringcompany.com
+borwap.comxn--ggle-55da.comboshancy.comboslife.bizboslife.net
+bossae.comxn--flw351e.com
+0rz.tw xn--fiqs8sxootzz.xn--hxt814exn--d4ty0ojsqzfd.comxn--d1acpjx3f.xn--p1ai
boswp.com
+bot.nu
botanwang.combotframework.combotorch.orgbotstop.com
boulx.comboundhub.combountyhunterporn.comxn--czq75pvv1aj5c.org
+0x0.st0xxx.wsxn--cck4d8b3009a.combowenpress.combowlroll.netbowsersinsidestory.com
box57.oneboxofficemojo.com
boxpn.com
boxun.comboxun.tv
boxunblog.com
boxunclub.com
boy18tube.comboyangu.comboycall.comboyfriendtv.comboylabs.net
+boylove.ccboylove.comboylove.liveboylove1.ccboyloves.ccboypost.comboysfood.comboysmaster.comboyspornpics.com
+boyvid.comboyztube.comxn--av-o44ep1d.comxn--9trs65b.comxn--9pr62r24a.com
xn--9kr7l.comxn--90wwvt03e.comxn--8uq428d76d.tokyoxn--7hv594h.com br.stxn--74q434dwff.netxn--74q434dwff.comxn--74q035i.xn--hxt814exn--6eup7j.netxn--6eup7j.comxn--4vq477m.combraeburncapital.comxn--4vq475g.comxn--4gq171p.comxn--3et96bj49ahpq.combraintreegateway.combraintreegateway.tvbraintreepayments.combraintreepayments.infobraintreepayments.orgbraintreepayments.tv!braintreepaymentsolutions.combraintreeps.combrainyquote.comxn--2vxsp6vi4j.comxn--205-4g6em5t.combranchportal.combrand-protection-team.combrandeasygo.combrandelectronic.combrandonhutchinson.combrandporno.combrandproducts1688.com
brands098.combrasilincesto.combrasiltudoliberado.comxn--204-4g6em5t.combraumeister.org
brave.combraventures.combraveux.combravoerotica.com
bravoporn.combravoteens.com
bravotube.netbravotube.tvbrazilpartneruniversity.combrazzer.combrazzers-porno.onlinebrazzers-xxx.netbrazzers.combrazzers.xxxbrazzersnetwork.combrazzersporn.mobibrazzfan.comxn--203-4g6em5t.combrdteengal.combreached.to
break.combreakdown.mebreakgfw.combreaking911.comxn--202-4g6em5t.combreakingtweets.com
breakwall.netbreasthealthinfo.combreath-takers.com
breitbart.comxn--201-4g6em5t.comxn--096-4g6em5t.combrepolis.netxmoviesforyou.combrew.sh
+brewmp.combriantreepayments.netbriantreepayments.tvxmovies.comxml-training-guide.com
xmissy.nl
bridgebim.comxmforever.rest
+xmbsyj.top
+xmav99.com
+xmature.subridgestone-asiapacific.combridgestone-bandag.combridgestone-brand.com#bridgestone-business-service.jp
+xmalay.combridgestone-plt-eng.combridgestone-tac-oman.combridgestone.cl
+xm.comxlydh.ccxlstudio.comxlovecam.com
xlinkz.tobridgestone.comxlgirls.comxlfmwz.infoxlfmtalk.com
xlecx.orgxl-gaytube.comxkorean.camxkontakt18.combridgestoneamericas.combridgestonearena.combridgestonecntc.combridgestonecomercial.cl
+xknoop.comxkiwi.tkxkeezmovies.comxjtravelguide.com
+xjp.ccbridgestonegolf.combridgestonegz.combridgestonela.combridgestonemarketing.combridgestonemerchandise.com bridgestonenationalfleet.combridgestoneperformance.com#bridgestoneperformancemedia.net bridgestonerapiddelivery.combridgestonerewards.combridgestonesyb.combridgestonetire.cabridgestonetire.comxjavporn.combridgestonevan.combridgestonewx.comxizang-zhiye.orgbriefdream.combrightcove.combrightcove.netbrightcove.servicesbrightcovecdn.com
brightline.tvxixicui.icu
+xiuren.org
xiongpian.comxinyubbs.net
xinshijue.comxinsheng.netxinmeitulu.com
+briian.com
xinlan995.xyz
brill.com
brilliant.orgxinjiangpolicefiles.org
xinhuanet.org
xingrz.me
xinggan77.vipxing840.infoxing66.lifexing.com
+xinfhw.comxindelu.comxinaia-av.buzz
xin21.xyzxihua.esxiezhua.com
xie56.xyzxiaxiaoqiang.net
xiaoyaoge.xyzxiaoshuobb.life
xiaoou.tv
xiaoou.io
xiaomi.eu
+xiaoma.org
+xiaolan.me
xiaohexie.com
xiaogirls.com
xiaofu.mexiaod.inxiaochuncnjp.com
xiaobaiwu.combritsexcash.combrizzly.com
brkmd.comxianqiao.netxianjian.twbrni.combroadbandreports.com
broadbook.combroadpressinc.com
+xianir.xyzbrocaproject.comxiangrikui-app.combrokenteens.combromite.orgxianchawang.net
+xianba.netxhub.tv
bromo.comxhot.pro
+bronto.com
xhcdn.comxhamsterlive.com
brookings.edu
xhamster2.comxhamster18.desixhamster18.comxhamster.xxx
xhamster.desixhamster.com
+brotli.orgbrourou.comxh.videobrowserleaks.comxh-porn.com
+xgtdr.buzz
brucewang.net
xgtd3.comxgsp.tvxgroovy.com
xgmyd.combrutalbdsmtube.combrutalfetish.com
brutaltgp.combs-adreview.com
xgirls.webcamxgaytube.tvxgaytube.comxgames.zonexfuckonline.comxfreehd.comxfockers.comxfinity.comxfemaledom.comxfantazy.comxerotica.comxeon.combsky.appbsky.networkbsky.social
xenoblade.comxemales.com
xecce.comxdty.orgxdsummit.comxdporner.comxdir.vip
+xdh999.one
xdaforums.com
xdaddy.inxda-developers.combstatic.comxda-cdn.comxcum.com
+bsw.jpbsxm1213.pro
+bt2mag.combt95.com
btaia.comxcritic.com
+btbtav.comxcity.jp
btc98.combtcbank.bank
+xchina.funbtctrade.im
btdig.com
+btdigg.org
xchina.cobtku.mebtku.org
+xcg123.com
xcams.combtspread.combtsynckeys.com
+btt804.com
+btt904.com
+bttzyw.com
+bttzyw.netxcafe.in
bubbaporn.com
xcafe.com
+xbx.lv
+buck.build
buckbuild.combucketeer.jp
xbtce.comxbrasilporno.comxboyvids.comxboxstudios.comxboxservices.comxboxplayanywhere.com
+xboxone.eubudaedu.org
+budatt.comxboxone.combuddymedia.com
+xboxone.cobuffered.comxboxlive.combugzilla.orgbuhidoh.netxboxgamestudios.comxboxgamepass.com
+xboxab.combuilding3dcontent.comxbox360.orgbuiltfromebay.combukkake-jav.com
bullguard.com
+bullog.org
bullogger.combululusexdoll.com
bumingbai.net
bumpshare.com
+bumptop.cabumptop.combumptop.netbumptop.org
bumptunes.combunbunhk.com
bunnylust.comburningcamel.com
+xbox360.euburstly.netburstlyrewards.comxbox360.com
+xbox360.coxbox.orgxbox.euxbox.comxbox.cobusayari.combusiness-humanrights.org
business-i.jp 10.tt
business.page
+xbooru.combusinesscatalyst.comxbooks.workbusinessfocus.ioxbookcn.netbusinessinsider.comxbookcn.com
xbnat.combusinessinsider.debusinessinsider.esbusinessinsider.frbusinessinsider.inbusinessinsider.jpbusinessinsider.mxbusinessinsider.mybusinessinsider.nlbusinessinsider.sgxbhuijiab.infobusinesswebwise.combusinessweek.com
xbeegtube.combusinessweekmag.combustyangelique.combustyarianna.combustydanniashe.combustydustystash.combustyinescudna.combustykellykay.combustykerrymarie.combustylornamorgan.combustymerilyn.combustymomsvideo.combustynudebabes.combustyoldsluts.combustysammieblack.combusu.org
busytrade.com
+xbanny.com
+buugaa.com
+xbabe.mobibuy-from-shanghai.combuyaapl.combuyaapl.net
buyaltera.combuyaple.combuybeatsbydre-uk.combuybeatsheadphonesbydre.combuycheapbeatsbus.combuycheapbeatsbydre.combuycheapbeatsbydreshop.combuycheapbeatsdreuk.combuydrdrebeatbox.combuyfast-paysmart.netbuyingfacebooklikes.combuyitnow.combuyitnow.netbuyitnow.orgbuyitnow.tvbuyitnowshop.net
buymeacoff.eebuymeacoffee.combuyminibeatbox.combuynikechina.com
buyoculus.combuyonlineheadphones.combuypass-ssl.combuypass.com
+buypass.no
+buypass.sebuyshoponly.combuzzardflapper.com
+buzzav.combuzzhand.combuzzhand.netbuzzorange.combuzzsprout.combvdinfo.combvpn.combwbx.io
+bwgyhw.combwh1.netbwh8.net
bwh81.net
bwh88.net
bwh89.net
bwhstatus.combwin.com
xbabe.comxb18.mebwsj.hkxaxy.xyz bx.tlxattractive.com
+byapis.combybeatsdre.com
bybit.com
bycbe.com
bycsi.combydrebeats.combygpp1207.worldbyjav.me
byjhd.combymj.ioxapplist.combypasscensorship.org
byrut.org
byspotify.combyteoversea.com
+bytick.com
xanimeporn.tvxanimeporn.comc-est-simple.comc-ij.com
xanga.com
+c-span.orgc-spanvideo.org
c0930.com
c100tibet.orgc2cx.com
xandr.comc4rex.coc4slive.comxamarin.com
x99av.comx6av.com
x3vid.comx3guide.com
+cableav.tvcableav.xyzcablegatesearch.net
x365x.comcabletvdirectv.com
x24hr.com
cachinese.com
cacnw.com
cactusvpn.comcad-mep.com
+x1949x.comx18r.comx18r.co
x1337x.wscadcamsystemsinc.com
x1337x.secadduct.com
x1337x.eu
+x0rd38.xyz
+cadmep.comcadoverlay.com
+cadren.com
+x.team x.org
x.company
cafepress.com x.comcafr.cax.cox.ai
cai21.xyz
caice.comcaijinglengyan.com
caime.xyz
+cairn.info
+x-wall.orgx-fetish.orgcalameo.com
x-caprice.comx-berry.comx-artvideo.net
x-art.comcalebelston.com
+wzzyw.buzzcalendarserver.org
calendarz.comcalgarychinese.cacalgarychinese.comcalgarychinese.net
calgon.at
calgon.be
calgon.ch
wzyboy.im
+calgon.com
wztv8.com
calgon.de
calgon.es
calgon.fr
calgon.ie
calgon.it
calgon.nl
calgon.pt
calgon.ru
calgon.tvcalgoncarbon-china.comcalgoncarbon.comcalgonit.comcallabitch.orgcallersbane.comcallhulu.com
wzmyg.com
+wzlthw.comcam-duct.com
+wyqqdz.comwyndlabs.aiwynd.networkcam4.comcam4.jpcam4.sg
cam69.comcambaddies.com
cambb.xxx
wxoyt.comwwwxoom.comwwwwebay.comwwwpornhub.pro
cambridge.orgcambridgedigital.netwwwpaypass.comcambridgemaths.orgwwwmfacebook.com"cambridgeschoolshakespeare.comwwwmacbookair.com
wwwlapple.com
cambro.tv
wwwitunes.com
camcam.ccwwwipodlounge.comcamdolls.comcamduct.comcamelot-europe.comcamelotherald.comcamelotherald.net
camelphat.comcamelspaceeffect.comwwwinstagram.comcameraboys.comcamerfirma.com
camfinder.com
+camfox.comcamfrog.comcamgirlfinder.netcamgirlstemple.com
camgoddess.tv
camonster.comcampaignforuyghurs.org
wwwicloud.comcampushp.comcampuslondon.comwwwhuluplus.com
camrabbit.comwwwhost.bizwwwfacebook.comcams.comwwwfacebok.comwwwebay.netcamsoda.comcamsoda1.comcamstagestudio.comcamster.com
camstreams.tvcamsvids.tv
camvideos.orgcamvideos.tvcamvideoshub.comcamwhores-tv.comcamwhores.forumcamwhores.tvcamwhores.videocamwhoresbay.comcamwhoreshd.com
camwhoria.comwwwebay.comcanada-beatsbydre.comcanadameet.comcanalporno.com
wwwdecide.comwwwapplemusic.comcandidforum-videos.comwwwapple.netcandycumcity.comcandypleasure.comwwwapple.comwww8-hp.comwww1.biz
+www.sbwww-sms-apple.com
canon-cee.comcanon-cmos-sensors.com
canon-cna.com
www-paypal.uscanon-emea.comcanon-emirates.aecanon-europa.comcanon-europe.comcanon-me.comcanon-ois.qawww-paypal.infocanon.amcanon.atcanon.azcanon.bacanon.becanon.bgcanon.cacanon.chwww-facebook.comwww-bestbuystores.com
+wwtbam.com
canon.com
wwitv.comwwe9.comwwe.comwwapple.net
+ww9094.comwvm0agb4.mewuyefuli.org
wuyanblog.com
wuxiapple.comwuw.redcanon.czcanon.decanon.dkcanon.eecanon.escanon.ficanon.frcanon.gecanon.grcanon.hrcanon.hucanon.iecanon.itcanon.kzcanon.ltcanon.lucanon.lvcanon.me
canon.netcanon.nlcanon.nocanon.plcanon.ptcanon.rocanon.rscanon.rucanon.secanon.sicanon.skcanon.tjcanon.uacanon.uzcanonfoundation.org
canonical.comcanonproprinters.comwuso.me
wunvb.com
wukangrui.netwujieliulan.com
wujie.netwuguoguang.com
canyu.org
+cao.imcaobian.infocaochangqing.comwufafangwen.com
wuerkaixi.comwto.org
wtfpeople.comwtbn.orgwsjwine.comcapitalgames.com
capitaliq.comwsjshop.comwsjplus.comcarabinasypistolas.comwsjmediakit.com
wsjhk.com
+carbon.comcarcare-and-tireshop.jpcard.iowsjbarrons.comwsj.netwsj.jobswsj.comwritesonic.comcardinalkungfoundation.org
wretch.cc
wrenchead.comcarebay.comcareerfundas.comcareerjournal.comcareersatfb.comwrchina.orgwqyd.orgcarekit.org
+carfax.comcargigileads.com
wpvip.comcaribbeancom.comcaribbeancompr.comwpoforum.com
wpewebkit.org
+wp.comcarmotorshow.com
wp-themes.comwozy.in
woyaolian.orgcarrd.cowoxinghuiguo.comcarstagram.comcartoon-sex.tv
cartoon18.comcartoon3thumbs.comcartoonmovement.comcartoonporn.comcartoonporno.xxxcartoonpornonly.comcartoonpornvideos.comcartoonregistry.comwowyoungporn.comcartoonscity.comcartoonsexfantazy.comcartoontube.comcartoonville.netcas.orgcasadeltibetbcn.orgwowstars.com
wowrk.comcash.app
cash2.comcashback69.comcashbycashapp.comcashify.comcashify.netcashpassport.cawowpornlist.xyzcashpassport.comwowporn.comcashpassport.netcashpassportglobe.comcashvideotube.comwowlegacy.ml
casimages.comcasinobellini.comcasinoking.comcasinoriva.comwowindianporn.comwowhead.comcasoneexchange.com
casque-fr.com casquebeatsbydrdresolohd.comcasquebeatsdocteurdre.comcasquebeatsdre2013.comcasquebeatsenligne.comcasquebeatsfracheter.comcasquebeatsmer.netcasquebeatsofficiel-fr.comcasquebeatspascher2013.comcasquebeatssolo.netcasquedrdrebeatssfr.comcasquemonsterbeats.com#casquemonsterbeatsbydre2013.comcasquesbeatsaudio.comwowgirls.com
+castbox.fmcastingcouch-x.comwow.comwow-life.networldvpn.networldsfastestgamer.net
castro.fmcatalina.hkcatalinacruz.comworldsex.comworldsecuresystems.comcatcert.catcatch22.netcatchgod.com
catchplay.comcatfightpayperview.xxxworldsecureemail.comworldscientific.comworldpornvideos.comworldofwarcraft.comcatmiimi.comcato.org
cattt.comworldofslaves.ioworldjournal.com
worldhack.comworldflipper.jpworldescortindex.com
+cavhot.comcavporn.comworldemojiday.comworldemojiawards.comworldcoinpay.com
cbart.networldcat.org
+cbc.caworld3d.bizworkstations.tvworkspaceone.comworkspaceair.comworksmobile.comworkplaceusecases.comcbs.com
workplace.comcbsaavideo.comcbscorporation.comcbsi.com
+cbsi.video
+cbsiam.com
cbsig.net
+cbsimg.netcbsinteractive.comcbsistatic.com
cbsivideo.comcbsnews.comcbspressexpress.com
cbssports.com
cbsstatic.com
cbssvideo.comworkersthebig.netcc18.bizcc18.tv
+cc18tv.comworkers.devworkerempowerment.orgccav69.info
ccav69.meccav691api.comccavb.tvworkatruna.comwordpress.tvccbseoul.com
wordpress.orgcccat.cccccat.co
wordpress.com
woopie.tv
woopie.jpwoolyss.com
ccdtr.orgwoolitecarpet.com
+woolite.us
+woolite.pl
+cchere.comwoolite.com
+woolite.cacciernslabs.comcciesecuritylabs.comccievoicelabs.comccim.orgwoodmancastingx.com
cclife.ca
+cclife.orgcclifefl.orgwonporn.netwonporn.comwomenwill.mxwomenwill.in
ccna5.netccnsite.comwomenwill.id
womenwill.comwomensnikeshox.comwombo.aiwolterskluwer.comwolfsex-me.sbs
+wolfax.comwolfatbestbuy.netwolfatbestbuy.com
wokar.orgwogx.comwoflthenewsstation.comwofl.tv
+woeser.com wo.tcwnoaissulli1.com
wnacg.org
+wnacg.link
wnacg.com
+wn.com
+wmt.cowmfusercontent.orgwmflabs.orgwmcloud.org
+wm18s.buzz
ccpsx.comwkap.nlwjny-one.sbswjbk.org
wizcrafts.netwiz-s.jpccstatic.org
wixstatic.comwixsite.comccthere.comccthere.netcctmweb.net
cctongbao.comccue.caccue.com
+ccvoice.ca
wixmp.com
wixipedia.net
+cdbook.orgcdcparty.comwixapps.netcdef.org
cdig.infocdjp.orgcdkworkshop.comcdmatech.com
cdn-apple.comwixanswers.comcdn-telegram.orgcdn-terapeak.comwix.comwix-code.comwitopia.netwitnessleeteaching.comwithyoutube.comwithgoogle.com
cdn77.com
cdn77.org
+wistia.netcdninstagram.com
cdnjs.comcdnlab.livecdnpure.comcdp1989.orgcdp1998.orgcdp2006.org
+wistia.com
cdpeu.org
+cdpusa.org
+cdpweb.org
cdpwu.orgwish.comwisevid.comwisekey.com
+wiseid.comwisecoin.comcdw.com
cebay.comwise.comcecc.govwise-research.comwisdompubs.org
wireshark.org2.wiremoneytoirelandwithxoomeasierandcheaper.comwirelessreach.comwireless.radio
wireguard.comwiredpen.comwiredbytes.com
wired.comwire.comwipower.comwionews.comwinwhispers.infoceicdata.com
celebforum.cocelebgramme.comcelebmasta.livecelebritygay.comcelebritynakeds.comcelebrityslips.comcelebritystorysite.comcelebsporno.comcelebsroulette.comceleron.comceleron.netcell.comcellulo.info
+winudf.comwinticket.jpwintermute.com
winning11.com
+winhec.net
+winhec.comcencoastbmw.com
cenews.eu
+cenkei.com
censorship.ai
censorship.no
+wingy.sitewingamestore.com
windy.comwindscribe.comcenterforhumanreprod.comwindowsupdate.com
+centos.orgwindowsuem.comwindowssearch.comwindowsphoneme.comwindowsphone.comcentralnation.comwindowsphone-int.comwindowsmarketplace.comwindowscommunity.netcentralvalidation.comwindowsazure.comwindows8.hk
+windows.nlwindows.netcentrino.comcentrino.netcenturys.netwindows.com
+cepacol.cacepacol.comceramics-cadcam.comwindows-int.net
+cerdas.com1000giri.net
wimpmusic.com
willyporn.com12diasderegalosdeitunes.crcern.chcertificat2.com certificate-transparency.org
willw.netcertinomis.com
certinomis.frcertsign.ro
certum.plwilliamhill.com
ceskeporno.cz
wiley.comwildxxxhardcore.comwildfreevideos.com
wildfanny.comwildcamporn.com
+cex.iocf-ipfs.comwildammo.com
cfake.comwiktionary.org
+cfblob.com
+cfd-tv.comcfdesign.comwikiwiki.jp
+cfl.rewikiwand.comcfna.comcfos.decfr.orgwikivoyage.org
cftfc.comcfwives.comcgdepot.orgwikiversity.orgwikiunblocked.orgcgst.eduwikisource.org
+ch9.mswikisexguide.com championshipseriesleague.com
+change.org
changeip.namechangeip.netchangeip.org
wikiquote.org
+changp.comchangsa.netchannelnewsasia.com
+chaoex.comchapm25.com
chargenow.comchargenowusa.comwikiporn.tv
wikipedia.orgwikinews.orgcharlestonroadregistry.comcharlotte-anime.jpcharmescorts.comwikimediafoundation.orgwikimediacloud.orgcharticulator.com
wikimedia.org
wikimapia.orgwikilivres.infochatango.comchatgpt.comchatgptvideo.xyzchatgptvideob.buzzchatnook.comchatsex.xxxchatter.comchatterbate.iochaturbate.comchatwhores.comchatwhores.netchatwhores.orgchatwhores.sex
chatwhores.tvwikileaks.pl
wikileaks.orgwikileaks.luwikileaks.euwikileaks.decheap-beats-by-dre.netcheap-beatsbydre.comcheap-nike.comcheapbagshoes.com
cheapbeats.uscheapbeats365.comcheapbeats4sale.netcheapbeatsaustraliasale.comcheapbeatsbus.comcheapbeatsbydr.comcheapbeatsbydrdrepro.comcheapbeatsbydre-au.comcheapbeatsbydre99.comcheapbeatsbydrefau.comcheapbeatsbydremall.comcheapbeatsbydremonster.comcheapbeatsbydrenz.netcheapbeatsbydreonsale.com cheapbeatsbydreoutlet-nz.comcheapbeatsbydreoutlet.com"cheapbeatsbydreoutlets2013.comcheapbeatsbydresale.comcheapbeatsbydreshop.com$ cheapbeatsbydrestudioedition.com"cheapbeatsbydrestudioutlet.comcheapbeatsdrdresolo.comcheapbeatsdrestudios.comcheapbeatsheadphone2014.comcheapbeatsheadphones.uscheapbeatsie.comcheapbeatsla.comcheapbeatssale4u.comcheapbeatsshopbydre.comcheapcustombeatsbydre.comcheapdrdrebeats8.comcheapdrdrebeatsca.comcheapdrebeats8.netcheaperbeatsbydresale.comcheapestbeatsdrdre.comcheapheadphonesland.comcheapheadphonessale.comcheapheadsetmall.comcheapheadsetshop.com cheapmonsterbeatsbydrdre.com!cheapmonsterbeatsheadsets.comcheapmonsterbeatssale.comcheapmonsterbeatsusa.us cheapmonstersbeatsonsale.comcheapnewbeatsbydre.comcheapnikedunks.comcheapnikeoutlet.comcheapsalemonster.comcheapshoesvip.comcheapwireless04.comcheapwirelessbeats.comcheckgfw.com
wikileaks.comcheerwholesale.us
chegg.comcheggcdn.comwikileaks.chwikileaks-forum.comwikihow.comwikifeet.comwikidot.comwikidata.orgchemequations.com
wikibooks.orgchemnetbase.com
wikia.org
wikia.comchengjuanseo.comchengmingmag.comchengrendouyin-app.comchengrenshipin-app.comchenguangcheng.comchenpokong.comchenpokong.netchenpokongvip.comcherry-tale.comcherryasia.comcherrybrady.comcherrynudes.com
cherrypai.comcherrypanpan.comcherrypimps.comcherrypornhd.comcherrysave.comwikawika.xyz
+wikaba.com
wiivc.netwiiugamepad.comwiisportsresort.com
wiisports.com
wiipartyu.comchhongbi.orgwiifitu.com
+wiifit.com
wii-u.comchianxv.buzzchicagolandbmw.comchicagoncmtv.comwifiman.comwifi-mx.comchickstagram.comchickteases.comwifewantstoplay.comwifevideos.netwifesharingpics.comchihair-straightener.com
chikiporn.comwifesexorgy.comwifemovies.net
chillingo.comchimeforchange.orgchina-autodesk.comchina-facebook.comwifeloversporn.com
china-mmm.netwifeinterracialfuck.comwifeinlove.comchina-week.comwifehomeporn.comchina101.comchina18.orgchina21.comchina21.orgchina5000.uschinaaffairs.orgchinaaid.mechinaaid.netchinaaid.orgchinaaid.uschinachange.orgchinachannel.hkchinacitynews.bechinaclothesstore.comchinacomments.orgwife-home-videos.comchinadecoding.comchinadialogue.netchinadigitaltimes.netchinaeconomicreview.comchinaelections.orgchinaeweekly.com
chinafile.comchinafreepress.org
chinagate.comchinageeks.orgchinagfw.orgchinagonet.comchinagreenparty.orgchinahorizon.org
chinahush.comchinainperspective.comchinainterimgov.orgchinalaborwatch.orgchinalawandpolicy.comchinalawtranslate.com
chinamule.comchinamz.orgchinanewscenter.comwidevine.comwhyx.orgchinarightsia.orgwhynotbi.comchinasmile.net"chinasocialdemocraticparty.com
chinasoul.orgchinasucks.netchinatelecomglobal.comchinatelecomhk.comchinatimes.comwhylover.comchinatopsex.com!whyiwantciscotelepresence.comchinatweeps.comwhyfacebook.comchinaunicomglobal.comchinaway.orgchinaworker.infochinaxchina.comwhychoosevmwareeuc.comchinayuanmin.orgchinchuqi-av.latwhychooseview.comchinese-hermit.netchinese-leaders.orgchinese-memorial.orgchinese-porn-videos.comchinese-xnxx.comwhychoosehorizon.comwhvuxtub.comwhotalking.comchinesedaily.comchinesedailynews.comchinesedemocracy.comchinesegay.orgchinesen.dewhosthehost.comchinesepen.orgchineseradioseattle.comchinesespanking.comchinesetalks.netchineseupress.comchinesexxxporn.netchingcheong.comchinman.netwhorevintagesex.comchipmong13g.buzzwhoreteensex.com
chips.com
whoreslag.com
+chithu.org
whoreshub.com
chla3.comwhoreasianporn.com
+whonix.orgchloesworld.comwholevideos.com
chobit.cc
+chocam.comchocolatey.orgchoicereviews.org
chomp.comwholesaleonlinemart.comchrdnet.comchristianfreedom.orgchristianstudy.comwholesalefine.comwholesalediscountpurses.comchristusrex.orgchristymarks.com
chrlawyers.hk12diasderegalosdeitunes.com
+chrome.comchromebook.comchromecast.comchromeexperiments.comchromeos.devchromercise.comchromestatus.comchromium.orgchronicle.securitychroniclesec.comwholesale-exporter1.comwholeplanetfoundation.orgwholekidsfoundation.orgwholefoodsmarket.comchuang-yen.org
chuangb15.xyzchubbypornonly.comchubold.com
+chubun.comwholefoods.comwholecitiesfoundation.org
+chuneo.xyzchunja19.netchuokoron.jpchuporno.com
whoer.netchurchinhongkong.orgchushigangdrug.chchutuno.fun
+chuzs2.xyzchwr7s8u.com
chyoa.comci-en.jp
ci-en.net
+whodns.xyzwho.intciattackers.comwhitexxxtube.com
+ciciai.comwhispersystems.orgwhisolutions.comwhippedass.com
+cienen.com
whichav.videowhichav.comwheretowatch.comcilk.comcilk.netwhereiswerner.comwhereiskpkuang.comcindymovies.comcineastentreff.decinemax.comcinepornogratis.comcios.orgwhentai.com
cipfg.orgcirclethebayfortibet.orgwhengirlsplay.comwheelworks.netcirosantilli.comwheelpop.comwheelockslatin.comwheatseeds.org12diasderegalosdeitunes.cocisco-returns.comcisco-warrantyfinder.com
cisco.com
+cisco.mobiciscoccservice.comciscoconnectcloud.comciscoconnectcloud.netciscoconnectcloud.orgciscocontest.comciscoerate.comciscofax.comciscoinvestments.comciscojabbervideo.netciscokinetic.comciscoknowledgenetwork.comciscolearningsociety.orgciscolearningsystem.com
ciscolive.comcisconetapp.comcisconetspace.comcisconetspace.infocisconetspace.netciscopartnermarketing.comciscopowercube.com
ciscopress.chciscoprice.comciscoresearch.comciscosoftware.com
ciscospark.caciscospark.com
ciscospark.jpciscotaccc.comciscotr.com
ciscoturk.netciscovideo.comciscowebseminars.comcispaletter.comcispaletter.orgcitas-para-mayoresde50.eccitasecuador.comwhatthefox.com
citizencn.com
citizenlab.cacitizenlab.orgcitizenscommission.hkcitizensradio.orgcitrixandautodesk.comwhatsonweibo.comwhatsappbrand.comcity-hentai.comwhatsapp.tvwhatsapp.org
+city365.ca
+city9x.comwhatsapp.net
whatsapp.infowhatsapp.comwhatsapp.ccwhatsapp-plus.netwhatsapp-plus.mewhatsapp-plus.info
whats.newwhatisworkspaceone.comcityheaven.netcitylab.comwhatisairwatch.comwhatbrowser.orgwhatboyswant.comwhatblocked.comwhat-fan.netcityoflove.com
+whasil.xyz
+wha.lacitypopulation.de
+wforum.comcitytalk.twcitytourgirls.comwfm.com
+wezone.net
civicparty.hkcivil3d.comcivilcc.com!civildisobediencemovement.orgcivilhrfront.orgciviliangunner.com
civilmedia.twcivilsoftware.net
wezhiyong.orgcivitai.comcixp.netciyuanjie.cc
ck101.com
ckcdn.comckck.funwexiaobo.org
+ckss98.com
+weverse.iowetvinfo.comwetv.vipwetsextube.comwetpussygames.comclannad-movie.jpclaravenger.comwetplace.com
wetnhorny.comclarionproject.org
clarivate.com
clasporno.orgclassicalguitarblog.netclassicnike.com
wetchicks.orgclassymomsex.com
claude.aiclaudeusercontent.comwetandpuffy.comwet-ass-pussy.comclco.cc
westpoint.eduwestlaw.com
cleansite.bizcleansite.infocleansite.usclearasil.uswestkit.netclearharmony.netclearlinux.orgclearpool.financeclearsurance.comclearwisdom.netclementine-player.orgwesternwolves.comwesternshugdensociety.org
click-url.comwesterndigital.com
+westca.com
+wenzhao.cawenyunchao.comwenxuecity.com
wenhui.chclimate-server.com
wengewang.org
wengewang.com
wen21.xyzclinica-tibet.ruclinical-videos.comclinicalkey.com
wemigrate.orgweltweitwachsen.de
+clip16.comclipcake.comclipdrop.coclipfish.de
cliphayho.comcliphunter.comclips4sale.comclipsaoyai.comclipsbai.com
clipseksi.comclipsex.asia
clitgames.comwelt.decloakpoint.comwelovecock.comclojure.orgwellmaturetube.comwellfuckedwife.comcloudapp.netcloudappsecurity.comcloudburstresearch.com
+cloudc.onecloudchoose.com
cloudcone.com
cloudcone.netcloudconvert.comcloudcraze.comcloudcredibility.comcloudflare-dns.comcloudflare-ech.comcloudflare-esni.comcloudflare-gateway.comcloudflare-ipfs.comcloudflare-quic.comcloudflare.comcloudflare.net
cloudflare.tvcloudflareaccess.comcloudflareapps.comcloudflarebolt.comcloudflareclient.comcloudflareinsights.comcloudflareok.comcloudflarepartners.comcloudflareportal.comcloudflarepreview.comcloudflareresolve.comcloudflaressl.comcloudflarestatus.comcloudflarestorage.comcloudflarestream.comcloudflaretest.comcloudflarewarp.comcloudfront.comcloudfront.netcloudfunctions.netcloudhealthtech.com
cloudimage.iocloudimg.iocloudinary.comcloudinary.netcloudinsights.com
cloudlatex.io
cloudlive.com
cloudlock.com
cloudn.mecloudproxy.appcloudrobotics.comcloudvolumes.comwelcomix.comcloudyzgirl.comcloupia.comcloupia.netclova.aiwelcometobestbuy.caweknowporn.comclub1069.com
clubhouse.comclubhouseapi.comclubseventeen.comclubsweethearts.com
clubtubes.comclusterconnection.comweiyuksj.comclyp.it
clzz2.xyz
weisuo.wsweiquanwang.orgcmbwinglungbank.comcmcn.orgweinvoiceit.comweiming.infocmegroup.com
+cmhalq.comweimi180.comweijingsheng.org
+weihuo.org
+cmpaas.com
weiboleak.comcms-twdigitalassets.com
+wefong.comcms.govwefightcensorship.orgcmu.edu
cmule.com
cmule.org
+cmx.imcn-proxy.comweekmag.infoweekly-economist.comwechatlawsuit.comwebworkerdaily.com
webwarper.netwebtype.comwebtoonscorp.comwebtoons.comwebsitepulse.com
+cn6.euwebs-tv.net
cnabc.comwebrush.netcnbc.com
+cnbcfm.com
+cnbeta.com
+webrtc.org
cnbetacdn.comcncbinternational.com
cncrivals.comcnd.orgwebpkgcache.comcnet.comcnet.de
cnetfrance.fr
+cnineu.comwebofscience.comcnix-gov-cn.comwebofknowledge.comcnn.com
+cnn.io
+cnn.it
cnnamador.com
cnnarabic.comwebobjects.netcnnikebrand.comcnnlabs.comcnnmoney.chcnnmoney.comcnnmoneystream.comcnnpolitics.com
+cnpmjs.orgcnpolitics.orgcnproxy.comcnshopin.com
webobjects.eu
cnyes.com
cnzjp.xyz
webobjects.dewebobjects.comwebnovel.comwebmproject.orgwebmoneyinfo.comweblagu.com
webkitgtk.org
+webkit.org
+cobatt.com
cobinhood.com
webjb.orgcobrasearch.comwebhosting.com
+cochina.cocochina.orgwebgirlsonline.netwebgata.netcochranelibrary.comcock4stepmom.comwebfreer.comcockofhorse.comcocksuckersguide.comcocktailsandcocktalk.com
cockyboys.comwebflow.comwebex.frwebex.escode.orgcode1984.comcodeberg.org
codeberg.pagecodecademy.comcodeforaliving.iocodeforces.comcodei.sh
+codeish.co
+codeish.iocodeshare.iocodeskulptor.orgcodespot.comcodethemicrobit.comwebex.decodivorexxx.com
webex.comcoedcherry.comwebex.ca
webevader.orgwebcamtubexxx.com
+coin2co.in
coinalyze.netcoinbase.comcoinbene.comcoindesk.comcoinegg.com
+coinex.com
coingecko.com
+coingi.com
coinglass.comcoinmap.orgcoinmarketcap.com
+webcams.tvcoinonecore.comcoinonecorp.comwebcammedellin.co
cointiger.comcointobe.com
+coinut.comcoithienthai.comcoitustube.comwebcamjackers.comwebcamgirls.chatwebcam-teen.netwebbang.netwebappfieldguide.comweb2project.netweb.devweb.appweb-instagram.netweav.xyz100beatscheap.com100bucksbabes.com
wearn.comwearehairy.comcolegialasdeverdad.comcolegialasreales.com
weareebay.comwdfiles.comwdf5.comwdc.com
+wd.comwd.bible
collabora.com
collabora.orgcollaboraoffice.com
+wbvm4s.comcollateralmurder.comcollateralmurder.orgcollection-3d.comcollectionofbestporn.comcollective99.com
wbrks.com
+wbdnbo.net
+wbd.mscollegejournal.comwballiance.comwaze.com
waymo.comcollegepornonly.comcollegesexgames.comwaveprotocol.org
+wav.tvwattpad.comwatersex.comwaterfox.netcolliderporn.comwaterdamagesandiego.org
+collins.inwater-and-power.comcolombianas.webcamcolorfulstage.comcolorprotechnology.comwatchteencam.comwatchout.twcomdotgame.com
+come29.xyzcomefromchina.comwatchmygirlfriend.tvcometotheduckside.com
comic-mega.mecomicbox.xyzwatchmygf.tocomicscartoonporn.comcomicsporno.escomicunivers.comcomicuniverse.orgcomixzilla.com
watchmygf.netcommandandconquer.comcommandarms.comcomments.appcommentshk.comcommerceos.comwatchmygf.mecommunistcrimes.orgcommunitychoicecu.comcomo-hackearfacebook.com
+comodo.com
+comodo.netcomodoca.com
comodoca2.com
comodoca3.com
comodoca4.com
+compaq.orgcomparitech.comcompass-system.comcompass-systems.com
+compass.iswatchmyexgf.netcompileheart.comwatchjavonline.comcomponentkit.orgcompose-spec.iocompress.tocompresspdf.newcomputer.orgwatchinese.comcomputingreviews.com
+comsoc.org
conair.me
conan.xxxwatchindianporn.net
watchespn.comconda.iowatchersweb.comwatchdisneyfe.comwatchanimeattheoffice.comwatch8x.comwatch-porn.netwatch-my-gf.comwatch-ebay.org($connaissancesfinancierespratiques.ca
wasmer.ioconnect-in-canada.com
waskucity.comconnectcommerce.hkconnectcommerce.infoconnectcommerce.tvconnected-drive.comconnectedcommerce.comconnectedcommerce.tvwashingtonpost.comconnectionsacademy.comconnectionseducation.comconnectionslearning.comwashingtondcbmw.com
conoha.jpconquerwithcharacter.com
conscrypt.com
conscrypt.orgwasheng.netwasha.tvconstructware.com
consul.iowaselpro.comcontactmagazine.netcontactossexoecuador.comcontainersonaws.comcontechacademy.com
wasdj.comwarroom.orgcontentful.comcontest.com
warp.plus
+convio.netconvrgencegame.com
+coobay.comcooer.sucookiechoices.org
cookielaw.org
cookiepro.comcool-comics.com
+cool18.comcoolaler.comcoolder.comcoolinet.netcooliphonecasesstore.comwariowarediy.comcoolmonster.net
coolncute.comcoolsexnew.comcoolstuffinc.comcoomer.party
coova.com
coova.net
coova.orgwariolandshakeit.comwarddogs.comwaranlov.comcopro.pwwapm.io
+waplog.com
coqnu.comcorbinfisher.com
cordcloud.orgwapedia.mobiwanz-factory.comcoreduo.comcoreextreme.com
corel.com
corel.net
coreldraw.app
coreldraw.comcorelstore.com
+coreml.netcoreoptics.netcorepublishingsolutions.comwantmywife.comwantblogger.comwant520.comwant-media.comcoronavirusnow.comwant-daily.comcorporatecashpassport.comcortanaanalytics.comcortanaskills.com
cortexrpg.comcorumcollege.comcos-moe.comwanokokorosoh.comwankzvr.com
wankz.comcosfans-tw.com
+wankoz.comwankizer.com
wankgames.com
cosmosdb.infocosmosdb.netcosplay-jav.comcosplayeromania.jp
cosplayjav.plcosplayporntube.comcosplayworld.netwangruoshui.net
wango.orgcostco-static.com
+costco.comcostcobusinessdelivery.comwanglixiong.comcotolia.com
wangjinbo.orgcotweet.comcougarsexmovies.comwangafu.netwanduww.buzzwanderinghorse.netcounter.socialwandan-dh.buzzwancctv.asiacoupang.comcoupangcdn.comwana-tv.sbswaltermartin.orgcoursehero.comcoursera-for-business.orgcoursera.community
coursera.helpcoursera.orgwaltermartin.comwalmartimages.comwalmart.pharmacywalmart.comwalmart-content.com100classicbooks.comwallsttv.comcovid19-rx.org
covid19rx.org
wallproxy.comwallpapercasa.comcowboom.com
wallornot.orgwallmama.comcoze.comcozydrdrebeats.comcp44.netcpan.orgwalletconnect.com
+wallet.com
+wal.cowal-mart.com
+cpedge.comwaiwaier.comwaisongcha.com
wainao.mecpj.orgwailaike.netwaikeung.orgwaigaobu.com
+cpz.tocq99.uscqcorea.comcrabporn.comcrackle.comcraigslist.org
wahas.comwaffle1999.com
+waa.twcrankplayer.com wa.me
crates.iow6un.com
w3schools.com
+w3.orgcrazy-amateurs.comcrazyav.xyz
crazybook.xyz
crazycloud.rucrazyfiction.xyzcrazylivecams.comcrazynovel.xyz
crazys.cc
crazyshit.comcrazyxxx3dworld.comcrazyxxx3dworld.netcrazyxxx3dworld.orgcrazyxxxworld.com
crbug.comcrchina.orgcrd-net.orgcreaders.netcreadersnet.com
w0512.com
creamasia.comcreamlemon.infocreampieforgranny.com
+w.wikicreatespace.comcreatewhatsnext.comcreativecloud.comcreativecommons.engineeringcreativecommons.org w.orgcreativelab5.comcreativepass.comcreativesdk.comw-mt.cocreatwhatsnext.comcrececonebay.comcreditcardsbay.comvzw.comvuvuzela.iovultryhw.com
vultr.comvulgarx.comvuku.cc
vtvan.comvtunnel.com
vtsociety.orgvsphere.netvsphere.com
+vsezoo.com
+vscode.devvscode-unpkg.netcricketcountry.comvscode-cdn.netcristyli.comcrit-staging.comvsassets.iovsallin.net
+vrv.co
+vrsumo.comcrmdynint-gcc.com
crmdynint.comvrsmash.com
crocotube.comcromite.orgvrsexgames.bizvrpornranked.comvrpornmania.comvrpornjack.com
vrporncat.com
+vrporn.comcrossborderexpansion.com
vrnastran.comcrossfitfirestone.comcrossmediapanel.comcrossthewall.netcrossvpn.netcrosswalk-project.comcrosswalk-project.netcrowdtangle.comcroxyproxy.com
vrmtr.comvrfun18.comvredprofessional.comvredessentials.comvred-essentials.comcrr.com
crrev.com
vrcams.io
+vrbgay.comcrtsgfb1.topcrucial.comvraiesagesse.netcruel-furies.com
vpser.netcrunchyroll.comcrustwebsites.net
+crypto.comcryptocompare.comvpro.net
crysis.jpcrystalgunnsworld.comcrystalmiss.com cs.co
cs4hs.comcsakporno.huvpro.comvpornvideos.comcsci.hk
vporn.comvpnworldwide.com
+vpnvip.comcsdparty.comvpnunlimitedapp.com
+vpnuk.info
vpntunnel.comvpntraffic.com
+cshive.com
vpnsp.comcsifund.orgcsis.orgvpnshieldapp.com
vpnshazam.com
csmonitor.comvpnsecure.mecsrankings.orgvpnreviewz.comvpnreactor.com
vpnpronet.com
+vpnpop.comvpnpick.comcstatic.net
vpnmentor.com
+csuchen.de
vpnmaster.comvpnjack.comvpnintouch.netvpnintouch.comctan.orgctao.orgvpninja.net
+vpnhub.com
vpnhq.com
+ctexcel.cactexcel.com
vpngratis.net
+ctexcel.fr
+ctexcel.us
ctfassets.netctfriend.netvpngate.net
+vpngate.jpvpnforgame.netvpnfires.bizvpnfire.com
+vpnfan.comvpndada.comctotires.com
ctowc.org
+vpncup.comvpncoupons.comvpncomparison.orgvpnbook.comvpnaccounts.comctrip.myctrip.sgctripbuy.hkvpnaccount.orgvpn4all.com
+vpn.ac
voyeurweb.com
+ctwant.comctyun.onlinevoyeurstyle.comvoyeurporntapes.comcuckfilmswifefuck.com
cuckold69.comcuckoldfuck.comcuckoldingwifey.comcuckoldinterracialporn.comcuckoldinterracialwife.comcuckoldplacetube.comcuckoldporntube.comcuckoldwifesex.comcuckoldwifesexxx.comcuckoldwifetube.comcuckporn.comcuckvideos.comcuckwatchingwife.comcuckwimp.comvoyeurpapa.comvoyeurmonkey.comvoyeurhouse.com
voyeurhit.com
+cuebic.bizcuffiesaldi.comcuhkacs.org
voyeureye.com
+cuihua.orgvoy.comcuinc.twcuiweiping.net
+voxops.netvoxmedia.comvoxfieldguide.com
voxer.comcultoferotica.comcultura-kolomna.ru
+culture.twvoxcreative.comcum4k.cccumasianporn.comvox.comvox-cdn.comvovo2000.comvotolia.comvot.org
cumlouder.comcumshotlist.comcumswappingsis.comcumteenporn.comcunhua.pics
cuniq.comcuntempire.comcuntwars.comvortexmachining.comvomitkings.comcups.orgvolvotrucks.uy
+curbed.comvolvotrucks.tnvolvotrucks.tmvolvotrucks.sk
currently.com
currently.netcurrenttime.tvcursecdn.comcurseforge.comcurve.fi
curvefish.comcurvybbwwives.comcurvyerotic.comvolvotrucks.sicusp.hkvolvotrucks.sgcustom-iphonecase.comcustombeatsbydrebuy.comcustombeatsdeals.comcustombeatsforcheap.comcustombeatsny.comcustombeatssbydreus.comcustomdrdrebeats.comcustomizedbeatbydre.comcustomizedbeatsbydre.comcustomizedbeatsdre.comcustomnikeshoes.comcusu.hkvolvotrucks.se
cutscenes.netcutt.lyvolvotrucks.ruvolvotrucks.rsvolvotrucks.rovolvotrucks.qavolvotrucks.psvolvotrucks.plvolvotrucks.pkvolvotrucks.phvolvotrucks.pevolvotrucks.no
+cwcams.comvolvotrucks.nlvolvotrucks.netvolvotrucks.mycy22.tvcyber-bay.info
cyber-bay.orgvolvotrucks.mnvolvotrucks.mkcyberghostvpn.comcybermondaybeats4sale.comvolvotrucks.mdvolvotrucks.mavolvotrucks.lvvolvotrucks.lt
+cyberx.comvolvotrucks.kzvolvotrucks.kr
+cygames.jp
+cygwin.com
+cylink.procylink0122.icuvolvotrucks.kgvolvotrucks.jpvolvotrucks.itvolvotrucks.involvotrucks.idvolvotrucks.hu
cynscribe.com
+cython.org
cytode.usczechav.comczechbiporn.comczechcasting.comczechhunter.comczechlesbians.comczechmassage.comczechstreets.comczechvr.comczechwifeswap.comcztv117.shopd-fukyu.comd-trust.net
d-upp.comd100.net
d2bay.comd2mrry2to5rg.com
+d2pass.comda-files.comda3dsoul.devdaboja18.comvolvotrucks.hrdabr.eudabr.me
dabr.mobidacebook.com
+dachix.comdadazim.comdaddyslilangel.comdadi360.comdafabet.comdafagood.comdafahao.comdafanhao-app.comvolvotrucks.hk
dafoh.orgdaft.sexdaftporn.comdaftsex-hd.comdaftsex.comdagelijksestandaard.nl
dagfs.comdaidostup.rudailidaili.comdailybasis.com
dailym.aivolvotrucks.gr
dailymail.comvolvotrucks.gedailymail.dkdailymailonline.comdailymotion.comvolvotrucks.frdailyporn.clubdailysabah.comvolvotrucks.fidailyview.twdaindianporn.comdaiphapinfo.netdajiyuan.comdajiyuan.dedajiyuan.euvolvotrucks.esdalailama-archives.org
dalailama.comdalailama.mndalailama.rudalailama80.orgdalailamacenter.orgdalailamafellows.orgdalailamafilm.comdalailamafoundation.orgdalailamahindi.comdalailamainaustralia.orgdalailamajapanese.comdalailamaprotesters.infodalailamaquotes.orgdalailamatrust.orgvolvotrucks.eedalailamaworld.comdalianmeng.org
daliulian.org
+damduc.orgdamplips.comvolvotrucks.dkdandalinvoa.comdandanzan.ccdanemarket.comdanke4china.netdanmarkbeatsbydrdre.comdanskpornofilm.comdansmovies.comdaoc.netvolvotrucks.de
+daolan.netvolvotrucks.czdaretoku-eromanga.infodarivoa.comdarkageofcamelot.comdarkcategories.com
darknaija.comdarkness-risen.comdarknessporn.comdarknun.comdarksidemagazine.comdarktech.orgdarktoy.netvolvotrucks.comvolvotrucks.cl
darpa.mildarrenliuwei.comdart.devvolvotrucks.chdartlang.orgdartpad.devvolvotrucks.bydartsearch-cn.netdartsearch.netvolvotrucks.bgdarwindimensions.comvolvotrucks.bedarwinsource.comdarwinsource.orgdarwinsourcecode.com
dasaob.onlinevolvotrucks.bavolvotrucks.azdashwood360.comvolvotrucks.atdastanhisexy.cc
dastrassi.orgdat.foundationvolvotrucks.amvolvotrucks.alvolvotrucks.aedata-vocabulary.orgvolvotruckrental.bedata.comvolvotruckcenter.sevolvotruckcenter.novolvotruckcenter.nldataliberation.orgdatalore.iodatasheets360.comvolvotruckcenter.kzvolvotruckcenter.krdatawav.clubdate2night.xyzdaum.netdaumcdn.netdaumkakao.iodaumpcbang.comvolvotruckcenter.itvolvotruckcenter.fidavid-kilgour.comdavid-laserscanner.comvolvotruckcenter.es
dawangidc.comdawngate.comdawngatechronicles.comdaylenerio.comdaylife.com
daytonbmw.comdaytontrucktires.comdazn-api.comdazn.com
+dazndn.com db.tt
+dba.dk
+dbc.hk
dbgjd.comvolvotruckcenter.dkdcard.ccdcard.io
+dcard.linkdcard.twvolvotruckcenter.bevolvospares.comvolvosaatio.fi
volvopenta.us12diasderegalosdeitunes.cldcmilitary.com
volvopenta.sedctbeatsbydre.com
volvopenta.nl
ddd-smart.net
+ddff66.com
+ddff77.com
+ddg.co
+ddg.gg
+ddh.gg
ddhw.info
volvopenta.itdditsadn.comdditscdn.com
ddns.info
volvopenta.fr
ddns.mobiddns.ms
ddns.nameddns.netddns.us
volvopenta.es
+de-sci.org
+de1lib.orgdeadline.comdeadspacegame.com
volvopenta.devolvopenta.comdeaftone.comdealbay.comdealerspeed.netdealsbeatsblackfriday.comdealtime.comdealtree.orgvolvomerchandise.comvolvogrouptruckcenter.nl
volvogroup.sedeasians.com
+debank.com
+debian.org
volvogroup.ru
debug.comdebugproject.com
volvogroup.pldecentr.net
dechamora.comdeck.ly
+decodet.codecorativemodels.comdecrypt.day
volvogroup.pe
volvogroup.nl
+deeper.comdeepfake-porn.comdeepfakeporn.net
volvogroup.mxdeepfreeze.com
volvogroup.kr
deepfreeze.eudeepfreeze.netdeepfreeze.tech
volvogroup.jp
deepl.comdeepmind.com
volvogroup.fr
+deezer.com
volvogroup.devolvogroup.comdefinebabe.comdefinefetish.com
degruyter.comdeja.comdelcam-ams.comdelcam-electrode.com
delcam-na.comdelcam-robotics.comdelcam-services.com
+delcam.comdelcamconsulting.comdelcamforsolidworks.comdelcamna.comdelcamp.netdelcamtv.comdelcamuniversity.com
delcamusa.com
delicious.com
volvogroup.be!12diasdepresentesdeitunes.comdell-brand.comdell.comdellcdn.comvolvodefense.comdelvenetworks.comvolvoce.comdemandware.com
volvobuses.us
+demdex.net
volvobuses.tn
volvobuses.sg
volvobuses.sedemocracy.earth
democrats.orgdemonoid.is
demoprint.com
volvobuses.rudemosisto.hk
volvobuses.pldengeamerika.comdengiamerika.comdeno.com
deno.landdentalhypotheses.com
volvobuses.pk
volvobuses.phdependabot.comdepositphotos.comdeps.dev
deps.info
volvobuses.om
volvobuses.no
volvobuses.my
volvobuses.mx
volvobuses.ma
volvobuses.kr
volvobuses.joderibit.comderpibooru.org
volvobuses.it
volvobuses.in
volvobuses.hu
volvobuses.hkdesc.se
desertbmw.comdesign-ledrev.comdesign-ledrevolution.comdesigneriphonescases.comdesignledrevolution.comdesignsformovement.com
designxml.com
designxml.netdesihoes.com
desiporn.tubedesipornfilms.com
+desipro.dedesiraesworld.com
volvobuses.frdesiresecrets.comdesk.comdesktopmovie.comdesktopmovie.netdesktopmovie.orgdesktopmovies.netdesktopmovies.org
+dessci.comdestinationbim.com
volvobuses.fidestroy-china.jpdetaliczny.comdetentiongirls.comdettol-prize.com
dettol.at
dettol.be
dettol.ch
dettol.cl
volvobuses.es
volvobuses.dk
volvobuses.devolvobuses.com
volvobuses.co
+dettol.com
volvobuses.ch
volvobuses.ca
volvobuses.be
volvobuses.atvolvobrandshop.comvolvo.se
volvo.comvolvo.ca
dettol.cz
dettol.fr
dettol.hu
dettol.ie
+dettol.net
dettol.nl
dettol.pk
dettol.pl
dettol.pt
dettol.rudettolarabia.comdettolcleannaija.comvolvo-truck.nldettolthailand.comdeutsch-sexfilme.com!deutsche-pornos-kostenlos.xxxdeutsche-welle.de deutschepornos-kostenlos.netdeutschsex.comdev-guardianapis.comdev-theguardian.com
+dev.to
+devcon.org
100ke.orgdeveloper-advisor.comvol.moe
+vokevr.comdevelopria.comdeviantart.comdeviantart.netdeviantclip.comdevice-manager.usdevilsfilm.comdevio.us
+devm2m.comvoicettank.orgdevopsassessment.netdevopsms.com
devpn.comdevsitetest.howdevtools-paypal.comdevv.aivodafone.itdewitwithdurex.comvodafone.dedexterhorn.comdezyred.comdfas.mildfn.org
dgaqp.com
+dgg.ggvodafone.com
dgwav.comdh44.loldharamsalanet.comdharmakara.netdhcp.biz
+vod360.netvocus.ccvocn.tvdiablo3.comdiabloimmortal.com
+dialga.comdialogflow.comdiamantewebcam.comvocativ.comvoazimbabwe.comvoatour.comdiamondgirlstudio.com
dianapost.comdianepoppos.comdiaoyuislands.orgvoatiengviet.comvoatibetanenglish.comdice.se
+dicela.com
+dicela.net
dickeomas.comdickhardon.comvoatibetan.com
+dictate.ms
didce.comdiddykongracing.comvoathai.com
didi-food.comdidiaustralia.blogdidiglobal.comdidilist.comvoaswahili.comdierectv.com
voasomali.comdifangwenge.orgdify.aidigicert-cn.comdigicert-validation.comdigicert.comdigiland.twvoashona.com
digisfera.comdigital-anime.com
digital-id.chdigital-rb.comdigitalassetlinks.orgdigitalcertvalidation.comvoaportugues.comdigitaldesire.comdigitalhub.comdigitalid.ch
voanouvel.comdigitalnomadsproject.orgdigitalocean.comdigitaloceanspaces.comdigitalpack.comdigitalplayground.com digitalplaygroundnetwork.comdigitalprototyping.comvoanoticias.com
+voanews.euvoanews.comdigitaltrends.comvoandebele.comvoalingala.comvoakorea.comvoaindonesia.com
diigo.com
dilber.se
+dilcdn.comvoahausa.com
voagd.comdinotube.com
+dipity.comvoadeewaradio.comvoadeewanews.com
+dirctv.com
direcpath.com
direcpath.netdirectcreative.comdirecttv-deals.tvdirecttv-dish.comdirecttv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.comdirectv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvbusinessmarket.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com
directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.comdireectv.com
+diretv.comdirty.gamesdirtyasiantube.comdirtydoglinks.comdirtyfarmer.com
dirtyflix.comdirtyhomefuck.comdirtyleague.comdirtyonline.comdirtypornvids.com
dirtyscat.orgdirtyshack.com
dirtyship.com
+dis.gdvoachineseblog.comvoachinese.com
disco-api.comdiscoins.comdiscomax.com
disconnect.mediscord-activities.com
+discord.codiscord.comdiscord.designdiscord.dev
+discord.ggdiscord.gift
discord.gifts
discord.mediadiscord.new
discord.store
discord.toolsdiscordactivities.comdiscordapp.com
discordapp.iodiscordapp.netdiscordcdn.comdiscordmerch.comdiscordpartygames.comdiscordsays.comdiscordstatus.comdiscountbeatsbydre-us.comdiscountbeatsstore.comdiscountedporn.comdiscountporn.clubvoacantonese.comvoacambodia.com
voabangla.comvoabambara.comdiscoveryplus.comdiscreet.comvoaafrique.com
discuss4u.comdiscussionsapple.comdish.com
dishworld.comvoaafaanoromoo.comdisney-asia.comdisney-discount.comdisney-plus.netdisney-studio.comdisney-studio.netdisney.asia
disney.be
disney.bg
disney.ca
disney.chvoa.gov
+vnware.net
vnet.linkvnanchoi.ca
vmwxw.comvmwservices.com
+disney.comvmwsalesrewards.comvmworld2013.comvmworld2010.comvmworld.com
disney.cz
disney.de
disney.dk
disney.es
disney.fi
disney.fr
disney.gr
disney.hu
disney.id
disney.in
disney.io
disney.it
disney.myvmwlearningplatform.com
disney.nl
disney.no
disney.ph
disney.pl
disney.pt
disney.ro
disney.ru
disney.se
disney.sgdisneyadsales.comdisneyarena.comdisneyaulani.comdisneybaby.comdisneycareers.comdisneychannelonstage.comdisneychannelroadtrip.comdisneycruisebrasil.comdisneyenconcert.comdisneyhentai.comdisneyiejobs.comdisneyinflight.comdisneyinternational.comdisneyinternationalhd.comdisneyjunior.comdisneyjuniortreataday.comdisneylatino.comvmwlabconnect.com
+vmwidm.comvmwidm-ads.comdisneymagicmoments.dedisneymagicmoments.esdisneymagicmoments.frvmwhorizonair.comdisneymagicmoments.grdisneymagicmoments.itdisneymagicmoments.pldisneymagicmomentsme.comdisneyme.comdisneymeetingsandevents.comdisneymovieinsiders.comdisneymusicpromotion.comdisneynewseries.com
disneynow.comdisneypeoplesurveys.com
vmwgcomms.comdisneyplus.comdisneyredirects.comdisneysrivieraresort.comdisneystore.comdisneystreaming.comdisneysubscription.comvmwdemo.com
vmwarevmc.comdisneytvajobs.comdisneyworld-go.comdisp.cc
+disqus.com
disquscdn.comdisqusservice.comvmwareviewpoint.comvmwareusergroupstore.comvmwarestuff.comvmwarelearningplatform.comvmwarelearning.com
+dit-inc.usvmwareidentity.comvmwarehorizon.comdiyarbakirescort.comdiyuser.buzzdizhidizhi.comdizhuzhishang.comdjangosnippets.org
djkav.mom
djorz.comdjreprints.comdkbeatsbydre.com
+dkcloud.cc
dkk37.comdkr.comdkrecttv.com
dl-iphone.com
+dl-laby.jpvmwaregrid.comvmwareemeablog.comvmwaredemandcenter.comdlap001.xyzdlap301.comdldlinks.comdldshare.net
dlercloud.comdlercloud.me
dlercloud.orgdleris.bestdlfacebook.comvmwarecloud.com!vmwarecertificationvideos.comdlive.tvvmwareausnews.com
+dlsite.comvmware20mosaic.com
dlsite.jpdlsitenews.comdlsitestudio.com
dlyoutube.comdm-event.net
dm530.net
dmcdn.netdmed.technology
+vmware.comdmhy.orgvmware-techcenter.comdmm-extension.comvmware-cloudmanagement.comdmm.comdmmapis.com
+dmmrex.comvmw.comvmtestdrive.comvmpsoft.com
+vmmark.com
dnaav.comdnai.indnaindia.comdnaspaces.iovmixcore.com
dndbeyond.comdns-dns.com
dns-stuff.com
+dns.sb
dns04.com
dns05.comdns1.usdns2.us
+dns2go.comdnscrypt.org
dnset.com
dnsrd.com
+dnssec.netdnsvisa.comdnvod.tvdnvodcdn.me do.co
dobbyporn.comdobendan.dedoceapower.com
+docker.com
docker.iodockerizer.com
docleradn.com
doclercdn.comdocs.comdocs.newdocs.rsdoctor-videos.comdoctorvoice.orgdocumentforce.comdocumentingreality.comvmglobal.netdodgersexcartoons.comdodi-repacks.downloaddodi-repacks.sitedodv.com
doeda.com
+dogatch.jpdogcumshot.netdogecoin.comdogfart.comdogfartnetwork.comdogmovie.netdogofcum.com
vllcs.orgdogspics.netdoi.infodoi.orgvl4x.netdojin-dl.com
dojin.comdojindb.netdojinmanga.netdojinwatch.com
dok-forum.netdokusho-ojikan.jpdolc.devkuservideo.netdollarfotoclub.comdollarphotoclub.comdollarphotosclub.com
dollf.comdolphiners.comvkuservideo.comvkuserlive.netvkuseraudio.comvkontakte.rudomywife.comvkmessenger.comdonatecarsoh.orgvkmessenger.appdongtaiwang.comdongtaiwang.netdongyangjing.com donkeykongcountryreturns.com
donkparty.com
donmai.usdonpornogratis.comdonsnaughtymodels.com
dontbubble.us
dontfilter.usdontmovetochina.comdonttrack.us
doodhwali.comdoom.com
doom9.orgdopaminegirl.comdorjeshugden.com
+vklive.appvkgo.appdoseofporn.com
+dot-mac.dedot.netdotcernpilot.info
+dotdeb.orgdotfacebook.comdotfacebook.netdotfreesex.comdotherex.com
dothq.org
dotmac.dedotplane.comvkcache.com
+dotsub.com
+dotvpn.comdoub.iodoubibackup.comdoubleclick-cn.netdoubleclick.netdoublethinklab.org
doubmirror.cfdoufurufabu.xyzdougscripts.comdouhokanko.netdoujin-eromanga.comdoujin-freee.comdoujin-info.netdoujin-night.comdoujincafe.comdoujinfree.comdoujinland.infodoujinnomori.comdoujins.com
doure.netdouwriteright.com
douya.org
douyintt10.medouzinnsi-eromannga.com vk.ru vk.me
dowei.orgdowjones.comdowjones.iodowjoneson.comvk.linkdownload.com
vk.design
+vk.com vk.ccdownloadpass.comdownloadsforipod.comdphk.org
vk-portal.net
+vk-cdn.netdpr.info
vk-cdn.medraftjs.org
dragonage.comdragonagekeep.comdragonagemovie.comdragonex.iodragonhentai.netvjav.comdragoniscoming.comdragonsprings.orgdrainage.com
+vizvaz.com
+vixvids.todrbdsmporn.comdrbeatsukmart.com
drbizzaro.comdrbl.indrdre-beats.comdrdrebeats-chen.comdrdrebeats-headphone.comdrdrebeats-usa.comdrdrebeatsale.comdrdrebeatsbillig.comdrdrebeatsdesale.comdrdrebeatsdiscount.comdrdrebeatsforu.comdrdrebeatsretail2013.comdrdrebeatssale7.comdrdrebeatsuk.com
drdrefnac.comdrdreheadphonebeats.comdrdreheadphonekey.comdrdreheadphonesusstore.comdrdremonster-beats.comdrdremonsterdre.comdrdreprobeatssale.com
vixen.comdreamamateurs.comdreambmw.cadreamcast.hkdreamforce.comdreammovies.comdreamteamfc.comdreamtoplay.comdreamworks.comdrebeats-australia.comdrebeats-france.comdrebeats-monster.com!drebeats-monsteraustralia.comdrebeats-monsterusa.comdrebeats-singapore.comdrebeats-singapore.netdrebeats-singaporecheap.comdrebeats-singaporecheap.netdrebeats-solo.comdrebeats-studio.comdrebeatsaustralia-cheap.comdrebeatsaustralia-cheap.netdrebeatsbuy.comdrebeatsbydreoutlet.comdrebeatscanada.comdrebeatsdeutschland.netdrebeatsforsaleus.comdrebeatsheadphones-nz.comdrebeatshome.comdrebeatsoldes.comdrebeatsoutletstore.comdrebeatspill.comdrebeatssite.com#drebeatssolocybermondaysale.comdrebeatsstudio2013.comdrebeatstudio.comdrebyby.com
vivthomas.comdremonsterbeatsoutlets.comdreprobeats.comdreprofy.comdrepung.orgvivoglobal.com
drgan.netvivaxnxx.comdribbble.comvivatube.com
driverxxx.comdrivevideo.xyzvivaldi.comdrkogyi.comdrmario-world.com
drmingxia.org
drnastran.comvivahentai4u.netdronedj.comdropbooks.tvdropbox-dns.comdropbox.comdropbox.techdropboxapi.comdropboxbusiness.comdropboxcaptcha.comdropboxforum.comdropboxforums.comdropboxinsiders.comdropboxmail.comdropboxpartners.comdropboxstatic.comdropboxusercontent.comdrsunacademy.comdrtuber.com
+drunk6.comdrunkenstepfather.comdrunkentop.comdrweb-av.dedrweb-av.esdrweb-av.itdrweb-av.pldrweb.by
+viu.tv
drweb.comdrweb.frdrweb.kzdrweb.uzviu.com
dscn.infovitukali.comdsex.tovital247.orgvisualstudio.netdslr.netdslreports.com
dsmtp.com
+dssott.comvisualstudio.eudstk.dkvisualstudio.com
+dswz88.xyzvisualstudio.covisualstudio-staging.comdtci.codtci.technology
dtdns.netdtiblog.comdtic.mil
+dtsell.comdtv2009offers.com
dtvce.com
+dtwang.orgdualeotruyen1s.com
duanzhihu.comdubai-escort-list.com
dubox.comvisual-arts.jpvisiontimesjp.comduck.coduck.comduckdns.orgduckduckco.com
duckduckco.de
duckduckgo.ca
duckduckgo.covisiontimes.netduckduckgo.comvisiontimes.itvisiontimes.fr
duckduckgo.de
duckduckgo.dk
duckduckgo.in
duckduckgo.jp
duckduckgo.ke
duckduckgo.mx
duckduckgo.nlduckduckgo.org
duckduckgo.pl
duckduckgo.sg
duckduckgo.ukduckduckhack.com
+duckgo.comduckload.com
duckmovie.comduckmylife.comducksear.chduckside.comdudethrill.comvisiontimes.devisiontimes.comvisibletweets.comvisceralgames.comduga.jp
+duihua.orgduihuahrjournal.org
dukgo.comdulceecuador.com
dumb1.comvisb.orgdump.xxxdumpxxx.netvisasoutheasteurope.comvisasignaturehotels.comvisasavingsedge.cavisaplus.comvisapcsdirect.comvisanet.netvisamiddleeast.comvisaluxuryhotels.com!visaluxuryhotelcollection.comdungeonkeeper.com
visakorea.comvisaitalia.comdunyabulteni.netduolaapian126.xyzduolaapian127.xyzduolingo.comduoweitimes.comduoweiweek.com
+duping.net
duplicati.com
+dupola.com
+dupola.netvisainfiniteluxuryhotels.ca
durex-shop.chdurex-shopline.comdurex-slovenia.sidurex.atdurex.bedurex.clvisainfinite.cavisaicsdirect.comvisaglobalfinance.comvisagiftcard.usvisafulfillment.comvisafintechfasttrack.com
durex.comvisaeverywhereshop.com
visaeurope.si
visaeurope.lu
visaeurope.ch
visaeurope.atvisadpsonline.usvisadns.comvisadigitalconcierge.comvisadigital.comvisaconciergelac.comvisacheckout.orgdurex.czdurex.dedurex.dkdurex.eedurex.esdurex.fidurex.frdurex.hudurex.iedurex.itdurex.jpdurex.lvdurex.mxdurex.nldurex.nodurex.pldurex.ptdurex.rodurex.rudurex.sedurex.usdurexcam.comdurexcanada.comdurexchina.comdurexindia.comdurexloveclub.comdurexukraine.comdurexusa.comvisacheckout.net
visacards.comdushi.cavisacarddesignlab.com
+dutrai.comduyaoss.comduyaossr.com
+dvdpac.comdvdstudiopro.bizdvdstudiopro.comdvdstudiopro.infodvdstudiopro.netdvdstudiopro.orgdvdstudiopro.usdvdtrailertube.com
+dvorak.orgdw-world.comdw-world.de
+dw.com dw.de
dweb.linkdwg.comdwgtrueconvert.comdwgtrueview.comvisabusinessinsights.com
+dwnews.com
+dwnews.net
dx9527.ccdxyav.co
dydx.exchangedyfl1.pw
+dykycl.com
+visabg.com
+dynacw.comvisabank.orgvisa.tcdynafleetonline.comdynamic-dns.netvisa.sxdynamicdns.bizvisa.sovisa.skvisa.sedynamics.comdynamobuilds.comdynamopackages.comdynamoreach.comdynawebinc.com
dyncdn.me
dyndns-ip.comdyndns-pics.com
+dyndns.org
+dyndns.pro
+dynssl.comdynu.comdynu.netvisa.rodysfz.ccdzen.rudzze.com
e-bay.come-bay.it
e-bay.netvisa.pt
e-cba.orgvisa.pl
+e-gold.com
+e-goods.rue-hentai.orge-hentaidb.comvisa.novisa.nlvisa.mqvisa.mnvisa.lvvisa.ltvisa.kyvisa.isvisa.ievisa.hue-szigno.hue-traderland.nete-tugra.comvisa.hke123.hkvisa.gre53w.come621.netea-anz-press.com
+ea.comeaaccess.comeablackbox.comeac-cdn.comeacashcard.comeachpay.comeachpay.net
eacodigos.comeadultgames.comeafootballworld.comvisa.gpvisa.gdvisa.freamirrorsedge.comeamobile.comeamythic.comeamythic.netvisa.fieanordic.com
+eaplay.comvisa.esvisa.dkvisa.devisa.czvisa.comearlytibet.comearngeek.comearphonescheapest.com
+earpod.netearthcam.comvisa.clearthvpn.comvisa.cavisa.be
easic.comeasports.comeasports.jpeasportsactive.comeasportsactiveonline.comeasportsfootball.comeasportsfootballclub.comeasportsmma.comeasportsworld.comvisa-news.jpvisa-atm.comvirtuata.comvirtualtaboo.comvirtualrealtrans.com
eastbabes.comvirtualrealporn.comvirtualrealgay.comvirtualporn.comvirtualpartyworld.comvirtualearth.netvirtualbox.orgeastern-ark.com
+virsto.neteasternlightning.org
+virsto.comviriondb.comvirginpornlinks.com
viralporn.comviralcum.comvipstudiocali.com
vipshoes2.comvipoo.esvipmatureporn.comeastore.comvipissy.comvipheadphones.com
vipergirls.tovipbeatsbydre.comvip-enterprise.com
vip-beats.comeastturkestan.comeastturkistan-gov.orgeastturkistancc.org%!eastturkistangovernmentinexile.usvintagexxxfilms.comeasy.aceasyanticheat.net
easyca.caeasylist.toeasynike.comeasypic.comeasysexporn.com
eater.comvintagemedicalpictures.com
ebahy.comebalovo.comvintagehomemadesex.comebay-authenticate.netebay-confirm.comebay-course.comebay-cz.comebay-delivery.comebay-discoveries.comebay-fashion.comebay-inc.comebay-inc.netebay-inc.orgebay-online.comebay-sales.comebay-stories.comebay-us.comebay-vacation.comebay.atebay.beebay.caebay.chvintageamateurporn.comvintage-erotica-forum.comvinniev.comvine.coebay.com
+vincnd.comvimperator.orgvimeostatus.comvimeoondemand.comvimeogoods.comvimeocdn.comvimeobusiness.comvimeo.frebay.deebay.esebay.frebay.ieebay.inebay.itebay.jpebay.ltebay.mnebay.nlebay.orgebay.phebay.pkebay.plebay.sgebay.usebay.vn
+ebay25.com
+ebay68.com
ebaya.comebayads.comebayads.netebayadvertising.comebayanunsios.netebayauction.comebayaustralia.comebaybags.comebaybank.comebaybenefits.comebayboutique.com
+ebayca.com
+ebayca.orgebaycafe.comebaycar.comebaycareers.com
vimeo.comebaycdn.net
ebaychina.netebayclassifieds.comebayclassifieds.infoebayclassifieds.orgebayclassifieds.tvebayclassifiedsgroup.comebayclassifiedsgroup.infoebayclassifiedsgroup.orgebayclassifies.comebayclub.com
ebaycoins.comebaycom.comebaycommercenetwork.comebaycourse.com
ebayd.com
+ebayde.comebaydlassifieds.comebaydts.comebayedu.comebayeletro.comebayenterprise.comebayenterprise.infoebayenterprise.netebayenterprise.tvebayetc.comebayexpress.sgebayfashion.comebayfashion.netebayforcharity.orgebayforeclosure.orgebayfrance.comebayglobalshipping.com
ebaygroup.com
ebayhabit.com
ebayheels.comebayhots.comebayimg.comebayinc.comebayinc.netebayinc.org ebayincconnectedcommerce.netebayinkblog.comebayinternetsalestax.com
+ebayit.comebayjewelry.comebayjob.com
+ebayla.orgebaylisting.com
ebaylocal.netebaylocationsdevacances.comebaymag.comebaymainstreet.comebaymall.comebaymarketplace.net
ebaymotors.caebaymotors.comebaymotors.orgebaymotorsblog.comebaynow.comebaynyc.com
+ebayon.com
+ebayon.netebayoncampus.comebayopen.comebayopensource.comebayopensource.netebaypakistan.netebaypark.com
ebayparts.comebayprivacycenter.com
+ebayqq.com
ebayradio.comebayrtm.comebayseller.comebayshoesstore.comebayshop.comebayshop111.comebayshopping.orgebaysocial.com
ebaysocial.ruebaysoho.com
ebaysohos.comebaystatic.com
ebaystore.comebaystore77.com
ebaystyle.comebaysweden.com
ebayt.comebaytechblog.comebaytopratedseller.netebaytrading.comebaytradingassistant.com
+ebaytv.orgebayuae.netebayvakantiehuizen.com
ebayvalet.comebayvietnam.netebayworlds.com
ebayy.comvimeo-staging2.com
ebenporno.comvimeo-staging.comvim.orgebony-beauty.comebonyinlove.comebonywebcamhub.comeboobstore.comvilavpn7.xyzebookbrowse.comebookee.comebookforipad.comvilavpn6.xyzvilavpn5.xyzvilavpn4.xyz
ebsco.com
ebscohost.comvilavpn3.xyzvilavpn2.xyzebtcbank.comebuyheadphones.comvilavpn1.xyzvilavpn.xyzvilavpn.comecchinohentai.ruvikiporn.comvijayatemple.orgviewpointsfromfacebook.comviewgals.comviewerswives.netvietdaikynguyen.com
+ecgapp.netechichimato.comechocdn.comechofon.comechosign.comecimg.twviet69.newsviet69.linkecministry.net
+viet69.devecoforme.jpviet.sexvidspornoduro.com
+vidown.com
economist.comeconomistgroup.comeconomistgroupcareers.comvidmpreview.comvidinfo.orgecotect.comecotect.netecpa.frvideozzz.com
+ecscad.comvideoxxxporn.bizecspublisher.comvideostravestis.xxxecuatorianas.bestvideosporno.lifevideosmadeathome.comvideoskaseros.comvideoshorny.comvideosection.comvideosdemadurasx.com
edcity.hkvideosamadoresreais.comedengay.netvideos4sale.comvideopress.comedgecastcdn.netedgedatg.com
edgefonts.netvideopediaworld.comvideomo.comvideomega.tvedgekey.netedgemeplease.com
edgesuite.netvideoleak.meedicypages.comvideolan.orgvideojs.comvideoindexer.aivideodetective.comvideodesexo.blogvideodelivery.netvideochampion.comedisebay.comeditorx.comvideobreakdown.comedmontonservice.comedninfo.comedns.biz
+edoors.comvideobam.comvideo01.orgedu-research.org
+edu.ir
edubridge.comeducation-cadcam.com
video-one.com
video-jav.net
+vidble.com
+eduplus.hk
+edupro.org
+vid.mevictimsofcommunism.org
vica.info
viber.comedx-cdn.orgedx.orgviacomcbspressexpress.com
eebay.com
viacomcbs.com
+eenike.com
+viacom.com
+viacbs.comvia0.comeesti.ee
+vhxqa6.com
+vhxqa4.com
+vhxqa3.com
eevpn.com
+vhxqa2.com
+vhxqa1.com
+vhx.tveff.org
+effers.comvgg8.comefksoft.com
efproject.net
vgcareers.net
efukt.com
vfsforgit.org
+egghead.io
vfsforgit.com
egotastic.comegta.comvfsco.usvfsco.skehgt.org
ehtracker.orgvfsco.se
+ehv.cc
+ehwiki.org
+eic-av.comvfsco.ruvfsco.roeighteen-store18x.jpeilieili.ccvfsco.plvfsco.peeinstein.comvfsco.noeireinikotaerukai.com
eisbb.comeiu.comvfsco.nlvfsco.mxekhindi.comekhokavkaza.comvfsco.lvekolojik.orgeksisozluk.com
el-ladies.comvfsco.ltelasticbeanstalk.comvfsco.krvfsco.jpvfsco.itelderscrolls.comvfsco.invfsco.ievfsco.hu
electbabe.comelectionsmeter.comelectrek.covfsco.frelectricluxury.comelectrochem.orgelectronicarts.comelectronicarts.frelectronjs.org
+element.ioelephantlist.comelephantsdream.orgelephanttube.comelephanttubenew.comelgaronline.com
elgoog.imvfsco.fielifesciences.orgvfsco.esvfsco.ee
elite.comelitebabes.comeliteindianporn.com
+elitvip.ruelixir-lang.orgvfsco.dkvfsco.deellawine.orgvfsco.cz
vfsco.comvfsco.clelog-ch.comelog-ch.netvfsco.ch
+elpais.comelpornoamateur.comvfsco.cavfsco.bg
+elrepo.orgels-cdn.comvfsco.bevfsco.atelsevier-ae.comelsevier.comelsevier.iovfabric.neteltondisney.comvevo.comveryshortintroductions.comveryladyboy.comemac.in
emaga.com
emagic.deverygoodnike.com
+verybs.com
+emanna.comvervesex.com
+embase.com
embed-cdn.comembed.lyembedly.comember3dp.comemberprinter.com
+versly.comembl-hamburg.deembl.deembl.frembl.itembl.orgemblstatic.netversavpn.comembs.orgverpeliculasporno.gratisemcs.orgvermonttibet.orgverizonwireless.comverizonmedia.comemerald.comemergingsolutions.comverizonfios.comverizonenterprise.comverizondigitalmedia.comverizonbusinessfios.comemojipedia.orgverizon.net
emome.netempero-right.mom
+empfil.comempflix.comverizon.comempornium.siteverisigninc.com
+ems-ph.orgverisign.vnemsec.hkverisign.usverisign.twemule-ed2k.com
emulefans.comemuparadise.meverisign.sgverisign.severisign.proverisign.orgenablementadobe.comenanyang.myverisign.net
encoretvb.com
+encrypt.me"encuentroscasualesoecuador.comencyclopedia.comenema-porn.comenema-videos.comenemabasics.comenemaexperiences.comenemahistory.comenemainformation.comenemarotica.comenemas4fun.comenemasexfetish.com
enematube.com
verisign.name
verisign.mobi
verisign.jobsenergystarbuildings.com
verisign.info
enewstree.comenf-cmnf.comverisign.inverisign.hk
enfaaplus.comenfababy.comenfabebe.comverisign.frverisign.esverisign.dkverisign.deverisign.comverisign.chverisign.biz
verisign.asiaverilystudywatch.orgverilystudywatch.comverilystudyhub.comverilylifesciences.com
+verily.com
enfagrow4.comenfal.deverhentai.tvvercomicsporno.xxx
+enfamil.caenfamil.com
+enfamil.es
+enfamil.pl
+enfamil.pt
enfasmart.comengadget.comengagedaily.orgvercel.store
vercel.sh
+vercel.pubvercel.live
vercel.events
+vercel.comengineeringvillage.comvercel.blogenglishforeveryone.org
+vercel.appenglishpen.orgvercel-status.comvercel-dns.comenjoyasianporn.com
enjoyfuck.comveporno.net
vepornhd.club
+veporn.comveoh.comenpirion.comventureswell.com
venmo.org
venmo.net
+venmo.infoenspireformula.comenteentegeh.de
entensity.netentermap.comentermediadb.netentermediadb.org
venmo.comvenmo-touch.comenterprisepaging.com
venezporn.comenterprisessl.comentrust.netentrustdatacard.comvenetianmacao.com
vendu.comepac.tovenchina.com
+venbbs.comepicbrowser.com
epicgames.com
epicgames.dev
epicreads.comvelostrata.com
velocloud.comepigeum.comepikporn.comepinions.comepiscopalchurch.orgepisodic.comvelkaepocha.skepoch.cloudvelkaepocha.cz
epochbase.comepochbuy.comepochcar.comepochhk.com
epochmall.comepochmediagroup.com
epochshop.comepochstories.com
epochtime.comepochtimes-bg.comepochtimes-romania.com
epochtimes.bgvelatest.comvelasystems.comvelasync.comepochtimes.comvelastaging.comvelaserver.comvegasred.comveetclub.itveetcentroamerica.com
epochtimes.cz
epochtimes.de
epochtimes.eu
epochtimes.fr
epochtimes.ie
epochtimes.it
epochtimes.jp
epochtimes.nl
epochtimes.pl
epochtimes.ru
epochtimes.seepochtimeshk.orgepochtimestr.com
epochweek.comepochweekly.comeporner.comveetbangladesh.comveetarabia.comveet.usveet.tvveet.seeprintsw.comveet.ruveet.roveet.ptveet.noveet.nlveet.jpveet.huveet.fr
equinenow.comveet.fiveet.eserabaru.netveet.dkeraofconnection.comveet.deveet.comveet.clveet.ch
erepublik.comveet.caveet.beveet.aterights.net
vector.im
erito.comeriversoft.com
erktv.com
+erlang.orgernestmandel.orgvecchiescopate.casa
ero-anime.netero-comic-hunter.netero-kawa.comero-labs.cloudero-labs.comero-labs.netero-labs.online
ero-labs.siteero-ma-nia.comero-manga-platinum.netero-mangalife.com
eroan.xyz
erocurves.comerodaizensyu.com
vdoav.comvday.ioerodougazo.comerodoujinlog.comerodoujinshi-world.comerodoujinworld.comeroelog.com
eroero69.work
erofights.comerofullsets.net
+erofus.comerogames.comerogazo-jp.neterogazo-ngo.comerogazopple.comerogazou-pinkline.comerogazoufactory.com
erohentai.net
erolabs.clouderolabs.comerolabs.gameerolabs.neterolabs.onlineeromanga-ace.comeromanga-cafe.comeromanga-kingdom.comeromanga-kong.comeromanga-mainichi.comeromanga-school.comeromangadouzin.comeromangajukujo.com
eromazofu.com
erome.comerome.it
+eromon.neteropasture.comeropics.org
+eropics.toeroprofile.com
erosberry.comeroshiko.neterotelki.orgvct.news
eroterest.neterothots.coerotic-artsites.comerotic-hentai.comerotic-photos.neteroticart-top100.comeroticbeauties.neteroticbeautyhub.comerotichdworld.comeroticsaloon.net
erotictube.me
erotikaweb.huerovizor.ru
+eroxia.com
vcloudair.netvcfbuilder.org
+err.shertk.netes-visiontimes.comvcf-online.orgesbeatsbydrebuy.comvcanedge.comvbejeyv.shopescandinavia-arg.comvaultproject.iovaultify.net
vaultify.infovaultify.comvatn.orgvaticannews.va
escobarvip.itvastenm.comescort.guideescortamsterdam1.comescortdude.comescortgirls.beescortrankings.uk
+vansky.com
vanpeople.comvanithaveedu.com
+vanitha.invanitaonline.comvanishstains.com
vanishinfo.czvanishcentroamerica.comvanisharabia.com
vanish.sk
vanish.si
vanish.seeskimotube.com
+eslite.comesm.runesmarthealth.comesmatube.com
esmtp.biz
vanish.ru
vanish.ro
esopworld.com
vanish.pt
esp32.comesp8266.com
vanish.pl
vanish.no
vanish.nlesperanzagomez.org
vanish.itespn.comespn.netespncdn.com
+espnqa.comesposasymaridos.com
espressif.com
vanish.ie
vanish.hu
vanish.fr
vanish.fiesri.com
vanish.es
vanish.dk
vanish.deestudiopenthouse.comesu.dogesurance.com
vanish.cletadult.cometaiwannews.com
vanish.ch
vanish.be
vanish.atvanilla-jp.cometheadphones.cometherdelta.comethereum.foundationethereum.org
ethermine.orgetherscan.iovancouverbmwretailers.ca
+van698.com
+van001.com
+etizer.orgvalvesoftware.com
+etokki.comvaluegb.com
+etowns.net
+etowns.orgvaloryirene.comvaleursactuelles.com
vagrantup.cometsy.comettoday.netvagrantcloud.com
+etviet.cometvonline.hketwealth.comeu-consumer-empowerment.comvaginapics.provaginalultrasound.infovaginal-ultrasound.comvaginacontest.com
+eu.orgeubluecardvisa.comeucasino.com
vagina.nl#eueuropeansustainabledesign.net
eulam.comeurekaselect.com
eurekavpt.comeurobabeindex.comvagabundasdoorkut.neteurocodesoftware.comeurogirlsescort.comeuroipad.com
v8project.orgeuronews.comeuropalibera.org!europeansustainabledesign.com!europeansustainabledesign.net($europeansustainabledesigncouncil.com($europeansustainabledesigncouncil.net
europepmc.org
+v8.deveuropornstar.comeurosexscene.com
v7hds.comevaelfie.comevalviewer.comevanottyvideos.com
evemodels.comeventsinfocus.orgeveria.clubevernote.com
every1dns.neteverydayporn.co
v2raytech.comv2raycn.com
evilangel.comevilx.su
evise.com
+v2ray.coolevolver.com
evolver3d.comevolverpro.comevropaelire.orgevschool.net
v2ray.com
+eworld.comv2ph.com
v2fly.orgv2ex.comexacttarget.comv.gdexascale-tech.com
exblog.jp
+excedo.com
v-has.comv-av.comuymaarip.comexchristian.hkexcitebots.com
uygur.orgexec-appointments.comuyghurtribunal.comuyghurstudies.orguyghurpress.com
uyghurpen.orguyghurcongress.orguyghurcanadian.ca
uyghurbiz.orgexgfvideos.xxxexgirlfriendmarket.comexhentai.orgexiporn.comexmo.comexmormon.org
exoav.comuyghuramerican.orgexotic-ghana.comexoticuganda.comexpatshield.com
expecthim.com
+expekt.comexperience-vmware.comexperiencebillmelater.comuyghuraa.orgexpertmaker.comexperts-univers.comuyghur-j.orgexplicittube.com
exploader.netexploitedcollegegirls.comexploitedteensasia.comexploreintel.comexplorespanking.comexporntoons.netexposedlatinas.comexpressvpn.comexpresswifi.com
+exrates.me
ext-twitch.tvextensions4revit.comextensionworkshop.com
extmatrix.comextraasian.comextraindiansex.comextrajapaneseporn.comextreme-board.comextremepornfilms.comextremetube.comexx.comexxxtra.netexxxtrasmall.comexxxtrasmall1.com
eyevio.jpeyny.comezpc.tk
+ezpeer.comezua.comuwpcommunitytoolkit.comf-dro1d.orgf-droid.comf-droid.org
+f2pool.comf5pf.com
f6988.com
+f8.com
+f95zone.tofaacebok.com
faacebook.com
+uwants.net
faapy.comfaasbook.comfabhairypussy.com
+uwants.comfabricmc.net
+fabuye.topfabuyemian.com
facbebook.comfacbeok.com
+facboo.comfacbook.comfacbool.comfacboox.com
faccebook.comfaccebookk.comfacdbook.com
facdebook.com
face-book.com
+uvwxyz.xyz
+uverse.com
faceabook.comfacebboc.com
facebbook.comfacebboook.com
facebcook.comfacebdok.com
facebgook.com
facebhook.comfacebkkk.com
facebo-ok.comfaceboak.comfacebock.com
facebocke.comfacebof.comfaceboik.comfacebok.comfacebokbook.comfacebokc.comfacebokk.com
facebokok.comfaceboks.comfacebol.comfacebolk.com
facebomok.comfaceboo.comfacebooa.comfaceboob.comfaceboobok.comfacebooc.com
faceboock.comfacebood.comfacebooe.comfaceboof.comfacebooi.com
facebooik.com
facebooik.orgfacebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-hardware.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.netfacebook.brfacebook.cafacebook.ccfacebook.comfacebook.defacebook.designfacebook.hufacebook.infacebook.netfacebook.nlfacebook.orgfacebook.se
facebook.shopfacebook.tvfacebook.us
facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconnect.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdevelopergarage.comfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com
facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.comfacebookquotes4u.com
facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com
facebookw.comfacebookwork.comfacebookworld.comfacebool.com
facebool.info
facebooll.comfaceboom.comfaceboon.com
faceboonk.comfaceboooik.com
faceboook.comfaceboop.comfaceboot.comfaceboox.comfacebopk.com
facebpook.comfacebuk.comfacebuok.com
facebvook.com
facebyook.com
facebzook.comfacecbgook.com
facecbook.com
facecbook.orgfacecook.comfacecook.org
facedbook.comfaceebok.com
faceebook.comfaceebot.comfacegbok.com
facegbook.comfaceid99.comfaceid99.netfaceidglobal.comfaceless.mefaceobk.comfaceobok.com
faceobook.comfaceook.comfacerbooik.com
facerbook.com
facesbooc.comfacesofnyfw.com%!facesoftibetanselfimmolators.infofacesounds.comfacetime.netfacetook.com
facevbook.comfacewbook.cofacewook.comfacfacebook.com
facfebook.com
uux68.comfaciometrics.com
fackebook.comuusextoy.comfacnbook.com
uusexdoll.comfacrbook.comfactograph.info
factpedia.orgfactwire.orgfacultyopinions.com
facvebook.com
facwebook.com
facxebook.comfadebook.com
+faebok.comfaebook.comfaebookc.comfaeboook.comfaecebok.com
faesebook.comfafacebook.comfaicbooc.comfail.hk
uup76.com
uun99.com
uun98.com
uun97.comfairmarket.comfaith100.orgfaithfuleye.comfaiththedog.infofakehub.comfakeorfoto.comfakeorphoto.comfaketaxi.comfakings.com
fakku.net
faldgjalg.xyz
uun96.com
fallenark.com
uun95.com
uun93.com
uun92.com
falsefire.comfalun-co.orgfalun-ny.net
uun89.comfalunart.orgfalunasia.infofalunau.orgfalunaz.netfalundafa-dc.orgfalundafa-florida.orgfalundafa-nc.orgfalundafa-pa.netfalundafa-sacramento.org
falundafa.org
uun87.comfalundafaindia.orgfalundafamuseum.orgfalungong.clubfalungong.de
uun86.comfalunhr.orgfaluninfo.de
faluninfo.netfalunpilipinas.netfalunworld.netfameregistry.com
uun85.com
family-sex.mefamily-simulator.io
uun83.com
uun82.com
familyfed.org
uun79.com
uun78.comuukanshu.comfamilypies.net
familyporn.tvfamilypornhd.comfamilysexsimulator.comfamilysimulator.comfamilysimulator.iofamilystrokes.comfamilyswap.xxx
famima.vnfamosascalvas.comfamous-nudes.com
uuk28.comfamousinternetgirls.com$ famousinternetgirlsgalleries.comfamousnudes.comfamouspornstars.comfamunion.com
fan-qiang.comfanaken.com
fanatical.com
fanbox.ccfandango.com
+fandom.com
+fanfox.netfangbinxing.com
fangeming.comfangeqiang.comfanglizhi.info
fangmincn.org
uug27.comfangong.orgfangongheike.comfangsung.comfanhaodang.comfanhaodian.com
fanhaolou.com
fanhowab.buzzfank.rufanleakstoday.comfanqiang.networkfanqiang.tkfanqiangdang.comfanqianghou.comfanqianglu.comfanqiangyakexi.netfanqiangzhe.com
fans-here.com
+fans17.com
fans66.twfansking.tw
fansnudes.com
+fansone.co
fansta.mefansteek.comfanswong.comfantasiasguatemala.comfantasti.ccfantv.hkfanyue.infofap-xxx.com
fap18.net
+fap666.comfapality.com
+fapcat.com
fapdu.comfapdude.comfapello.comfaperoni.com
fapforfun.net
faphdporn.comfaphouse.comfapmovz.comfapnado.com
fapomania.com
fapopedia.netfappcelebs.comfappeningbook.comfappeningthots.com
fappenist.comfapphub.com
+fapporn.mefaproulette.cofaproulette.onlinefaproxy.com
fapsafari.comfapster.xxxfapteencam.com
faptitans.com
+fapvid.comfaqserv.com
uug26.comfareastpornhub.com
uug25.comfarfetch-apps.comfarfetch-contents.comfarfetch.comfarfetch.net
uug23.com
uug22.com
uu-gg.comutopianpal.comusvimosquitoproject.comusvimosquito.comusus.cc
+ustream.tvfaronics.caustibetcommittee.orgfaronics.comusocctn.comusmc.milfaronics.eu
faronics.techfaronicslabs.comusma.edufaronicswise.com
+fartit.comfarwestchina.comfasebokk.comfasebook.comfaseboox.comfashionbykakao.comusfk.milfashionnike.com
usertrust.com
+userpxt.iousercontent.devfast.comuserapi.comfastestvpn.comfastindianporn.comfastlane.cifastlane.toolsfastly-edge.comfastly-terrarium.com
+fastly.com
fastly.io
+fastly.netfastlylabs.comfastlylb.net
+fastpic.rufastssh.com
faststone.orgfasttext.ccfasttrackreadysupport.com
+fatbtc.comfatstube.com
useplannr.comfavebook.comfavelaporno.comfavepornmovs.comfavepornvids.comfavjapaneseporn.com
+favstar.fmfawanghuihui.orgfaycbok.com
+faydao.comfayuanbooks.comfaz.net
+fb.careers
+fb.com fb.gg fb.mefb.watchuselessjunk.com
fbacebook.comfbaddins.com
fbbmarket.comfbboostyourbusiness.com
fbcdn.com
fbcdn.netfbf8.comfbfeedback.com
+fbhome.comfbidb.io
fbinc.comfbinfer.comfbinnovation.comfbiqiyiav.buzz
fbjav.comfblitho.comfbmarketing.comfbmessenger.comfbooktaiwan.comfbredex.com
fbreg.com
+fbrell.com
+fbrpms.com
fbsbx.com
fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org
fburl.comfbwat.chfbworkmail.comfc2.comfc2blog.netfc2china.com
fc2cn.com
fc2ppv.tv
+uscnpm.org
fcacebook.comfcaebook.comfcebook.comfcebookk.comfcfacebook.comuscardforum.comusatodaynetworkservice.comfcw.xxx
fcww0.comfdacebook.infofdc64.de
fdc64.orgfdc89.jpusatoday.comfdiintelligence.com
+fdroid.orgusaip.eufeacboo.comfeacbook.com
feacbooke.com
feacebook.comfeanonlinear.comfeaturecam.comfecbbok.comfecbooc.comfecbook.com
feceboock.comfecebook.netfeceboox.com
fececbook.com
usaco.org
usacn.comfedoraforum.orgjustporn.comfedorapeople.orgfedoraproject.orgfeedburner.com
feeder.cofeedherfuckher.com
+feedly.com&"usa-beatsbydreheadphonesonsale.net
feedx.netfeelssh.comfeer.com
feet9.com us.tourukawa.com
+fei.rufeifeiss.comfeipang.linkfeitian-california.orgfeitianacademy.orgfeixiaohao.com
urlparser.comfemalefounderscomp.comfemalestars.comfemdomcc.netfeministteacher.comurlgalleries.net
+femjoy.comfemscat.comfengzhenghu.comfengzhenghu.net
feook.comferabook.comurlborg.comferronetwork.comferryclean.com
fescebook.comfesebook.comfesery-com.sbsfestinhasbrasil.comurduvoa.com
fetish-bb.comfetishbank.netfetishdreamz.comfetishes.camfetishfishcams.comfetishpapa.comfetishpornonly.comfetishshrine.comfetlife.comfevernet.com ff.im
ffacebook.com
+urchin.com
fffdm.comfffff.atfffucked.com
+fflick.comurbansurvival.com
fflnk.net
+fflogs.com
+ffmpeg.orgffotolia.com
ffprofile.com
ffvpn.com
fgacebook.comfgirl.churbandictionary.com
fgmtv.net
fgmtv.org
fhreports.netfi11.comfi11av1.comfi11tv1.com
+urasma.com
ficeboock.com
uraban.mefictionmania.tvura-akiba.jpfifastreet.comfifastreet3.comur7s.com
+upwill.orgfightforux.com
figma.com
figprayer.com
fileflyer.comfiles2me.com
fileserve.comfilesmonster.vipfilesor.comfilipino-music.netfillthesquare.orguptodown.com
+filme2.xxxfilmeleporno.xxxfilmeporno.blogfilmeporno.xxxfilmesdesexo.blog
+uproxy.org
+uporno.xxxfilmespornos.netfilmingfortibet.orgfilmporno.itfilmsexeporno.comupornia.com
+upmedia.mgfiltercams.com
filthdump.com
+uplynk.com
+uplust.comfimfiction.netfinalcutpro.comfinanceleadsonline.comfinancetwitter.comfinancialadvisoriq.comfinancialsoccer.cafinchvpn.comfind-apple.comuploadstation.com
findacard.comfindasians.livefindbare.com
findcams.liveuploaded.tofindhername.netfindmespot.comfindmybeats.comfindmyipad.comfindsav.com
findtubes.comfindvrporn.comfindyourlimits.comfindyoutube.comfindyoutube.netfine-art-nude.orguploaded.netfineartteens.comfinenike.com
upload4u.infofinevids.xxxfingerdaily.com
finish.at
finish.bg
+uplinq.com
uplay.comuplay-istrip.comupjav.ccupholdjustice.orgupghsbc.com
finish.de
finish.es
finish.fr
finish.gr
finish.hu
finish.lv
finish.pl
finish.pt
finish.ro
finish.si
finish.skfinisharabia.comupfrontfea.comfinishdishwashing.cafinishdishwashing.com
finishinfo.be
finishinfo.clfinishinfo.comupfrontcfd.comupdatetube.com
finishinfo.cz
finishinfo.fi
finishinfo.it
finishinfo.jp
finishinfo.nl
finishinfo.no
finishinfo.ru
finishinfo.sefinishkilpailu.fifinishwin.be
+finler.netfinlitsummit.orgfiotolia.comup01.ccuoherald.comfire-emblem-heroes.comfirearmsworld.netuocn.orgfirebase.comfirebase.iofirebaseapp.comfirebaseio.comfireemblemawakening.com
+uo.comfirefox.comfirefoxusercontent.comfireofliberty.org
unwire.hkfireside.fmfiresidegatherings.comfirestone.clunusualporn.netuntraceable.us
+unstyle.usunstable.icu
unseen.isfirestonebpco.comfirestonecomercial.clunrealtournament.comunrealengine.comunraveltwo.comunravel2.comunpo.org!firestonecompleteautocare.comfirestonedrivestore.comfirestoneip.comfirestonerewards.comfirestonetire.cafirestonetire.comfiretweet.iofirewire.clfirewire.eufirmaprofesional.comfirst-ns.defirstanalvideos.com
unpkg.comfirstfivefollowers.comfirstgynexam.comfirstpelvicexam.com
firstpost.comunodedos.com
firstrade.comunlocklimitlesslearning.com
fishmpegs.com
+fitbit.comfitgirl-repacks.sitefitnakedgirls.com
+five-d.comfivestarpornsites.comfixtracking.comfjlkajhgfa.top
unkoscene.com
fl310.comflagrasamadores.netflagsonline.itunknownspace.orgflameunleashed.com
flaru.comflashtranny.comflatandfuckedmilfs.comflathub.orgunix100.comflatpak.org"universitypressscholarship.com
+fldz8.buzzflecheinthepeche.frfleshbot.comfleshlyx.comfleursdeslettres.comflexsig.comflgg.usflgjustice.orgfli8.xyzflic.kr
12bet.com
+flickr.com
+flickr.netflickrhivemind.netflickriver.com
fliggy.hk
fling.com
flipboard.comflipfap.comflipkart.comflipnotestudio.com
flipshare.comflipwithsurface.comflirt4free.com
flirtmoms.comflirtyhoookup.com
+flitto.com
fljmh.com
flnet.orgflog.tw
+floorp.appfloppy-tits.comflow.devflow.org
flowfront.com
flowfront.netflowtype.orgfluidfxapp.comfluidpreview.com!universalstudioshollywood.comflutter.devflutterapp.com
+flyflv.comflyingjizz.com
+flyvpn.comflyyindh-cc.sbs
flyzy2005.com
+fm4.jpfmav.top
+fmav51.icu&"universalpicturesinternational.comfmcebook.com
fmdesktop.comuniversalpictures.comuniversalorlando.comunity3d.comfnac.befnac.com
fnacebook.comfnlondon.comfnmt.esfoampositeshoes.com
fochk.org
unity.comfocustaiwan.twfocusvpn.comfofg-europe.netfofg.orgfofldfradio.orgfoftolia.comunitedsocialpress.com
follasian.comfollowpype.comuniswap.orgfonolia.comfontawesome.comfontbook.comfontexplorerx.com
unisat.io
fonts.com
unirule.cloud
fonts.netfontshop.comfontsinuse.comuninhibitedcomix.comunification.net
+foofle.com
+fooooo.comfootprintdns.comfootseen.comfootstockings.comfootwear-cadcam.com
+forbes.com
forbesimg.comforbiddenasian.comforbiddenmomsarchive.com
force.comforduck.cyouforeignaffairs.comforeignpolicy.com
+uni.ccunholyknight.comforgecdn.netforhertube.comunfiltered.news
formit360.comformitfactory.com
forpojie.picsunderwoodammo.comfortawesome.comunderlords.comforthebadge.comforthethrone.comunderhentai.netuncyclopedia.twfortnite.comuncyclopedia.hkuncyclomedia.orgfortuneinsight.comuncensoredsexparties.comuncensoredhentai.xxx
+uncams.comunbrandedproducts.com
unblocksit.esunblocker.ytunblockdmm.comunblock-us.com
+un.org
umich.edu
umass.eduforum4hk.comforzamotorsport.netforzaracingchampionship.comforzarc.comfosebook.com
fotile.mefotiolia.comfotoiia.comfotolia-noticias.com
+fotolia.ccfotolia.com
+fotolia.tvfotolja.comfotoscaserasx.comfoundationdb.orgultraxs.comultravpn.frfourthinternational.org
+128100.xyzfox-corporation.comfox-news.comfox.com
+fox.tvfox10.tv
fox10news.comfox10phoenix.com
fox11.comfox13memphis.com
fox13news.com
fox23.comfox23maine.com
+fox247.com
fox247.tv
fox26.comfox26houston.comfox28media.com
fox29.comfox2detroit.comfox2news.com
fox32.comfox32chicago.comfox35orlando.comfox38corpuschristi.com
fox42kptm.com
fox46.comfox46charlotte.com
fox47.comfox49.tvfox4news.comfox51tns.netfox5atlanta.com
+fox5dc.com
+fox5ny.com
fox5storm.comfox6now.comfox7.comfox7austin.comfox9.comfoxacrossamerica.comfoxaffiliateportal.comfoxandfriends.com
+foxbet.comfoxbusiness.comfoxbusiness.tvfoxbusinessgo.comfoxcanvasroom.comfoxcareers.comfoxcharlotte.comfoxcincy.com
foxcincy.jobsfoxcincy.netfoxcollegesports.comfoxcorporation.comfoxcreativeuniversity.com
foxcredit.com
foxcredit.orgfoxd.tv
+foxdcg.comfoxdeportes.comfoxdeportes.netfoxdeportes.tv
foxdie.usfoxdigitalmovies.comfoxdoua.comfoxentertainment.comultradonkey.com
+foxest.com
+foxfaq.com
+foxfdm.comfoxfiles.com
+foxgay.com
foxhq.com
+foxinc.com
foxkansas.com
foxla.comfoxla.tvfoxlexington.comfoxmediacloud.com
foxnation.comfoxnebraska.com
+foxneo.comfoxneodigital.comfoxnetworks.infofoxnetworksinfo.com
+foxnews.ccfoxnews.comfoxnews.netfoxnews.org
+foxnews.tvfoxnewsaffiliates.comfoxnewsaroundtheworld.comfoxnewsb2b.comfoxnewschannel.com
foxnewsgo.net
foxnewsgo.orgfoxnewsgo.tvfoxnewshealth.comfoxnewslatino.comfoxnewsmagazine.comfoxnewsnetwork.comfoxnewsopinion.comfoxnewspodcasts.comfoxnewspolitics.comfoxnewsradio.comfoxnewsrundown.comfoxnewssunday.com
foxon.comfoxphiladelphia.comfoxplus.comfoxpoker.comfoxporns.com
foxrad.io
foxredeem.comfoxrelease.comfoxrichmond.com
foxrobots.comfoxsmallbusinesscenter.comfoxsmallbusinesscenter.netfoxsmallbusinesscenter.org
foxsoccer.netfoxsoccer.tvfoxsoccermatchpass.comfoxsoccerplus.comfoxsoccerplus.netfoxsoccerplus.tvfoxsoccershop.comfoxsports-chicago.comfoxsports-newyork.comfoxsports-world.comfoxsports.clfoxsports.coultimaonline.com
foxsports.comultimaforever.comulop.netulol.com
ulike.net
ukwhoswho.com
+uku.im
+ukipad.comuk-exhibitionist.comujizzcn.comujapanesesex.comuisp.comfoxsports.gtfoxsports.info
foxsports.net
+uiporn.comfoxsports.pefoxsports.svfoxsports.uyfoxsports2.comfoxsportsflorida.comfoxsportsgo.comfoxsportsla.comfoxsportsnetmilwaukee.comfoxsportsneworleans.comfoxsportsracing.comfoxsportssupports.comfoxsportsuniversity.comfoxsportsworld.comfoxstudiolot.com
+foxsub.com
foxsuper6.comfoxtang.com
+foxtel.com
uighurbiz.netfoxtelevisionstations.comfoxtube.com
foxtv.comfoxtvdvd.com
foxuv.comfoxweatherwatch.com
fpacebook.com
uighur.nl
fpmt-osel.orgfpmt.orgfpmt.twfpmtmexico.orgfptolia.comfqcebook.comfqok.orgfqrouter.comfr-beatsbydrestore.com
+ui.com
fracebook.comfragment.comfragrancebay.comfrancecasquebeatssolde.comfrancemail.comuhub.comfranklc.comuhrp.orgfrcasquesbeats.comfreakshare.comfree-3d-porn.comfree-aa.comfree-abbywinters.comfree-avx.jpfree-erobooks.com
free-gate.orgfree-hada-now.org
free-proxy.czfree-sns.comfree-ss.sitefree-ssh.comfree-strip-games.comfree-wap-tube.comfree-xxx-porn.orgfree.fr
+free00.com
+free18.netuhdwallpapers.org
free64all.comfreeadultcomix.comfreeadultgames.tvfreealim.comfreeanimalporn.netfreearabsexx.com
freeav.tv
freeb.comfreebasics.comfreebasics.netfreebdsmxxx.orgfreebeacon.comfreebigmovies.comfreebrowser.org
+freebs.comfreebsd.orgfreecamsfan.comfreecartoons.bizfreechal.comfreechatnow.com
freechina.netfreechina.newsfreechinaforum.orgfreechinaweibo.comfreecodecamp.orgfreeddns.comfreeddns.orgfreedirecttvspecial.comfreedomchina.infofreedomcollection.orgfreedomhouse.orgfreedomplatform.tvfreedomsherald.orgfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreefbx.comfreeforums.org
+freefq.comfreefuckvids.comfreegao.comfreegaypornhdtube.comfreegaysexgames.comfreehdinterracialporn.infreehdvideos.xxxfreehentaipic.comfreehentaistream.comfreehongkong.orgfreehqtube.comfreehulu.comfreeilhamtohti.org
freejavbt.comfreejavporn.mobifreekazakhs.orgfreekwonpyong.orgfreelifetimefuckbook.com
freelotto.com
+uhairy.comfreeman2.comfreematuresgallery.com
freemoren.comfreemorenews.comfreemuse.orgfreenet-china.orgfreenetproject.orgfreenewscn.comfreenode.net
freeomovie.tofreeones.comfreeopenvpn.com
+freeoz.orgfreeporn.comfreepornhdonlinegay.comfreepornhentaigames.comfreeporno.asiafreepornpreview.net
freepornq.comfreepornvideos.lifeuguisupapa.netfreesexalbum.comfreesexgames.gamesfreesexgames.wsfreesexvideos2k.comfreesexyindians.comfreesexyindians.org
+freessh.usfreessl.comfreetcp.com
freetibet.net
freetibet.orgfreetibetanheroes.orgfreetribe.mefreeuseporn.comfreeviewmovies.comugo.com
+freevpn.me
+freevpn.nlfreewallpaper4.mefreewebs.comfreewechat.com
freeweibo.comfreewww.bizfreewww.infofreexinwen.comfreexvideos.orgfreexxx.bestfreexxx.winfreexxxporn.orgfreeyellow.comfreeyouporn.mobifreeyoutubeproxy.netufreevpn.com
freezhihu.orgfreieporno.comfreindfeed.com
uflash.tv
frescolib.orgfreshporno.net
freshscat.comfreudbox.com
freyalist.comfriendbook.info
friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.comfriends-of-tibet.orgfriendsoftibet.org
fring.comfringenetwork.comfrishoes.comfritchy.comfrom-pr.comfrom-sd.comfromchinatousa.netfrommel.netueberamazon.defrontiersin.orgudtrucksmeena.comfrontlinedefenders.orgfrontrow.comfroogle.comfrootvpn.com
frostbite.com
frprn.comfruitycams.comfsacebok.comudnfunlife.comfscebook.com
+fscked.orgfsdn.com
+fse.tvudndata.com
+udnbkk.com
+fsmone.comudn.comudfs.com
fssta.com
uderzo.itfstopimages.com
fsurf.com
+ft.com
ftadviser.com
ftcdn.net
ftchinese.comfteproxy.orgftiecla.comftop.ru
ftopx.comftp1.biz
ftpserver.bizudemycdn.comftvgirls.comftvmilfs.com
udemy.comftx.comfu62.vipfucd.comfuchsia.devfuck-xxx-movies.comfuck.comfuck.sc
+fuck55.net
fuck6teen.comfuckableteens.netfuckbookecuador.com
fuckcnnic.netfuckcuck.com
fuckgames.xxxfuckgfw.orgfuckingawesome.comfuckingfreemovies.comfuckingmatures.comfuckingthreesome.comfuckmatureporn.comfuckmaturepussy.comfuckmeplease.net
fuckmoral.comfuckmypakistanigf.comfucksexhub.comfuckteenvids.comfuckthathussy.comfucktube.com
+fuckup.xxxfuckvideos.bizudacity.comfuhouse.club
fujinkoron.jp
+fujossy.jp
fukzr1.ccfulanax.comucla.edufuli-wangzhan.com
fuli3.net
fulib711.shopfuliba2021.comfuliba2023.netfulione.comfulldesisex.comfullerconsideration.comfullfuli.com
fullhdxxx.comfullpornnetwork.comfullsexmovs.comfulltaboo.tvfullxxxmovies.net
fulue.comfundaiphone5s.comfundfire.comfundinginstitutional.comfundingrates.xyzfundpaypal.comfundraisingwithfacebook.comfundsupermart.comfunf.twfunimation.comfunkyimg.comfunnyfacebook.orgfunnyordie.comfunp.comfunshemale.comfuq.com
fuqqt.comfuraffinity.net
furbo.orgfurhhdl.orgfurinkan.comfurl.netuchicago.edufurrypornvideos.com
+furuke.com
fury.blogfury.cofury.dev
fury.helpfury.ioucdc1998.orguc-japan.orgubuntuforums.orgfusionlifecycle.comfusionproductionapps.comfuskator.com
+fusker.xxxfutanarihq.comfuthead.com
futpromos.com
futunited.com
+ubuntu.net
+ubuntu.comubuntu-touch.ioubnw.netfuturechinaforum.orgubncloud.comubisoftconnect.comfuturemessage.org$ futureofbritishmanufacturing.comfutureofbusinesssurvey.orgfutureofmaktingthings.com
futureshop.caubisoft.comubi.com
uberproxy.netfux.comfuxporn.com
fuyin.netfuyindiantai.orgubereats.comfuzokudx.comuber.com fw.cmfxcm-chinese.comfxcorporate.com
+fxn.ws
fxnetwork.comfxnetworks.comuber-assets.com
+fxporn.netfzdm.comfzdshare.net
+fzh999.com
+fzh999.netfzlm.com
+g-area.orgg-queen.comg-technology.com
g-tun.comg-tvapp.comg-xxxhub.comg.co g.dev
+g.page
+g0v.socialg6hentai.comgab.comgabocorp.comgacebook.com
+ubddns.orggaeproxy.comgaforum.orggagaoolala.com
+ub0.ccuaa.com
gaito.xyzgalaxyappstore.comgalaxymacau.comgalaxymobile.jpgale.com
galegroup.comgalenwu.comgallery-dump.clubgalleryarchives.comgalstars.netu9un.com
gamboporn.comgamcore.comgame-platform.netgame-repack.sitegame735.comu9a9.comgamebeforethegame.comgamejolt.comgameon-masters.comgamepass.com
gamepedia.comu9a9.ccu3c3.comgameroom.com
gamerotic.comgamesathletes.comgamesfuckgirls.comgamesofdesire.comgamesstack.comgameuxmasterguide.comu15.infogaming-notebooks.comgamousa.comgandhara.ru
gandi.net
+ganges.comganjing.com
ganjing.worldganjingworld.comgannett-cdn.comgannett.comgannettdigital.comgao1.cc
+gaofuwu.ccgaoming.net
gaopi.netgaozhisheng.netgaozhisheng.orggaozs18.buzzgardennetworks.comgardennetworks.orgu.nutytporno.online
+garena.comgarena.live
garena.my
garena.ph
garena.sg
garena.tv
garena.tw
garena.vn
garenanow.comgarotaporno.comgartlive.comtytng189.comgastrointestinalexam.comgate-project.comtyrecadcam.comgate.ccgate.iogatecoin.comgatedata.orggateimg.comgateio.livegateio.servicestyre-cadcam.com
typora.iotypography.comtypesquare.comgateway.devtypepad.com
+gather.comgatherproxy.comtypenetwork.comgauleporno.xxx
gay.bingogay0day.comgay1069sex.comgay4tube.com
gayapatal.comgayasianamateurs.comgayasiantheater.comgaybeeg.info
gaybf.comgayboystube.com
gaybubble.comgaycamvideos.net
gaycn.net
gaycock4u.comgayforit.eugayfuckporn.comgayfuror.comgayharem.com
gayheaven.org
+gayhub.comgaymaletube.com
gaymap.ccgaymenring.comgayonthenet.net
+gaypad.netgaypinoyporn.comgayporn.comgayporn.progaypornforyou.comgaypornhdfree.comgaypornlinks.comgaypornlove.netgaypornmenu.comgayporno.fmgaypornonly.comgaypornsky.comgayrawclub.comgayroom.comgaysonic.eugaystarnews.comgaystream.pwgaythebest.comgaytopcams.comgaytube.com
gayvl.netgaywatch.comgazotube.com
gazounabi.comtypekit.net
+126728.nettypekit.comtypeisbeautiful.com
gbnews.uktyms2022.com
gbxml.nettyler-brown.com
+tycool.com
txxx1.comtxxx.com
+txvlog.com
txvia.comtxqzz34r.com
txdirectv.comtxcloud.net
+tx5254.com tx.me
gcld-line.com
twyac.orggclooney.com
+gclubs.comgcmasia.com
twvid.com
+gcolle.netgcpnews.com
+gcr.iotwurl.nlgcrtires.com
twttr.net
twttr.comtwtrland.comtwtrdns.net
twtkr.comgdansk-amazon.comgdbt.netgdian-dh.momgdsrx888.comgdzf.org
+gears5.comgearspop.comgearstactics.com
+twt.tlgeceguby.ru
+twstar.netgeek-art.netgeek-squad-support.comgeek-squad.netgeek-squad.orggeek-squads.netgeekerhome.comgeekheart.infogeeksquad.cageeksquad.cc
geeksquad.com
geeksquad.netgeeksquad.tvgeeksquadcares.comgeeksquadcentral.comgeeksquadforums.comgeeksquadonline.comgeeksquadprotectionplan.orggeeksquadservices.orggeeksquadwebroot.orgtwskype.comtwreporter.org
+twporn.netgeforce.comtwoo.comgeilegratisporno.com
geileomas.comgeinoueroch.comtwnextdigital.comgekikame.comgelbooru.comgelbooru.metwline5.com
+twlegs.comgemfire.netgemfury.com
+gemini.com
+twiyia.comtwitzap.com
+gendai.netgenerated.photostwitvid.com
twitturly.comtwitturk.comtwitthat.comgeneticconstructor.comgeng8cn.xyz
gengba-av.mom
gengba.cc
+genius.comgenkai-hounyo.com
twittertim.estwitterstat.usgenshin-porn.comgenshinh.comgenshinimpact.com
+gentoo.orgtwitterrific.com
geocities.comgeocities.jpgeodesummit.comtwitteroauth.com
geolytics.comgeoport.comtwittermail.comgeospatialimaging.comgeospatialinfo.comgeotrust.com
twitterkr.comgeph.iotwitterinc.comgeraldoatlarge.comtwittergadget.comgerefoundation.orggerritcodereview.comtwitterflightschool.comget.appget.devget.howget.newget.pageget.rsvpgetadblock.comtwitterfeed.comgetastrill.comgetbootstrap.comgetboxer.comgetbraintree.comgetbumptop.comgetbuzzsaw.com
+getchu.comgetcloak.comgetcomposer.orggetdirect.tvgetdrebeatssale.comgetdropbox.comgetfappy.com
getfedora.orggetfoxyproxy.orggetfreedur.com
+getgom.com
+geti2p.netgetiton.comgetjetso.comgetlantern.orggetmalus.com
getmdl.iogetoutline.org
getpocket.com
+getporn.tvgetprintersupports.comgetscorecash.comgetsexgames.comgetsocialscope.comgetsync.com
gettr.com
gettrials.comgettyimages.aegettyimages.atgettyimages.begettyimages.cagettyimages.chtwittercounter.comtwittercommunity.com
twitter4j.orggettyimages.com
+twitter.jptwitter.comtwitter.bizgettyimages.degettyimages.dkgettyimages.esgettyimages.figettyimages.frgettyimages.hkgettyimages.iegettyimages.ingettyimages.itgettyimages.nlgettyimages.nogettyimages.ptgettyimages.segetuploader.com
+getws1.comgetwsone.comgetzola.orggfacecbook.com
gfarchive.comgfashion.comgfbv.detwittbot.netgfleaks.comgfotolia.com
+gfpics.com
gfpornbox.comgfpornmovies.comgfpornvideos.com
gfrevenge.com
+gfsale.comtwitstat.com
gfw.press
+gfw.report
+gfx.ms
+gfycat.com
+gfysex.com
+ggdiao.com
ggjav.comggoogle.com
ggpds.com
ggpht.com
ggsrv.com
ggssl.comghcr.ioghettotube.comghidra-sre.orgtwitpic.comghostgames.com
ghostpath.comghut.orggiantessbooru.comgiantessnight.comgiffgaff.comgiffgaff.designgifnuki.com
+gifree.com
twitonmsn.comgiga-web.jpgigabyte.com
gigantits.comgigaporn.orggigaxvideos.com
+gigjam.comgigporno.rutwitoaster.comgimy.ccgimy.cogimy.togimy.tv
+ginmoe.comginzasonypark.jpgipscorp.comgiratina.comgirl-secret.comgirl7942.comgirlbanker.comgirlfriendgalleries.netgirlfriendhomeporn.comgirlfriendvideos.comgirlfriendvids.netgirlfuckshorse.netgirlfur.com
girls.xyzgirls2see.chgirlscanner.ccgirlscv.comgirlsdelta.comgirlsfuck-tube.comgirlsheaven-job.netgirlsnudepic.comgirlsofdesire.orggirlsongirlstube.comgirlspoopingtube.comgirlssexxxx.comgirlstryanal.comgirlsway.comgirlswelustfor.comgirlsxxx.netgisplanning.comgit-scm.com
+git.iogitbook.com
+gitbook.iogithub.blog
+github.comgithub.community
+github.dev
github.io
githubapp.comgithubassets.comgithubcopilot.comgithubhackathon.comgithubnext.comgithubpreview.devgithubstatus.comgithubuniverse.comgithubusercontent.comgitlab-static.net
+gitlab.com
gitlab.io
+gitlab.netgitstar.comgitstar.netgittigidiyor.netgittigidiyorsikayet.comgivemebuzzsaw.com
+gizlen.netgizmoxxx.com
gjczz.com
twitmania.comtwitlonger.comgladporn.com
+twitiq.comtwitgoo.comglam0ur.comtwitgether.com
twitcomike.jpglamourtits.com
twitchsvc.netglasamerike.net
twitchcdn.net
twitch.tv
twitcause.comtwitbrowser.net
+twit2d.comtwistys.comtwistory.nettwisternow.com
twisterio.comtwistedlinks.net
+twistar.cc
glass8.eu123videos.tvgleline.comtwishort.com
+twipple.jptwip.me
twinprime.comtwinkybf.comglobal-sci.orgtwinkspornos.comtwinkboyfriends.tv
globaledu.orgglobaljihad.netglobalmediaoutreach.comglobalmuseumoncommunism.orgglobalrescue.netglobalriskregulator.comglobalsecurity.orgtwindexx.comglobalsign-media.com
globalsign.be
globalsign.chglobalsign.cloud
twimg.comtwimbow.com
+twilog.orgtwilightsex.comtwiggit.org
globalsign.es
globalsign.eu
globalsign.frglobalsign.net
globalsign.nlglobalspec.comglobaltm.orgglobalvoices.orgglobalvoicesonline.org
globalvpn.nettwifuli.com
glock.com
+twiffo.comgloporn.com
gloryhole.comgloryholeswallow.comgloryofheracles.comglorystar.me
+twifan.comtwiends.comtwidouga.tvtwidouga.net
+twicsy.comtwicountry.org
twibs.comtwibbon.com
+twibble.detwibase.comtwi-videos.nettwhentai.comtwgreatnews.comtwgreatdaily.com
twftp.orggluckman.comtwerkingbutt.comtwelve.today
tweez.net
glype.com
glyphsapp.com
+123sex.top
gmail.comtweetymail.comtweetwally.comtweettunnel.com
+gmgard.comtweetree.comgmhz.org
tweetrans.comgmll.orgtweetphoto.comgmnetworks.netgmodules.com
+gmoney.orgtweetmylast.fmtweetedtimes.comgnai-dh.sbsgnailapp.sbs
tweetdeck.comtweetcs.com
gnews.org
gnom-cham.comgnu.orggnzi.xyz
gnzi1.topgo-disneyworldgo.comgo-gaytube.comgo-lang.comgo-lang.netgo-lang.org
+go-pki.com
+go.com
+go.devtweetboner.biz
go141.com
go2av.comtweetboard.comgoagent.biztweetbackup.comgoagentplus.comtweepml.org
gobeatsye.comgobet.ccgobianywhere.comgobuildx.netgobuyonlinestore.netgockhuatviet.com
123rf.comgodaddy.comtweepmag.comgodfootsteps.org
+godns.work
godoc.orgtweeplike.megodsdirectcontact.orgtweepguide.comgodsimmediatecontact.comgoduckgo.comtweaksoftware.comtweakfilms.comgofucker.comgofuckmenow.comgofundme.comgog-statics.comgog.comtweakadmin.com
gogle.com
gogo-load.comgogoanime.vcgogoanime.wiki
gogoanime3.cogogocdn.net
+gogole.com
gogotaku.infogogotunnel.comtwcomix.comgohentai.net
twblogger.comtwbbs.tw
gokbayrak.com
+golang.com
+golang.net
+golang.orggold-gay.com
twbbs.orggoldbet.comgoldbetsports.comtwavking.comgolden-ages.orggoldeneyevault.comgoldenfrog.com
goldengate.hu
+goldgay.tvgoldjizz.comgoldnikeclub.com
twavi.comgoldsexvideos.comtwaud.iogoldstep.netgoldteenporn.comgoldvip.cyougoldwave.comgolos-ameriki.rugolosameriki.comgongkou-cc.sbsgonglchuangl.netgongm.in
gongmeng.infogongminliliang.com
+gongwt.comgongyichuangyi.net
+gonike.comgonzo-movies.com
gonzo.com123hplaserjet.com
+goo.gltwapperkeeper.comgood-gay.com
+gooday.xyzgooddaychicago.comgooddns.infotwaitter.comgoodhope.schoolgoodporn.togoodporno.ccgoodreaders.com
goodreads.com
goodsdunk.netgoodsexporn.org
tw985.com
goodtv.tvgoofind.com123dsculpt.com
+googel.com
+googil.com
googl.com123dpro.netgoogle-access.netgoogle-analytics-cn.comgoogle-analytics.comgoogle-syndication.com
google.ad
google.ae
google.al
google.am
google.as
google.at
google.az
google.ba
google.be
google.berlin
google.bf
google.bg
google.bi
google.bj
google.bs
google.bt
google.by
google.ca
+google.cat
google.cd
google.cf
google.cg
google.ch
google.ci
google.cl
google.cm
google.cotw01.org
+tw-npo.orgtw-blog.comtvunetworks.com
tvpromise.comtvplayvideos.comtvnaviweb.jp
+tvider.comtver.jp
tvbweekly.com
+tvbusa.comtvboxnow.comtvbanywhere.comtvb.comtvappstore.net
+tvants.com
+tv.com
tuzaijidi.com
tuvpn.comtutanota.comtuta.io
tushycash.com
tushy.comturntable.fm
+google.comturkistantimes.comturkeyblocks.orgturbotwitter.com
turborepo.org
turbohide.comturbogvideos.comturbobit.netturansam.orgtunsafe.comtunnelr.comtunnelblick.nettunnelbear.com
+tunein.comtuncommercialbank.comtumview.com
tumutanzi.com
+tumblr.com
tukif.comtuitwit.com
+tuidang.setuidang.orgtuidang.nettuibeitu.nettug.orgtubxporn.xxxtubxporn.comtubsexer.comtubinge.comtubexclips.comtubewolf.comtubevintageporn.com
tubev.sex
tubev.protubetubetube.com
tubetria.mobi
tubetop69.com
tubestack.comtubeshemales.com
+tubesex.metubesafari.comtubepornup.comtubepornstars.comtubepornlist.comtubepornclassic.comtubepatrol.orgtubeorigin.comtubemovies4k.com
tubemature.tvtubelombia.net
tubeislam.comtubegold.xxxtubegals.comtubegalore.comtubefuckme.net
tubeenema.comtubedupe.comtubedna.comtubecup.com
google.cv
google.cz
google.de
+google.dev
google.dj
google.dk
google.dm
google.dz
google.ee
google.es
google.fi
google.fm
google.fr
google.ga
google.ge
google.gg
google.gl
google.gm
google.gp
google.gr
google.gy
google.hn
google.hr
google.ht
google.hu
google.ie
google.im
google.iq
google.is
google.it
google.je
google.jo
google.kg
google.ki
google.kz
google.la
google.li
google.lk
google.lt
google.lu
google.lv
google.md
google.me
google.mg
google.mk
google.ml
google.mn
google.ms
google.mu
google.mv
google.mw
google.ne
+google.net
google.nl
google.no
google.nr
google.nu
+google.org
google.pl
google.pn
google.ps
google.pt
google.ro
google.rs
google.ru
google.rw
google.sc
google.se
google.sh
google.si
google.sk
google.sm
google.sn
google.so
google.sr
google.st
google.td
google.tg
google.tk
google.tl
google.tm
google.tn
google.to
google.ttgoogle.ventures
google.vg
google.vu
google.ws"googleacquisitionmigration.comgoogleadservices-cn.comgoogleadservices.comgoogleanalytics.comgoogleapis-cn.comgoogleapis.comgoogleapps-cn.comgoogleapps.comgooglearth.comgoogleartproject.comgoogleblog.com
googlebot.comgooglecapital.comgooglecert.netgooglechinawebmaster.comgooglecode.comgooglecommerce.comtubecop.comgoogledanmark.comgoogledomains.comgoogledrive.comgooglee.comgoogleearth.comgooglefiber.comgooglefiber.netgooglefinland.comgoogleflights-cn.netgooglegroups.comgooglehosted.comgoogleideas.comgoogleinsidesearch.comgooglelabs.comgooglemail.comgooglemaps.comgooglemashups.comgoogleoptimize-cn.comgoogleoptimize.comgooglepagecreator.comgooglephotos.comgoogleplay.comgoogleplex.comgoogleplus.comgooglescholar.comusagooglesile.comgooglesource.comgooglestore.comgooglesverige.comgooglesyndication-cn.comgooglesyndication.comgoogletagmanager-cn.comgoogletagmanager.comgoogletagservices-cn.comgoogletagservices.com!googletraveladservices-cn.comgoogletraveladservices.comgoogleusercontent.comgooglevads-cn.comgoogleventures.comgooglevideo.comgoogleweblight.com
googlezip.net
+googlr.comtubecaptain.com
+goolge.comgooogle.comgopetition.com
gopivotal.com
gopivotal.netgoporngate.com
goproxing.netgoragay.comgordonmoore.com
goreforum.com
goregrish.comgorin.jptubebdsm.comtube911.comtube8zoo.comgosexpod.comgoshemalecams.comgospelherald.comtube8.fr
tube8.comgosq.cogosq.comgossipfuli4511.xyzgossipfuli5522.xyzgossipfuli6883.xyz
gostorego.comgostosanovinha.comgot-game.orggotblop.com
gotcosmos.com
gotdns.chgotgayporn.comgotgeeks.com
gothdporn.comgotporn.com
gotraffic.net
gotrusted.comgotw.ca
gouri.xyz
+gov.taipei
+gov.twgovernmentengineer.comgovforce.comtube4world.comtube4sex.comtube2017.comtube2012.comtube2011.comgpstheseries.comtube188.com
+tube18.sexgputechconf.comtube.comtube.bzgputechconf.eugputechconf.ingputechconf.jp
+gqzmnav.cc
gr-assets.com
gr8domain.bizgr8name.bizgrabhentai.com
grabpussy.comtube-sex-videos.comtube-pornomovs.com
tubaholic.comgradeuptube.com
+tu8964.com
ttwstatic.com
ttvnw.net
tttan.comtteshop.com
+tt1069.com
tsyum.comtsundora.comtsunagarumon.comgrafolio.com
+graias.comgraiasmovies.comgrammaly.comgrandepornogratis.comgrandfuckauto.xxxgrandtrial.orgtsumino.com
+tsthai.comgrangorz.orggrannygetsafacial.comgrannylister.comgrannylovesbbc.comgrannylovesyoungcock.comgrannytube.net
tssp.best
+tsquare.tv
graph.orgtsplines.comgraphengine.iotspline.comgraphql.orggravatar.comgravitytank.comtsmodelstube.com
+tsi.ai
grazie.aitsescortsdirectory.com
tsemtulku.comgreat-firewall.com
great-roc.org
tsctv.netgreatergothammini.com
+ts.net ts.la
+tryst.link
tryrating.com
greatfire.orgtryquinn.comgreatfirewall.bizgreatfirewallofchina.netgreatfirewallofchina.orggreatretroporn.comgreatroc.orggreatroc.twtryheart.jpgreatzhonghua.orgtryfunctions.comgreenbuildingstudio.comtryfuckmenow.comtryengineering.orgtrydurex.tvtrydurex.net
trydesign.comtrycuckold.comgreenpeace.org
greenplum.netgreenreadings.comgreenvpn.netgreenvpn.orgtrycloudflare.comtryboobs.comtryalias.comgreginhollywood.comtruyenwk.comtruyentranh86.com
truyenkk1.comtruyenhentai.xyztruyengihay.nettruyen18.xyz
gridaware.apptruyen-hentai.rutruyen-hentai.frtruyen-hentai.com
+truveo.com
+grindr.com
+grooby.comgrotty-monday.comgroupfun.com
+groups.comtruthsocial.comtruthordarepics.com
grss-ieee.orggrupobmw.comgs-discuss.comtruthontour.org
gscanada.info
+gsccdn.com
gsearch.media
gslink.us
trustwave.comtrustsign.chgsrc.iotrustisfps.comgstatic-cn.comgstatic.com
+gsuite.com
gt536.toptrustedpeach.comtrusteddwg.comgtricks.comgts-vpn.comtrustedanalytics.netgtv.orggtv1.orggtvmediagroupfairfund.comtrustedanalytics.comgu-chu-sum.org
+gu-web.netguaguass.comguaguass.orgguambmw.comguancha.orgguaneryu.comtrusted-dwg.com
guangming.orgguangnianvpn.comguaranitermal.comguardianapis.comtrustdoc.chguardianproject.info
guardster.com123dpro.com
gucci.comguccimuseo.comguccitimeless.com123dnews.com
guifw.xyztrustcor.comtrustcor.catrust-provider.comtrunest.comtrulyergonomic.comguishan.orggumroad.com
+gumtree.sg
gun-world.netgunsamerica.comgunsandammo.com
guo.mediaguochantube.com
guochanw.lifeguruofporn.com
guruonline.hkgutteruncensored.comguysnightlife.com
+gv.com
gvlib.com
truefi.iogvt0.comgvt1-cn.comgvt1.comgvt2-cn.comgvt2.comgvt3.comgvt5.comgvt6.comgvt7.comgvt9.comtruedwg.comtruedepth3d.comtruebuddha-md.orgtruebim.comtruebeachporn.com
gwiki.net
gwins.orggwktravelex.nltrueanal.comgwtproject.orggyakusimei.comgyalwarinpoche.comgyatsostudio.comtrueamateurs.com
gynoexam.info
+gyutto.com
+gzm.tvgzone-anime.infoh-china.orgh-doujinshi.xyzh-flash.com
h-moe.comtrueamateurmodels.com
h-webtoon.com
h0930.comh18ani1.vip
h1n1china.org
+h2porn.comh528.comh5dm.comh5galgame.metrouw.nl
hacg.clubhacg.inhacg.lihacg.mehacg.redtropictube.com
hacken.cc
+hacker.orghackerfacebook.comhackerguardian.comhackfacebook.comhackfacebookid.comhacklang.org
hackmd.iotronscan.orghacksear.chhackthatphone.nethackthedrive.comhackyourconsole.comhadesex.comtroisrivieresmini.com
+trmini.comtrixhentai.comhaha888.xyz
hahlo.comhaho.moehaijiao.com
trithucvn.orghairy-amateurs.comhairy-beauty.comhairy-women-pussy.nethairyclassic.comhairydivas.comhairynature.comhairyolder.comhairypornsite.comhaisetu.nethaitenjp.com
haiwaikan.com
trithucvn.nettristatebmw.comtripcdn.comhalf.comhalf.tvhalfcanada.com
halfjapan.comtrip.comtriokini.comtrimondi.de
hami-mod.buzztrikepatrol.comhamsterfucktube.comhamsterporn.tv
hanbao-tv.lolhandbags-nike.comhandbagsoutletebay.comhandcraftedsoftware.orghandjobhub.comhandjobtube4free.comtrickip.org123dmake.com
hanime.me
hanime.tv
+hanime.xxx
+hanime1.metrickip.nethanr-bao.momhanunyi.comtribler.orghao.news
hao21.xyz
hao62.xyzhaori888.comhaplorrhini.com
happy-vpn.comtriballo.net
happymeal.comtrialofccp.orghappymealdigital.comhaproxy.orghardcore-sex-filme.comhardcoregayblog.comhardsex8.comhardsextube.com
hardx.com
harica.gr
trezor.iotrendyporn.com
trendsmap.comtrendmicro.com
trellocdn.com
+trello.comharperacademic.comtravelgirls.comharperapps.comharpercollins.catravelexmoneycard.comtravelexch.comharpercollins.comtravelexae.comharpercollinsadvantage.comtravelex.qaharpercollinschristian.com#harpercollinsspeakersbureau.comtravelex.ittravelex.frtravelex.detravelex.comtravelex.catravelex.bhtravelex.betravelcontroller.comtranspornsites.comtransparency.orgtranslatewiki.orgtranslatewiki.nettranslatetheweb.comtransferwise.comtranscamslive.comharunyahya.comhashflow.com
hashicorp.comhaskell.orghaskellstack.orgtransarmuito.comtransangels.comhath.networktrans500.com
hautelook.comhautelookcdn.comtrannyvideosxxx.com
trannytube.tv
trannygem.com
have8.comhaveibeenpwned.com
+tranny.onetrafficmanager.nettradingview.com
hawaiibmw.comhayabusa.devhayabusa.iohayabusa.media
tradevip1.comtracking-location.com
+hbabit.com
+hbfile.nethbg.comhbo.comtracfone.comhboasia.com
+tr.com
hbogo.comhbogo.eu
hbogoasia.comhbogoasia.hkhbogoasia.idhbogoasia.phhbogoasia.sghbogoasia.twtpornstars.com
+hbomax.com
hbomaxcdn.com
+hbonow.comhbox.jphbrowse.comtparents.orgtoytractorshow.comtoythieves.comhcaptcha.comhcaptchastatus.com
+hcbdsm.com
+toypark.in
toycadcam.comtoy-cadcam.com
+hclips.comtoxinzoo.sbs
+hcomic.nethcomicbook.com
+hcpdts.comtoxin-up.sbstownofsins.comtowngain.comhd-tubes.com
+hdabla.nethdb1.apphdbigass.comhddgames.cc
hddirectv.comhdfreeporn.net
hdgaytube.xxx
+hdhole.comhdjavonline.comhdlt.mehdouban.comhdouban2.com
+hdouga.comhdporn1080.nethdporn92.comhdporncomics.comhdpornfree.xxx
hdpornmax.nethdpornt.comhdpornvideo.xxxhdready.xxxhdreporn.comhdrplusdata.orgtowerauction.com
hdsex.prohdsexxx.net
hdtube.cohdtube1.com
hdtvb.nethdvideosporn.net
+hdxnxx.xxxhdxx.tv
hdzog.comtoutiaoabc.com
+he.nettoutapp.com
tourporno.comheadlinejobs.hkheadphonepubs.comheadphones-cool.comheadphones-dre.com headphones-outlet-online.comheadphonesbeatsaudio.comheadphonesbeatsbydre.comheadphoneses.comheadphoneshome.comheadphoneshotsales.comheadphonesol.comheadphonesretailer.comheadphonessupply.comheadphonezip.comheadset987.comtouhouwiki.nettouchsmartpc.orghealth026.clicktouchsmartpc.nethealthcarecareeronline.comtouchsmartpc.comtouchid.wang
+touchid.tvtotoleak.comhealthreach.hktotalvpn.comtotalmateria.comtospo-keiba.jp
+torvpn.comheartbreakers.galleryheartbreakers.infotortoisesvn.net
torrindex.netheartyit.comtorrentz.eutorrenty.orgheaven-burns-red.comheavenlyhentai.comheavy-r.comheavyfetish.comtorrentproject.setorrentprivacy.com
hebiphone.com
+hec.sutorrentkitty.tvhecaitou.nettorproject.orghechaji.com
toroporno.comtorlock.comtorguard.net
torcn.comtorcidadeouro.comtora.totopyoungporn.comtopxxxpornvids.comtopvids.nettoptoonsites.com
toptip.ca
topsy.comtopshareware.comtopsexygames.comtopsexhdvideos.com
topsexart.comtoprealvideos.comtoppornsites.net
hegre-art.com
hegre.comtoppornsites.comtoppornoduro.comtoppornguide.com
+topporn.meheiguab.topheijidi.lifetopobase.comtopnudemalecelebs.comheinonline.orgheise360181.buzzheise360182.buzz
+topnews.intopmanga.bizhelixstudios.nethelloandroid.comhelloavgirls.comtoplayerserver.comhellokittybeats.comhelloqueer.comhellosmartbook.com
+helloss.pwhellotxt.comhellouk.org
hellporno.comhellven.nettophentaicomics.com
tophentai.bizhelpeachpeople.comhelplinfen.comhelpster.dehelpuyghursnow.orghelpzhuling.orgtophdsex.com
tophd.xxxtopfreepornvideos.comtopfantasyart.comtopface.comtopexhib.nettopescortbabes.comtopescort.nltoperoticartsites.comtopcuckolds.com
hentai-ani.mehentai-archive.comhentai-books.comhentai-cosplays.comhentai-covers.sitehentai-eroanime.nethentai-for.nethentai-fun.comhentai-gamer.comhentai-gif-anime.comhentai-img.comhentai-moon.comtopcoder.comtopchineseporn.comhentai-vostfr.nethentai.desihentai.game
hentai.iohentai.namehentai.pink
+hentai.pro
hentai.tohentai.toys
hentai.tvhentai0.comhentai01.comhentai2.nethentai2012.com
hentai247.net
hentai24h.orghentai24h.tvhentai2games.comhentai2read.comhentai2w.comhentai3dvideo.bizhentai44.comhentai4free.nethentai4manga.com
hentai69.lifehentai69.onlinehentaia.nethentaiaction.nethentaiasmr.moehentaiathome.nethentaibaka.one
hentaibar.comhentaiblue.comhentaibros.comhentaicity.comhentaicloud.comhentaiclub.nethentaicomic.ruhentaicomics.asiahentaicomics.lifehentaicore.nethentaicore.orghentaicovid.comhentaidirectory.orghentaidude.comhentaidude.xxxhentaienvy.com
hentaiera.com
hentaiero.nethentaifc.com
hentaifox.comhentaifox.tvhentaifreak.orghentaifromhell.orghentaigamer.orghentaigamesplanet.comhentaigasm.comhentaihand.comhentaihaven.comhentaihaven.iohentaihaven.mehentaihaven.redhentaihaven.xxxhentaiheadlines.comhentaihere.comhentaiheroes.com
hentaihub.xxx
hentaikey.comhentaiknight.comhentailabs.comhentailegendado.com
hentaimama.iohentaimangaporn.comhentaimovieplanet.comhentainanime.comhentainhaven.comhentainstream.comhentaipapa.com
hentaipaw.comhentaiplay.nethentaiporn.comhentaipornonly.com
hentaiprn.comhentaiprno.comhentaipros.comtopchats.comhentairead.comhentairead.infohentairead.vip
hentairox.comhentairules.nethentais.tube
hentaisea.comhentaiseason.comhentaispark.comhentaistream.comhentaistream.tvhentaistube.comhentaisub.infohentaitalk.comhentaitk.comhentaitokyo.comhentaitube.online
hentaitube.tvhentaiverse.orghentaivideos.nethentaivideoworld.comhentaivn.dehentaivn.lahentaivn.net
hentaivvz.comhentaiworld.euhentaiworld.tvhentaiworldporn.com
+hentaix.me
hentaixxx.viphentaixxxvids.com
hentaiyes.com
+hentaiz.cohentaiz.mobihentaiz.vip
hentaizap.comhentaizilla.comhentaizz.nethenti-night.comtopcelebnudes.comtopcartoonsites.com
+topbtc.comtopbeatsforsale.comtopbeatsdealer.com
+heptio.comheqinglian.nettopbeatsbydrdreoutlet.comtopbabesblog.orgtopartporn.comtopanime.biztopadultgames.biztop81.wstop10vpn.comhereistheporn.comtop100sexgames.comherexxx.comtop100nl.netheritage.org
+top.tvtoonsexblog.com
+toonel.nethernudepics.comheroero.comheroesofdragonage.comheroesofthestorm.comheroku-app.comheroku-charge.com
heroku.co
+heroku.com
heroku.me
herokuapp.com
herokucdn.comherokucharge.com
herokussl.comtoon-3d.comherringnetwork.comtoomadporn.protoolmaking-cadcam.com
toolforge.org
+toodoc.comtonyyan.nettono-oka.jptonicmovies.com
tonec.com
tomsguide.comtomonews.nettomatespodres.com
tokyotosho.setokyotosho.info
hetzner.cloudhetzner.comhetzner.company
+hetzner.deheungkongdiscuss.comtokyoporns.comtokyonightstyle.com
+hex.pmhexatronik.com
+hexdocs.pmhexieshe.comhexieshe.xyz
+hexxeh.nethey.booheydoga.comheydouga.comtokyomotion.nettokyomotion.comheyuedi.comheywire.com
heyzo.com
hf-iphone.comtokyocn.comtokyo-tosho.nettokyo-porn-tube.comhg.cool
+hgamer.pro
+hgseav.comhh-content.com
tokyo-hot.comhhdcb3office.orghhthesakyatrizin.org
tokyo-247.comhhvm.comtoh.infohibdontire.comhiccears.comhidden-advent.orgtogetter.comhiddenvoyeurspy.comhiddify.comhide.me
hidecloud.comhidefporn.ws
+hidein.net
hideipvpn.comhideman.net
hideme.nlhidemy.name
hidemyass.comhidemycomp.com
+hidive.comhifacebook.infohifiporn.funhifixxx.fun
+hifuli.com
higfw.comhighbolt.netto-porno.com
+tnt-ea.com highdefinitionbeatsbydre.comtnp.orgtnntoday.comtngrnow.nettngrnow.comtnatryouts.comhighpeakspureearth.comhighporn.nethighrockmedia.comhightopnikes.comhighwirepress.com
hihiforum.com
+hihigv.com
hihistory.net
+hiitch.com
hikinggfw.orgtnaflix.com
hilive.tv
tmsnrt.rstmpp.orghilostripper.comhimalaya.exchangehimalayan-foundation.orghimalayanglacier.comhimemix.comhimemix.nethindawi.comhindiweb.com
hinet.net
hipaa6020.com
+tmi.me
+hiporn.nethippyhillscomix.comhipzoom.nettmei-taoyuan.comtmdfish.comtmdb.orgtmall.ru
tmagazine.com tl.gdhistoryofdota.comhistoryofdota.nethistoryofdota.org
+tktube.comtkcs-collins.comhiswifepussy.comhitbdsm.com
+hitbtc.com
hitomi.lahitun.iohitxhot.com
+hiwifi.comhizb-ut-tahrir.infohizb-ut-tahrir.orghizbuttahrir.org
+hjb246.top
+hjb7e9.tophjclub.info
+hk-pub.comtkbqf2.lifetkb2233.life
+tkb008.xyztittykings.comtitsintops.comtitsbox.comhk01.com
+hk1lib.orghk32168.com
hkacg.com
hkacg.net
hkatvnews.comhkbc.nethkbf.orghkbigman.nettitsandtugs.comhkbn.net
+hkbnes.nethkbookcity.comhkchronicles.comhkchurch.orgtitle.shhkcircleapp.comhkcitizenmedia.com
hkcmi.eduhkcnews.com
hkcoc.com
titanfall.com
hkcsl.comtistory.com
tiresplus.com
hkday.nethkdc.ushkdf.orghkedcity.nethkej.com
hkepc.comhket.com
hketgroup.comhkf2023.lathkf202311.sitehkf202312.shop
hkfaa.comhkfreezone.comhkfront.orghkgalden.comhkgolden.comhkgolden.media
+hkgpao.comhkgreenradio.orghkheadline.com
+hkhkhk.comtire-cadcam.com
tipas.net
tiohentai.comhkjc.comhkjp.org
hklft.comtinyurl.com
+hkmap.livehkopentv.comhkpeanut.com
+hkporn.net
hkptu.orghkreadingcity.nethkreporter.com
tinypaste.comhkt-enterprise.comhkt-eye.comhkt.comhkteducation.comhktpremier.comhktshop.comtinychat.com
hkusu.net
+tiny4k.com
+hkvwet.comtiny.cc
+hkzone.orghlbelygl.com
tintuc101.comtinkerplay.nettinkerentertainment.comhlsp1.pw
+hm.comhmd.site
hmfby.com
hmfun.tophmoegirl.comhmonghot.com
hmovie-moe.us
hmsxpress.com
tinkercad.com
hmvdigital.cahmvdigital.comhnalady.comhnext.jp
hnjhj.comhnntube.comhobonichielog.com
+hochi.newshoes.comtinkerboxapp.comtinhduc.org
+ting53.xyzhola.comhola.org
holaporno.xxxholdemstripem.com
holloporn.comhollyrandall.com
+tineye.comhololens.comtinc-vpn.orgtimtales.comholymountaincn.comholyspiritspeaks.orghome-made-porn-movies.comhome-made-videos.comhome-sex-tapes.com
home-song.com
+timsah.comhomealonemilfs.comhomedepot-static.com
homedepot.com
timo0.comhomefuckingmovies.comhomegrownfreaks.nethomemade-porn-video.comhomemadeamateur.comhomemadeanalporn.comhomemadefucktube.comhomemadepornclip.comhomemadeporntubes.comhomemadevids.nethomemoviestube.comtimi1.mehomeperversion.comhomephoneplus.comhomepornbay.comhomepornking.comhomepornvideo.nethomeservershow.comhomesexmade.comhomestylerapp.comhomestylernews.comtimestalks.com
hominis.mediahomo.xxxhonawalaan.comhonestpornreviews.comtimesnownews.com
hongjie10.xyz
hongjie11.xyzhongkongdoll.tvhongkongdollvideo.orghongkongfp.comtimesmembership.comhongmeimei.com
+hongzhi.lihonkaiimpact3.comhonkaistarrail.com
+honnaka.jp
+honven.xyzhoodamateurs.comhooligapps.com
hooloo.tv
hoolu.comhoolu.tv
hootsuite.com
+hoover.orghoovers.comtimelinestoryteller.comhopedialogue.org
+hopstop.tv
hopto.org
timefxapp.comtime.govtime.comhorizontal-llc.comhorizontal-systems.comhorizontalglue.comhorizontalsystems.com
+timdir.comhornybitches.org
hornybutt.com
hornychat.nethornyelephant.comhornygamer.comhornygfporn.comhornygirlsonline.orghornyjav.com
hornytrip.comhornywhores.nethorrorporn.com
horse-cum.net
horse4sex.comhorsecock.guruhorsecumshot.net
horsedick.nethorsedicks.nethorsemecum.comhorseporn.tvhostloc.comhot-arab-films.comhot-cartoon.comhot-gayporn.comhot-sex-photos.comhot-sex-tube.com
hot-teens.comhot2048.com
+hotair.comhotamateurblowjobs.comhotasianbabes.comhotav.tvhotbeatsonsale.com
tiltbrush.comhotcandyland.comhotcoin.comhotcuckoldwife.comhotcumporn.comhotescortdusseldorf.com
hotfiesta.com
+tiktokw.ushotfucktube.comhotgaylist.comhotgirl.asiahotgirlsclips.com
+hotgoo.comhothdsex.xxxhothomemade.comhotindianbabe.comhotindianxxxsex.com
hotjav.tvhotladsworld.comhotladyhere.com123ddoodler.com
+hotmail.cohotmail.com
+hotmail.euhotmail.nethotmail.orghotmonsterbeats.com
hotmovies.comhotmovs.com
hotntubes.comhotnudegirls.net
hotporn.todayhotpornbible.comhotpornfile.orghotpornshow.comhotporntubes.com
hotpot.hkhotscope.tvhotsexvideo.mobihotsexydolls.comhotshame.comhotspotshield.comhotstar-cdn.nethotstar-labs.comhotstar.comhotstarext.comhotstunners.comhotteenfreecam.comhottestfilms.comhottestheadphonesonline.com
hottg.com
hottystop.com
+hotvpn.comhotwifemovies.com
hotzxgirl.comhougaige.com
+tiktokv.ustiktokv.comhousing.comhousingcdn.comtiktokd.orgtiktokd.net
+howfuck.mehowtoforge.com
tiktokcdn.com!howtohackfacebook-account.comhoxx.com
hoyo.linkhoyolab.com
hoyoverse.comhp-imagine.comhp-infolab.com
hp-invent.comhp-invent.info
+hp-mns.comhp-printing.comhp-webplatform.com
hp-ww.com
+hp.com
+hp.company hp.iohp3d.comhp3dmetals.comhp3dprinter.comhp3dsamplepromo.comhpallinoneprinter.comhpapplicationscenter.comhpayshop.com
hpbestbuy.comhpbluecarpet.comhpbluecarpet.nethpbuiltforlearning.comhpbundle.comtiktokcdn-us.com
+tiktok.comtik-tokapi.comtigervpn.comtig-ol-bitties.livehpcampus.comhpcatridge.com
hpccp.com
hpceo.comtiffany-towers.com
hpcmw.nethpcodewarsbcn.comhpcomputers.comhpcomputerservices.comhpconnected.comhpconnected.nethpconnected.orghpconnected.ushpconnectedstage.comhpcontinuum.com
hpcpi.comhpcu.orghpcustomersupport.comhpcustomersupport.nettiendabestbuy.com
+hpdaas.comhpdesignjetl25500.comhpdesktopcomputer.comhpdownloadstore.comhpdreamcolor.comhpdriver.com
hpdrivers.com
hpdrivers.org
hpeclipse.comhpengage.comhpeprint.comhpeprintcenter.comhpeurope.comhpeventcenter.com
+hpfaqs.comhpfeedback.com
+hpgift.com
+hpgpas.comhpgraphicspartners.com
hpiie.org
+hpinc.info
hpinc.nethpindigopress.comhpinkjet.comhpinstantink.cahpinstantink.comhpjav.tvhpkeyboard.comhplaptop.comhplaptopbattery.comhplargeformatremote.comhplatexknowledgecenter.com
hplfmedia.com
hplip.nethplipopensource.comhpmarketplace.comhpmemorychips.comhpmicrcartridge.com
+hpmini.comhpmobile.comhpofficejetprinter.comhponlinehelp.comhponlineprinting.comtidelift.comhppage5000.comhppavillionlaptop.comhpphotoscanners.comhpprinterdrivers.comhpprinterinstalls.comhpprintersupplies.comhpsalescentral.comhpserver.comhpservices.comhpshooping.com
+hpshop.com
hpshoping.com
hpshopping.hk
hpsignage.comhpsmart.comhpsmarts.comhpsmartstage.comhpsmartupdate.comhpsoftware.com
hpspeaker.comhpsprocket.com
hpsso.comhpstore-china.comhpstore-emea.comhpstore.comhpstorethailand.com
hpsupport.comhpsuresupply.comhptechventures.comhpto.nethptouch.comhptouchpointmanager.comhptrainingcenter.comhptv.fun
hpuae.comhpuniversity.infohpusertraining.com
+hpveer.comhpvirtualthin.com
hpwallart.comhpwellnesscentral.com
hpwsn.comhq69.comhqbabes.com
+hqbutt.com
hqcdp.orghqdesexo.comhqjapanesesex.comhqmovies.comhqporner.com
+hqseek.comhqtrannytube.com
+hqtube.xxxhqxxxmovies.com
tidalhifi.com
tidal.comhrcchina.org
hrcir.comhrea.orghrecords.jptictoc.videohrichina.orgtickdata.com
hrntt.org
hrsaz.comtiburon.com
+hrtsea.comhrw.org
hrweb.orgtibetwrites.org123ddesign.comhsbc-alternatives.dehsbc-transactionservices.dehsbc-zertifikate.dehsbc.aehsbc.amhsbc.bmhsbc.catibettruth.comtibettimes.nettibettelegraph.com
tibetswiss.chtibetsupportgroup.orgtibetsun.comtibetsociety.comtibetsites.comhsbc.comtibetpolicy.eutibetoralhistory.orgtibetonline.tvtibetonline.comtibetoffice.orgtibetoffice.eutibetoffice.chtibetnetwork.orgtibetmuseum.orgtibetkomite.dktibetjustice.orgtibetinfonet.net
tibethouse.ustibethouse.org
tibethouse.jptibetheritagefund.org
tibethaus.comhsbc.dehsbc.frhsbc.lkhsbc.nethsbc.uktibetgermany.dehsbcinnovationbanking.comhsbcnet.comhsbcprivatebank.comhsbctrinkaus.detibetgermany.com
tibetfund.orghsex.menhsex.tvhsfacebook.comhshsxkj.comhsjp.net
hsm-works.comhsm-xpress.comhsmexpress.comhsmworks.com
hsmxpress.comtibetfocus.comhsselite.comtibetexpress.net
+hstern.nethstt.nethsxsp1.buzzhsyy.viptibetcorps.org ht.lytibetcollection.com
tibetcity.com
htkou.net
+htl.lihtml5rocks.comtibetchild.orgtibetcharity.inhttpfacebook.comhttps443.nethttps443.orghttpsfacebook.comhttpwwwfacebook.comhtvncdn.nethtx.comhtyj-bj.comhtznr.lihu1u.comhua-yue.nethuabansp.comhuabansp7.clubhuaglad.comhuanghuagang.orghuangse.love
huangyiyu.comhuanyuju.com
huaren.us
huaren4us.comhuarenav.comhuarenporn.comhuashangnews.com
huashundg.comhuati.cchuaweicloud-dns.nethuaweicloud-dns.orgtibetcharity.dkhuaxia-news.com
huaxiabao.orghuaxin-lls.xyz
huaxin.phhuaxin80.com
huaxinvip.tophuayuworld.orgtibetanyouthcongress.orghubblephone.comtibetanyouth.orgtibetanwomen.orgtibetansports.orgtibetanreview.nettibetanpoliticalreview.org
+hudson.orghuffingtonpost.catibetanphotoproject.comtibetanpaintings.comhuffingtonpost.comtibetanliberation.orgtibetanlanguage.orghuffingtonpost.dehuffingtonpost.eshuffingtonpost.frhuffingtonpost.grhuffingtonpost.inhuffingtonpost.ithuffingtonpost.jphuffingtonpost.krhuffpost.comhuffpostarabi.comhuffpostbrasil.comhuffpostmaghreb.com
hugedildo.com
+hugesex.tvhuggingface.cotibetanjournal.com
+hugoroy.euhuhaitai.com
huhamhire.com
huhangfei.comtibetanhealth.orghuiyi.in
huj-pizda.com
hulkshare.com!tibetanfeministcollective.orgtibetanentrepreneurs.orgtibetanculture.orgtibetancommunityuk.nettibetancommunity.orghuloo.cchuloo.tvhulu.comhulu.jphulu.tvhulu.ushuluaction.com
+huluad.comhuluapp.comhuluasks.comhulucall.comhulufree.comhulugans.comhulugermany.com
+hulugo.comhuluhuluhuluhulu10.work
+huluim.comhuluinstantmessenger.com
huluitaly.comhulunet.comhulunetwork.comhuluplus.comhulupremium.comhulupurchase.com
+huluqa.comhulurussia.com
huluspain.comhulusports.comhulustream.comhuluteam.com
+hulutv.comhuluusa.com tibetanbuddhistinstitute.orgtibetanarts.orgtibetanaidproject.org
humanparty.me
+tibetan.frhumanrightspressawards.orgtibetan-alliance.orgtibetalk.comhumblebundle.comtibetaid.orgtibetaction.nettibet3rdpole.orghummingbird.mshumoron.comhung-ya.comtibet.tohungerstrikeforaids.orghungryclit.comhunk.wstibet.skhuobi.co
huobi.comhuobi.me
huobi.prohuobi.sc
huobiasia.viphuobigroup.comhuobipro.comhuobitoken.comhuohaore.net
+huping.nethurgokbayrak.com
tibet.orghussiepass.comhustler.comhustlercash.comhut2.ruhutao.cloudhutianyi.nethutong9.net
hutpromos.comtibet.nuhuyandex.com
tibet.net
+hwadzan.twtibet.frhwgo.com
+hwinfo.com
tibet.comtibet.cahwslabs.com
+hxcsxs.pro
+hxdoll.comhxwk.orghxwq.org
+hxxn12.tophybrid-analysis.comtibet.attibet-munich.detibet-initiative.dehydrogenaud.iotibet-foundation.orgtibet-envoy.eutiberiumalliances.comhyper.ishyperdreams.com
hyperrate.comhyperscan.iohypnohub.net
hypnoporn.net
hypnotube.com
tiaz.sitehzmn.neti-123-hp.com
+i-book.com
+i-book.neti-cable.com
+tiava1.com
tiava.com
+i-o-u.infotianzhu.org
+i-scmp.comtiantibooks.org i.org i1.hki2p2.dei2runner.com
tianti.io
+i818hk.com
i91dz.comiaablog.comtiantang.todayiafd.comtianlawoffice.comtianhuayuan.comtiandixing.orgtiananmenuniv.netiam.soy
iamakamai.com
iamakamai.netiamremarkable.org
iamtopone.comiana.orgtiananmenuniv.comtiananmenmother.orgiask.bziask.catiananmenduizhi.com
iav19.comiavnight.com
+ibb.cothzu.cc
ibeats-uk.comibeatsbydre.ccibeatsbydre.comibiblio.orgthz7.netibit.am
+iblist.comiblogserv-f.net123dcreaturenews.comibm.com
+ibm.euibm.net
+ibm.usibonedyourmom.comthywords.com
ibook.comibook.eu
ibook.netibookpartner.comibooksauthor.comibradome.com
ibros.orgthunderbolttechnology.netthunderbird.net
ibvpn.com
ibytedtos.comibyteimg.comthumbzilla.comthumbnailseries.comthtmod1.com
icams.comthroughnightsfire.comicbc-at.comicbc-cz.comicbc-ltd.comicbc-uk.comicbc-us.comicbc.aeicbc.bethrixxx.comthri.xxxthreatchaos.comthreads.netthreadreaderapp.comthotvids.comthottok.com
+thothub.to
+thothub.ruthotbook.tvthongdreams.comthomsonreutersmexico.comthomsonreuters.ruthomsonreuters.inthomsonreuters.esthomsonreuters.comthomsonreuters.caicbc.deicbc.euicbc.lu
icbcalmaty.kzicbcasia.comthomasbernhard.org
thlib.org
icbcindia.com
+icbcit.comicbclondon.com
icbcme.ae
icbcmoscow.ru
+icbcmy.com
+icbcnz.comicbcpanama.comicbcparis.fr
+icbcpl.com
icbcswiss.comicbcthai.com
+icbkfs.com
+icbkus.comthisvidscat.netthisvid.com
+thismon.eethisispolaris.com
+thisav.comicedrive.net
icegay.tv
icegaytube.tviceporn.comiceporncasting.comicevirtuallibrary.comthinkwithgoogle.comichigocandy.comichineseporn.comthinkquarterly.comicij.orgthinkofliving.com
+icl-fi.orgicloud-content.comicloud-isupport.com
icloud.ch
+icloud.com
icloud.de
icloud.ee
icloud.fi
icloud.fr
icloud.hu
icloud.ie
icloud.is
icloud.jp
icloud.lv
icloud.om
+icloud.org
icloud.pt
icloud.ro
icloud.se
icloud.si
icloud.sk
icloud.vn
icloudads.net
icloudbox.neticloudbrowser.neticloude.comicloudhome.comicloudmail.neticloudmusic.net
icloudnet.neticloudo.com
+icloudo.deicloudo.neticloudos.deicloudos.net
icloudpay.neticloudsecure.neticloudsetup.comthinkingtaiwan.com
thinkgeek.comthinkdifferent.usthinkboxsoftware.com
icoco.com
thieme.dethieme-connect.de
iconpaper.orgthieme-connect.comtheyxxx.com
+theync.comthewonderful101.com
+thewgo.org
+theweek.inicu-project.orgicuminside.comthevivekspot.com
idarkdoll.comthevirtualsexreview.comidea-server.comideal-teens.comtheverge.comideapocket.comidelreal.orgidemocracy.asia
identi.ca
+theuab.net
identrust.com
identrust.netthetype.comidiomconnection.com
+idnike.comidol-sagasukun.com
+idouga.comthetvdb.comidreamx.com
ids-apple.comthetrotskymovie.com
idservice.inc
+idv.twidvd.euidx.devie10.comie11.com
+ie8.coie9.com
+ieasy5.com
iebay.com
ied2k.net
ieee-aess.orgieee-cas.org
ieee-ccnc.org
ieee-ceda.org
ieee-ecce.orgieee-edusociety.orgieee-ies.orgieee-ims.orgieee-into-focus.org
ieee-isto.org
ieee-npss.org
ieee-pels.orgieee-pes.orgieee-ras.orgieee-region6.orgieee-sensors.org
ieee-tems.org
ieee-uffc.org
ieee-vics.orgieee.caieee.orgieee.tvieeeaps.orgieeecsc.orgieeecss.orgieeeday.orgieeedeis.orgieeefoundation.orgieeemagnetics.orgieeemce.orgieeenano.orgieeeoes.orgieeer10.org
+ieeer5.org
+ieeer8.orgieeesmc.orgieeesystemscouncil.orgieeeusa.orgienergy1.comiepl.usthetread.com
thetranny.comietf.org
thetinhat.comthetimes.ie
ifanqiang.comthetibetpost.com
ifastcorp.comthetibetmuseum.orgthetibetconnection.orgifastgb.comifastgp.comthetibetcenter.orgifastnetwork.comifasttv.com
ifcss.orgthethothub.comifjc.org
thesun.iethestationbymaker.comifontcloud.comthestandnews.com
iframejav.comifreewares.comthesimssocial.comthesims4.comthesims3.com
+ift.tt
ifuckedmy.momifuckedtheboss.com ig.meigaychat.comigayporn.tvigcd.net
igcdn.comthesims.comigetnaughty.comigfw.net
igfw.techigi-global.com
igkbroker.comigmg.detheshoppingexpresslane.net
+ign.jpthesffblog.comignitedetroit.netignites.comignitesasia.comigniteseurope.comigoogle.comigoshopping.netthesafeporn.comigotpornpics.com
igpublish.comigsonar.comthereallove.krigtv.com
+igvita.com
+ihakka.netihao.orgtheprint.intheportalwiki.comtheporny.com
ihsd-mp4.pics
ihsdav.cc
iicns.com
iijav.comiina.iotheporntoplist.com
+iirmll.comthepornscat.com
+ijavhd.comijavtorrent.com
+ikanhm.xyz
+ikanmh.xyzikea.aeikea.atikea.auikea.beikea.bgikea.bhikea.caikea.chikea.clthepornmap.comthepornlistdude.comthepornlist.netthepornlist.comthepornlinks.comthepornguy.orgtheporndude.viptheporndude.comtheporndude.ccthepornblender.comthepornbin.comthepornbet.comikea.comthepornbest.comthepornarea.com
+theporn.ccthepiratebay.orgthepervs.comthepaypalshop.comtheopportunityproject.orgthenipslip.comthenextweb.comthenewslens.comthenewporn.comthenewgirlspooping.comthenationalpulse.comthemoviedb.orgthemilfmovies.comthemathsfactor.comthemarvelexperiencetour.com
theman.inthelittleslush.comthelegendarystarfy.comtheleakbay.com
thelancet.com
thekarups.comikea.czikea.deikea.dkikea.doikea.eeikea.egikea.esikea.fiikea.frikea.grikea.hkikea.hrikea.huikea.ieikea.inikea.isikea.itikea.joikea.jpikea.krikea.ltikea.lvikea.maikea.mxikea.myikea.netikea.nlikea.noikea.omikea.phikea.plikea.prikea.ptikea.qaikea.roikea.rsikea.ruikea.saikea.sgikea.siikea.skikea.uaikea.us
ikids.comiknowthatgirl.com
+ikstar.comikwb.comtheinventionworks.netilbe.comtheinventionworks.comtheintelstore.comilhamtohtiinstitute.orgilife.euilife.gr
+ilife.wang illianacomputerrecycling.comtheinstagramhack.comillusion.jpillusion111.comillusionas.comillusionchn.comillusionfactory.comillusiongw.com
illusionh.com
illusionl.comillusionn2.comillusionn3.comillusionn4.comillusionn5.comillusionxz.com
illusiony.comillusionze.comillusnoi.comilongman.comilove-movies.com
+ilove80.beiloveinterracial.comilovelongtoes.comilovexs.comtheinitium.comtheindianleaks.com im.tvim88.twimac-apple.comimac-applecomputer.comimac.co
+thehun.netimac.comimac.euimac.grimac.oneimac.rs
imacapple.comimacapplecomputer.comimacsources.comthehulubraintrust.comimageab.comimagebam.com
imagecurl.com
imagecurl.orgimagefap.com
imageflea.comimageglass.orgimagemodeler.com
imagepost.comimages-amazon.comimages-gaytube.comthehousenews.comimageshack.com
imageshack.usimagetwist.comimagevenue.comimageworks.comthehots.infoimagezilla.netimaginationsengine.com
imaginecup.plimagineecommerce.com
+imaypb.comimb.org123dcreature.comimdb.comimdb.tothehentaiworld.comimessage.tvthehealthsite.com
+img.ly
+imgasd.com
imgbb.comimgchili.net
+imgcrl.org
imgix.com
imgix.netimgmega.comimgsmail.ru
imgur.comimgur.ioimgurinc.comimhentai.xxx
+imilfs.com
imkev.comthehabibshow.com
+imlive.comimmidio.com
+immoral.jp
immxd.comimod.comimonsterbeats.com
imovie.euimoviegallery.comimoviestage.comtheguardiandns.comtheguardian.com101boyvideos.comimpactdesignhub.comthegooglestore.com
+thegly.comimperialbusiness.schoolimperiodefamosas.com
impermium.comimpp.mnthegithubshop.comthegioitinhoc.vn
imstagram.comthegeorgiascene.comimtagram.com
imzog.comin-disguise.comin99.orginaporn.cominasian.clubincapdns.netincentivetravelgifts.comincestflix.comthegayoffice.comincestporn.xxxincestvidz.com
+incezt.netincloak.com
+thegay.cominclusivegrowthscore.comincommon-rsa.org
incredibox.fr
+ind.sh
+indazn.com
indaznlab.comthegatewaypundit.comthefrontier.hkindependentoperatorcn.comindexxx.com
india.comindiablooms.com
indiaipad.comindian-free-xnxx.comindianarrative.comindiancolleges.comindiandefensenews.inindianfuck2.comindiangfvideos.comindiangirlsclub.comindianhiddencams.comindianpornfast.comindianporngirls.comindianpornvideo.orgindianpornvideos2.comindiansexmms2.comindiansexpussy.comindiansexstories.netindiansexstories2.netindiemerch.comindienudes.comthefoxnation.comindonesiaporn.nameindustrialtoys.cominfinitetoons.cominfinitetube.cominfluencersgonewild.cominfo-graf.frinfocert.digitalinfocert.itthefind.comthefappeningblog.comthefappening.wikithefappening.prothefacebook.netinforms.orgthefacebook.comtheepochtimessubscribe.cominfowars.cominfowarsmedia.cominfrapedia.cominfraworks.com
infura.io
+ingads.com
ingka.com
ingka.devingkacentres.com
+inherd.mominhumanity.cominikesneakers.com
init.shoptheepochtimes.cominitiativesforchina.orginitproducts.cominkbunny.net
inkchoice.cominkedravens.com
inkui.cominlethd.com
inmediahk.netinnermongolia.orgtheebayshop.comthedw.usthedreadwolfrises.cominnovations-i.comthediplomat.com
inoreader.cominote.tw
+inporn.comthedesk.cominsecam.org
inshot.cc
+inshot.com
inshotapp.comthedesignworkshop.cominsidefilms.cominsidemacintosh.cominsider-intelligence.cominsider.cominsiderdevtour.cominsiderintelligence.com
insidevoa.comthedalailamamovie.comthedailysnkr.comthecuckoldporn.cominstaadder.com
instabang.cominstachecker.cominstafallow.cominstafollower.cominstagainer.cominstagda.com
instagify.cominstagmania.cominstagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net
instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com
instagran.cominstagranm.com
instagrem.cominstagrm.cominstagtram.cominstagy.cominstallbuzzsaw.cominstamgram.cominstangram.cominstantfap.cominstantfapgay.com
instanthq.cominstantink.cominstantssl.cominstanttelegram.cominstaplayer.net
instastyle.tv
instawank.cominstgram.cominstitut-tibetain.orgthecuckold.comtheconversation.comthecompaqstore.cominstituteofwar.orgtheclubprive.com
+insuyo.xyzintagram.comintagrm.comthecleversense.comintc.com
integral7.comtheclasshroom.com123dcircuits.comintel-research.net&"intel-university-collaboration.netintel.acintel.aeintel.afintel.agintel.aiintel.arintel.atintel.azintel.baintel.bgintel.bhintel.biintel.bointel.bsintel.byintel.caintel.ccintel.cgintel.chintel.clintel.cmthechinacollection.orgthechinabeat.orgthecandidforum-voyeur.ruthecandidbay.comthecamdude.comthebondagefiles.comthebodyshop-usa.comthebobs.com
intel.comtheblock.cotheblemish.comtheblaze.comthebestfetishsites.comthebeatsheadphonesale.comthebeatsbydre.netthebeatsbydre.comthebcomplex.comthebayuk.comthebankerdatabase.com
thebanker.comtheav.cctheatrum-belli.comtheatlantic.comtheaffairs.comthe123d.comthe-monster-beats.comthe-m-festival.comintel.crintel.cuintel.czintel.deintel.dkintel.dzintel.ecintel.eeintel.egintel.esintel.euintel.fiintel.frintel.gaintel.gdintel.geintel.glintel.gmintel.grintel.gsintel.gtintel.gyintel.hkintel.hnintel.htintel.huintel.ieintel.inintel.iointel.itintel.jeintel.jointel.jpintel.keintel.laintel.lcintel.lkintel.ltintel.luintel.lyintel.maintel.mdintel.meintel.mgintel.mkintel.mnintel.mpintel.mtintel.muintel.mwintel.mxintel.myintel.ngintel.nlintel.nuintel.nzintel.paintel.peintel.phintel.plintel.pnintel.reintel.rointel.ruintel.rwintel.saintel.scintel.seintel.sgintel.siintel.skintel.snintel.srintel.stintel.svintel.sxintel.syintel.tfintel.tjintel.tlintel.tmintel.tnintel.ttintel.tvintel.twintel.uaintel.ukintel.usintel.uyintel.uzintel.vgintel.vnintel.vuintel.wfintel.ytintelamericasstore.comintelapacstore.com
intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.comintelgo.netintelinsight.cominteliotmarketplace.comintelisolve.com
+intell.comintellearningseries.comintellij.comintellij.netintellij.orgintellinuxgraphics.comintellinuxgraphics.netintellinuxwireless.netintelnervana.comintelnet.component
intelplay.comintelquark.comintelrealsense.comintelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.comthe-japan-news.comthe-area.cominteractivebrokers.comthdh.ccinteractivesex.xxx
thawte.frintercom.comintercom.iointercomassets.comintercomcdn.com
thawte.de
+thawte.comthanksloyalty.comthaigirls100.net
thaigirls.net'#internationalconnectionsacademy.cominternationalsaimoe.comthaicuties.com
+thaicn.cominternet.orginternetdefenseleague.orginternetdownloadmanager.cominternetexplorer.cointernetexplorer.cominternetfreedom.orginternetofeverything.cominternetpopculture.cominterracial-sites.com
intescort.comintgram.comthaichix.com!inthenameofconfuciusmovie.comintimateinvasions.comintltencentcos.com
+thai69.comintporn.comintramuscularinjection.infointunewiki.comthai-xxx.cominventor-certified.cominventorfusion.cominventorseries.comtgutube.com
+tgtube.com
invity.io
+inxian.cominxporn.comtgp6.comioe.comioffergift.comioinformatics.orgiole.tvtgirlpostop.com
iooog.sbsiop.orgios-icloud.comtgirlcentral.comiosinthecar.comiotinactionevents.comiownyour.biziownyour.org
+tg.dev ip.gs ip.sbip73.comipa-iphone.nettfsallin.netipad.de
ipad.host
ipad.wang
ipad3.com
+ipadair.cl
+ipadair.cmtfiflve.com
tfhub.dev
+ipadair.fr
+ipadair.hk
+ipadair.ie
+ipadair.jp
+ipadair.twipadaustralia.comipadmini.cm
+tferwq.comipadmini.lkipadpro.buzzipalter.comtexture.com
texttobuy.org
+ipfire.org
+textnow.meipfs-gateway.cloudtex-talk.nettew.orgtettediferro.it
testonfox.comtestipv6.deipfs.iotest-ipv6.setest-ipv6.is
ipfs.techtest-ipv6.hu
+iphine.com
iphone-cd.com
iphone-cn.com
iphone-sh.comiphone-vip1.comiphone-vip2.comiphone-vip3.comiphone-vip4.comiphone-vip5.comiphone-x.tv
iphone-yh.com
iphone-zh.com
iphone.cm
+iphone.comtest-ipv6.cz
test-ipv6.com
iphone.esiphone.hosttest-ipv6.cl
iphone.pt
iphone.rs
iphone.ruiphone.wangiphone4.comteslazta.netiphone4hongkong.comiphone4s.comiphone5.comiphone5casescovers.comiphone5s5case.comteslamotors.comiphonecase2013.comiphonecase5.comiphonecases100.comiphonecases5.comteslaenergy.servicesiphonecollcase.comiphonefc.comiphonegermany.comiphonehacks.comiphonehangzhou.comiphoneimessage.comiphoneplus.wang
iphonerip.netiphonese.tviphonetaiwan.orgiphoneunlockimei.comiphonexs.tv
+iphonix.fr
iphoto.eu
iphoto.no
iphoto.seiphoto.wangtesla.servicesipicture.ru
ipjetable.netipleadership.orgipns.co
+ipobar.comipod.caipod.chipod.cmipod.co
tesla.com
terrapeak.comterragraph.comipod.comterraform.io
+termux.org
+termux.dev
+termux.comtermius.comipod.deipod.esipod.euipod.fripod.gripod.hkipod.isipod.netipod.noipod.pkipod.rsipod.ruipod.tw
ipodcentre.nlipodcleaner.comipoditouch.comipodnano.comipodnano.netipodprices.com
+ipodrip.caterk.nl
ipods.comteraperk.comipodtouch.co
ipodtouch.com
+ipoock.comiporntoo.comiporntv.net
+iportal.meipostnaked.com
ipple.com
ippog.org
+ippotv.com
ippstatic.comipredator.se
iproperty.com
terapeak.infoterapeak.hkterapeak.comiptvbin.comterapeak.caipvanish.com
+iq.comiqiyiavlive.buzziqq2.cciqq3.cc
iqqtv.netiranianboobs.com
+iranlms.ir
iransextv.com
iranx.net
terapeack.comterabox.comiredmail.orgtenzinpalmo.comtensorflow.orgiridiumbrowser.de
tenor.comtenbyfotolia.com
+tenacy.com
ironna.jpironpython.netironsocket.comirotv301.topirribay.comtemetube.xyzis-a-hunter.com is.gdisaacmao.com
isasecret.comisbgpsafeyet.comtellmewhygame.com
tellme.pwisca-speech.orgischool.com
tellapart.comisexlove.twisfocus.netisgame365.ccisgreat.orgisheppc.comtelex.ccisiknowledge.comtelesell.com
+iskoot.comislahhaber.net
+telesec.de
+telesco.peislamawareness.netislamhouse.com
+telekom.detelekom.com islamiccenterofnewlondon.comislamicity.comislamicpluralism.orgtelegramdownload.comislamtoday.nettelegram.spacetelegram.orgtelegram.metelegram.dogismaelan.comismalltits.comtelegram-porn.comismprofessional.netisohunt.comtelegram-cdn.orgisrabox.com
+iss138.comissitedownrightnow.comissquaredown.comissquareup.com
issuu.com
+telegra.ph
+telega.onetelecomspace.comistiqlalhewer.comistockphoto.comistorytell.com
istripper.comisunaffairs.com
+isuntv.comisupportuyghurs.orgtelebay.com
+ita-do.comitaboo.infoitaeromanga.comitaliabeatsbydrdre.comitaliatibet.orgitasoftware.com
itcanwait.comitcfonts.comtehrantimes.comtegrazone.krtegrazone.jp
+itemdb.comitemfix.comitfromtheinside.com
tegrazone.comtegrazone.co
itnel.comteeztube.comteenwebcamtube.comitools.infoteentube.proitripto.com
teensnow.link
+itsaol.comitsbetterwhenyouwinit.comitsfuck.com
itshidden.comitsky.it
itsoc.orgitu.intitun.esitunbes.comituneas.comitunes-radio.net
itunes.ca
itunes.coteensnow.com
+itunes.com
itunes.hk
itunes.mx
+itunes.org
+itunes.rio
itunes.usitunes12days.comitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.comitunesradio.comitunesradio.rioitunesradio.tvitunesradio.twitunesstore.coitunesu.comitunesu.netteensloveporn.net
+itweet.netiu45.comteensloveanal.com
+iuhrdf.org
+iuksky.com
+ius.ioiutunes.com
ivacy.comiverycd.comivintageporn.comivonblog.comivpn.netiwank.tviwantavnow.comiwantgalleries.comiwantmature.com
iwantporn.netiwaponline.comiwara.tvteensinasia.com
+teensex.meteenrave.orgteenqueens.net
iwork.comiwork.se
+iwork.wangiwyn138.comixnxx.tvixquick.comixxx.com
iyalc.com
+iyf.tviyouport.comiyouport.orgteenpussypicture.com
+izaobao.us
izles.netizlesem.orgizmirautodeskegitimleri.comj.mp
+j2objc.orgjabcomix.com
jable.orgjable.tvjade-net-home.comteenport.com
+jadult.net
+jamaat.orgjamanetwork.com
jambotube.comteenpornvideo.xxx
jamestown.orgjamyangnorbu.com
+jan.ai
+jandyx.comteenporntube.xxxteenporngallery.netteeniefuck.netteengirlfriendtube.comteendreams.com
+janor6.netjanwongphoto.comjapan-forward.comjapan-whores.comjapan18tube.comjapanbeast.comjapanese-scat.netjapaneseasmr.comjapanesebeauties.netjapanesebeauties.onejapanesegirlspictures.comjapaneselovelygirl.comteenchoice.com
japanfist.orgjapanknowledge.comjapanporn.tvteenagefucking.comjapanxxxfilms.comjapon-girls.comjapteenx.comjapxtube.comteen3x.mobi
jasa3dmax.comjasaautocad.com
teen-sexy.com
+jasmin.com
jasper.ai
jav-angel.netjav-subtitles.com
+jav-vr.netjav.comjav.dogjav.galleryjav.guru
+jav.lajav.land
jav.place
+jav.sijav.winejav01.cc
+jav101.com
jav168.cc
jav19.com
+jav223.com
jav24.com
+jav2be.com
+jav321.comjav4you.orgjav68.tv
+jav789.com
+jav889.xyzjav9999.com
123dcatch.comjava.comjava.netjavakiba.orgjavbabe.netjavbangers.com
+javbest.tvjavbobo.comjavbooks.comjavbraze.com
+javbus.comjavbus22.com
+javbuz.comjavcc.cc
javcc.com
javcdn.cc
javcl.com
javct.net
+javcup.comjavdatabase.com
javday.tv
javdb.comjavdisk.comjavdock.com
javdoe.tojavdove.comjavdove8.xyzjavextreme.netjavfilms.com
javfor.mejavforme.ninja
+javfree.la
+javfree.me
+javfree.shjavfuck.netjavfull.net
javfun.me
javfv.com
javgg.netjavgrown.comjavhard.netjavhard.orgjavhaven.com
+javhay.net
javhd.com
javhd.icu
javhd.projavhd.todayjavhd3x.com
javhdfree.netjavhdhello.comjavhdonline.com
javhdporn.com
javhdporn.net
+javher.comjavheroine.comjavhihi.com
+javhip.com
javhub.me
+javhub.netjavhuge.comjavidol.orgjavjack.comjavjunkies.comjavlands.netjavleak.comjavlibrary.com
javlibrary.tvjavmenu.com
javmix.me
javmix.tvjavmobile.mobi
javmobile.netjavmodel.com
+javmoo.com
+javmoo.xyzjavmost.com
+javmost.cxjavmost.xyzjavmuch.comjavmulu.net
+javnew.net
+javopen.co
javout.cojavplatform.com
+javpop.comjavpop.linkjavporn.tech
+javporn.wsjavpost.netjavprice.comjavprime.net
javpub.mejavpush.com
javqd.comjavrank.comjavrave.clubjavscat.netjavscatsex.comjavscatting.comjavscreens.comjavseen.com
+javseen.tvjavsex.asia
javsin.tv
javsky.tvjavspanking.comjavstar.clubjavstore.net
javsx.com
+javtag.com
+javtag.netjavtasty.com
+javteg.netjavtiful.com
javtorrent.mejavtrailers.comjavtrust.com
+javtube.ccjavtube.comjavtube.netjavvids.comjavwide.com
+javwide.tvjavxspot.com
javxxx.mejavynow.com
+javzoo.comjayspov.net jb.ggjb22.loljbe-platform.com
+jbtalks.ccjbtalks.com
+jbtalks.my
jburl.topteen-lover.net
teen-girl.netteddysun.comjcpenney.com
+tedcdn.comted.com jd.hk jd.id jd.ru
jdav-css.shopjdavsp.asia
+jdavsp.comjdavsp.info
jdavsp.pw
+jdavsp.top
+jdavsp.xyzjdbimgs.com
jdbstatic.comjdforum.net
jdwsy.comjeanyim.comteco-mo.org
+jenkins.ioteco-hk.org
jennylist.xyzjenporno.cz
jerk-porn.com
+jerk24.com
jerkdolls.comjerkdude.comjerkmate.comjerkmate.tvjerkmatelive.orgjerkofftocelebs.comjessicaturner.com
jetbrains.com
jetbrains.netjetbrains.spacejetbrains.teamjetfuelapp.comjetfuelapps.com
jetos.comteck.intechviz.netjex.com
jfengtime.comjfqu36.club
+jfqu37.xyz
jfrog.com
jfrog.org
techtimes.com
jgg18.xyzjgoodies.comjhxl.org
jhzyw.xyzjiangweiping.comjiaochuanba25.buzzjiaochuanba26.buzzjiaoyou8.comjiayoulu.comjibemobile.comtechstreet.com
jichangtj.com
jieav.com
jiehua.czjieshibaobao.comjigglegifs.comjigong1024.comtechspot.comjihadology.netjiji.com
jijiji.ca
+jilhub.comjimeng22.comjims.netjinbushe.orgjingpin.orgjingsim.orgjinpianwang.comjinroukong.comjintian.netjinx.com
techradar.comtechnologyandsociety.orgtechnics.comtechnews.twtechliquidators.com
+techhub.mstechcrunch.comtechatbloomberg.comteatroporno.com
tearapeak.com
teamviewer.usteamviewer.com
teamskeet.comteamneedforspeed.comteamamericany.comteachparentstech.orgteachmyass.comteacherfucksteens.comtdesktop.com
+tcsovi.orgtcsofbc.orgtcpspeed.comtcpspeed.co
+tcnynj.orgjitouch.com
jitsi.orgjiuse.ai
tchrd.org
jiuse.icujiuse.iojiuse821.comjiuse822.comjiuse823.comjiyou520.com
tcewf.orgjizzboom.comjizzbunker.comjizzhut.com
+jizzle.comjizzonline.comjizzthis.comjjgirls.com
jjsuo.sbs
+jkb.ccjkbeats.comjkf.net
+jkface.netjkforum.netjkub.com
+jkycjk.mom
+jkzvz.shop
jkzw.shopjlb0011.sitejm98.cctccwonline.orgtbthouston.orgjmcomic.ltd
+jmcomic.mejmcomic.mobijmcomic.moe
jmcomic1.cityjmcomic1.me
jmcomic1.mobijmcomic2.moejmlr.orgjmscult.com
tbswd.org
jmvbt.com
jneurosci.org
+tbssqh.orgjoachims.orgjoanabliss.comtbsseattle.orgtbsn.orgjobso.tvjodic-forum.orgjoeswall.comjohnpersons.comtbsmalaysia.orgjohren.games
+johren.netjoiasmr.comjoinclubhouse.comjoinmaidez.comjoinmastodon.orgjoinside.org
tbsec.orgjokerlu-go.buzzjokerlu.asia
jokerlu.worldjokerlu1.cc
jokerlu1.infotbs-rainbow.orgjoox.comtbrc.orgjorropo.net
+tbpic.infojos.com
tbjyt.org
tbicn.orgtbib.org
tbcollege.orgtaylorfrancis.comjournalchretien.netjournalofdemocracy.orgtaylorandfrancis.comjove.com
+joyclub.de
+joyjoy.netjoylovedolls.com
joymiihub.comjoyourself.comjoysporn.comtaxidrivermovie.comjpav.usjpavcom.com
+jpbabe.com
jpboy1069.netjpg4.bizjpg4.pw
+jpg4us.net
+taxi69.com
jpopforum.net
+jpvhub.com
+jquery.comjquerymobile.comjqueryui.com
jr24h.comtawny-peaks.com
+js.org
jsati.comjsatmobile.comjsbridgestone.comjsdelivr.comjsdelivr.net
+taweet.comtaup.nettati-log.com
jstor.org
+jstv51.com
+jstv52.com
+jstv53.com
jsz91.comtastyblacks.comtasteofpremium.jp
+jtt.irjtube.space
jtvnw.net
+tasexy.topjubushoushen.com
+tasexy.comjudeporn.com000webhost.comjuhuaren.comjuiceced.xyzjuicytwink.comjukujo-club.comjulesjordan.comjuliamiles.comjuliamovies.com
juliepost.com
juliereyc.comjunauza.comjune4commemoration.orgjunefourth-20.netjungleheart.comtargetimg1.com
juoaa.comjupyter.orgjust.xxx
+justav.netjustdied.comjustdoit.usjustduckit.comjustfamilyporn.comjustfreevpn.comjustfullporn.org
+justhd.xyzjusthost.rujusticefortenzin.org
+target.comjustindianporn.mejustlesbianpussy.comjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.netjustnudepic.comkyodoimages.jp
12vpn.netfedoramagazine.org
justporn.linkjustporno.es
justporno.sexjustporno.tvjustswallows.comjusttristan.comjustusboys.com
juyangbee.xyz
juyangto.infojuyuange.orgjuzi-js.shop
+juzige.xyzjuziyue.comjvid.com101tubeporn.comtaradinhos.com
taqunuhai.vipjwmusic.org
+jwpcdn.comjwplatform.comjwplayer.com
+jwpltx.com
+jwpsrv.com
+jwt.msjyxf.net
jzydh.comk-doujin.net
+k8s.io
+k9vidz.com
+ka-wai.com
+kaamuu.comtaptotokyo.comtapatalk.com
+kaggle.com
kaggle.io
+kaggle.netkaggleusercontent.com
kagyu.orgtapanwap.comkagyumonlam.orgtaolun.infokagyuoffice.org
+taoism.netkairakudoujin.net
+kaiyuan.detaoil-cn.sbs
kakao.comkakao.vc
kakaobank.comkakaobank.iokakaobankcontent.comkakaobrain.comkakaocdn.netkakaocloud.com
kakaocorp.comkakaoent.comkakaoenterprise.comkakaogamescorp.comkakaohealthcare.comkakaoilaas.comkakaoinvestment.comkakaomobility.comkakaopay.comkakaopaysec.comkakaopiccoma.comkakaostyle.comkakaotalk.jpkakaovx.com
+kaktuz.comkalachakralugano.orgkali.org
+kama-nk.rukamababa.comkamisama-day.jpkamisama-maeda-lab.comkampalaexclusiveescorts.com
+kanav.infokankan.todaykannewyork.comkanporno.comkanshifang.com
+kantie.orgkanzhongguo.comkanzhongguo.eu
kaob3.xyz
+kaotic.comkarayou.comkarechat.ai
+karger.comkarinahart.comkarkhung.comkarlajames.comkarmapa-teachings.orgkarmapa.orgkarupsha.comkarupspc.comkastatic.org
katestube.comkavkazr.comkawaiikawaii.jp
+kawase.comkaydara.comtantaly.com
+kba-tx.org
+tangren.uskbzbank.com
+kbzpay.comkc3000.shoptangben.comtanflix.comtandfonline.comtandberg.comtandberg-china.comkcoolonline.comkcqsw-na.sbs
+kdfuli.comkdy202312.shoptanc.org
+keaiav.com
+kebrum.comtamilsexvideos.cckechara.comkechtube.comtamiaode.tk
talksport.comtalkonly.netkeepandshare.comkeepmovingwithmovefree.comkeepyourcad.comkeezmovies.com
keiba.net
+talkcc.comkemono.party
kemono.sutalkboxapp.comtalk853.com
kendatire.com
kendincos.netkendralist.comkenengba.comtaleofthenight.comtalentlens.comtakporn.com
+taknai.com
takens.twtakegoto.com
+kenxxx.com
+kenya4.com
kenyaraha.netkeontech.net
+kepard.com
+kernel.orgtake2games.com
taiwanyes.comkex.com
+keybase.iokeybaseapi.com
+keycdn.comkeyhole.comkeyporntube.comtaiwanus.nettaiwantp.netkeytransparency.comkeytransparency.fookeytransparency.org
+kfs.io
kgslb.comtaiwansex.twkhabdha.orgkhanacademy.orgkhatrimaza.orgtaiwannation.comkhotruyentranhx.comtaiwankiss.comkichiku-doujinko.com
kichikuou.comkickporn.comkickshatchannel.comkicksnike1.comkicu.tvtaiwanjustice.nettaiwanjustice.com
+kidgrid.tv
taiwanhot.netkidsnikeshoes.comtaiwandc.orgkiji.cakijii.cakijij.ca
kijiji.ca
kijijiauto.cakijijiautos.cakijijiforbusiness.ca
+kijijii.ca
kijijiraps.cakijji.ca
+kijjiji.cakik.comkikdirty.comkillwall.comtaiwandaily.netkilmeadeandfriends.com
kimchi.tvkimogirl.cckimosex.com
kindgirls.comkindindianporn.com123dartisan.com
taiwancon.comtaiwanbible.com
+kindle.com
kindle.de
kindle.es
kindle.fr
kindle.in
kindle.it
kindle.jpkindle4rss.comkindleoasis.comkindleoasis.infokindleoasis.jpkindleoasis.orgkindleoasis.uskindleoasisnews.comkindleproject.com
kindleren.comkindnudist.comtaiwanadultexpo.comkindteenporn.comtaiwan-sex.com
taisounds.comtaipeitimes.com
kingcomix.comkingdomsalvation.orgtaipeisociety.orgkingextre.me
kingf-av.buzzkingf-av.lolkingf-av.momkingf-av.sbs
kingf-tv.buzzkingfav.sbskinghost.comtaiolongdh.sbskingkongapp.comkingofpics.comtailwindtraders.comtailscale.io
tailscale.com
tailf.comkingstagram.com
+tail-f.com
taiav.comtagwalk.comtafm.orgtachusz.xyzkinguno.xyzkink.comkinkbook.comkinklive.comkinkoid.comkinkyfamily.comkinkypeepz.com
tacem.org
kinmen.travelkinokuniya.com
+kir.jpkir2kos.netkirbysepicyarn.comkirbysuperstarultra.comtacamateurs.comtabustudios.co
+tabtter.jp
+kismia.comkisscos.netkissjav.com
+kissjav.li
tabootube.xxxkiwi.kzkiwibrowser.comtabooporns.com
kk.stream
kkbox.comtabooporn.tvkkfcc03.com
kkiah.com
kknews.cc
kktix.comtaboola.comkktv.metaaze.twklik.metaa-usa.org
+kmdhyy.comkmeleonbrowser.org
+kmff17.comt66y.comt35.comt.me
+knovel.comt.co
t-splines.comknowledgerush.comt-g.comszwinnertechnology.com
szexvideo.topknowyourmeme.comknoxemm.com szcheapmonsterheadphones.com
koalaporn.comkobbeatssbydredk.comkobe-pastel.comkobo.com
kobobooks.comkodi.tv
kodi.wikikodingen.com
+kompoz.comkompoz2.comkompozer.netkonachan.comkonachan.net
szbbs.netkone.comkoolsolutions.com
+koornk.comkopfhorergunstigshop.comkoranmandarin.comkoreanpornmovie.comkorenan2.comkorewaeroi.comkostenlosepornoclips.comkotlinlang.orgkoubaibu.jpkouwobb.comkphimsex.net
+kpht85.comkpinsurances.comkpptoto.infokqes.net
+kraken.comkrakenjs.comkrhentai.comkristenbjorn.comkrosspictures.comkrux.com
krymr.comszabadeuropa.hukscisco.comksd235qw.comksdl.orgsyzbj36.xyzksescortclub.com
sytes.netkspcoin.com
sysresccd.orgsysinternals.com
+ksyp10.comktvu.com
ktzhk.comku77.xyzkuaimao-app.com
+kuaipa.net
kuanrenxs.comkubakuba.globalkubakuba1996.comkubeacademy.comkubeapps.com
kubernetes.io
+kucoin.comkucoin.pluskui.namekuke.com
kukuku.ukkum.comkumo.com
+kun.im
kun66.xyzkundun1069.comkurashsultan.comkurtmunger.comkusocity.comkusugurizanmai.comkutjeporno.comkwcg.ca
kwok7.comsyosetu.com
kxsw.lifekynogon.comkyodo-d.info
+kyodo-d.jpjustpaste.itkyodonews.jp
kyodonews.net
+kyofun.com
kyohk.net
+kyoyue.com
+kyurem.com
kyzyhello.com
+kzeng.info
synergyse.comsyncback.comla-forum.org
+la-mama.rusynaptic.net
symcd.com
symcb.comsymantec.comlabiennale.orgsylfoundation.orgsyhacked.comsyfor.clicklacomics.org
ladbrokes.com
+ladies.comladybaba.netladyboygold.comladyboygold.euladyboypornonly.comsydneytoday.com
sybjav.onlinelagranepoca.com
+sybj91.one
+sxyprn.com
sxshentai.com
+sxarab.top
swtor.netlala.imlalulalu.com
swtor.com
lamayeshe.com
swoosh.tv
+swoosh.comswoo.sh
swjfo.comswjedifallenorder.com
switchvpn.net
+switch1.jp
+lamrim.comswissvpn.netlanasbigboobs.comswisstsa.liswisstsa.chswissstick.comswisssigngroup.comswisssigngroup.chswisssigner.comswisssigner.ch
swisssign.org
swisssign.netswisssign.li
swisssign.comswisssign.chswisssign-group.li
landofhope.tvswisssign-group.comswisssign-group.chswissinfo.chswissign.li
langsuirs.comswissign.com
+swissid.chswiss-turn.comswiss-machining.comlanik.us
+lanmdh.netlanniser-ylo.shop
+lantern.io
lanternal.comlantosfoundation.org
+laogai.orglaogairesearch.org
+laomiu.comlaosijifuli9009.toplaowang.viplaoyang.infolapriere.jpswingexpert.nllaptoplockdown.com
laqingdan.net
laracasts.comlargecamtube.comlargeporntube.comlarsgeorge.comlasersawapp.comlast.fmlastcombat.com
lastfm.eslasvegasbmw.comlatampartneruniversity.comlatamvmwareforum.comlatelinenews.comlatencytop.comlatex-project.orglatinaabuse.comlatintubeporn.comlatticedata.com
launchpad.netlaunchpad.wanglaunchpadcontent.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.org
lausan.hklavteam.orgswingersexorgy.com swingers-homemade-videos.comswingerporntube.comswingerpornfun.comlaxd.comlazymike.com
+lbank.infoswingercuckoldporn.comswiftfinancial.netlbfmaddiction.com
lbkrs.comswiftfinancial.infoswiftfinancial.comswiftcapital.comswiftbank.us
+lbtube.comswiftbank.info
swift.orgswegold.comsweetsinner.com
sweetsext.comsweetadult-tube.comsway.comsway-cdn.comlcgirls.comswapsmut.com
swagbucks.com
swag.liveswag-live.cosvsgames.org
svsfx.comlcsmerch.com
svscomics.comsvscomics.asia
+svpply.comsvp-team.comsvobodnaevropa.bgsvoboda.orgle-direct.tv
+le-vpn.comsvipshipin.storesverigebeatsbydrdre.comsvensksexfilm.comleafyvpn.netleaguehighschool.comleagueoflegends.ca
+svc.msleagueoflegends.comleagueoflegends.infoleagueoflegends.krleagueoflegends.netleagueoflegends.orgleagueoflegendsscripts.comleaguesharp.infoleaguoflegends.comleakedmeat.comleakedzone.comleaksmodels.comleakxxx.comsvaboda.orgsuxiebu.comleannecrowvideos.com
suxib.comsustainthesound.com sustainabledesigncouncil.net sustainabledesigncouncil.com!sustainablebuildingstudio.comsusiewildin.comsuruga-ya.jp
suruga-ya.comsurrenderat20.net
+suroot.com
surfshark.comsurflite.netsurflite.cosurfeasy.comsurface.comsureporn.comsuprememastertv.com
supremacy.net
supremacy.comsupportfacebook.comsupplybestjerseys.com
+suppig.net
+supjav.comlearnwithleague.comleavinghpinc.com
superzooi.comsupervpn.netlecloud.net
lecoin.cc
superuser.comlede-project.orgsupertop.co
+ledger.comleecountytimes.comsupersexeamateur.comsuperpapermario.comsuperpages.comsuperokayama.comsupermariorun.comsupermariogalaxy.comsupermario3dworld.comsupermario.comsuperjapanesesex.comsuperhqporn.comsupergratisporno.comsuperfreevpn.comsuperearsenjoy.com
supercell.comsuperadultgames.comsupchina.comsupanimegames.com
+suoluo.org
+sunvpn.net
+lefora.com
left21.hksunskyforum.comlegalporno.comsunporno.comsunmedia.calegaltracker.comsunglassessale2014.com
+legsex.com
legsjapan.comsundayready.comsundayguardianlive.comsundanceignite2016.comsun1911.comsun.comsumrando.com
sumomo-ch.comsummify.comleirentv.casulwerphoto.comleisurecafe.caleisurepro.comleliao1.com
+lematin.ch
lemoncams.com
+lemonde.fr
lencr.orglenkino.xxxlenporno.redlenwhite.comleorockwell.com
sulian.meleporno.orglepornochaud.comlepornofrais.comlerosua.orgsukebelinks.comlesbian8.comlesbianpics.orglesbianpornvideos.comlesbiansubmission.comlesboerotica.netsukafeti.jp
lesoir.be
+suissl.com
+letfap.comlethalhardcore.comlethalhardcorevr.com
letmejerk.com
letmejerk.fun
letou.comletscorp.net
letsdoeit.comletsencrypt.comletsencrypt.orgletsfuckme.netletsjerk.cclettherebeporn.comsugumiru18.comlevelsex.comsugobbs.com
sugarsync.com
lewdthots.comlewdvrgames.comlewdweb.netsucksex.comsuccesswithteams.com
successfn.comlexisnexis.comlexuemei.comsubstack.com
+lezpoo.comsubscene.comlfai.foundationsubmityourflicks.com
+lflink.comlflinkup.comlflinkup.netlflinkup.org
+lg.comlgappstv.comsubmittal-log.comlgbtq.gamessublimetext.comlge.comlgecareers.com
+lghvac.comlghvacstory.comlgrecyclingprogram.comlgsalesportal.comsublimedirectory.com
+lhakar.orglhasocialwork.org
+sub147.comstxmosquitoproject.orgstxmosquitoproject.net
li.taipeiliangyou.netliangzhichuanmei.comlianhonghong.com
lianjiajr.netlianyue.netliaowangxizang.netstxmosquitoproject.com
liberapay.com
liberapay.orglibertysculpturepark.comstxmosquito.comstupidvideos.com
+libgen.fun
libgen.islibgen.life
libgen.me
libgen.rs
libgen.stliboggirls.netlibrary.lolstupidcams.comlibrarylovefest.comlibraryofthumbs.com
+libredd.it
librewolf.netlibsolutions.applibsolutions.domainslibsolutions.net
licdn.comlicensebuttons.netlicenseparser.comstunnel.orgstumbleupon.comstuidok110.comlife-global.org
stufferdb.comstudywatchbyverily.orgstudywatchbyverily.comstudiosucks.comstudiopaint.com
lifemiles.comlifeselector.comstudioncorp.comstudioluxus.comlifewire.comstudiolico.comlightbridge.com
studiofow.comstudiobeatsbydrdre.com
lighti.melightxxxtube.comlightyearvpn.com
+lih.kgstudentsforafreetibet.org
lihkg.comlihksnap.comlike.com
likeseiyu.comliketruyen.net
liketwice.comlikuoo.videolilhumpers.com
+liliav.comlilith-soft.com
+student.twstrongwindpress.com
+limedia.tw
limelight.comlimer.tw
+limertw.cclimeteensex.com
+limiao.net
strongvpn.com
+lin.eestripskunk.comstripselector.comstripparadise.com
stripecdn.comstripe.network
+stripe.com$ stripe-terminal-local-reader.net
stripchat.com
lindylist.orgline-apps-beta.comline-apps-rc.com
line-apps.comline-beta.meline-cdn.net
line-scdn.netline.bizline.melinearcollider.orglinecorp.comlinefriends.comstripcamfun.comlinegame.jplinemobile.comlinemyshop.comlineshoppingseller.com
linetv.twlingeriepornonly.comlinglingfa.comlinguee.comstrip-poker.xxxlingvodics.comlink-o-rama.comlink.comstrikinglycdn.comlink2galleries.comstrikingly.com
+link69.comstrepsilsarabia.comstrepsils.uslinkedin.atlinkedin.comlinkideo.comstrepsils.silinkjunkies.comlinkshit.comstrepsils.rulinkuswell.comlinotype.comlinseysworld.comstrepsils.ro
linux.orgstrepsils.ptlinuxfoundation.orglinuxfromscratch.org
linuxmint.comlinuxtoy.orgstrepsils.pl
lionsroar.com
strepsils.netstrepsils.iestrepsils.hustrepsils.hrlipuman.comliquiditytp.com
liquidvpn.comstrepsils.fr
+lisiku.comlisiku1.comstrepsils.fistrepsils.esstrepsils.chlistennotes.comlistentoyoutube.comstrepsils.atlistinganalytics.netlistorious.comlitbus-anime.comliteratumonline.comliterotica.comstreetmeatasia.comlittleasians.comstreema.comlittlesexdolls.comlitv.tvliu-xiaobo.orgliudejun.comliuhanyu.comliuhefabu.clubliujianshu.com
liuxiaobo.netliuxiaotong.com
streamsex.com
streamporn.pw
streamporn.cclive-video.netstreamlatina.comlive.comstreamingthe.netlive.eulive.netliveauction.comlivecamclips.comlivecoin.netlivedoor.jplivefilestore.comlivehdcams.comlivejasmin.comlivejasminbabes.netliveleak.comlivemint.com
livemodels.costreamingporn.xyz
livephotos.tvliveporngirls.comliveprivates.comliverail.comliverail.tvstreamingdisney.net
streamate.comstreamable.comlivesex.comlivesexasian.comlivesketchshare.comlivestream.com
livevideo.comstream-mydirtyhobby.biz
+livexxx.mestraplessdildo.comstranabg.comstraitstimes.comstraightpornstuds.comstraightouttasomewhere.comlivingonline.uslivingstream.com
stoweboyd.comlivingyourambition.comstoryful.comstormmediagroup.comliwangyang.comlizardporn.comlizhizhuangbi.comstorm.mgstorj.iolkcn.netstorify.comll82y2ifdd.topstoriesonline.netstoresense.comstore-bridgestonesports.comstoragenewsletter.comllbd10.shopllcaoxm-avi.sbs
lldns.netlliusno.comllnw-trials.comllnw.comllnw.net
llnwd.net
llnwi.netllwht88.xyzstoptibetcrisis.netstoporganharvesting.orgstonefoxproductions.comstonefoxlingerie.comstockingfetishvideo.comstocking-tease.comlmm167.shop
+lmmbtc.comstockagainstphotography.com
+sto.ccstlouisbmw.netlncn.orglnkd.inlnstagram-help.comload.toloanbuilder.comlobsangwangyal.comlobstertube.comlocalbitcoins.comlocalbitcoinschain.comlocaldomain.wslocalizecdn.comlocalizejs.comlocalizestatus.comlocalpresshk.comlocalxlist.orgstingrayengine.com
lockestek.com
stin31.ru
+logbot.netlogi.comstimorolsex.comstileproject.com
logicoolg.comlogin-account.netlogin-paypal.comlogin-paypal.info
+logiqx.comlogitech.bizlogitech.comlogitech.frlogitech.io
logitechg.comlogitechg.frstickofjoy.comstickeraction.comloholidayhk.comstickam.comlokinet.orglol-europe.comlolclub.orglolespor.comlolesports.com
lolfanart.net
lolhentai.netloli.net
+lolibus.cclolibus.toplolislove.info
+lolita.betlollipopescorts.com
sthoo.com
+lolpcs.comstheadline.com
lolstatic.comlolusercontent.comstepsiblingscaught.comstepmom.onestepmaturesex.comstephaniered.comstepfamilyporn.comstepdaughter.love
stepchina.comsteganos.netsteganos.comsteezylist.comlondonchinese.casteemit.comsteelbrick.comsteel-storm.comsteamygamer.comsteamusercontent.comsteamunlocked.netlondonhotescort.comsteamstatic.comsteamserver.netsteampowered.comsteamofporn.comsteamgames.com
steamdeck.comsteamdb.infosteamcontent.comsteamcommunity.comlondonmithraeum.comsteam-chat.com
steam-api.com
londonreal.tvstcroixmosquitoproject.comstcroixmosquito.comstc-server.com
stboy.netlonestarnaughtygirls.comlongbridge.cloudlongbridge.global
longbridge.hk
longbridge.sglongbridgeapp.com
+staxus.comlonghair.hk
statuspage.iostatueofdemocracy.orgstatsmakemecry.comstaticflickr.com
+static.funstatic-verizon.com
+longman.ch
longmusic.comlongportapp.comstatic-nike.comlongtailvideo.comlongtermly.netlongtoes.comstatic-economist.comstatic-cisco.comstateofthemap.orgstateofthemap.comlookinside.comlookpic.comlooktoronto.comlooporn.com
looti.netlordofultima.comstarwarstheoldrepublic.comlostbetsgames.comlotcrap.comstarwarskids.comlotsawahouse.orgstarwarsjedifallenorder.com#starwarsgalacticstarcruiser.comstarwarsfallenorder.comstarwarsbattlefront2.comstarwarsbattlefront.comstarwars.com
love4porn.comlove6.tv
love7.xyzloveamateurfacials.com
loveavdh15.cc
loveavdh21.cc
loveavvip.comlovebeatsdr.comlovedolltorso.com
lovegirls.camlovehomeporn.comlovejav.netloveloveskill.com
lovemarca.comstartupschool.orgloveparents.orglovepartners.life
loverslab.comlovesexbody.comlovesexdurex.comlovethiscity.comlovetvshow.com
+lovex.lifelowergiseries.comstartuplivingchina.comstartupjournal.com
startpath.com
+lowiro.comlp99.pw
startpage.com
start.comlpsg.com
+lqpjw.cyoulrfdsoftware.comlrfz.comlrip.orglrysgee.xyzstarsze.icustarship-ent.comlsawards.comstarplus.comstarp2p.comstarott.comstark-verlag.chstarfox.comstarfishfx.comstarfieldtech.comstarcraft2.com
starcraft.comstarbuckssummergame.comstarbuckssummergame.castarbucksslovakia.skstarbucksrtd.comstarbucksromania.ro starbucksrewardsstarland.comstarbucksrewardsstarland.castarbucksreserve.comstarbuckspoq.comstarbucksforlife.comstarbucksforlife.ca starbuckscoffeegearstore.comlsforum.netstarbuckscoffeegear.comstarbuckscoffee.cz
lsj2.shop
lsj40.xyzlsjfuli308.xyzstarbuckscardb2b.comlsm.orglsmchinese.orgstarbuckscard.ph
lsmkorean.orglsmradio.comlsmwebcast.comstarbucksavie.ca
+lspimg.comstarbucksathome.comstarbucks.vn
lss55.comstarbucks.ttstarbucks.sestarbucks.rustarbucks.rsstarbucks.ptlsxszzg.comstarbucks.plstarbucks.phstarbucks.nolthgav.buzzstarbucks.nlstarbucks.itstarbucks.instarbucks.iestarbucks.hustarbucks.fr
+ltube.life
+lu2100.com
+lu2200.comlu23.com
lu2300.cclua.orgluanlunmv.cclubetube.comlucahmelayu.clublucasentertainment.comstarbucks.esstarbucks.dkluckydesigner.spaceluckyissue.comstarbucks.de
starbucks.comstarbucks.chstarbucks.ca
+luke54.com
+luke54.org
+lululu.onestarbucks.bgstarbucks.bestarbucks.atstarbucks.adlunchwithpype.com
+luoli.infoluotihg-tv.buzz
+luotihg.ccstarbucks-stars.comlupm.org
lupoporno.comluscious.netlushstories.comlustery.comlusthero.com
lustylist.comstar-latam.comluticlip.comstar-brasil.comstanford.edustandwithhk.orgstandupfortibet.orglutube2310.com
+luvmov.com
+luw666.xyzluw666cm.cc
+luxebc.comluxuretv.comluxuretv.fun
lvhai.orgstandardsuniversity.orglvv2.com
+stage64.hkstaffhub.ms
+lwwcn.buzz
lwwcn.xyz
+lxxlxx.com
+stadia.dev
lyfhk.netlysol.calysol.clstacyvandenbergboobs.com
lysol.comstacksnippets.net
lysol.net
stackpath.dev
+lyzsxx.com
stackpath.com
lzjscript.comlzmtnews.orgm-power.comstackoverflowcareers.com
m-team.ccm.mestackoverflowbusiness.comstackoverflow.email
+m12.vcstackoverflow.comm2m.comstackoverflow.costackoverflow.blog
stackmod.blog
+ma1lib.orgmaa.plusmabbank.comstackexchange.com
stackauth.commac-mini.commac.com
stackapps.com
+mac.eu
+mac.rsmac.wangmacappsto.restackage.org
+macbook.co
+macbook.hk
+macbook.twmacbook.wang
+st.comssx3.commacbookair.comssttest.net
+sstmlt.net
macbookair.es
macbookair.hk
macbookair.jp
macbookair.krmacbookair.net
macbookpro.comacbookpro.com
+sstmlt.moemacbookpro.net
macbookpro.usmacbookpros.commacbooksale.com
macboxset.comsstm.moesstatic.netmacgamestore.commach-os.commach-os.netmachigle-sp.commachigoto.jpmachine-dna.commachogaytube.com
+machos.net
+sssuo1.xyzmachotube.tvmacintosh.eumacintoshsoftware.com
+sssjav.com
+sssins.commacmini.com
ssshuqian.xyzmacosforge.orgmacossierra.commacosx.infomacosxlion.commacpazar.commacports.orgmacreach.commacreach.netmacromedia.commacrovpn.commacruby.commacruby.netmacruby.org
macrumors.comsss.xxx
mad-ar.chmadamlive.tvmadchensex.commaddawgjav.netmaddenchampionship.commaddenrewards.commaddenseason.infomaddenseason.netmaddenseason.orgmadewithcode.commadewithmaya.commadewithstudiotools.commadhomemadeporn.commadonna-av.com
+madou.clubmadou.lamadou.tvmadouav.onemadouqu.com
+madrau.com
+madshi.net
madthumbs.com
madvagina.com
madvr.com
madvr.net
madvrlabs.llcsss.campmafia-linkz.tossrshare.commageconf.com
+ssrpass.pwmagento.commagento.netmagentocommerce.commagentoliveconference.commagentomobile.commagestic.commagic-net.info
ssr.toolsmagicalmirai.commagicmovies.comsspro.ml
+ssplive.pw
mahabodhi.orgmahajantech.comsspanel.net
maiio.netmail-archive.commail.rumaildns.xyzmaileoch.commailhealth.com
sslpaypal.orgmailonline.com
+ssl443.orgmailonsunday.iessl.commainichi-athletepartners.jpmainichi.jpmainichibooks.commaiplus.com
mairbeats.commaizhong.org
+makaan.commakeanything.commakebettercode.commakecode.org
+makeeu.commakeitopen.commakeitrealcontest.commakemymood.commakesenseofdata.comssl-images-amazon.commakingstartshere.comssl-certificate.chmakkahnewspaper.commaktoob.comsshs.xyzmalayalamanorama.commalayporn.sitemalayporn.spacemalaypornhub.commalaysiakini.commallandrinhas.netmallheadphone.commalvastudios.comsshs.pw
mamacitaz.com
mamingzhe.com
sshs.clubmanaged-pki.chmanaged-pki.demanagedmeetingrooms.commanagedpki.com
ssh91.com$ management-azure-devices-int.net management-azure-devices.netssglobal.messglobal.cossdevrd.comss7.app
+ss2.usss-link.com
srttu.edu
+srtcdn.net
+srocket.ussrebrenica360.com sr.htsqyzh-dh.sbssquirrelvpn.comsquirrelgroup.netsquirly.infosquidplatform.comsquareup.comsquarecloudservices.com
squarecdn.comsquarecapital.comsqu1.comsqlserveronlinux.com
+sqlite.orgspyjinx.com
manchukuo.netmandatewire.commandiant.commanga-mill.commanga18.artmangafox.commangafox.memangahasu.semangahentai.me
mangahome.com
mangoporn.netmangotporn.commanhuabika.com
manhuagui.com
+manhub.commanhunt.netmanhuntdaily.com
manhwa24h.commanhwahentai.memaniash.com
manicur4ik.rusptvbroadcast.commanorama.commanoramanews.commanoramaonline.commanoramayearbook.in
+manoto1.tvmanototv.commanporn.xxxmansion.commansionglobal.commansionpoker.com
mansurfer.com
manta.comsproxy.infomantochichi.comsproutcore.commanurefetish.commanytoon.commanyvids.commanyvoices.news
+sprite.orgmaomi-shipin.commap-software.com
+mapbox.commapguide.com
maple.finance
+maplew.comsprinklesapp.commappingonline.com
springwood.mespringernature.comspringerlink.comspringer.comspringboardplatform.com
marc.info
spring4u.infospreadshirt.es
marguerite.sumariadb.orgspreadprivacy.commarinecadcam.comspraynwash.commarioandluigidreamteam.commariobroswii.commariokart7.commariokart8.commariosupersluggers.comspotifyjobs.commarketexecutive.netmarketing-cloud.commarketing-nirvana.commarketingcloud.comspotifyforbrands.commarketo.commarketo.net
+marketo.tvmarketodesigner.commarketolive.commarketwatch.commarkingmenus.commarkzuckerberg.comspotifycodes.comspotifycharts.comspotifycdn.netmarranazas.com
+martau.commartincartoons.commartsangkagyuofficial.org
maruta.be
+marvel.commarvel10thanniversary.commarveldimensionofheroes.commarvelparty.netmarvelpinball.commarvelsdoubleagent.commarvelspotlightplays.com marvelsuperheroseptember.commarvelsuperwar.commarxist.commarxist.netmarxists.orgspotifycdn.comspotify.designspotify.com
masalabin.commasaladesi.commasalaseen.netmasalladeloslimites.comspotify-everywhere.commash.tomashaalradio.commaskedip.commaskedsingerfox.commassage-in-taipei.commassagerepublic.commasseffect.commasseffectarchives.com
mastercad.commastercard-email.com
mastercard.ae
mastercard.at
mastercard.az
mastercard.ba
mastercard.be
mastercard.bg
mastercard.by
mastercard.ca
mastercard.ch
mastercard.clspoti.fispotflux.comsportstream.comsportsfacebook.com
spore.comsplatoon2tournament.com
+spizoo.comspiritofecstasy.comspiritclubs.com
spike.comspiedigitallibrary.orgmastercard.com
spideroak.comspicybigtits.comspiceworksstatic.comspiceworks.comspicevpn.comspicebar.despeybay.comspermyporn.comspendee.comspencertipping.comspem.atspektral.cc
speedxtra.comspeedrun.comspeedracegear.comspeedify.comspeedhunters.comspeedfantasybid.comspeeddreamride.comspectraltube.comspecialtyheadphones.comspearhead.krspeakerdeck.comspcc-sp.com
mastercard.cz
mastercard.de
mastercard.dk
mastercard.es
mastercard.eu
mastercard.fi
mastercard.fr
mastercard.gr
mastercard.hr
mastercard.hu
mastercard.iemastercard.inc
mastercard.it
mastercard.jo
mastercard.ke
mastercard.kz
mastercard.lu
mastercard.md
mastercard.my
mastercard.nl
mastercard.no
mastercard.om
mastercard.pl
mastercard.pt
mastercard.qa
mastercard.ro
mastercard.rs
mastercard.ru
mastercard.se
mastercard.si
mastercard.sk
mastercard.ua
mastercard.usmastercardacademy.commastercardadvisors.commastercardbiz.camastercardbiz.com!mastercardbusinessnetwork.commastercardcenter.commastercardcenter.org*&mastercardcenterforinclusivegrowth.orgmastercardconnect.commastercardezsavings.commastercardidtheftalerts.commastercardmoments.commastercardrestaurant.commastercardservices.commastercardworldwide.commasterclass.commasterintelligence.commasterpassteststore.comspb.commasterwanker.commastodon.cloud
mastodon.hostmastodon.socialmastodon.xyz
spankwire.commasturbate2gether.commat6tube.commatainja.comspankred3d.commatchmover.commaterial.iospankmonster.comspankingtube.commathable.iospankingstudio.com
spanking.wikispankbang1.comspankbang.partymathiew-badimon.commathoverflow.net
spankbang.comspankandbang.comspaindisney.com
+spacex.com
spaceship.commatome-plus.commatome-plus.net
spacemail.com
+matrix.org
matrix.tomatsushimakaede.commatters.newsmatters.onematters.townmattersprotocol.iospaceexplored.comsp.coolmattwilcox.netsoylentnews.orgmature-amateur-sex.commature-nl.eumature-porn-flix.commature-tube.sexy
mature.nlmatureclub.com
maturefuck.ccmaturejp.commatureladiesxxx.commatureporner.commaturepornonly.commatures-loving-sex.commaturescam.commaturesexual.commaturesinhd.commaturetube.commaturewifeporn.ccmaturewomenanal.commaturexxxvideos.ccsoyinyj.topmax.com
maxgo.commaxillofacial-cadcam.com
sovec.netmaximumerotica.com
maxing.jp
maxis.comsouthfloridamini.com
maya5.netmayacomplete.commayaconductors.commayafluideffects.commayaformotiongraphics.com
mayagames.commayamasters.commayamentor.netmayamentors.commayamentors.netmayaonlinux.com
mayaonmac.com
mayaonosx.commayapressbooks.com
mayasucks.commayaunlimited.commayauser.commayauser.netmayavisualization.commayijiejie.commayimayi.com
maying.cosouth-plus.orgsouth-plus.netmbeats-tech.commbheadphone.comsourcingforebay.tvsourcingforebay.netsourcewadio.com
sourcehut.orgsourceforge.netsourceforge.commcadforums.commcaf.eesoupofmedia.comsoup.io123dappipad.comsoundofhope.orgmcd.comsoundofhope.krsoundofhope.eusoundcloud.com
+soumo.infosoulcaliburhentai.net
soul-plus.net
souka.xyzsoubory.commcdindia.commcdindonesia.com123dapp.commcdonalds-online.commcdonalds.bemcdonalds.casostibet.org
sosreader.comsoso7778.com
sos44.comsos.org
mcdonalds.comsorting-algorithms.comsorcerersarena.comsorazone.net
sora6.com
+soporn.comsopcast.orgmcdonalds.hkmcdonalds.itmcdonalds.nomcdonalds.semcdonaldsapps.commcdonaldsarabia.comsopcast.com
mcfog.com
+mcisco.comsoooyinfor.lolmcpeaceofmind.com
mcreasite.commcrouter.netmcrouter.org
mcstories.comsoolakhi.com#sonypicturestelevisiongames.commd-t.orgmdbankpublic.com
+mdhcdn.commdialog.comsonypicturestelevision.commdn.devsonypicturesstudios.commdnkids.commdnplay.devmdnyalp.devmdpi.com
mdpj-mov.shopmdpjoin.buzzmdr-good.sbsmdr100ya.latmdtt-tv.sbssonypicturesmuseum.commdyy.desonypicturesanimation.com
+me-gay.com
+me.com me.mesonypictures.commeadjohnson.com
+sonypcl.jpsonylatvija.commeadjohnson.netmeansys.com
+mearki.comsonykigyo.jpsonyglobalsolutions.jp sonyentertainmentnetwork.comsonydna.comsonydesign.commedia-amazon.commedia-imdb.comsonyclassics.comsonybuilding.jpmediachinese.commediafiles-cisco.com
mediafire.commediafreakcity.comsonybsc.comsony.ua
mediasama.com
mediawiki.orgmedicalimplants-cadcam.comsony.sksony.sisony.sesony.rusony.rs
+medium.commedium.systemsmedow.rumedrxiv.orgsony.rosony.ptsony.pl
+meendo.commeet.newmeetandfuck.gamesmeetandfuckgames.com
+meetav.commeetfasttrack.commeetsmartbook.com
+meetup.commeetyourdevices.commefeedia.commefound.comsony.nomega.iomega.nzmegacamz.commegafilmporno.comsony.nlmegaphone.fmmegapornfreehd.comsony.netmegapornpics.com
megaproxy.com
megarotic.commegatitsminka.com
megavideo.comsony.lvmegurineluka.com
+meguso.commeijinsen.jpmeilleurpornos.comsony.lumeitula.net
meizhong.blogmeizhong.report
melon.comsony.ltmelonstube.commeltoday.commeme111.com
+memehk.com
memorybbs.com
memri.org
memrijttm.orgmen.com
men18.netsony.kz
menatplay.comsony.itmendeley.commengnan.shop
+menhdv.com
mensheaven.jpmenshin-channel.commeoriental.comsony.iemepn.com
meraki-go.com
meraki.hkmerakigo.comsony.humercatox.com
+mercdn.netmercyprophet.orgmergersandinquisitions.orgmeridian-trust.orgmeridian.netmeripet.bizmeripet.comsony.hrsony.grsony.frsony.fisony.eusony.essony.eesony.dksony.desony.cz
meshmixer.commeshmixerforum.commeshrep.com
+mesotw.com
messenger.commessengerdevelopers.com
messytube.commet-nude.commeta.aimeta.comsony.commetabora.iometacafe.com
metacloud.commetacpan.orgsony.clmetafilter.commetalpha.financemetamind.iosony.chmetaporn.com
+metart.commetarthunter.commetartnetwork.comsony.cametcams.comsony.bizmeteorshowersonline.comsony.bgsony.besony.basony.atsony-semicon.comsony-promotion.eumetro.taipeisony-olympus-medical.commetrolife.cametropolitana.tokyosony-mea.commetrotoons.comsony-latin.com
meuhentai.commewe.commexc.commexcsensors.commeyou.jp
meyul.commfg-inspector.comsony-europe.commfxmedia.commgo-images.commgo.com
mgoon.com
sony-asia.commgstage.commh4u.orgsony-africa.commhhanman.xyz
+101xxx.xyz
mhqwe.xyzmhradio.orgsonorousporn.comsonidodelaesperanza.orgsonicbbs.ccmhshosting.comsongjianjun.com
+mi9cdn.commiamifintechfestival.commiaomwu.com
+miaopa.net
somee.com
solveforx.comsolv.financemichaelanti.commichaelmarketl.com
mickey.tvmickybells.commicrobit.orgsolostudioksale.comsolidfiles.comsolidaritetibet.org
solarcity.com
+solana.com
123bin.ccmicrosoft-falcon.iomicrosoft-give.commicrosoft-int.commicrosoft-ppe.commicrosoft-sap-events.commicrosoft-sbs-domains.commicrosoft.azmicrosoft.bemicrosoft.bymicrosoft.ca
microsoft.catmicrosoft.chmicrosoft.cl
microsoft.commicrosoft.czmicrosoft.demicrosoft.dkmicrosoft.eemicrosoft.esmicrosoft.eumicrosoft.fimicrosoft.gemicrosoft.humicrosoft.iomicrosoft.ismicrosoft.itmicrosoft.jpmicrosoft.ltmicrosoft.lumicrosoft.lvmicrosoft.md
microsoft.netmicrosoft.plmicrosoft.pt
microsoft.redmicrosoft.romicrosoft.rsmicrosoft.rumicrosoft.semicrosoft.simicrosoft.tvmicrosoft.uamicrosoft.uzmicrosoft.vnmicrosoft365.commicrosoftaccountguard.commicrosoftadc.commicrosoftads.commicrosoftadvertising.com*µsoftadvertisingregionalawards.commicrosoftaffiliates.commicrosoftapp.net"microsoftazuresponsorships.commicrosoftcloud.commicrosoftcloudsummit.commicrosoftcloudworkshop.com"microsoftcommunitytraining.commicrosoftdiplomados.commicrosofteca.commicrosoftedge.commicrosoftgamestack.commicrosofthouse.commicrosofthouse.netmicrosoftinternetsafety.netmicrosoftiotcentral.commicrosoftiotinsiderlabs.commicrosoftlatamaitour.commicrosoftlatamholiday.commicrosoftlinc.commicrosoftmxfilantropia.commicrosoftnews.ccmicrosoftnews.commicrosoftnews.netmicrosoftnews.orgmicrosoftnewsforkids.commicrosoftnewsforkids.netmicrosoftnewsforkids.orgmicrosoftnewskids.commicrosoftnewskids.netmicrosoftnewskids.orgmicrosoftonline-p.commicrosoftonline.com!microsoftpartnercommunity.com!microsoftpartnersolutions.commicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftready.commicrosoftsilverlight.commicrosoftsilverlight.netmicrosoftsilverlight.orgmicrosoftsiteselection.commicrosoftsqlserver.commicrosoftstart.commicrosoftstore.com
+sokmil.commicrosoftstream.commicrosoftteams.commicrosofttradein.commicrosofttranslator.commicrosoftuwp.commicrovpn.com
+micstl.com!midatlanticbmwmotorcycles.comsokamonline.commiddle-way.net
sojiy1124.top
sohfrance.orgmidentsolutions.com
sohcradio.com
+soh.tw
+sogrady.mesogclub.comsoftwarebychuck.comsoftsmirror.cfsoftnology.bizmidoushe.comsoftmodels.netsoftfamous.commiexnoviadesnuda.com
softether.orgmihk.hkmihomeone.infomihr.com
mihua.orgmiitomo.commiiverse.commikanani.mesoftether-download.commikesoltys.commikrotik.com
+miktex.orgmikuexpo.commilehighmedia.com
+milfav.icumilfbundle.com
+milfed.commilffox.commilfhunter.com
milflove.livemilfmaturesex.netmilfmovs.commilfnut.commilfporn.promilfpornonly.commilfpornpics.xxx
milfprime.commilfs-gone-wild.com
milfs-now.commilfsexstart.nlmilfslesbian.commilfsover30.commilfthreesomes.commilftube.promilftugs.com
+milfvr.com
+milfzr.commilkmanbook.comsoftbankworld.commillymarks.com
milofetch.com
milph.netmilsurps.comsoftbankventuresasia.commimei.storemimi-zhibo.com
mimi2022.link
+mimi22.topmimi222.top
+mimiai.netmimistudio.commimistyler.commimivip.com
+mimivv.commimizy-go.buzzminbrowser.orgmindgeek.commindmeld.commindrolling.org
minecraft.netminecraft.wikiminecraftservices.comminecraftshop.comsoftbankusa.netsoftbanktelecom.commingdemedia.org
minghui-a.org
minghui-b.orgminghui-school.orgsoftbankrobotics.comminghui.orgmingjinglishi.commingjingnews.commingjingtimes.com
+mingky.orgmingkyaa.commingpao.commingpaocanada.commingpaomonthly.commingpaonews.com
mingpaony.com
mingpaosf.commingpaotor.commingpaovan.commings-fashion.commings.hkmingshengbao.com
mingw.org
mingwatch.comsoftbankmobile.netminhhue.net
+123-hp.commini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chsoftbankhawksstore.jpmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini-connected.nomini-connected.plmini-connected.ptmini-connected.semini-corporate-sales.com
mini-coupe.camini-dubai.com
+mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.commini-ksa.commini-kuwait.commini-lebanon.commini-me.com
mini-oman.commini-qatar.commini-srilanka.commini-stjohns.camini-stjohns.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.commini.ammini.atmini.bemini.bgmini.bymini.camini.ccmini.chmini.clsoftbankci.comsoftbankbb.netsoftbankbb.comsoftbank.tvsoftbank.jpsoftbank-telecom.netsoftbank-telecom.comsoftbank-robotics.commini.comsoftbank-jp.comsoftbank-ipo.com10beasts.net
+socrec.org
sockslist.netsockscap64.comsocks-proxy.netsociolotron.comsocialwhale.comsocialmediagirls.com
socialkam.comsocialcammail.com
socialcam.comsocialblade.com
+social.comsoccermatchpass.comsoccerfinancier.casocalbmw.com
socailcam.comsoc.mil
+sobees.comsoasta-dswb.comsnowmiku.commini.czmini.demini.dkmini.dzmini.esmini.fimini.frmini.gpmini.humini.iemini.inmini.ismini.itmini.jpmini.kzmini.lumini.mamini.mdmini.mqmini.mumini.mymini.ncmini.nlmini.nomini.ptmini.remini.romini.rsmini.rumini.semini.simini.skmini.tmmini.tnmini.ua
+mini101.caminiargentina.comminibrossard.caminibrossard.com
minicanada.caminicaribbean.comminiccrc.ca
minicooper.caminid.nominidealer.comminidealernet.comminidowntown.caminidowntown.com minidrivingexperienceusa.com
minidurham.caminidurham.com
minie.com
miniforum.org
+minifs.comminigeorgian.caminigrandriver.comminihalifax.caminihalifax.com
+minihk.comminiinvasion.caminiitalianjob.comminikelowna.caminikelowna.comminilangley.caminilangley.comminilat.comminilaval.ca
minilaval.com
minilondon.ca
minilondon.cosnowlionpub.comminimarkham.caminimarkham.comminimoncton.caminimoncton.comminimontrealcentre.caminimontroyal.caminimontroyal.comminimotoringrewards.comminimotoringschool.comminimotorsport.commininanaimo.camininanaimo.comminioakville.comminiofmonrovia.comminipetfriendly.comminirichmond.caminirichmond.comminisaskatoon.caminisaskatoon.comminisexdoll.comminishop.ca
miniso-au.com
miniso-bh.com
miniso-np.com
miniso-nz.com
miniso.by
miniso.ca
miniso.cosnowcorp.comsnow.me
+miniso.comsnjulebu.comsneakme.netsneakerskick.comsneakerpage.netsneaker666.com
+sndcdn.com
miniso.ge
miniso.ie
miniso.jp
miniso.ma
miniso.my
miniso.pe
miniso.pk
miniso.ua
miniso.uzminisoindia.comminisojordan.comminisokorea.comsnapwebcams.comminisothailand.comminisovietam.vn
minispace.comminispecialoffers.caminispygear.comministcatharines.caministeagathe.comministjohns.caministrybooks.orgminitakesthestates.comminitoronto.caminitroisrivieres.caminiusa.comminiusaservice.comminiusatires.comminivalueservice.comminivancouver.caminivaughanwest.caminivaughanwest.comminivictoria.caminivictoria.comminivilledequebec.caminivilledequebec.comminiwholesaleconnect.com
miniwidget.caminiwindsor.comminiworkshop.comminiyaletown.caminnano-av.comminneapolisbmw.comminneapolisbmw.netsnapvolumes.com
minuporno.com
minzhuhua.netminzhuzhanxian.comminzhuzhongguo.org
miohentai.commiraheze.org
mirailab.tech
+snaptu.com
miroguide.comsnapstore.iomirrorbooks.comsnapseed.commirrormedia.mgmirrorsedge.commirrorsedge.jpmirrorsedge.netmirrorsedge2.commirrorsedge2d.com
+snapkit.co
+missav.comsnapdragonbooth.commisshotgirls.comsnapcraft.iomist.vipmistresskym.com
11jav.commit.edumit.net
mitao.barsnapchat.com
+mitbbs.commitbbsau.commitnaka.commitpressjournals.orgmixasiansex.com
+mixero.commixi.jpmixmaturesex.com
+mixpod.commixvintagesex.commixx.commizzmona.comsnap.commjv-art.org
+mk5000.comsnap-telemetry.iosnap-dev.netmkt.com
+mktdns.commkto-c0100.commktorest.commktroute.com
smyxy.org
+mlcool.comsmyw.org
mlzs.work
mm-cg.com
mm9841.cc
+mmaaxx.comsmuttymoms.com
mmdnn.com
+smutty.com
smutstone.commmgy.cc
smutindia.commmmanual.com
mmmca.comsmutcams.commmonsterheadphones.net
+mmscdh.one
mmtongdao.xyzmmtourismbank.com
mmtv.lifesmutcam.com
smpte.orgmmwxl27.topsmplace.comsmokinmovies.commnewstv.com
smmsp.xyzmobatek.net
mobile.demobile01.com
smith.edumobilefacebook.commobileinternational.commobilemarketo.commobileme.dkmobileporngames.commobilepornmovies.commobileview.pagemobilevrxxx.com
mobileways.de
+smhric.orgmobmyanmar.commoby.tomobypicture.commochajs.orgmocloudplus.com
+mod.iomodelmediaus.commodeloswebcambogota.commodelsfreecams.com
smchbooks.commodeltv.commodernchinastudies.orgsmashed.xxxsmartonesolutions.hkmodoo.at
+modperl.plmodrinth.com
+modular.immoeero-library.commoeerolibrary.com
+moefuns.co
+moeimg.net
+moez-m.commofaxiehui.com
mofos.commofosex.commofosnetwork.commog.com
mohu.clubmohu.ml
+mohu.rockssmartonerobotics.com
+mojang.com
mojim.comsmartoneholdings.com
+mol.immoldflow.commoldflowexpress.comsmartone.commoleculardesigntoolkit.com molecularsimulationtools.commolecularviewer.commolesports.commolihua.orgsmartnastran.com
molviewer.commom-gfs.commom-sex-videos.com
mom50.com
smarthide.commomentumms.commomesear-chs.buzzmomfucktube.commomhomeporn.commommystoytime.commomo.dmmomo5188.comsmartfea.commomon-ga.commomoniji.comsmartexpos.com
+momotk.commoms-sex-videos.commomsbangteens.commomsboysmovies.netmomsexypics.commomsfuckingboys.netmomsgiveass.commomshardcoreporn.commomsneversayno.commomsporn.sumomspornvideos.commomsteachsex.commomsteachsex.infomomsyoungboys.netmomtarts3d.commomtube.club
+monaitv.mesmartdnsproxy.commonbeats2013.com
+mondex.org!smartcommunitiescoalition.org
moneyhome.bizmoneywithfacebook.commongodb.commongodb.org
monica.immonitorchina.org!smartcommunitiescoalition.comsmart-edge.comsmallteenpussy.commonitrix.net sm.msmono-project.commonocloud.mesm-miracle.commonotype.commonotypeimaging.commonster-beats-by-dr-dre.com monster-beats-headphones.commonster.commonsterbeats-cheap.commonsterbeats-headphone.commonsterbeats-onsale.commonsterbeats-solo.commonsterbeats-solo.netmonsterbeats365buy.commonsterbeats8beatsbydre.commonsterbeatsale.commonsterbeatsalestore.commonsterbeatsau.commonsterbeatsbydrdre-nz.commonsterbeatsbydrdre-usa.com!monsterbeatsbydrdrecanada.com!monsterbeatsbydrdrestudio.commonsterbeatsbydre-nz.commonsterbeatsbydre-usa.commonsterbeatsbydre2015.com'#monsterbeatsbydreaustraliacheap.com!monsterbeatsbydrebilligde.com monsterbeatsbydrefactory.commonsterbeatsbydrenew.commonsterbeatsbydres.commonsterbeatsbydreshop.commonsterbeatscasques.commonsterbeatscommunity.commonsterbeatsdrdrecheap.commonsterbeatsfactory.netmonsterbeatsfinland.commonsterbeatsforsale.commonsterbeatsheadphone.commonsterbeatsheadphones.netmonsterbeatshere.commonsterbeatsitaly.commonsterbeatsmall.commonsterbeatsnegozi.netmonsterbeatsok.com!monsterbeatsonlinestoreuk.commonsterbeatsoutlet.usmonsterbeatspascher.netmonsterbeatsru.commonsterbeatssales.commonsterbeatssalg.commonsterbeatsshops.netmonsterbeatsstore.com#monsterbeatssydneyaustralia.commonsterbeatstang.commonsterbeatstienda.commonsterbeatstudio.commonsterbydrebeat.com!monstercasquebeatspascher.netmonstercheapbeatss.commonstercockland.commonsterdrebeats-canada.netmonsterdrebeats-usa.commonsterdrebeats-usa.netmonsterheadphone.netmonsterproduct.netmonstersbeatbydres.commonstersdebea.commonstersexporn.netmonstershopcheapbeats.net
monthlyav.com
slyip.netmoodstocks.com
+moodyz.commoon.fmmoonbbs.com
moonbingo.com
slyip.commoov.hkmoozporn.commoptt.tw
sluttyrat.commorazzia.com
sluts.xyzmoreheadphones.commorewithautodesk.commorganclaypool.comslutmoonbeam.comslutload.comslotbitches.comslobodnaevropa.mkslinkset.commorningsun.orgmornporn.commoroneta.commorphcharts.comslinginternational.com
sling.comslidesharecdn.commortein.comslideshare.netslideshare.com
+slides.newslickvpn.commorteincam.com
+mos.ru
mostly.jpmostpopularpornsites.commotherless.com
+slheng.commotiongraphicsandmore.commotionpictureser.commotiyun.commotolia.commotor4ik.rumotorshowblog.commottainai.infosleazyneasy.comsleazydream.commousebreaker.com
move-free.netsldolls.commove.commoveaws.commovefreeoffers.commovefreerewards.com
movefrees.com
movements.orgmovenetworks.com
slaytizle.com
+movetv.commovidius.commovidius.netmovie-erog.com
movie1000.xyzmoviefap.com
moviepost.commoviesanywhere.commoviesarena.commoviesfree4u.xyzmoviesneek.comslashdot.orgslackhq.commox.moemoxing.mobimoxing.newsmoystoys.com
+mozgcp.netmozilla.commozilla.communitymozilla.netmozilla.orgmp3buscador.comslacker.com
slackdemo.comslackcertified.com
+slackb.commpettis.com
mpfinance.commpinews.commplstudios.commpnevolution.commponline.hk
slack.com
+mpv.ioslack-redir.netmpweekly.commql5.commqxd.orgslack-msgs.com
mr-tireman.jp
mray.clubmrbasic.com
+mrbdsm.commrbonus.comslack-imgs.commrchewsasianbeaver.comslack-files.comslack-edge.com
+mrcong.comslack-core.commrdeepfakes.com
+mrface.comsl99mod.buzz
mrlivecam.com
+mrloli.commrpinks.commrporngeek.commrpornlive.com
+mrskin.commrslove.commrssiren.commrtweet.commrvideosdesexo.xxxms-studiosmedia.comms365surfaceoffer.com
+ms4dre.com
+msa-it.orgskyxvpn.com
msads.net
+msauth.netskyvegas.commschallenge2018.comskysportsracing.commsdn.comskysportsonline.com
+msecnd.net
+msedge.net
msft.infomsft.netmsftauth.netmsfteducation.camsftnet.orgmsgamesresearch.com
msguancha.commsha.govmsinnovationchallenge.commsn.commsn.net
msnbc.commsnewskids.commsnewskids.netmsnewskids.orgmsnkids.com
+msocdn.com
+msocsp.commsoopent.comskysports.iemspairlift.comskysports.frmsropendata.com
skysports.commsturing.orgmsudalosti.commsunlimitedcloudsummit.com
mswe1.org mt.lvmt0011.sitemtao.funskyporn.online
+mthruf.comskyperfectjsat.spacemtt.orgmtvnservices.com
+mtw.tlskypeassets.netmubi.commuchohentai.commuchomasporno.commuchosucko.com
+mucinex.caskypeassets.commucinex.commucinex.net
+mucinex.tvmucinexprofessional.com
skype.netmudbox3d.commudfish.net
mudvod.tvmuji.com
skype.commuji.eumuji.netmuji.twmuji.us
mujikorea.netmulheresafoder.commullvad.net
+mult34.com!multicurrencycashpassport.commultiply.commultiplydiversity.commultiproxy.orgmultiupload.commultporn.netmummysgold.communcloud.dog
10bet.comskyoceanrescue.itmuramura.tvskyoceanrescue.de
murmur.twmuryouav.net
+muscdn.commusclegirlflix.comskyoceanrescue.com
skymatter.commushroomtrack.commushymush.tv
+skybet.commusicade.net
+musical.ly
skyassets.commusicbay.netsky.commusickit.net10c10qoo.onemusixmatch.comskunkgirl.ccmuslimvideo.com
+mut.chmuthead.comsksarab.top
muycerdas.xxx
muyzorras.commuzi.commuzi.netmuzu.tv
+mvg.jpmvideoporno.xxxmvk.com
+mwcu00.commwdbank.com
+skokka.commwhentai.net
skinstrip.netskimtube.com
mx981.com
+mxmcdn.net
+mxshm.sitemy-enema.commy-formosa.comskillshare.commy-magazine.mesketchbookpro.commy-proxy.comsketchbooknews.commy03.com
+my13la.commy1stflame.com
+my20dc.commy20houston.com
+my29tv.commy3dhentai.commy45.com
my9nj.commyaccountglobalcash.com
myactimes.commyamateurgirls.netmyamateurtv.commyanniu.com
myappleid.com
+myatos.netmyaudiocast.com
myautocad.commyautodeskbenefits.comsketchbookmobile.commyav886.buzzmyavfun.com
+myavok.com
myavsuper.com
+myavxx.xyzmybabehotz.commybbs.usmybeatsbydrestudio.commybeatsbydreuk.commybeatscheapbydre.com
mybestbuy.commybestbuyclaims.com
mybet.commybmw.ca
mybmw.com
myboylove.commybridgestoneeducation.commybukkakeporn.commyca168.comsketchbookdesigner.com
+mycams.commycanadanow.comsketchappsources.commycardbenefits.commycartoonsexgames.commycdn.memychinamyhome.commychinanet.commychinanews.commychinese.news
skebetter.commyciscobenefits.commyclitgames.com
+skate2.commycnnews.commycomicsxxx.commyconstructionworld.netmycould.com
+mydad.info
+myddns.commydirectgroove.commydirectvchannels.commydirtyhobby.commyeasytv.com
+myebay.commyeclipseide.comsjrt.orgsjhsp1.buzzmyfappening.orgmyfavoritearcade.commyfbfans.commyferrariheadphones.commyfirstflame.commyfistingporn.commyfonts.commyfonts.net
sjcollect.com
sixth.bizmyfoxatlanta.commyfoxaustin.commyfoxboston.commyfoxcharlotte.commyfoxchicago.commyfoxdc.commyfoxdetroit.commyfoxdfw.commyfoxhouston.commyfoxhurricane.commyfoxla.commyfoxlosangeles.commyfoxlubbock.commyfoxmaine.commyfoxny.commyfoxorlando.commyfoxphilly.commyfoxphoenix.commyfoxsanfran.commyfoxtampa.commyfoxtampabay.commyfoxtwincities.com
myfoxzone.commyfreeblack.commyfreecams.commyfreepaysite.commyfreeporngames.commyfreshnet.com
+myftp.info
+myftp.name
myfun.commygaysites.com
+myguide.hkmyhelpinglab.commyhentaicomics.commyhentaigallery.commyhomemadesex.commyhpsupport.com
+myhulu.commyicloud.netmyip.lamyiphide.com
+myipod.net
+myjkwd.commykomica.orgsixte.st
six9dy.pwmylcloud.netmylf.com
+mylftv.commylittlenieces.commylogiclab.com
+mylust.commymapportal.commymasturbators.commymediarom.commymicrosoft.commyminisexdoll.commyminiso.commymmode.com
mymoe.moe
+mymom.infomymusclevideo.comsix-degrees.iosituero.commynetav.netmynetav.org
mynetname.net
+mynike.commynumber.org
myoctocat.commyparagliding.com
mypearson.commypearsonenglish.chsiteripz.netmypearsonshop.mxmypicture.infomypikpak.commypikpak.netsiteripz.com
+mypop3.net
+mypop3.org
mypopescu.com
mypornads.commypornadviser.commypornbookmarks.com
mypornfox.com
myporngay.commypornhere.com
+myporno.czmyporno.photosmypornolab.clickmypornstarbook.net
mypornvid.fun
mypornwap.funsiterips.orgmyq2.commyqnapcloud.com
sitepoint.com
+myradio.hkmyreadingmanga.infomyrewardzone.commyrimmingporn.commyrz.comsitemaps.org
mysdn.com
+mysdn.info
mysdn.netmysecondarydns.commysexgames.com
mysexygfs.comsitekreator.com
myshopify.com
+mysims.commysimsracing.commysinablog.com
mysinchew.commysocialworklab.commyspace.commyspacecdn.com
mysql.commystrikingly.com
mytalkbox.commyteenwebcam.commythicentertainment.commythicentertainment.netmythicgames.com
+sitebro.tw
+mytizi.commytokenapi.commytrannycams.com
mytvsuper.commyvisaluxuryhotels.com
+site90.netsite2unblock.commywaytopay.infomywaytopay.net
mywife.ccmywifecuckold.comsite.com
mywww.bizmyxvids.commyxxgirl.commyyoungmomisnude.commyyoungwifeisnude.commyz.infomzed.commzstatic.comn0vadesktop.comn3ro.loln3ro.netn3ro.wtfsissyporncrossdresser.com
+sissy.gamena-att-idns.netsissy-university.comsislovesme.comsiska.video
+sisisl.comnaacoalition.orgnaaktevrouwenporno.comsiscache.com
sis001.us
+sis001.comsis.xxx
+sis.lasiri.comsirenxxxstudios.comsipriyearbook.org
+siport.com
+sipml5.orgnaiadsystems.com
naihenda.shopnaihendauou.lolnaijauncut.comnailedhard.com
+naitik.netnaizitv.topnakadashi.tonaked-girls.me
naked.comnakedamateurmilf.comnakedasiansex.comnakedgirlpic.comnakedgirls.biznakedmodelsxxx.com
nakednews.comsinoquebec.com
+nakido.com
nakuz.comnalandabodhi.orgnalandawest.org
sinopitt.info
+sinonet.canamemybeats.comnamethatporn.comnamethatpornad.comnamgyal.orgnamgyalmonastery.orgnamsisi.comsinomontreal.canan-net.comsinoinsider.comnanyang.comnanyangpost.com
+nanzao.comnaoconto.comnaol.canaol.ccsinocism.comsinocast.comnapiszex.com
+sinoca.comsinoants.comsino-monthly.comsingtaousa.comnastranincad.com
nastrannx.comnastrantraining.comnastranworldwide.com
nasty.singles
nastyvids.comnat.moenataliefiore.comsingtaoopo.comsingtaonewscorp.com
singtaola.comsingtaobooks.comnatgeomaps.comsingtao.comsinglelogin.sitesinglelogin.resinglelogin.mesinglelogin.appsingfortibet.comnationalawakening.org
+sing68.com
sing4.lat
+sinchew.mynationalgeographic.com"nationalgeographicpartners.comnationalinterest.orgsimulationsquad.comsimsquad.comnationalreview.comsimplyipod.comsimply-hentai.comnationsonline.orgnationwide.comsimplifycommerce.comsimplify.comsimpleproductivityblog.comsimplecd.orgsimpcity.sunaturalvoices.comsimonsgirls.com
+nature.com
naturemag.orgnaughty.comnaughtyamerica.comnaughtyblog.orgnaughtyfootjobs.comnaughtygamesource.comnaughtyhentai.biznaughtymachinima.comnaughtymag.comnaughtysophie.comnaughtytugs.comnaughtywomenpics.com
naver.comnaver.jpnaver.me
naver.netnaverads.comnavercloudcorp.com
navercorp.comnaverfincorp.com
naverlabs.comnaverncp.comnavisworks.comnavisworks.netsimility.comsimilar-porn.funnaweeklytimes.com
+simgbb.com
+nbabot.net
+nbc.conbc.comnbcnews.comsimg.jpnbcolympics.com
nbcsports.comnbcudigitaladops.com
+nbcuni.comnbcuniversal.comnbdh15.buzzsimcity.comsimcity-buildit.comsimbolostwitter.comsilversluts.comsilverchair-cdn.comsilkengirl.com
+nbtvpn.comsilkbook.comnbys.tvnbys1.tvnbyy.tvsikiswap.comsijihuisuo.comsijihuisuo.clubsignalusers.orgsignalr.netsignalprocessingsociety.org
signalbar.com
+signal.org
+signal.artsign.newsigmoidoscopeexam.comsifangclub.comsierrafriendsoftibet.orgsiege-amazon.comsidelinessportseatery.comsidelinesnews.comsiddharthasintent.orgsibreal.orgsiam.orgshywifeswap.comshymysex.comshwebank.comshwchurch3.com
shwchurch.org
nchrd.orgshuziyimin.orgshutterstock.comshufflesex.comshuangmawei.xyzshsh201.comshrkurl.com
+shp.eeshowybeauty.com
showwe.tw
+ncloud.com
showup.tvshowtimeanytime.comshowtime.jpncn.orgshowtime.com10conditionsoflove.comshownote.com
showhaotu.comshotwithgeforce.comshotgunvfx.comshotgunstudio.comshotgunstudio-test.comshotgunsoftware.netshotgunsoftware.com
+nde.deshotgunlocalhost.comndi.org
shotgunfx.com
+ndr.deshotguncloud.comshotgridstudio.comshotgridsoftware.comshorturl.atshoptraivip.comnear.byshopspeedtv.com
nebay.netneborder.comshops-disney.comshoppinguheadphones.comshopping.comshopping-days.netned.orgshoppercentre.comshopmonsterbeats.comnee4you.comneedforspeed.comneedforspeedboost.comneedforspeeddriftkings.comneedforspeedeliminator.comneedforspeedlightning.comneedforspeedoverdrive.comneedforspeedproven.comneedforspeedredline.comneedforspeedshowdown.comneedforspeedstreetkings.comneedforspeedtakedown.comneedforspeedtherun.comneedforspeedtimeattack.com#needforspeedundergroundeast.comneedgayporn.comnegozimonsterbeats.comnegoziomonsterbeats.comshopminiusa.com
+neicad.comneiexplicit.com
+neifea.com
neimotion.comneinastranincad.comshoping.comneisoftware.comneisolutions.comneiworks.comnejm.orgshopifysvc.comshopifystatus.comnekoslovakia.netnekoxxx.comshopifycloud.comshopifycdn.comshopify.devshopify.comshopibay.netshopfacebook.comshopeemobile.com
nenastran.com
shopee.vnnenitas.clubnentindo.netneo-miracle.com
shopee.tw
shopee.sg
shopee.phneow.in
+neowin.netnepusoku.com
shopee.io
shopee.in
shopee.id
shopee.fr
shopee.es
+shopee.com
shopee.cl
shopdurex.comshopdrebeats.comshopdisney.comshopcustomizedbeats.com
shopbydre.comshopbmwusa.comshopbmwmotorcycles.comshopbeatsdre.comshop.appshop-headphones.netshooshtime.com
shoestop2.com
+shoers.comshodanhq.comshockingmovies.comshkspr.mobishizhao.orgshixiao.orgshittytube.comshitjav.com
+shithd.comshitaotv.org
shit-porn.netshishijump001.comshiroutoav.net
nerdnudes.comshireyishunjian.comnervanasys.comnesaporn.com
nesaporn.mobishipcamouflage.com
shinychan.comshinhangmc.comshiksha.com
shikorina.net
+shields.ioshicheng.orgshibashuwu.netnest.comnet-fits.pronetacad.comnetacad.netnetalert.me
netarabic.comnetbirds.com
netcolony.comnetfapx.comnetflav.comnetflav1.comnetflav5.com
+netflix.canetflix.comnetflix.netnetflixdnstest0.comnetflixdnstest1.comnetflixdnstest10.comnetflixdnstest2.comnetflixdnstest3.comnetflixdnstest4.comnetflixdnstest5.comnetflixdnstest6.comnetflixdnstest7.comnetflixdnstest8.comnetflixdnstest9.comnetflixinvestor.comnetflixtechblog.com
+shiatv.netnetlify.appnetlify.comnetlifystatus.com
+netlock.hunetme.ccsheshaft.comnetpornsex.comnetpornsex.net
netsarang.comshesfreaky.comsherabgyaltsen.comnetsneak.com
netsolssl.comnetsurf-browser.orgnettyinternet.comnetvideogirls.comnetvigator.comshequdaohang.com
network54.comnetworkedblogs.comnetworktunnel.netnetzerobuildings.comnetzerobuildingstudio.com
+shequ8.camneuerporno.comshenzhouzhengdao.org
neuralink.comshenzhoufilm.comshenyunshop.com
neurology.orgneverforget8964.org
nevex.comnew-3lunch.net
new-akiba.comshenyunperformingarts.orgshenyuncreations.comnew-jero.netnew-redtube.comnew.daynew2fea.comnew3dcomics.comnew96.cashenyun.orgshenyun.comshenshou.orgnewbeatsblackfriday.com
newbemany.comnewbienudes.comshenshi-cha.comnewbrazz.comshemalez.comshemaletubevideos.comshemaletube.proshemaletrannypics.comshemalestube.comshemalestardb.comshemalespoiledwhore.comshemaleporntube.tvshemalepornonly.comshemaleporn.xxxnewcenturymc.comnewcenturynews.comshemaleporn.funnewchen.comshemalemodelstube.comshemaleleaks.com
shemalehd.sexshemalebestlabel.comshemale-porn-galls.comshellfire.denewdrediscount.comshellcheck.netneweconomyforum.comnewenergyfinance.comnewestbeatsbydre.comnewgrounds.comshelfstuff.comsheikyermami.comshegods.comnewhampshirebmw.com
newhentai.orgnewhighlandvision.com
shegg.comnewipnow.comnewisiknowledge.comsheflix.comnewlineporn.comnewlysprung.net
+sheets.new
newmitbbs.comnewmonst1erbeatsto1re.com!newmonsterbeatsheadphones.com
+newnews.cashdd.ink
+shazam.comnewpppp.comshattered.ioshat-tibet.com
sharpdaily.tw
sharpdaily.hksharmota.comsharkyporn.comsharks-lagoon.frsharizelvideos.com
sharif.ir
+sharif.edu
sharethis.comsharepointonline.comnewsamerica.com
newsancai.comsharepoint.com
sharecool.orgsharebee.comnewschinacomment.orgnewschristmasshopping.com
+newscn.orgshapeservices.comshapelcounset.xyznewscorp.comnewscorpaustralia.comnewsdetox.ca
+newsdh.comnewsensations.comnewsextv.com
newsexwap.com
newsexxxx.comnewsfeed.com
shangfang.orgnewsgawakaru.com
shameless.comnewsmart.jpnewsmax.com
+newsmax.in
newsmaxtv.comnewsnowfox.comnewspeak.ccshambhalasun.comshambalapost.comnewssyndication.comnewstamago.comnewstapa.orgnewstarnet.comnewstatesman.comnewsukadops.comnewsupermariobrosu.comnewsweek.comshakethesnake.com
shahvani.site
+newtalk.twshahvani.comnewtofea.com
+shahit.biz
+newton.comshadowsocks9.comshadowsocks.orgshadowsocks.nlnewxxx24.cc
newyorker.comnewyorktimes.com
+nexcat.com
nexitally.comnexitallysafe.com
nexitcore.comshadowsocks.com
nexon.comnexon.ioshadowsocks.benexpart.com
+nexpart.tvshadowsocks.asianext.comnext.hkshadowsocks-r.com
nextapple.comshadowslaves.com
shadowsky.xyznextechafrica.netshadowcomplex.comnextgenerationcam.comnextgenerationcenter.com
+nextjs.org
shadow.ma
nextmedia.comshadeyouvpn.comnextmgz.com
nexton-net.jpshadbase.comsh83.xyznextstop.comsh-xuxingda.com
+sgspt.buzzsgspe.denextwork.hknextwork.tw
+119474.xyz
nexusmods.comsgp1.fun
+sg1lib.orgsg120.me
+nfjtyd.comnflhotsalejerseys.comnflxext.comnflximg.comnflximg.netnflxsearch.net
+nflxso.net
nflxvideo.net
+sfx.msnfsc.globalnfscdict.comnfscofficial.comnfsworld.comnftstorage.linknga.mil
sftuk.orgngensis.comngeo.comsftindia.orgsfshibao.com
nginx.com
nginx.orgnginxconfig.iongodupdongchung.com
+sforce.comsfmcompile.clubsfileydy.comsfdcstatic.comnhentai.com
+nhentai.ionhentai.net
+nhentai.tonhentai.xxxnhentaihaven.comnhentaihaven.org
nheos.comnhk-ondemand.jp
sfbassets.net
+nhncorp.jp
sfbassets.com
+sf.net
+sexzy4.comsexywetpussy.com
sexytuber.comsexyteenssite.comnic.govsexysexdoll.comsexyseeker.comniceanimegames.comniceporn.tvsexypornpictures.org
nicesshop.netnichepornsite.comnichepornsites.comsexyoung.menickscipio.com
nicky.xxx
114av.xyz
+nicodic.jpnicolepeters.comnicomanga.jpniconico.comnicoseiga.jpnicovideo.jpsexykittenporn.comsexyhumorgames.comnighost.orgsexyhub.comnightclub.eusexyhomewives.com
+nights.funsexygirlspics.comsexygirlfriendtube.comsexyfucking.rusexyfuckgames.com
nijiclamp.comnijidoujin.com
+nijie.infonijifeti.comnijigen-daiaru.comnijinchu.comnijioma.blognijiyome.jp
+112263.comnike-air-max.comnike-dunksb.comnike-fr.comnike-org.comnike-uk.comnike-us.comnike-usa.comnike.cinike.comsexyfeet.tvsexyculo.comnike.gynike.hk
nike.host
nike.shopnike.usnike.xn--hxt814enike0594.com
+nike23.comnikeadidas.comnikeairhuarache.comnikeairmax.comnikeairmaxs.comnikeairmaxshoes.comnikeairrift.comnikeasia.comnikeaustralia.comnikeaw77.com
nikeb.comnikebbn.comnikebetrue.comnikebetterworld.comnikebetterworld.infonikebetterworld.netnikebetterworld.orgnikebiz.infonikebuy.com
+nikeby.comnikecdn.comnikechosen.com
nikecloud.comnikeclub.comnikecompany.comnikeconfluence.com
nikecraft.comnikedawn.com
nikedunks.netnikedunksshoes.com
nikeelite.comnikefactorystore.comnikefind.comnikefirm.comnikefoamposites.comnikefoampositeshoes.comnikefootballcleats.comnikefootballgloves.comnikefootballjersey.comnikefoundation.org
+nikefr.comnikefrance.comnikefree.comnikefreeshoes.comnikefuelband.comnikegadgets.comnikegenealogy.comnikegolf.canikegrid.comnikehelp.comnikehightops.comnikehyperdunk.comnikeidshoes.comnikeinc.comnikeincchemistry.comnikeinstock.com
+nikeit.comnikeitalia.com
nikeitaly.com
+nikekd.comnikekid.comnikelink.comnikeliuxiang.com
nikelives.comnikelunarglide.comnikemarketing.com
+niken7.comnikenews.comnikeonlinestore.comnikeoutletstore.comnikeoutletstores.comnikepioneer.comnikeplus.comnikeplus.org
nikepress.com
nikeprice.comnikeproduct.comnikepromax.comnikeresponsibility.comnikereuseashoe.comnikerunner.comnikerunningshoes.com
+nikesb.comnikesbdunks.netnikeseason.comnikeselling.comnikesellorder.comnikeshoemarket.comnikeshoes-store.comnikeshoes21.comnikeshoes4u.comnikeshoescity.comnikeshoesgroup.comnikeshoesinc.comnikeshoesmarket.comnikeshoesretro.comnikeshoeswon.comnikeshoponline.comnikeshoxsale.comnikesku.comnikesnowboarding.comnikesoccercleats.comnikesportswear.comnikestares.com
nikestore.comsexycandidgirls.comnikestyles.comnikeswim.comniketaiwan.netniketracking.comniketradeweb.comniketrainer.comniketrainers.comniketraining.comnikeusa.comnikewear.com
nikey.comnikezoom.comnikkan-gendai.comnikkansports.comnikke-de.comnikke-en.comnikke-fr.comnikke-jp.comnikke-kr.com
nikke-sea.comsexybabesz.comsexyavenue.com
+nikkei.com
nikkei.jpnikkei4946.comsexyasiangirls.ccnimg.jpsexyandfunny.comninecommentaries.comsexy3dtoon.comsexy-torrents.comsexy-photos.netsexy-older-women.com
sexy-more.comnineteentube.comninjacloak.comninjaproxy.ninja
+ninpu.cyounintendium.comnintendo-europe-sales.comnintendo-europe.comnintendo.atnintendo.benintendo.chsexy-models.netsexy-beauties.comsexy-babe-pics.com
+sexxxy.biznintendo.comsexxxxfilms.comsexxxx.rodeonintendo.denintendo.dknintendo.esnintendo.eunintendo.finintendo.frnintendo.itnintendo.netnintendo.nlnintendo.nonintendo.ptnintendo.runintendo.senintendo.twnintendo3ds.comnintendodsi.comnintendoeurope.comnintendonetwork.netnintendonyc.comnintendostore.comnintendoswitch.comnintendoswitch.netnintendoswitchtogether.comnintendowii.com
ninth.biz
+niosii.com
+niosii.net
sexxxtape.net
sexxxdoll.comnist.gov
nitter.cc
+nitter.net
+sexxx8.xyzniu.moe
niuc2.comniusnews.comnivod.tv
nivodi.tv
+nivodz.com
nixos.orgniziero.info
+njactb.orgnjav.tv
sexxhd.de
+njuice.comsexwithhorse.netnke6.comsexwenheav.shopsexwebvideo.com
sexvr.com
nlfreevpn.com
+sexvids.ccsexvideosxxx.mobi
+nlm.io
sexvideos.telsexvideos.hostsexvideo12com.pronlsexfilmpjes.com
nlt-media.comsexvideo10.com
+sexvid.xxxsexuria.com
nmbmw.comsexualhentai.netsexu.com
sextw.net
+sextvx.com
sextubish.comsextubexxl.comsextubespot.comnmsl.websitesextubeset.comsextubehub.com
+nna.jpsextubedot.comnnews.eusextubebox.comsextube69free.net
no-ip.org
+sextube.fmnobel.senobelprize.orgnobodycanstop.ussextube.desisextreffensite.comsextreffen-portale.com
+nodejs.orgsextoystop.comnodesource.com
nofile.ionoisullifb.comnokiantyres.comnokogiri.org
+nokola.com
nomachine.comnomadlandmovie.chnomadproject.ionomulus.foonondh-room.momnonktube.comnonlinearnastran.comnonstopfap.comnoodlemagazine.com
noodlevpn.comnorbulingka.org
nordstrom.comnordstromimage.comnordstrommedia.comnordstromrack.comnordvpn.comsextorso.comsextop1.net
+sextop.net
+norsk.mobi
+sextime.tv
sextb.netsexstoriespost.comsexsiteinc.comsexsimulator.com
+sexsim.comsexsiam.comsexsex1.comsexsaoy.comsexpornvideoasian.comsexpornpictures.comsexpornimg.comsexoquente.blogsexopornolive.comsexodeamor.comsexodama.comsexo123.netsexnudo.comsexnaweb.net
sexmutant.comsexmummy.comsexmovies24.com
sexmomsex.com
+sexmix.net
+sexmex.xxxsexmerci.comsexmature.clubsexmadeathome.comsexlikereal.comsexkorea.net
sexkomix2.com
+sexjobs.it
sexjk.comsexiranian.partynotepad-plus-plus.orgnotion-static.com
+notion.com
+notion.newnotion.site
notion.sonotionusercontent.comsexinsex.net
sexindians.cc
sexiframe.comsexifilm.topsexidude.comsexhubhd.com
+sexhub.redsexhuang.com
sexhu.comsexhotgames.com
sexhdmovs.com
+sexhd.picsnottinghampost.com
sexhd.funsexguide.rosexgamesclub.com
novelasia.comsexgamesbox.comnoveltrove.comnovinhabucetuda.comnovinhagostosa10.comnovinhasdozapzap.comnovojoy.comnovostrong.comsexgames.xxxsexgames.ccnow-ashare.com
+now-tv.comnow.comsexgamefun.com
+now.im
+now.shsexgame.comnowe.comnowe.hk
+nowjav.comnownews.comnowtorrents.com
sexgalaxy.netnoxinfluencer.com
noypf.com
nozomi.lasexflexible.comsexflashgame.org
sexfl.xyzsexfilmstube.com
npm.community
npmjs.com
npmjs.orgnpnt.menpr.orgnps.govnpsboost.comsexfilmeporno.comsexfilm4free.comsexemulator.comnptsibinbank.com
nradio.me
sexei.netnrdh99.buzz
+nrk.nosexedanslepre.net
nrooms-dh.sbssexecherche.com
+sexdug.comns01.biz
ns01.infons01.usns02.biz
ns02.infons02.usns1.namens2.namens3.namesexdollsshow.comsexdolls.comsexdollpornhd.comsexcord.comsexcelebrity.netsexcartoon.biz
sexbq.com
+sexbot.comsexbookecuador.comsexbombo.comnsfw.xxx
+nsfw247.to
nsfwmemes.com
nsimg.netsexbomba.rusexbebin.comsexavidols.comsexasia.netsexarea.orgsexanime.netsexanimalvideos.comsexandsubmission.com
ntc.partyntd.com
+ntd.tvsexandsplash.com
ntdca.com
+ntdimg.comntdtv-dc.comntdtv.ca
sexalarab.com
ntdtv.comsexaidh.comntdtv.czntdtv.jpntdtv.kr
ntdtv.orgntdtv.runtdtvla.com
ntdvn.comsex8.cc
+sex588.netsex4arabxxx.com
sex3.mobisex3.com
+sex021.netsex0098.comsex.xxxsex.sexsex.comsex.cam
sex-young.comsex-teen.net
+sex-ly.comsex-hot-sites.comsex-hay.pro
+ntp.sesex-gif.orgsex-for-work.comsex-douga.jp
+sex-av.comsex-amateur-clips.com
+sex-11.comsevgikurtulmaz.com
severreal.orgsevereporn.com
sevenload.comsetn.comsethwklein.net
+setapp.comsessoamatorialeitaliano.com
sesez.com
sesenovel.comseselah.com
+sesawe.org
+sesawe.net
+ntrfun.com
ntten-mg.buzzserviporno.comservicetalk.io
+nu-bay.comserviceshp.comnu36.vipservices-exchange.comnubilefilms.comnubiles-casting.comnubiles-porn.comnubiles.net
nubileset.comnubilesunscripted.comservices-apple.netserveusers.com
serveuser.comserverlesslibrary.netserverfault.com
servehttp.comserlutv258.xyzserlucap.lolserialssolutions.comserbiporno.netser7.ccnuddess.com
nude-pics.orgnude-share.comnude.hunudeandhairy.comnudebeachpussy.comnudecams.camnudecelebforum.comnudedrawer.comnudedxxx.comnudeeroticteens.com
nudefiles.netnudegfporn.com
nudekenya.comnudelive.comnudematurewomenpics.comnudemilfporn.com
+nudes7.com
nudespree.comnudeteen.orgnudeteenboys.netnudeteenladies.comnudevietnam.comnudevista.bestnudevista.club
nudevista.comnudevista.es
nudevista.funnudevista.link
nudevista.net
nudevista.vipnudewifeporn.comnudewomenpics.net
nudify.onlinenudistbeachporn.comnudistic.com
nudistlog.comnudistsexvideos.comnudistvoyeurbeach.com
nudity911.comnudogram.comnudography.comnudostar.tvnuespournous.com
+nuexpo.com
nuget.org
nugettest.org
nuita.net
nukemanga.comnuki-dokoro.comnukistream.comsequence.comseqingx.com
nunuyy.ccseqingwangzhan.pro
+seqing.one
nurgay.tonurgo-software.comnuro.jp
+nurofen.at
+nurofen.bg
senzuritv.netsensueel.netsensualmothers.comsensualgirls.orgnurofen.comsensorynetworks.comsensortower.com
+nurofen.cz
+nurofen.de
+nurofen.es
+nurofen.fr
+nurofen.hr
+nurofen.hu
+nurofen.ie
+nurofen.itnurofen.net
+nurofen.no
+nurofen.pl
+nurofen.pt
+nurofen.ro
+nurofen.ru
+nurofen.sknurofengel.comsenpaiheat.com
seniortgp.comnurumassage.netnurxxx.mobinusatrip.com
nushemale.com
+nutaku.com
+nutaku.netnutramigen.net
nutramigen.plnutsvpn.worknuuporn.com
+nuuvem.com
nuvid.com
+nuzcom.com
nvdst.comnvidia.asia
nvidia.at
nvidia.be
nvidia.ch
seneporno.com
sendspace.comsendsmtp.comsemanticscholar.orgsellercommunity.com
+nvidia.comsellclassics.comselfloversworld.comselectyourgame.comselectanescort.comsekur1213.gurusekswebsite.nl
+seksmet.nlsejie80.com
sejie.com
nvidia.cz
nvidia.de
nvidia.dk
nvidia.es
nvidia.eu
nvidia.fi
nvidia.fr
nvidia.in
nvidia.it
nvidia.jp
nvidia.lu
nvidia.mx
nvidia.nl
nvidia.no
nvidia.pl
nvidia.ro
nvidia.ru
nvidia.se
nvidia.twnvidiaforhp.comnvidiagrid.net
+nvquan.orgnvtongzhisheng.orgseiron-sankei.comseiroganmania.com
sehuatang.org
sehuatang.net
sego8.xyzsego8.cosego8.ccseezone.net
+seevpn.comseesmic.com
seemyporn.comseemygf.comseemilfporn.comseematureporn.comseehorsepenis.com
seedmov18.comseed4.mesee.xxxsecuritykiss.comsecurityinabox.orgsecuretunnel.com
nwtca.orgsecureservercdn.netsecurepaypal.infosecure-paypal.infosectigo.comsecretubes.com
nwxs8.comsecretsline.biznxta.orgsecretgarden.nosecretchina.comsecret-flirt-hub.comnyaa.eunyaa.netnyaa.sinyahentai.re
+nyansa.comnybooks.comnydus.canylon-angel.comnylonstockingsonline.com
nym97.net
+nypost.comnypost.helpnypostreprints.comnyt.comnyt.netnytchina.comnytcn.me
nytco.comnyti.msnytimes.com
+nytimg.comnytstyle.comsecond-ns.de
nzchinese.com
second-ns.comsecomtrust.neto365weve-dev.como365weve-ppe.como365weve.comseattlefdc.com
oaistatic.comoaiusercontent.comseasidestory.tokyosearx.mesearchtruth.com
+search.xxx
oanda.com
oanencore.comoann.com
+search.comseaporn.orgseaofsolitude.comseancody.com
+oath.cloudoath.comseamonkey-project.org
+oauthz.comseagroup.com
sdnitube.buzz
objectarx.com
+sdnice.oneobservable.netobservechina.netobsrvbl.comobutsumania.com
obutu.com
obyte.orgsdcountybmw.comocaspro.comocbmwdealers.comsculpoly.comoccupytiananmen.com
scrolller.comscriptspot.com
+scribd.comoclp.hkscrew-my-wife.comscreenwisetrendspanel.comocreampies.comocry.comocsp-certum.comocsp-responder.comoctober-review.orgocul.usoculus-china.com
+oculus.comoculus2014.comoculus3d.comoculusblog.comoculusbrand.comoculuscasino.net
oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.comoculusvr.comscreenwisetrends.com
+odysee.comoecd-ilibrary.orgoed.comscreens-lab.jpscramble.ioscpwiki.comoex.comoffbeatchina.comofferairjordanlebron.com1111modpo.info
+office.com
+office.net
office365.comoffice365love.comoffice365tw.com
scpic.netofficeoftibet.comofficialbeatsbydreshop.comofficialbeatsbydrestore.comofficialdrdre.comofficialheadphone.comoffresspecialesbmw.caoffrezdesipods.com
scpdb.org
ofile.orgscp-wiki.net
ogameblog.com
+ogaoga.org
ogate.orgscorevideos.com
+ogp.mescoreuniverse.comohentai.orgohgratisporrfilm.comohmyrss.comohpornocasero.comohpornovideo.comohsesso.com
ohsexfilm.comohsexotube.com
+scoretv.tvohyeah1080.com
scorepass.comscoreland2.com
oiktv.com
+oiobbs.comoizoblog.com ok.ru
+ok.xxxokaapps.comokayfreedom.comokazudouga.tokyookex.com
+okk.twokkisokuho.comokx-dns.comokx-dns1.comokx-dns2.comokx.comold-cat.net
scoreland.comscoregroup.comscorediscounts.clubolder-women-movies.comolder-women-porn.com
+older.tubescoreclassics.com
+scopus.comoldhornymilfs.com
oldje.comscoop.sh
+scolle.net
scnsrc.me
olehd.comolehdtv.comolelive.comolemovienews.com
+olevod.com
olevod.io
olevod.tvolevodtv.com
+scnshop.ccoli-school.comscmpchinese.com
+olumpo.comolympicwatch.orgomafotze.comscmp.com
+scival.com
scitation.org
omaps.appscifisex.netomct.orgomekinteractive.comomg.blog
omghk.com
+omgili.comomgteens.comscieron.comscientificlinux.orgomni7.jpomniroot.comomnitalk.comomnitalk.org
+omnitek.tvomniture.comomny.fmomobi.cc
omoplanet.comomorashi.jpomorashi.org
omscr.comscientificamerican.com
+omtrdc.net on.ccon.hereon2.comonahodouga.comonani-daisuki.com
onapp.comonbeatsbydresale.com
oncars.inscienceonline.org
+one889.app
+oneapi.comonedinesfree.comonedrive.cosciencenets.comonedrive.comonedrive.euonedrive.netonedrive.orgonedumb.comonefifteen.netonefifteen.orgonejapanese.com
+onejav.comonekey-asset.com
onekey.soonekeycn.comonenote.comonenote.netonepornlist.comonesiterip.comonestore.msoneteamconference.comonetrust.comoneworldmanystories.comonindiansex.comoninstagram.com
+onion.cityonion.lyonionshare.orgonkakao.netonline-deals.netonline-instagram.comsciencemag.orgonlineapplestore.com
onlinecha.comonlinefucktube.comonlinegeeksquad.comonlineinstagram.com onlinemonsterbeatsonsale.comonlineporn-vids.comsciencedirectassets.comonlineteenhub.comonlinexxxgames.comonlineyoutube.comsciencedirect.comonly-xxx-porn.comonly-xxx.com
+only3x.comonlyams.comonlycartoonsex.com
onlydudes.comonlyfanspw.comonlyfreelatinaporn.comonlygayvideo.comonlyhdporn.comonlyhentaistuff.comonlyhomemadeanal.comonlyincestporn.comonlyindianporn.tvonlyindianporn2.comonlyiphone5case.comonlyleaks.me
onlynudes.orgonlyprime.ruonlysiterip.comonlytweets.comonmanorama.com
+onmoon.com
+onmoon.net
+onmypc.bizonmypc.info
+onmypc.net
+onmypc.org
onmypc.us
onsalekey.comonsaletrend.comonstream.cc
onthehunt.com
+ontrac.comscience.org
onxxxtube.comonxxxvideo.comscience.comooni.org
oopsforum.com
+sci-hub.st op.gg
+op7979.com
+sci-hub.se
+sci-hub.eescholarpedia.org
+openai.comopenallweb.comopenamt.comopenapiplatform.comopenapiservice.com
+openart.aiopencollective.comopencreate.orgopendemocracy.net
+opendn.xyzopendroneid.orgschiffvitamins.comschemer.comopenervpn.in
+schema.orgopengraphprotocol.comopengraphprotocol.org
+opengw.net
+openid.netopenjsf.org
openleaks.orgopenlibrary.orgopenmaps.orgopenreality.com
openresty.orgscharferporno.comscenesource.me
+opensea.io
+scene7.comopensource.guideopensourceinsight.devopensourceinsights.devopenssl.orgscdn.co
scatville.comopenstreetmap.comopenstreetmap.netopenstreetmap.orgopenstreetmaps.orgopensuse.org
opentech.fundopentgc.com
openthread.ioopentranslatorstothings.org
scatvids.clubscatsite.comopenvinotoolkit.orgopenvpn.netopenvpn.orgscatshop.comopenweathermap.orgopenweave.ioopenwebster.comopenwrt.orgscatnetwork.com
opera.comopinionjournal.com
scatkings.comoppai-doga.infooppainorakuen.comoptanedifference.comopte.org
+optica.orgopticore.comopticsforthecloud.net
+scathd.comoptimumssl.comopus-gaming.comscatfinder.com1111mode.xyz
+oracle.comoraclecloud.comoraclefoundation.org
oracleimg.comoracleinfinity.io
+oranum.comscatfap.comorbitera.com
scat.gold
scat-shop.netscat-japan.comoreil.lyoreilly.comoreilly.revieworeillystatic.comoreno3d.comscat-enema.com!organharvestinvestigation.netorganiccrap.comorganicmaps.app
+orgasm.comorgasmlist.comorgfree.comorgypornonly.comorgyxxxhub.comscasino.comorient-doll.comorientalasianporn.com
scanlover.comscandalplanet.com
+origin.com
origin.tvoriginalhulu.comoriginalindianporn.comorithegame.com
+orl.lyorlandohurricane.com
scaleform.com
+orn.jp
scaleflex.com
scala-sbt.orgorsm.netorthopaedic-cadcam.comorthotics-cadcam.comorzistic.orgosakamotion.netosapublishing.orgscala-lang.org
sca-tolo.info
+sc-cdn.netosdn.netsbuxcard.comosfoora.comsbnation.comsbme.meosiri-suki-club.comosl.comosm.orgosmfoundation.orgsbitravelcard.com
+ospray.net
+ospray.orgsbgkstv.shop sb.sbsb-telecom.netsb-mobile.jp
sb-cd.com
+saynow.com
say2.infosavoycomputing.comsavitahd.netsavitabhabhi.vipsavitabhabhi.comsavevid.comsaveuighur.orgsavetibetstore.orgsavetibet.ru
savetibet.org
otaku-168.com
otaku18a.infootaku55.xyzotbm.com
+otcbtc.comsavetibet.nlsavetibet.frsavetibet.deotnd.orgotokonokoland.comotto.deotzo.comsavethesounds.infosavethedate.foo
+oudoll.comoup.com
+ouplaw.comourdearamy.comourhobby.com
savemedia.comouroath.comoursexgames.comourshdtv.comourshemales.comoursogo.comsaveliuxiaobo.comoursweb.netourtv.hk
satv01.meoutbound.iooutdoorpublicsex.comsatoshilabs.comoutingsapp.comoutletbeatsshop.comoutletnike.comoutlook.com
+satnym.com
satan18av.comover18arcade.com
overapple.comovercast.fm
overdaily.orgoverleaf.comoverplay.netsarennasworld.comoverthumbs.comovid.comovpn.com ow.ly
sarapbabe.com
+owl.liowltail.comsarajevopodopsadom.comsapphicpornonly.comsapphicerotica.com
sapikachu.netsaonidh01.cc
saonidh.worldsaonidh-one.sbs
+saonia.xyzsaoni91.xyzoxfordaasc.comsaobjpg.comoxfordartonline.comoxfordbibliographies.comsanvaras.com
+sanspo.comoxfordclinicalpsych.com
+sankie.net
oxforddnb.com
sankeishop.jpoxfordfirstsource.comsankeibiz.jpoxfordhandbooks.comoxfordlawtrove.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.comoxfordre.comoxfordreference.comoxfordscholarlyeditions.comoxfordscholarship.com
sankei.jpoxfordwesternmusic.com
+sankei.com
oxlife.cosankei-tours.comoyax.comoyeloca.com
+oyghan.com
ozchinese.com
ozeex.com
ozodi.orgozodlik.orgozvoice.orgozxw.com
+ozyoyo.com
+pa9pal.compaaypal.compachosting.compacifickitchenandhome.compacificpoker.compackaging-cadcam.compackagingcadcam.com
packagist.org
packer.iopacketix.netpacloudflare.compacopacomama.comsankei-shougakukai.jppadmanet.comsankei-kurashi.compaerosnen.club
page.linkpage2rss.com
page3.compagecdn.com
+pagecdn.io
pages.devpagespeedmobilizer.com
pageview.mobi
pagodabox.compahabicilemezsurprizler.comsankei-call.jp
+paheal.netpaidpornguide.compaidpornsites.com
paily.net
paily.orgpainfulpussytortures.com
painnovel.com
+paipal.com
paipancon.compaisapay.cc
paisapay.infopaisapay.tv
sankei-ad.netpakistanporntube.netsankei-ad-info.compalacemoon.comsankakucomplex.comsanjesh.orgpalcomix.compaldengyal.compalemoon.orgpalestineremix.compali.ltdpaljorpublications.com
+sandisk.sg
+sandisk.nlpaltalk.com
+sandisk.it1111mod-tube.buzz
panasonic.companasonic.jppancolle-movie.jp
+sandisk.inpanda30.shoppandamovies.pwpandanet-igs.compandapow.copandapow.netpandavpn-jp.compandavpnpro.compandora.com
+pandora.tvpankwire.companluan.net
+sandisk.id
panoramio.compantswalker.netpao-pao.netpaofu.cloudpaofuyun.me
paon.sitepapalah.compaper.li
paperb.us
+papermc.io
+sandisk.hkparadisehill.ccparadisehotelquizfox.comparadisepoker.comparagon.com
paramount.comparamountplus.comparastorage.com
+pardot.com
+sandisk.frpark-now.com
parkansky.com
+sandisk.esparkinfo.com
+sandisk.desandisk.com
+sandisk.ae
+parkvv.com
+parler.com
parse.comparsevideo.com
parstream.com
parstream.net
parstream.orgsamsungqbe.com
partmaker.comsamsungknox.compartycasino.compartylikeits1986.orgpartypoker.compascherbeatsmonster.comsamsunggalaxyfriends.com
pashtovoa.compasionmujeres.compaskoocheh.compassion-hd.compassion.compassiontimes.hkpassport.netpastahealth.compaste.eepastebin.com
+pastie.org
samsungdm.compatentgold.netpatenttruth.orgsamsungcloud.comsamsungapps.comsamsung.com10musume.compatreon.compatreoncommunity.compatreonusercontent.comsamebags.comsambhota.orgsambaporno.compaulsimon-music.com
+pavpal.com
pawoo.net
+paxful.compaxlicense.orgpaydiant.compaygonline.compayhulu.compaylike.com
+paypa1.com
+paypa1.orgpaypaal.compaypal-activate.compaypal-activate.infopaypal-activate.orgpaypal-apac.compaypal-apps.compaypal-biz.compaypal-brandcentral.compaypal-business.compaypal-business.netpaypal-business.orgpaypal-cardcash.compaypal-cash.compaypal-center.compaypal-center.infopaypal-center.netpaypal-center.orgpaypal-communication.compaypal-communications.compaypal-communications.netpaypal-community.compaypal-community.netpaypal-comunidad.compaypal-corp.compaypal-database.compaypal-database.uspaypal-donations.compaypal-dynamic.compaypal-engineering.compaypal-europe.compaypal-excelinvoicing.compaypal-exchanges.compaypal-forward.compaypal-galactic.compaypal-gift.compaypal-gifts.compaypal-gpplus.compaypal-here.compaypal-hrsystem.compaypal-innovationlab.compaypal-integration.compaypal-japan.compaypal-knowledge.compaypal-labs.compaypal-latam.compaypal-learning.compaypal-login.compaypal-login.infopaypal-login.orgpaypal-login.uspaypal-luxury.compaypal-mainstreet.netpaypal-marketing.compaypal-media.compaypal-merchantloyalty.compaypal-mobilemoney.compaypal-network.orgpaypal-notice.compaypal-notify.compaypal-online.infopaypal-online.netpaypal-online.orgpaypal-optimizer.compaypal-pages.compaypal-photocard.compaypal-plaza.compaypal-portal.compaypal-prepagata.compaypal-prepagata.netpaypal-prepaid.compaypal-profile.compaypal-proserv.compaypal-qrshopping.orgpaypal-recargacelular.compaypal-redeem.compaypal-referral.compaypal-retail.compaypal-scoop.compaypal-search.compaypal-secure.netpaypal-secure.orgpaypal-security.netpaypal-security.orgpaypal-service.orgpaypal-signin.compaypal-signin.uspaypal-special.compaypal-specialoffers.compaypal-sptam.compaypal-status.compaypal-support.compaypal-survey.compaypal-survey.orgpaypal-team.compaypal-viewpoints.net
paypal.ca
+paypal.com
samair.ru salesforcemarketingcloud.com
paypal.hkpaypal.info
paypal.jp
paypal.me
paypal.so
paypal.uspaypalbeacon.compaypalbenefits.compaypalbrasil.compaypalcommunity.compaypalcommunity.netpaypalcommunity.orgpaypalcorp.compaypalcredit.compaypalcreditcard.compaypalgivingfund.orgpaypalhere.compaypalhere.infopaypalhere.netpaypalhere.org
paypalhere.tvpaypali.net
paypalinc.compaypalindia.compaypalinsuranceservices.orgpaypall.compaypallabs.compaypalme.com
paypalnet.net
paypalnet.orgpaypalnetwork.infopaypalnetwork.netpaypalnetwork.orgpaypalobjects.compaypalonline.netpaypalonline.orgpaypalprepagata.compaypalprepagata.netpaypalservice.compaypalshopping.compaypalshopping.netpaypalsurvey.compaypalx.compaypaly.compaypass.netpayppal.compayserve.compaysitesreviews.netpayypal.com
+pbabes.com
pbjar1205.prosalesforceliveagent.compbs.org
+pbwiki.compbworks.com
pbxes.com
pbxes.org
+pc.comsalesforceiq.com
+pca.stsalesforce.orgsalesforce.compcanywhere.netpccw.compccwglobal.compccwsolutions.comsalecheaphandbags.comsaleblackfridaydrebeats.com!salebeatslasteststyle4you.comsale-nikeshoes.compchomeec.tw
sakya.orgsakuralive.compcij.orgsaiq.me
pcloud.twsaintyculture.comsahabatsetiasmartone.compcre.orgsagernet.orgsagepub.com
+pctlwm.comsaffrontech.compdetails.compdf.newsafervpn.compdncommunity.compdproxy.comsafeguarddefenders.comsafechat.com
+pdxbmw.compeace.ca
peacefire.org
peacehall.compeach-cherry.compeachy18.compeachyforum.com
peacocktv.com
safebooru.orgpearlher.orgpearson-anaya.compearson-intl.compearson-schule.chpearson-studium.ch
+pearson.ch
+pearson.clsaerock.comsae.orgpearson.comsadpanda.ussadistic-v.comsacredhentai.comsacom.hk
+pearson.es
+pearson.fr
+pearson.plpearsonactivelearn.compearsonassessment.bepearsonassessment.depearsonassessment.dkpearsonassessment.frpearsonassessment.nlpearsonassessment.nopearsonassessment.sepearsonassessments.com
sacks.compearsoncanada.capearsonclinical.bepearsonclinical.ca
+sacduc.comsabuibo.netsaasexch.iopearsonclinical.depearsonclinical.dkpearsonclinical.espearsonclinical.eupearsonclinical.frpearsonclinical.inpearsonclinical.nlpearsonclinical.nopearsonclinical.sepearsoncmg.comsaasexch.coms8forum.compearsoncred.coms8ds5gfm.xyz
pearsoned.compearsoneducacion.netpearsoneducationbooks.com
pearsonelt.chpearsonelt.compearsonenespanol.compearsonhighered.coms81c.compearsonlongman.chpearsononlineacademy.compearsonperu.pes2stagehance.com
+s1s1s1.compearsonvue.compearsonvue.net
+s1heng.com
+s.team
+s-xoom.compeeasian.compeekvids.coms-rewards.hkpeepholecam.com
peerj.com
s-nbcnews.com
peing.netpekingduck.orgpelvicexam.info
s-msn.com
+s-msft.coms-msedge.net
+pen.iopenchinese.compenchinese.nets-microsoft.coms-dragon.orgs-dc-msedge.net
+s-cute.coms-cashonmobile.compenisbot.coms-books.compensions-expert.com
penthouse.compentium.compentium.net
pentoy.hk
s-bluemix.netrxhj.netruyiseek.comruvideos.netpeoplebookcafe.compeopledreamfunding.com
rutube.ru
peoplenews.tw
rutracker.net
peopo.org
+rusvpn.compercy.inperfect-privacy.com
rustup.rsperfectgirls.netperfectgonzo.comperfectkickz.netperfectnaked.comperfectsexnow.comperfectshemales.comperfecttitspics.comrustdesk.comperiscope.tvperl.org
perplexity.aipersagg.compersecutionblog.com
rust-lang.orgpersianepochtimes.compersiankitty.com
+person.compersonaltrainermath.compersoneelsland.comrussianrape.orgrushporn.xxx
pervclips.comperverse.sexperverttube.competardas.competardas.xxxrushporn.onlinerushbee.com
+petite.onepetiteamateurteen.competiteballerinasfucked.competitehdporn.comrupress.orgrunwayescorts.comrunporn.com
+pgyy67.top
phantomjs.orgphapluan.orgrunningnike.comrunnike.com
+runbtx.com
+phayul.comrun.app
+rumble.comrumah123.com
pheonix.moneyruleporn.comphilborges.comrule34video.comphimsex47.clubphimsexhentai.mephimsexkhongche.cyouphimsexnhanh.clubphmsociety.org
+phncdn.comrule34pornvids.comphoto-image.monsterphotodharma.netphotofocus.comphotolia.netrule34h.comphotonicssociety.orgphotos18.com
photoshop.comphp.netphprcdn.com
+rule34.xxxphun.orgphuquocservices.com
+phxbmw.comphysicalexam.infophysiology.orgrulaisc-tv.buzz
pi-vr.com
rukor.org
+piapro.netpicacg2022.compicacgp.compicacgy.com
+picacn.xyz
picacomic.com
picacomic.xyzpicacomiccn.com
+picasa.com
picasaweb.com
picasaweb.net
picasaweb.org
pichunter.compicidae.netrukoebxx.comruinedking.comrude.compickinguppussy.compicknicekicks.netpickshoesclothes.com
+picnik.compicpost.compics.eepics.vc
picsee.co
+picsee.pro
+pictoa.compictocum.compicturedip.compicturesocial.compieceofplastic.comrubygems.orgpifpafarabia.com
pigav.com
ruby-lang.orgpikabu.monster
pikpak.mepikpakdrive.comruanyifeng.comrtycminnesota.org pillbeatsblackfridaysale.compimg.twpin-cong.com
+pin.itpin6.com
pincong.rockspinduck.compinflix.comping.fmping.peping.sx
+rtings.com
pingguotv.xyzpingxiangpuer.com
+pinimg.compinkcore.compinkcore.net
pinkdh-bb.sbspinkdino.com
pinkporno.compinkpussy.tvpinkrod.com
pinksporn.compinkvelvetvault.com
pinkworld.compinoy-n.compinterest.atpinterest.bepinterest.capinterest.chpinterest.clpinterest.co
+rti.twrthk.hkrtalabel.org
+rt.comrstatic.net
pinterest.comrssmeme.com
+rssing.com
+rsshub.apprsgamen.org
+rsg.scrsf.orgrsf-chinese.orgrsdlmonitor.compinterest.depinterest.dkpinterest.ecpinterest.engineeringpinterest.espinterest.frpinterest.hupinterest.idpinterest.iepinterest.inpinterest.infopinterest.itpinterest.jppinterest.krpinterest.mx
pinterest.netpinterest.nlpinterest.nzpinterest.pepinterest.phpinterest.ptpinterest.rupinterest.sepinterest.thpinterest.twpinterest.ukpinterest.vnpinterestmail.compintool.comrsc.org
rrtis.comrrs1.xyzpipii.tvpiposay.compiraattilahti.orgpiratecams.compirates-forum.org
+rrl28.buzz
+piring.compirouvr.com
rprimelab.compise.pw
rpmfusion.orgpittpatt.compivotalinitiative.compiwheels.orgpixanalytics.com
+pixapp.net
+pixate.compixeldrain.compixelqi.com
pixfs.net
+pixhost.to
+rplay.liverpglogs.compixiv.me
pixiv.net
pixiv.orgpixlr-o-matic.compixlromatic.com
pixnet.cc
+pixnet.net
+pixnet.pro
pixnet.tw
+pixplug.in
pixtronix.com
pjbyj.top
pjful-app.lolpjgirls.com
+pk.compki-post.chpki-posta.chpki-poste.chplacemix.comroyalsocietypublishing.orgplacesdocs.complanetminecraft.complanetsuzy.orgplansondemand.com
royalcams.complantsvszombies2.complasticlabs.complastics-cadcam.complatinumlinks.org
play-bmm.shopplay-bmmer.buzz
play4free.complayapex.complayartifact.complaybar.bizplayboy.comroutledgehandbooks.complayboyplus.complaybydurex.complaycover.io
player.fmplayerjs.ioplayforceone.complayhearthstone.complaymation.complaymeow.complaynintendo.complayno1.complayoverwatch.complayparagon.complaypcesor.complayporngame.complayporngames.complaypornogames.comrouterboard.complaysexgames.xxxplaysexygame.complayshow.ioplayshowtv.com110xnxx.complaystation.complaystation.netplayvalorant.complayvids.complaywarcraft3.complayyoungtube.complayz.jproughman.netpleasefuck.orgpleasurebabe.compleasuregirl.netpleasuremore.complexvpn.proroughebonysex.complos.org
plug-into.com
plug.gameplumperpass.comroudaosp.ccroudao6.buzzplunder.com
plurk.com
rou.video
+plus.codes
+plus28.com
+plusbb.complusone8.complusporn.netpluto.tvplutotv.net
+rotten.comroshy.tvrosemarydoll.com
rosechina.netrootsigning.comroot-signing.ch
plzpf.com pm.mepmatehunter.com
+pmates.com
roodo.comronjoneswriter.compnas.orgpo2b.com
pobieramy.toppobl-content.compocketbiketrader.compocketcasts.compodbean.com
+podcast.copodictionary.comromantic-sex-video.compoe.com
+poecdn.netpogo.compogobeta.compoi.moerolsociety.orgroloxxx.comroloflix.compoisontube.com
+pojapp.cfdpojbayj1030.top
+pojie7.compojiefuli20033.xyzpojiefuli9113.xyz
pokedex3d.compokemon-moon.compokemon-sun.compokemon-sunmoon.compokemon-unitepgame.compokemon.compokemonbank.compokemonblackwhite.com
pokemonbw.compokemonchampionships.compokemongoldsilver.compokemonhome.compokemonletsgoeevee.compokemonletsgopikachu.compokemonmysterydungeon.compokemonpicross.compokemonplatinum.compokemonrubysapphire.compokemonsunmoon.compokemonswordshield.compokemonultrasunmoon.compokemonvgc.compokemonwifi.netpokerstars.compokerstars.netrolls-roycemotorcarsna.comrolls-roycemotorcars.compoliticalchina.orgpoliticalconsultation.orgrolls-roycecullinan.com
rolia.netpolitiscales.netpoloniex.comrolfoundation.orgpolygon.compolymer-project.org
polymerhk.compolymerproject.orgrokutime.comroku.comrojo.componyanimalsex.com
poofetish.comrockstargames.comrocksextube.com
+poolin.compoop-pee.onlinepoopee-puke.compoopeegirls.com
+popcap.com
popjav.tvpopo.tw
popo8.compopporn-world.com
+popvote.hkpopxi.clickpopyard.compopyard.orgporcore.comporinga.net
+porkahd.coporkbun.com
porm.club10xfotolia.comporn-bokep.comporn-comic.comporn-discounts.comporn-discounts.xxxporn-gratis.infoporn-images-xxx.comporn-list.siteporn-portal.comporn-sex-video.me
porn-star.comporn.bizporn.comporn.toporn.xxx
porn2.comporn2012.comporn300.comporn300.online
porn34.meporn3dgalleries.comporn4days.ccporn4fap.com
porn5.comporn555.com
+porn5f.com
+porn62.com
porn7.net
porn7.xxx
+porn87.com
+porn91.org
porn93.ccpornachi.compornacho.compornadoo.com
+pornaf.compornaffected.compornandxxxvideos.com
pornaroma.com
pornav.copornaxo.compornbase.orgpornbest.org
+pornbit.cc
+pornbl.compornbozz.com
pornbraze.compornburger.com
pornburst.xxxporncana.comporncoil.comporncomics.com
porncomics.meporncomixonline.netporncore.net
porncoven.com
porncrash.comporndabster.com
porndeals.comporndeepfake.netporndex.comporndiamond.comporndig.com
porndigger.meporndiscount.orgporndiscounts.comporndish.comporndisk.com
pornditos.comporndoe.comporndoepremium.comporndork.com
+porndr.comporndroids.com
porndude2.comporndudecasting.compornelephant.compornenix.com
porner.tvpornerbros.compornexpress.netpornfactory.infopornfhd.compornfidelity.compornfind.orgpornfinder.bizpornflip.compornfoolery.com
pornfu.tvpornfuck.net
pornfuror.comporngames.club
porngames.comporngames.gamesporngames.tvporngameshub.comporngamesverse.comporngeek.comporngem.comporngifs.xxxporngladiator.com
+porngo.comporngo.tuberocksdb.orgporngrabbz.comporngub.compornguide.blogpornguz.compornhail.compornhat.compornhat.one
+pornhat.tv
+pornhd.compornhd3x.tvpornhd8k.netpornhdfuck.com
pornhdtube.tvpornhdvideos.tvpornheed.compornheli.compornhits.compornhoho.compornhost.compornhub-deutsch.infopornhub-deutsch.netpornhub-german.compornhub-sexfilme.netpornhub.compornhub.org
pornhub00.compornhubapparel.compornhubdeutsch.netpornhubpremium.compornhubs.videopornhubselect.compornhun.xyzpornhutdeutsch.compornicom.com
+pornid.xxxpornimg.xyz
+porniq.com
pornirani.compornjam.compornjav.org
+pornjk.compornkai.compornkind.netpornking.funpornkino.ccpornkro.com
pornktube.com
+pornky.compornlaundry.compornlegendsclub.compornlist18.compornlistdude.com
pornloser.compornlulu.com
pornluxme.com
+pornma.compornmadeathome.compornmagnet.orgpornmaki.compornmaster.funpornmate.compornmaturetube.com
+pornmd.compornmegaload.compornmemo.com
+pornmm.net
pornmonde.compornmovies2.mepornmoviescave.com
+pornmz.com
+pornmz.netpornnetworkdeals.compornnut.comporno-erotica.comrocksdb.netporno365.netporno365.websiteporno49.compornoaid.compornoamateurlatino.netpornobae.compornobengala.compornoboard.netpornoboliviaxxx.comrocksdb.compornobox.netrockettube.compornobrasil.compornobrasil.orgpornobrasileiro.tvpornobrasileiro.xyz
pornobuzz.netpornocarioca.compornocaserotube.com
+pornocd.rupornocomic.netpornodanke.compornodoido.com
pornodrome.tvpornoecuadorxxx.compornoelena.net
pornofiles.rupornofilmlist.com
pornofint.com
pornofrog.compornogayphy.com
pornogids.net
pornogram.xxxpornogramxxx.comrocketfishproducts.compornogrund.compornohd.bluepornohd.plusrocket-inc.net
pornohut.infopornohutdeutsch.netpornoid.compornoincreible.compornoingyen.hupornoirado.compornoitaliano.com
pornojefe.compornojux.compornoko.net
pornokrol.compornolab.netpornolaba.mobipornolandia.xxxpornomasse.compornomineiro.compornomovies.mobipornone.compornoorzel.compornoprive.xxxpornoreino.com
pornorips.compornos.livepornoscanner.compornosex.campornosfilmes.compornoslon.mepornosphere.com
pornotime.net
pornotree.com
pornotron.netrobustnessiskey.compornotube69.nlpornov1080.namerobotoffice.compornovenezolanox.compornovideosfree.netpornovideoshub.compornovideow.compornoweb.hupornoweb.winpornoxo.compornozona.tvpornpair.compornpander.compornpaw.com
+pornpen.aipornper.compornpics.compornpost.netpornpros.compornprosnetwork.com
pornproxy.app
+pornqd.compornrabbit.compornrapidshare.compornreactor.ccpornrips.ccpornrox.compornscat.orgpornscum.com
pornsexer.com
pornshare.bizpornsharing.com
pornsites.com
pornsites.xxxpornsitesnow.compornsocket.compornsoldiers.compornsos.com
pornspark.compornstarbyface.compornstarclub.compornstreams.tvpornstripgames.comporntea.compornteen123.com
+porntn.comporntop.comporntoplinks.comporntrex.comporntry.comporntsunami.comporntube.comporntubenews.comporntubent.com
+porntv.comporntvblog.com
pornuj.czpornultras.com
pornv.org
+pornve.compornvibe.orgpornvideobb.compornvideos.casapornvideotop.compornvideotube.onlinepornvidhd.club
pornvisit.compornwatchers.compornwebmasters.com
pornwhite.compornwhitelist.compornwild.topornworld.topornxnxxmovies.com
+pornxp.com
+pornxp.net
+pornxp.org
+pornxs.compornxvideos.tvpornxvideos.winpornxxxmovies.ccpornxxxplace.compornxxxweb.compornyeah.com
pornyteen.compornzog.compornzone.comporstoporno.siteroborecall.com
+port25.bizportablevpn.nl
roboforex.comportfoliowall.comrobobat.comroadshow.hk
road-crew.comro89.com
rmjdw132.info
porzo.comporzo.tvposhtestgallery.compositivessl.composkotanews.com
+post01.com
+post76.compost852.com
postadult.compostegro.it
rmjdw.comrmbl.wspostgresql.orgpostimages.org
+postimg.ccpostimg.orgpostini.com
+rm2029.composty.krpostyourgirls.ws
potato.im
+potenza.jp
rlwlw.com
+rlczdo.xyz
+potvpn.compourquoi.tw
+rk.compovpornonly.compovr.comrjgsp1.buzz
power.compoweranimator.compowerapple.compowerappscdn.netpowerautomate.compowerbeats2wireless.compowerbeatsbydrdre.compowerbeatsbydre.compowerbi.compowerbook.eupowercx.compoweredbyintel.com
+rjgsp.buzzpowerinspect.com
powermill.compowermillna.compowerofresolve.capowerofresolve.compowerphoto.orgpowershape-e.compowershape.compowershellgallery.compowersunitedvr.comrixcloud.us
+pp-soc.compp6.inforixcloud.comppaypal.comppb-mod.buzz
+ppe.lawyer
pplah.compplusstatic.comppp91.cc
pppds.com
ritter.vg
+ppy.shpracticalbusinessskills.compracticalmoneyskills.capracticalmoneyskills.jp
+ritouki.jp
risextube.comprastitutki.ruprayforchina.netpre-bmwgroup.jobspredictivetechnologies.compremeforwindows7.com
+riseup.netpremium-beauty.compremiumfs.de
premiumhd.netpremiumpornlist.compremobay.com
premproxy.comprepsure.com
+ripple.comriotpoints.compresentationzen.comriotpin.compresidentlee.tw
press.vinprestige-av.comriotgames.tv
riotgames.netpretty-ass.xyzprettynubiles.comprettyvirgin.com
priceless.com
priceless.orgpricelessafrica.compricelessarabia.compricelessaruba.compricelessbeijing.compricelesshongkong.compricelesshonolulu.com pricelessmarketingengine.compricelesspick.compricelesssantiago.compricelesssurprises.compricelesssydney.compricelesstoronto.capricelesstv.compriconne-redive.jp
pridetube.comriotgames.jpriotgames.info
riotgames.comriotforgegames.comprime-video.comprimecurves.com
primeday.infoprimeindianporn.comprimematures.comprimepornlist.com
primevideo.ccprimevideo.comprimevideo.infoprimevideo.org
primevideo.tvprincesscum.com
princeton.eduriotcdn.net
printeron.comprintersetupsupport.comprintspots.comprintspots.netriot.netprism-break.orgriot.imprismlauncher.org
prismlive.comprisoneralert.compritunl.com
privacybox.deprivacysandbox.comprivacysimplified.comprivacytools.ioprivate.comprivatebrowsingmyths.comprivatecasting-x.comprivateclassics.comprivateinternetaccess.comprivatemarketplaces.netprivatemarketplaces.usprivatepaste.comprivatetunnel.comprivatevoyeurvideos.comprivatevpn.comriot.comprivilege.hkprivilege.twprivoxy.orgriot-games.comrinvdh7.xyzrileyguide.comprocopytips.comproctoscopeexam.comprodrive-japan.comriku.me
+rigums.xyz
rigpa.orgprofilemaster.comprofreeporno.comrightbtc.comproject-syndicate.orgprojectapex.comprojectara.comprojectbaseline.comprojecteuclid.orgprojectjav.comprojectmurphy.netprojectpoint.comprojectpoint.netprojectsangam.comprojectshoreline.comprojectvasari.comprojectvoyeur.compromonsterbeatsbydre.comridepenguin.com
ricefever.com
pron.gururhyw31.liferhyw.mepropertysex.comproporn.com
proptiger.comproquest.compros.eeprosiben.derhodeislandbmw.comprostoporno.net
prostores.comprostudiobeatscybersale.comrgpub.ioprothots.com
proton.meprotondb.com
protonmail.chprotonmail.comprotonstatus.com
protonvpn.com
+rfi.my
+rfi.frprovideocoalition.comprovpnaccounts.com
rferl.orgproxfree.com
proxifier.com
+rfaweb.orgproxomitron.info
+proxpn.comproxyadult.orgproxyanonimo.esproxydns.com
rfamobile.orgrfachina.comproxypy.netproxyrarbg.org
proxyroad.comproxytunnel.netproyectoclubes.com
prozz.net
+prpops.comrfa.org
prts.plus
rexxx.orgps-exchange.com
+rexcha.compsblog.namerewrite-anime.tvpscdn.co
+revver.compscp.tv
+revolv.com
+pse.is
+pshvpn.comrevleft.com
+psiphon.carevitsucks.netpsiphon3.compsiphontoday.comrevitcc.compstatic.netpstorage.spacepsyccareers.com pt.imptapjmp.com
revit.com
+ptt.ccptt.sexptt2.ccptt3.ccpttgame.com
+pttvan.org
ptzwx.compu82.vippub.devpublic-sex-porn.compublic-trust.compublicagentxxx.com&"revenue-performance-management.comreutersmedia.netpublicpornvideo.com
+reuters.tvpublicsexhub.comreuters.compublishproxy.comreut.rspubmatic.comreurl.ccpuffinbrowser.com
puffstore.compugetsoundbmw.compugetsoundmini.compugpig-dev.compugpig-stage.com
+pugpig.com
pullfolio.compullstring.netpulsebrowser.apppunishbang.compunishworld.com
punyu.comretweetrank.com
+pure18.compureapk.compureconcepts.netpureinsight.orgpurelov5.compurelyceleb.compurenudism.compurepdf.com
puretaboo.compurevpn.compurextc.compuripuriunkomura.compurplelotus.orgretweetist.compursuestar.com
+pururin.topushchinawall.compussy-pics.netpussy3dporn.compussyboy.netpussymomsex.compussyporntubes.compussysexgames.compussyshine.infopussyspace.compussyspace.netputihome.orgputinho.net
putlocker.com
putty.org
puuko.compvp.net
+pvp.tvpvt.sexy
pvue1.com
pvue2.com
+pvzgw2.com
pvzheroes.compwabuilder.com
+pwmnet.com
pwned.compwnedpasswords.com
pximg.net
+pxt.io
pycon.orgpypa.iopypi.iopypi.orgpypl.com
pypl.infopypl.netpypl.tvpyrobot.org
+python.comretweeteffect.com
+python.orgpythonhackers.compythonhosted.orgpytorch.orgpzforever.skinpzforever01.homespzhanfor.today
+q10.jpq13.com
+q13fox.comretroxxxmovs.comretrohomevideos.comretroclassicporn.comretimer.comrethink.netrespawnbyrazer.com
+qanote.comqatarescortsvip.com
qattdh.cc
+qattdh.top
+qattdh1.cc
+qattdh2.ccqattdh6.topqbittorrent.orgqbmengmei6.momresoubang.buzz
qcmod.xyzqctconnect.comqdiehzz7.meresoubanana.buzzresistchina.orgresilio.comresearchkit.tvresearchkit.org
qhigh.com
+qi-gong.me
+qianbai.tw
qiandao.todayqiangwaikan.comqiangyou.orgqiao-cn.com
qidian.caqienkuen.org
qinav.com
+qingse.oneqise100.comqiwen.luqkshare.comqlink.toqmap.pubresearchkit.netresearchkit.hkresearchintel.comresearchgate.netqmov.comqmov.netresearchandcare.orgqmttqg3k.me
resao.comrepswing.comrepsneakermall.com
+repsils.noqnap.com
+qombol.comqoo10.jpqooqlevideo.comqoos.com
qorno.comrepo.newqpoe.com
+qporno.xxx
+qprize.com
+repe21.comrenzhe.cloud
qqbs.asia
qqbs.work qr.aerenyurenquan.orgrentaride.deqstatus.comqt-project.org qt.ioqtrac.euqtweeter.com
rentaride.comrenovacionxboxlive.comrenovacionoffice.comqualcomm-email.com
renminbao.comreneerossvideos.comrenderos.comrenchead.comremirepo.netqualcomm.comreligioustolerance.orgreligionnews.comqualcomm.dequalcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.comreleaseinternational.org
qualphone.comrelaxbbs.comrelateiq.comreiporno.comregisteridm.comregisterhulu.comregiongold.comquanben-xiaoshuo.com
+quanben.ioquannengshen.orgregex101.comquantil.comreform-apple.comquantumbooter.netquatrowireless.comreflectivecode.comquay.io
+referer.us
+ree007.xyzredzonechannel.comredxxxvideo.tv
redxxx.cc
+redwap.proquestvisual.comquicinc.comquickiepage.comquickoffice.comquicktake.videoquicktime.cc
quicktime.com
redwap.mequicktime.eu
quicktime.netquicktime.tvquiksee.comquiltmc.orgquip-cdn.comquip.comquipelements.comquitccp.netquitccp.orgquiz.directoryqumingwz.comredwap-xxx.com
quora.comquoracdn.netquotable.comquovadisglobal.com
quran.comquranexplorer.com
qusi8.netqutebrowser.org
+qvodzy.org
qwant.comqwant.deqwant.frqwant.it
qxbbs.orgqysg.cc
+qysg7.buzz
+qysg8.buzz
+qz.comqzav.tv
r-project.org r0.rur10s.comr10s.jpredtubepremium.comr18.com
r18av.comr18lu-avi.shop
r18lu.comr34porn.netredtube9.comredtube.comrabbitscams.comrabbitscams.sexrabbitsreviews.comredtube.blogredtub3xxx.comredteenporn.com
+racked.com
redsexhub.comredpornpictures.com
+radeon.comradian6.comradicalparty.org
radiko.jpradio-canada.caradio.gardenredporno.czradiofarda.comradiohilight.netradioline.co
radiomango.fmradiomarsho.comredporn.xxxradiosvoboda.orgradiotavisupleba.geradiovaticana.org
radiovncr.comradiyoyacuvoa.comredmatureporn.comrael.orgredlightcenter.comraggedbanner.com
+redkix.com
redislabs.comrainbowplan.orgraindrop.ioredis.iorajwaphq.comrakuten-static.com
+rakuten.ca
redino.twrakuten.comredhotlabs.com
redhdtube.xxx
+rakuten.tw
+redhat.org
+redhat.comredgifs.comredfaptube.comredditstatus.com
randyblue.comrangwang.bizrangzen.netrangzen.org
ranyunfei.comrapbull.net
rapefilms.netrapetube.meredditstatic.comrapidmoviez.comrapidprototyping-cadcam.comrapidssl.comrapidvpn.comraponlinereview.comredditspace.comrarbg.israrbg.merarbg.torarbgaccess.orgrarbgaccessed.orgrarbgget.orgrarbggo.orgrarbgmirror.comrarbgmirror.orgrarbgproxy.orgrarbgprx.orgrarbgto.orgrarbgunblock.comrarbgunblock.orgrarbgunblocked.orgrarbgway.orgraremovie.cc
raremovie.netredditmedia.comredditmail.comredditlist.com
redditinc.comraspberrypi.orgraspbian.orgrat.xxxratedgross.comrateyourmusic.comrationalwiki.orgreddithelp.comredditblog.com
+reddit.comredd.itredchinacn.orgravm.tvredchinacn.net
+rawgit.com
rawgithub.com
razer.comrazerofficial.comrazersupport.comrazerzone.jp
razyboard.com
rb-crisis.com
+rb.com rb.gy
+rb.netrbbusinessshop.com
+rbc007.comrbdigitalab.comrbdigitallab.com
+rbe996.com
+rbeopp.comrbeuroinfo.com
redbubble.comredballoonsolidarity.orgrbgrads.comrbgraduates.comrbmavericks.comrbnainternational.com
rbplc.comrbrandlibrary.com
rbsgr.comredamateurtube.comred-lang.org
rbspeakup.comrecordhistory.orgreconjet.comreconinstruments.comrecoiljs.org
+recode.netreckittprofessional.com
rcinet.careckittbenckiser.tv
rcl07.xyz
rclon.comreckittbenckiser.netreckittbenckiser.comreckitt.netrecelebrity.com
recaptcha.netrecaptcha-cn.net
rebrandly.comrebatesrule.net
+rebates.jp
+reaxys.com
reastatic.net
+reason.comrealzoomovies.comrealviz.comrealvision.comrealtype.jprealtor.comrealteengirls.comrealsexpass.comrealsexdoll.comrealraptalk.comrealpornclip.com
+rd.comrealpeoplerealprojects.comrealpeople-realprojects.comrealmilwaukeenow.comrdio.comrealmaturesfuck.comreallesbianexposed.comrds-yes.buzz
+rdtcdn.comrealitykings.comre25.viprea-asia.com
rea-group.com
+rea.design
+rea.global
+rea.iorea.techreabble.comreality-computing.comrealgfporn.com
reachporn.comreachtheworldonfacebook.com
react.comreactjs.comreactjs.org
+read01.comread100.comreaderswivesonline.comrealestatejournal.comrealdoll.comrealcuckoldsex.comrealcourage.orgreadmoo.comreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org
readydown.comrealclearworld.comreal-homemade-movies.comreal-mature-porn.comreal-thaipussy.comrealamericanstories.comrealamericanstories.inforealamericanstories.netrealamericanstories.orgrealamericanstories.tvrealclearscience.com
realclear.comrealclearbooks.comrealcleardefense.comrealcleareducation.comrealclearenergy.orgrealclearfoundation.orgrealclearhealth.comrealclearhistory.comrealclearinvestigations.comrealclearlife.comrealclearmarkets.comrealclearpolicy.comrealclearpolitics.comrealclearpublicaffairs.comrealclearreligion.org
vanish.com.sgposts.careerengine.usrealcommercial.com.aureadingtimes.com.twreadingosi.ac.uk
reading.ac.ukrealestate.com.aureading-college.ac.ukrealforum.zkiz.comreachingwider.ac.uk realisingopportunities.ac.ukreach.ac.ukre-net.ac.ukrdnet.ac.ukreallifemethods.ac.ukrdmrsc.ac.uk
rdi.ac.uk
rdg.ac.uk
rdf.ac.uk
+rcvs.ac.uk
rcukssc.ac.uk
+rcuk.ac.ukrcseng.ac.ukrcsed.ac.uk
rcs.ac.ukrealtype.co.jp
rcr.ac.uk
rcpsych.ac.ukrcpsglasg.ac.ukrcpsg.ac.uk
+reap.ac.ukreaseheath.ac.ukrcpnorth.ac.ukrcplondon.ac.uk
+rcpe.ac.ukrcpch.ac.uk
rcp.ac.uk
rcophth.ac.uk"rebuildingmacroeconomics.ac.ukrconversation.blogs.com
+rcog.ac.uk
+rcoa.ac.uk
+rcni.ac.ukrcnde.ac.uk
rcm.ac.uk
rcl.ac.uk
+rcem.ac.uk
+rcds.ac.uk
rcc.ac.ukrcahmw.ac.uk
rca.ac.ukrc-harwell.ac.ukrecordingachievement.ac.ukrecovery.org.twrecoveryversion.com.twrbslondon.ac.uk
+rbsl.ac.ukrbgkew.ac.ukredbridge-college.ac.ukredbridge-iae.ac.ukredbridge.ac.ukredbridgeinstitute.ac.uk
+rbge.ac.ukredcar.ac.ukraw.githack.com&"ravensbourneuniversitylondon.ac.ukredcliffe.ac.ukravensbourne.ac.ukreddit.app.linkravemedia.ac.uk
+rave.ac.uk
rau.ac.ukrascommunity.ac.ukrascal.ac.uk
ras.ac.ukrareview.ac.ukraratutor.ac.ukrapid.ac.ukrandomsystems-cdt.ac.ukrandd.ac.ukramcity.com.au
ram.ac.uk
rakuya.com.tw
rakuten.ne.jprakuten.com.tw
rakuten.co.jp
raizoji.or.jpraidtalk.com.twraidcall.com.tw
+raft.ac.uk
rae.ac.ukradioresearch.ac.ukradioaustralia.net.au
+rada.ac.uk
rad-sat.ac.uk
+racc.ac.ukracals.ac.uk
rac.ac.uk
raa.ac.ukredtube.com.brra-review.ac.ukr18.clickme.netqumrancavesdispersed.ac.ukquicktime.com.au
quercus.ac.uk
queensu.ac.ukqueens.ac.ukqueens-belfast.ac.uk
qub.ac.uk
reednet.ac.uk
ref.ac.ukquayside.ac.ukquatrum.com.brquantitativemethods.ac.uk
refrain.ac.ukregard.ac.ukregener8.ac.ukregent-academy.ac.ukregent-college.ac.ukregentcollegelondon.ac.ukregents-tc.ac.uk
regents.ac.ukregentscollege.ac.uk
quantic.ac.uk regional-studies-assoc.ac.ukregionalhpc.ac.uk%!regionalsciencecentreoldham.ac.ukregionalvisions.ac.ukqualysguard.qpdp1.netqualysguard.qcpp1.netqualysguard.qatp1.netreid-kerr.ac.ukreidkerr.ac.uk
reigate.ac.ukqualysapi.qpdp1.netrelateinstitute.ac.ukqualysapi.qcpp1.netqualysapi.qatp1.netrelay.com.twqualidata.ac.ukqualcomm.com.twqualcomm.com.brreload.ac.uk
+relu.ac.ukrememberingslavery.ac.ukqualcomm.co.ukrems-cdt.ac.ukrenaissanceskin.ac.ukqualcomm.co.krqualcomm.co.jpqualcomm.co.inqualcomm.co.id
quadrat.ac.ukquadraminstitute.ac.uk
quadram.ac.uk
qso.ac.uk
+renu.ac.uk
qsi.ac.ukqq.co.zaqpx.googleflights.net
+qoru.ac.ukrepositorynet.ac.uk
qmw.ac.uk
+qmul.ac.uk
+qmuc.ac.uk
+rerc.ac.uk
qmu.ac.ukresearch-clinician.ac.ukresearch-councils.ac.ukresearch-scotland.ac.uk!research-socialsciences.ac.uk"12diasderegalosdeitunes.com.veresearch4justice.ac.ukqmpgmc.ac.ukresearchconcordat.ac.ukresearchers14.ac.uk
qml.ac.ukqmced.ac.uk
qmc.ac.ukqmbsc.ac.ukqgirl.com.twqgadmin.qpdp1.netresearchscotland.ac.ukresearchwales.ac.uk+'resilient-decarbonised-energy-cdt.ac.uk+'resilient-decarbonised-energy-dtc.ac.ukqgadmin.qcpp1.netqgadmin.qatp1.net
+resl.ac.ukqeliz.ac.uk
+qbsc.ac.ukresourceshare.ac.ukqagpublic.qpdp1.net
restore.ac.uk
results.ac.ukqagpublic.qcpp1.netqagpublic.qatp1.netqacollege.ac.uk
qac.ac.uk
qaa.ac.uk
python.com.twpursglove.ac.ukpuppiesofourtime.ac.ukpubu.com.twpubmatic.co.jppublicspace.ac.ukpublicservices.ac.ukpublicinterest.ac.ukpublicengagement.ac.uk
+pts.org.twpssru.ac.ukpsiphon.civisec.org
psigate.ac.uk
+psds.ac.ukpsci-com.ac.ukrewind.ac.uk
psc.ac.uk
psa.ac.uk
prucomm.ac.ukprs-ltsn.ac.ukproxynetwork.org.ukproxylist.org.ukproxomics.ac.uk
+rfdc.ac.ukprowe.ac.ukrfhsm.ac.uk
rfi.ac.uk
provide.ac.uk$ proudman-oceanographic-lab.ac.uk
rgo.ac.uk
proteus.ac.uk
rgu.ac.ukrh.ac.ukrhacc.ac.ukrhbnc.ac.ukrhcda-aac.ac.ukrhees.ac.uk
+rhfc.ac.ukprospects.ac.uk
rhs.ac.uk
+rhul.ac.ukrhyac.ac.ukproperty.com.aupropagandastudies.ac.ukri.ac.ukproms.ac.ukrichardtaunton.ac.uk&"richardtaunton6thformcollege.ac.ukrichardtauntons.ac.ukrichardwilsononline.ac.ukrichmond-utcoll.ac.ukrichmond.ac.uk richmondbusinessschool.ac.ukrichuish.ac.ukpromotingpartnership.ac.ukriding.ac.uk
right-2.ac.ukprogramme3.ac.uk
profile.ac.ukproductivemargins.ac.uk
product.co.jpprocatstudent.ac.ukrimg.com.tw
rin.ac.ukprocatdigital.ac.ukprocat.ac.uk
privelt.ac.ukprism.ac.uk
prioned.ac.ukprinciplesinpatterns.ac.ukprimarygoal.ac.ukriotgames.co.krprifysgolioncymru.ac.ukpriestleycollege.ac.ukpriestley.ac.ukprestoncoll.ac.uk
preston.ac.uk!presidencylondoncollege.ac.uk%!prescribingsafetyassessment.ac.ukripon-cuddesdon.ac.ukprescribe.ac.ukriscl.ac.ukriseholme.ac.ukpremia.ac.ukpramu.ac.ukpracticum.ac.uk
+ppre.ac.ukriverside.ac.ukriversidecollege.ac.uk riversidecollegehalton.ac.ukriversidemusiccollege.ac.ukrivic.ac.ukpparc.ac.ukpowia.ac.ukpowerelectronics.ac.uk
pow.ac.uk
poverty.ac.ukrl.ac.uk#potterieseducationaltrust.ac.uk
rlg.ac.uk
rln.ac.ukrlo-cetl.ac.uk
+rluk.ac.ukpotteries.ac.ukibook.co.nz
rma.ac.uk
+rmas.ac.ukpostgraducas.ac.ukpostgrad.ac.ukportsmouthuni.ac.uk
rnc.ac.uk
+rncb.ac.uk
+rncm.ac.ukrnib-redhill.ac.ukrnibcollege.ac.uk
rnibncw.ac.ukrnibvocoll.ac.uk
rnn.ac.ukrnngroup.ac.ukportsmouth.ac.ukportsmouth-college.ac.ukportland.ac.ukporth.ac.ukportfolio.ac.uk
+port.ac.ukpornovenezolano.com.vepornotube.blog.brrochdalesfc.ac.ukpornohoo.com.mxpornogratis.vlog.brpornobrasil.blog.brpornobom.com.brporno.org.inporngogo.supertop-100.compooleacl.ac.ukpool.ntp.orgrodbaston.ac.uk
roe.ac.ukroehampton-online.ac.ukroehampton.ac.ukroffeypark.ac.ukroisolutions.ac.ukpontypridd.ac.uk
+pone.ac.uk
+poms.ac.ukpoly-of-wales.ac.ukpoliticsinaction.ac.ukpoliticsblog.ac.ukpolitical-science.ac.uk
pol.ac.ukpointblankmusicschool.ac.ukpointblank.ac.ukpoint.ac.ukromanrepublic.ac.ukromansocietyrac.ac.ukpodium.ac.ukromeo.ac.uk
pms.ac.uk
pml.ac.uk
plymsea.ac.ukplymouthcfe.ac.ukplymouthart.ac.ukplymouth.ac.ukrosemount.ac.ukroses.ac.uk
rosetta.ac.uk$ plymouth-marine-laboratory.ac.ukroslin.ac.ukrothamsted.ac.ukrotherham-coll.ac.ukrotherham.ac.ukrothervalley.ac.uk
+plym.ac.uk
+plus.ac.ukplumptononline.ac.ukplumpton.ac.uk
+plm.org.hkpldfscotland.ac.ukroundtable.ac.ukplays.com.twroutesintolanguages.ac.ukplayboy.com.ukrowett.ac.ukrowleycollege.ac.ukroyagcol.ac.ukroyal-institution.ac.ukroyalacademyofmusic.ac.ukroyalarmouries.ac.ukplant-phenomics.ac.ukroyalholloway.ac.uk$ royalhollowaycommunication.ac.uk%!royalhollowaycommunications.ac.uk$ royalhollowayinternational.ac.ukroyalhollowayuniforum.ac.ukroyalmarsdenschool.ac.ukroyalsoc.ac.ukroyalsociety.ac.ukplacemyad.com.auroyce-institute.ac.ukroyce.ac.ukroysocmed.ac.ukpixiv.co.jppixinsight.com.twpitch-in.ac.uk
+piru.ac.uk
rps.ac.ukpirbright.ac.ukpipebots.ac.uk"pioneer-worker.forums-free.comrsa-ls.ac.ukrsamd.ac.ukrsc-cymru.ac.ukrsc-east-midlands.ac.ukrsc-east.ac.ukrsc-eastern.ac.ukrsc-em.ac.ukrsc-london.ac.ukrsc-ne-scotland.ac.ukrsc-ni.ac.ukrsc-north.ac.ukrsc-northern.ac.ukrsc-northwest.ac.ukrsc-scotland.ac.ukrsc-south-east.ac.ukrsc-southeast.ac.ukrsc-sw-scotland.ac.ukrsc-wales.ac.ukrsc-westmidlands.ac.ukrsc-wm.ac.ukrsc-yh.ac.ukrsc-yorkshire-humber.ac.uk"rsc-yorkshire-humberside.ac.uk
+pion.ac.ukrscem.ac.ukrsd-exeter.ac.ukpinterest.com.vn
rse.ac.ukpinterest.com.uypinterest.com.pypinterest.com.pepinterest.com.mx
+rslg.ac.ukrslondon.ac.uk
+rslp.ac.uk
rsm.ac.uk
+rsms.ac.uk
rsp.ac.ukpinterest.com.ecpinterest.com.bopinterest.com.aupinterest.co.ukpinterest.co.nzpinterest.co.krpinterest.co.inrthk.org.hk
+rti.org.twpinterest.co.at
pingan.com.hkpilgrimagestudies.ac.uk!ru-moscow-1.myhuaweicloud.com$ ru-northwest-2.myhuaweicloud.comrua-project.ac.uk!pilgrimageandcathedrals.ac.ukpiirus.ac.ukpier18.ac.ukpickering.ac.ukrugby-coll.ac.ukrugby-college.ac.ukrugby.ac.ukrugbycoll.ac.ukrugit.ac.ukpickereurope.ac.ukpicker.ac.ukpiapp.com.tw
rul.ac.ukpi-project.ac.uk
phr.ac.ukphotonics.ac.uk
phoenix.ac.uk
philtar.ac.uk
+phes.ac.ukpheds-dtc.ac.ukphdcymru.ac.uk
phc.ac.uk pharmacyschoolscouncil.ac.ukpharmacyschools.ac.ukpharmacy.ac.ukpgreen.ac.uk
runshaw.ac.ukrunshawcollege.ac.uk
+pggc.ac.ukpetroc.ac.uk
+ruru.ac.ukpeterborough.ac.ukpetardashd.com.veperthcoll.ac.ukruskin.ac.ukrussell-group.ac.ukrussellgroup.ac.ukperth.ac.ukpershore.ac.ukperformancescience.ac.ukperfected.ac.uk
+pepa.ac.uk
+rutc.ac.ukruten.com.twrutherford.ac.ukrutlandcollege.ac.uk
peoples.ac.ukpeoplelikeyou.ac.ukpenzance.ac.ukpenybont.ac.uk
rvc.ac.ukrwcmd.ac.ukpenwithcollege.ac.ukryokoyomiuri.co.jp
penwith.ac.uk
pennine.ac.ukpeninsular.ac.uks-cat.ac.uks-cheshire.ac.ukpeninsula.ac.ukpengwerncollege.ac.uk
s-devon.ac.ukpendcoll.ac.uk
pencoed.ac.ukpemulihan.or.idpembs.ac.ukpembrokeshire.ac.ukpeerlearning.ac.uk
+peep.ac.ukpedagogicequality.ac.uk
pec.ac.uk
s1.nudezz.com
+peas.ac.uk%!pearsonschoolsandfecolleges.co.uk1688.com.aupearsonplaces.com.aupearsoninstitute.ac.zapearsoned.co.nzpearsoncollegelondon.ac.uk!sa-brazil-1.myhuaweicloud.comsa-saopaulo.myqcloud.com
sa.hao123.compearsoncollege.ac.ukpearsonclinical.com.brpearsonclinical.com.au
sac.ac.ukpearsonclinical.co.ukpearsonbusinessschool.ac.uk
saclnet.ac.ukpearson.com.uypearson.com.hksacwg.ac.ukpearson.com.aupearson.com.ar
pearson.co.jp
pearson.co.in
+saes.ac.uk
+saet.ac.uk
+safa.ac.ukpearl.ac.uksafecampuscommunities.ac.ukpds.nasa.gov
pds.ac.uksafepodnetwork.ac.uk
pdi.ac.ukpcydds.ac.uk
+pct.org.twpcstore.com.twsages.ac.uk
+pcmd.ac.uksahfos.ac.uksainsbury-laboratory.ac.uksainsburycentre.ac.uk"sainsburyinstituteforart.ac.ukpcmarket.com.hk
pcl.ac.ukpchomepay.com.twpchomeonline.com.tw
pchome.com.twpcfeonline.ac.uk
+pcfe.ac.ukpcdvd.com.tw
+pcae.ac.uk
+pcad.ac.uk
pca.ac.uk
+pble.ac.uk
paypal.com.sgsalford-col.ac.uk
salford.ac.uksalfordcc.ac.uk$ salfordcitycollege-trinity.ac.uksalfordcitycollege.ac.uk
+salg.ac.uksalisbury-college.ac.uksalisbury.ac.uksalisbury6c.ac.uksalisburycollege.ac.uk
saltash.ac.uksalts.ac.uksalvation.org.hksalvationarmy.ac.uk
paypal.com.hkpaulmelloncentre.ac.ukpaul-mellon-centre.ac.uk
+samc.ac.ukpatsy.ac.uk
+sams.ac.ukpathwaystohe.ac.ukpathways.ac.uk
pathcal.ac.uk
+path.ac.ukpaston.ac.uk
+pase.ac.uk partneriaethaberbangor.ac.ukparticlephysics.ac.ukparksandgardens.ac.uk
sandisk.co.jp
sandisk.co.kr
sandisk.co.ukparklanecoll.ac.uksandisk.com.ausandisk.com.brsandisk.com.trsandisk.com.twparklane.ac.uk
parkcol.ac.ukpark-college.ac.ukparadigm.ac.ukpanorama-dtp.ac.ukpanda.ac.uk panamapapers.sueddeutsche.de
+pals.ac.uk
palmers.ac.uksandwell.ac.uksandwellcollege.ac.uksanger.ac.ukpalatine.ac.ukpalaeography.ac.uk
+pala.ac.uk
paisley.ac.uksankei-books.co.jp
+pahc.ac.uksankei-digital.co.jpsankei-eiga.co.jpsankei-kaihatsu.co.jp
+pads.ac.uk
+pact.ac.ukoxwasp-cdt.ac.uksankei.co.jpoxilp.ac.ukoxfordtutorialcollege.ac.ukoxfordgsb.ac.ukoxforddrama.ac.ukoxfordcollege.ac.uk
sanmin.com.twoxfordbusinesscollege.ac.ukoxfordbrookes.ac.ukoxfordadvancedstudies.ac.ukoxford.ac.ukoxford-cherwell.ac.ukoxford-brookes.ac.ukoxdent.ac.ukoxcis.ac.uk
+sapc.ac.ukoxahsc.ac.uk
oxademy.ac.ukox.ac.uksapphire.ac.uk
+owsc.ac.ukowl-elearning.ac.ukoversea.istarshine.com
+sari.ac.uksartre.ac.uksarum.ac.uk
sas.ac.uk
ovc.ac.ukoutofhourshelp.ac.ukoutduction.ac.uk$ satsixthformacademiestrust.ac.ukoustudios.ac.ukoursteps.com.auourjourney.ac.uk
+oubs.ac.ukou.ac.ukotleyonline.ac.ukotleyeaston.ac.ukotleycollege.ac.ukoss-watch.ac.ukoss-us-west-1.aliyuncs.comoss-us-east-1.aliyuncs.comoss-me-east-1.aliyuncs.comoss-eu-west-1.aliyuncs.com!oss-eu-central-1.aliyuncs.com oss-cn-hongkong.aliyuncs.com#oss-ap-southeast-7.aliyuncs.com#oss-ap-southeast-6.aliyuncs.comsavvyshopper.net.au#oss-ap-southeast-5.aliyuncs.com#oss-ap-southeast-3.aliyuncs.com#oss-ap-southeast-2.aliyuncs.com#oss-ap-southeast-1.aliyuncs.comoss-ap-south-1.aliyuncs.com#oss-ap-northeast-2.aliyuncs.com
sbc.ac.uk#oss-ap-northeast-1.aliyuncs.comsbirmc.ac.uk
osmosis.ac.ukosier.ac.ukosianxiety.ac.uksbrc-nottingham.ac.uk
+sbrn.ac.uk
sbs.ac.uk
+sbs.com.au
sbu.ac.uksbusinesslondon.ac.uksbux.com.my
+osfc.ac.uk
+oscg.ac.uksc-toolkit.ac.uk
sc1.ac.ukoscar.ac.ukscaan.ac.ukscadr.ac.uk
+scae.ac.uk
osc.ac.ukorsas.ac.ukorpington.ac.ukormskirk.ac.ukorientalmed.ac.ukorientaldaily.com.myscanservice1.qatp1.netscanservice1.qcpp1.netscanservice1.qpdp1.netscapa.ac.ukscarb-6-form.ac.ukscarboroughtec.ac.ukscarboroughuniversity.ac.uk%!scarboroughuniversitycampus.ac.uk%!scarboroughuniversitycentre.ac.uk&"scarboroughuniversitycollege.ac.ukoricon.co.jporgancare.org.tworchid.ac.ukorchestra.ac.ukorchardhill.ac.ukorbitalsouthcolleges.ac.ukopwall.ac.ukoptima-cdt.ac.ukopml.radiotime.comopera-archive.ac.ukopenweather.co.uk
openurl.ac.ukopenuniversity.ac.ukopenstemlabs.ac.uk
scc.ac.uk
+sccb.ac.uk
+sccc.ac.uksccjr.ac.uk
+scct.ac.uk
+scde.ac.ukopenstemlab.ac.ukopensource.ac.ukopensciencelaboratory.ac.uk
scentro.ac.uk
+scep.ac.uk
scg.ac.ukopensciencelab.ac.ukopenfields.ac.uk#openengineeringlaboratory.ac.ukopened.ac.ukschml.ac.ukopen.com.hkscholarsschool.ac.ukschome.ac.ukschoms.ac.uk!school-economic-science.ac.uk
+open.ac.uk
sci-hub.it.nfsci-hub.mksa.topopdems.ac.ukootbstudio.co.kr
sci.ac.uksci.hubg.orgsciculture.ac.ukscience-museum-group.ac.ukoocdtp.ac.uk
ontrack.ac.ukonlinm.ac.ukonlinesurveys.ac.ukonline.recoveryversion.orgsciencemuseum.ac.uksciencemuseumgroup.ac.ukonedrive.co.ukone.one.onesciencesigns.ac.uk
omsiirc.ac.uk
+omni.ac.uk
+omii.ac.ukomcrg.ac.ukscills.ac.ukscilly-acl.ac.ukscinet.ac.uk
+scip.ac.uk
+scir.ac.ukscisci.ac.ukomandrilling.ac.uk
scitech.ac.ukomaghcollege.ac.uksclondon.ac.ukomagh.ac.uk
oli.ac.uk
olf.ac.ukoldvic.ac.uk
+scoc.ac.ukscola.ac.uk
+olds.ac.uksconul.ac.uk
oldroyd.ac.ukscoopstudy.ac.uk
+scop.ac.ukscope-uk.ac.ukscopic.ac.ukoldham.ac.ukscore.ac.ukoldham-sfc.ac.uk
oldbury.ac.ukold.nabble.comold.honeynet.orgoikos.com.tw
+oibc.ac.uk
ohu.ac.ukogsa-dai.ac.uk
oge.ac.ukscot-hip.ac.ukscot-reman.ac.ukscot-ship.ac.uk
+scot.ac.ukscotcatproject.ac.ukscotchem.ac.uk
scotcit.ac.uk
scotcol.ac.ukscotdist.ac.uk
scotgem.ac.ukscotgrid.ac.ukscotland-aspirenorth.ac.ukscotland-northforum.ac.ukscotlandscolleges.ac.ukscotssyntaxatlas.ac.ukscottishborderscampus.ac.ukscottishciviljustice.ac.uk#scottishcollegegovernance.ac.ukscottishcorpus.ac.uk scottishdisabilityteam.ac.ukscottisheconomics.ac.ukscottishelections.ac.ukscottishinsight.ac.uk!scottishmarineinstitute.ac.ukscottishresearch.ac.ukscottishresearchpools.ac.uk&"scottishuniversitygovernance.ac.uk
ofs.ac.ukoffshorerenewables.ac.ukscphrp.ac.ukofficeforstudents.ac.uk
+scpr.ac.ukoerwales.ac.ukoercymru.ac.ukscrambledmessages.ac.ukscran.ac.uk
+scre.ac.ukscreenacademyscotland.ac.ukscreenfilmschool.ac.uk
+oeps.ac.ukscreenspace.ac.uk
+ocvc.ac.ukocnkm.ac.uk
+ocms.ac.uk
+scri.ac.ukochjs.ac.uk
+ocfe.ac.uk
scrolla.ac.ukoceanography.ac.uk
+scrr.ac.ukscrsj.ac.uk
occ.ac.uk)%scunthorpeinstituteoftechnology.ac.ukscurl.ac.uk
scutrea.ac.uk
+scva.ac.uk
+scvs.ac.uk
scweims.ac.uk
sda.ac.uk
sdc.ac.uk
oca.ac.uk
+sdeo.ac.uk
sdf.ac.uk
+sdhi.ac.uk
sdn.ac.uk
obs.ac.uk
+obhe.ac.uk
+sdos.ac.uk
+sdss.ac.uk
sdt.ac.ukse-derbys.ac.ukse-essex-college.ac.uk"sea-mammal-research-unit.ac.uk
seacams.ac.uk
obc.ac.ukseaha-cdt.ac.ukoatridge.ac.uk
+oasp.ac.ukoasiscollege.ac.ukoasis.ac.uksearch.ac.uksearch.aol.com
oas.ac.ukoakwoodcourt.ac.uksearch25.ac.ukoakley.ac.ukoaklands.ac.uk
+seas.ac.uk
oakhill.ac.ukoaa-anaes.ac.uksecom.co.jpo2action.co.krnzchinese.net.nz
nyu.ac.ukny.stgloballink.comsecretbabes.co.uk
nxtdig.com.tw
nxtdig.com.hk
nwy.ac.uknwworkbank.ac.uknwupc.ac.uknwueu.ac.uksecure.logmein.comsecure.raxcdn.comsecureharvests.ac.uk
+nwua.ac.uk
+nwtf.ac.uknwstudentandgraduate.ac.uk
nwssdtp.ac.uknwspm.ac.uk
+seda.ac.uk
+sedc.ac.uk
+sedg.ac.uknwslc.ac.uk
seecoll.ac.uknwsgc.ac.uk
+nwrc.ac.ukseedstor.ac.uknwmentoring.ac.ukseeingspeech.ac.uknwman.ac.uknwlcc.ac.uk
nwl.ac.uknwkent.ac.uknwkcollege.ac.ukseevic-college.ac.ukseevic.ac.uk
+nwkc.ac.uknwifhe.ac.uksefton-acl.ac.uksefton.ac.uk
nwi.ac.uk
+nwhc.ac.uknwdtc.ac.uk
+nwcs.ac.uknwcdtp.ac.ukseintiaucymru.ac.uk
+nwba.ac.uk
nw-grid.ac.uk
nvidia.com.ve
nvidia.com.uasekai.colorfulpalette.org
nvidia.com.tw
nvidia.com.tr
nvidia.com.plselby.ac.ukselcog.ac.ukseldensociety.ac.uk
nvidia.com.pe
nvidia.com.mx
nvidia.com.br
nvidia.com.aunvidia.co.uksellyoak.ac.ukselsey.ac.uksemanticaudio.ac.uknvidia.co.kr
+sena.co.krsenatehouselibrary.ac.uknvidia.co.jpnvidia.co.innvidia.co.at
nurture.ac.uknurse.ac.uksense-east.ac.uksensorcity.ac.uknurofen.com.sgnurofen.com.ausenss-dtp.ac.uk
nurofen.co.za
nurofen.co.uk
nurofen.co.nz
nurofen.co.ilsepnet.ac.uknuqmu-2kt.ac.uknupha.ac.uknulcollege.ac.uk
+nulc.ac.uknuclearuniversities.ac.uk
+sera.ac.uknucleartheory.ac.uk
+serc.ac.ukserena.ac.uknuclearcollege.ac.ukserio.ac.uk
+serl.ac.uknuclear2050.ac.uk
nuclear.ac.uknucfs.ac.uknuccat.ac.uknuccam.ac.uk
nucarts.ac.uk
+nuca.ac.uk
nuc.ac.uk
nua.ac.uknu-sense.ac.ukntyneside.ac.uk
ntu.ac.uk
ses.ac.uk1994group.ac.uk1degree.com.auntp2.wakwak.com1to1computing.com.au1to1conference.com.au1xbet.co.ke2023aga.oen.tw20thcenturystudios.com.au
+seti.ac.ukntp1.wakwak.comsetsquared.ac.uksettv.com.tw20thcenturystudios.com.br
+228.net.tw
+3aaa.ac.uk3d-fossils.ac.uk3sixty-ucc.ac.uk
+4gls.ac.uk
+ntp.ufe.cz56cun04.jigsy.com8news.com.tw9nation.com.auntp.ripe.net9news.com.auntp.nict.jp
+ntp.nic.cz9now.com.au
+ntp.nat.msa-tap.ac.ukntp.fiord.ru
a5.com.ruaaacymru.ac.ukaaschool.ac.uk
aau.ac.uk
ntnews.com.auntidagenham.ac.uk
+ntfs.ac.uk
+ntec.ac.ukntdtv.com.twntdtv.co.kr
+ntdc.ac.uk
ntc.ac.uk
ntb.ac.uk
nsw.ac.uk
nsu.ac.uk
nss.ac.uknspcr.ac.uk
nso.ac.uknsirc.ac.uknsfnet-relay.ac.uk
nsf.ac.uk
+nsea.ac.uk
+nscg.ac.uk
+nscd.ac.uknsccs.ac.uk
nsc.ac.uknsamr.ac.uknsals.ac.uk
+nsad.ac.uk
nrs.ac.uk
nrp.ac.uknrn-lcee.ac.uk
nrc.ac.uknptcgroup.ac.uk
sexfilm.al.ru
+nptc.ac.uk
+npsc.ac.uk
npm.ac.uknphcardiac-research.ac.uknpcrdc.ac.uk
npa.go.jp
nox.ac.uknowal.ac.uk
+now.com.hknovuscambria.ac.uknovus.ac.uk
novella.ac.uknottsmaternity.ac.uknottm-coll.ac.uknottinghamtrentadfs.ac.uknottinghamknowledge.ac.uk/+nottinghaminternationalbusinessschool.ac.uknottinghaminnovation.ac.uk,(nottinghamgraduateschoolofbusiness.ac.uknottinghameuniversity.ac.uknottinghamcourses.ac.uknottinghamcollege.ac.uk62nottinghamartsandhumanitiesresearchinstitute.ac.uknottingham.ac.uknottingham-trent.ac.uk
+nott.ac.uknotredamecoll.ac.uknorwichresearchpark.ac.uknorthumbria.ac.uknorthumberland.ac.uknorthumberland-acl.ac.uknorthtrafford.ac.uk northscotland-research.ac.uknorthlindsey.ac.uknorthland.ac.uknorthkent.ac.uknorthhighland.ac.uknorthgrid.ac.uknorthglasgowcollege.ac.uk"northernlogisticsacademy.ac.uknortherngrid.ac.uk#northernenterpriseschools.ac.uknorthernbridge.ac.uknorthernart.ac.uknorthern.ac.uknorthern-consortium.ac.uknortheastoutreachhub.ac.uknortheast.ac.uknorthderbycollege.ac.uknorthbrookcollege.ac.uknorthbrook.ac.uknorthbrook-online.ac.uknorthbham.ac.uknorthamptoncollege.ac.uknorthamptoncoll.ac.uknorthamptonapps.ac.uknorthampton.ac.uk north-trafford-college.ac.uknorth-london.ac.uknorth-gla.ac.uknortcoll.ac.uknormanmanagedservices.ac.uk
norland.ac.uknorfolkcove.ac.uknodes.ac.uk
+nocs.ac.uk
+nocn.ac.uk
noc.ac.uk
noa.ac.uk
+nnuf.ac.uknnotts-col.ac.uk
nnc.ac.uknmwcte.ac.uknmssc.ac.uk
+nmsi.ac.uk
nms.ac.uk
nmm.ac.uknmite.ac.uk
nmh.ac.uk
+nmgw.ac.uk
+nmgm.ac.uk
+nmap.ac.uknmahp.ac.uknmahp-ru.ac.uk
nls.ac.uk
+nlow.ac.uk
nln.ac.uknlincs-coll.ac.uk
+nlgs.ac.uk
nlc.ac.uk
nkw.ac.uknko.navy.mil
nkc.ac.uknjncscotlandscolleges.ac.uknitter.pussthecat.orgnismod.ac.ukniran.ac.uknintendo.com.ptnintendo.com.hknintendo.co.zanintendo.co.uknintendo.co.krnintendo.co.jpninemsn.com.auninemediaroom.com.aunineentertainmentco.com.aunineentertainment.com.au
ninedtp.ac.uknine.com.aunikkeibp.co.jpnikkei.co.jpnikkei-cnbc.co.jpnikestore.com.aunike.com.hknike.com.brniimle.ac.uk
nii.ac.jp
+nihr.ac.uknihcc.ac.uknightline.ac.uknight.livedoor.bizniesr.ac.ukniees.ac.uknicis.ac.uknicer.ac.uk
+nicd.ac.uknicats.ac.uksexysites.com.ph
nic.cz.ccnibsc.ac.uk
+nibs.ac.uk
nib.ac.ukniace.ac.uk
+niab.ac.uk
nhm.ac.uk
sfc.ac.uknhcscotland.ac.uksfefc.ac.uk
+sfeu.ac.uksfhub.ac.uk
nhc.ac.ukngwnet.ac.uk
ngs.ac.uk
+sfps.ac.uk
+sfra.ac.uk
sfs.ac.ukngflscotland.ac.uksfsstudents.ac.uk
+ngfl.ac.uk
ngc.ac.uk
sfx.ac.uk
nfo.ac.uk
+sfxc.ac.uk
+nfer.ac.uknfacstem.ac.uksgeulnagaidhlig.ac.uksghms.ac.uksgiliaith.ac.uk
sgm.ac.uk
+sgmc.ac.ukabank.com.mmnf.id.au
+sgpe.ac.uksgsah.ac.uksgscol.ac.uknextwork.com.twnextwork.com.hksgsss.ac.uk
+sgul.ac.uk
nexttv.com.twnextstepssw.ac.uknextplus.com.hknextmedia.com.twnextmag.com.twnextfilm.com.hknextdigital.com.twnextdigital.com.hknext11.co.jpnext-institute.ac.uknexoncdn.co.krnexon.co.jpshadowsocks.com.hknewvic.ac.uknewtonrigg.ac.uknewtonfund.ac.uknewton.ac.uknewtec.ac.uknewtaiwan.com.twnewsxtend.com.aunewsprinters.co.uknewsprestigenetwork.com.aunewslicensing.co.uknewsfilm.ac.uknewsconcierge.com.aunewscommercial.co.ukshare.america.gov
share.ovi.comabbeygatesfc.ac.uknewscdn.com.aunewscareers.co.ukshared-ed.ac.ukshared-es.ac.uksharedsolutions.ac.uksharegeo.ac.uknewsapi.com.aunewsadds.com.aunews100.com.twnews.singtao.ca#abbeygatesixthformcollege.ac.uksharingpractice.ac.uk
+abc.net.aunews.seehua.comnews.omy.sgnews.net.ausharpdaily.com.hk
abc.pp.runews.com.au
+news.co.uknewroutephd.ac.uk
newport.ac.uk
shc.ac.uknewphd.ac.uk
+shdf.ac.uksheef.ac.uknewman.ac.uk
+shef.ac.ukshefc.ac.uksheffcol.ac.uksheffield-hallam.ac.uksheffield-lls.ac.uksheffield.ac.uksheffield2.ac.uksheffieldcareersfairs.ac.uksheffieldcetle.ac.uksheffieldlegalfair.ac.uksheffieldrobotics.ac.uknewlandmagazine.com.au
+newi.ac.uknewhamcfe.ac.uknewham.ac.uksheilingcollege.ac.uknewham-vic.ac.uknewdur.ac.uknewdirectionsreading.ac.uknewcollpont.ac.uknewcollegetelford.ac.uknewcollegeglasgow.ac.uknewcollegedurham.ac.uknewcollege.ac.uk
newceys.ac.uk#newcastlesixthformcollege.ac.uknewcastlesfc.ac.uknewcastlenewslocal.com.aunewcastlecollege.ac.uknewcastlecitylearning.ac.uknewcastle.ac.uknewcastle-college.ac.uknewcampusglasgow.ac.uknewcampusbasildon.ac.uknewbury-college.ac.ukshenasimon.ac.uk
newbold.ac.uknewbattleabbeycollege.ac.uknewbasildon.ac.uknewark.ac.uknew-coll-cf.ac.uknew-campus-basildon.ac.ukneurohub.ac.ukneurogrid.ac.ukneupc.ac.uksheppeycollege.ac.uknetzwerkdeutsch.ac.uk
netwise.ac.uknetskills.ac.uksherif.ac.uksherpa-leap.ac.uksherpa.ac.uknetscc.ac.uknetname.com.brnetlab.ac.uk
+nest.ac.uknesli2.ac.uknesli.ac.uk
+nesi.ac.uknescot.ac.uknescol.ac.uknesci.ac.uk
+nesc.ac.uk
shiplay.ac.uk
shipley.ac.ukneresc.ac.uknercgw4plus.ac.uk
+nerc.ac.uknerc-wytham.ac.uknerc-wallingford.ac.uknerc-swindon.ac.uknerc-southampton.ac.uknerc-solardome.ac.uknerc-smru.ac.uknerc-pml.ac.uknerc-oxford.ac.uknerc-oban.ac.uknerc-murchison.ac.uknerc-mst-radar.ac.uknerc-loanhead.ac.uknerc-liv.ac.ukshootershill.ac.uknerc-lerwick.ac.uknerc-lancaster.ac.ukshop2000.com.twnerc-keyworth.ac.uknerc-hartland.ac.uknerc-gilmerton.ac.uknerc-essc.ac.uknerc-eskdalemuir.ac.uknerc-east-kilbride.ac.uknerc-dorset.ac.uknerc-cdt-oil-and-gas.ac.uknerc-cardiff.ac.ukshopee.co.idshopee.co.thnerc-bush.ac.uk
shopee.com.br
shopee.com.co
shopee.com.mx
shopee.com.mynerc-belfast.ac.uknerc-bas.ac.uknerc-bangor.ac.uknerc-arsf.ac.uknerap.ac.ukneotokyo.supertop-100.comneonatalsociety.ac.uk
neodaas.ac.uk
+nene.ac.uknemode.ac.uknemesis2.qx.netnemcon.ac.uknelsongroup.ac.uknelsoncollege.ac.uknelson.ac.uknelcls.ac.uknekora.main.jp
nek.ac.ukneipdg.ac.uk
nei.ac.uknedtc.ac.uknedial.ac.uknectar.ac.uknecah.ac.uk
nec.ac.uknec-arundel.ac.ukneath.ac.ukneaco.ac.uk
+neab.ac.ukne-worcscol.ac.ukne-worcs.ac.uk
+ndtc.ac.ukndonline.ac.uk
+ndff.ac.uk
+ndai.ac.uk
nda.ac.uk
+ncuk.ac.uk
+ncti.ac.uk
nct.ac.uk
+ncse.ac.ukshowbiz.omy.sg
ncs.ac.uk
+ncrm.ac.ukncrcl.ac.ukncpontefract.ac.uk
ncn.ac.uk
+nclt.ac.uk
+ncls.ac.uknclanarkshire.ac.uknclan.ac.uk
+ncl.edu.twshrewsbury.ac.uk
ncl.ac.ukncl-u-lyme.ac.uk
shu.ac.ukncl-lyme.ac.ukncl-coll.ac.uknciul.ac.ukshuttleworth.ac.ukshuttleworthcollege.ac.uknchsr.ac.uk
+nchp.ac.uknchlondon.ac.uk
+nch.com.twncgrp.ac.uk
+ncgc.ac.uk
ncg.ac.uk
+ncfn.ac.uksicsa.ac.ukncess.ac.uk
+side.ac.uk
+nceo.ac.ukncdoncaster.ac.uk
sie.ac.uknccwatch.org.twncclondon.ac.uk
+sifa.ac.ukncccs.ac.uksigma-cetl.ac.uksigma-network.ac.uk
+nccc.ac.uk
+sign.ac.uknccadultlearning.ac.uk
ncc.ac.ukncbradford.ac.uk
ncb.ac.ukncaveo.ac.ukncati.ac.uk
+ncas.ac.uk
+sihe.ac.uk
nca.ac.uk
+nc4m.ac.uksikh-uni.ac.uknc3rs.ac.uk
nbu.ac.uk
nbs.ac.uknbria.ac.uk
+nbpa.ac.uk
simbios.ac.uknbolton-sfc.ac.uk
nbi.ac.uk
nbe.ac.uknbcol.ac.uknazarene.ac.uksimian.ac.uknavyreserve.navy.milnavyfamily.navy.milnature.ac.uknaturalhistorymuseum.ac.uk
natstar.ac.uknatsal.ac.uknatmatsci.ac.uknativeincolour.com.au#nationaltechnicianscentre.ac.uknationalskillsacademy.ac.uk'#nationalnetworkfortranslation.ac.uk($nationalnetworkforinterpreting.ac.uk
sinapse.ac.uksinchew.com.my#nationalcollegefornuclear.ac.uksinet.ac.uk)%nationalcollegeforhighspeedrail.ac.uk;7nationalcollegeforadvancedtransportinfrastructure.ac.uksingaporepools.com.sg&"nationalandacademiclibraries.ac.uk#nationalacademiclibraries.ac.uknational-lottery.co.uk#national-learning-network.ac.uk'#national-confidential-inquiry.ac.uksingpao.com.hknational-army-museum.ac.uknatgeokidsbooks.co.uknatdisteam.ac.uknatcor.ac.uknatcen.ac.uk
+nash.ac.uksinica.ac.uk
sino-cs.ac.uknarumiya.xii.jpnarti.ac.uk
+narf.ac.uknapier.ac.uknapier-cloud.ac.uknanocmos.ac.uknamss.ac.uk
nam.ac.uk
+naln.ac.uknakedsecurity.sophos.comsinto.ac.uk
sip.ac.uksipher.ac.uknahste.ac.uknagty.ac.uk
+sipr.ac.uk
+nafc.ac.uksircharleslyellcentre.ac.uk
+sire.ac.uk
+naea.ac.uk
+nado.ac.uksirius.ac.uk
+sirm.ac.uknactem.ac.uknacstock.ac.uknacro.ac.uknabtravellercard.com.au
+nab.com.ausiser.ac.ukna-toronto.myqcloud.com!na-siliconvalley.myqcloud.com!na-mexico-1.myhuaweicloud.comsissc.ac.ukna-me.ac.ukna-ashburn.myqcloud.comn8agrifood.ac.ukmywnsc.ac.ukmyvodafone.com.wsmyvodafone.com.aumytimesplus.co.ukabcol.ac.uksiteks.uk.tomyscience.ac.ukmyradio.com.hkmyport.ac.uk
myplace.ac.ukmypearsonshop.com.mx
+siti.ac.ukmynescol.ac.uk
+siva.ac.ukmymusic.net.twmylcb.ac.ukmylabnotebook.ac.ukmyforum.com.ukmyforum.com.hk
sjd.ac.ukmyerscough.ac.uk
sjr.ac.ukmyeplg.ac.uk
myclyde.ac.ukmycib.ac.ukskegnesstec.ac.ukskelmersdale.ac.uk
mycandi.ac.ukmycalderdale.ac.ukmyav.com.tw
my.pcloud.commy-private-network.co.ukskillsbridge.ac.uk skillscompetitionwales.ac.ukskillsgroupuk.ac.uk&"my-kualalumpur-1.myhuaweicloud.comskillswestyorks.ac.uk
mx.hao123.com
+mwrc.ac.ukmwell.ac.ukmuther.ac.ukmuslimcollege.ac.ukmusiconline.ac.uk
musiche.ac.ukmusicandphilosophy.ac.ukmusic-research.ac.ukskyking.com.twmuseumwales.ac.ukmuseumofwriting.ac.uk
+murg.ac.ukmundus.ac.ukmundomais.com.brmuji.com.hk
+mucm.ac.uk
mucinex.co.nzmuarc.ac.uk
mti.ac.ukskyperfectv.co.jp
+mtec.ac.ukskyrmions.ac.uk
+mssn.ac.ukmsportknowledge.ac.uk
msp.ac.uk
+msec.ac.ukmscos.ac.ukmscassessment.ac.uk
msa.ac.uk
mri.ac.uk
+mrcp.ac.ukmrcollege.ac.ukmrcieu.ac.uk
mrc.ac.ukmr-apple.com.tw
mpw.ac.uk
+mpsi.ac.ukmpese.ac.ukmpags.ac.ukmpa-uk.ac.uk
mpa-mpp.ac.ukmovingmedicine.ac.ukmovinghistory.ac.ukmoveonmoveup.ac.uk
slc.ac.ukslcollege.ac.uk
+slcs.ac.uk
+sldo.ac.uk
+move.ac.uksleaford.ac.ukmountcollyer.ac.uk
moulton.ac.uk%!sleepandwakefulnessresearch.ac.uk
slg.ac.ukmotherwell.ac.uksli-institute.ac.ukmortein.com.pkmortein.com.ngmortein.com.brmortein.com.au
mortein.co.za
mortein.co.nz
mortein.co.inmorleycollegelondon.ac.uksloan.ac.ukmorleycollege.ac.ukmorley.ac.uk
+slsa.ac.uk
+slss.ac.uk
slt-cdt.ac.ukmorisawa.co.jpmorgannwg.ac.uk
moredun.ac.ukmoray.ac.ukmoorlands.ac.ukmoodleshare-hw.ac.ukmonogram.ac.ukmonkwear.ac.uk
sma.ac.uksmall-angle.ac.ukmonitoring.qpdp1.netmonitoring.qcpp1.netsmart.ac.ukmonitoring.qatp1.netmoney-link.com.twmonash.ac.ukmomoshop.com.twmomomall.com.twmomami18.livedoor.blogsmartline.com.au
mollnet.ac.uk
+mole.ac.uk
mol.ac.ukmoidigital.ac.uksmartonesolutions.com.hkmodmedmicro.ac.ukmodip.ac.uksmbgroup.ac.uk
smc.ac.uk
+smca.ac.uksmcblackburn.ac.ukmodelsofauthority.ac.uk
+smcl.ac.uksmedevelopmentbank.com.mm
smg.ac.uk
+smh.com.aumobilitymoodplace.ac.uk
smi.ac.ukmobilecumbria.ac.uksmithinst.ac.uk
sml.ac.ukmo.nightlife141.commndregister.ac.uk
mnc.ac.ukmmubs.ac.uk
+smru.ac.uk
+smsj.ac.uksmstc.ac.uk
smu.ac.uk
+smuc.ac.uksmucb.ac.uk
+smul.ac.uk
mmu.ac.ukmmmhub.ac.ukmminsurance.gov.mmmmftb.gov.mm
mmf.ac.ukmmbbank.com.mmmluri.ac.uk
+mlab.ac.ukmkncc.ac.ukmkcollege.ac.ukabcolstudents.ac.ukmitao.com.tw
+mist.ac.ukmissendenabbey.ac.ukmisoc.ac.ukmirrormedia.com.twmirror.ac.ukmirandanet.ac.ukminstercentre.ac.ukminisolife.co.za
snc.ac.uk
miniso.com.tr
miniso.com.py
miniso.com.pl
miniso.com.mx
miniso.com.gr
miniso.com.esminiso.co.tzminiso.co.idminim.ac.ukmini.com.uy
+snug.ac.ukso-net.ne.jp
so-net.net.tw
+soas.ac.ukmini.com.twmini.com.tr
soc.ac.ukmini.com.sgmini.com.pymini.com.pl
socbcdt.ac.uksoccerfanz.com.mymini.com.phmini.com.pemini.com.pamini.com.mxmini.com.mtmini.com.momini.com.mkmini.com.hrsocialpolicy.ac.uksocialsciences.ac.ukmini.com.gtsocietycentral.ac.uk&"societyofjewelleryhistorians.ac.uk societyoflegalscholars.ac.ukmini.com.grmini.com.ecmini.com.domini.com.cymini.com.cosocres.ac.uksocsciscotland.ac.uk
sod.co.jp
soficdt.ac.ukmini.com.brmini.com.bnmini.com.ar
+mini.co.za
+mini.co.uk
+mini.co.th
+mini.co.me
+mini.co.kr
+mini.co.il
+mini.co.id
+mini.co.crmini-connected.co.ukminhajcollege.ac.uk
minghui.or.kr
minerva.ac.ukmineofinfo.ac.ukmimas.ac.ukmillionplus.ac.uksofteng-support.ac.uk
+mike.cz.ccsoftether.co.jp
+mihe.ac.ukmidrib.ac.uksoftmattercdt.ac.uk
midplus.ac.uk!midlandsphysicsalliance.ac.uk"midlandsenergyconsortium.ac.uksoftware.ac.ukmidlands4cities.ac.uk softwaredownload.gitbooks.iosoftwareoutlook.ac.ukmidlands3cities.ac.uk
midkent.ac.ukmidhurst.ac.uk
midfife.ac.ukmiddlesex.ac.uk
soillse.ac.ukmiddlesbro.ac.ukmidchesh.ac.ukmicrosoftstore.com.hkmicrosimulation.ac.ukmicronanoflows.ac.uksolarsystem.nasa.govsolent-university.ac.uksolent.ac.uksolentmarineacademy.ac.uksolentuniversity.ac.ukmicron.ac.ukmicrogravity.ac.uksolihull.ac.uksolihullsfc.ac.ukmicrobusiness.ac.uksolsfc.ac.uk"solutions-worcestershire.ac.ukmicb.gov.mm
mic.ac.uk
mib.ac.uksomerset.ac.uksomersetcolleges.ac.uk
+mi9.com.au
mhs.ac.ukmhs-relay.ac.uk
+mhrn.ac.uk
+mhie.ac.ukmhdss.ac.ukmgsdtp.ac.uk
mfo.ac.uksony-hes.co.jp
meu.ac.ukmetroradio.com.hkmetrohk.com.hkmetro.co.uksony-semicon.co.jpmethodsnorthwest.ac.ukmethodsnetwork.ac.uk
methnet.ac.ukmetfilmschool.ac.uk
metfilm.ac.uk
meteorr.ac.ukmetcaerdydd.ac.ukmetanoia.ac.uk
metadac.ac.uk
+sony.co.cr
+sony.co.id
+sony.co.in
+sony.co.jp
+sony.co.kr
+sony.co.nz
+sony.co.th
+sony.co.ukmetabolomics.ac.uksony.com.arsony.com.ausony.com.bosony.com.brsony.com.cosony.com.dosony.com.ecsony.com.gtsony.com.hksony.com.hnsony.com.mksony.com.mxsony.com.mysony.com.nisony.com.pasony.com.pesony.com.phsony.com.sgsony.com.svsony.com.trsony.com.twsony.com.vnmertonadulteducation.ac.ukmerton.ac.uk merton-adult-education.ac.ukmerton-acl.ac.uk
merthyr.ac.ukmerseyandwestlancslln.ac.ukmerristwood.ac.ukmerops.ac.ukmerlin.ac.ukmerit-times.com.tw
+merc.ac.ukmeplg.ac.ukmendel.ac.ukmenai.ac.ukmelonbooks.co.jpmeirion-dwyfor.ac.ukmeguk.ac.ukmegaporno.com.br
megamon.co.kr
+mega.co.nzmedwayacl.ac.ukmedway.ac.ukmedschools.ac.ukmedipathways.ac.ukmedievalswansea.ac.ukmedievalfrancophone.ac.ukmedievalchester.ac.ukmedicine.ac.ukmedian.ac.uksonybo.co.jpmediahub.ac.ukmedia.org.hkmedia.nu.nl
medhist.ac.ukmedev.ac.ukmede-innovation.ac.ukmeddyliwchamgymru.ac.uk
+meb.gov.mmmeadjohnson.com.twsonynetwork.co.jpmeadjohnson.com.hk abdn-access-biomedical.ac.ukme-east-1.myhuaweicloud.com
mdx.ac.ukmdn.mozit.cloudmdn.allizom.netmctimoney-college.ac.uksonyprotechnosupport.co.jpsonystoragemedia.co.jpsonytc.co.jp
+mcsw.ac.uk
+mcls.ac.ukmcdonaldsparties.co.nzmcdonalds.com.twmcdonalds.com.phmcdonalds.com.mymcdonalds.com.lbmcdonalds.com.hkmcdonalds.com.aumcdonalds.co.ukmcdonalds.co.nzmcdonalds.co.krmcdonalds.co.jpmcdonalds.co.idsothebys-institute.ac.uksoton.ac.uk
+sots.ac.ukmcdelivery.com.twmcdelivery.com.sgmcdelivery.com.phmcdelivery.com.mymcdelivery.com.ausound-heritage.ac.ukmcdelivery.co.krmcdelivery.co.inmcdelivery.co.idmcd-holdings.co.jpsoundsoftware.ac.uksoundwell.ac.uk
mcc.ac.uk
+mcb.com.mmsource.ac.uk
mca.ac.uk
mc6.ac.uk
mbs.ac.ukmbs-worldwide.ac.uk
+mbro.ac.uk
mbn.ac.uk#south-lanarkshire-college.ac.uk
mbc.ac.uk
mba.ac.uksouth-thames.ac.uksouthampton-city.ac.uksouthampton-institute.ac.uk'#southampton-solent-university.ac.uksouthampton.ac.uksouthamptonalumni.ac.uksouthamptonbusiness.ac.uk%!southamptonsolentuniversity.ac.uksouthbank-university.ac.uksouthcheshirecollege.ac.uksouthcoastdtp.ac.uksouthcoll-bolton.ac.uksouthdevon.ac.uksouthdowns.ac.uksoutheastdtc.ac.uksoutheastessex.ac.uksouthend-acl-college.ac.uksouthend-adult.ac.uksouthend.ac.uksouthendcollege.ac.uksouthessex.ac.uksouthessexcollege.ac.uk
maxwell.ac.uksouthgate.ac.uksouthgrid.ac.uksouthkent.ac.uksouthnews.com.twsouthpark.cc.comsouthport-college.ac.uksouthport.ac.uksouthsefton6thform.ac.uk#southsefton6thformcollege.ac.uksouthseftoncollege.ac.uksouthstaffs.ac.uksouthwales.ac.uksouthwark.ac.uksouthwestcollege.ac.uksouthwestiot.ac.uksouthwestnuclearhub.ac.ukmaximize.ac.uk
sowers.org.hk
mau.ac.uk
+matu.ac.ukmattu.ac.uk
spa.ac.ukmatthew-boulton.ac.ukspacely.com.aumatrix.ac.ukspaces.hightail.commathtutor.ac.uk"spaceuniversitiesnetwork.ac.ukspaceweather.ac.ukmathsvideoclubs.ac.ukmathstore.ac.ukspalding.ac.uk
+span.ac.ukmathscentre.ac.ukmaths-magic.ac.ukmathgate.ac.uk
mathfit.ac.ukmathematics.ac.ukmathcentre.ac.ukmaterialsnexus.ac.ukmaterials.ac.ukmatch.ac.ukmasts.ac.uksparc.ac.uksparqs.ac.uksparsholt.ac.uksparsholtcollegegroup.ac.uk"sparsholtcollegeservices.ac.uksparsholtservices.ac.ukspatialeconomics.ac.ukmastersprojects.ac.uk
spc.ac.ukmastercard.com.vnspcollege.ac.ukmastercard.com.vemastercard.com.twmastercard.com.trmastercard.com.sgspectrum.ac.ukspecxinzl.jigsy.commastercard.com.samastercard.com.phmastercard.com.pemastercard.com.ngspeedproject.ac.ukmastercard.com.mymastercard.com.mxspeedtest.com.hkmastercard.com.lbmastercard.com.kwspelthorne.ac.ukmastercard.com.hkmastercard.com.gtmastercard.com.gemastercard.com.egspero.ac.ukmastercard.com.cyspice.ac.ukmastercard.com.comastercard.com.bzmastercard.com.brmastercard.com.bhmastercard.com.auspider.ac.ukmastercard.com.armastercard.co.zamastercard.co.vespinesurgeons.ac.ukmastercard.co.ukmastercard.co.thspiritstudios.ac.ukspitfire.ac.ukmastercard.co.nzmastercard.co.krsplint-cetl.ac.ukspokenword.ac.uksponichi.co.jpmastercard.co.kemastercard.co.jpmastercard.co.insportswomanoftheyear.co.uksportswomenoftheyear.co.ukmastercard.co.ilmastercard.co.idmasc25.ac.ukmarywardcentre.ac.ukmaryward.ac.ukmaryvale.ac.ukmarplecollege.ac.ukmarlin.ac.ukmarlab.ac.uk
marketo.co.ukmarjon.ac.uk
spr.ac.ukmarinecentrewales.ac.ukmarianstudies.ac.uk
maremap.ac.uk
+sprg.ac.ukmarchmont.ac.ukmarble.ac.ukmappingwelshmarches.ac.ukmappingwales.ac.ukmappingtheunderworld.ac.uk#mappingthemedievalmargins.ac.uk
+mapp.ac.uksprint.ac.ukmaoeraobjects.ac.ukmanufacturingedc.ac.uk
mantais.ac.ukspsrn.ac.ukmanlitphil.ac.ukspurgeons.ac.uk&"manchesterschoolofpsychology.ac.uksqhwesternconsortium.ac.uk$ manchesterschoolofpharmacy.ac.uk95manchesterschoolofnursingmidwiferyandsocialwork.ac.uk#manchesterschoolofnursing.ac.uk$ manchesterschoolofmedicine.ac.uk%!manchesterschoolofdentistry.ac.uk$ manchesterpsychologyschool.ac.uksquarefoot.com.hk"manchesterpharmacyschool.ac.uk!manchesternursingschool.ac.uk73manchesternursingmidwiferyandsocialworkschool.ac.ukmanchesternti.ac.ukmanchestermethod.ac.uk!manchestermedicalschool.ac.ukmanchesterjmce.ac.uk
src.ac.uk
srcf.ucam.org manchesterdentalschool.ac.uk
srf.ac.uk
+srhe.ac.uk
+srip.ac.uk
+sroc.ac.uk"manchesterbusinessschool.ac.uk
+srpe.ac.uk
srs.ac.ukmanchester.ac.ukmanchester-worldwide.ac.uk
+sruc.ac.uk,(manchester-metropolitan-university.ac.ukss.carryzhou.comss.levyhsu.comss.pythonic.life%!manchester-computing-centre.ac.ukmanchester-city-coll.ac.uk$ manchester-business-school.ac.ukssees.ac.uk
+ssfc.ac.ukmancat.ac.uk&"managementcontrolassociation.ac.ukmanagedpki.ne.jp
+sshm.ac.uk
man.ac.uk
malvern.ac.ukmakzhou.warehouse333.com makingthemostofmasters.ac.ukmakingassessmentcount.ac.ukmailtalk.ac.ukssl.webpack.demailonsunday.co.ukmailonline.co.uk
+ssmh.ac.ukmahsc.ac.uk
+sspc.ac.uk
+sspf.ac.ukssphr.ac.ukmagnacartacollege.ac.ukmaglue.ac.ukmagic.ac.ukmageconf.com.uaabdn-online.ac.uk
+maes.ac.ukmacts.com.twsssfc.ac.ukmacos.com.aumackworth.ac.ukmackworth-college.ac.ukmachosaonatural.com.brmacclesfield.ac.ukmacclesfield-college.ac.ukmacbookpro.com.aumacbookair.com.esmacbookair.com.au
ssu.ac.ukmacbookair.co.ukst-and.ac.ukst-andrews.ac.ukst-austell.ac.ukst-davids-coll.ac.uk
st-ives.ac.ukst-patricks.ac.ukmacbookair.co.kr
+stac.ac.ukmacaulay.ac.uk
+mac.com.aumac-migs.ac.ukmablethorpe.ac.uk
ma.hao123.comm5universities.ac.ukm5servicedesk.ac.ukm25lib.ac.ukm.slandr.netm.plixi.comm-rhex.ac.uklz.ac.uklythamsixth.ac.uklysol.com.mxlysol.co.crlyellcentre.ac.uklww-cetl.ac.ukstafford.ac.ukstaffordcoll.ac.ukstaffordshire.ac.ukstaffs.ac.uk
+lwms.ac.uk
+stak.ac.ukstamford.ac.ukstamfordparktrust.ac.uk
lvv.ac.uklutonsfc.ac.uklutonacl.ac.uk
gresham.ac.ukstanmore.ac.uk stanstedairportcollege.ac.ukluton-acl.ac.uk
lut.ac.uk
+star.ac.uk
+lupc.ac.ukluminategroup.ac.uk luminateeducationgroup.ac.ukluminateeducation.ac.ukluminate.ac.uk
+luil.ac.ukluftoncollege.ac.ukstarbucks.co.idstarbucks.co.jpstarbucks.co.nzstarbucks.co.thstarbucks.co.ukstarbucks.co.zalufton-college-fe.ac.ukstarbucks.com.arstarbucks.com.bnstarbucks.com.costarbucks.com.cystarbucks.com.grstarbucks.com.hkstarbucks.com.khstarbucks.com.kzstarbucks.com.mxstarbucks.com.mystarbucks.com.pestarbucks.com.sgstarbucks.com.trstarbucks.com.uyludlow-college.ac.uklucid.ac.uk
lucbjtu.ac.ukltsports.com.tw
ltsneng.ac.uk
+ltsn.ac.uk
ltsn-01.ac.ukltscotland.ac.uk
+ltn.com.twltegroup.ac.uk
+ltea.ac.uk
+ltcc.ac.uklstonline.ac.uklstmliverpool.ac.uklstmed.ac.uk
lst.ac.uk
+lsst.ac.uklsrnw.ac.uk
+lsrc.ac.uk
lso.ac.uk
+lsme.ac.uk
+lsjs.ac.uklshtm.ac.uklsgnt-cdt.ac.uk
+lsfc.ac.uklsestaff.ac.uklsejournals.ac.uklsecollaborators.ac.uk
+lsec.ac.uklseapplicants.ac.uk
lse.ac.uklse-students.ac.uklse-sport.ac.uklse-residences.ac.uklse-research.ac.uklse-nursery.ac.uklse-marketing.ac.uklse-global.ac.uklse-events.ac.uklse-departments.ac.uk
+lsd.org.hk
+lscs.ac.ukstarlink.ac.uklscollege.ac.uk
+lsbu.ac.uk
+lsbm.ac.ukstars.ac.uk
lsa.ac.ukls-uc.ac.uklpmde.ac.uk
lpc.ac.uk#lowestoftsixthformcollege.ac.uklowestoftsfc.ac.uklowestoft.ac.ukloveminiso.com.brlove-sextoys.co.ukloughborough.ac.uk
loucoll.ac.uk
lou.ac.uklotuslight.org.twlotuslight.org.hklothiancolleges.ac.ukloreto.ac.uklonmt.ac.uklonmetro.ac.uklonmet.ac.uk
lonklab.ac.uklongroad.ac.uk%!longleyparksixthformcollege.ac.ukstatic.comico.twlongleyparksfc.ac.ukstatic9.net.aulongleyparkcollege.ac.ukstatistics.ac.uklongleypark.ac.ukstatstutor.ac.uklongley-parksfc.ac.uklongley-park.ac.ukstaugustinescollege.ac.uklongeaton.ac.uklondonstudiocentre.ac.uk
+stbr.ac.ukstbrendans.ac.ukstbrn.ac.uklondonstudiocenter.ac.uk
stc.ac.uk
+stc.com.sa
+stcg.ac.uk
stchads.ac.ukstcharles-mail.ac.ukstcharles.ac.ukstclares.ac.ukstcoll.ac.uklondonscreenacademy.ac.uk londonschooloftheology.ac.ukstdavidscollege.ac.ukstdavidsdaygroup.ac.ukstdoms.ac.uklondonreach.ac.uklondonp4p.ac.uk
+abdn.ac.uk
abematv.co.jp
+aber.ac.ukaberbangorpartnership.ac.uk%!aberbangorstrategicalliance.ac.ukaberdare.ac.ukaberdeen-isc.ac.ukaberdeen.ac.uklondonmetuniversity.ac.uk&"londonmetropolitanuniversity.ac.uklondonmetropolitan.ac.uklondonmetro.ac.uklondonmet.ac.uksteamhouse.ac.uklondonmedicine.ac.uklondonlinks.ac.uklondonknowledgelab.ac.uklondoninternational.ac.uklondonhigher.ac.uklondonfilmacademy.ac.uklondonexternal.ac.uk
+stec.ac.uklondoneastcove.ac.uklondondeanery.ac.uk londonchurchillcollege.ac.uklondoncentre-hstm.ac.uklondoncbs.ac.uklondonbusinessschool.ac.uk
+stem.ac.ukstemacademy.ac.ukstemequals.ac.uklondonbiblecollege.ac.uklondon.ac.uklondon-pgmde.ac.uklondon-guildhall.ac.ukstephenson.ac.ukstephensoncoll.ac.uklondon-fashion.ac.uklondon-college.ac.uk
lon.ac.uksterling.ac.ukstets.ac.uk
+stfc.ac.ukstgeorges.ac.uksth-leic-coll.ac.uk
lolshop.co.krsthelens.ac.uksthelensacl.ac.uk
+lolo.ac.uklojaiphone.com.brlogosfilm.co.krlogos.com.hklogicool.co.jplogic.ac.uklockssalliance.ac.uklocate.ac.uk
+stir.ac.ukstirling.ac.ukstjohns-nottm.ac.uk
+lnat.ac.uk
stloyes.ac.uk
stlukes.ac.ukstmartins.ac.ukstmarys-belfast.ac.ukstmarys-blackburn.ac.ukstmarys-sfc.ac.uk
stmarys.ac.ukstmarysblackburn.ac.ukstmaryslondon.ac.ukstmellitus.ac.ukstmellituscollege.ac.ukstmichaels.ac.uk
lmu.ac.uk
lms.ac.ukstockbill.ac.uklmi4he.ac.uk
lmd.ac.ukstockport.ac.ukstockton.ac.uk*&stocktonlearningandskillsservice.ac.ukstocktonsfc.ac.ukstocsf.ac.ukstokecoll.ac.ukstokecollege.ac.ukstokesfc.ac.ukstomp.ac.uk
lmc.ac.uklmbru.ac.ukstonyhurst.ac.uk
lma.ac.ukllysfasi.ac.uk
+llas.ac.ukstorcuram.ac.ukllandrillo.ac.uk
llambed.ac.ukstoriesofchange.ac.ukllakes.ac.uk
lkl.ac.uk
+ljmu.ac.uklizol.co.inlivrariart.com.brlivjm.ac.ukstourbridge.ac.uk
+stow.ac.uklivingwithmachines.ac.ukstpadarns.ac.uklivinglegacies1914-18.ac.uklivinglaboratory.ac.uklivinglab.ac.ukstran.ac.uklivingdigital.ac.uk
livhope.ac.ukstrat-avon.ac.ukstratavoncol.ac.ukstratford.ac.uk)%stratfordislanduniversitycentre.ac.uk#stratforduniversitycentre.ac.ukstratgroup.ac.ukstrath.ac.ukstrathclyde.ac.ukstrathmore.ac.uklivewell.ac.uklivesandletters.ac.ukliverpoolsas.ac.ukliverpool.ac.uk
livenet.ac.uklive.com.au
+live.ac.uk
liv.ac.ukliv-e.ac.ukliv-coll.ac.uklittlehampton.ac.uk
+litt.ac.uklisterpostgraduate.ac.uklisten-up.ac.ukstrepsils.co.krstrepsils.co.nzstrepsils.co.zastrepsils.com.arstrepsils.com.austrepsils.com.brstrepsils.com.costrepsils.com.hkstrepsils.com.phstrepsils.com.twlistar.ac.ukliss-dtp.ac.ukliscol.ac.uklipsit.ac.uklipidomics.ac.ukliparm.ac.uk
+lipa.ac.uklionhearts.co.krlinux.org.hklinst.ac.uklinksintolanguages.ac.uklinkinglondon.ac.uklinkagecollege.ac.uk
linkage.ac.ukstreva.ac.uklink2learn-ni.ac.uklink19college.ac.uklinguistics.ac.uklinefriends.com.tw
lincsit.ac.uklincsiot.ac.ukstripe.ac.uk+'lincolnshireinstituteoftechnology.ac.uklincolnmedicalschool.ac.uk&"lincolninstituteoftechnology.ac.uklincolninstitute.ac.uklincolncollege.ac.uk
lincoln.ac.ukstrode-coll.ac.ukstrode-college.ac.uk
strodes.ac.ukstrodeslanguages.ac.uk
+lims.ac.uk
+lime.ac.ukstroud.ac.ukstroudcol.ac.ukstroudcollege.ac.uk
+sttc.ac.uklimavady.ac.ukstudentengagement.ac.uk
+lihe.ac.ukstudentshows.ac.uk!studentvoteregistration.ac.uk"studentvoterregistration.ac.uk!lighthouselearningtrust.ac.uklighten.org.tw
liftapp.ac.uklifestudy.ac.uklifesign.ac.uklifelonglearning.ac.uk
lifelab.ac.ukstudygroup.ac.ukstudyhigher.ac.ukstudyinengland.ac.ukstudyingeconomics.ac.ukstudyinglanguages.ac.ukstudyinwales.ac.ukstudylondon.ac.uklifeatkings.ac.uk
lifearc.ac.ukstudywithplymouth.ac.uk
+life.ac.uklido-dtp.ac.uk
+stuk.ac.uk
+lidc.ac.uklichfield.ac.ukaberdeenenergy.ac.uk
+libf.ac.ukstvincent.ac.uklibertytimes.com.twliberal.org.hk
+lhec.ac.uk
+lhcb.ac.uk
lhc.ac.uksubacme.rerouted.org
lgu.ac.uk
lge.co.krlgbtnonhe.ac.uk
+lfhe.ac.uk
lfa.ac.ukleyton.ac.uksuburbansolutions.ac.uksucceeds.ac.uk"lewishamsouthwarkcollege.ac.uklewisham.ac.uk
suche.gmx.netlewestraining.ac.uksuffolk-maag.ac.uk
suffolk.ac.uksuffolkacademiestrust.ac.uksuffolkbusinessschool.ac.uksuffolkone.ac.uklewcol.ac.ukleverhulme.ac.uklettol.ac.ukletbsharedservice.ac.uklesoco.ac.uk
lersnet.ac.uk
+sulc.ac.ukleos-scot.ac.uksulne.ac.uksulsa.ac.uk
+leis.ac.uksumac.ac.ukleighcollege.ac.ukleics-als.ac.ukleicp.ac.uk
+sums.ac.uksumsconsulting.ac.ukleicestermuseums.ac.ukleicesterlearns.ac.uksunbingo.co.uksuncat.ac.uksuncol.ac.uk
+sund.ac.ukleicestercollege.ac.ukleicester.ac.ukleicester-poly.ac.uksunderland.ac.uksunderlandcollege.ac.uksunderlandsixthform.ac.uk
leggott.ac.uk
sunitec.ac.uklegaltech.law.comlegalscholars.ac.uklegacy.ac.uksunta.com.tw
+leek.ac.uksunwinism.joinbbs.netleedstrinity.ac.uk
+supa.ac.uksupadou.blogism.jpleedsthomasdanby.ac.uk
+supc.ac.ukleedssixthform.ac.ukleedsmetropolitan.ac.ukleedsmetcarnegie.ac.uksupercoach.com.ausupercomputingwales.ac.uksuperdarn.ac.ukleedsmet.ac.ukleedsd.ac.ukleedscollege.ac.ukleedscitycollege.ac.uksuperjanet.ac.uk leedsbeckettuniversity.ac.uksuperjournal.ac.ukleedsbeckett.ac.ukleedsadultlearning.ac.ukleeds.ac.ukleeds-metropolitan.ac.ukleeds-met.ac.ukleeds-lcot.ac.ukleeds-ecampus.ac.ukleeds-art.ac.uksuperstation.com.twsuperstem.ac.ukleder.ac.ukledas.ac.uk
+lecb.ac.uk
lec.ac.uklearntogive.ac.uklearntelford.ac.uksupply-chain.ac.uklearnsafl.ac.uklearnportsmouth.ac.uklearnnorthants.ac.uklearnit-northampton.ac.uklearninworcestershire.ac.uklearninscotland.ac.uk
+surf.ac.uklearningzone.ac.uklearningtogether.ac.uksurfeasy.com.aulearningstaffordshire.ac.uklearningonscreen.ac.uklearningmathsonline.ac.uklearninglink.ac.uk
surrart.ac.uksurrealismcentre.ac.uklearningbites.ac.uksurrey.ac.uksurreyadultlearning.ac.uksurreyibc.ac.uksurreyspace.ac.uklearnhigher.ac.uklearnharrow.ac.uksurveynet.ac.uk suschem-nottingham-cdt.ac.uklearnedsocietywales.ac.uksussex.ac.uksussexbusinessschool.ac.uksussexcoast.ac.uksussexdowns.ac.uksussexmedicalschool.ac.uksussexvirtualcollege.ac.uksussp.ac.uk
sustain.ac.uk sustainabilityexchange.ac.uklearndirect.ac.uklearnbaes.ac.uklearna.ac.uk!sustainablehydrogen-cdt.ac.uksustainablelifestyles.ac.uksustainablepractices.ac.uksustainableproperty.ac.uksustainableprosperity.ac.uk!sustainabletechnologies.ac.uksustainsteel.ac.ukleapahead.ac.uk
+susx.ac.uksutcol.ac.uk
sutcoll.ac.uksuttoncollege.ac.uk
+leap.ac.ukleanhehub.ac.ukleanhe.ac.ukleagueoflegends.co.krleadershiphe.ac.ukleadershipfoundation.ac.ukle.ac.ukldoc-cdt.ac.ukld.hao123img.com
+lcwc.ac.uklcuck.ac.uk
lct.ac.uklcssp.ac.uklcriconvergence.ac.uk
lcm.ac.uksw-iot.ac.uk
+lcit.ac.uklcirah.ac.uklciot.ac.uk
+swan.ac.ukswancoll.ac.uk
swanmet.ac.ukswansea-institute.ac.uk
swansea.ac.ukswanseamet.ac.uk
+swap.ac.uk
swapbox.ac.uk
lcgroup.ac.ukswarf.ac.uk
+lcfi.ac.uk
lcf.ac.ukswbio.ac.uk
swc.ac.ukswdtc.ac.ukswdtp.ac.uksweep.ac.uk
+lcds.ac.uksweetandmaxwell.co.uk
+lcbt.ac.uk
+lcbs.ac.uk
lcb.ac.uk
sweltec.ac.ukswift.ac.uk
+lcad.ac.uk
lbu.ac.uk
lbs.ac.uklbpresearch.ac.uklborolondon.ac.uklboro.ac.uk
lbc.ac.ukswincoll.ac.ukswindon-college.ac.uk
swindon.ac.ukswindonart.ac.uklbc-northwood.ac.uklawteacher.ac.uklawdata.com.tw
lawcabs.ac.ukswingers.theadulthub.com
law.ac.uk
+laps.ac.ukswiot.ac.uklanguagessoutheast.ac.uklanguagesresearch.ac.uklanguagesmythsfinds.ac.uklanguagebox.ac.uklangside.ac.uk
langpol.ac.uklangdoncollege.ac.uklandscape.ac.uklandmarks.ac.uk
landmap.ac.uklancsngfl.ac.uklancs.ac.uklancs-initiative.ac.uklancs-cumbrianti.ac.uk"lancasterbeijingjiaotong.ac.uklancaster.ac.uklancashirelawschool.ac.uklancashirelawacademy.ac.uk)%lancashireinstituteoftechnology.ac.uklancashirecompact.ac.uklancashire.ac.uklanarkshirefederation.ac.uklampeter.ac.uk
+lamp.ac.uklamnia.co.uklamda.ac.ukswlacademicnetwork.ac.uk
+swlc.ac.uklambethcollege.ac.uklambethacl.ac.uk
lambeth.ac.uksworcs.ac.ukswpr.livedoor.blogswrac.ac.uklama.com.tw
lal.ac.ukswurcc.ac.uksww-ahdtp.ac.ukswwcte.ac.ukswwhep.ac.uksx.ac.uk!lakescollegewestcumbria.ac.uklakescollege.ac.uk
+laia.ac.uk
+lahp.ac.uklaetottenham.ac.uksycolleges.ac.uk
lae.ac.uksyfec.ac.uk
lackham.ac.uklackcoll.ac.uklabinacell.ac.uklaban.ac.uklab.skk.moe la-south-2.myhuaweicloud.com
symonds.ac.uk la-north-2.myhuaweicloud.comsynbio-cdt.ac.ukl-0005.l-msedge.netl-0005.dc-msedge.netsynsym.ac.uksyntheticbiology.ac.ukkwongwah.com.mykssdeanery.ac.uksysmic.ac.ukkssacademy.ac.uksystemicrisk.ac.uk
ksnews.com.tw
+ksep.ac.uk
ksc.ac.ukkonachan.wjcodes.com
+knti.ac.ukszetowah.org.hkknowswho.co.jpknowsleycollege.ac.ukknowsleycc.ac.ukt-mus.ac.ukknowledgehouse.ac.ukknowledge-house.ac.ukknightlearning.ac.ukt.orzdream.comkmuh.org.tw
+kmms.ac.uk
kmc.ac.ukkl.ac.uktablet-academy.ac.ukkktv.com.twkkbox.com.tw
kk-whys.co.jpkitts.ac.ukkisharon.ac.uk
kirkley.ac.ukkirkleescollege.ac.uk
+tacc.ac.uk
kinmen.org.twkingsway.ac.uktaconet.com.twtaedp.org.twkingstone.com.twtagapie.com.tw
+tags.ac.uktagwa.org.aukingstonalumni.ac.uktahr.org.twkingston.ac.ukkingston-college.ac.ukkingslondon.ac.ukkingshurst.ac.ukkingshillinstitute.ac.ukkings.ac.ukkingkong.com.twkinged6nun.ac.uk kingalfredsbasingstoke.ac.ukkingalfreds.ac.uk
+tait.ac.uk
+king.ac.ukkinds.ac.ukkindle.co.ukkindle.co.jpkilmarnock.ac.ukkidspot.com.aukidsfirst.ac.ukkidderminster.ac.ukkiddercoll.ac.uk
+kiad.ac.uktaiwannation.50webs.comkhmusic.com.twtaiwannation.com.twtaiwanncf.org.twtaiwannews.com.tw
kgv.ac.ukkeyskillbuilder.ac.uktaiwantt.org.twkeyseducation.ac.uk
kew.ac.uktaiwanyes.ning.comkess2.ac.uk
kentman.ac.uk
kentcls.ac.uktakeyourplace.ac.ukkentadulteducation.ac.uk
+kent.ac.ukkensingtoncoll.ac.uk
kennedy.ac.ukkendalcollege.ac.ukkendal.ac.ukkeighleycollege.ac.uktalkinghealthmatters.ac.ukkeele.ac.ukkedst.ac.uktamescol.ac.uktameside-acl.ac.uktameside.ac.uktamesidecollege.ac.ukkecnuneaton.ac.ukkec-stourbridge.ac.uktamworth.ac.uktamworthandlichfield.ac.ukke-westyorkshire.ac.ukkcollege.ac.uk
kclwave.ac.uktandf.co.uk
kcl.ac.uk
kcc.ac.uk
kcb.ac.ukkbplus.ac.ukkb.monitorware.comkakao.co.krkagyuoffice.org.twkagyunews.com.hkkagyu.org.za
+kaes.ac.uk
+tapb.ac.uktapestry.ac.ukkadokawa.co.jpjwide.co.krjwheatley.ac.uktarf-lcv.ac.uk
+jwfl.ac.ukjustincraig.ac.uktargetedgrad.ac.uk
+juno.ac.uk
+tarn.ac.uktarr.uspto.gov
+tasc.ac.uktascn.com.au
juc.ac.ukjubileecentre.ac.uktaste.com.aujtltraining.ac.uk
+jtap.ac.ukjstor.ac.uk
tau.ac.uktauntons.ac.ukaberdeenrescon.ac.uktavi-port.ac.uktavistockandportman.ac.uk tavistockrelationships.ac.uk
+jsmc.ac.uk
jrs.ac.ukjpl.nasa.gov
jp.hao123.com
tay.ac.ukjournaltocs.ac.ukjournalarchives.ac.ukjosephwright6form.ac.uk
+tbi.org.hkjoseph-priestly.ac.ukjoseph-priestley.ac.ukjoseph-chamberlain.ac.uk
tbm.ac.ukjorum.ac.uktbr.tangbr.netjornaldacidadeonline.com.br
+jolt.ac.ukjoinup.ac.uktbskkinabalu.page.tljohnruskin.ac.uk
+jobs.ac.ukjobmarket.com.hk
jnt.ac.uk
jmu.ac.uktbtemple.org.uk
jmc.ac.uk
+tcat.ac.uk
+tcch.ac.uk
+tccr.ac.uk
jma.go.jpjiyu-kobo.co.jp
tcg.ac.ukjiuse.com.co
tcm.ac.ukjiscwell.ac.uktcpartnership.ac.uk
jiscpas.ac.ukjiscmu.ac.ukjiscmediahub.ac.ukjiscmail.ac.ukjiscjournalarchives.ac.uk
+tdm.com.motdotp.ac.ukteachenergy.ac.ukjiscinfonet.ac.ukteachingaccessibility.ac.ukteachingshakespeare.ac.ukjischistories.ac.ukjischistoricbooks.ac.ukjiscecollections.ac.ukjiscdigitalmedia.ac.ukjisccontent.ac.ukjisccollections.ac.ukjiscadvance.ac.ukteamwork.ac.uk
+tean.ac.uk
+jisc.ac.ukjisc-tau.ac.uk
tec.ac.uktech2.in.comjisc-services.ac.ukjisc-mau.ac.uktechextra.ac.ukjisc-liberate.ac.uk jisc-liberate-migrate3.ac.uktechne.ac.uk jisc-liberate-migrate2.ac.uk jisc-liberate-migrate1.ac.ukjisc-content.ac.ukjisc-collections.ac.ukjihadintel.meforum.org
jic.ac.ukjga-group.ac.ukjewel-esk.ac.uktechxtra.ac.uk
+jevc.ac.ukjenner.ac.uk
jec.ac.ukjd.co.thjcpsg.ac.ukjcmaxwell.ac.uktedi-london.ac.uk
+tedi.ac.uk
+teds.ac.uk
jcc.ac.uk
jca.ac.ukjasmin.ac.ukjas-mine.ac.ukjapantimes.co.jp!japanfirst.asianfreeforum.comjanetcollaborate.ac.ukjanetbrokerage.ac.ukjanet.ac.ukjanet-brokerage.ac.ukjaneausten.ac.ukjamesbondstudies.ac.uk
+jade.ac.uk
iza.ne.jp
iwm.ac.uk
iwightc.ac.ukiwcommunitylearning.ac.ukiwcollege.ac.uk
+iucr.ac.ukitutility.ac.ukitunes.co.thits.caltech.eduitrace.ac.uk
+itol.ac.uk
+tees.ac.ukteeslearn.ac.ukteesside.ac.ukteesvalley-acl.ac.ukitnow.ac.ukitlearningspace-scot.ac.uktegrazone.co.krabertawe.ac.uk
+itec.ac.ukiteach.ac.ukitchen.ac.uk
tel.ac.uk
+isvc.ac.ukistent.co.kristars.co.nzistar.ac.ukispan.ac.uk
+ismg.ac.uk
ism.ac.ukislington-acl.ac.uk
+isli.ac.uk
+isle.ac.ukislamicstudiesnetwork.ac.uktelegraph.co.ukislamicacademy.ac.ukislamic-college.ac.ukislam.org.hkislam-anatolia.ac.uk
+isis.ac.uk
+isic.ac.uktelfordcollege.ac.uk
+iscp.ac.ukisc.sans.edu
isc.ac.uktellusgb.ac.uktelri.ac.uk
temenos.ac.ukirscl.ac.uktempusuk.ac.ukironbigfools.compython.netiriss.ac.uk
tencent.co.idtencent.com.hk
+iris.ac.ukiri-scotland.ac.uktentowns.ac.ukirese.ac.uk
+ired.ac.ukirc-sphere.ac.uk
+ipv6.ac.ukiptv.com.twterapeak.com.hkiproperty.com.sgiproperty.com.myipodshop.com.au
+terc.ac.ukipodrocks.com.auipod.com.twipod.com.sgipod.com.hkipod.com.fripod.com.au
+ipod.co.za
+ipod.co.uk
+ipod.co.nz
ipi.ac.ukiphoneclaro.com.briphoneacessorios.com.briphone4.com.brtest-ipv6.alpinedc.chtest-ipv6.arauc.brtest-ipv6.belwue.nettest-ipv6.carnet.hr
iphone.net.gr
iphone.com.gr
abertay.ac.ukabertaydundee.ac.uk
iphone.com.autest-ipv6.epic.networktest-ipv6.fratec.net test-ipv6.freerangecloud.comtest-ipv6.go6.si
+ipgc.ac.ukipfs.runfission.comtest-ipv6.iu13.netaberystwyth.ac.uktest-ipv6.noroutetohost.nettest-ipv6.roedu.netipfs.lain.laabhsc.ac.uktest-ipv6.ttk.rutesta.ac.uk
ipfs.fleek.coabicollege.ac.ukipfs.eternum.ioipfs.best-practice.seipfs.anonymize.com
tex.ac.uktextminingcentre.ac.ukipforesightforum.ac.uk
+ipem.ac.ukipcc-wg3.ac.ukipadmini.com.lkipadair.com.esipadair.com.br
+ipad.co.kr
ioz.ac.uk
+tgac.ac.uk
ios.ac.uk
ion.ac.uk
ioe.ac.ukinvestorschronicle.co.ukinventorship.com.au
th.hao123.comintute.ac.ukinto-newcastle.ac.ukintheknow.com.auinternationalstudies.ac.ukinternationalstaff.ac.uk$ internationalcollegedundee.ac.ukinternational.ac.ukthamesgatewaycollege.ac.ukthamesvalleytraining.ac.ukthanet.ac.ukthanetcollege.ac.uk-)international-union-crystallography.ac.ukthatcham.ac.uk($international-news.newsmagazine.asia$ international-house-london.ac.ukintercamcashpassport.com.mxinteractiveeducation.ac.ukinteractive-e.ac.ukthe-british-museum.ac.ukthe-britishmuseum.ac.uk
the-etc.ac.ukinteractcbt.ac.ukintel.com.veintel.com.uy
the-tls.co.ukintel.com.twintel.com.tr thealanturinginstitute.ac.ukthearden.ac.ukintel.com.pyintel.com.prtheaustralian.com.auintel.com.phintel.com.peintel.com.myintel.com.mxthebcc.ac.ukintel.com.jmintel.com.hkintel.com.ecintel.com.cointel.com.brintel.com.bointel.com.auintel.com.arintel.co.zaintel.co.ukintel.co.krthebritishacademy.ac.ukthebritishmuseum.ac.ukintel.co.jpintel.co.ilintel.co.id%!thechesterfieldcollegegroup.ac.ukintel.co.crintel.co.aethechronicle.com.auintegrativebiology.ac.uk
intarch.ac.uktheclub.com.hk"institutionofelectronics.ac.ukthecobaltstudy.ac.uk instituteofcounselling.ac.ukthecontactpartnership.ac.ukinstituteofcoding.ac.ukthecpc.ac.uk&"institute-of-cancer-research.ac.uk#inst-of-oceanographic-sci.ac.ukinspiretrust.ac.ukinspire-dtp.ac.uk
inside.com.tw inquisitionspostmortem.ac.ukthedigitalpicture.ac.ukinnovations.ac.ukinnovation.ac.ukinnovation-exchange.ac.uk
innogen.ac.ukinitiate.ac.ukinfotimes.com.twtheetc.ac.ukinfosciscotland.ac.ukinformedchoices.ac.ukinformation-systems.ac.ukinform25.ac.ukinfolinker.com.tw
infogov.ac.ukindies-av.co.jpindependent.co.ukindeedproject.ac.ukinclusion.ac.ukincesto.blog.br
imt.ac.ukimrci.ac.uk
imr-cdt.ac.uktheglobalsite.ac.ukimperial.ac.ukimpala.ac.ukthegraduationproject.ac.uk
impact.org.auimpact.ac.ukimpact-hei.ac.ukimlab.ac.uk
+imet.ac.ukthehenleycollege.ac.ukimems.ac.ukimageworkshop.ac.ukimages.comico.tw image-guided-therapies.ac.uk
+imac.co.nzilthe.ac.uk
ilt.ac.ukillusion.co.jpilex-tutorial.ac.uktheinternetlawschool.ac.ukilecture.co.nz
+ilab.ac.ukikea.com.uatheknowledgeacademy.ac.ukikea.com.twikea.com.tr
+grid.ac.ukthelearningconsortium.ac.ukthelearningmatrix.ac.ukikea.com.sgtheletterspage.ac.ukikea.com.sathelondonknowledgelab.ac.ukikea.com.ruthemanchestercollege.ac.ukikea.com.roikea.com.ptthemercury.com.authemessengeradelaide.com.auikea.com.prthemis.ac.ukikea.com.plikea.com.omikea.com.myikea.com.mxikea.com.lvikea.com.kwikea.com.intheoca.ac.ukikea.com.hkikea.com.grikea.com.egikea.com.doikea.com.deikea.com.cyikea.com.au
+ikea.co.uk
+ikea.co.th
+ikea.co.pl
+ikea.co.ph
+ikea.co.om
+ikea.co.kr
+ikea.co.jp
+ikea.co.il
+ikea.co.id
+ikea.co.de
+ikea.co.ca
+ikea.co.at
iis.ac.ukiipdigital.usembassy.gov
ihrinfo.ac.ukihighbury.ac.uk
+ihgs.ac.ukigsqt.ac.uktherock.net.nztheroslininstitute.ac.ukigotmail.com.twthesaturdaypaper.com.authesaurus.ac.ukthescottishsun.co.ukthesenses.ac.ukthesesalive.ac.ukignite.ac.uk
+igmm.ac.uk
+iger.ac.ukifstal.ac.ukifslearning.ac.uk
ifs.ac.uktheskillsco.ac.ukthestandard.com.hk
ifr.ac.uk
ifm.ac.ukthesun.co.uk
ifl.ac.ukthesundaytimes.co.uk
ife.ac.ukifastgp.com.hkifastfinancial.com.hkifastfinancial.co.inifastcapital.com.mythetimes.co.uk
+ifan.cz.cciexchange.ac.uk
+iesr.ac.uk
ies.ac.uk
ids.ac.ukidras.ac.uk
+idgo.ac.ukidentrust.co.uk
idealse.ac.ukidcore.ac.uk
id.hao123.comictheatre.ac.uk
+icsl.ac.ukthewomenslibrary.ac.ukicsd.fiz-karlsruhe.de
+icsa.ac.uk
ics.ac.uk
icr.ac.ukiconnect.ac.ukiconcollege.ac.uk
+icmp.ac.ukicmacentre.ac.uk
+icma.ac.ukthinkhigher.ac.ukthinking3d.ac.uk
+icls.ac.uk
+icit.ac.ukthinkquarterly.co.uk
+icif.ac.ukthinkwales.ac.ukichat.co.in
+iced.ac.ukthisismoney.co.ukice.audionow.com
ice-cse.ac.ukiccliverpool.ac.uk
+icca.ac.ukicbci.com.hk
icbcbr.com.brthomasdanby.ac.ukthomashpc.ac.ukthomasway.ac.ukthomroth.ac.ukicbc.com.vnthomsonreuters.co.jpthomsonreuters.co.krthomsonreuters.co.nzthomsonreuters.co.ukicbc.com.sgthomsonreuters.com.arthomsonreuters.com.authomsonreuters.com.brthomsonreuters.com.hkthomsonreuters.com.mythomsonreuters.com.pethomsonreuters.com.sgthomsonreuters.com.tricbc.com.qaicbc.com.pkicbc.com.peicbc.com.mxicbc.com.mothornbeck.ac.ukicbc.com.mmicbc.com.laicbc.com.kwicbc.com.khicbc.com.esicbc.com.au
+icbc.co.nl
+icbc.co.kr
+icbc.co.jp
+icbc.co.idicashpassport.com.mxicair.ac.uk
+icac.ac.ukic.ac.ukibuild.ac.uk
+ibss.ac.ukthurrock.ac.ukthurrockcampus.ac.ukgrid-support.ac.ukthywords.com.tw
+ibis.ac.ukibd-boost.ac.uk
iat.ac.ukiapetus2.ac.uk
iapetus.ac.uk
+ials.ac.ukial-wrecsam.ac.uk
iah.ac.uk
+iagp.ac.uk
+iaac.ac.uk
+i69.com.tw
i.lithium.com
i-part.com.twi-lab.ac.uki-centralwm.ac.ukhysbys.ac.uk
hyp.ac.uk
+hyms.ac.ukhydronationscholars.ac.uktibet-house-trust.co.ukhydeclarendon.ac.uk
+hyde.ac.uk
+tibet.a.sehybrid-group.ac.ukhwlln.ac.uk
+hwlc.ac.uk
hwayue.org.twhw.ac.ukhutton.ac.ukhurriyet.com.trtibet.org.twhuntingdon.ac.ukhungerford.ac.ukhumbul.ac.ukhumbug.ac.ukhumbox.ac.ukhumbermaritimecollege.ac.ukhumber.ac.ukhumanrights-lse.ac.ukhumanmind.ac.ukhumanities.ac.uk!humanities-human-rights.ac.ukhulltraining.ac.ukhullschoolartdesign.ac.uk
hullacl.ac.uk
+hull.ac.ukhull-college.ac.ukhuish.ac.ukhughbaird.ac.ukhuffingtonpost.com.mxhuffingtonpost.com.auhuffingtonpost.co.zahuffingtonpost.co.ukhuddnewcoll.ac.ukhuddersfield.ac.ukhuddcoll.ac.ukhudatoriq.web.id
hud.ac.uk#hubbard-theory-consortium.ac.ukhuawen.ac.uk
hts.ac.uk
htp.ac.ukhtanime.epizy.com
hta.ac.ukht.ac.uk
+hst.net.tw
hss.ac.uk
+hsdp.ac.uk
+hsdc.ac.ukhsbcamanah.com.myhsbc.com.vnhsbc.com.uyhsbc.com.twhsbc.com.trhsbc.com.sghsbc.com.phhsbc.com.myhsbc.com.mxhsbc.com.mthsbc.com.mohsbc.com.hktibetoffice.com.auhsbc.com.eghsbc.com.brhsbc.com.bhhsbc.com.bdhsbc.com.auhsbc.com.artibetrelieffund.co.uk
+hsbc.co.uk
+hsbc.co.th
+hsbc.co.nz
+hsbc.co.mu
+hsbc.co.kr
+hsbc.co.jp
+hsbc.co.in
+hsbc.co.id
+hsad.ac.ukhrsfc.ac.uk
tic.ac.ukhrionline.ac.uk
ticket.com.tw
hri.ac.uk
tictocs.ac.uk
hrc.ac.ukhrbdt.ac.ukhpoolsfc.ac.uk
+hpcx.ac.uk
+hpci.ac.ukhpc-uk.ac.ukhpc-sc.ac.uk
tiipple.ac.ukhpc-midlands.ac.ukhpc-midlands-plus.ac.ukhpc-diversity.ac.ukhowtogetmo.co.ukhowcollege.ac.ukhousingevidence.ac.ukhousefraserarchive.ac.ukhoughall.ac.ukhotfrog.com.twtilehill.ac.ukhotbed.ac.ukhorniman.ac.ukhorizonscollege.ac.uk
horizon.ac.uktime.nrc.ca
hopwood.ac.uk
+hope.ac.ukhongkongpost.gov.hkhoney-monitoring.ac.uktimesofindia.indiatimes.comhometrack.com.auhomenetworks.ac.ukhomefieldcollege.ac.uk
home.sina.comholycross.ac.ukholts.ac.ukholmelacy.ac.ukhojemacau.com.mo
hoge.7jp.info
hogarth.ac.uk
hmv.co.jphlnsc.ac.uk
hlg.ac.ukhlcollege.ac.ukhkwcc.org.hkhkvets.ac.uk
hkupop.hku.hkhkreporter.loved.hkhklts.org.hkhkip.org.ukhkhrm.org.hktipple.ac.ukhkhrc.org.hkhkdailynews.com.hkhkctu.org.hkabingdon-witney.ac.ukhkci.org.hkhkbn.com.hkhk.jiepang.comhk.hao123img.comhk.gradconnection.comhk.frienddy.comabira.ac.ukhk.chinamobile.comhistparl.ac.ukhistorysubjectcentre.ac.uktl.ac.uk
history.ac.uk
tla.ac.uk
tlc.ac.uktlcbexley.ac.uktlccollege.ac.uktlcmd.ac.uktlcmoodle.ac.uk
+tltp.ac.uk
tma.co.jphistory-uk.ac.ukhistoricbooks.ac.uk
tmc.ac.uk
+tmcs.ac.ukhistoricalpageants.ac.uk!historicalmusicpedagogy.ac.ukhison.ac.ukhiperduct.ac.uk
tmn.ac.ukhillsroad.ac.ukhillcroft.ac.ukhilderstone.ac.ukhighpeak.ac.ukhighlands.ac.ukhighlands-jersey.ac.ukhighfieldscentre.ac.ukhigher-education.ac.ukhighburygroup.ac.ukhighbury.ac.uktoget.com.twhiddenhistorieswwi.ac.ukhi-on.org.twhhtravel.com.tw
hhc.ac.uk
+hfma.ac.uktokyo-sports.co.jphfals.ac.ukhfaes.ac.ukheythropcollege.ac.ukheythrop.ac.ukhewit.ac.uk
hew.ac.ukheswbusnet.ac.ukhestem.ac.ukhespa.ac.uk
tombola.ac.ukhesin.ac.ukhesharedlegal.ac.uk
+hesa.ac.uktongil.or.krherts.ac.ukherts-regional.ac.ukherts-he.ac.ukherts-e-learn.ac.uk
hertreg.ac.uk%!hertfordshirebusinessschool.ac.ukhertfordshire.ac.ukheron.ac.ukheritagescience.ac.ukheritagequay.ac.ukheritageconsortium.ac.ukheriot-watt.ac.ukhereward.ac.ukhereford.ac.ukhereford-tech.ac.ukhereford-art-col.ac.uk
+herc.ac.ukherbi.ac.ukheraldsun.com.au
+hera.ac.uk
+hepp.ac.uk
+hepi.ac.ukhepcw.ac.uk
+hepa.ac.uk
hep.ac.ukhentairank.supertop-100.com"hentai-top100.supertop-100.com!hentai-space.supertop-100.comhenshaws.ac.ukhensa.ac.ukhenryfordcollege.ac.ukhenry-moore.ac.ukhenleymc.ac.ukhenleycollege.ac.ukhenleycol.ac.ukhenley.ac.ukhenley-cov.ac.ukhendon.ac.ukhelp.linksalpha.comheloa.ac.ukabitno.linpie.comhellofuture.ac.uk
+helf.ac.uk
+heix.pp.ruheinlondon.ac.ukheilbronn.ac.ukheids.ac.ukheidi.ac.uk
+heia.ac.ukhei-worcester.ac.ukhegovernance.ac.ukhefestis.ac.ukhefcw.ac.ukhefce.ac.ukheestates.ac.ukheesf.ac.uk
+heep.ac.uk
+heeg.ac.ukheefs.ac.uk
heeact.edu.twhedip.ac.ukhediip.ac.uktor.blingblingsquad.nettor.updatestar.com
+hedg.ac.uk
+hedd.ac.ukhedata.ac.ukhector.ac.ukhecsu.ac.uk#hecollegeadvisersinlondon.ac.ukhecbiosim.ac.ukhecail.ac.ukhebetterregulation.ac.ukhebcon.ac.ukheated.ac.uk
+heat.ac.uk($heartofworcestershirelawschool.ac.uk&"heartofworcestershirecollege.ac.ukheart.ac.uktosh.comedycentral.com
+hear.ac.ukhealthyuniversities.ac.ukhealthsciencescotland.ac.ukhealtheducation.ac.uktotton.ac.uktoucan-network.ac.ukhealthdataresearchuk.ac.uk healthcaretechnologies.ac.ukhealthcarescience.ac.ukhealthcare.ac.ukhealth.ac.ukheadteachers.ac.ukheadline.ac.ukheacademy.ac.ukhe-purchasing.ac.uktower.ac.ukhdruk.ac.uktowerhamletscollege.ac.uktowerhamletsllls.ac.uktowerhamletslls.ac.uk
+hcuc.ac.uk
hct.ac.uktownsvillebulletin.com.au
+hcri.ac.ukhclrg.ac.uk
+hcfe.ac.ukhcebusiness.ac.ukhcctraining.ac.uk
hca.ac.uk
+hbvc.ac.uk
hbs.ac.uk
tpc.ac.uk
+tpea.ac.uk
+tpi.org.twtpmde.ac.uk$ hbomax-images.warnermediacdn.comtr-west-1.myhuaweicloud.comhbogo.co.th
+trac.ac.ukaboutamazon.co.uktracingnetworks.ac.ukhaywardsheath.ac.ukhayle.ac.ukhavering.ac.uktraffcoll.ac.ukhavering-sfc.ac.uktrafford.ac.uktraffordcollege.ac.uktraindelayprediction.ac.uktraintogainstoke.ac.ukhavering-college.ac.ukhavantsouthdowns.ac.ukhavantandsouthdowns.ac.ukhavant.ac.uktrans.ac.uktrans.wenweipo.com
hau.ac.ukhastingsonline.ac.ukhastings.ac.uk
hartree.ac.uktranscocon.ac.uk"hartpuryuniversitycentre.ac.uk!transforming-musicology.ac.uk transformingmusicology.ac.uk
transit.ac.uktransitwestyorkshire.ac.uktranslate-medtech.ac.ukhartpuryuniversity.ac.ukhartpuryuni.ac.ukhartpurycollege.ac.uk&"transnationalmodernlanguages.ac.ukhartpury.ac.uktranspharmtech-cdt.ac.uktranspharmtech-dtc.ac.ukhartlepoolsixth.ac.ukhartlepoolfe.ac.ukhartlepoolacl.ac.ukhartlepoolacademy.ac.ukharrow.ac.uktravelex.co.intravelex.co.jptravelex.co.nztravelex.co.ukharrogate.ac.uktravelex.com.autravelex.com.hktravelex.com.mytravelex.com.omtravelex.com.trharrogate-college.ac.ukharperkeelevetschool.ac.ukharperkeelevets.ac.uk%!harpercollinschildrensbooks.co.ukharpercollins.com.auharpercollins.co.ukharpercollins.co.inharperadams.ac.uk
trc.ac.uktreemall.com.twharper.ac.ukharper-adams.ac.ukharlow-college.ac.uk
harlech.ac.ukharlaxton.ac.uk
tresham.ac.ukharingey6.ac.uktri-london.ac.ukhappymeal.com.auhappymeal.co.nzhanzhen.xmulib.orghannah.ac.ukhandsworth.ac.uktricky-topics-guide.ac.uk
trident.ac.ukhampsteadscience.ac.uktrilt.ac.ukhamec.ac.uktrinity-bris.ac.uktrinity-cm.ac.uktrinitycollegebristol.ac.uktrinitylaban.ac.uktrinitysaintdavid.ac.ukhaltoncollege.ac.ukhalton-acl.ac.ukhalesowen.ac.uk
halcyon.ac.ukhakkatv.org.twhairdressing.ac.uk
hae-acl.ac.ukhadlowgroup.ac.uk
trocoll.ac.ukhadlow.ac.uk
hackney.ac.ukhackday.com.au
tropmed.ac.uk
+hace.ac.uk
trs.ac.uk
+trt.net.trtrtc.com.twh-top.supertop-100.com
gyc.ac.uk
gwr.ac.ukgwent.ac.ukgw4biomed.ac.uk
gw4.ac.uk
gw4-cat.ac.ukgw-partnership.ac.uk
+gvm.com.twguimcode.co.uk
+guim.co.uktruro-penwith.ac.uktruro.ac.uktrurocollege.ac.uktruropenwith.ac.uk
guildhe.ac.ukguildhallschool.ac.ukguildford.ac.ukguardianapps.co.ukguangming.com.mygtyarmouthcoll.ac.uk
+gttr.ac.ukgtm.oasisfeng.com
gtc.ac.uk
+gssw.ac.ukgsmlondon.ac.uk
+gsmd.ac.uktruth101.co.tv
gsa.ac.ukgrpeng.ac.ukgrows.ac.ukgrimsbytec.ac.uk
grimsby.ac.ukgrids.ac.ukgridpp.ac.uk!thelearningcentrebexley.ac.ukreadytoresearch.ac.uk
ust.ac.ukluton.ac.ukgresham-college.ac.ukgregynog.ac.ukgreenwichdev.ac.ukgreenwich.ac.ukgreenwich-college.ac.ukgreenpeace.com.twgreenparty.org.twgreenhill.ac.ukgreenhead.ac.ukgreenfieldbookstore.com.hkgreenend.org.ukgreenbankcollege.ac.ukgreatwesternresearch.ac.ukaboutamazon.com.au($greatermanchestermedicalschool.ac.uk51greatermanchesterinternationalmedicalschool.ac.uk#greatermanchestercolleges.ac.uk,(greatermanchesterbiobankingnetwork.ac.ukgreatapedictionary.ac.uk
tsd.ac.uktsdlondon.ac.uktsdr.uspto.gov
tse.ac.uktsec-biosys.ac.uk
gre.ac.uk
+grcb.ac.uk
graylab.ac.uk
tsl.ac.uk
+gray.ac.uk
graphis.ne.jpgraphenecentre.ac.ukgrantleyhall.ac.uk
+tsrc.ac.ukgrantham.ac.ukgraneodin.com.mx
+tsu.org.twgranduniondtp.ac.ukgraduatewales.ac.ukgraduateswales.ac.uktsuradou.noonvob.comgraduateoutcomes.ac.ukgraduateconnection.ac.uk
ttc.ac.uktte-lisa.ac.ukgraduatecareers-wales.ac.ukttetraining.ac.uk
+ttrb.ac.ukgraduate-jobs.ac.uk
+ttv.com.tw graduate-jobs-in-wales.ac.uk graduate-careers-wales.ac.ukgradschools.ac.ukgradcareers-scotland.ac.ukgrad2teach.ac.ukgrace.ac.ukgputechconf.com.twgputechconf.com.augputechconf.co.krgpucomputing.ac.ukgpkss.ac.ukgowercollegeswansea.ac.ukgowercollege.ac.ukgower.ac.uk
gowales.ac.uk#gosportmarineskillscentre.ac.uk
gosport.ac.uk
+gosc.ac.ukgorseinon.ac.ukgorseinon-bizcentre.ac.ukgoole-college.ac.ukgooglecompare.co.uk
google.com.vn
google.com.vc
google.com.uy
google.com.ua
google.com.tw
google.com.tr
google.com.tj
google.com.sv
google.com.sl
google.com.sg
google.com.sb
google.com.sa
google.com.qa
google.com.py
google.com.pr
google.com.pk
google.com.ph
google.com.pg
google.com.pe
google.com.pa
google.com.om
google.com.np
google.com.ni
google.com.ng
google.com.nf
google.com.na
google.com.my
google.com.mx
google.com.mt
google.com.mm
google.com.ly
google.com.lb
google.com.kw
google.com.kh
+tuca.ac.uk
+tuco.ac.uktudorpartbooks.ac.uktufos.com.br
google.com.jmtui.orzdream.com
google.com.hk
google.com.gt
google.com.gi
google.com.gh
google.com.fj
google.com.et
google.com.eg
google.com.ec
google.com.do
google.com.cy
google.com.cu
google.com.co
google.com.bz
google.com.br
google.com.bo
google.com.bn
google.com.bh
google.com.bd
google.com.au
google.com.ar
google.com.aiturbulence.ac.ukturing.ac.ukturingsafehaven.ac.uk
google.com.ag
google.com.afgoogle.co.zwgoogle.co.zmgoogle.co.zagoogle.co.vigoogle.co.vegoogle.co.uzgoogle.co.ukgoogle.co.ugabrsm.ac.ukgoogle.co.tzgoogle.co.thgoogle.co.nz
+tvb.com.augoogle.co.mztvbanywhere.com.sgtvbeventpower.com.hkgoogle.co.matvbs.com.twgoogle.co.lsgoogle.co.kr
tvc.ac.uk
+tver.co.jpgoogle.co.kegoogle.co.jptvmedia.net.au
tvmost.com.hkgoogle.co.in
+tvof.ac.ukgoogle.co.ilgoogle.co.id
tvu.ac.ukgoogle.co.crgoogle.co.ckgoogle.co.bwtw.gigacircle.com
tw.hao123.comtw.iqiyi.comtw.jiepang.comtw.streetvoice.comtw.voa.mobigoogle.co.ao
goodtv.com.twgoodenough.ac.uk
goo.ne.jpgoldsmiths.ac.ukgoldproject.ac.ukgoldcoastbulletin.com.autwbbs.net.tw
+gold.ac.ukzoonosis.ac.ukgohigherwestyorks.ac.uktwca.com.twgohappy.com.twgogeo.ac.ukgofit.ac.ukgoetec.ac.ukgodsdirectcontact.org.twgodsdirectcontact.co.ukgodalming.ac.ukgoals.ac.ukgoagent.codeplex.comgo4uni.ac.ukgo.nesnode.comgnci.org.hkgnatwork.ac.uk
+gmsa.ac.ukgmozomg.izihost.org
+gmms.ac.ukgmims.ac.ukgmhigher.ac.uktweets.seraph.megmcyberfoundry.ac.uk
+gmcg.ac.uk
gmc.ac.uk3/glyndwrlondonschoolofmanagementandscience.ac.uk&"glyndwrlondonholdingslimited.ac.uktwenty65.ac.uk
glyndwr.ac.uk
+gltc.ac.ukglsms.ac.uk
+glow.ac.ukglovitas.ac.ukgloucs.ac.uk"gloucestershirelaunchpad.ac.uk!gloucestershirecolleges.ac.uk gloucestershirecollege.ac.ukgloucestershire.ac.ukglosnexus.ac.ukgloscollege.ac.ukgloscolgov.ac.uk
gloscol.ac.uk
gloscat.ac.uk
+glos.ac.uk
gloknos.ac.ukglobolakes.ac.ukglobalsign.com.sgglobalsign.com.hkglobalsign.com.brglobalsign.com.auglobalsign.co.uktwin-research.ac.ukglobalshakespeare.ac.uk&"globalbusinessofforcedlabour.ac.ukglobalbanking.ac.uk
+gllm.ac.uk
+glhl.ac.uk
twinsuk.ac.ukglenrothes-college.ac.ukglenfife.ac.uktwirl.ac.ukglen-coll.ac.uk$ glasgowsequencingsolutions.ac.ukglasgowsciencecentre.ac.uktwister.net.coglasgowschoolofart.ac.ukglasgowmet.ac.ukglasgowmedhums.ac.ukglasgowkelvin.ac.ukglasgowcolleges.ac.ukglasgowclyde.ac.uk
glasgow.ac.ukglasgow-nautical.ac.ukglasgow-caledonian.ac.ukglan-hafren.ac.ukglamorgan.ac.ukglammies.ac.uk
+glam.ac.ukgladstudy.ac.ukglaadh.ac.uk
gla.ac.ukgimsig.ac.ukgift-surg.ac.uk
+ghil.ac.uk
+gfw.org.ua
gfgold.com.hkgettyimages.com.mxgettyimages.com.brgettyimages.com.augettyimages.co.ukgettyimages.co.nzgettyimages.co.jpgetamoveon.ac.ukgesource.ac.uk
+gerc.ac.ukzoonoses.ac.ukgeoxwalk.ac.ukgeorge-monoux.ac.ukgeohazard.ac.ukgeocities.co.jpgenomicsnetwork.ac.ukgenomeanalysiscentre.ac.ukgenet.ac.uk
genesys.ac.uk
genesis.ac.ukgenerationpup.ac.uk
+gen2.ac.uk
abs.ac.uk
gem.ac.ukgelbooru.wjcodes.comgeiriadur.ac.uktwnorth.org.twgeforce.com.tw
geforce.co.uk
geforce.co.krgeelongadvertiser.com.augecko.ac.ukgeasontraining.ac.uk
gda.ac.ukgculondon.ac.uk
gcu.ac.uk
+gcsp.ac.uk
gcs.ac.uk
+gcrb.ac.uk
+gcns.ac.uk
+gclg.ac.uk
gci.ac.uk
gcg.ac.uk
+gcft.ac.ukgcft-gla.ac.ukgceducationandskills.ac.uk
+gcc.org.hk
gcc.ac.uk
+gcbp.ac.uk
+gcal.ac.ukgcadt.ac.uk
gca.ac.ukgbs3trial.ac.uk
tyndall.ac.uktynecoast.ac.uktynecoll.ac.uk
tynemet.ac.ukgbmolluscatypes.ac.uk
+gbmc.ac.ukgbank.com.mmgati.org.twgateway.pinata.cloud
gateway.ac.uk!gatesheadlearningskills.ac.ukgatesheadcollege.ac.ukgateshead.ac.uk
+gate.ac.ukgashe.ac.ukgarena.co.thgarena.co.idgamez.com.twgamer.com.twu4heusergroup.ac.ukgameplan.ac.ukgamebase.com.tw
+galt.ac.uk
+ua92.ac.ukgainsborough.ac.uk
+uab.com.mm
uad.ac.uk
uag.ac.uk
ual.ac.uk
+uall.ac.uk
uas.ac.uk
+gaia.ac.uk
+ubdc.ac.ukgaelicstoryatgu.ac.ukubel-dtp.ac.ukfxplus.ac.uk"fv-distribution-database.ac.ukfuyu.org.twfutureworks.ac.ukfuturevehicles.ac.ukfuturetrack.ac.ukfuturemedia.ac.uk
ubn.ac.ukfutureme.ac.ukfuturecat.ac.ukfuturearmedforces.ac.uk"future-reserves-research.ac.ukfuture-media.ac.ukfusion.ac.ukfusion-cdt.ac.ukuc-scarborough.ac.uk
uca.ac.uk
+ucam.ac.uk
+ucas.ac.ukucas01.ac.ukucasgraduate.ac.ukucaspg.ac.ukucaspostgrad.ac.ukucaspostgraduate.ac.uk
+ucat.ac.uk
+ucav.ac.uk
ucb.ac.uk
ucc.ac.uk
+fuse.ac.uk
uce.ac.uk
+ucea.ac.uk
+ucem.ac.ukucenmanchester.ac.uk
+ucet.ac.uk
ucf.ac.uk
+ucfb.ac.uk
ucg.ac.uk
furness.ac.ukucisa.ac.ukucl-status.ac.uk
ucl.ac.uk
fulcrum.ac.ukuclan.ac.ukuclanresearch.ac.uk
ucleeds.ac.ukuclglobal.ac.uk
+ucmk.ac.uk
+ucml.ac.uk
ucn.ac.uk
+ucnl.ac.uk
uco.ac.uk
ucp.ac.ukucpmarjon.ac.uk
ucq.ac.ukucreaseheath.ac.ukucreative.ac.uk
ucs.ac.ukucsalf.ac.ukucsalford.ac.uk
+ucsd.ac.ukucshrewsbury.ac.uk
+ucsm.ac.uk
+ucsp.ac.uk
+ucss.ac.uk
ucw.ac.uk
+ucwa.ac.uk
ucy.ac.ukfuellearning.ac.uk
+udel.ac.ukftvnews.com.tw
+ftv.com.tw
fst.ac.uk
fsmone.com.my
fsmone.com.hk
+udn.com.twfslra.ac.uk
+fsem.ac.uk
fsb.ac.ukfrontiersofoncology.ac.uk
uea.ac.ukfrontier.ac.uk
uec.ac.uk
+uedu.ac.uk
uee.ac.ukueharlax.ac.uk
uel.ac.ukuetcollege.ac.ukfrenchhistorysociety.ac.uk
ufm.ac.ukuforadio.com.twfreezeframe.ac.ukfreeviewplus.net.aufreescotcoll.ac.ukfreeman-centre.ac.uk
free4u.com.ar
uhi.ac.ukuhicloud.ac.ukuhmlg.ac.ukuhovi.ac.uk
uhr.ac.ukfranklin.ac.uk
+uhsl.ac.ukfrancistowne.ac.uk
fra.ac.ukuighur.narod.ru
fpm.ac.uk
foxtel.com.aufoxsports.net.brfoxsports.com.vefoxsports.com.uyfoxsports.com.pyuk-cdi.ac.ukuk-data-service.ac.ukfoxsports.com.peuk-imr.ac.uk uk-india-energynetwork.ac.ukukadia.ac.ukukaea.ac.ukukaff.ac.uk
ukandeu.ac.ukukarc.ac.ukukbiobank.ac.uk
ukc.ac.uk
+ukca.ac.ukukcasa.ac.ukukcat.ac.ukukcbc.ac.uk
ukccsrc.ac.ukukcdp.co.ukukceh.ac.ukukcge.ac.ukukchinab4g.ac.ukukcle.ac.ukukclt.ac.ukukcmri.ac.uk
+ukcp.ac.ukukcpmn.ac.ukukctas.ac.uk
+ukda.ac.ukukdataservice.ac.uk%!ukdementiaresearchinstitute.ac.ukukdri.ac.uk
+ukds.ac.ukukerc.ac.ukukerna.ac.ukukesm.ac.ukukfast.ac.ukukgeos.ac.ukukgrad.ac.ukukhec.ac.ukukhls.ac.ukukimr.ac.ukfoxsports.com.mxukirc.ac.ukuklibrariesplus.ac.ukukliferadio.co.uk
uklight.ac.uk
ukm.ac.ukukmed.ac.ukukmhd.ac.ukukmhr.ac.ukukmsn.ac.ukukndn.ac.ukuknet.ac.ukukngi.ac.ukuknibc.ac.ukukoln.ac.ukukorea.ac.ukukpass.ac.ukukpmc.ac.ukukpmcplus.ac.ukukpubmedcentral.ac.ukukqcd.ac.uk!ukresearchandinnovation.ac.uk
ukrheeo.ac.uk
+ukri.ac.uk
+ukro.ac.uk
+ukrr.ac.ukukscl.ac.ukukserp.ac.ukuksrn.ac.ukukssdc.ac.uk
+ukt0.ac.ukuktrc.ac.ukfoxsports.com.gtukupc.ac.ukfoxsports.com.ecukzikaresponse.ac.uk
+ulcc.ac.uk
ulh.ac.ukulifestyle.com.hkfoxsports.com.co
ull.ac.ukfoxsports.com.brfoxsports.com.boulsop.ac.uk
+ulst.ac.ukulster.ac.uk
+ulth.ac.ukfoxsports.com.arfoxsports.co.vefoxesacademy.ac.ukultralab.ac.ukfourface.nodesnoop.comfoundationyear.ac.ukumagazine.com.hkforum.xinbao.de
+umds.ac.uk
ac.jiruan.net
+umis.ac.ukumist.ac.uk
ums.ac.ukumslg.ac.uk
+umtc.ac.ukacacia.ac.ukacademic-clinician.ac.ukunblock.cn.comforum.palmislife.comforum.omy.sgforum.mymaji.comforum.my903.comforum.idsam.comforum.cyberctm.comforum.baby-kingdom.comfortunecentre.ac.uk
fortune.ac.ukfortitude-group.ac.ukforthvalley.ac.ukforte.ac.uk$ underpinningexcellenceinhe.ac.uk$ understanding-inequalities.ac.ukunderstandingsociety.ac.uk
forster.ac.ukformission.ac.ukforestyouth.ac.ukuni-east.ac.ukforestsixth.ac.ukunialliance.ac.uk
unidesk.ac.ukfoodsecurity.ac.ukunification.org.tw
unilang.ac.ukfoodchain.ac.ukunion.ac.ukfonts.googleadapis.com
unis4ne.ac.ukfontfiles.googleadapis.comunistats.ac.ukunisurreydirect.ac.ukuniswales.ac.uk
fom.ac.ukunitedcollegegroup.ac.ukunitedcollegesgroup.ac.ukfolkestonecollege.ac.ukunity.ac.ukfocus.ac.uk
+fmlm.ac.ukunivault.ac.uk
fmg.ac.uk
+fmdv.ac.uk
fmc.ac.ukfluids.ac.ukuniversities-scotland.ac.ukuniversitiesengland.ac.uk#universitiesfornottingham.ac.ukuniversitieshr.ac.ukuniversitiesinlondon.ac.ukuniversitiesireland.ac.uk%!universitiesnorthernireland.ac.ukuniversitiesscotland.ac.ukuniversitiesuk.ac.ukuniversitieswales.ac.ukuniversitiesweek.ac.ukuniversitieswm.ac.ukuniversity-alliance.ac.uk$ university-central-england.ac.uk!university-of-cambridge.ac.ukuniversityacademy92.ac.uk%!universitycampusscarborough.ac.uk universitycentreharlow.ac.uk"universitycentrehastings.ac.uk"universitycentresouthend.ac.uk#universitycentrestratford.ac.uk"universitycentrethurrock.ac.ukuniversitychairs.ac.uk#universitycollegefalmouth.ac.uk&"universitycollegescarborough.ac.ukuniversityenglish.ac.ukuniversityofcambridge.ac.uk universityofchichester.ac.ukuniversityoflondon.ac.uk!universityofscarborough.ac.uk($universityofscarboroughcollege.ac.ukuniversityofsuffolk.ac.uk universityofwestlondon.ac.ukflavournetwork.ac.uk!universityquarter-stoke.ac.uk#universitysquarestratford.ac.ukflatmates.com.auflame.ac.uk
+fkse.ac.uk
unl.ac.ukfiscalstudies.ac.uk
unn.ac.ukfirstprivatebank.com.mmfirstchancesfife.ac.ukfirestonecomercial.com.mxfirestonecomercial.com.cofirestonecomercial.com.brfirestonecomercial.com.arfirestonecomercial.co.crfirestone.com.mxfirestone.com.cofirestone.com.brfirestone.com.arfirestone.co.crfireservicecollege.ac.ukfireflyresearch.ac.uk%!firebase-settings.crashlytics.com
uod.ac.ukfircroft.ac.uk
uol.ac.uk
uos.ac.uk
+fipc.ac.uk
upa.ac.ukupdate.crashlytics.com
updates.ac.ukfinishinfo.com.au
+upen.ac.ukfinishinfo.com.arfinishbrasil.com.br
finish.com.tr
finish.com.hrfinish.co.zafinish.co.ukfinish.co.nzfinish.co.kr
finesse.ac.uk
fineart.ac.ukfinder.ac.ukfind-cdt.ac.ukfilton.ac.ukfilton-college.ac.ukfilt-coll.ac.uk
+upmg.ac.ukfilmy.olabloga.plfilmesporno.net.brfilmesporno.com.brfilmandsound.ac.ukfifeglen.ac.uk
+fife.ac.ukfiddle.jshell.net
+ficm.ac.ukfibre-diffraction.ac.ukurbanbigdatacentre.ac.uk
+fgls.ac.ukurbanfloodresilience.ac.ukurbanflows.ac.ukurbanlivinglab.ac.ukurbanobservatory.ac.uk
+fflm.ac.uk
ffc.ac.ukfetalmedicine.ac.ukfermanaghcoll.ac.ukfeminizingpolitics.ac.uk
+felp.ac.ukfehesorp.ac.uk
+fefc.ac.ukfeeds.fileforum.comusablepast.ac.ukfederalsurrey.ac.ukfederalschool.ac.uk
+fdtl.ac.uk
fdf.ac.uk
+fcrt.ac.uk
+fcot.ac.uk
fca.ac.ukuse-of-mans.ac.uk
fba.ac.ukfault-analysis-group.ac.uk
fastech.ac.ukuserapi.nytlog.com"fashiontechnologyacademy.ac.ukfashionretailacademy.ac.ukusers.skynet.befashionretail.ac.uk"fashioningtheearlymodern.ac.ukushare.ac.ukushaw.ac.ukushuarencity.echainhost.comusinfo.state.govfaronicswise.co.ukfaronics.com.sgusmgtcg.ning.com
usno.navy.milfaronics.com.auuspcollege.ac.ukusstratford.ac.ukrealcaledonian.ac.uk
+ustc.ac.ukfaronics.co.uk
farnham.ac.ukfarnboroughsfc2.ac.ukfarnboroughsfc.ac.ukfarnboroughcollege.ac.uk
usw.ac.ukutcreading.ac.ukfarnborough.ac.uk
farn-ct.ac.ukfarmplus.ac.ukfarmington.ac.uk
fareham.ac.uk
faraday.ac.ukfangong.forums-free.com
uuk.ac.ukfamous.ac.ukfamilymart.com.phfamilymart.com.myfamilylifestudy.ac.uk
family.com.twfamily.co.jpfamifun.com.twfalungong.org.ukfalundafa.org.twfalun.caltech.edufalmouthmarineschool.ac.ukfalmouthexeterplus.ac.ukfalmouth.ac.ukfalkirkcollege.ac.uk"fairfieldopportunityfarm.ac.ukfairfieldfarmcollege.ac.ukfairbairn.ac.ukfailte.ac.ukfacoccmed.ac.uk
faclair.ac.ukfacilities.ac.uk
+uvac.ac.ukface3d.ac.uk
+face.ac.ukfablabplymouth.ac.uk
+faam.ac.ukuwb-global.ac.ukuwcatlantic.ac.ukuwchgyfrifiaduracymru.ac.ukuwe-bristol.ac.uk
uwe.ac.ukuwern.ac.uk
+uwic.ac.ukuwinat.ac.uk
uwl.ac.ukf-boro-sfc.ac.uk
uws.ac.ukuwtsd.ac.ukuwtsdlondon.ac.ukuxbridge.ac.ukuxbridgecollege.ac.uk
experts.ac.ukuyghur.co.ukexperienceworks.ac.ukexondomesday.ac.ukexeterms.ac.ukexetermrcsdf.ac.uk!exetermathematicsschool.ac.ukexeterdeafacademy.ac.ukexetercollege.ac.ukexeter.ac.ukexemplashe.ac.ukuygur.fc2web.comexe-coll.ac.ukexchange.ac.ukexcellencelondon.ac.ukexcellence.ac.ukv-resort.ac.uk
exam-ta.ac.ukex.ac.uk
+ewva.ac.uk
+ewrs.ac.uk
+ewlc.ac.ukevolve.ac.uk
evesham.ac.uk everymantheatrearchive.ac.uk
eva.ac.ukeuropeunit.ac.uk
euromod.ac.uk
vaccine.ac.uk
+vads.ac.ukeurobrox.ac.uk
+eued.ac.uk!eu-west-101.myhuaweicloud.comeu-west-0.myhuaweicloud.comeu-moscow.myqcloud.comeu-frankfurt.myqcloud.comettrade.com.hk
ets.ac.uketpress.com.hketp-scotland.ac.uketools.ncol.cometnet.com.hk
vam.ac.ukvamsas.ac.ukethos.ac.ukethnicity.ac.ukethicsguidebook.ac.uketextbooks.ac.uketcfhe.ac.uk
etc.ac.uketbc.com.hketaa.org.auvanish.co.idvanish.co.ilvanish.co.invanish.co.nzvanish.co.ukvanish.co.za
vanish.com.ar
vanish.com.br
vanish.com.co
vanish.com.hr
vanish.com.mx
vanish.com.my
vanish.com.pegreshamcollege.ac.uk
vanish.com.trestudio360.com.coessexacl.ac.ukessex.ac.ukesrcsocietytoday.ac.ukesrcmanchesterfest.ac.ukesrcfestival.ac.uk
+esrc.ac.uk
+espn.co.ukespadoldettol.com.ar
+espa.ac.ukespa-headlines.ac.ukesp-scotland.ac.uk
eso.ac.uk
+esnw.ac.ukesiss.ac.uk
+esim.ac.uk
esi.ac.ukesher.ac.ukvanishbancaseulook.com.breshcru.ac.ukesg.t91y.com
esg.ac.ukvanishstains.com.aueselondon.ac.uk
ese.ac.uk
+esds.ac.uk
+esdi.ac.ukescp-eap.ac.ukvarndean.ac.uk
+vast.ac.ukescoe.ac.ukescience.ac.ukescience-etf.ac.uk
vaughan.ac.uk
+escg.ac.ukescapestudios.co.ukescapestudios.ac.uk
escape.com.auescalate.ac.uk
esc.ac.ukesala.ac.uk
+erpe.ac.uk
erp.ac.uk
+vcol.ac.ukvcoll.ac.ukerotera.blogo.jperodouga.8sp.bizerodou.tousatu.funvds.rightster.com
+ernw.ac.ukerini.ac.uk
eri.ac.ukeresearchsouth.ac.uk
+eres.ac.uk
erc.ac.uk
erbecdt.ac.uk
+veet.co.id
+veet.co.in
+veet.co.kr
+veet.co.nz
+veet.co.uk
+veet.co.zaeraysoft.com.trveet.com.arveet.com.auveet.com.bdveet.com.brveet.com.coveet.com.hkveet.com.mxveet.com.myveet.com.phveet.com.pkveet.com.sgveet.com.tr
erasmus.ac.uk
eracom.com.tw
era.ac.ukequistudy.ac.uk
equator.ac.ukequalityhigher.ac.ukequal.ac.ukepsrc.ac.uk+'epsrc-cim-macromoleculartherapies.ac.ukepsrc-centre-lime.ac.uk
epsilon.ac.uk
eps.ac.ukepress.ac.ukeprc.com.hkepping-forest.ac.uk
+eppi.ac.ukeportfolios.ac.ukepochtimes.com.uaepochtimes.com.twepochtimes.com.sgepochtimes.com.brepochtimes.com.auepochtimes.co.ukepochtimes.co.krepochtimes.co.ilepoch.org.il
+epne.ac.uk
epicure.ac.ukepics.ac.uk
+epic.ac.uk
epc.ac.ukenvironment-health.ac.uk
enveast.ac.ukenterpriseresearch.ac.ukenterprisebydesign.ac.ukenterprise.ac.ukensfc.ac.ukensemblepurchasing.ac.ukensemble.ac.uk
+ensa.ac.uk
+enos.ac.ukenorf.ac.ukenmat.ac.ukenlighten.org.twenhancementthemes.ac.ukengsc.ac.ukenglishfromengland.co.ukenglishassociation.ac.ukengineeringsigns.ac.uk!engineeringnonlinearity.ac.ukengineering.ac.uk
engcetl.ac.ukengageni.ac.ukengageinresearch.ac.ukenfamama.com.phenfamama.com.ar
verifid.ac.ukenfagrow.com.sgenfagrow.com.phenfagrow.com.myenfagrow.com.bnenfagrow.co.inenfabebe3.com.arenfabebe.com.veenfabebe.com.peverisign.co.inverisign.co.ukenfabebe.com.mxverisign.com.auverisign.com.brverisign.com.esverisign.com.hkverisign.com.sgverisign.com.twverisign.com.vnenfabebe.com.ecenfabebe.com.doenfabebe.com.coenfabebe.com.brenfa.com.vn
+enfa.co.idenergystorage-cdt.ac.ukenergyforchange.ac.ukenergybiographies.ac.ukenergy2050.ac.ukenbit.ac.uk
en.hao123.comen.favotter.neten-compass.ac.uk
emwprep.ac.uk
+emua.ac.ukemttp.ac.uk
ems.ac.uk
emr.ac.ukemphasis.ac.uk
+emol.ac.ukemo-pain.ac.ukemilylau.org.hkemidsvikings.ac.ukemgrad.ac.uk
emedlab.ac.uk
+emec.ac.uk
eme.ac.uk
emc.ac.uk
+embs.ac.ukembl-ebi.ac.uk
+emas.ac.ukemail-bimm.ac.ukemahsn.ac.uk
+emac.co.inem-toolkit.ac.uk
vetgate.ac.ukvetnetlln.ac.ukvetschools.ac.ukvetschoolscouncil.ac.ukvetset2go.ac.ukvetvaccnet.ac.uk
+elum.ac.uk
elt.ac.uk
+elsa.ac.ukelsa-project.ac.uk
+elrc.ac.ukelrah.ac.uk
elp.ac.uk
+elne.ac.ukvfsco.co.ukvfsco.co.za
elmwood.ac.ukvfsco.com.auvfsco.com.brvfsco.com.trelliotthudsoncollege.ac.uk!elizabethmontagunetwork.ac.ukelixir.ac.ukelite.ac.ukelihe.ac.uk
+elib.ac.ukelectricalmachineshub.ac.ukelearningresearch.ac.ukelearningnortheast.ac.ukelearning.ac.ukelder-cove.ac.uk
elc.ac.ukelatt.ac.ukelanguages.ac.ukeklearning.ac.ukekcgroup.ac.uk
+eius.ac.uk
+eira.ac.ukeinfrastructuresouth.ac.ukeinfrastructureforum.ac.uk
+eidc.ac.ukeicdt.ac.uk
ehu.ac.ukehche.ac.ukegyptrevolution2011.ac.ukegmontbooks.co.ukefutures.ac.uk
+vft.com.tw
efs.ac.uk
vge.ac.ukefficiencyexchange.ac.uk
+vgta.ac.uk
efetedc.ac.ukefcc.org.hk
efc.ac.ukeevlxtra.ac.ukeevlextra.ac.uk
+eevl.ac.uk
ees.ac.uk
+eera.ac.uk
eep.ac.uk
+eecm.ac.ukeeas.europa.euedwardllwyd.ac.ukedward-greene.ac.ukvicarious.ac.uk
eduserv.ac.ukvictoriacountyhistory.ac.uk
eduroam.ac.uk'#educationpartnershipnortheast.ac.uk educationpartnershipne.ac.uk educationlondonconnect.ac.ukvideo.aol.caacademic.eb.com
video.aol.comvideo.fdbox.comedtech.ac.ukvideoactive.ac.uk
edshare.ac.ukedlab.ac.ukedinburghtc.ac.uk"edinburghstelfordcollege.ac.ukedinburghstelford.ac.ukedinburghcollege.ac.ukedinburgh.ac.ukedina.ac.ukedifhe.ac.ukedhcc.ac.ukedgehotelschool.ac.ukedgehilluniversity.ac.ukedgehill.ac.uk($academicpaediatricsassociation.ac.ukedge-hill-college.ac.ukedcoll.ac.uk
edc.ac.ukvideosdepornografia.blog.brvideosdesexo.br.comvideosdesexo.com.br
+edam.ac.uk
ed6.ac.uked.ac.uk
ed-coll.ac.ukvideosporno.com.br
ecw.ac.uk
ecu.ac.ukecsm.vs.com
+ecsa.ac.ukecosystemservices.ac.ukvidlearn.ac.uk
+ecos.ac.ukeconomicsnetwork.ac.ukeconomics.ac.ukeconomicfutures.ac.uk
ecn.ac.uk
+eclw.ac.uk
eclipse.ac.ukecfa.org.tweceta.ac.ukecert.gov.hk
+ecdc.ac.ukecclescollege.ac.uk
+ecci.ac.uk
ecc.ac.ukecampus-leeds.ac.uk
eca.ac.ukebslondon.ac.uk
+ebsl.ac.uk
ebs.ac.uk
+ebrc.ac.ukebrahimcollege.ac.ukacademicpeerlearning.ac.ukebnet.ac.uk
ebi.ac.uk
+ebc.net.tw
ebaycbt.co.krebay.com.sgebay.com.phebay.com.myebay.com.mtebay.com.hkebay.com.ecebay.com.auebay.com.ar
+ebay.co.za
+ebay.co.ve
+ebay.co.uk
+ebay.co.nz
+ebam.ac.ukeatthatfrog.ac.ukeastweek.com.hkeasttouch.com.hkeastsurreycollege.ac.ukeastsurrey.ac.ukeastscotbiodtp.ac.ukeastridingcollege.ac.ukeastridingadultlearn.ac.ukeastonotley.ac.ukeaston.ac.ukeaston-college.ac.ukeastnorfolk.ac.ukeastmidlandscetls.ac.ukeastmallingresearch.ac.ukeastleigh.ac.ukeastkentcollege.ac.ukeastkent.ac.ukeasternarc.ac.ukeastendcbc.ac.ukvirtualcollege.ac.ukeastdurham.ac.ukeastdevon.ac.ukeastcoast.ac.ukeastchem.ac.ukeastberks.ac.ukeastantrim-institute.ac.ukeast15.ac.ukeast-yorks-coll.ac.ukvirulogenome.ac.ukeast-london.ac.ukeast-anglia.ac.ukeaseit-eng.ac.uk
+ease.ac.ukearthsciencescotland.ac.uk
+visa.co.ao
+visa.co.cr
+visa.co.id
+visa.co.il
+visa.co.in
+visa.co.jp
+visa.co.ke
+visa.co.ni
+visa.co.nz
+visa.co.th
+visa.co.uk
+visa.co.ve
+visa.co.zaearlyphonography.ac.ukvisa.com.agvisa.com.aivisa.com.arvisa.com.auvisa.com.azvisa.com.bovisa.com.brvisa.com.bsvisa.com.bzvisa.com.covisa.com.cyvisa.com.dmvisa.com.dovisa.com.ecvisa.com.gevisa.com.gtvisa.com.gyvisa.com.hkvisa.com.hnvisa.com.hrvisa.com.jmvisa.com.khvisa.com.knvisa.com.kzvisa.com.lcvisa.com.lkvisa.com.msvisa.com.mxvisa.com.myvisa.com.ngvisa.com.pavisa.com.pevisa.com.phvisa.com.prvisa.com.pyvisa.com.ruvisa.com.sgvisa.com.svvisa.com.trvisa.com.ttvisa.com.twvisa.com.uavisa.com.uyvisa.com.vcvisa.com.vivisa.com.vn%!earlymoderndressandtextiles.ac.ukearlyenglishlaws.ac.ukearlhaminstitute.ac.uk
earlham.ac.ukeandc-sirgar.ac.ukealingcoll.ac.uk
eakorea.co.kreaifhe.ac.uk
+e3an.ac.uk
e-zone.com.hke-studio.ac.uke-scrf.ac.uke-science.ac.uke-rihs.ac.uke-merlin.ac.uke-liv.ac.uke-learningresearch.ac.uke-learningnorthwest.ac.uk
e-info.org.twe-htpx.ac.uke-classical.com.twe-c-a.ac.ukdynupdate.no-ip.comdynamicdns.org.ukdynamicdns.me.ukdynamicdns.co.ukdynamicdialects.ac.uk
dynacw.com.tw
dynacw.com.hkdynacw.co.jp
dwl.ac.ukdutch.ac.ukdurhampriory.ac.ukdurham.ac.ukdurex.com.trdurex.com.sgdurex.com.pkdurex.com.phdurex.com.pedurex.com.ngdurex.com.mydurex.com.hrdurex.com.codurex.com.bddurex.com.audurex.co.zadurex.co.ukdurex.co.thdurex.co.nzdurex.co.ildurex.co.id
dur.ac.uk!dunstaffnage-marine-lab.ac.ukdunstable.ac.uk
+dune.ac.uk$ visaluxuryhotelcollection.com.br$ visaluxuryhotelcollection.com.mxdundeecollege.ac.ukvisaluxuryhotels.com.ardundeecoll.ac.ukdundeeandanguscollege.ac.ukdundeeandangus.ac.ukdundee.ac.ukdundee-tech.ac.ukvisasignature.co.kr
+dund.ac.uk
dun.ac.ukdumgal.ac.ukdudleylearning.ac.ukdudleylearners.ac.ukvisionnaires.ac.ukdudleycol.ac.ukdudley.ac.ukduckduckgo.com.twduckduckgo.com.mxduckduckgo.co.ukduchy.ac.ukvisnet.ac.ukvista.ac.ukducere.ac.ukvisual-evidence.ac.ukvisualarts.gr.jpvisuallearninglab.ac.ukvisualrhetoric.ac.ukdtc-online.ac.ukdt-toolkit.ac.ukvisualstudio.co.uk
dsw.ac.uk
dst-dtc.ac.uk
dsl.ac.ukvitae.ac.ukvital.ac.uk
+dsfc.ac.uk
+dses.ac.ukdscis.ac.ukdrweb.co.jp
+drns.ac.uk
driving.co.uk
drindod.ac.uk
dri.ac.uk
drg.ac.ukdreeam.ac.ukdream-cdt.ac.ukdrawnevidence.ac.ukviznet.ac.ukdrakemarineinstitute.ac.ukdragonip.ac.ukvjmedia.com.hk
dpscitt.ac.uk
+dpp.org.tw
+dpoc.ac.ukdownload.qpdp1.netdownload.qcpp1.netdownload.qatp1.netdownload.aircrack-ng.orgdovertechnicalcollege.ac.ukdovercollege.ac.ukdotrural.ac.ukdorset-al.ac.ukdorset-acl.ac.ukdoncaster.ac.uk
don.ac.ukdomesticabuserisk.ac.ukdombosco.com.brdomaintoday.com.audomain.club.twdolf.org.hkdoitpoms.ac.ukdogslife.ac.ukdocusend.ac.ukdncolleges.ac.uk
dna.ac.ukdna-network.ac.uk
+dmuk.ac.uk
dmu.ac.uk
dmm.co.jp
dml.ac.ukdmgmediaprivacy.co.uk
dlsite.com.tw
dls.ac.ukdlib.eastview.com
+dlhe.ac.uk
+dl4d.ac.uk
+dl.box.netdl.ac.ukdiversityuk.ac.ukdivas.com.uydistribution.qpdp1.netdistribution.qcpp1.netdistribution.qatp1.netdistinct.ac.ukdistillate.ac.ukdisneyturkiye.com.trdisneytickets.co.ukdisneyplus.bn5x.netdisneymagicmoments.gen.trdisneymagicmoments.co.zadisneymagicmoments.co.ukdisneymagicmoments.co.il%!academyforhealthcarescience.ac.uk
disney.com.tw
disney.com.hk
disney.com.br
disney.com.audisney.co.zadisney.co.uk
vn.hao123.comdisney.co.thdisney.co.krdisney.co.jpdisney.co.il
disinhe.ac.ukdiscuss.com.hk!discoveryinvestigations.ac.ukdiscovery.ac.ukdiscovereconomics.ac.ukdiscover.ac.ukdisabilitytoolkits.ac.ukdisability.ac.ukdirac.ac.ukdippam.ac.ukdingchin.com.twdilstoncollege.ac.ukdigitwin.ac.ukdigitrans.ac.uk
digitop.ac.ukdigitisingscotland.ac.uk digitaltransformations.ac.ukdigitalsocialresearch.ac.ukdigitalscholarship.ac.ukdigitallifespan.ac.ukdigitalcreativity.ac.uk
digimap.ac.ukdietandhealth.ac.ukdidimobility.co.jpdidet.ac.ukdickwhiteacademy.ac.ukdiasporas.ac.ukdiarrheafan.livedoor.blogdiamondgirls.co.uk
diamond.ac.ukdiamm.ac.ukdiabetes-healthnet.ac.ukdhlestudio.com.co
dhi.ac.ukvodafone.co.uk
+dghe.ac.ukvodafone.com.auvodafone.com.trdewsbury.ac.ukdewcol.ac.ukdevolution.ac.ukvoila.ac.ukdevelopers.box.netdeveloper.allizom.orgvolstudy.ac.ukdevelopebp.ac.ukdettolsitishield.co.in
dettol.com.sg
dettol.com.ng
dettol.com.my
dettol.com.hk
dettol.com.eg
dettol.com.br
dettol.com.bd
dettol.com.audettol.co.ukvolvobuses.co.nzvolvobuses.co.ukvolvobuses.co.zadettol.co.nzvolvobuses.com.arvolvobuses.com.auvolvobuses.com.brvolvobuses.com.kwvolvobuses.com.ptvolvobuses.com.twdettol.co.kedettol.co.indettol.co.iddestiny.xfiles.todesire-xx.supertop-100.comderwentside.ac.ukderwencollege.ac.ukderwen.ac.ukderweb.ac.ukderekhsu.homeip.netderbyshire.ac.ukderbyonline.ac.ukderbycollege.ac.ukderbyals.ac.ukderby.ac.ukderby-college.ac.ukdentpostgradwales.ac.ukdentalschoolscouncil.ac.uk
den.ac.ukdemos.ac.ukdemo.opera-mini.net#dementiaresearchinstitute.ac.ukdementianet.ac.ukdemarco-archive.ac.ukdemand.ac.uk
deluxe.com.hkdelicious.com.audefenceacademy.ac.ukvolvogroup.com.brdefac.ac.uk
deeside.ac.uk
deeping.ac.ukdeepfreeze.com.brdeepfreeze.co.uk
+deed.ac.uk
decymru.ac.uk
dec.ac.uk
+debs.ac.uk
+deas.ac.ukdearne-coll.ac.ukdeansofscience.ac.ukdeafheritagenetwork.ac.ukvolvopenta.com.brdeafandcreative.ac.ukde-montfort.ac.uk
+ddns.me.uk
ddi.ac.uk
+ddc.com.tw
dct.ac.uk
dcg.ac.uk
+dcdp.ac.uk
dcd.ac.uk
dcc.ac.uk
dca.ac.ukdavidlewis.ac.uk%!daventrylearningpartnership.ac.uk
davcoll.ac.uk
datasig.ac.ukdatashield.ac.ukdatagrid.ac.ukdatafuturesalphapilot.ac.ukdata.flurry.com
+data.ac.ukdata-service.ac.ukdata-intensive-cdt.ac.ukdata-archive.ac.ukdassh.ac.ukdash-1.ac.uk
+dasg.ac.ukdarwinproject.ac.ukdarwin.ac.ukdarts.ac.ukdartington.ac.uk%!darlingtonlearningandskills.ac.ukvolvotrucks.co.aovolvotrucks.co.bwvolvotrucks.co.ilvolvotrucks.co.mzvolvotrucks.co.navolvotrucks.co.nzvolvotrucks.co.ukvolvotrucks.co.zavolvotrucks.co.zmvolvotrucks.co.zwdarlington.ac.ukvolvotrucks.com.arvolvotrucks.com.auvolvotrucks.com.bnvolvotrucks.com.brvolvotrucks.com.covolvotrucks.com.kwvolvotrucks.com.ptvolvotrucks.com.trvolvotrucks.com.twvolvotrucks.com.uadaresbury.ac.ukdaodu14.jigsy.comdance-archives.ac.ukdalailamavisit.org.nzdajusha.baywords.comdailytelegraph.com.audailynews.sina.comdailymail.com.audailymail.co.ukdafni.ac.uk
+dabr.co.uk&"cynghrairstrategolaberbangor.ac.ukcymru.ac.uk
cymoedd.ac.uk"cymdeithasddysgedigcymru.ac.ukcymdeithasddysgedig.ac.uk
cym.ac.uk
cygames.co.jpcyclops-network.ac.ukcybertrust.ne.jpcybertrust.co.jpcybersecuritycdt.ac.ukcybersecurity-cdt.ac.ukcyberghost.natado.comcyber-college.ac.uk
cws.ac.uk
+cwrc.ac.ukcwcfe.ac.uk
cwc.ac.uk
cwa.ac.uk
cw.com.tw
cvu.ac.uk
cvs.ac.uk
cvr.ac.uk
+cvma.ac.uk
+cvcp.ac.uk
+cuwm.ac.uk
cuv.ac.uk
+cutg.ac.ukcusplondon.ac.uk
+cusp.ac.uk
+curl.ac.ukcurioustravellers.ac.ukcurdev-fe-ni.ac.uk
curator.ac.uk
+cup.com.hk
+cunw.ac.ukcumbriahigherlearning.ac.ukcumbriacad.ac.uk
cumbria.ac.uk
+vows.ac.ukcumbernauld.ac.ukcumberlandlodge.ac.uk!cultureofthecountryside.ac.uk
cultiva.ac.ukcullenproject.ac.ukculham.ac.ukcukas.ac.ukcuinc.oen.twcuhop.ac.uk
cue.ac.ukcudos.ac.uk
cudassh.ac.ukcudah.ac.uk
cuc.ac.uk
+cubo.ac.uk
+ctv.com.twcttoolkit.ac.uk
+cts.com.tw
cts.ac.ukctrip.com.hkctrip.co.thctrip.co.krctrip.co.idctr-math-phys.ac.ukctkstmarys.ac.ukctksfc.ac.ukctkemmanuel.ac.ukctkaquinas.ac.uk
ctk.ac.ukctitv.com.tw
ctg.ac.ukctexcel.com.hkctee.com.twctcrm.ac.uk
ctc.ac.ukcta-observatory.ac.uk
ct.org.twct-toolkit.ac.uk
+csw.org.uk
csu.ac.uk
+cssd.ac.uk
css.pixnet.in
+csrw.ac.uk
+csrs.ac.uk
+csrf.ac.ukcsn-cetl.ac.ukcsmen.ac.uk
csm.ac.uk
+cshl.ac.uk
csg.ac.ukcserge.ac.uk
+cser.ac.uk
+csec.ac.uk
+csd3.ac.ukcscuk.ac.uk
+csct.ac.uk
+cscd.ac.uk
csc.ac.uk
crypton.co.jp
cruisse.ac.ukcrucible-cetl.ac.uk
+crsp.ac.ukcrsbi.ac.ukcroydonsec.ac.ukcroydonhe.ac.ukcroydonacl.ac.ukcroydon6f.ac.uk
croydon.ac.ukcrossfire.co.kr
+cros.ac.ukcropyields.ac.ukcropdiversity.ac.uk!crontonsixthformcollege.ac.ukcrontonsixthform.ac.uk
cronton.ac.uk
crocels.ac.ukcriticaltheology.ac.ukcriticalfriend.ac.ukcritical.ac.uk
critica.ac.ukcricklade.ac.ukcrick.ac.ukcrichton.ac.ukcricbristol.ac.uk
+cric.ac.uk
cri.ac.uk
+vssn.ac.uk
+vtri.ac.uk
vts.ac.uk
crh.ac.ukvtstutorials.ac.uk
+crfr.ac.uk
+crew.ac.ukcrestresearch.ac.ukcrest.ac.ukcrescentlearning.ac.ukcresc.ac.ukcreds.ac.ukcreditlink-east.ac.ukcreativity-cetl.ac.uk
w.idaiwan.comcreativeindustries.ac.ukcreate.ac.ukcream.ac.uk
crawley.ac.ukcrawley-college.ac.ukcraven-college.ac.ukcrash.ac.ukcranfield.ac.uk
wac.ac.uk
+wacc.ac.uk
+waes.ac.uk
waf.ac.uk
+cran.ac.uk
+cral.ac.uk
+cptt.ac.uk
+cppr.ac.uk
+cppe.ac.uk
+cpib.ac.uk
+cphc.ac.ukwaittingfor001.weebly.com
+cpel.ac.uk
wakcoll.ac.ukwakefield.ac.ukcpdnoticeboard.ac.uk
cpd4phd.ac.uk
+walc.ac.ukwalcat.ac.ukwales.ac.ukwales1801-1919.ac.ukwalesdtc.ac.ukwalesdtp.ac.ukwalesglobalcampus.ac.ukwalesmep.ac.ukwalker-institute.ac.ukwalker.ac.ukcpd25.ac.uk
cpc.ac.ukcowork.ac.uk
+cowc.ac.ukcovuniapps.ac.ukcovuni.ac.ukcoventryuniversity.ac.ukcoventrycollege.ac.ukcoventry.ac.ukcove4careinkent.ac.ukcovcollege.ac.uk
cov.ac.ukwalsall-coce.ac.ukwalsallcollege.ac.ukcourtauld.ac.ukcouriermail.com.au
waltham.ac.ukwalthamintcollege.ac.ukcouplecam.co.uk
+coup.ac.ukcountytraining.ac.ukcounsellingresearch.ac.uk$ councilofhealthcarescience.ac.ukcoulsdon.ac.uk
+cotr.ac.uk
cot.ac.ukcossgp.myqcloud.comcospop.ac.ukcosmic.monar.chcoshk.myqcloud.comcosger.myqcloud.comcoseelis.ac.ukcosca.myqcloud.com
+cosc.ac.ukcorpasnagaidhlig.ac.ukcornwall.ac.ukcornwall-vithform.ac.ukcornwall-acl.ac.ukcornell-brown-penn.ac.uk
+core.ac.ukcordwainers.ac.uk
copstat.ac.uk
+cops.ac.ukcopior.ac.ukwarbler.iconfactory.netcopim.ac.ukcopac.ac.ukcoolloud.org.twwarkscol.ac.ukcontests.twilio.com
+warr.ac.ukwarrington.ac.ukcontent.googleadapis.com
warwick.ac.ukwarwickequine.ac.ukwarwickhri.ac.ukwarwickshire.ac.ukcontemp-hist-arch.ac.ukconsultants.ac.ukconsilience.ac.ukconservatoiresuk.ac.uk
connell.ac.ukconnectedeverything.ac.uk
connect.ac.ukconnect-ed.ac.ukconfuciusinstitute.ac.uk
conform.ac.ukconfetti.ac.ukconel.ac.ukconductus.ac.ukcondovercollege.ac.ukcondenastcollege.ac.ukconcordats.ac.ukconcordat.ac.ukcomputing.ac.uk
complex.ac.ukcompetitionpolicy.ac.uk
commnet.ac.ukcomm-coll-hackney.ac.ukcomics.ac.ukcomet-study.ac.ukcombinedhonours.ac.ukcolpet.ac.ukcollyers.ac.uk
collins.co.ukcollemergencymed.ac.ukcollegewebsites.ac.ukwaterwisercdt.ac.ukcollegeswales.ac.ukcollegesscotland.ac.ukwaveomoney.com.mmcollegesni.ac.ukwaverleyabbeycollege.ac.ukcollegeofteaching.ac.ukcollegeofteachers.ac.ukcollegeofosteopaths.ac.uk#collegedevelopmentnetwork.ac.ukcollegecareearlyed.ac.ukcollege-falmouth.ac.uk
wbs.ac.ukcollaborateni.ac.uk
wcc.ac.ukwccsj.ac.uk
wcg.ac.uk
+wcmd.ac.uk
+wcoh.ac.uk
wcs.ac.uk
wct.ac.ukcollabora.co.ukcoliriodemacho.com.brcolegsirgar.ac.ukwddcp.ac.ukcolegsirbenfro.ac.ukcolegpenybont.ac.uk
wea.ac.ukweald.ac.uk
wealth.com.twcolegmorgannwg.ac.ukcoleggwyrabertawe.ac.ukcoleggwent.ac.ukwearside.ac.ukcolegelidyr.ac.ukcolegdewisant.ac.ukcolegcymraeg.ac.ukcolegaucymru.ac.ukcoleg-powys.ac.ukcolchsfc.ac.ukweb.nebula-emby.comcolchester.ac.ukcolch-inst.ac.ukcolcc.ac.uk
+colc.ac.uk
col.ac.ukcol-westanglia.ac.ukcoinrail.co.kr
coinone.co.kr
+cogc.ac.uk
cof.ac.uk
+coem.ac.ukwebex.co.inwebex.co.itwebex.co.jpwebex.co.krwebex.co.nzwebex.co.ukcods-nursing.ac.ukwebex.com.auwebex.com.brwebex.com.hkwebex.com.mxcodima.ac.uk
+code.ac.ukcod-health.ac.ukcocorees.ac.ukcockcroft.ac.ukcochrane.ac.ukcochrane-airways.ac.uk
coccfea.ac.ukcobra.ac.ukcoatbridge.ac.uk
+coat.co.jp
co.ng.mil co-operativeuniversity.ac.ukco-operative.ac.uk!co-operative-university.ac.ukwebobjects.co.ukco-opcollege.ac.ukco-op.ac.uk
+cnwl.ac.ukcnnews.chosun.com
+cnmd.ac.ukcnivogue.com.auwebpa.ac.uk
+cnet.co.kr
cnbeta.com.tw!cnappinstall.googleadapis.com
+cna.com.twwebsite.informer.comcn2.streetvoice.com
webster.ac.ukcn.voa.mobicn.streetvoice.comcn.shafaqna.comcn.sandscotaicentral.comcn.ibtimes.comcn.giganews.com
cn.fmnnow.comweeklytimesnow.com.aucn.dayabook.com
cmu.ac.uk
cms.ac.uk
wego.here.comcmpcp.ac.ukacademyofmusic.ac.uk
+cmp.hku.hkcmmedia.com.tw
+cmi.org.twcmcsm.ac.ukcmcnet.ac.ukcmbi.com.hk
+cmac.ac.ukclydebank.ac.uk
+clrc.ac.uk
welbeck.ac.uk
clp.ac.ukcloudworks.ac.ukwelfareconditionality.ac.uk
+well.ac.ukwellbeing.ac.ukwellcome.ac.ukcloud.ac.ukcloser.ac.uk
clock.isc.orgwelsh-dictionary.ac.ukwelshmediumhe.ac.ukwelshsaints.ac.uk
cln.ac.ukclinicalskillscentre.ac.ukclinicalnotes.ac.ukcling.omy.sgclimb.ac.ukclimatechangewales.ac.ukclimate-lab-book.ac.ukcliffcollege.ac.ukclickserver.googleads.comclickserve.cc-dt.com
+wern.ac.uk
+wesc.ac.ukwescfoundation.ac.uk
+wess.ac.ukwessex.ac.ukwessexsfc.ac.ukwest-cheshire.ac.ukwest-lothian.ac.ukwest-thames.ac.ukclickedu.co.ukwestchem.ac.ukwestcollegescotland.ac.ukwestcumbcoll.ac.ukwestdean.ac.ukwestengland.ac.ukclickandgovideo.ac.uk
clh.ac.ukcleveland.ac.ukwestherts.ac.ukwesthill.ac.ukwestkent.ac.ukwestkentandashford.ac.ukwestking.ac.ukclearflo.ac.ukwestlancs.ac.ukclean-cooling.ac.ukwestlondon.ac.ukwestlondoncollege.ac.ukwestlondoniot.ac.ukwestlondonuniversity.ac.ukwestminster-cfe.ac.ukwestminster.ac.ukwestminsterutc.ac.ukwestnotts.ac.ukwestofscotland.ac.ukweston.ac.ukwestonstudents.ac.ukcldr.unicode.orgwestsuffolk.ac.ukwestsuffolkcollege.ac.ukwestyorkshirecolleges.ac.ukclc-london.ac.uk
+clb.org.hkclassics.ac.ukclarin.ac.ukclarendon.ac.uk
+clad.ac.uk
clacton.ac.ukclacks.ac.ukclackmannan-college.ac.uk
+cl.d0z.netckeene.ac.ukweymouth.ac.ukweymouthcollege.ac.ukcivilwarpetitions.ac.uk
ciu.ac.uk
+wfdc.ac.uk"cityuniversitybirmingham.ac.uk
citysun.ac.uk
wgu.ac.ukcityplym.ac.ukcityofoxford.ac.ukcityoflondonbschool.ac.ukcityofglasgowcollege.ac.ukcityofglacol.ac.ukcityofbristol.ac.uk
citylit.ac.ukcitycollegesoton.ac.ukcitycollegeplymouth.ac.uk!citycollegepeterborough.ac.ukcitycollegebrighton.ac.ukcitycollege.ac.uk
citycol.ac.ukcitybathcoll.ac.uk cityandguildsartschool.ac.ukcityandguilds.ac.uk
+city.ac.ukcity-poly.ac.ukcity-and-guilds.ac.ukwhatscotlandthinks.ac.ukcitscapes.ac.uk
citics.com.hkwhatworksscotland.ac.ukwhcgroup.ac.ukcisban.ac.uk
+wheb.ac.ukcirrus.ac.ukcirre.ac.ukcirius.ac.ukwhelf.ac.ukcirencester.ac.ukciota.ac.ukwhereilive.com.au
cimcomp.ac.ukcim-laser.ac.ukcilexlawschool.ac.ukwherl.ac.uk
+cile.ac.ukcignet.ac.ukwhimn.com.auciemap.ac.uk
+cied.ac.uk
+cicl.ac.ukwhitebear.freebearblog.orgwhitegates-feu.ac.uk*&whiterose-mechanisticbiology-dtp.ac.uk;7whiterose-social-science-doctoral-training-centre.ac.ukwhiterose.ac.uk
cib.ac.uk
+cias.ac.uk
cia.ac.ukchurchill.ac.ukchuls.ac.ukchugd.ac.ukwholefoodsmarket.co.ukchtf.org.tw
+cht.com.tw
chs.ac.ukchrysaliscourses.ac.ukchristredeemer.ac.ukchristiantimes.org.hkchopinonline.ac.ukwholesem.ac.uk
+chms.ac.uk
+chlg.ac.ukchlamydia.ac.ukchiuni.ac.ukchipscohort.ac.ukchippcoll.ac.ukchipcoll.ac.ukchinesenews.net.auchinese.soifind.comchinese.irib.irchinese.donga.comchinese-empires.ac.ukchinayouth.org.hkchinaunicom.com.hkchinatown.com.auchinatimes.com.twchinasex.com.eswhystudyamerica.ac.ukwhystudyeconomics.ac.ukwhystudyenglish.ac.ukwhystudylanguages.ac.ukwhystudymaterials.ac.ukchinapress.com.my
+wias.ac.uk
+wicn.ac.ukchinapost.com.tw*&widnesandruncornsixthformcollege.ac.ukwidnesruncorn.ac.uk widnessixthformcollege.ac.uk"chinaculturalvisitinghub.ac.ukchina.ucanews.comchina-review.com.uachina-mmm.sa.comchina-mmm.jp.netchildrenofthe90s.ac.ukchilbolton.ac.ukchigroup.ac.ukchid.com.mmchicloud.ac.uk chichestercollegegroup.ac.ukchichester.ac.ukwigan-leigh.ac.uk
+wigs.ac.ukwigstoncollege.ac.ukchialumni.ac.uk
chi.ac.uk
chi-med.ac.uk"chesterfieldcollegegroup.ac.ukchesterfield.ac.uk
chester.ac.ukchest.ac.ukcheshirehe.ac.ukcheshirecolleges.ac.ukcheshire.ac.ukwiki.cnitter.comwiki.esu.imwiki.gamerp.jpwiki.moegirl.orgwiki.oauth.netwiki.phonegap.comchenel.ac.ukwikia.nocookie.netchemreact.ac.ukchemicalbiology.ac.ukcheltenham-he.ac.ukchelt.ac.ukchelmsford.ac.ukchelmsford-college.ac.ukcheib.ac.ukcheia.ac.ukcheep.ac.ukcheadlecollege.ac.ukchead.ac.ukchea-nmidlands.ac.uk
che.ac.uk
+chcc.ac.ukchat.lmsys.orgchasestudy.ac.ukchase.ac.uk$ charteredcollegeofteaching.ac.ukchart.ac.ukcharleslyellcentre.ac.ukcharlemagneseurope.ac.ukcharlemagne-icon.ac.ukchanging-arctic-ocean.ac.ukchace.ac.ukch.shvoong.comcglas.ac.uk
cgh.ac.uk
cfs.ac.uk
cfldcol.ac.ukcfhks.org.hk
+cfas.ac.ukwilberforce.ac.ukcf.ac.uk
+ceug.ac.ukcetl4musicne.ac.ukcetl4healthne.ac.ukcetis.ac.uk
+cetc.ac.ukceruk.ac.uk#certificate.revocationcheck.comcerlim.ac.ukwiltscoll.ac.ukwiltshire.ac.ukwiltshirecollege.ac.ukwimbledon-school.ac.ukwimbledon.ac.ukwimcs.ac.uk
+ceri.ac.ukwinchester.ac.uk
wincoll.ac.ukceredigion.ac.ukcercia.ac.uk
+ceoi.ac.uk&"centreonconstitutionalchange.ac.uk centreforyouthministry.ac.uk$ centreforsustainablecities.ac.uk!centreformacroeconomics.ac.ukcentralsussex.ac.ukcentralstmichaels.ac.ukcentralnottingham.ac.ukcentralcollege.ac.ukcentralbeds.ac.ukcentral-lancashire.ac.ukcentral-glasgow.ac.ukcentervillage.co.jpcentauro.com.brwindsor-forest.ac.ukcenta.ac.ukcensus.ac.ukcensus-registration.ac.uk
+cemp.ac.ukcemmap.ac.uk
winncop.ac.uk
+ceme.ac.uk"winningstudents-scotland.ac.ukwinstanley.ac.uk
+cem1.ac.uk
cem.ac.ukcelluloidfilmfutures.ac.ukcehuk.ac.uk
ceh.ac.ukceh-wallingford.ac.ukceh-nerc.ac.uk
ceg.ac.ukcefims.ac.ukceesi.ac.uk
ceelbas.ac.ukceelbas-cdt.ac.ukwirelessgroup.co.ukceeds.ac.uk
cee.ac.ukcedar.ac.ukwirralmet.ac.uk
+ceda.ac.ukcecos.ac.ukcecan.ac.ukcdtceltic.ac.ukcdt-piads.ac.uk
cdt-cmp.ac.ukwisekey.com.hkwiserd.ac.ukcdt-art-ai.ac.uk
+cdrc.ac.ukcdpa.url.tw
cdnews.com.twwitcmi.ac.ukacaric.co.jpcdn.softlayer.netcdn.seatguru.comcdn.printfriendly.comwittgen-cam.ac.uk
+wivc.ac.uk!acasadasbrasileirinhas.com.br
cdn.ac.ukcdn-images.mailchimp.com
cdd.ac.uk
+ccwp.ac.uk
+ccw.org.tw
+ccta.ac.uk
+ccsw.ac.uk
+ccsr.ac.uk
+ccse.ac.ukccscfe-cdt.ac.uk
ccs.ac.uk
+wkac.ac.uk
+ccri.ac.uk
wkc.ac.ukwkcic.ac.uk
wlc.ac.ukwlcbms.ac.ukwlcbs.ac.ukwlcnew.jigsy.comwlpms.ac.uk
wlu.ac.uk
wlv.ac.ukwlx.sowiki.netwm-air.ac.uk
+ccpq.ac.uk
wma.ac.uk
wmc.ac.uk
+wmcc.ac.ukccppetmr.ac.ukwmcollege.ac.uk
+wmcu.ac.uk
+ccpp.ac.ukccpnc.ac.ukwmhea.ac.uk
+wmin.ac.uk
+wmsf.ac.uk
+ccpn.ac.ukwmucs.ac.ukccplymouth.ac.uk
+ccpi.ac.ukccpforge.ac.ukccpem.ac.uk
wnc.ac.ukccpbiosim.ac.uk
+wnsc.ac.uk
+ccpb.ac.ukwocns.ac.uk
+ccp9.ac.uk
+ccp6.ac.uk
+ccp5.ac.uk
+ccp4.ac.uk
+ccp3.ac.ukwoking.ac.ukwolcol.ac.uk
+ccp2.ac.ukccp14.ac.ukccp13.ac.ukccp11.ac.ukwolseymanuscripts.ac.uk
+ccp1.ac.ukwolvcoll.ac.ukwolverhampton.ac.ukwolverhamptonline.ac.uk
ccp.ac.uk
ccp-wsi.ac.uk
ccp-mag.ac.ukwomenwill.com.br
+ccol.ac.uk
ccn.ac.uk
+ccms.ac.uk
won.ac.uk
ccm.ac.ukcclrc.ac.ukwoodhouse.ac.uk
ccl.ac.uk
cci.ac.ukcchsr.ac.uk
cch.ac.uk
+ccfe.ac.ukccesd.ac.uk
+ccdc.ac.uk
+cccu.ac.uk
+cccr.ac.uk
+worc.ac.ukworcester.ac.ukcccep.ac.uk
ccc.ac.ukccbintl.com.hkworkandhome.ac.uk
ccb.ac.ukworkerdemo.org.hk
+ccap.ac.uk
+ccad.ac.ukcbtc.org.hkworkingclasswriting.ac.uk"workingtogethernorthwest.ac.ukacceleratedcomputing.ac.ukworkplacementscotland.ac.uk
cbs.ac.uk1-apple.com.tw
+cbrl.ac.ukcbpar.ac.uk
+cbm.com.mmcbcdc.ac.uk
cbbank.com.mm
+cayt.ac.ukworldcurrencycard.co.zacaxton.ac.uk
caw.ac.ukcavendish.ac.uk
+cave.ac.uk
+cavc.ac.uk
+cava.ac.ukcauseway.ac.ukcathvoice.org.twcatholic.org.twcatholic.org.hkcathedralsgroup.ac.ukcatalysis-cdt.ac.ukcataloguementalhealth.ac.ukcastlereagh.ac.ukcastlecollege.ac.uk
wortech.ac.ukworthing.ac.ukcastle.ac.ukcastle-coll.ac.uk
+cast.ac.ukcasnewydd.ac.ukcasms.ac.ukcasim.ac.ukcashpassport.com.brcashpassport.co.zacasaw.ac.ukcasatibet.org.mxcartoons.ac.ukcarshalton.ac.ukcarr-lse.ac.ukcarnegiecollege.ac.ukcarnegie.ac.ukcarmer.ac.ukcarmel.ac.ukcarlisle.ac.ukcari.com.my
wqe.ac.ukwqeic.ac.ukcareerswales.ac.ukwrapp.ac.ukcareersinresearch.ac.ukwrdtc.ac.ukwrdtp.ac.ukwrekincollege.ac.uk
+wren.ac.ukcardonald.ac.ukcardinalnewman.ac.uk
wrexham.ac.ukwripa.ac.ukwritenow.ac.uk'#cardiffmetropolitanuniversity.ac.ukwriting-pad.ac.uk
writtle.ac.ukwrittlecollege.ac.uk"writtleuniversitycollege.ac.ukwrocah.ac.ukwroxton-college.ac.uk
wrssdtp.ac.uk
wsc.ac.ukwscinternational.ac.uk
+wsfc.ac.ukcardiffmet.ac.ukcardiffandvalecollege.ac.uk
cardiff.ac.ukcardiff-institute.ac.ukcarbobiocrop.ac.ukcarbo-biocrop.ac.uk
capsule.ac.uk"capitalisingoncreativity.ac.ukcapitalcitycg.ac.ukwspcr.ac.ukcapitalcct.ac.uk
wtc.ac.ukcapitalccg.ac.ukcapel.ac.ukwton-acl.ac.ukwton-adulteducation.ac.uk
+wttw.ac.uk
+cape.ac.uk
+cap.org.hkwufi.org.twcanterburytrust.ac.ukcanterburycollege.ac.ukcanterbury.ac.ukcantab.ac.uk
wulfrun.ac.uk
wun.ac.uk
+cant.ac.ukcant-col.ac.ukcanon.com.twcanon.com.trcanon.com.mycanon.com.mtwvlln.ac.ukcanon.com.mk
wvn.ac.uk
wvr.ac.ukcanon.com.hkcanon.com.cycanon.com.bycanon.com.aucanon.com.al
wwmpcrn.ac.ukcanon.co.zacanon.co.ukcanon.co.ilcanon-se.com.twcanon-ebm.com.hk1010.com.hkwww.ajsands.comwww.americorps.govwww.antd.orgwww.aolnews.comwww.cmoinc.orgwww.destinationurl.comwww.dwheeler.comwww.eastturkistan.netwww.gmiddle.comwww.gmiddle.netwww.googleadapis.comwww.idlcoyote.comwww.klip.mewww.lamenhu.comaccess-summit.ac.ukwww.linksalpha.comaccesscollege.ac.ukwww.monlamit.org
www.moztw.orgwww.orchidbbs.com
www.owind.comwww.oxid.itwww.powerpointninja.comwww.pxcc.comwww.s4miniarchive.com%!canolfanyramgylcheddolcymru.ac.ukwww.tablesgenerator.comwww.taiwanonline.ccaccesscreative.ac.ukwww.thechinastory.orgwww.wan-press.orgwww.wangruowang.orgwww.websnapr.comaccesshe.ac.ukwww1.american.educanolfansgiliaucadarn.ac.ukwww2.ohchr.orgwww2.rocketbbs.com
cannock.ac.ukcannington.ac.ukcando.ac.ukcandi.ac.ukcancerandsociety.ac.uk
can.ac.ukcamsfc.ac.ukcams.org.sgcamri.ac.ukcamre.ac.ukcampwsbydeangcymru.ac.ukcamphill.ac.ukcamera.ac.ukcamden-acl.ac.ukcambslearning.ac.ukcambridgeuniversity.ac.ukcambridgeshireskills.ac.uk cambridgemuslimcollege.ac.uk!cambridgeislamiccollege.ac.ukcambridge.ac.ukcambridge-university.ac.uk
cambria.ac.ukcamborne.ac.ukwyams.ac.uk
+wyke.ac.ukwylln.ac.uk
cam.ac.ukcam-pgmc.ac.ukcam-man-cic.ac.ukcallywith.ac.ukcalls.ac.uk
calgon.com.trcalgon.co.ukcaledonian.ac.ukcalderdaletraining.ac.ukcalderdale.ac.ukcalderdale-acl.ac.ukcalat.ac.ukcalam.ac.ukcairnspost.com.aucahr.org.twcafre.ac.ukcafmad.ac.ukcaerdydd.ac.ukcaepr.ac.ukcadres.ac.ukcadise.ac.uk
+cade.ac.ukcadcol.ac.ukcadburycollege.ac.uk
cadbury.ac.ukcadarnskillscentre.ac.ukcadarn.ac.ukcabot.ac.ukcabletv.com.hkcaban.ac.ukcaagcc.ac.ukcaadoc.ac.ukcaacentre.ac.ukaccessheonline.ac.uk
c4ccetl.ac.ukc-scaipe.ac.ukbyzantium.ac.ukbyzantine-ahrb-centre.ac.ukbynet.co.ilbyam-shaw.ac.ukxaverian.ac.uk
+xavs.ac.ukbx.in.th
bws.ac.ukbwrhub.ac.ukbuxtoncollege.ac.ukbutex.ac.ukxbase.ac.ukbusinessweekly.com.twbusinesstoday.com.twbusinessinsider.com.plbusinessinsider.com.aubusinessinsider.co.za#businesscove-blackcountry.ac.ukbusinessaccess.ac.ukbusiness-intelligence.ac.ukburycollege.ac.uk
buryacl.ac.uk)%burtonandsouthderbyshirecollege.ac.ukburton.ac.uk'#burton-southderbyshirecollege.ac.ukburton-college.ac.uk
burnley.ac.ukbuiltenvsigns.ac.ukbuila.ac.uk
+buic.ac.uk
bui.ac.ukbufvc.ac.ukbufdg.ac.ukbuddhanet.com.twbucksnewuni.ac.ukbuckscollegegroup.ac.ukbuckscollege.ac.ukbuckscol.ac.ukbucks.ac.ukbuckinghamshire.ac.ukbuckingham.ac.uk
+buck.ac.uk
+bubl.ac.uk
+buba.ac.ukbtrp-hyperpolarised.ac.uk
+bton.ac.uk
+btec.co.ukbtcbox.co.jp
btc.ac.uk
+btas.ac.uk
bsw.co.jp
bsu.ac.uk
+bssh.ac.uk
+bssd.ac.uk
+bsrg.ac.uk
bsr.ac.uk
+bsom.ac.uk
bso.ac.ukbsnti.ac.ukbsmslegacy.ac.uk
+bsms.ac.uk
+bsmb.ac.uk
+bsls.ac.ukbsixcollege.ac.uk)%bsixbrookehousesixthformcollege.ac.ukbsixbrookehouse.ac.uk
+bsix.ac.uk
+bshm.ac.uk
xfm.pp.ru
bsg.ac.uk
+bsfc.ac.uk
+bsdc.ac.ukbsbec.ac.uk
+bsaw.ac.uk
bsa.ac.ukbs-awh.ne.jp bruneluniversitylondon.ac.ukbruneldigital.ac.ukbrunel.ac.uk
bruford.ac.ukbroxtowe.ac.ukbrox-coll.ac.ukbrowser.kagi.combroomsbarn.ac.ukbroomfield.ac.ukbrooksbymelton.ac.ukbrooksby.ac.ukbrooks.ac.ukbrooklands.ac.uk
brookes.ac.ukbrookehouse.ac.ukbronch.ac.ukbromleyapps.ac.ukbromleyadulteducation.ac.uk
bromley.ac.ukbrock.ac.ukbroadstairscollege.ac.uk
+brnc.ac.uk
brl.ac.uk$ britishwittgensteinsociety.ac.ukbritishmuseum.ac.uk%!britishludwigwittgensociety.ac.ukbritishlibrary.ac.ukbritishelectionstudy.ac.ukbritishartstudies.ac.ukbritishart.ac.ukbritishacademy.ac.ukbritish-museum.ac.ukbritish-history.ac.uk#british-geological-survey.ac.uk"british-antarctic-survey.ac.ukbritcollege.ac.ukbritarch.ac.ukbritac.ac.ukbristoluwe.ac.ukbristoltheological.ac.uk#bristolroboticslaboratory.ac.ukbristollawschool.ac.uk)%bristolinstituteoflegalpractice.ac.uk
bristol.ac.ukbristol-baptist.ac.uk
brismes.ac.uk
+bris.ac.ukbrinscoll.ac.ukbrinsburycollege.ac.ukbrinsbury.ac.uk
+brin.ac.uk
brilcom.ac.ukbrightstudy.ac.ukxinmiao.com.hkxinqimeng.over-blog.combrightonmedicalschool.ac.ukbrightonlegacy.ac.ukbrightoncitycollege.ac.ukbrightoncity.ac.uk($brightonandsussexmedicalschool.ac.ukbrighton.ac.ukbridgwater.ac.ukbridgestonetyre.com.mybridgestonecomercial.com.mxbridgestonecomercial.com.cobridgestonecomercial.com.brbridgestonecomercial.com.arbridgestonecomercial.co.crbridgestone.com.vnbridgestone.com.twbridgestone.com.sgbridgestone.com.mxbridgestone.com.cobridgestone.com.brbridgestone.com.arbridgestone.co.thbridgestone.co.jpbridgestone.co.inbridgestone.co.idbridgestone.co.crbridgestone-korea.co.kr
+xmas.ac.uk
+xmat.ac.uk!12diasderegalosdeitunes.co.crbridgendcollege.ac.ukbridgend.ac.ukbridgecollege.ac.ukbridge-studio.co.uk
bridgce.ac.uk
xmm.ac.ukbricoltech.ac.uk
bretton.ac.ukbrentstart.ac.ukbrent-acl.ac.ukbreakingofbritain.ac.uk
brc.ac.ukbrasshouse.ac.ukbrams.ac.ukbrais.ac.ukbraintree.ac.ukbrainsimagebank.ac.ukbrain.ac.uk!bradforduni-recruitment.ac.ukbradfordcollege.ac.ukbradford.ac.ukbradcoll.ac.uk
+brad.ac.ukbracknell.ac.uk
br.hao123.com
bps.ac.ukbppuniversity.ac.uk
+bpmf.ac.ukbpcoll.ac.uk
bpc.ac.uk
bpa.ac.ukbournville.ac.uk!bournemouthandpoole-cfe.ac.ukbournemouth.ac.ukxn--colegsirgr-c5a.ac.ukbourne.ac.ukbostoncentre.ac.ukboston.ac.ukbostaa.ac.ukbosta.ac.ukbossagency.co.ukbosco.ac.ukborderscollege.ac.ukbordersandborderlands.ac.uk
bopcris.ac.ukbooktopia.com.aubooks.com.tw
bookhad.ac.ukbook.zi5.mebook.com.tw
+bone.ac.uk
bon.ac.ukboltonsix.ac.ukboltoncollegestem.ac.ukboltoncollege365.ac.ukboltoncollege.ac.ukboltoncc.ac.ukbolton.ac.ukbolton-sfc.ac.uk"bolton-community-college.ac.ukbolton-college.ac.uk
+bolt.ac.ukbolin.netfirms.combognor.ac.ukbognor-training.ac.ukbodyandsoul.com.au
+bodc.ac.ukbobble.ac.uk
boa.ac.uk
bnu.ac.ukbnext.com.tw
+bnac.ac.ukbmwmotorrad.com.sgbmwmotorrad.com.phbmwmotorrad.com.aubmwmotorrad.co.kr
+bmw.com.ve
+bmw.com.uy
+bmw.com.tw
+bmw.com.tr
+bmw.com.sv
+bmw.com.sg
+bmw.com.py
+bmw.com.ph
+bmw.com.pe
+bmw.com.pa
+bmw.com.ni
+bmw.com.my
+bmw.com.mx
+bmw.com.mt
+bmw.com.mo
+bmw.com.mk
+bmw.com.ky
+bmw.com.kh
+bmw.com.gt
+bmw.com.ge
+bmw.com.ec
+bmw.com.do
+bmw.com.cy
+bmw.com.co
+bmw.com.br
+bmw.com.bo
+bmw.com.bn
+bmw.com.bd
+bmw.com.au
+bmw.com.ar
bmw.co.za
bmw.co.uk
bmw.co.th
bmw.co.nz
bmw.co.kr
bmw.co.ke
bmw.co.jp
bmw.co.il
bmw.co.id
bmw.co.cr
bmw.co.aobmw-pma.com.sgbmw-motorrad.com.trbmw-motorrad.com.pybmw-motorrad.com.pebmw-motorrad.com.mybmw-motorrad.com.mxbmw-motorrad.com.hrbmw-motorrad.com.dobmw-motorrad.com.brbmw-motorrad.com.aubmw-motorrad.com.arbmw-motorrad.co.zabmw-motorrad.co.ukbmw-motorrad.co.thbmw-motorrad.co.nzbmw-motorrad.co.krbmw-motorrad.co.idbmw-driving-center.co.krbmw-connecteddrive.com.mtbmw-connecteddrive.com.kwbmw-connecteddrive.com.hrbmw-connecteddrive.com.cybmw-connecteddrive.com.brbmw-connecteddrive.com.aubmw-connecteddrive.co.zabmw-connecteddrive.co.ukbmw-connecteddrive.co.nz!12diasderegalosdeitunes.co.ni
+bmva.ac.uk
+bmth.ac.ukbmth-poole-cad.ac.uk
bms.ac.ukbmetc.ac.uk
+bmet.ac.uk
bme.ac.uk
bmc.ac.uk
+bmac.ac.uk
+bm14.ac.uk
+blws.ac.ukbluestone.ac.ukbluegreencities.ac.ukbloomsburyinstitute.ac.ukbloomsburydtc.ac.ukbloomsbury.ac.ukbloomberg.com.brbloomberg.co.krbloomberg.co.jp!12diasderegalosdeitunes.co.veblogspot.com.uyblogspot.com.trblogspot.com.ngblogspot.com.mtblogspot.com.esblogspot.com.egblogspot.com.eeblogspot.com.cyblogspot.com.coblogspot.com.byblogspot.com.brblogspot.com.auxvideo.vlog.brblogspot.com.arblogspot.co.zablogspot.co.ukblogspot.co.nzblogspot.co.keblogspot.co.ilblogspot.co.idblogspot.co.atblogs.tampabay.com*&blogs.libraryinformationtechnology.comaccesstohe.ac.uk
xvideos.tv.brblog.workflow.isblog.tiney.comxvideos5.com.brblog.taragana.comblog.syx86.comblog.soylent.comblog.sogoo.org!accesstohighereducation.ac.ukblog.ranxiang.comblog.pentalogic.netxvideosnovinha.com.brblog.pathtosharepoint.comblog.martinoei.comxvideosup.com.brxvideosx.com.brblog.lester850.infoblog.kangye.orgblog.jackjia.comblog.istef.infoblog.fuckgfw233.orgblog.foolsmountain.comblog.fizzik.comblog.expofutures.comaccesstomusic.ac.ukaccountancylearning.ac.ukblog.descargasgay.com$ blog.cryptographyengineering.comblog.calibre-ebook.com
+blms.ac.ukblend-ed.ac.uk
ble.ac.uk
blc.ac.ukblake.ac.ukblackpoolsixth.ac.ukblackpool.ac.ukblackpool-acl.ac.uk#blackcountryandmarchesiot.ac.ukblackburn.ac.ukblackandasiangrad.ac.ukblack-country.ac.ukbitinka.com.ar
+bite.ac.uk
accross.ac.uk
+accs.ac.uk
+bisi.ac.uk
bishopg.ac.ukbishopburtoncollege.ac.ukbishopburton.ac.ukbishopb-college.ac.ukbishopaucklandcollege.ac.uk
+bisa.ac.uk"birminghamschoolofacting.ac.uk"birminghamcityuniversity.ac.ukbirminghamcity.ac.ukbirmingham.ac.ukbirmingham-nottingham.ac.ukbirkbeckstratford.ac.ukbirkbeck.ac.ukbirbeckstratford.ac.uk
+bips.ac.uk
bioyork.ac.ukbioville.ac.ukbioss.ac.ukbioresearch.ac.ukbiome.ac.ukbioinformatics.ac.uk
bioinfo.ac.ukbioinf.ac.ukbiofilms.ac.ukbioethicsweb.ac.ukbioethics.ac.uk
biochar.ac.ukbiobankuk.ac.ukbiobankingsolutions.ac.uk
biobank.ac.uk"12diasderegalosdeitunes.com.cobimmstudents.ac.uk
+bimm.ac.ukbimacademy.ac.uk
bilston.ac.uk
+bilk.ac.ukbileta.ac.ukbilborough.ac.uk
bil.ac.uk
+bihg.ac.uk
bigidea.ac.uk bighealthactuarialdata.ac.uk
+bigf.ac.uk
bigdata.ac.ukbigdata-cdt.ac.ukbigbigchannel.com.hk
+biea.ac.ukbidvestbank.co.za
+bids.ac.ukbidi.net.ukbicton.ac.ukbicpa.ac.uk
+bicc.ac.ukbibliography.ac.uk
+biab.ac.uk
+biaa.ac.uk
+bhrc.ac.ukbhpms.ac.ukbhpgms.ac.ukbhent.co.kr
bhasvic.ac.ukbhamcityuniversity.ac.ukbhamcity.ac.uk
+bham.ac.uk
bgu.ac.uk
bgs.ac.uk
bgc.ac.uk
+bftv.ac.ukbfmat.ac.ukbeyondtext.ac.ukbexleycollege.ac.ukbexley.ac.ukbexhillcollege.ac.ukbeverleycollege.ac.ukbettertogether.ac.ukbestrecipes.com.auxxxpornozinho.blog.br
bestofu.ac.ukbestbuy.com.mx
+best.ac.uk
+bess.ac.ukbeside.ac.uk
+besc.ac.uk
+besa.ac.ukbernards.ac.uk
+bern.ac.uk
+berm.co.nzberkscollag.ac.ukberks-coll-ag.ac.uk
+bera.ac.uk
bep.ac.uk
+benc.ac.ukbemix.ac.ukbellerbys.ac.uk
+bell.ac.ukbelfordcollege.ac.uk$ belfastmetropolitancollege.ac.ukbelfastmetropolitan.ac.ukxxxvideo.blog.brbelfastmet.ac.ukbelfastinstitute.ac.ukbeirc.ac.ukbeinspiredatstaffs.ac.ukbeinghumanfestival.ac.uk
bei.ac.ukbehavioural-science.ac.ukbehaviour4learning.ac.uk
+bees.ac.uk
+beep.ac.uk
bedsacl.ac.uk
+beds.ac.ukxxxx.com.aubedfordsixthform.ac.ukbedfordshire.ac.uk
bedford.ac.uk
+bede.ac.ukbecoming-a-teacher.ac.ukbebirkbeck.ac.ukxys.dxiong.combebepremium3.com.bo"beautyandthebeastmusical.co.ukbeaumontcollege.ac.uk
+beaa.ac.uk
bdc.ac.uk
+bcuc.ac.uk
bcu.ac.ukbctcs.ac.uk
+bcot.ac.ukbcomstudents.ac.uk
+bcom.ac.uk
+bcno.ac.ukbcftcs.ac.ukbccolleges.ac.ukyahoo-news.com.hk
+bcc.com.tw
bcc.ac.ukbcast.co.nzbcast.ac.uk
+bcam.ac.uk
bca.ac.ukbbsrc.ac.ukbbs.tuitui.infobbs.sou-tong.orgbbs.skykiwi.combbs.sina.com
bbs.qmzdd.combbs.netbig.com
bbs.mychat.tobbs.morbell.combbs.mikocon.comace-lp.ac.ukbbs.junglobal.netbbs.huasing.orgyahoo.co.aoyahoo.co.bwyahoo.co.ckyahoo.co.cryahoo.co.idyahoo.co.ilyahoo.co.inyahoo.co.jpyahoo.co.kryahoo.co.mzyahoo.co.nzyahoo.co.thyahoo.co.tzyahoo.co.ukyahoo.co.uzyahoo.co.veyahoo.co.viyahoo.co.za
bbs.hasi.wangyahoo.com.afyahoo.com.agyahoo.com.aiyahoo.com.aryahoo.com.auyahoo.com.bdyahoo.com.boyahoo.com.bryahoo.com.bzyahoo.com.coyahoo.com.doyahoo.com.ecyahoo.com.egyahoo.com.esyahoo.com.fjyahoo.com.giyahoo.com.gtyahoo.com.hkyahoo.com.kwyahoo.com.lbyahoo.com.lyyahoo.com.mtyahoo.com.mxyahoo.com.myyahoo.com.nayahoo.com.nfyahoo.com.omyahoo.com.payahoo.com.peyahoo.com.phyahoo.com.pkyahoo.com.pryahoo.com.pyyahoo.com.sayahoo.com.sbyahoo.com.sgyahoo.com.svyahoo.com.tjyahoo.com.tryahoo.com.twyahoo.com.uayahoo.com.uyyahoo.com.vcyahoo.com.vnbbs.hanminzu.orgbbs.ecstart.combbs.cantonese.asiabbs.brockbbs.combbs-cove.ac.uk
bbk.ac.uk
bbe.ac.uk
bbcslln.ac.ukbbcmedia.co.uk
+bbci.co.uk
+bbc.net.ukbbc.mp-pxcdn.com
bbc.co.uk
bbc.ac.uk"12diasderegalosdeitunes.com.hn
+bavs.ac.uk
bathspa.ac.uk#bathnortheastsomerset-acl.ac.ukbathcollege.ac.uk
+bath.ac.uk
+basr.ac.uk
+basp.ac.ukbasketry.ac.ukbasingstoke.ac.ukbasildon.ac.ukbasford-hall.ac.uk
bas.ac.ukbarton.ac.ukbarton-peveril.ac.uk
+bars.ac.ukbarry.ac.ukbarrow6fc.ac.ukbarricades.ac.ukbarony.ac.ukbarnsley.ac.ukbarnfield.ac.ukbarnetsouthgate.ac.ukbarnet.ac.uk
barnabu.co.uk barkingdagenhamcollege.ac.ukbarkingcollege.ac.ukbarking-coll.ac.ukbangor.ac.uk"bangor-university-london.ac.ukbanff-buchan.ac.ukbandpcoll.ac.ukbandp.ac.ukbanbury-college.ac.ukbanbury-bicester.ac.uk
+bams.ac.uk
bam.ac.ukballetwest.ac.uk
balance.ac.uk
baj.ac.uk
+bais.ac.ukbailer.ac.ukbaice.ac.ukbahcesehir.ac.ukbahamut.com.tw
+bafa.ac.uk
+baes.ac.uk
+baec.ac.uk
+badc.ac.ukbacoll.ac.ukbaclaw.ac.uk
+bacl.ac.ukbackstage.ac.ukbackpackers.com.twbackoncourse.ac.uk
+bach.ac.ukbabynet.com.hkbabylongirls.co.ukbaby-me-nrt.ac.ukyale-wrexham.ac.uk
+yale.ac.ukbabraham.ac.ukbabeltech.ac.uk
+yam.org.tw
+baas.ac.uk
+baap.ac.uk
baa.ac.uk
+b6fc.ac.uk"12diasderegalosdeitunes.com.niayrshire.ac.uk
ayrcoll.ac.ukaylesbury.ac.ukaxbdoll.com.tw
+awlc.ac.ukyandex.co.ilawfdcp.ac.uk
yandex.com.am
yandex.com.ge
yandex.com.ru
yandex.com.tr
yandex.com.uaawesomeent.co.kravprc.ac.ukavphd.ac.ukavant.ac.ukavail.googleflights.netav.nightlife141.com
autosub.ac.ukauphf.ac.ukaulic.ac.ukaukcar.ac.uk
+auee.ac.uk
aue.ac.ukaudelondon.ac.uk
+aude.ac.ukaucyfrwngcymraeg.ac.uk
+aucb.ac.uk
auc.ac.uk
aub.ac.uk
aua.ac.ukatthelimits.ac.ukatsip.ac.uk
+aced.ac.uk
atp.ac.ukatlas.ac.ukatlars.ac.ukathens.ac.uk
+atc.org.auasvin.ac.ukastronomy.ac.ukastrogrid.ac.ukastrobiology.ac.ukaston.ac.ukasthma-allergy.ac.ukastec.ac.uk($associationforpoliticalthought.ac.ukyasni.co.ukassap.ac.uk
+asra.ac.ukaspistrategist.org.auaspiretrainingteam.ac.ukaspire.ac.ukaspi.org.au
ycc.ac.ukycoastco.ac.ukaspectnetwork.ac.uk
+ycuc.ac.uk
ycw.ac.uk
+ydds.ac.uk
+ydn.com.twydrindoddewisant.ac.ukaspect.ac.ukaskhambryan.ac.ukaskham.ac.ukaskham-bryan.ac.uk
ask-sam.ac.uk
asiamap.ac.ukasiabrox.ac.ukyeovil-college.ac.ukyeovil.ac.ukashtoninstitute.ac.ukashridge.ac.uk
ashford.ac.uk
yes123.com.tw
+asgp.ac.ukyesasia.com.hk
+asfc.ac.uk
+asen.ac.uk
asearch.ac.ukascribed.ac.uk
+ascr.ac.ukascorpus.ac.ukascentis.ac.ukascent.ac.ukasakonet.co.jpyhelln.ac.ukarupoc.ac.uk
aru.ac.uk
+yhua.ac.uk#artsresearchatnorthampton.ac.ukartsmethodsnorthwest.ac.ukartsigns.ac.uk
+arts.ac.ukarts-inst-bournemouth.ac.ukartofmaking.ac.ukartifact.ac.ukartdesignhull.ac.uk
ars.ac.uk
+arrc.ac.uk
arphic.com.twarnold-carlton.ac.ukarmagh.ac.uk
+arma.ac.uk
arm.ac.uk
ark.ac.ukark-genomics.ac.ukaries-dtp.ac.ukaricd.ac.uk
ariadne.ac.ukargyllcollege.ac.ukardenuniversity.ac.ukardenuni.ac.ukardenu.ac.ukymca-wales.ac.uk
+ymca.ac.ukardencollege.ac.ukardencampus.ac.uk
ync.ne.jparden.ac.ukarctic.ac.ukarcom.ac.uk
archway.ac.ukarchiveshub.ac.uk
archive.ac.ukarchie-west.ac.ukarcher.ac.ukarchangel.ac.uk archaeologydataservice.ac.uk
yomikyo.or.jp
arc.ac.ukyomiuri-johkai.co.jpyomiuri-ryokou.co.jp#yomiuri-shimbun.pressreader.comyomiuri-systec.co.jp
yomiuri.co.jp
ar.hao123.com
aquinas.ac.ukyork-sfc.ac.uk
+york.ac.ukaqmen.ac.ukyorkcollege.ac.ukyorkcollegeapps.ac.ukyorkshireuniversities.ac.ukyorksj.ac.ukyorkstonemasonrycove.ac.ukapuc-scot.ac.uk
apu.ac.uk
+apts.ac.uk
apt.ac.uk
apr.ac.ukappstore.co.idapps5.oingo.comapps.evozi.comapplestore.net.grapplestore.com.twapplestore.com.snapplestore.com.ruapplestore.com.roapplestore.com.ptapplestore.com.plapplestore.com.phapplestore.com.myapplestore.com.joapplestore.com.hryoungfoundation.ac.ukapplestore.com.hkapplestore.com.grapplestore.com.egapplestore.com.eeapplestore.com.bnapplestore.com.auapplestore.co.ukapplestore.co.ugapplestore.co.jpapplestore.co.huappleshop.co.uk applepremiumresellers.com.auapplepremiumreseller.com.auapplepay.com.twapplepay.co.rsapplemusic.com.auapplemalaysia.com.myapplehongkong.com.hkapplehealth.com.hkappledaily.com.twappledaily.com.hkapplecomputers.co.nzapplecomputer.com.twapplecomputer.com.hkapplecomputer.co.nzapplecomputer.co.inappleclub.com.hkapplecentre.com.auapplecentar.co.rsappleaustralia.net.auappleaustralia.com.auapple.net.grapple.comscoreresearch.com!yourfuture-eastmidlands.ac.ukapple.com.uyapple.com.twapple.com.trapple.com.svapple.com.sgapple.com.pyapple.com.ptapple.com.prapple.com.plapple.com.peapple.com.paapple.com.my
yourtv.com.auapple.com.mxapple.com.mgapple.com.lkapple.com.jmapple.com.gyyoushare.ac.ukapple.com.grapple.com.doapple.com.deapple.com.coapple.com.brapple.com.boapple.com.auapple.com.afapple.co.ukapple.co.thapple.co.nzapple.co.mzapple.co.krapple.co.jpapple.co.huapple.co.crapple-watch.com.ruappdynamics.co.ukapp.smartmailcloud.com
app.evozi.comapp.box.comapollocrewe.ac.ukapollocampus.ac.ukapollo.ac.uk
youtube.co.ae
youtube.co.at
youtube.co.cr
youtube.co.hu
youtube.co.id
youtube.co.il
youtube.co.in
youtube.co.jp
youtube.co.ke
youtube.co.kr
youtube.co.ma
youtube.co.nz
youtube.co.th
youtube.co.tz
youtube.co.ug
youtube.co.uk
youtube.co.ve
youtube.co.za
youtube.co.zwaplustraining.ac.ukyoutube.com.aryoutube.com.auyoutube.com.azyoutube.com.bdyoutube.com.bhyoutube.com.boyoutube.com.bryoutube.com.byyoutube.com.coyoutube.com.doyoutube.com.ecyoutube.com.eeyoutube.com.egyoutube.com.esyoutube.com.ghyoutube.com.gryoutube.com.gtyoutube.com.hkyoutube.com.hnyoutube.com.hryoutube.com.jmyoutube.com.joyoutube.com.kwyoutube.com.lbyoutube.com.lvyoutube.com.lyyoutube.com.mkyoutube.com.mtyoutube.com.mxyoutube.com.myyoutube.com.ngyoutube.com.niyoutube.com.omyoutube.com.payoutube.com.peyoutube.com.phyoutube.com.pkyoutube.com.ptyoutube.com.pyyoutube.com.qayoutube.com.royoutube.com.sayoutube.com.sgyoutube.com.svyoutube.com.tnyoutube.com.tryoutube.com.twyoutube.com.uayoutube.com.uyyoutube.com.ve
+apis.ac.ukapidocs.linksalpha.comapi.nebula-emby.comapi.linksalpha.com
+aphe.ac.ukapexprint.com.hkap-tokyo.myqcloud.com$ ap-southeast-4.myhuaweicloud.com$ ap-southeast-3.myhuaweicloud.com$ ap-southeast-2.myhuaweicloud.com$ ap-southeast-1.myhuaweicloud.comap-singapore.myqcloud.comap-seoul.myqcloud.comap-mumbai.myqcloud.comap-jakarta.myqcloud.comap-hongkong.myqcloud.comap-bangkok.myqcloud.comaopcuk.ac.ukaolchannels.aol.comaofriend.com.au
+aocc.ac.uk
aoc.ac.ukaobo.com.auaoaou.iillii.netantislaverylaw.ac.ukantislavery.ac.ukantiquity.ac.ukanticipate.ac.ukanthropology.ac.uk
+antf.ac.uk
antenna.co.krantarctica.ac.ukantarctic.ac.ukansin.erodayo.comanniesland.ac.ukanniesland-fe.ac.uk
anm.co.uk
+anic.ac.ukanguscollege.ac.ukangus.ac.ukanglia.ac.ukanglia-ruskin.ac.ukanglia-polytechnic.ac.ukangel.ac.ukandovercollege.ac.uk
andover.ac.ukancientwisdoms.ac.ukancientcyprus.ac.ukanaesthetistswales.ac.ukamrtraining.ac.uk
+amof.ac.ukamnesty.org.hkamity.ac.uk
ami.ac.uk
amh.ac.ukamgueddfacymru.ac.uk
amf.ac.ukamerwyc-coll.ac.ukamersham.ac.ukamericabrox.ac.ukamerc.ac.ukamdigital.co.uk
+ambs.ac.ukamazonaws.co.uk
amazon.com.tr
amazon.com.mx
amazon.com.br
amazon.com.auamazon.co.ukamazon.co.jpyoutubego.co.idyoutubego.co.inam730.com.hkyoutubego.com.bralzheimers.ac.ukalwcymru.ac.ukaltoncollege.ac.ukalton.ac.ukaltis.ac.ukaltereco.ac.uk
alt.ac.ukalsod.ac.uk
alsalam.ac.uk
alps-wm.ac.ukalps-cetl.ac.ukalpherafs.com.myalpherafs.com.hkyporth.ac.uk
yra.ac.ukalpherafs.co.nzalpherafinance.com.hk
ysj.ac.ukalphera.com.myalphera.com.hkystrad-mynach.ac.ukysulondon.ac.ukalphera.com.es
alphera.co.nz
alphera.co.inalphera-finance.com.hk
ytn.co.kralphera-finance.co.inalphabet.org.ukalphabet.com.ptalphabet.com.plalphabet.com.mxalphabet.com.lvalphabet.com.esalphabet.co.zaalphabet.co.ukalphabet.co.hu
+aloe.ac.ukalmcollege.ac.uk
+alma.ac.ukallnations.ac.ukalliancembs.ac.uk*&alliancemanchesterbusinessschool.ac.ukalliancemanchester.ac.ukalliance.org.hkallcu.ac.ukalis-wales.ac.ukalicejapan.co.jpalibabacloud.com.twalibabacloud.com.sgalibabacloud.com.myalibabacloud.com.hkalibabacloud.com.aualibabacloud.co.in
alfera.com.my
alfera.com.hk alexanderlondoncollege.ac.uk
aldinhe.ac.uk
+alcs.ac.uk
alc.ac.ukakamai.co.kr
+ait.org.twzakzak.co.jpairwick.com.trairwick.com.mxairwick.com.brairwick.com.au
zaobao.com.sg
airwick.co.za
airwick.co.uk
airwick.co.nz
airwick.co.inaire-wharf-coll.ac.uk
+aims.ac.ukaimhigherwm.ac.ukaimhigherwm-alps.ac.ukaimhighersw.ac.ukaimhighersurrey.ac.ukaimhigherscotland.ac.ukaimhighernw.ac.uk#aimhighernorthamptonshire.ac.uk$ aimhighergreatermerseyside.ac.ukaim25.ac.uk
aib.ac.ukai3sd.ac.ukzdnet.com.twzdnet.redvideo.io
ai.binwang.me
+ahua.ac.ukahrcfoodnetwork.ac.uk
+ahrc.ac.uk
+ahpd.ac.ukahgtm.ac.ukahessc.ac.uk
+ahds.ac.uk
+ahcs.ac.uk
ahc.ac.ukzeetv.co.uk
ags.ac.ukagroforestry.ac.ukzeit-world.co.ukagriforwards-cdt.ac.uk
agrifor.ac.ukagrifoodatp.ac.uk%!agressofinanceroyalholloway.ac.ukagocg.ac.ukagenet.ac.ukafterenglish.ac.ukafsni.ac.ukafricanplants.ac.ukafricadesk.ac.uk
afi.ac.uk
+afao.ac.uk af-south-1.myhuaweicloud.com af-north-1.myhuaweicloud.comzenmate.com.ru
aes.ac.ukzeplerinstitute.ac.uk"aerospace-training-wales.ac.ukaerosol-cdt.ac.ukaerogard.com.auaengd.ac.ukaemap.ac.uk
+aecc.ac.ukaecc-chiropractic.ac.uk
ae.hao123.comae-ad-1.myhuaweicloud.com"advantagenottinghamshire.ac.ukadvancingaccess.ac.ukadvancehe.ac.ukzh.pokerstrategy.com"advancedtherapeutics-cdt.ac.ukadvancedhe.ac.ukadvanced-radiotherapy.ac.ukadvanced-he.ac.ukadvance-he.ac.ukadultlearningbcc.ac.ukadultexpo.com.tw"adultartlinks.supertop-100.comadult789.futoka.jpzhao.1984.cityzhao.jinhai.deadult.toonsearch.netadult.friendfinder.com84adult-doujin-free-information-bureau.officialblog.jp
ads.ac.uk
+adrn.ac.ukadrc-e.ac.ukadpl.org.hk
+adls.ac.ukadlib.ac.uk
adidas.com.tw
adidas.com.saadidas.co.ukadidas.co.inadeptt.ac.ukadelaidenow.com.au
addison.ac.uk
+adas.ac.ukadapt.ac.ukadamsmithcollege.ac.ukadamsmith.ac.ukadams-institute.ac.ukadalovelacecentre.ac.ukadacollege.ac.uk
ada.ac.uk
acu.ac.ukactual.ac.ukactris.ac.ukactofunion.ac.ukactivelearnprimary.com.auactivelearnprimary.co.ukactivatelearning.ac.ukactimes.com.auacsis.ac.ukacpme.ac.uk
acp.ac.ukacoustics.ac.ukacnw.com.auacmedsci.ac.uk
acm.ac.ukzoho.com.auacets.ac.uk
+aces.ac.uk
+acer.ac.ukwww.taup.org.tw!greatfire.us7.list-manage.com bisyoujyogyaruge.topaz.ne.jpbitc.bme.emory.edublog.exblog.co.jpblog.excite.co.jpblog.sina.com.twblog.youthwant.com.twca.file.myqcloud.comwww.zensur.freerk.comsteam.eca.qtlglb.comwww.m-sport.co.ukwww.lib.virginia.educbs.ntu.edu.twcdn.assets.lfpcontent.comcdn1.lp.saboom.comweiboscope.jmsc.hku.hkdisney.my.sentry.ioebook.hyread.com.twresearch.jmsc.hku.hkvideo.aol.co.ukforum.setty.com.twforum.sina.com.hkforum.slime.com.twgen.lib.rus.ecger.file.myqcloud.comsteam.naeu.qtlglb.comsteam.cdn.webra.ruats1.e-timing.ne.jp1989report.hkja.org.hkgojet.krtco.com.twhk.file.myqcloud.comhkcoc.weather.com.hkipfs.eth.aragon.networktest-ipv6.sin.vr.org"test-ipv6.ke.liquidtelecom.net!test-ipv6.csclub.uwaterloo.catest-ipv6.cs.umd.eduithelp.ithome.com.twjstage.jst.go.jpsteam.ru.qtlglb.comntp2.tohoku.ac.jptopic.youthwant.com.twbbs.kimy.com.twtv.jtbc.joins.comntp2.ring.gr.jpntp2.plala.or.jpsteam.cdn.on.netsteam.apac.qtlglb.commagazines.sina.com.twme.youthwant.com.twntp1.tohoku.ac.jpmyshare.url.com.twnews.msn.com.twnews.sina.com.hknews.sina.com.twshare.youthwant.com.twsgp.file.myqcloud.comntp-os01.ocn.ad.jpntp-tk01.ocn.ad.jpntp-tk02.ocn.ad.jpntp1.ring.gr.jpntp1.plala.or.jpntp0.ring.gr.jpntp.ring.gr.jp
ntp.tut.ac.jpntp.tohoku.ac.jp"edge.steam-dns.top.comcast.netntp.nc.u-tokyo.ac.jpsteam.cdn.slingshot.co.nzsteam.cdn.orcon.net.nzntp.jst.mfeed.ad.jpntp.dnsbalance.ring.gr.jpmjlsh.usc.cuhk.edu.hkntp.t.ring.gr.jpntp2.jst.mfeed.ad.jpntp1.v6.mfeed.ad.jpntp1.jst.mfeed.ad.jpntp3.jst.mfeed.ad.jpntp2.v6.mfeed.ad.jplibrary.usc.cuhk.edu.hkntp3.v6.mfeed.ad.jphbo.com.c.footprint.nets2csntp.miz.nao.ac.jp-)89.64.charter.constitutionalism.solutions(^|\.)13mei[5-7]\.buzz$!(^|\.)18jmttios[0-9]{2}\.com$(^|\.)18j[efg]\.life$(^|\.)18tv[1-5]\.com$(^|\.)1[0-9]{2}\.one$1-(^|\.)2024(3[0-9]|4[0-9]|6[0-9]|7[0-9])\.xyz$(^|\.)3[0-9]{2}\.icu$(^|\.)3[0-9]{2}\.one$ (^|\.)69bag[0-1][1-9]?\.com$ (^|\.)783([a-z][a-z]?)?\.tv$"(^|\.)7mm0([0-1][0-9]?)?\.com$(^|\.)8dgo[1-57-9]\.com$&"(^|\.)91cg([1-9]|[0-9][1-9])?.com$(^|\.)91porn[0-9]?\.store$(^|\.)91porn[0-9]{3}\.me$(^|\.)91porn[fvxy]\.com$@<(^|\.)91porn\.(best|com|cool|group|party|plus|site|tw|work)$(^|\.)91p[0-9][0-9]?\.com$(^|\.)91sew1[1-6]\.buzz$(^|\.)989[a-z]?\.tv$(^|\.)99pp[1-9][0-9]\.com$(^|\.)9cha[0-9]{2}\.cc$:6(^|\.)aipa(111|222|333|444|555|666|777|888|999)\.life$"(^|\.)aisejushi(2|3|5|6)\.com$(^|\.)aiwei[1-9]{2}\.buzz$62(^|\.)apiproxy-device-prod-nlb-.+\.amazonaws\.com$73(^|\.)apiproxy-website-nlb-prod-.+\.amazonaws\.com$(^|\.)aqdk[0-9]{3}\.com$(^|\.)avcc1[0-9]\.com$!(^|\.)avstar0[1-9]\.(com|me)$(^|\.)awjd[1-9]?\.tv$(^|\.)awwcn[1-9]?\.top$(^|\.)banyinjia[0-9]?\.com$(^|\.)bhzyk[1-9]?\.xyz$(^|\.)bibeidh1[6-8]\.cc$($(^|\.)bilibili3(0[1-9]|1[0-2])\.xyz$(^|\.)bjini[0-9]{2}\.buzz$HD(^|\.)byyum([3589]|2[235689]|3[34]|4[1-9]|5[1-79]|6[0134679])?\.com$(^|\.)byy[0-9][0-9]?\.icu$#(^|\.)cav1(0[2-9]|1[0-9])\.com$%!(^|\.)cgbb([1-9]|1[0-9]|20)\.com$ (^|\.)chuzs[1-9]{0,2}\.buzz$(^|\.)cosaa[a-z]\.cyou$(^|\.)doufuru[0-9]?\.cc$ (^|\.)doufuru[0-9]{2}?\.xyz$(^|\.)douyintt[0-9]\.me$1-(^|\.)dualstack\.apiproxy-.+\.amazonaws\.com$40(^|\.)dualstack\.ichnaea-web-.+\.amazonaws\.com$(^|\.)fby[1-9]?[0-9]\.icu$(^|\.)fby[1-9]?[0-9]\.one$(^|\.)fi11sm([0-9]+)?\.com$(^|\.)fiftymvapi\..+$(^|\.)flsq[0-9]{2}\.com$!(^|\.)forduck[0-1][0-9]\.com$&"(^|\.)gaogediao\.(com|me|net|org)$$ (^|\.)gossipfuli[0-9]{3,4}\.xyz$(^|\.)guifw3[1-3]\.cc$(^|\.)h5ccav[1-5]\.com$(^|\.)hhmen[1-3]\.xyz$(^|\.)hkfg[1-7]\.xyz$(^|\.)hs[1-9]{2}\.vip$(^|\.)jav777\.(cc|tv|work)$"(^|\.)jbk0([0-1][0-9]?)?\.com$(^|\.)jb[1-9][0-9]\.lol$(^|\.)jdyy[1-9]?\.me$(^|\.)jiuse[0-9]{1,3}\.com$"(^|\.)jmtt\.(app|live|tv|vip)$(^|\.)jstv[0-9]{2}\.com$(^|\.)kdfl[0-9]{2}\.xyz$$ (^|\.)kimoav([1-9][0-9]?)?\.com$*&(^|\.)kpkuang\.(bond|fun|info|one|us)$(^|\.)ksyp0[1-9]\.com$(^|\.)lianren[1-7]\.cc$(^|\.)llyysp[0-9]{4}\.top$+'(^|\.)loibus(100|101|202|505|606)\.top$ (^|\.)loibus\.(cc|com|link)$%!(^|\.)luchuxue([0-9]{0,5})\.buzz$(^|\.)maa18[0-2][0-9]\.com$(^|\.)madouqu[0-9]{2}\.cc$(^|\.)mdyy[0-1][0-9]\.com$(^|\.)mdyy[0-9][0-9]\.cc$(^|\.)mimi[0-9]{3}\.com$($(^|\.)mimi\.(cfd|lol|onl|sbs|so|vc)$(^|\.)mitao[1-3]\.tv$(^|\.)mmtv[1-5]\.life$40(^|\.)mmwz\.(fun|in|la|me|one|pro|pw|run|tv|ws)$$ (^|\.)momotk([1-9][0-9]?)?\.uno$(^|\.)nnbw[0-2]\.xyz$%!(^|\.)putaozy([1-9][0-9]?)?\.com$(^|\.)qqbs([0-9]{2})?\.vip$(^|\.)qqsp0[1-3]\.com$(^|\.)rbp[1-9][0-9]\.com$(^|\.)rbyh[1-9]\.buzz$*&(^|\.)rule34\.(asia|us|world|xxx|xyz)$(^|\.)sao[1-6]0000\.com$(^|\.)sbyjs2[6-9]\.buzz$(^|\.)sg11[3-9]\.me$(^|\.)shdd[0-9]{2}\.buzz$$ (^|\.)shuangmawei[0-9]{2}\.buzz$(^|\.)smgsp[0-2]?\.buzz$(^|\.)spankwire[1-9]\.com$(^|\.)ssphb[0-9]{2}\.xyz$ (^|\.)supxxx[0-9]{0,2}\.com$(^|\.)sycf[0-9]?\.xyz$(^|\.)syjc1[1-6]\.xyz$'#(^|\.)tianbiav([1-9]|1[0-6])?\.com$(^|\.)tqav[1-9][0-9]\.com$(^|\.)ttghg[1-9][0-9]\.xyz$%!(^|\.)tttv([1-9][0-9]?|100)\.com$(^|\.)tt[1-2][0-9]\.tv$#(^|\.)twseb([1-9][0-9]?)?\.com$"(^|\.)uu[a-z][1-9][0-9]?\.com$(^|\.)whtdh0[1-3]\.cc$(^|\.)wmm33[0-5]\.com$(^|\.)wyfuli[1-9]\.net$(^|\.)xaa[0-9]?\.one$(^|\.)xaxy[0-9]{2}\.one$(^|\.)xgyy([0-9]{2})?\.vip$(^|\.)xg[0-9]{2}\.vip$!(^|\.)xingdh([0-9]{3})?\.xyz$(^|\.)xlywz[1-9]?\.cc$(^|\.)xomfsp[1-9]?\.buzz$(^|\.)xv[0-9]{4}\.top$ (^|\.)xxxyaom[0-9]{2}\.buzz$(^|\.)yiren[1-9][0-9]\.com$(^|\.)youyuapi\..+$(^|\.)yrrj[1-9]?\.buzz$(^|\.)yygc[0-9]?\.xyz$!(^|\.)zayy([0-9]{0,3})?\.xyz$(^|\.)zh9[0-7]\.net$(^|\.)zy[0-9]{4}\.top$(^|\.)zztt[1-6][0-9]\.com$(^|\.)zzz[1-9][0-9]\.top$(^|\.)[1-5]gaoap\.com$!(^|\.)[1-9]+aipai\.(com|net)$!(^|\.)[1-9]+zipai\.(com|net)$(^|\.)[1-9]00caocao\.com$(^|\.)[3-9]0000sao\.com$-)(^|\.)[a-z]?fulibl\.(cc|com|org|net|xyz)$$ (^|\.)[a-z][1-9][0-9][a-z]\.com$&".+\.amzndns\.(co\.uk|com|net|org)$0,.+\.ap-bangkok\.tencentcos\.(cn|com(\.cn)?)$1-.+\.ap-hongkong\.tencentcos\.(cn|com(\.cn)?)$0,.+\.ap-jakarta\.tencentcos\.(cn|com(\.cn)?)$/+.+\.ap-mumbai\.tencentcos\.(cn|com(\.cn)?)$.*.+\.ap-seoul\.tencentcos\.(cn|com(\.cn)?)$2..+\.ap-singapore\.tencentcos\.(cn|com(\.cn)?)$.*.+\.ap-tokyo\.tencentcos\.(cn|com(\.cn)?)$0,.+\.awsdns-[0-9][0-9]\.(co\.uk|com|net|org)$)%.+\.dkr\.ecr\.[^\.]+\.amazonaws\.com$2..+\.eu-frankfurt\.tencentcos\.(cn|com(\.cn)?)$/+.+\.eu-moscow\.tencentcos\.(cn|com(\.cn)?)$0,.+\.na-ashburn\.tencentcos\.(cn|com(\.cn)?)$62.+\.na-siliconvalley\.tencentcos\.(cn|com(\.cn)?)$0,.+\.na-toronto\.tencentcos\.(cn|com(\.cn)?)$1-.+\.sa-saopaulo\.tencentcos\.(cn|com(\.cn)?)$^((((ut1-wwv)|(ntp\-(b|d|wwv))|(time(\-(([a-e]\-(g|b))|([a-e]\-wwv)))?))\.nist\.gov)|((ntp-c|ut1-time)|(utcnist(2|3)?))\.colorado\.edu)$=9^chatgpt-async-webps-prod-\S+-\d+\.webpubsub\.azure\.com$*&^epicgames-download\d\.akamaized\.net$^ewcdn[0-9]{2}\.nowe\.com$HD^github-production-release-asset-[0-9a-zA-Z]{6}\.s3\.amazonaws\.com$ ^hses[1-7]?\.akamaized\.net$ ^ntp[0-7]\.ntp-servers\.net$^time(.euro)?.apple.com$^time([1-4])?.google.com$!^time([1-5])?\.facebook\.com$($^[0-9]+vod-adaptive\.akamaized\.net$
+g
+READTHEDOCSreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org
+
+SECTIGOenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.comsectigo.comtrust-provider.com
usertrust.comaoc.catcatcert.catincommon-rsa.org
netsolssl.com oemssl.cn
+cn(oemssl.cn.cdn.cloudflare.net
+cnsectigochina.com
+cn/#sectigochina.com.cdn.cloudflare.net
+cntrust-provider.cn
+cn
+
+UNIONPAY
95516.com
95516.netchinaunionpay.comchinaunionpay.netcup62.cnunionpay.comunionpay.netunionpaysecure.comunionpayintl.cnunionpayintl.comchinaunionpay.com.cn
+cup.com.cn
+
+OUPoxfordfirstsource.comoxfordscholarlyeditions.comamamanualofstyle.comepigeum.comoxfordhandbooks.com
omscr.comoup.com
+ouplaw.comveryshortintroductions.comoxfordaasc.comoxfordartonline.comoxfordlawtrove.comoxfordclinicalpsych.com
oxforddnb.com blackstonespoliceservice.comoed.comoxfordbibliographies.comoxfordmedicine.comoxfordmusiconline.comoxfordpoliticstrove.comoxfordre.comoxfordreference.comanb.orgoxfordscholarship.comoxfordwesternmusic.comsipriyearbook.org
ukwhoswho.com"universitypressscholarship.comox.ac.uk
+
+ALIBABA-ADSa.alimama.cn
+adsacjs.aliyun.com
+ads!adash-c.m.taobao.com
+ads"adash-c.ut.taobao.com
+ads0#adash-emas.cn-hangzhou.aliyuncs.com
+adsadash.m.taobao.com
+ads#adash.man.aliyuncs.com
+ads!adashbc.m.taobao.com
+ads"adashbc.ut.taobao.com
+ads adashx.m.taobao.com
+adsadashx.ut.amap.com
+adsadashx.ut.ele.me
+ads adashx.ut.youku.com
+ads$adashx4ae.ut.taobao.com
+ads#adashx4yt.m.taobao.com
+ads#adashxgc.ut.taobao.com
+adsadsh.m.taobao.com
+adsafp.adchina.com
+adsafp.alicdn.com
+ads agoodm.m.taobao.com
+ads#agoodm.wapa.taobao.com
+ads
alipaylog.com
+adsamdc.alipay.com
+ads api.wapa.taobao.com
+ads#api.waptest.taobao.com
+adsapoll.m.taobao.com
+adsatanx.alicdn.com
+adsatanx2.alicdn.com
+ads!c-adash.m.taobao.com
+adscdn0.mobmore.com
+adsclick.aliyun.com
+ads&click.mz.simba.taobao.com
+adscm.ipinyou.com
+ads!dsp.simba.taobao.com
+adsex.mobmore.com
+ads
ex.puata.info
+ads!fav.simba.taobao.com
+ads$feedback.whalecloud.com
+adsff.win.taobao.com
+ads fm.p0y.cn
+adsg.click.taobao.com
+ads
+g.tbcdn.cn
+adsgma.alicdn.com
+adsgtms01.alicdn.com
+adsgtms02.alicdn.com
+adsgtms03.alicdn.com
+adsgtms04.alicdn.com
+adsh-adashx.ut.ele.me
+ads#h-adashx.ut.taobao.com
+ads"h-adashx.ut.youku.com
+ads&h-adashx4yt.ut.taobao.com
+adshydra.alibaba.com
+ads'hz.pre.tbusergw.taobao.net
+ads#hz.tbusergw.taobao.net
+ads
i.ipinyou.com
+adsinit.phpwind.com
+ads!intl.wapa.taobao.com
+ads$intl.waptest.taobao.com
+ads"jxlog.istreamsche.com
+adslog.umtrack.com
+ads!m-adash.m.taobao.com
+adsm.intl.taobao.com
+adsm.simba.taobao.com
+adsmatch.p4p.1688.com
+ads%material.istreamsche.com
+ads mlt01.com
+ads&nbsdk-baichuan.alicdn.com
+ads&nbsdk-baichuan.taobao.com
+ads"osfota.cdn.aliyun.com
+ads osupdate.aliyun.com
+ads&osupdateservice.yunos.com
+ads%pindao.huoban.taobao.com
+adspush.wandoujia.com
+adsre.m.taobao.com
+ads
re.taobao.com
+ads&redirect.simba.taobao.com
+adsrj.m.taobao.co
+adsrj.m.taobao.com
+adssdkinit.taobao.com
+adssimaba.taobao.com
+adssimba.m.taobao.com
+ads!srd.simba.taobao.com
+adsstats.ipinyou.com
+ads strip.taobaocdn.com
+ads$tanxlog.istreamsche.com
+adstejia.taobao.com
+adstemai.taobao.com
+ads!tns.simba.taobao.com
+ads tongji.linezing.com
+ads tvupgrade.yunos.com
+adstyh.taobao.com
+adsuserimg.qunar.com
+ads"v6-adashx.ut.amap.com
+ads%v6-adashx.ut.cainiao.com
+ads v6-adashx.ut.ele.me
+ads$v6-adashx.ut.taobao.com
+adsw.m.taobao.com
+adsyiliao.hupan.com
+ads
+V
+CATEGORY-SOCIAL-MEDIA-!CNfbcdn-a.akamaihd.nete122475.dscg.akamaiedge.netlicdn.cn.cdn20.comlinkedin.sc.omtrdc.netthreads.netads-twitter.comcms-twdigitalassets.comperiscope.tvpscp.tvt.co
tellapart.com
tweetdeck.com
twimg.comtwitpic.comtwitter.biztwitter.com
+twitter.jptwittercommunity.comtwitterflightschool.comtwitterinc.comtwitteroauth.comtwitterstat.ustwtrdns.net
twttr.com
twttr.net
twvid.comvine.co x.commvk.comuserapi.com
vk-cdn.me
+vk-cdn.net
vk-portal.net vk.cc
+vk.com
vk.designvk.link vk.me vk.ruvkcache.comvkgo.app
+vklive.appvkmessenger.comvkmessenger.appvkontakte.ruvkuseraudio.comvkuserlive.netvkuservideo.comvkuservideo.netbsky.appbsky.networkbsky.socialaboutfacebook.com accessfacebookfromschool.comacebooik.comacebook.comadvancediddetection.comaskfacebook.netaskfacebook.org
+atdmt2.comatlasdmt.comatlasonepoint.combuyingfacebooklikes.comcareersatfb.comcelebgramme.comchina-facebook.com
click-url.comcomo-hackearfacebook.comcrowdtangle.comdacebook.comdlfacebook.comdotfacebook.comdotfacebook.netexpresswifi.comfaacebok.com
faacebook.comfaasbook.com
facbebook.comfacbeok.com
+facboo.comfacbook.comfacbool.comfacboox.com
faccebook.comfaccebookk.comfacdbook.com
facdebook.com
face-book.com
faceabook.comfacebboc.com
facebbook.comfacebboook.com
facebcook.comfacebdok.com
facebgook.com
facebhook.comfacebkkk.com
facebo-ok.comfaceboak.comfacebock.com
facebocke.comfacebof.comfaceboik.comfacebok.comfacebokbook.comfacebokc.comfacebokk.com
facebokok.comfaceboks.comfacebol.comfacebolk.com
facebomok.comfaceboo.comfacebooa.comfaceboob.comfaceboobok.comfacebooc.com
faceboock.comfacebood.comfacebooe.comfaceboof.comfacebooi.com
facebooik.com
facebooik.orgfacebooj.comfacebook-corp.comfacebook-covid-19.comfacebook-ebook.comfacebook-forum.comfacebook-hardware.comfacebook-inc.comfacebook-login.comfacebook-newsroom.comfacebook-newsroom.orgfacebook-pmdcenter.comfacebook-pmdcenter.netfacebook-pmdcenter.orgfacebook-privacy.comfacebook-program.comfacebook-studio.comfacebook-support.orgfacebook-texas-holdem.comfacebook-texas-holdem.netfacebook.brfacebook.cafacebook.ccfacebook.comfacebook.designfacebook.netfacebook.hufacebook.infecebook.netfacebook.nlfacebook.orgfacebook.se
facebook.shopfacebook.tvfacebook.us
facebook.wangfacebook123.orgfacebook30.comfacebook30.netfacebook30.orgfacebook4business.comfacebookads.com"facebookadvertisingsecrets.comfacebookatschool.comfacebookawards.comfacebookblueprint.netfacebookbrand.comfacebookbrand.net3/facebookcanadianelectionintegrityinitiative.comfacebookcareer.comfacebookcheats.comfacebookck.comfacebookclub.comfacebookcom.comfacebookconsultant.orgfacebookcoronavirus.comfacebookcovers.orgfacebookcredits.infofacebookdating.netfacebookdusexe.orgfacebookemail.comfacebookenespanol.comfacebookexchange.comfacebookexchange.netfacebookfacebook.comfacebookflow.comfacebookgames.comfacebookgraphsearch.comfacebookgraphsearch.infofacebookgroups.comfacebookhome.ccfacebookhome.comfacebookhome.infofacebookhub.com
facebooki.comfacebookinc.comfacebookland.comfacebooklikeexchange.comfacebooklive.comfacebooklivestaging.netfacebooklivestaging.orgfacebooklogin.comfacebooklogin.infofacebookloginhelp.netfacebooklogs.comfacebookmail.comfacebookmail.tvfacebookmanager.infofacebookmarketing.info facebookmarketingpartner.com!facebookmarketingpartners.comfacebookmobile.comfacebookmsn.comfacebooknews.comfacebooknfl.comfacebooknude.comfacebookofsex.comfacebookook.comfacebookpaper.comfacebookpay.comfacebookphonenumber.netfacebookphoto.comfacebookphotos.comfacebookpmdcenter.comfacebookpoke.netfacebookpoke.orgfacebookpoker.infofacebookpokerchips.infofacebookporn.netfacebookporn.orgfacebookporno.netfacebookportal.com
facebooks.comfacebooksafety.comfacebooksecurity.netfacebookshop.comfacebooksignup.netfacebooksite.netfacebookstories.comfacebookstudios.netfacebookstudios.orgfacebooksupplier.comfacebooksuppliers.comfacebookswagemea.comfacebookswagstore.comfacebooksz.comfacebookthreads.netfacebooktv.netfacebooktv.orgfacebookvacation.com
facebookw.comfacebookworld.comfacebool.com
facebool.info
facebooll.comfaceboom.comfaceboon.com
faceboonk.comfaceboooik.com
faceboook.comfaceboop.comfaceboot.comfaceboox.comfacebopk.com
facebpook.comfacebuk.comfacebuok.com
facebvook.com
facebyook.com
facebzook.comfacecbgook.com
facecbook.com
facecbook.orgfacecook.comfacecook.org
facedbook.comfaceebok.com
faceebook.comfaceebot.comfacegbok.com
facegbook.comfaceobk.comfaceobok.com
faceobook.comfaceook.comfacerbooik.com
facerbook.com
facesbooc.comfacesounds.comfacetook.com
facevbook.comfacewbook.cofacewook.comfacfacebook.com
facfebook.com
fackebook.comfacnbook.comfacrbook.com
facvebook.com
facwebook.com
facxebook.comfadebook.com
+faebok.comfaebook.comfaebookc.comfaeboook.comfaecebok.com
faesebook.comfafacebook.comfaicbooc.comfasebokk.comfasebook.comfaseboox.comfavebook.comfaycbok.com
+fb.careers
+fb.com fb.gg fb.mefb.watch
fbacebook.com
fbbmarket.comfbboostyourbusiness.com
fbcdn.com
fbcdn.netfbfeedback.com
+fbhome.comfbidb.io
fbinc.comfbinnovation.comfbmarketing.com
fbreg.com
+fbrpms.com
fbsbx.com
fbsbx.netfbsupport-covid.netfbthirdpartypixel.comfbthirdpartypixel.netfbthirdpartypixel.org
fburl.comfbwat.chfbworkmail.com
fcacebook.comfcaebook.comfcebook.comfcebookk.comfcfacebook.comfdacebook.infofeacboo.comfeacbook.com
feacbooke.com
feacebook.comfecbbok.comfecbooc.comfecbook.com
feceboock.comfeceboox.com
fececbook.com
feook.comferabook.com
fescebook.comfesebook.com
ffacebook.com
fgacebook.com
ficeboock.comfmcebook.com
fnacebook.comfosebook.com
fpacebook.comfqcebook.com
fracebook.com
freeb.comfreebasics.comfreebasics.net
+freebs.comfreefacebook.comfreefacebook.netfreefacebookads.netfreefblikes.comfreindfeed.comfriendbook.info
friendfed.comfriendfeed-api.comfriendfeed-media.comfriendfeed.comfriendfeedmedia.comfsacebok.comfscebook.comfundraisingwithfacebook.comfunnyfacebook.orgfutureofbusinesssurvey.orggacebook.comgameroom.comgfacecbook.com
+groups.comhackerfacebook.comhackfacebook.comhackfacebookid.comhifacebook.info!howtohackfacebook-account.comhsfacebook.comhttpfacebook.comhttpsfacebook.comhttpwwwfacebook.com i.orginternet.orgklik.meliverail.comliverail.tvlogin-account.netmarkzuckerberg.commidentsolutions.commobilefacebook.commoneywithfacebook.commyfbfans.comnewsfeed.comnextstop.comonline-deals.netopencreate.orgreachtheworldonfacebook.comrocksdb.orgshopfacebook.comsportsfacebook.comsportstream.comsupportfacebook.comterragraph.comthefacebook.comthefacebook.netthefind.comtoplayerserver.comviewpointsfromfacebook.comwhyfacebook.com
worldhack.comwww-facebook.comwwwfacebok.comwwwfacebook.comwwwmfacebook.comzuckerberg.comzuckerberg.netfacebookwork.com
+redkix.com
workplace.comworkplaceusecases.com!achat-followers-instagram.com#acheter-followers-instagram.com$ acheterdesfollowersinstagram.com!acheterfollowersinstagram.combookstagram.comcarstagram.comcdninstagram.comchickstagram.com ig.me
igcdn.comigsonar.comigtv.com
imstagram.comimtagram.cominstaadder.cominstachecker.cominstafallow.cominstafollower.cominstagainer.cominstagda.com
instagify.cominstagmania.cominstagor.cominstagram-brand.cominstagram-engineering.cominstagram-help.cominstagram-press.cominstagram-press.net
instagram.cominstagramci.cominstagramcn.cominstagramdi.cominstagramhashtags.netinstagramhilecim.cominstagramhilesi.orginstagramium.cominstagramizlenme.cominstagramkusu.cominstagramlogin.cominstagramm.cominstagramn.cominstagrampartners.cominstagramphoto.cominstagramq.cominstagramsepeti.cominstagramtakipcisatinal.netinstagramtakiphilesi.cominstagramtips.cominstagramtr.com
instagran.cominstagranm.com
instagrem.cominstagrm.cominstagtram.cominstagy.cominstamgram.cominstangram.cominstanttelegram.cominstaplayer.net
instastyle.tvinstgram.comintagram.comintagrm.comintgram.comkingstagram.comlnstagram-help.comtheinstagramhack.comoninstagram.comonline-instagram.comonlineinstagram.comweb-instagram.netwwwinstagram.combizographics.com
licdn.comlinkedin.atlinkedin.comlnkd.inl-0005.dc-msedge.netl-0005.l-msedge.net graph.instagram.com
+ads)graph-fallback.instagram.com
+adslicdn.cn
+cnlinkedin.cn
+cn
+Q
+JSDELIVRcdn.jsdelivr.netjsdelivr.comjsdelivr.netesm.run
+
+ONEPLUSoneplus.com
+oneplus.cnoneplus.net
opstatics.comoneplusbbs.comh2os.com"community.oneplus.com
+!cn
+
+ORACLE
+oraclejava
oracleimg.comoracleinfinity.io
covid19rx.org
+oracle.comoraclecloud.comoraclefoundation.org
+bronto.comcovid19-rx.orgsun.comvirtualbox.orgaddthis.comaddthiscdn.comaddthisedge.comateam-oracle.comjava.comjava.net
+y
+ QINGCLOUD
frontwize.com
qingcache.com
qingcloud.comqingstor.com
routewize.com
+yunify.com
+
+BRAVEUXbraventures.combraveux.com
+compass.isfightforux.comforthebadge.comstockagainstphotography.com
+V
+IMDBimdbboxofficemojo.comimdb.comimdb.tomedia-imdb.com
+
+MIRAHEZEmiraheze.org
+H
+WISTIA
+wistia.com
+wistia.netembedwistia-a.akamaihd.net
+9
+DOUBAN
+douban.com
douban.fmdoubanio.com
+Y
+PERLperl.orgcpan.orgmetacpan.org
+modperl.plperl.apache.org
+-
+WANFANG
+wf.pubwanfangdata.com.cn
+
+OCULUS
binoculus.com
buyoculus.comocul.usoculus-china.com
+oculus.comoculus2014.comoculus3d.comoculusblog.comoculusbrand.comoculuscasino.net
oculuscdn.comoculusconnect.comoculusdiving.comoculusforbusiness.comoculusrift.comoculusvr.compowersunitedvr.com
+V
+CAVPORNcavporn.comcavporn.github.io#(^|\.)cav1(0[2-9]|1[0-9])\.com$
+
+FEEDLY
+feedly.com
+%
+HONGDUNWANGhongdunwang.com.cn
+
+SOUNDOFHOPEbayvoice.netozvoice.org
sohcradio.com
sohfrance.orgsoundofhope.eusoundofhope.krsoundofhope.orgwanokokorosoh.com
+
+UCLOUD
+apimkt.net
cdndo.comclk1.cnclk1.topecloud-gdu.com
fshark.cnglobalrdp.cnglobalssh.cn
iprdp.net
ipssh.netme1.ltdslk1.net
u-cdn.net
ucgslb.cn
+ucgslb.comucgslb.info
+ucgslb.net
+ucgslb.topucloud-edm.com
ucloud.cn
ucloud365.comucloudadmin.com
ucloudapi.com
ucloudgda.comucloudnaming.cnucloudnaming.comucloudnaming.infoucloudnaming.net
ucloudoss.comucloudstack.cnucloudstack.comucloudstack.netucloudstor.comucloudufile.comucnaming.cnucnaming.com
ucnaming.infoucnaming.net
uewaf.comufileos.comugslb.cn
ugslb.com
+ugslb.info
ugslb.net
ugslb.top
+ugslb2.net
uhasadmin.com
+unaming.cnunaming.infounaming.netuslk.netuucl.vip
ucloud.com.cnurtc.com.cn
+
+
+GOOGLE-ADS2mdn-cn.net
+ads2mdn.net
+adsadmob-cn.com
+ads admob.com
+adsads.youtube.com
+adsadsense.com
+ads'adsensecustomsearchads.com
+ads%adsenseformobileapps.com
+ads!adservice.google.com
+ads$advertisercommunity.com
+ads%advertiserscommunity.com
+ads"adwords-community.com
+adsadwords.com
+adsadwordsexpress.com
+ads#app-measurement-cn.com
+ads app-measurement.com
+adsdoubleclick-cn.net
+adsdoubleclick.cn
+adsdoubleclick.com
+adsdoubleclick.net
+ads$google-analytics-cn.com
+ads!google-analytics.com
+adsgoogleadapis.com
+adsgoogleads-cn.com
+ads
googleads.com
+ads$googleadservices-cn.com
+ads!googleadservices.com
+ads googleadsserving.cn
+ads googleanalytics.com
+ads"googleoptimize-cn.com
+adsgoogleoptimize.com
+ads%googlesyndication-cn.com
+ads"googlesyndication.com
+ads$googletagmanager-cn.com
+ads!googletagmanager.com
+ads%googletagservices-cn.com
+ads"googletagservices.com
+ads*googletraveladservices-cn.com
+ads'googletraveladservices.com
+adsgooglevads-cn.com
+ads mail-ads.google.com
+ads)marketingplatform.google.com
+ads
+urchin.com
+ads!analytics.google.com
+ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$
+ads
+1
+LITVlitv.tvlitvfreepc.akamaized.net
+$
+QCCqcc.comqichacha.com
+:
+GIMYgimy.ccgimy.cogimy.togimy.tv
+d
+JUSTMYSOCKSjustmysocks.netjustmysocks1.netjustmysocks2.netjustmysocks4.net
+L
+
+AMAZON-ADS amazon-adsystem.com
+adsserving-sys.com
+ads
+$
+CLOUDCONVERTcloudconvert.com
+
+FANDOMfandom.zendesk.comcursecdn.com
+fandom.com
wikia.com
wikia.org
dndbeyond.comfuthead.com
gamepedia.commuthead.com
cortexrpg.com
fanatical.comwikia.nocookie.net
+e
+PYTHON
pycon.orgpypa.iopypi.iopypi.org
+python.orgpythonhosted.org
+
+SINGTAONEWSCORPhkheadline.comsingtao.comsingtaonewscorp.commy-magazine.me
singtaola.comsingtaousa.comstheadline.comsingtaoopo.comheadlinejobs.hk
+sing68.comsingtaobooks.com
+eduplus.hkbastillepost.comeasttouch.com.hkpcmarket.com.hkjobmarket.com.hkeastweek.com.hkthestandard.com.hk
+
+ZDNSzdns.cn
zdnscloud.bizzdnscloud.cn
zdnscloud.comzdnscloud.info
zdnscloud.netzcmbc.com.cnzdns.net.cnzdns.org.cnzdnscloud.com.cnzdnscloud.net.cnzdnscloud.org.cn
+
+ZOHOzohomerchandise.comzoho.euzoho.inzohocdn.comzohomeetups.comzoho.comzohopublic.comzohoschools.comzohostatic.com
zohostatic.inzohouniversity.comzohowebstatic.comzoho.com.au
+(
+CHEGG
chegg.comcheggcdn.com
+~
+GITLAB.*gitlab-assets.oss-cn-hongkong.aliyuncs.com
+gitlab.com
gitlab.io
+gitlab.netgitlab-static.net
+
+JUEJINp1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com
juejin.cn
juejin.imxitu.io
+<
+NGA
+nga.cn178.com
+ngabbs.comngacn.cc
+t
+NIKKEnikke-de.comnikke-en.comnikke-fr.comnikke-jp.comnikke-kr.com
nikke-sea.com
+z
+NOTIONnotion-static.com
+notion.com
+notion.newnotion.site
notion.sonotionusercontent.com
+
+ PINTERESTpinterest.nz
pinterest.netpinterest.atpinterest.espinterest.engineeringpinterest.chpinterest.clpinterest.copinterest.ecpinterest.vnpinterest.ukpinterest.twpinterest.th
pinterest.compinterest.sepinterest.rupinterest.ptpinterest.phpinterest.pe
+pin.itpinterest.nl
+pinimg.compinterest.depinterest.dkpinterestmail.compinterest.capinterest.bepinterest.frpinterest.hupinterest.idpinterest.iepinterest.inpinterest.infopinterest.itpinterest.jppinterest.krpinterest.mxpinterest.com.ecpinterest.co.ukpinterest.com.pypinterest.com.aupinterest.com.mxpinterest.com.vnpinterest.com.uypinterest.com.pepinterest.com.bopinterest.co.nzpinterest.co.krpinterest.co.inpinterest.co.atpinterest.map.fastly.net!pinimg.com.cdn.cloudflare.net
+
+CATEGORY-DEV-CNp1-juejin.byteimg.comp2-juejin.byteimg.comp3-juejin.byteimg.comp4-juejin.byteimg.comp5-juejin.byteimg.comp6-juejin.byteimg.comp7-juejin.byteimg.comp8-juejin.byteimg.comp9-juejin.byteimg.com
juejin.cn
juejin.imxitu.io
dengguobi.comhouyicaiji.comjinglingbiaozhu.comoschina.net
gitee.comgitee.io
openkylin.topubuntukylin.combaltamatica.comgitcode.com
+gitchat.cncsdn.netkaifayun.com
+csdnimg.cncsto.comcsdn.com
+gitbook.cn
+datasea.cn
codechina.netgitcode.net
iteye.commysxl.cn
+sxl.cn
sxlcdn.cn
openmidas.com
qq.designqqgamedesign.comtencent-cloud.cntencent-cloud.comtencent.designtencentcloud.comtjstats.comwegamedeveloper.comweixinbridge.comxueyuanjun.com
coding.me
+coding.net
pgyer.com
+tracup.comfrontjs.com
+asktug.com
+pingcap.cnpingcap.comtidb.aitidb.net
tidbcloud.comtikv.orgjinrishici.comruby-china.orgrubyconfchina.org
+tipdim.orgblogjava.netcnblogs.comcnitblog.comcnweblog.comcppblog.com
phpweblog.net
teachblog.net
deepin.cn
+deepin.com
deepin.io
+deepin.orgchinauos.com
uniontech.com
+goproxy.cn
+goproxy.iosegmentfault.com
sifou.comaixcoder.comnnthink.com
apifox.cn
+apifox.com
+apipost.cnapipost.netcsdn.net.cnprogrammer.com.cnprogrammer.net.cnweui.io
+cn
+bisheng.cn
+cnbishengcompiler.cn
+cndevui.design
+cn gneec.com
+cngneec.com.cn
+cn
+gneec3.com
+cn
+gneec4.com
+cn
+gneec7.com
+cn
harmonyos.com
+cnhiascend.cn
+cnhiascend.com
+cn hiclc.com
+cnhikunpeng.cn
+cn
hikunpeng.com
+cnhikunpeng.com.cn
+cn
hikunpeng.net
+cn
hisilicon.com
+cnhisilicon.com.cn
+cnhuaweiapaas.com
+cnmindspore.cn
+cn owsgo.com
+cnteleows.com
+cnsaasops.tech
+cn
+s
+EMBLembl-hamburg.deembl.deembl.frembl.itembl.orgemblstatic.net
ebi.ac.uk
+
+LANZOUbaidupan.comilanzou.comlanosso.com
+lanzou.comlanzoub.comlanzouc.comlanzoue.comlanzouf.comlanzoug.comlanzouh.comlanzoui.comlanzouj.comlanzouk.comlanzoul.comlanzoum.comlanzouo.comlanzoup.comlanzouq.comlanzous.comlanzout.comlanzouu.comlanzouv.comlanzouw.comlanzoux.comlanzouy.com
+lanzov.comwoozooo.com
+
+
+TYPOGRAPHYtypography.com
+;
+BLUEPOCHbluepoch.com
+cn sl916.com
+cn
+
+CATEGORY-PTbitpt.cnblutopia.cc
totheglory.imbibliotik.mespringsunday.netbroadcasthe.netccfbits.org
+cinemaz.todicmusic.comeastgame.orget8.orgexoticaz.tofilelist.iogreatposterwall.com
+hdbits.orghdcity.city
+hdfans.org
+hdtime.orghhanclub.topiptorrents.comjpopsuki.eu
jptv.clublemonhd.org
morethantv.mepterclub.compassthepopcorn.meprivatehd.toourbits.clubbeyond-hd.me
+avistaz.toopen.cd
npupt.com
+pthome.netptsbao.club
nanyangpt.comsharkpt.netuhdbits.org
zhuque.inkeepfrds.com
+byr.pt
+tju.pt
tjupt.orgaudiences.me
+chdbits.cohdchina.org
+hdhome.orghdsky.me
bt.byr.cnshare.ilolicon.comneu6.edu.cnpt.btschool.clubpt.soulvoice.clubpt.hd4fans.orghudbt.hust.edu.cnpt.xauat.edu.cnpt.nwsuaf6.edu.cnpt.sjtu.edu.cn
+skyey2.com
+!cn
skyeysnow.com
+!cn m-team.cc
+!cn m-team.io
+!cnmyanonamouse.net
+!cntorrentleech.org
+!cnu2.dmhy.org
+!cn
+6
+FIREFOXfirefox.comfirefoxusercontent.com
+P
+WHATSAPP-ADSgraph.whatsapp.com
+adsgraph.whatsapp.net
+ads
+
+XIAOMI
+mi-img.com
+mi.com
mifile.cn
+mijia.techmiui.com
+miwifi.com
xiaomi.cn
+xiaomi.com
+xiaomi.netxiaomiev.comxiaomimobile.comxiaomixiaoai.comxiaomiyoupin.com
+saxyit.com a.market.xiaomi.com
+adsad.intl.xiaomi.com
+ads ad.mi.com
+ads
ad.xiaomi.com
+adsad1.xiaomi.com
+adsadmob.xiaomi.com
+ads"adv.sec.intl.miui.com
+adsadv.sec.miui.com
+ads"misc.in.duokanbox.com
+adsmistat.xiaomi.com
+adssentry.d.mi.com
+ads sentry.d.xiaomi.net
+adstjqonline.cn
+ads"tracker.ai.xiaomi.com
+adstracking.miui.com
+ads
+
+
+YNOPROJECTynoproject.net
+h
+CATEGORY-NETWORK-SECURITY-CN
+cnmstl.netfofa.sot00ls.cc
t00ls.net
+tools.team
+2
+IMGBB
+ibb.co
imgbb.com
+simgbb.com
+I
+MADSHI
+madshi.net
madvr.com
madvr.net
madvrlabs.llc
+
+HUFFPOSThuffingtonpost.jphuffingtonpost.eshuffingtonpost.grhuffingtonpost.inhuffingtonpost.frhuffpostbrasil.comhuffingtonpost.dehuffpost.comhuffpostmaghreb.comhuffpostarabi.comhuffingtonpost.comhuffingtonpost.ithuffingtonpost.cahuffingtonpost.krhuffingtonpost.com.mxhuffingtonpost.co.zahuffingtonpost.co.ukhuffingtonpost.com.au
+
+QUANTILquantil.com
++
+TRELLO
+trello.com
trellocdn.com
+
+VIMEO
+vhx.tv
+vhxqa1.com
+vhxqa2.com
+vhxqa3.com
+vhxqa4.com
+vhxqa6.comvimeo-staging.comvimeo-staging2.com
vimeo.comvimeo.frvimeobusiness.comvimeocdn.comvimeogoods.comvimeoondemand.comvimeostatus.comlivestream.com($^[0-9]+vod-adaptive\.akamaized\.net$
+Q
+WIN-SPYadnexus.net
+msedge.net
adnxs.combingads.microsoft.comac3.msn.comtele.trafficmanager.net*&bn2-ris-ap-prod-atm.trafficmanager.netview.atdmt.comwatson.live.comads.msn.comads1.msads.netads1.msn.comaidps.atdmt.comaka-cdn-ns.adtech.dessw.live.comapi.cortana.aispynetalt.microsoft.comspynet2.microsoft.com'#bn2-ris-prod-atm.trafficmanager.net%!settingsfd-geo.trafficmanager.netsecure.flashtalking.combs.serving-sys.com
c.msn.comtelemetry.microsoft.comazwancan.trafficmanager.netrad.msn.comrad.live.compreview.msn.compre.footprintpredict.commsntest.serving-sys.comwatson.microsoft.com"insideruser.trafficmanager.net!ieonlinews.trafficmanager.netieonlinews.microsoft.com
+h2.msn.com
+h1.msn.com
g.msn.comflex.msn.comec.atdmt.comdb3aqu.atdmt.com&"compatexchange1.trafficmanager.net
cdn.atdmt.comromeccs.microsoft.comc.atdmt.com#hk2sch130021842.wns.windows.com#hk2sch130020721.wns.windows.com#bn4sch101121118.wns.windows.com#bn4sch101121223.wns.windows.com#bn4sch101121407.wns.windows.com#bn4sch101121618.wns.windows.com#bn4sch101121704.wns.windows.com#bn4sch101121709.wns.windows.com#bn4sch101121714.wns.windows.com#bn4sch101121908.wns.windows.com#bn4sch101122117.wns.windows.com#bn4sch101122310.wns.windows.com#bn4sch101122312.wns.windows.com#bn4sch101122421.wns.windows.com#bn4sch101123108.wns.windows.com#bn4sch101123110.wns.windows.com#bn4sch101123202.wns.windows.com#bn4sch102110124.wns.windows.comztd.dds.microsoft.com#bn4sch101121019.wns.windows.com#bn4sch101120913.wns.windows.com#bn4sch101120911.wns.windows.comcache.datamart.windows.com#bn4sch101120818.wns.windows.comcds1.stn.llnw.netcds10.stn.llnw.netcds27.ory.llnw.netcds1203.lon.llnw.netcds1204.lon.llnw.netcds1209.lon.llnw.netcds1219.lon.llnw.netcds1228.lon.llnw.netcds1244.lon.llnw.netcds1257.lon.llnw.netcds1265.lon.llnw.netcds1269.lon.llnw.netcds1273.lon.llnw.netcds1285.lon.llnw.netcds1287.lon.llnw.netcds1289.lon.llnw.netcds1293.lon.llnw.netcds1307.lon.llnw.netcds1310.lon.llnw.netcds1325.lon.llnw.netcds1327.lon.llnw.netcds177.dus.llnw.netcds20005.stn.llnw.netcds20404.lcy.llnw.netcds20411.lcy.llnw.netcds20415.lcy.llnw.netcds20416.lcy.llnw.netcds20417.lcy.llnw.netcds20424.lcy.llnw.netcds20425.lcy.llnw.netcds20431.lcy.llnw.netcds20435.lcy.llnw.netcds20440.lcy.llnw.netcds20443.lcy.llnw.netcds20445.lcy.llnw.netcds20450.lcy.llnw.netcds20452.lcy.llnw.netcds20457.lcy.llnw.netcds20461.lcy.llnw.netcds20469.lcy.llnw.netcds20475.lcy.llnw.netcds20482.lcy.llnw.netcds20485.lcy.llnw.netcds20495.lcy.llnw.netcds21205.lon.llnw.netcds21207.lon.llnw.netcds21225.lon.llnw.netcds21229.lon.llnw.netcds21233.lon.llnw.netcds21238.lon.llnw.netcds21244.lon.llnw.netcds21249.lon.llnw.netcds21256.lon.llnw.netcds21257.lon.llnw.netcds21258.lon.llnw.netcds21261.lon.llnw.netcds21267.lon.llnw.netcds21278.lon.llnw.netcds21281.lon.llnw.netcds21293.lon.llnw.netcds21309.lon.llnw.netcds21313.lon.llnw.netcds21321.lon.llnw.netcds299.lcy.llnw.netcds308.lcy.llnw.netcds30027.stn.llnw.netcds310.lcy.llnw.netcds38.ory.llnw.netcds54.ory.llnw.netcds405.lcy.llnw.netcds406.lcy.llnw.netcds407.fra.llnw.netcds416.lcy.llnw.netcds421.lcy.llnw.netcds422.lcy.llnw.netcds425.lcy.llnw.netcds426.lcy.llnw.netcds447.lcy.llnw.netcds458.lcy.llnw.netcds459.lcy.llnw.netcds46.ory.llnw.netcds461.lcy.llnw.netcds468.lcy.llnw.netcds469.lcy.llnw.netcds471.lcy.llnw.netcds483.lcy.llnw.netcds484.lcy.llnw.netcds489.lcy.llnw.netcds493.lcy.llnw.netcds494.lcy.llnw.netcds812.lon.llnw.netcds815.lon.llnw.netcds818.lon.llnw.netcds832.lon.llnw.netcds836.lon.llnw.netcds840.lon.llnw.netcds843.lon.llnw.netcds857.lon.llnw.netcds868.lon.llnw.netcds869.lon.llnw.netwin8.ipv6.microsoft.comwin1710.ipv6.microsoft.com#bn4sch101120814.wns.windows.comcorp.sts.microsoft.comwin10.ipv6.microsoft.comcs1.wpc.v0cdn.net#bn3sch020022361.wns.windows.comvortex.data.microsoft.com%!vortex-sandbox.data.microsoft.coma.ads2.msads.net%!diagnostics.support.microsoft.com$ umwatsonc.telemetry.microsoft.ustest.activity.windows.com#bn3sch020022335.wns.windows.com#bn3sch020022328.wns.windows.com#bn3sch020020749.wns.windows.comteredo.ipv6.microsoft.comtelemetry.urs.microsoft.com($telemetry.remoteapp.windowsazure.com#bn3sch020020322.wns.windows.com#bn3sch020012850.wns.windows.coma.ads2.msn.comhk2.wns.windows.com#bn4sch101121109.wns.windows.com#hk2sch130020723.wns.windows.com#hk2sch130020726.wns.windows.com#hk2sch130020729.wns.windows.com#hk2sch130020732.wns.windows.com#hk2sch130020824.wns.windows.com#hk2sch130020843.wns.windows.com#hk2sch130020851.wns.windows.com#hk2sch130020854.wns.windows.com#hk2sch130020855.wns.windows.com#hk2sch130020924.wns.windows.com#hk2sch130020936.wns.windows.com#hk2sch130020940.wns.windows.com#hk2sch130020956.wns.windows.com#hk2sch130020958.wns.windows.com#hk2sch130020961.wns.windows.com#hk2sch130021017.wns.windows.com#hk2sch130021029.wns.windows.com#hk2sch130021035.wns.windows.com#hk2sch130021137.wns.windows.com#hk2sch130021142.wns.windows.com#hk2sch130021153.wns.windows.com#hk2sch130021217.wns.windows.com#hk2sch130021246.wns.windows.com#hk2sch130021249.wns.windows.com#hk2sch130021260.wns.windows.com#hk2sch130021264.wns.windows.com#hk2sch130021322.wns.windows.com#hk2sch130021323.wns.windows.com#hk2sch130021329.wns.windows.com#hk2sch130021334.wns.windows.com#hk2sch130021360.wns.windows.com#hk2sch130021432.wns.windows.com#hk2sch130021433.wns.windows.com#hk2sch130021435.wns.windows.com#hk2sch130021437.wns.windows.com#hk2sch130021440.wns.windows.com#hk2sch130021450.wns.windows.com#hk2sch130021518.wns.windows.com#hk2sch130021523.wns.windows.com#hk2sch130021526.wns.windows.com#hk2sch130021527.wns.windows.com#hk2sch130021544.wns.windows.com#hk2sch130021554.wns.windows.com#hk2sch130021618.wns.windows.com#hk2sch130021634.wns.windows.com#hk2sch130021638.wns.windows.com#hk2sch130021646.wns.windows.com#hk2sch130021652.wns.windows.com#hk2sch130021654.wns.windows.com#hk2sch130021657.wns.windows.com#hk2sch130021723.wns.windows.com#hk2sch130021726.wns.windows.com#hk2sch130021727.wns.windows.com#hk2sch130021730.wns.windows.com#hk2sch130021731.wns.windows.com#hk2sch130021754.wns.windows.com#hk2sch130021829.wns.windows.com#hk2sch130021830.wns.windows.com#hk2sch130021833.wns.windows.com#hk2sch130021840.wns.windows.comtelemetry.appex.bing.net#hk2sch130021851.wns.windows.com#hk2sch130021852.wns.windows.com#hk2sch130021927.wns.windows.com#hk2sch130021928.wns.windows.com#hk2sch130021929.wns.windows.com#hk2sch130021958.wns.windows.com#hk2sch130022035.wns.windows.com#hk2sch130022041.wns.windows.com#hk2sch130022049.wns.windows.com#hk2sch130022135.wns.windows.comhk2wns1.wns.windows.comhk2wns1b.wns.windows.com#bn3sch020011727.wns.windows.com#bn3sch020010650.wns.windows.com#bn3sch020010636.wns.windows.comlive.rads.msn.com#bn3sch020010635.wns.windows.com#bn3sch020010631.wns.windows.com#bn3sch020010629.wns.windows.comnexus.officeapps.live.com"nexusrules.officeapps.live.com%!spyneteurope.microsoft.akadns.netoca.telemetry.microsoft.usapi.edgeoffer.microsoft.compar02p.wns.windows.com#bn3sch020010618.wns.windows.compresence.teams.live.com#bn3sch020010560.wns.windows.com#bn3sch020010558.wns.windows.combn2wns1.wns.windows.com$ redir.metaservices.microsoft.comsg2p.wns.windows.com schemas.microsoft.akadns.netb.ads2.msads.net'#settings-win-ppe.data.microsoft.com'#settings-sandbox.data.microsoft.com'#umwatsonc.events.data.microsoft.com&"kmwatson.events.data.microsoft.com0,blobcollector.events.data.trafficmanager.net&"umwatson.events.data.microsoft.com#browser.pipe.aria.microsoft.com)%onecollector.cloudapp.aria.akadns.net)%nw-umwatson.events.data.microsoft.com+'xblgdvrassets3010.blob.core.windows.net&"ceuswatcab01.blob.core.windows.net&"ceuswatcab02.blob.core.windows.netlb1.www.ms.akadns.net*&corpext.msitadfs.glbdns2.microsoft.com%!vortex.data.glbdns2.microsoft.com-)1oavsblobprodcus350.blob.core.windows.net'#weus2watcab02.blob.core.windows.net'#weus2watcab01.blob.core.windows.net'#eaus2watcab02.blob.core.windows.net"mobile.pipe.aria.microsoft.com'#settings.data.glbdns2.microsoft.com'#kmwatsonc.events.data.microsoft.com'#eaus2watcab01.blob.core.windows.net%!v10.vortex-win.data.microsoft.com%!v20.vortex-win.data.microsoft.com-)37bvsblobprodcus311.blob.core.windows.net)%sqm.telemetry.microsoft.com.nsatc.net$ uks.b.prd.ags.trafficmanager.net.*geo.settings.data.microsoft.com.akadns.net0,v10-win.vortex.data.microsoft.com.akadns.net,(cy2.vortex.data.microsoft.com.akadns.net,(db5.vortex.data.microsoft.com.akadns.net2.geo.settings-win.data.microsoft.com.akadns.net,(geo.vortex.data.microsoft.com.akadns.net.*hk2.settings.data.microsoft.com.akadns.net62db5-eap.settings-win.data.microsoft.com.akadns.net.*db5.settings.data.microsoft.com.akadns.net2.db5.settings-win.data.microsoft.com.akadns.net/+modern.watson.data.microsoft.com.akadns.net51asimov-win.settings.data.microsoft.com.akadns.net
+
+CENO
censorship.no
+,
+ DANDANZANdandanzan.cc
nunuyy.cc
+
+ HASHICORP
consul.io
hashicorp.comnomadproject.io
packer.ioterraform.iovagrantcloud.com
vagrantup.comvaultproject.io
+j
+
+WIN-UPDATEwindowsupdate.comarc-apac.msn.comspo-ring.msedge.neto-ring.msedge.netdownload.microsoft.com#definitionupdates.microsoft.comadl.windows.com#db5sch101101445.wns.windows.com#db5sch101101608.wns.windows.com#db5sch101101541.wns.windows.com#db5sch101101543.wns.windows.comam3p.wns.windows.comwns2-par02p.wns.windows.comwns2-db5p.wns.windows.comstatsfe2.ws.microsoft.comstatsfe1.ws.microsoft.com!statsfe2.update.microsoft.comslscr.update.microsoft.comsls.update.microsoft.com"skydrivesync.policies.live.netskydrive.wns.windows.comfe2cr.update.microsoft.comfe2.ws.microsoft.comfe2.update.microsoft.comemdl.ws.microsoft.com#displaycatalog.mp.microsoft.com#db6sch102091607.wns.windows.com#db6sch102091606.wns.windows.com#db6sch102091603.wns.windows.com#db6sch102091602.wns.windows.com#db6sch102091508.wns.windows.com#db6sch102091507.wns.windows.com#db6sch102091503.wns.windows.com#db6sch102091412.wns.windows.com#db6sch102091314.wns.windows.com#db6sch102091309.wns.windows.com#db6sch102091308.wns.windows.com#db6sch102091307.wns.windows.com#db6sch102091305.wns.windows.com#db6sch102091209.wns.windows.com#db6sch102091205.wns.windows.com#db6sch102091204.wns.windows.com#db6sch102091105.wns.windows.com#db6sch102091103.wns.windows.com#db6sch102091011.wns.windows.com#db6sch102091009.wns.windows.com#db6sch102091008.wns.windows.com#db6sch102091007.wns.windows.com#db6sch102091003.wns.windows.com#db6sch102090911.wns.windows.com#db6sch102090910.wns.windows.com#db6sch102090908.wns.windows.com#db6sch102090907.wns.windows.com#db6sch102090905.wns.windows.com#db6sch102090902.wns.windows.com#db6sch102090811.wns.windows.com#db6sch102090810.wns.windows.com#db6sch102090619.wns.windows.com#db6sch102090613.wns.windows.com#db6sch102090519.wns.windows.com#db6sch102090514.wns.windows.combl2p.wns.windows.com#db6sch102090513.wns.windows.com#db6sch102090512.wns.windows.com#db6sch102090510.wns.windows.comclient.wns.windows.com!db3wns2011111.wns.windows.comdb5.wns.windows.com#db6sch102090504.wns.windows.comdb5p.wns.windows.com#db6sch102090412.wns.windows.com#db5sch101100122.wns.windows.com#db5sch101100127.wns.windows.com#db5sch101100831.wns.windows.com#db5sch101100835.wns.windows.com#db5sch101100917.wns.windows.com#db5sch101100925.wns.windows.com#db5sch101100928.wns.windows.com#db5sch101100938.wns.windows.com#db5sch101101001.wns.windows.com#db5sch101101022.wns.windows.com#db5sch101101024.wns.windows.com#db5sch101101031.wns.windows.com#db5sch101101034.wns.windows.com#db5sch101101042.wns.windows.com#db5sch101101044.wns.windows.com#db5sch101101122.wns.windows.com#db5sch101101123.wns.windows.com#db5sch101101125.wns.windows.com#db5sch101101128.wns.windows.com#db5sch101101129.wns.windows.com#db5sch101101133.wns.windows.com#db5sch101101145.wns.windows.com#db5sch101101209.wns.windows.com#db5sch101101221.wns.windows.com#db5sch101101228.wns.windows.com#db5sch101101231.wns.windows.com#db5sch101101237.wns.windows.com#db5sch101101317.wns.windows.com#db5sch101101324.wns.windows.com#db5sch101101329.wns.windows.com#db5sch101101333.wns.windows.com#db5sch101101334.wns.windows.com#db5sch101101338.wns.windows.com#db5sch101101419.wns.windows.com#db5sch101101424.wns.windows.com#db5sch101101426.wns.windows.com#db5sch101101427.wns.windows.com#db5sch101101430.wns.windows.com#db5sch101101511.wns.windows.com#db5sch101101519.wns.windows.com#db5sch101101529.wns.windows.com#db5sch101101535.wns.windows.com#db5sch101101618.wns.windows.com#db5sch101101629.wns.windows.com#db5sch101101631.wns.windows.com#db5sch101101633.wns.windows.com#db5sch101101640.wns.windows.com#db5sch101101711.wns.windows.com#db5sch101101722.wns.windows.com#db5sch101101739.wns.windows.com#db5sch101101745.wns.windows.com#db5sch101101813.wns.windows.com#db5sch101101820.wns.windows.com#db5sch101101826.wns.windows.com#db5sch101101828.wns.windows.com#db5sch101101835.wns.windows.com#db5sch101101837.wns.windows.com#db5sch101101844.wns.windows.com#db5sch101101902.wns.windows.com#db5sch101101907.wns.windows.com#db5sch101101910.wns.windows.com#db5sch101101914.wns.windows.com#db5sch101101929.wns.windows.com#db5sch101101939.wns.windows.com#db5sch101101941.wns.windows.com#db5sch101102015.wns.windows.com#db5sch101102017.wns.windows.com#db5sch101102019.wns.windows.com#db5sch101102023.wns.windows.com#db5sch101102025.wns.windows.com#db5sch101102032.wns.windows.com#db5sch101102033.wns.windows.com#db5sch101110108.wns.windows.com#db5sch101110109.wns.windows.com#db5sch101110114.wns.windows.com#db5sch101110135.wns.windows.com#db5sch101110142.wns.windows.com#db5sch101110204.wns.windows.com#db5sch101110206.wns.windows.com#db5sch101110214.wns.windows.com#db5sch101110225.wns.windows.com#db5sch101110232.wns.windows.com#db5sch101110245.wns.windows.com#db5sch101110315.wns.windows.com#db5sch101110323.wns.windows.com#db5sch101110325.wns.windows.com#db5sch101110328.wns.windows.com#db5sch101110331.wns.windows.com#db5sch101110341.wns.windows.com#db5sch101110343.wns.windows.com#db5sch101110345.wns.windows.com#db5sch101110403.wns.windows.com#db5sch101110408.wns.windows.com#db5sch101110419.wns.windows.com#db5sch101110428.wns.windows.com#db5sch101110435.wns.windows.com#db5sch101110438.wns.windows.com#db5sch101110442.wns.windows.com#db5sch101110501.wns.windows.com#db5sch101110510.wns.windows.com#db5sch101110518.wns.windows.com#db5sch101110527.wns.windows.com#db5sch101110533.wns.windows.com#db5sch101110618.wns.windows.com#db5sch101110621.wns.windows.com#db5sch101110622.wns.windows.com#db5sch101110624.wns.windows.com#db5sch101110626.wns.windows.com#db5sch101110634.wns.windows.com#db5sch101110705.wns.windows.com#db5sch101110713.wns.windows.com#db5sch101110724.wns.windows.com#db5sch101110729.wns.windows.com#db5sch101110740.wns.windows.com#db5sch101110810.wns.windows.com#db5sch101110816.wns.windows.com#db5sch101110821.wns.windows.com#db5sch101110822.wns.windows.com#db5sch101110825.wns.windows.com#db5sch101110828.wns.windows.com#db5sch101110829.wns.windows.com#db5sch101110831.wns.windows.com#db5sch101110835.wns.windows.com#db5sch101110919.wns.windows.com#db5sch101110921.wns.windows.com#db5sch101110923.wns.windows.com#db5sch101110929.wns.windows.com#db5sch103081814.wns.windows.com#db5sch103081913.wns.windows.com#db5sch103082011.wns.windows.com#db5sch103082111.wns.windows.com#db5sch103082308.wns.windows.com#db5sch103082406.wns.windows.com#db5sch103082409.wns.windows.com#db5sch103082609.wns.windows.com#db5sch103082611.wns.windows.com#db5sch103082709.wns.windows.com#db5sch103082712.wns.windows.com#db5sch103082806.wns.windows.com#db5sch103090115.wns.windows.com#db5sch103090210.wns.windows.com#db5sch103090414.wns.windows.com#db5sch103090415.wns.windows.com#db5sch103090513.wns.windows.com#db5sch103090515.wns.windows.com#db5sch103090608.wns.windows.com#db5sch103090806.wns.windows.com#db5sch103090814.wns.windows.com#db5sch103090906.wns.windows.com#db5sch103091011.wns.windows.com#db5sch103091012.wns.windows.com#db5sch103091106.wns.windows.com#db5sch103091108.wns.windows.com#db5sch103091212.wns.windows.com#db5sch103091311.wns.windows.com#db5sch103091313.wns.windows.com#db5sch103091414.wns.windows.com#db5sch103091511.wns.windows.com#db5sch103091609.wns.windows.com#db5sch103091617.wns.windows.com#db5sch103091715.wns.windows.com#db5sch103091817.wns.windows.com#db5sch103091908.wns.windows.com#db5sch103091911.wns.windows.com#db5sch103092010.wns.windows.com#db5sch103092108.wns.windows.com#db5sch103092109.wns.windows.com#db5sch103092209.wns.windows.com#db5sch103092210.wns.windows.com#db5sch103092509.wns.windows.com#db5sch103100117.wns.windows.com#db5sch103100121.wns.windows.com#db5sch103100221.wns.windows.com#db5sch103100313.wns.windows.com#db5sch103100314.wns.windows.com#db5sch103100412.wns.windows.com#db5sch103100510.wns.windows.com#db5sch103100511.wns.windows.com#db5sch103100611.wns.windows.com#db5sch103100712.wns.windows.com#db5sch103101105.wns.windows.com#db5sch103101208.wns.windows.com#db5sch103101212.wns.windows.com#db5sch103101314.wns.windows.com#db5sch103101411.wns.windows.com#db5sch103101413.wns.windows.com#db5sch103101513.wns.windows.com#db5sch103101610.wns.windows.com#db5sch103101611.wns.windows.com#db5sch103101705.wns.windows.com#db5sch103101711.wns.windows.com#db5sch103101813.wns.windows.com#db5sch103101909.wns.windows.com#db5sch103101914.wns.windows.com#db5sch103102009.wns.windows.com#db5sch103102112.wns.windows.com#db5sch103102203.wns.windows.com#db5sch103102209.wns.windows.com#db5sch103102310.wns.windows.com#db5sch103102404.wns.windows.com#db5sch103102410.wns.windows.com#db5sch103102516.wns.windows.com#db5sch103102609.wns.windows.com#db5sch103102610.wns.windows.com#db5sch103102710.wns.windows.com#db5sch103102711.wns.windows.com#db5sch103102805.wns.windows.comdb5wns1d.wns.windows.com#db6sch102090104.wns.windows.com#db6sch102090109.wns.windows.com#db6sch102090112.wns.windows.com#db6sch102090116.wns.windows.com#db6sch102090122.wns.windows.com#db6sch102090203.wns.windows.com#db6sch102090206.wns.windows.com#db6sch102090208.wns.windows.com#db6sch102090209.wns.windows.com#db6sch102090210.wns.windows.com#db6sch102090211.wns.windows.com#db6sch102090212.wns.windows.com#db6sch102090305.wns.windows.com#db6sch102090306.wns.windows.com#db6sch102090308.wns.windows.com#db6sch102090311.wns.windows.com#db6sch102090313.wns.windows.com#db6sch102090410.wns.windows.com dl.delivery.mp.microsoft.com&"sg2p.wns.notify.trafficmanager.net#fe3cr.delivery.mp.microsoft.com!fe3.delivery.mp.microsoft.com&"displaycatalog.md.mp.microsoft.com$ geo-prod.do.dsp.mp.microsoft.com'#apac1.notify.windows.com.akadns.net)%array101-prod.do.dsp.mp.microsoft.com)%array102-prod.do.dsp.mp.microsoft.com)%array103-prod.do.dsp.mp.microsoft.com,(tsfe.trafficshaping.dsp.mp.microsoft.com)%array104-prod.do.dsp.mp.microsoft.com)%array201-prod.do.dsp.mp.microsoft.com,(statsfe2.update.microsoft.com.akadns.net)%array202-prod.do.dsp.mp.microsoft.com)%array204-prod.do.dsp.mp.microsoft.com)%array401-prod.do.dsp.mp.microsoft.com)%array402-prod.do.dsp.mp.microsoft.com)%array403-prod.do.dsp.mp.microsoft.com,(blob.sn4prdstr03a.store.core.windows.net)%array404-prod.do.dsp.mp.microsoft.comD@neu-displaycatalogrp.frontdoor.bigcatalog.commerce.microsoft.com'#geover-prod.do.dsp.mp.microsoft.com.*blob.dsm08prdstr03a.store.core.windows.net)%array405-prod.do.dsp.mp.microsoft.com)%array406-prod.do.dsp.mp.microsoft.com'#fe2.update.microsoft.com.akadns.net)%array407-prod.do.dsp.mp.microsoft.com)%array408-prod.do.dsp.mp.microsoft.com)%array203-prod.do.dsp.mp.microsoft.com)%array611.prod.do.dsp.mp.microsoft.com)%array616.prod.do.dsp.mp.microsoft.com bg2.v4.a.dl.ws.microsoft.com bg5.v4.a.dl.ws.microsoft.com)%array509.prod.do.dsp.mp.microsoft.com)%array508.prod.do.dsp.mp.microsoft.com)%array514.prod.do.dsp.mp.microsoft.com)%array515.prod.do.dsp.mp.microsoft.com)%array601.prod.do.dsp.mp.microsoft.com)%array602.prod.do.dsp.mp.microsoft.com)%array603.prod.do.dsp.mp.microsoft.com)%array604.prod.do.dsp.mp.microsoft.com)%array605.prod.do.dsp.mp.microsoft.com*&bl2p.wns.notify.windows.com.akadns.net)%array606.prod.do.dsp.mp.microsoft.com)%array607.prod.do.dsp.mp.microsoft.com*&db5p.wns.notify.windows.com.akadns.net)%array608.prod.do.dsp.mp.microsoft.com bg3.v4.a.dl.ws.microsoft.com)%array609.prod.do.dsp.mp.microsoft.com)%array610.prod.do.dsp.mp.microsoft.com bg4.v4.a.dl.ws.microsoft.com)%array612.prod.do.dsp.mp.microsoft.com)%array613.prod.do.dsp.mp.microsoft.com)%array614.prod.do.dsp.mp.microsoft.com)%array615.prod.do.dsp.mp.microsoft.com)%array513.prod.do.dsp.mp.microsoft.com)%array512.prod.do.dsp.mp.microsoft.com)%array810.prod.do.dsp.mp.microsoft.com)%array811.prod.do.dsp.mp.microsoft.com)%array813.prod.do.dsp.mp.microsoft.com)%array815.prod.do.dsp.mp.microsoft.combg.v4.a.dl.ws.microsoft.com bg1.v4.a.dl.ws.microsoft.com)%array510.prod.do.dsp.mp.microsoft.com)%array511.prod.do.dsp.mp.microsoft.com/+fe3.delivery.dsp.mp.microsoft.com.nsatc.net
+
+B3LOG
b3log.org
+0
+MEGAmega.iomega.nz
+mega.co.nz
+
+META-ADS#analytics.facebook.com
+adspixel.facebook.com
+ads graph.instagram.com
+ads)graph-fallback.instagram.com
+adsgraph.whatsapp.com
+adsgraph.whatsapp.net
+ads
+*
+WISEtransferwise.comwise.com
+
+ILLUSION-NONOFFICIAL
acgcf.com
acgdg.com
acgdv.comacgfabu.com
+acgfbw.comacgvipss.com
acgwr.comaishegw.comfabuyemian.comillusion111.comillusionas.comillusionchn.comillusiongw.com
illusionh.com
illusionl.comillusionn2.comillusionn3.comillusionn4.comillusionn5.comillusionxz.com
illusiony.comillusionze.comillusnoi.comisgame365.ccisheppc.comlliusno.comnoisullifb.comwnoaissulli1.com
+zzycdz.com
+-
+LANTERNgetlantern.org
+lantern.io
+7
+
+LONDONREALfreedomplatform.tv
londonreal.tv
+-
+SURFLITEsurflite.cosurflite.net
+#
+ EMOGI-ADS emogi.com
+ads
+
+SLACKslack-core.comslack-edge.comslack-files.comslack-imgs.comslack-msgs.comslack-redir.net
slack.com
+slackb.comslackcertified.com
slackdemo.comslackhq.com
+K
+
+SLIDESHAREslideshare.comslideshare.netslidesharecdn.com
+9
+HONGKONGPOSThongkongpost.gov.hkecert.gov.hk
+B
+
LOCALBITCOINSlocalbitcoins.comlocalbitcoinschain.com
+]
+APKPUREapkpure.comapkpure.netcdnpure.compureapk.com
+winudf.com
+
+FEISHUanycross.com
blmpb.combytedancehermestest.comfalconsending.com
+fei-shu.cn!feishu-3rd-party-services.comfeishu-boe.netfeishu-customer.cn
feishu-pre.cnfeishu-pre.net
feishu-psc.cnfeishu-staging.cn
feishu.cn
+feishu.netfeishuapp-cdn.netfeishuapp.cn
feishuapp.com
feishucdn.comfeishudoc.cn
feishudoc.comfeishuhuiyi.cnfeishuhuiyi.comfeishuimg-boe.comfeishuimg-pre.com
feishuimg.comfeishukacdn.comfeishumeetings.cnfeishumeetings.comfeishuoffice.cnfeishuoffice.com feishuopenplatformrecord.com
feishupkg.comfeishustatus.cnfeishuvc.cnfeishuvc.comgetfeishu.cn
getfeishu.com
+getsays.cngetsays.com
lackvc.cnsecurityfeishu.cn
securityfs.cnstatusfeishu.cn
+`
+GEMFURY
fury.blogfury.cofury.dev
fury.helpfury.iogemfury.com
+6
+IMGUR
imgur.comimgur.ioimgurinc.com
+Z
+INTERCOMintercom.comintercom.iointercomassets.comintercomcdn.com
+
+
+KINDLE4RSSkindle4rss.com
+a
+LE
+le.comlecloud.com
+lemall.comletv.comletvcdn.comletvimg.com
+
+PORNHUBgaytube.com
+phncdn.comphprcdn.comporngub.compornhub-deutsch.netpornhubapparel.compornhub.compornhub.orgpornhubpremium.com
+
+ATTaccbusiness.com
+atandt.comatt-bundles.com
att-japan.comatt-mail.comatt-promotions.comatt-rsvp.comatt.comatt.jobsatt.net
+att.tvattalascom.comattbelieves.comattbusiness.net
attcenter.comattcollaborate.comattexperts.com
attglobal.netattinnovationspace.comattinternetservice.com
+attjoy.comattnetclient.comattonlineoffers.comattproxy.comattpublicpolicy.comattpurchasing.comattsavings.comattspecial.com
+attssl.comattstadium.comattsuppliers.comatttvnow.comattuverseoffers.comattuverseonline.comattvoip.comattwifi.comattwirelessinternet.comattwirelessonline.comattwirelesssolutions.com
bellsouth.net
+budatt.com
+cobatt.com
currently.com
currently.netdirectvbusinessmarket.comenterprisepaging.com
itcanwait.commymmode.comnaturalvoices.comnettyinternet.comopenapiplatform.comopenapiservice.compatentgold.netpaygonline.comraponlinereview.com
signalbar.comsundayready.comsynaptic.netthanksloyalty.com
tvpromise.com
+uverse.comwebhosting.comatt-idns.net
+attdns.com
+attdns.netna-att-idns.netaudiencenetwork.comaudiencenetwork.tvcabletvdirectv.comdierectv.com
+dirctv.com
direcpath.com
direcpath.netdirecttv-deals.tvdirecttv-dish.comdkrecttv.comdirecttv.netdirecttvdeals.tvdirecttvreviews.comdirectv-4-you.comdirectv-newyork.comdirectv.comdirectvadsales.comdirectvatlantaga.comdirectvboston.comdirectvbundles.comdirectvbusiness.comdirectvcincinnatioh.comdirectvcinema.comdirectvconnect.comdirectvcookevilletn.comdirectvcrossvilletn.comdirectvdealer.comdirectvdeals.comdirectvdealsnow.com
directvdsl.tvdirectvforhotels.comdirectvgrandslam.comdirectvhouston.comdirectvinternet.comdirectvkentucky.comdirectvlebanontn.comdirectvlosangeles.comdirectvmetropolisil.comdirectvmonitoring.comdirectvmurfreesborotn.comdirectvnewhampshire.comdirectvnow.comdirectvoffercodes.comdirectvonline.comdirectvplans.comdirectvpomise.comdirectvpromise.comdirectvpromotions.comdirectvrebate.comdirectvrichmond.comdirectvsavings.comdirectvsports.comdirectvsundayticket.comdireectv.com
+diretv.comdtv2009offers.comfreedirecttvspecial.comgetdirect.tv
hddirectv.comle-direct.tvmydirectgroove.commydirectvchannels.comredzonechannel.com
txdirectv.com
xandr.comatt.cn
+cn
+attcorp.cn
+cn
+k
+
CHEETAHMOBILEcmcm.comcmcmcdn.com
liebao.cnduba.comduba.netijinshan.com
+'
+HM
+hm.com hm.com.cn
+cn
+4
+SCInewisiknowledge.comisiknowledge.com
+5
+YOUJIZZyjcontentdelivery.comyoujizz.com
+P
+JKFjkf.net
+jkface.netjkforum.net
jr24h.comjvid.com
+.
+ANDROIDandroid.comandroidify.com
+
+CATEGORY-MEDIA-IRcinematicket.org
+filmnet.iririb.ir
iribtv.iririnn.irjjtvn.ir
namava.ir
+qurantv.irradio.irradioiran.ir
radiojavan.irradiomaaref.ir
radiopayam.ir
radioquran.irradiotehran.irradiovarzesh.irtelewebion.com
+tmk.ir
+tv3.ir
+tv5.ir
+tv7.ir
+aparat.comaparatkids.comaparatsport.com
+filimo.com
filimo.school
++
+FLATPAKflathub.orgflatpak.org
+
+JIYUKOBOjiyu-kobo.co.jp
+)
+LIANJIAlianjia.com
ljcdn.com
+
+MINDGEEKmindgeek.comlivehdcams.comdigitalplayground.com
+porniq.com
+pornmd.comseancody.comthumbzilla.comtwistys.com
+webcams.tvwhynotbi.commydirtyhobby.com
+mdhcdn.com
+nutaku.com
+nutaku.netgaytube.com
+phncdn.comphprcdn.com
babes.compornhub-deutsch.netpornhubapparel.compornhub.compornhub.orgpornhubpremium.comredtubepremium.commen.comporngub.com
+rdtcdn.com digitalplaygroundnetwork.com
tube8.comtube8.frbrazzer.combrazzers.combrazzers.xxxbrazzersnetwork.com
mofos.comrealitykings.com
+rk.comextremetube.comkeezmovies.comyouporn.comyouporngay.comyoupornpremium.com
youpornru.comyopornshop.com
+ypncdn.comredtube.comredtube.com.br
+?
+ BONGACAMS
+bcicdn.combcrncdn.com
bongacams.com
+
+GOOGLE-SCHOLARscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk!scholar.googleusercontent.comscholar.l.google.com
+9
+JAVBUS
+javbus.comjavbus22.com
javcdn.cc
+
+ JUSHUITAN315dian.com
+doucang.cndoucang.com
+drp321.com
+erp.cn
erp321.cn
+erp321.com
+erp321.net
jsterp.cn
jugongdan.comjushuitan.cn
jushuitan.com
jushuitan.netjushuitan-inc.comjuxieyun.com
scm121.cn
+scm121.com
+shopss.com
shuiyaohuo.cnshuiyaohuo.com
surerp.cn
+surerp.com
+sursung.cnsursung.com
+
+LINElinemobile.comlineshoppingseller.comline-apps-beta.comline-apps-rc.com
line-apps.comline-beta.meline-cdn.netline.biz
+nhncorp.jp
+lin.ee
line-scdn.netlinecorp.comlinefriends.com
linetv.twlinegame.jp
gcld-line.comlinemyshop.comline.melinefriends.com.tw
line.naver.jp
+0
+SOHUsohu.com
+sohucs.com
+itc.cn
+
+QNAPmyqnapcloud.comqlink.toqnap.commyqnapcloud.cn
+cn
+qlinkto.cn
+cnqnap.com.cn
+cn
+z
+CERNcernams02.spacecern.chcixp.netdotcernpilot.info
ippog.orglinearcollider.org
+
+HURRICANEELECTRIC
+he.net
+
+LARKbaseopendev.com
bytecloud.com
+byteoc.combytewebservice.com
+bytexns.cnbytexns.combytexns.net
bytexopen.combytexservice.com
meegobeta.comoceancloudapi.com
+okr.cnokr.comvscenevideo.comanycross.com
blmpb.combytedancehermestest.comfalconsending.com
+fei-shu.cn!feishu-3rd-party-services.comfeishu-boe.netfeishu-customer.cn
feishu-pre.cnfeishu-pre.net
feishu-psc.cnfeishu-staging.cn
feishu.cn
+feishu.netfeishuapp-cdn.netfeishuapp.cn
feishuapp.com
feishucdn.comfeishudoc.cn
feishudoc.comfeishuhuiyi.cnfeishuhuiyi.comfeishuimg-boe.comfeishuimg-pre.com
feishuimg.comfeishukacdn.comfeishumeetings.cnfeishumeetings.comfeishuoffice.cnfeishuoffice.com feishuopenplatformrecord.com
feishupkg.comfeishustatus.cnfeishuvc.cnfeishuvc.comgetfeishu.cn
getfeishu.com
+getsays.cngetsays.com
lackvc.cnsecurityfeishu.cn
securityfs.cnstatusfeishu.cnlarkofficecdn.comthelarkcloud.comlarkofficeimg.com
larkcloud.com
larkcloud.net
+larkfn.comlarkmeetings.cnlarkmeetings.comlarkoffice.comstatuslarkoffice.comlarkofficeapp-boe.comlarkofficeapp-pre.comlarkofficeapp.comlarkofficeboe.comlark.cnlarkofficepkg.comlark-passport-qa-sg.netlarkofficepre.comlarkrooms.cn
larkrooms.comlarksuite-pre.com
larksuite.com
+larkvc.comlarksuiteimg.comlarksuitecdn.comlarksuiteimg-boe.comlarksuiteimg-pre.com
+okr.com.cnlarksuite.com.ttdns2.comlarksuite.com.ttdns1.comlarkoffice.com.bytedns1.com%!frontier-lark-lb-v3.lf.bytelb.net
+
+
+SKILLSHAREskillshare.com
+{
+ CLARIVATE
clarivate.comwebofknowledge.comwebofscience.comnewisiknowledge.comisiknowledge.com
+0
+MIXPANEL-ADS decide.mixpanel.com
+ads
+
+MOCHAmochajs.org
+
+RSSHUB
+rsshub.app
+Y
+ SUISHOUJI
feidee.cn
+feidee.com
+feidee.netssjlicai.comsui.com
+
+
+TORPROJECTtorproject.org
+
+WWEwwe.comwwe9.com
+
+ BAIJIAYUN
baijiayun.com
+
+CATEGORY-NEWS-IRaftabnews.iralef.irasriran.combornanews.irecobourse.ireghtesadnews.comentekhab.ir
+fararu.comfarsnews.irhawzahnews.comibena.iribna.irilna.irimna.iripna.iriqna.iriraneconomist.comirdiplomacy.iririb.irirna.irisna.irkhabaronline.irmashreghnews.irmehrnews.compana.irparsine.com
+qodsna.com
+saat24.comshabestan.irshana.ir
+snn.irsobhanehonline.com
tabnak.irtasnimnews.comtejaratnews.com
+yjc.ir
7sobh.com
abrarnews.com
aftabeyazd.irasianews.irdonya-e-eqtesad.comebtekarnews.comettelaat.comfinancialtribune.comhamshahrionline.iriran-newspaper.comjamejamonline.ir
kayhan.irkhabarvarzeshi.comkhorasannews.commardomsalari.irresalat-news.comsharghdaily.irtehrantimes.comnewspaper.fdn.ir
+
+GOLANGgo-lang.comgo-lang.netgo-lang.org
+go.dev
godoc.org
+golang.com
+golang.net
+golang.org
+R
+KAGGLE
+kaggle.com
kaggle.io
+kaggle.netkaggleusercontent.com
+
+NEWSCORPrumah123.comnypost.helpadhelpnews.comapi.newstimesmembership.com
bigcharts.comthetimes.ie
thesun.ie
talksport.com
page3.comdreamteamfc.combarrons.com
+rea.global
+rea.designfnlondon.com
rea-group.com
ippstatic.comrea.techhuanyuju.comthinkofliving.com
myfun.commansionglobal.commarketwatch.commoveaws.commove.com
+makaan.com
+rea.io
iproperty.comrea-asia.comnewsamerica.comsmartexpos.comhousingcdn.comhousing.com
proptiger.com
reastatic.netnewscorp.comnewscorpaustralia.comrealtor.comnypostreprints.comdowjones.comnewssyndication.comnewsukadops.com
+nypost.com
+nlm.iodjreprints.comharpercollinsadvantage.comharpercollinschristian.comstoryful.comharpercollins.ca#harpercollinsspeakersbureau.comshelfstuff.combookclubgirl.comharperapps.comharperacademic.com
epicreads.com
+hcpdts.comwsjbarrons.com
+collins.inwireless.radiolibrarylovefest.comcareerjournal.comcollegejournal.comopinionjournal.comrealestatejournal.comstartupjournal.comwsj.comwsj.jobswsj.netwsjmediakit.comwsjplus.comwsjshop.comwsjwine.combarrons-advisor.combarrons-conferences.comharpercollins.comdowjoneson.comdowjones.ionewsprestigenetwork.com.auharpercollins.co.inwhereilive.com.auiproperty.com.sgwirelessgroup.co.ukwhimn.com.auweeklytimesnow.com.autownsvillebulletin.com.authemessengeradelaide.com.authemercury.com.authechronicle.com.autheaustralian.com.autaste.com.ausupercoach.com.ausavvyshopper.net.auplacemyad.com.au%!harpercollinschildrensbooks.co.ukharpercollins.com.au
collins.co.ukegmontbooks.co.ukharpercollins.co.uknatgeokidsbooks.co.uk
ntnews.com.aunewsxtend.com.aunewsprinters.co.ukadelaidenow.com.aunewslicensing.co.uknewsconcierge.com.aunewscommercial.co.uknewscdn.com.aunewscareers.co.uknewsapi.com.aunewsadds.com.aunews.net.au1degree.com.aunews.com.au
+news.co.uknewcastlenewslocal.com.aunativeincolour.com.aukidspot.com.auintheknow.com.auheraldsun.com.augoldcoastbulletin.com.augeelongadvertiser.com.au
escape.com.audelicious.com.auspacely.com.auhackday.com.aurealcommercial.com.aurealestate.com.auflatmates.com.audailytelegraph.com.auiproperty.com.myinventorship.com.ausmartline.com.auhometrack.com.ausquarefoot.com.hkproperty.com.aucouriermail.com.aucnivogue.com.aucairnspost.com.aubridge-studio.co.uksunbingo.co.ukthescottishsun.co.ukthesun.co.ukbodyandsoul.com.aubestrecipes.com.au
driving.co.ukmytimesplus.co.uksportswomanoftheyear.co.uksportswomenoftheyear.co.uk
the-tls.co.ukthesundaytimes.co.ukthetimes.co.uk
+
+SNAP,(impala-media-production.s3.amazonaws.com
+sc-cdn.netsnap-dev.netsnap.comsnapchat.com
+snapkit.cosnapads.com
+ads
+\
+TAIKANGtaikang.comtaikanglife.comtaikangzhijia.comtkhealthcare.com
+)
+TUTANOTAtuta.iotutanota.com
+
+ABEMAabematv.akamaized.net#ds-linear-abematv.akamaized.net ds-vod-abematv.akamaized.net linear-abematv.akamaized.netvod-abematv.akamaized.netamebaowndme.comamebame.comabema-tv.comwinticket.jpabema.ioameba.jpabema.tv
amebaownd.com
adx.promo
ameblo.jpbucketeer.jpdokusho-ojikan.jphayabusa.devhayabusa.iohayabusa.media
abematv.co.jp
+y
+FONTSHOP40fontshop-prod-responsive-images.s3.amazonaws.comfontbook.comfontshop.comfstopimages.com
+
+ JETBRAINSintellij.comintellij.netintellij.org
jetbrains.com
jetbrains.netjetbrains.spacejetbrains.teamdatalore.iokotlinlang.org jb.ggcdn.jetbrains.com
+cn)download-cdn.jetbrains.com.cn
+cn
+
+
+VISUALARTSkamisama-day.jpabow.jp
+anigema.jpcharlotte-anime.jpclannad-movie.jpheaven-burns-red.com
angelbeats.jpkamisama-maeda-lab.comvisual-arts.jplitbus-anime.comkoubaibu.jprewrite-anime.tvvisualarts.gr.jp
product.co.jp
+)
+ GOOGLE-CN265.com2mdn-cn.net2mdn.netadmob-cn.comadservice.google.comai.ytimg.comapp-measurement-cn.comapp-measurement.comapps5.oingo.comavail.googleflights.netbeacons.gcp.gvt2.combeacons.gvt2.combeacons2.gvt2.combeacons3.gvt2.comborgmon.adz.google.comc.admob.com c.android.clients.google.com$ cache-management-prod.google.comcache.pack.google.comcheckin.gstatic.comclickserve.cc-dt.comclickserve.dartsearch.netclickserver.googleads.com!clientservices.googleapis.comcn.widevine.com!cnappinstall.googleadapis.com!connectivitycheck.gstatic.comcontent.googleadapis.com($crashlyticsreports-pa.googleapis.comcrl.pki.googcsi.gstatic.comdartsearch-cn.netdg-meta.video.google.comdistribution.qatp1.netdistribution.qcpp1.netdistribution.qpdp1.net
dl.google.comdl.l.google.comdoubleclick-cn.netdoubleclick.netdownload.mlcc.google.comdownload.qatp1.netdownload.qcpp1.netdownload.qpdp1.net"download.tensorflow.google.com#emmapplecodevice.googleapis.com%!firebase-settings.crashlytics.comfontfiles.googleadapis.comfontfiles.googleapis.comfonts.googleadapis.comfonts.googleapis.comfonts.gstatic.comg0.gstatic.comg1.gstatic.comg2.gstatic.comg3.gstatic.comgonglchuangl.netgongyichuangyi.netgoogle-analytics-cn.comgoogle-analytics.comgoogleadservices-cn.comgoogleadservices.comgoogleanalytics.comgoogleapis-cn.comgoogleapps-cn.comgoogleflights-cn.netgoogleoptimize-cn.comgoogleoptimize.comgoogleplex.comgooglesyndication-cn.comgooglesyndication.comgoogletagmanager-cn.comgoogletagmanager.comgoogletagservices-cn.comgoogletagservices.com!googletraveladservices-cn.comgoogletraveladservices.comgooglevads-cn.comgoto.google.comgstatic-cn.comgstaticadssl.l.google.comgtm.oasisfeng.comgvt1-cn.comgvt2-cn.comimasdk.googleapis.commonitoring.qatp1.netmonitoring.qcpp1.netmonitoring.qpdp1.net
ocsp.pki.goog$ pagead-googlehosted.l.google.com($performanceparameters.googleapis.compki-goog.l.google.complay.1ucrs.comprod-controlbe.floonet.googprod-databe.floonet.googprod.databe.floonet.googqagpublic.qatp1.netqagpublic.qcpp1.netqagpublic.qpdp1.netqgadmin.qatp1.netqgadmin.qcpp1.netqgadmin.qpdp1.netqpx.googleflights.netqualysapi.qatp1.netqualysapi.qcpp1.netqualysapi.qpdp1.netqualysguard.qatp1.netqualysguard.qcpp1.netqualysguard.qpdp1.net
recaptcha.netrecaptcha-cn.netredirector.bdn.dev redirector.c.chat.google.com redirector.c.mail.google.com redirector.c.pack.google.com redirector.c.play.google.com%!redirector.c.youtubeeducation.comredirector.gcpcdn.gvt1.comredirector.gvt1.com$ redirector.offline-maps.gvt1.comredirector.snap.gvt1.com"redirector.xn--ngstr-lra8j.com regioninfo-pa.googleapis.comsafebrowsing.googleapis.comscanservice1.qatp1.netscanservice1.qcpp1.netscanservice1.qpdp1.netservice.urchin.comsettings.xn--9trs65b.com%!ssl-google-analytics.l.google.comssl.gstatic.com"staging-controlbe.floonet.googstaging-databe.floonet.goog($staging-regioninfo-pa.googleapis.comstaging.databe.floonet.googsupport.1ucrs.comtac.googleapis.comtest.bugs-qa.chromium.orgtest.gbugs-qa.chromium.orgtools.google.comtools.l.google.comupdate.crashlytics.comupdate.googleapis.comwear.googleapis.com%!www-google-analytics.l.google.com%!www-googletagmanager.l.google.comwww.destinationurl.comwww.googleadapis.comwww.gstatic.comwww.pxcc.com
xn--9kr7l.comxn--flw351e.comapplemdm.corp.google.comdns.corp.google.comg3doc.corp.google.com gmskiosk-ssl.corp.google.comgo.corp.google.comgorom.corp.google.comgoto.corp.google.com l2-uberproxy.corp.google.comlogger.corp.google.comlogger-dev.corp.google.comlogin.corp.google.comproxyconfig.corp.google.com$ rapture-autopush.corp.google.comrapture.corp.google.com rapture-prod.corp.google.com rapture-test.corp.google.comr.cert.corp.google.comssh-relay.corp.google.comsslredirect.corp.google.com'#streaming-uberproxy.corp.google.com0,streaming-uberproxy-rotation.corp.google.comsup.corp.google.com!supportcenter.corp.google.com"sup-ssh-relay2.corp.google.com!sup-ssh-relay.corp.google.comtechstop.corp.google.comuberproxy4.corp.google.comuberproxy6.corp.google.comuberproxy.corp.google.com$ uberproxy-debug4.corp.google.com#uberproxy-debug.corp.google.com*&uberproxy-pen-redirect.corp.google.comvext.corp.google.comsup.l.google.com"uberproxy-with-cn.l.google.com#uberproxy-with-cn4.l.google.com#uberproxy-with-cn6.l.google.comqiao-cn.com
+:
+ESRI
+arcgis.comarcgisonline.comesri.com
+)
+LINGUEElinguee.com
deepl.com
+
+VANISH
vanish.se
vanish.espowerofresolve.comspraynwash.com
vanish.at
vanish.be
vanish.ch
vanish.clvanishstains.com
vanishinfo.czvanishcentroamerica.comvanisharabia.com
vanish.frpowerofresolve.ca
vanish.pl
vanish.ru
vanish.ro
vanish.pt
vanish.hu
vanish.no
vanish.nl
vanish.it
vanish.ie
vanish.de
vanish.dk
vanish.si
vanish.fi
vanish.skvanish.co.nz
vanish.com.tr
vanish.com.sg
vanish.com.pe
vanish.com.my
vanish.com.mx
vanish.com.hr
vanish.com.co
vanish.com.br
vanish.com.arvanish.co.zavanish.co.uko2action.co.krvanishbancaseulook.com.brvanish.co.invanish.co.ilvanish.co.idvanishstains.com.au vanish.cn
+cn
+*
+BOXUN
boxun.combowenpress.com
+
+CATEGORY-SCHOLAR-UKimperial.insendi.com
cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgimperialbusiness.schoolliparm.ac.ukuk-data-service.ac.uk3d-fossils.ac.uk3sixty-ucc.ac.uk
+4gls.ac.ukaaacymru.ac.ukaaschool.ac.uk
aau.ac.ukabbeygatesfc.ac.uk#abbeygatesixthformcollege.ac.ukabcol.ac.ukabcolstudents.ac.uk abdn-access-biomedical.ac.uk
+abdn.ac.ukabdn-online.ac.uk
+aber.ac.ukaberbangorpartnership.ac.uk%!aberbangorstrategicalliance.ac.ukaberdare.ac.ukaberdeen.ac.ukaberdeenenergy.ac.ukaberdeen-isc.ac.ukaberdeenrescon.ac.ukabertawe.ac.uk
abertay.ac.ukabertaydundee.ac.ukaberystwyth.ac.ukabhsc.ac.ukabicollege.ac.ukabingdon-witney.ac.ukabira.ac.ukabrsm.ac.uk
abs.ac.ukacacia.ac.ukacademic-clinician.ac.uk($academicpaediatricsassociation.ac.ukacademicpeerlearning.ac.uk%!academyforhealthcarescience.ac.ukacademyofmusic.ac.ukacceleratedcomputing.ac.ukaccesscollege.ac.ukaccesscreative.ac.ukaccesshe.ac.ukaccessheonline.ac.ukaccess-summit.ac.ukaccesstohe.ac.uk!accesstohighereducation.ac.ukaccesstomusic.ac.ukaccountancylearning.ac.uk
accross.ac.uk
+accs.ac.uk
+aced.ac.ukace-lp.ac.uk
+acer.ac.uk
+aces.ac.ukacets.ac.uk
acm.ac.ukacmedsci.ac.ukacoustics.ac.uk
acp.ac.ukacpme.ac.ukacsis.ac.ukactivatelearning.ac.ukactofunion.ac.ukactris.ac.ukactual.ac.uk
acu.ac.uk
ada.ac.ukadacollege.ac.ukadalovelacecentre.ac.ukadams-institute.ac.ukadamsmith.ac.ukadamsmithcollege.ac.ukadapt.ac.uk
+adas.ac.uk
addison.ac.ukadeptt.ac.ukadlib.ac.uk
+adls.ac.ukadrc-e.ac.uk
+adrn.ac.uk
ads.ac.ukadultlearningbcc.ac.ukadvanced-he.ac.ukadvancedhe.ac.ukadvanced-radiotherapy.ac.uk"advancedtherapeutics-cdt.ac.ukadvance-he.ac.ukadvancehe.ac.ukadvancingaccess.ac.uk"advantagenottinghamshire.ac.uk
+aecc.ac.ukaecc-chiropractic.ac.ukaemap.ac.ukaengd.ac.ukaerosol-cdt.ac.uk"aerospace-training-wales.ac.uk
aes.ac.uk
+afao.ac.uk
afi.ac.ukafricadesk.ac.ukafricanplants.ac.ukafsni.ac.ukafterenglish.ac.ukagenet.ac.ukagocg.ac.uk%!agressofinanceroyalholloway.ac.ukagrifoodatp.ac.uk
agrifor.ac.ukagriforwards-cdt.ac.ukagroforestry.ac.uk
ags.ac.uk
ahc.ac.uk
+ahcs.ac.uk
+ahds.ac.ukahessc.ac.ukahgtm.ac.uk
+ahpd.ac.uk
+ahrc.ac.ukahrcfoodnetwork.ac.uk
+ahua.ac.ukai3sd.ac.uk
aib.ac.ukaim25.ac.uk$ aimhighergreatermerseyside.ac.uk#aimhighernorthamptonshire.ac.ukaimhighernw.ac.ukaimhigherscotland.ac.ukaimhighersurrey.ac.ukaimhighersw.ac.ukaimhigherwm.ac.ukaimhigherwm-alps.ac.uk
+aims.ac.ukaire-wharf-coll.ac.uk
alc.ac.uk
+alcs.ac.uk
aldinhe.ac.uk alexanderlondoncollege.ac.ukalis-wales.ac.ukallcu.ac.ukalliancemanchester.ac.uk*&alliancemanchesterbusinessschool.ac.ukalliancembs.ac.ukallnations.ac.uk
+alma.ac.ukalmcollege.ac.uk
+aloe.ac.ukalps-cetl.ac.uk
alps-wm.ac.uk
alsalam.ac.ukalsod.ac.uk
alt.ac.ukaltereco.ac.ukaltis.ac.ukalton.ac.ukaltoncollege.ac.ukalwcymru.ac.ukalzheimers.ac.uk
+ambs.ac.ukamerc.ac.ukamericabrox.ac.ukamersham.ac.ukamerwyc-coll.ac.uk
amf.ac.ukamgueddfacymru.ac.uk
amh.ac.uk
ami.ac.ukamity.ac.uk
+amof.ac.ukamrtraining.ac.ukanaesthetistswales.ac.ukancientcyprus.ac.ukancientwisdoms.ac.uk
andover.ac.ukandovercollege.ac.ukangel.ac.ukanglia.ac.ukanglia-polytechnic.ac.ukanglia-ruskin.ac.ukangus.ac.ukanguscollege.ac.uk
+anic.ac.ukanniesland.ac.ukanniesland-fe.ac.ukantarctica.ac.ukantarctic.ac.uk
+antf.ac.ukanthropology.ac.ukanticipate.ac.ukantiquity.ac.ukantislavery.ac.ukantislaverylaw.ac.uk
aoc.ac.uk
+aocc.ac.ukaopcuk.ac.uk
+aphe.ac.uk
+apis.ac.ukaplustraining.ac.ukapollo.ac.ukapollocampus.ac.ukapollocrewe.ac.uk
apr.ac.uk
apt.ac.uk
+apts.ac.uk
apu.ac.ukapuc-scot.ac.ukaqmen.ac.uk
aquinas.ac.uk
arc.ac.uk archaeologydataservice.ac.ukarchangel.ac.ukarcher.ac.ukarchie-west.ac.uk
archive.ac.ukarchiveshub.ac.uk
archway.ac.ukarcom.ac.ukarctic.ac.ukarden.ac.ukardencampus.ac.ukardencollege.ac.ukardenu.ac.ukardenuni.ac.ukardenuniversity.ac.ukargyllcollege.ac.uk
ariadne.ac.ukaricd.ac.ukaries-dtp.ac.uk
ark.ac.ukark-genomics.ac.uk
+arma.ac.uk
arm.ac.ukarmagh.ac.ukarnold-carlton.ac.uk
+arrc.ac.uk
ars.ac.ukartdesignhull.ac.ukartifact.ac.ukartofmaking.ac.uk
+arts.ac.ukartsigns.ac.ukarts-inst-bournemouth.ac.ukartsmethodsnorthwest.ac.uk#artsresearchatnorthampton.ac.uk
aru.ac.ukarupoc.ac.ukascent.ac.ukascentis.ac.ukascorpus.ac.uk
+ascr.ac.ukascribed.ac.uk
asearch.ac.uk
+asen.ac.uk
+asfc.ac.uk
+asgp.ac.uk
ashford.ac.ukashridge.ac.ukashtoninstitute.ac.ukasiabrox.ac.uk
asiamap.ac.ukaskham.ac.ukaskham-bryan.ac.ukaskhambryan.ac.uk
ask-sam.ac.ukaspect.ac.ukaspectnetwork.ac.ukaspire.ac.ukaspiretrainingteam.ac.uk
+asra.ac.ukassap.ac.uk($associationforpoliticalthought.ac.ukastec.ac.ukasthma-allergy.ac.ukaston.ac.ukastrobiology.ac.ukastrogrid.ac.ukastronomy.ac.ukasvin.ac.uka-tap.ac.ukathens.ac.ukatlars.ac.ukatlas.ac.uk
atp.ac.ukatsip.ac.ukatthelimits.ac.uk
aua.ac.uk
aub.ac.uk
auc.ac.uk
+aucb.ac.ukaucyfrwngcymraeg.ac.uk
+aude.ac.ukaudelondon.ac.uk
aue.ac.uk
+auee.ac.ukaukcar.ac.ukaulic.ac.ukauphf.ac.uk
autosub.ac.ukavant.ac.ukavphd.ac.ukavprc.ac.ukawfdcp.ac.uk
+awlc.ac.ukaylesbury.ac.uk
ayrcoll.ac.ukayrshire.ac.uk
+b6fc.ac.uk
baa.ac.uk
+baap.ac.uk
+baas.ac.ukbabeltech.ac.ukbabraham.ac.ukbaby-me-nrt.ac.uk
+bach.ac.ukbackoncourse.ac.ukbackstage.ac.uk
+bacl.ac.ukbaclaw.ac.ukbacoll.ac.uk
+badc.ac.uk
+baec.ac.uk
+baes.ac.uk
+bafa.ac.ukbahcesehir.ac.ukbaice.ac.ukbailer.ac.uk
+bais.ac.uk
baj.ac.uk
balance.ac.ukballetwest.ac.uk
bam.ac.uk
+bams.ac.ukbanbury-bicester.ac.ukbanbury-college.ac.ukbandp.ac.ukbandpcoll.ac.ukbanff-buchan.ac.ukbangor.ac.uk"bangor-university-london.ac.ukbarking-coll.ac.ukbarkingcollege.ac.uk barkingdagenhamcollege.ac.ukbarnet.ac.ukbarnetsouthgate.ac.ukbarnfield.ac.ukbarnsley.ac.ukbarony.ac.ukbarricades.ac.ukbarrow6fc.ac.ukbarry.ac.uk
+bars.ac.ukbarton.ac.ukbarton-peveril.ac.uk
bas.ac.ukbasford-hall.ac.ukbasildon.ac.ukbasingstoke.ac.ukbasketry.ac.uk
+basp.ac.uk
+basr.ac.uk
+bath.ac.ukbathcollege.ac.uk#bathnortheastsomerset-acl.ac.uk
bathspa.ac.uk
+bavs.ac.uk
bbc.ac.uk
bbcslln.ac.uk
bbe.ac.uk
bbk.ac.ukbbs-cove.ac.ukbbsrc.ac.uk
bca.ac.uk
+bcam.ac.ukbcast.ac.uk
bcc.ac.ukbccolleges.ac.ukbcftcs.ac.uk
+bcno.ac.uk
+bcom.ac.ukbcomstudents.ac.uk
+bcot.ac.ukbctcs.ac.uk
bcu.ac.uk
+bcuc.ac.uk
bdc.ac.uk
+beaa.ac.ukbeaumontcollege.ac.ukbebirkbeck.ac.ukbecoming-a-teacher.ac.uk
+bede.ac.uk
bedford.ac.ukbedfordshire.ac.ukbedfordsixthform.ac.uk
bedsacl.ac.uk
+beds.ac.uk
+beep.ac.uk
+bees.ac.ukbehaviour4learning.ac.ukbehavioural-science.ac.uk
bei.ac.ukbeinghumanfestival.ac.ukbeinspiredatstaffs.ac.ukbeirc.ac.ukbelfastinstitute.ac.ukbelfastmet.ac.ukbelfastmetropolitan.ac.uk$ belfastmetropolitancollege.ac.ukbelfordcollege.ac.uk
+bell.ac.ukbellerbys.ac.ukbemix.ac.uk
+benc.ac.uk
bep.ac.uk
+bera.ac.ukberks-coll-ag.ac.ukberkscollag.ac.uk
+bern.ac.ukbernards.ac.uk
+besa.ac.uk
+besc.ac.ukbeside.ac.uk
+bess.ac.uk
+best.ac.uk
bestofu.ac.ukbettertogether.ac.ukbeverleycollege.ac.ukbexhillcollege.ac.ukbexley.ac.ukbexleycollege.ac.ukbeyondtext.ac.ukbfmat.ac.uk
+bftv.ac.uk
bgc.ac.uk
bgs.ac.uk
bgu.ac.uk
+bham.ac.ukbhamcity.ac.ukbhamcityuniversity.ac.uk
bhasvic.ac.ukbhpgms.ac.ukbhpms.ac.uk
+bhrc.ac.uk
+biaa.ac.uk
+biab.ac.ukbibliography.ac.uk
+bicc.ac.ukbicpa.ac.ukbicton.ac.uk
+bids.ac.uk
+biea.ac.uk
bigdata.ac.ukbigdata-cdt.ac.uk
+bigf.ac.uk bighealthactuarialdata.ac.uk
bigidea.ac.uk
+bihg.ac.uk
bil.ac.ukbilborough.ac.ukbileta.ac.uk
+bilk.ac.uk
bilston.ac.ukbimacademy.ac.uk
+bimm.ac.ukbimmstudents.ac.uk
biobank.ac.ukbiobankingsolutions.ac.ukbiobankuk.ac.uk
biochar.ac.ukbioethics.ac.ukbioethicsweb.ac.ukbiofilms.ac.ukbioinf.ac.uk
bioinfo.ac.ukbioinformatics.ac.ukbiome.ac.ukbioresearch.ac.ukbioss.ac.ukbioville.ac.uk
bioyork.ac.uk
+bips.ac.ukbirbeckstratford.ac.ukbirkbeck.ac.ukbirkbeckstratford.ac.ukbirmingham.ac.ukbirminghamcity.ac.uk"birminghamcityuniversity.ac.ukbirmingham-nottingham.ac.uk"birminghamschoolofacting.ac.uk
+bisa.ac.ukbishopaucklandcollege.ac.ukbishopb-college.ac.ukbishopburton.ac.ukbishopburtoncollege.ac.ukliscol.ac.uk
+bisi.ac.uk
+bite.ac.ukblackandasiangrad.ac.ukblackburn.ac.ukblack-country.ac.uk#blackcountryandmarchesiot.ac.ukblackpool-acl.ac.ukblackpool.ac.ukblackpoolsixth.ac.ukblake.ac.uk
blc.ac.uk
ble.ac.ukblend-ed.ac.uk
+blms.ac.ukbloomsbury.ac.ukbloomsburydtc.ac.ukbloomsburyinstitute.ac.ukbluegreencities.ac.ukbluestone.ac.uk
+blws.ac.uk
+bm14.ac.uk
+bmac.ac.uk
bmc.ac.uk
bme.ac.uk
+bmet.ac.ukbmetc.ac.uk
bms.ac.uk
+bmth.ac.ukbmth-poole-cad.ac.uk
+bmva.ac.uk
+bnac.ac.uk
bnu.ac.uk
boa.ac.ukbobble.ac.uk
+bodc.ac.ukbognor.ac.ukbognor-training.ac.uk
+bolt.ac.ukbolton.ac.ukboltoncc.ac.ukboltoncollege365.ac.ukbolton-college.ac.ukboltoncollege.ac.ukboltoncollegestem.ac.uk"bolton-community-college.ac.ukbolton-sfc.ac.ukboltonsix.ac.uk
bon.ac.uk
+bone.ac.uk
bookhad.ac.uk
bopcris.ac.ukbordersandborderlands.ac.ukborderscollege.ac.ukbosco.ac.ukbostaa.ac.ukbosta.ac.ukboston.ac.ukbostoncentre.ac.ukbourne.ac.ukbournemouth.ac.uk!bournemouthandpoole-cfe.ac.ukbournville.ac.uk
bpa.ac.uk
bpc.ac.ukbpcoll.ac.uk
+bpmf.ac.ukbppuniversity.ac.uk
bps.ac.ukbracknell.ac.uk
+brad.ac.ukbradcoll.ac.ukbradford.ac.ukbradfordcollege.ac.uk!bradforduni-recruitment.ac.ukbrain.ac.ukbrainsimagebank.ac.ukbraintree.ac.ukbrais.ac.ukbrams.ac.ukbrasshouse.ac.uk
brc.ac.ukbreakingofbritain.ac.ukbrent-acl.ac.ukbrentstart.ac.uk
bretton.ac.ukbricoltech.ac.uk
bridgce.ac.ukbridgecollege.ac.ukbridgend.ac.ukbridgendcollege.ac.ukbridgwater.ac.ukbrighton.ac.uk($brightonandsussexmedicalschool.ac.ukbrightoncity.ac.ukbrightoncitycollege.ac.ukbrightonlegacy.ac.ukbrightonmedicalschool.ac.ukbrightstudy.ac.uk
brilcom.ac.uk
+brin.ac.ukbrinsbury.ac.ukbrinsburycollege.ac.ukbrinscoll.ac.uk
+bris.ac.uk
brismes.ac.uk
bristol.ac.ukbristol-baptist.ac.uk)%bristolinstituteoflegalpractice.ac.ukbristollawschool.ac.uk#bristolroboticslaboratory.ac.ukbristoltheological.ac.ukbristoluwe.ac.ukbritac.ac.ukbritarch.ac.ukbritcollege.ac.ukbritishacademy.ac.uk"british-antarctic-survey.ac.ukbritishart.ac.ukbritishartstudies.ac.ukbritishelectionstudy.ac.uk#british-geological-survey.ac.ukbritish-history.ac.ukbritishlibrary.ac.uk%!britishludwigwittgensociety.ac.ukbritish-museum.ac.ukbritishmuseum.ac.uk$ britishwittgensteinsociety.ac.uk
brl.ac.uk
+brnc.ac.ukbroadstairscollege.ac.ukbrock.ac.uk
bromley.ac.ukbromleyadulteducation.ac.ukbromleyapps.ac.ukbronch.ac.ukbrookehouse.ac.uk
brookes.ac.ukbrooklands.ac.ukbrooks.ac.ukbrooksby.ac.ukbrooksbymelton.ac.ukbroomfield.ac.ukbroomsbarn.ac.ukbrox-coll.ac.ukbroxtowe.ac.uk
bruford.ac.ukbrunel.ac.ukbruneldigital.ac.uk bruneluniversitylondon.ac.uk
bsa.ac.uk
+bsaw.ac.ukbsbec.ac.uk
+bsdc.ac.uk
+bsfc.ac.uk
bsg.ac.uk
+bshm.ac.uk
+bsix.ac.ukbsixbrookehouse.ac.uk)%bsixbrookehousesixthformcollege.ac.ukbsixcollege.ac.uk
+bsls.ac.uk
+bsmb.ac.uk
+bsms.ac.ukbsmslegacy.ac.ukbsnti.ac.uk
bso.ac.uk
+bsom.ac.uk
bsr.ac.uk
+bsrg.ac.uk
+bssd.ac.uk
+bssh.ac.uk
bsu.ac.uk
+btas.ac.uk
btc.ac.uk
+bton.ac.ukbtrp-hyperpolarised.ac.uk
+buba.ac.uk
+bubl.ac.uk
+buck.ac.ukbuckingham.ac.ukbuckinghamshire.ac.ukbucks.ac.ukbuckscol.ac.ukbuckscollege.ac.ukbuckscollegegroup.ac.ukbucksnewuni.ac.ukbufdg.ac.ukbufvc.ac.uk
bui.ac.uk
+buic.ac.ukbuila.ac.ukbuiltenvsigns.ac.uk
burnley.ac.ukburton.ac.uk)%burtonandsouthderbyshirecollege.ac.ukburton-college.ac.uk'#burton-southderbyshirecollege.ac.uk
buryacl.ac.ukburycollege.ac.ukbusinessaccess.ac.uk#businesscove-blackcountry.ac.ukbusiness-intelligence.ac.ukbutex.ac.ukbuxtoncollege.ac.ukbwrhub.ac.uk
bws.ac.ukbyam-shaw.ac.ukbyzantine-ahrb-centre.ac.ukbyzantium.ac.uk
c4ccetl.ac.ukcaacentre.ac.ukcaadoc.ac.ukcaagcc.ac.ukcaban.ac.ukcabot.ac.ukcadarn.ac.ukcadarnskillscentre.ac.uk
cadbury.ac.ukcadburycollege.ac.ukcadcol.ac.uk
+cade.ac.ukcadise.ac.ukcadres.ac.ukcaepr.ac.ukcaerdydd.ac.ukcafmad.ac.ukcafre.ac.ukcalam.ac.ukcalat.ac.ukcalderdale-acl.ac.ukcalderdale.ac.ukcalderdaletraining.ac.ukcaledonian.ac.ukcalls.ac.ukcallywith.ac.uk
cam.ac.ukcamborne.ac.uk
cambria.ac.ukcambridge.ac.uk!cambridgeislamiccollege.ac.uk cambridgemuslimcollege.ac.ukcambridgeshireskills.ac.ukcambridge-university.ac.ukcambridgeuniversity.ac.ukcambslearning.ac.ukcamden-acl.ac.ukcamera.ac.ukcam-man-cic.ac.ukcam-pgmc.ac.ukcamphill.ac.ukcampwsbydeangcymru.ac.ukcamre.ac.ukcamri.ac.ukcamsfc.ac.uk
can.ac.ukcancerandsociety.ac.ukcandi.ac.ukcando.ac.ukcannington.ac.uk
cannock.ac.ukcanolfansgiliaucadarn.ac.uk%!canolfanyramgylcheddolcymru.ac.ukcantab.ac.uk
+cant.ac.ukcant-col.ac.ukcanterbury.ac.ukcanterburycollege.ac.ukcanterburytrust.ac.uk
+cape.ac.ukcapel.ac.ukcapitalccg.ac.ukcapitalcct.ac.ukcapitalcitycg.ac.uk"capitalisingoncreativity.ac.uk
capsule.ac.ukcarbo-biocrop.ac.ukcarbobiocrop.ac.uk
cardiff.ac.ukcardiffandvalecollege.ac.ukcardiff-institute.ac.ukcardiffmet.ac.uk'#cardiffmetropolitanuniversity.ac.ukcardinalnewman.ac.ukcardonald.ac.ukcareersinresearch.ac.ukcareerswales.ac.ukcarlisle.ac.ukcarmel.ac.ukcarmer.ac.ukcarnegie.ac.ukcarnegiecollege.ac.ukcarr-lse.ac.ukcarshalton.ac.ukcartoons.ac.ukcasaw.ac.ukcasim.ac.ukcasms.ac.ukcasnewydd.ac.uk
+cast.ac.ukcastle.ac.ukcastle-coll.ac.ukcastlecollege.ac.ukcastlereagh.ac.ukcataloguementalhealth.ac.ukcatalysis-cdt.ac.ukcathedralsgroup.ac.ukcauseway.ac.uk
+cava.ac.uk
+cavc.ac.uk
+cave.ac.ukcavendish.ac.uk
caw.ac.ukcaxton.ac.uk
+cayt.ac.ukcbcdc.ac.ukcbpar.ac.uk
+cbrl.ac.uk
cbs.ac.uk
+ccad.ac.uk
+ccap.ac.uk
ccb.ac.uk
ccc.ac.ukcccep.ac.uk
+cccr.ac.uk
+cccu.ac.uk
+ccdc.ac.ukccesd.ac.uk
+ccfe.ac.uk
cch.ac.ukcchsr.ac.uk
cci.ac.uk
ccl.ac.ukcclrc.ac.uk
ccm.ac.uk
+ccms.ac.uk
ccn.ac.uk
+ccol.ac.ukccp11.ac.ukccp13.ac.ukccp14.ac.uk
+ccp1.ac.uk
+ccp2.ac.uk
+ccp3.ac.uk
+ccp4.ac.uk
+ccp5.ac.uk
+ccp6.ac.uk
+ccp9.ac.uk
ccp.ac.uk
+ccpb.ac.ukccpbiosim.ac.ukccpem.ac.ukccpforge.ac.uk
+ccpi.ac.ukccplymouth.ac.uk
ccp-mag.ac.uk
+ccpn.ac.ukccpnc.ac.uk
+ccpp.ac.ukccppetmr.ac.uk
+ccpq.ac.uk
ccp-wsi.ac.uk
+ccri.ac.uk
ccs.ac.ukccscfe-cdt.ac.uk
+ccse.ac.uk
+ccsr.ac.uk
+ccsw.ac.uk
+ccta.ac.uk
+ccwp.ac.uk
cdd.ac.uk
cdn.ac.uk
+cdrc.ac.ukcdt-art-ai.ac.ukcdtceltic.ac.uk
cdt-cmp.ac.ukcdt-piads.ac.ukcecan.ac.ukcecos.ac.uk
+ceda.ac.ukcedar.ac.uk
cee.ac.ukceeds.ac.uk
ceelbas.ac.ukceelbas-cdt.ac.ukceesi.ac.ukcefims.ac.uk
ceg.ac.uk
ceh.ac.ukceh-nerc.ac.ukcehuk.ac.ukceh-wallingford.ac.ukcelluloidfilmfutures.ac.uk
+cem1.ac.uk
cem.ac.uk
+ceme.ac.ukcemmap.ac.uk
+cemp.ac.ukcensus.ac.ukcensus-registration.ac.ukcenta.ac.ukcentralbeds.ac.ukcentralcollege.ac.ukcentral-glasgow.ac.ukcentral-lancashire.ac.ukcentralnottingham.ac.ukcentralstmichaels.ac.ukcentralsussex.ac.uk!centreformacroeconomics.ac.uk$ centreforsustainablecities.ac.uk centreforyouthministry.ac.uk&"centreonconstitutionalchange.ac.uk
+ceoi.ac.ukcercia.ac.ukceredigion.ac.uk
+ceri.ac.ukcerlim.ac.ukceruk.ac.uk
+cetc.ac.ukcetis.ac.ukcetl4healthne.ac.ukcetl4musicne.ac.uk
+ceug.ac.ukcf.ac.uk
+cfas.ac.uk
cfldcol.ac.uk
cfs.ac.uk
cgh.ac.ukcglas.ac.ukchace.ac.ukchanging-arctic-ocean.ac.ukcharlemagne-icon.ac.ukcharlemagneseurope.ac.ukcharleslyellcentre.ac.ukchart.ac.uk$ charteredcollegeofteaching.ac.ukchase.ac.ukchasestudy.ac.uk
+chcc.ac.uk
che.ac.ukchead.ac.ukcheadlecollege.ac.ukchea-nmidlands.ac.ukcheep.ac.ukcheia.ac.ukcheib.ac.ukchelmsford.ac.ukchelmsford-college.ac.ukchelt.ac.ukcheltenham-he.ac.ukchemicalbiology.ac.ukchemreact.ac.ukchenel.ac.ukcheshire.ac.ukcheshirecolleges.ac.ukcheshirehe.ac.ukchest.ac.uk
chester.ac.ukchesterfield.ac.uk"chesterfieldcollegegroup.ac.uk
chi.ac.ukchialumni.ac.ukchichester.ac.uk chichestercollegegroup.ac.ukchicloud.ac.ukchigroup.ac.ukchilbolton.ac.ukchildrenofthe90s.ac.uk
chi-med.ac.uk"chinaculturalvisitinghub.ac.ukchinese-empires.ac.ukchipcoll.ac.ukchippcoll.ac.ukchipscohort.ac.ukchiuni.ac.ukchlamydia.ac.uk
+chlg.ac.uk
+chms.ac.ukchopinonline.ac.ukchristredeemer.ac.ukchrysaliscourses.ac.uk
chs.ac.ukchugd.ac.ukchuls.ac.ukchurchill.ac.uk
cia.ac.uk
+cias.ac.uk
cib.ac.uk
+cicl.ac.uk
+cied.ac.ukciemap.ac.ukcignet.ac.uk
+cile.ac.ukcilexlawschool.ac.uk
cimcomp.ac.ukcim-laser.ac.ukciota.ac.ukcirencester.ac.ukcirius.ac.ukcirre.ac.ukcirrus.ac.ukcisban.ac.ukcitscapes.ac.uk
+city.ac.ukcity-and-guilds.ac.ukcityandguilds.ac.uk cityandguildsartschool.ac.ukcitybathcoll.ac.uk
citycol.ac.ukcitycollege.ac.ukcitycollegebrighton.ac.uk!citycollegepeterborough.ac.ukcitycollegeplymouth.ac.ukcitycollegesoton.ac.uk
citylit.ac.ukcityofbristol.ac.ukcityofglacol.ac.ukcityofglasgowcollege.ac.ukcityoflondonbschool.ac.ukcityofoxford.ac.ukcityplym.ac.ukcity-poly.ac.uk
citysun.ac.uk"cityuniversitybirmingham.ac.uk
ciu.ac.ukcivilwarpetitions.ac.ukckeene.ac.ukclackmannan-college.ac.ukclacks.ac.uk
clacton.ac.uk
+clad.ac.ukclarendon.ac.ukclarin.ac.ukclassics.ac.ukclc-london.ac.ukclean-cooling.ac.ukclearflo.ac.ukcleveland.ac.uk
clh.ac.ukclickandgovideo.ac.ukcliffcollege.ac.ukclimatechangewales.ac.ukclimate-lab-book.ac.ukclimb.ac.ukclinicalnotes.ac.ukclinicalskillscentre.ac.uk
cln.ac.ukcloser.ac.ukcloud.ac.ukcloudworks.ac.uk
clp.ac.uk
+clrc.ac.ukclydebank.ac.uk
+cmac.ac.ukcmcnet.ac.ukcmcsm.ac.ukcmpcp.ac.uk
cms.ac.uk
cmu.ac.uk
+cnmd.ac.uk
+cnwl.ac.ukcoatbridge.ac.ukcobra.ac.uk
coccfea.ac.ukcochrane.ac.ukcochrane-airways.ac.ukcockcroft.ac.ukcocorees.ac.uk
+code.ac.ukcod-health.ac.ukcodima.ac.ukcods-nursing.ac.uk
+coem.ac.uk
cof.ac.uk
+cogc.ac.uk
col.ac.uk
+colc.ac.ukcolcc.ac.ukcolchester.ac.ukcolch-inst.ac.ukcolchsfc.ac.ukcolegaucymru.ac.ukcolegcymraeg.ac.ukcolegdewisant.ac.ukcolegelidyr.ac.ukcoleggwent.ac.ukcoleggwyrabertawe.ac.ukcolegmorgannwg.ac.ukcolegpenybont.ac.ukcoleg-powys.ac.ukcolegsirbenfro.ac.ukcolegsirgar.ac.ukcollaborateni.ac.ukcollegecareearlyed.ac.uk#collegedevelopmentnetwork.ac.ukcollege-falmouth.ac.ukcollegeofosteopaths.ac.ukcollegeofteachers.ac.ukcollegeofteaching.ac.ukcollegesni.ac.ukcollegesscotland.ac.ukcollegeswales.ac.ukcollegewebsites.ac.ukcollemergencymed.ac.ukcollyers.ac.ukcolpet.ac.ukcol-westanglia.ac.ukcombinedhonours.ac.ukcomet-study.ac.ukcomics.ac.ukcomm-coll-hackney.ac.uk
commnet.ac.ukcompetitionpolicy.ac.uk
complex.ac.ukcomputing.ac.ukconcordat.ac.ukconcordats.ac.ukcondenastcollege.ac.ukcondovercollege.ac.ukconductus.ac.ukconel.ac.ukconfetti.ac.uk
conform.ac.ukconfuciusinstitute.ac.uk
connect.ac.ukconnect-ed.ac.ukconnectedeverything.ac.uk
connell.ac.ukconservatoiresuk.ac.ukconsilience.ac.ukconsultants.ac.ukcontemp-hist-arch.ac.ukco-op.ac.ukco-opcollege.ac.ukco-operative.ac.uk!co-operative-university.ac.uk co-operativeuniversity.ac.ukcopac.ac.ukcopim.ac.ukcopior.ac.uk
+cops.ac.uk
copstat.ac.ukcordwainers.ac.uk
+core.ac.ukcornell-brown-penn.ac.ukcornwall-acl.ac.ukcornwall.ac.ukcornwall-vithform.ac.ukcorpasnagaidhlig.ac.uk
+cosc.ac.ukcoseelis.ac.ukcospop.ac.uk
cot.ac.uk
+cotr.ac.ukcoulsdon.ac.uk$ councilofhealthcarescience.ac.ukcounsellingresearch.ac.ukcountytraining.ac.uk
+coup.ac.ukcourtauld.ac.uk
cov.ac.ukcovcollege.ac.ukcove4careinkent.ac.ukcoventry.ac.ukcoventrycollege.ac.ukcoventryuniversity.ac.ukcovuni.ac.ukcovuniapps.ac.uk
+cowc.ac.ukcowork.ac.uk
cpc.ac.ukcpd25.ac.uk
cpd4phd.ac.ukcpdnoticeboard.ac.uk
+cpel.ac.uk
+cphc.ac.uk
+cpib.ac.uk
+cppe.ac.uk
+cppr.ac.uk
+cptt.ac.uk
+cral.ac.uk
+cran.ac.ukcranfield.ac.ukcrash.ac.ukcraven-college.ac.uk
crawley.ac.ukcrawley-college.ac.ukcream.ac.ukcreate.ac.ukcreativeindustries.ac.ukcreativity-cetl.ac.ukcreditlink-east.ac.ukcreds.ac.ukcresc.ac.ukcrescentlearning.ac.ukcrest.ac.ukcrestresearch.ac.uk
+crew.ac.uk
+crfr.ac.uk
crh.ac.uk
cri.ac.uk
+cric.ac.ukcricbristol.ac.ukcrichton.ac.ukcrick.ac.ukcricklade.ac.uk
critica.ac.ukcritical.ac.ukcriticalfriend.ac.ukcriticaltheology.ac.uk
crocels.ac.uk
cronton.ac.ukcrontonsixthform.ac.uk!crontonsixthformcollege.ac.ukcropdiversity.ac.ukcropyields.ac.uk
+cros.ac.ukcroydon6f.ac.ukcroydonacl.ac.uk
croydon.ac.ukcroydonhe.ac.ukcroydonsec.ac.ukcrsbi.ac.uk
+crsp.ac.ukcrucible-cetl.ac.uk
cruisse.ac.uk
csc.ac.ukc-scaipe.ac.uk
+cscd.ac.uk
+csct.ac.ukcscuk.ac.uk
+csd3.ac.uk
+csec.ac.uk
+cser.ac.ukcserge.ac.uk
csg.ac.uk
+cshl.ac.uk
csm.ac.ukcsmen.ac.ukcsn-cetl.ac.uk
+csrf.ac.uk
+csrs.ac.uk
+csrw.ac.uk
+cssd.ac.uk
csu.ac.ukcta-observatory.ac.uk
ctc.ac.ukctcrm.ac.uk
ctg.ac.uk
ctk.ac.ukctkaquinas.ac.ukctkemmanuel.ac.ukctksfc.ac.ukctkstmarys.ac.ukctr-math-phys.ac.uk
cts.ac.ukct-toolkit.ac.ukcttoolkit.ac.uk
+cubo.ac.uk
cuc.ac.ukcudah.ac.uk
cudassh.ac.ukcudos.ac.uk
cue.ac.ukcuhop.ac.ukcukas.ac.ukculham.ac.ukcullenproject.ac.uk
cultiva.ac.uk!cultureofthecountryside.ac.ukcumberlandlodge.ac.ukcumbernauld.ac.uk
cumbria.ac.ukcumbriacad.ac.ukcumbriahigherlearning.ac.uk
+cunw.ac.uk
curator.ac.ukcurdev-fe-ni.ac.ukcurioustravellers.ac.uk
+curl.ac.uk
+cusp.ac.ukcusplondon.ac.uk
+cutg.ac.uk
cuv.ac.uk
+cuwm.ac.uk
+cvcp.ac.uk
+cvma.ac.uk
cvr.ac.uk
cvs.ac.uk
cvu.ac.uk
cwa.ac.uk
cwc.ac.ukcwcfe.ac.uk
+cwrc.ac.uk
cws.ac.ukcyber-college.ac.ukcybersecurity-cdt.ac.ukcybersecuritycdt.ac.ukcyclops-network.ac.uk
cym.ac.ukcymdeithasddysgedig.ac.uk"cymdeithasddysgedigcymru.ac.uk
cymoedd.ac.ukcymru.ac.uk&"cynghrairstrategolaberbangor.ac.ukdafni.ac.ukdance-archives.ac.ukdaresbury.ac.ukdarlington.ac.uk%!darlingtonlearningandskills.ac.ukdartington.ac.ukdarts.ac.ukdarwin.ac.ukdarwinproject.ac.uk
+dasg.ac.ukdash-1.ac.ukdassh.ac.uk
+data.ac.ukdata-archive.ac.ukdatafuturesalphapilot.ac.ukdatagrid.ac.ukdata-intensive-cdt.ac.ukdata-service.ac.ukdatashield.ac.uk
datasig.ac.uk
davcoll.ac.uk%!daventrylearningpartnership.ac.ukdavidlewis.ac.uk
dca.ac.uk
dcc.ac.uk
dcd.ac.uk
+dcdp.ac.uk
dcg.ac.uk
dct.ac.uk
ddi.ac.ukdeafandcreative.ac.ukdeafheritagenetwork.ac.ukdeansofscience.ac.ukdearne-coll.ac.uk
+deas.ac.uk
+debs.ac.uk
dec.ac.uk
decymru.ac.uk
+deed.ac.uk
deeping.ac.uk
deeside.ac.ukdefac.ac.ukdefenceacademy.ac.ukdemand.ac.ukdemarco-archive.ac.ukdementianet.ac.uk#dementiaresearchinstitute.ac.ukde-montfort.ac.ukdemos.ac.uk
den.ac.ukdentalschoolscouncil.ac.ukdentpostgradwales.ac.ukderby.ac.ukderbyals.ac.ukderby-college.ac.ukderbycollege.ac.ukderbyonline.ac.ukderbyshire.ac.ukderweb.ac.ukderwen.ac.ukderwencollege.ac.ukderwentside.ac.ukdevelopebp.ac.ukdevolution.ac.ukdewcol.ac.ukdewsbury.ac.uk
+dghe.ac.uk
dhi.ac.ukdiabetes-healthnet.ac.ukdiamm.ac.uk
diamond.ac.ukdiasporas.ac.ukdickwhiteacademy.ac.ukdidet.ac.ukdietandhealth.ac.uk
digimap.ac.ukdigitalcreativity.ac.ukdigitallifespan.ac.ukdigitalscholarship.ac.ukdigitalsocialresearch.ac.uk digitaltransformations.ac.ukdigitisingscotland.ac.uk
digitop.ac.ukdigitrans.ac.ukdigitwin.ac.ukdilstoncollege.ac.ukdippam.ac.ukdirac.ac.ukdisability.ac.ukdisabilitytoolkits.ac.ukdiscover.ac.ukdiscovereconomics.ac.ukdiscovery.ac.uk!discoveryinvestigations.ac.uk
disinhe.ac.ukdistillate.ac.ukdistinct.ac.ukdiversityuk.ac.uk
+dl4d.ac.ukdl.ac.uk
+dlhe.ac.uk
dls.ac.uk
dml.ac.uk
dmu.ac.uk
+dmuk.ac.uk
dna.ac.ukdna-network.ac.ukdncolleges.ac.ukdocusend.ac.ukdogslife.ac.ukdoitpoms.ac.ukdomesticabuserisk.ac.uk
don.ac.ukdoncaster.ac.ukdorset-acl.ac.ukdorset-al.ac.ukdotrural.ac.ukdovercollege.ac.ukdovertechnicalcollege.ac.uk
+dpoc.ac.uk
dpscitt.ac.ukdragonip.ac.ukdrakemarineinstitute.ac.ukdrawnevidence.ac.ukdream-cdt.ac.ukdreeam.ac.uk
drg.ac.uk
dri.ac.uk
drindod.ac.uk
+drns.ac.ukdscis.ac.uk
+dses.ac.uk
+dsfc.ac.uk
dsl.ac.uk
dst-dtc.ac.uk
dsw.ac.ukdtc-online.ac.ukdt-toolkit.ac.ukducere.ac.ukduchy.ac.ukdudley.ac.ukdudleycol.ac.ukdudleylearners.ac.ukdudleylearning.ac.ukdumgal.ac.uk
dun.ac.uk
+dund.ac.ukdundee.ac.ukdundeeandangus.ac.ukdundeeandanguscollege.ac.ukdundeecoll.ac.ukdundeecollege.ac.ukdundee-tech.ac.uk
+dune.ac.ukdunstable.ac.uk!dunstaffnage-marine-lab.ac.uk
dur.ac.ukdurham.ac.ukdurhampriory.ac.ukdutch.ac.uk
dwl.ac.ukdynamicdialects.ac.uk
+e3an.ac.ukeaifhe.ac.ukealingcoll.ac.ukeandc-sirgar.ac.uk
earlham.ac.ukearlhaminstitute.ac.ukearlyenglishlaws.ac.uk%!earlymoderndressandtextiles.ac.ukearlyphonography.ac.ukearthsciencescotland.ac.uk
+ease.ac.ukeaseit-eng.ac.ukeast15.ac.ukeast-anglia.ac.ukeastantrim-institute.ac.ukeastberks.ac.ukeastchem.ac.ukeastcoast.ac.ukeastdevon.ac.ukeastdurham.ac.ukeastendcbc.ac.ukeasternarc.ac.ukeastkent.ac.ukeastkentcollege.ac.ukeastleigh.ac.ukeast-london.ac.ukeastmallingresearch.ac.ukeastmidlandscetls.ac.ukeastnorfolk.ac.ukeaston.ac.ukeaston-college.ac.ukeastonotley.ac.ukeastridingadultlearn.ac.ukeastridingcollege.ac.ukeastscotbiodtp.ac.ukeastsurrey.ac.ukeastsurreycollege.ac.ukeast-yorks-coll.ac.ukeatthatfrog.ac.uk
+ebam.ac.uk
ebi.ac.ukebnet.ac.ukebrahimcollege.ac.uk
+ebrc.ac.uk
ebs.ac.uk
+ebsl.ac.ukebslondon.ac.uke-c-a.ac.uk
eca.ac.ukecampus-leeds.ac.uk
ecc.ac.uk
+ecci.ac.ukecclescollege.ac.uk
+ecdc.ac.ukeceta.ac.uk
eclipse.ac.uk
+eclw.ac.uk
ecn.ac.ukeconomicfutures.ac.ukeconomics.ac.ukeconomicsnetwork.ac.uk
+ecos.ac.ukecosystemservices.ac.uk
+ecsa.ac.uk
ecu.ac.uk
ecw.ac.uk
ed6.ac.uked.ac.uk
+edam.ac.uk
edc.ac.uk
ed-coll.ac.ukedcoll.ac.ukedgehill.ac.ukedge-hill-college.ac.ukedgehilluniversity.ac.ukedgehotelschool.ac.ukedhcc.ac.ukedifhe.ac.ukedina.ac.ukedinburgh.ac.ukedinburghcollege.ac.ukedinburghstelford.ac.uk"edinburghstelfordcollege.ac.ukedinburghtc.ac.ukedlab.ac.uk
edshare.ac.ukedtech.ac.uk educationlondonconnect.ac.uk educationpartnershipne.ac.uk'#educationpartnershipnortheast.ac.uk
eduroam.ac.uk
eduserv.ac.ukedward-greene.ac.ukedwardllwyd.ac.uk
+eecm.ac.uk
eep.ac.uk
+eera.ac.uk
ees.ac.uk
+eevl.ac.ukeevlextra.ac.ukeevlxtra.ac.uk
efc.ac.uk
efetedc.ac.ukefficiencyexchange.ac.uk
efs.ac.ukefutures.ac.ukegyptrevolution2011.ac.ukehche.ac.uke-htpx.ac.uk
ehu.ac.ukeicdt.ac.uk
+eidc.ac.ukeinfrastructureforum.ac.ukeinfrastructuresouth.ac.uk
+eira.ac.uk
+eius.ac.ukekcgroup.ac.ukeklearning.ac.ukelanguages.ac.ukelatt.ac.uk
elc.ac.ukelder-cove.ac.ukelearning.ac.ukelearningnortheast.ac.uke-learningnorthwest.ac.uke-learningresearch.ac.ukelearningresearch.ac.ukelectricalmachineshub.ac.uk
+elib.ac.ukelihe.ac.ukelite.ac.uke-liv.ac.ukelixir.ac.uk!elizabethmontagunetwork.ac.ukelliotthudsoncollege.ac.uk
elmwood.ac.uk
+elne.ac.uk
elp.ac.ukelrah.ac.uk
+elrc.ac.uk
+elsa.ac.ukelsa-project.ac.uk
elt.ac.uk
+elum.ac.ukemahsn.ac.ukemail-bimm.ac.uk
+emas.ac.ukembl-ebi.ac.uk
+embs.ac.uk
emc.ac.uk
eme.ac.uk
+emec.ac.uk
emedlab.ac.uke-merlin.ac.ukemgrad.ac.ukemidsvikings.ac.uk
+emol.ac.ukemo-pain.ac.ukemphasis.ac.uk
emr.ac.uk
ems.ac.ukem-toolkit.ac.ukemttp.ac.uk
+emua.ac.uk
emwprep.ac.ukenbit.ac.uken-compass.ac.ukenergy2050.ac.ukenergybiographies.ac.ukenergyforchange.ac.ukenergystorage-cdt.ac.ukengageinresearch.ac.ukengageni.ac.uk
engcetl.ac.ukengineering.ac.uk!engineeringnonlinearity.ac.ukengineeringsigns.ac.ukenglishassociation.ac.ukengsc.ac.ukenhancementthemes.ac.ukenmat.ac.ukenorf.ac.uk
+enos.ac.uk
+ensa.ac.ukensemble.ac.ukensemblepurchasing.ac.ukensfc.ac.ukenterprise.ac.ukenterprisebydesign.ac.ukenterpriseresearch.ac.uk
enveast.ac.ukenvironment-health.ac.uk
epc.ac.uk
+epic.ac.ukepics.ac.uk
epicure.ac.uk
+epne.ac.ukeportfolios.ac.uk
+eppi.ac.ukepping-forest.ac.ukepress.ac.uk
eps.ac.uk
epsilon.ac.ukepsrc.ac.ukepsrc-centre-lime.ac.uk+'epsrc-cim-macromoleculartherapies.ac.ukequal.ac.ukequalityhigher.ac.uk
equator.ac.ukequistudy.ac.uk
era.ac.uk
erasmus.ac.uk
erbecdt.ac.uk
erc.ac.uk
+eres.ac.ukeresearchsouth.ac.uk
eri.ac.uke-rihs.ac.ukerini.ac.uk
+ernw.ac.uk
erp.ac.uk
+erpe.ac.ukesala.ac.uk
esc.ac.ukescalate.ac.ukescapestudios.ac.uk
+escg.ac.uke-science.ac.ukescience.ac.ukescience-etf.ac.ukescoe.ac.ukescp-eap.ac.uke-scrf.ac.uk
+esdi.ac.uk
+esds.ac.uk
ese.ac.ukeselondon.ac.uk
esg.ac.ukeshcru.ac.ukesher.ac.uk
esi.ac.uk
+esim.ac.ukesiss.ac.uk
+esnw.ac.uk
eso.ac.uk
+espa.ac.ukespa-headlines.ac.ukesp-scotland.ac.uk
+esrc.ac.ukesrcfestival.ac.ukesrcmanchesterfest.ac.ukesrcsocietytoday.ac.ukessexacl.ac.ukessex.ac.uke-studio.ac.uk
etc.ac.uketcfhe.ac.uketextbooks.ac.ukethicsguidebook.ac.ukethnicity.ac.ukethos.ac.uketp-scotland.ac.uk
ets.ac.uk
+eued.ac.ukeurobrox.ac.uk
euromod.ac.ukeuropeunit.ac.uk
eva.ac.uk everymantheatrearchive.ac.uk
evesham.ac.ukevolve.ac.uk
+ewlc.ac.uk
+ewrs.ac.uk
+ewva.ac.ukex.ac.uk
exam-ta.ac.ukexcellence.ac.ukexcellencelondon.ac.ukexchange.ac.ukexe-coll.ac.ukexemplashe.ac.ukexeter.ac.ukexetercollege.ac.ukexeterdeafacademy.ac.uk!exetermathematicsschool.ac.ukexetermrcsdf.ac.ukexeterms.ac.ukexondomesday.ac.ukexperienceworks.ac.uk
experts.ac.uk
+faam.ac.ukfablabplymouth.ac.ukface3d.ac.uk
+face.ac.ukfacilities.ac.uk
faclair.ac.ukfacoccmed.ac.ukfailte.ac.ukfairbairn.ac.ukfairfieldfarmcollege.ac.uk"fairfieldopportunityfarm.ac.ukfalkirkcollege.ac.ukfalmouth.ac.ukfalmouthexeterplus.ac.ukfalmouthmarineschool.ac.ukfamilylifestudy.ac.ukfamous.ac.uk
faraday.ac.uk
fareham.ac.ukfarmington.ac.ukfarmplus.ac.ukfarnborough.ac.ukfarnboroughcollege.ac.ukfarnboroughsfc2.ac.ukfarnboroughsfc.ac.uk
farn-ct.ac.uk
farnham.ac.uk"fashioningtheearlymodern.ac.ukfashionretailacademy.ac.ukfashionretail.ac.uk"fashiontechnologyacademy.ac.uk
fastech.ac.ukfault-analysis-group.ac.uk
fba.ac.ukf-boro-sfc.ac.uk
fca.ac.uk
+fcot.ac.uk
+fcrt.ac.uk
fdf.ac.uk
+fdtl.ac.ukfederalschool.ac.ukfederalsurrey.ac.uk
+fefc.ac.ukfehesorp.ac.uk
+felp.ac.ukfeminizingpolitics.ac.ukfermanaghcoll.ac.ukfetalmedicine.ac.uk
ffc.ac.uk
+fflm.ac.uk
+fgls.ac.ukfibre-diffraction.ac.uk
+ficm.ac.uk
+fife.ac.ukfifeglen.ac.ukfilmandsound.ac.ukfilt-coll.ac.ukfilton.ac.ukfilton-college.ac.ukfind-cdt.ac.ukfinder.ac.uk
fineart.ac.uk
finesse.ac.uk
+fipc.ac.ukfircroft.ac.ukfireflyresearch.ac.ukfireservicecollege.ac.ukfirstchancesfife.ac.ukfiscalstudies.ac.uk
+fkse.ac.ukflame.ac.ukflavournetwork.ac.ukfluids.ac.uk
fmc.ac.uk
+fmdv.ac.uk
fmg.ac.uk
+fmlm.ac.ukfocus.ac.ukfolkestonecollege.ac.uk
fom.ac.ukfoodchain.ac.ukfoodsecurity.ac.ukforestsixth.ac.ukforestyouth.ac.ukformission.ac.uk
forster.ac.ukforte.ac.ukforthvalley.ac.ukfortitude-group.ac.uk
fortune.ac.ukfortunecentre.ac.ukfoundationyear.ac.ukfoxesacademy.ac.uk
fpm.ac.uk
fra.ac.ukfrancistowne.ac.ukfranklin.ac.ukfreeman-centre.ac.ukfreescotcoll.ac.ukfreezeframe.ac.ukfrenchhistorysociety.ac.ukfrontier.ac.ukfrontiersofoncology.ac.uk
fsb.ac.uk
+fsem.ac.ukfslra.ac.uk
fst.ac.ukfuellearning.ac.uk
fulcrum.ac.uk
furness.ac.uk
+fuse.ac.ukfusion.ac.ukfusion-cdt.ac.ukfuturearmedforces.ac.ukfuturecat.ac.ukfutureme.ac.ukfuture-media.ac.ukfuturemedia.ac.uk"future-reserves-research.ac.ukfuturetrack.ac.ukfuturevehicles.ac.ukfutureworks.ac.uk"fv-distribution-database.ac.ukfxplus.ac.ukgaelicstoryatgu.ac.uk
+gaia.ac.ukgainsborough.ac.uk
+galt.ac.ukgameplan.ac.ukgashe.ac.uk
+gate.ac.ukgateshead.ac.ukgatesheadcollege.ac.uk!gatesheadlearningskills.ac.uk
gateway.ac.uk
+gbmc.ac.ukgbmolluscatypes.ac.ukgbs3trial.ac.uk
gca.ac.ukgcadt.ac.uk
+gcal.ac.uk
+gcbp.ac.uk
gcc.ac.ukgceducationandskills.ac.uk
+gcft.ac.ukgcft-gla.ac.uk
gcg.ac.uk
gci.ac.uk
+gclg.ac.uk
+gcns.ac.uk
+gcrb.ac.uk
gcs.ac.uk
+gcsp.ac.uk
gcu.ac.ukgculondon.ac.uk
gda.ac.ukgeasontraining.ac.ukgecko.ac.ukgeiriadur.ac.uk
gem.ac.uk
+gen2.ac.ukgenerationpup.ac.uk
genesis.ac.uk
genesys.ac.ukgenet.ac.ukgenomeanalysiscentre.ac.ukgenomicsnetwork.ac.ukgeohazard.ac.ukgeorge-monoux.ac.ukgeoxwalk.ac.uk
+gerc.ac.ukgesource.ac.ukgetamoveon.ac.uk
+ghil.ac.ukgift-surg.ac.ukgimsig.ac.uk
gla.ac.ukglaadh.ac.ukgladstudy.ac.uk
+glam.ac.ukglammies.ac.ukglamorgan.ac.ukglan-hafren.ac.uk
glasgow.ac.ukglasgow-caledonian.ac.ukglasgowclyde.ac.ukglasgowcolleges.ac.ukglasgowkelvin.ac.ukglasgowmedhums.ac.ukglasgowmet.ac.ukglasgow-nautical.ac.ukglasgowschoolofart.ac.ukglasgowsciencecentre.ac.uk$ glasgowsequencingsolutions.ac.ukglen-coll.ac.ukglenfife.ac.ukglenrothes-college.ac.uk
+glhl.ac.uk
+gllm.ac.ukglobalbanking.ac.uk&"globalbusinessofforcedlabour.ac.ukglobalshakespeare.ac.ukglobolakes.ac.uk
gloknos.ac.uk
+glos.ac.uk
gloscat.ac.uk
gloscol.ac.ukgloscolgov.ac.ukgloscollege.ac.ukglosnexus.ac.ukgloucestershire.ac.uk gloucestershirecollege.ac.uk!gloucestershirecolleges.ac.uk"gloucestershirelaunchpad.ac.ukgloucs.ac.ukglovitas.ac.uk
+glow.ac.ukglsms.ac.uk
+gltc.ac.uk
glyndwr.ac.uk&"glyndwrlondonholdingslimited.ac.uk3/glyndwrlondonschoolofmanagementandscience.ac.uk
gmc.ac.uk
+gmcg.ac.ukgmcyberfoundry.ac.ukgmhigher.ac.ukgmims.ac.uk
+gmms.ac.uk
+gmsa.ac.ukgnatwork.ac.ukgo4uni.ac.ukgoals.ac.ukgodalming.ac.ukgoetec.ac.ukgofit.ac.ukgogeo.ac.ukgohigherwestyorks.ac.uk
+gold.ac.ukgoldproject.ac.ukgoldsmiths.ac.ukgoodenough.ac.ukgoole-college.ac.ukgorseinon.ac.ukgorseinon-bizcentre.ac.uk
+gosc.ac.uk
gosport.ac.uk#gosportmarineskillscentre.ac.uk
gowales.ac.ukgower.ac.ukgowercollege.ac.ukgowercollegeswansea.ac.ukgpkss.ac.ukgpucomputing.ac.ukgrace.ac.ukgrad2teach.ac.ukgradcareers-scotland.ac.ukgradschools.ac.uk graduate-careers-wales.ac.ukgraduatecareers-wales.ac.ukgraduateconnection.ac.ukgraduate-jobs.ac.uk graduate-jobs-in-wales.ac.ukgraduateoutcomes.ac.ukgraduateswales.ac.ukgraduatewales.ac.ukgranduniondtp.ac.ukgrantham.ac.ukgrantleyhall.ac.ukgraphenecentre.ac.uk
+gray.ac.uk
graylab.ac.uk
+grcb.ac.uk
gre.ac.ukgreatapedictionary.ac.uk,(greatermanchesterbiobankingnetwork.ac.uk#greatermanchestercolleges.ac.uk51greatermanchesterinternationalmedicalschool.ac.uk($greatermanchestermedicalschool.ac.ukgreatwesternresearch.ac.ukgreenbankcollege.ac.ukgreenhead.ac.ukgreenhill.ac.ukgreenwich.ac.ukgreenwich-college.ac.ukgreenwichdev.ac.ukgregynog.ac.uk
gresham.ac.ukgresham-college.ac.ukgreshamcollege.ac.uk
+grid.ac.ukgridpp.ac.ukgrids.ac.ukgrid-support.ac.uk
grimsby.ac.ukgrimsbytec.ac.ukgrows.ac.ukgrpeng.ac.uk
gsa.ac.uk
+gsmd.ac.ukgsmlondon.ac.uk
+gssw.ac.uk
gtc.ac.uk
+gttr.ac.ukgtyarmouthcoll.ac.ukguildford.ac.ukguildhallschool.ac.uk
guildhe.ac.uk
gw4.ac.ukgw4biomed.ac.uk
gw4-cat.ac.ukgwent.ac.ukgw-partnership.ac.uk
gwr.ac.uk
gyc.ac.uk
+hace.ac.uk
hackney.ac.ukhadlow.ac.ukhadlowgroup.ac.uk
hae-acl.ac.ukhairdressing.ac.uk
halcyon.ac.ukhalesowen.ac.ukhalton-acl.ac.ukhaltoncollege.ac.ukhamec.ac.ukhampsteadscience.ac.ukhandsworth.ac.ukhannah.ac.ukharingey6.ac.ukharlaxton.ac.uk
harlech.ac.ukharlow-college.ac.ukharper.ac.ukharper-adams.ac.ukharperadams.ac.ukharperkeelevets.ac.ukharperkeelevetschool.ac.ukharrogate.ac.ukharrogate-college.ac.ukharrow.ac.ukhartlepoolacademy.ac.ukhartlepoolacl.ac.ukhartlepoolfe.ac.ukhartlepoolsixth.ac.ukhartpury.ac.ukhartpurycollege.ac.ukhartpuryuni.ac.ukhartpuryuniversity.ac.uk"hartpuryuniversitycentre.ac.uk
hartree.ac.ukhastings.ac.ukhastingsonline.ac.uk
hau.ac.ukhavant.ac.ukhavantandsouthdowns.ac.ukhavantsouthdowns.ac.ukhavering.ac.ukhavering-college.ac.ukhavering-sfc.ac.ukhayle.ac.ukhaywardsheath.ac.uk
hbs.ac.uk
+hbvc.ac.uk
hca.ac.ukhcctraining.ac.ukhcebusiness.ac.uk
+hcfe.ac.ukhclrg.ac.uk
+hcri.ac.uk
hct.ac.uk
+hcuc.ac.ukhdruk.ac.ukheacademy.ac.ukheadline.ac.ukheadteachers.ac.ukhealth.ac.ukhealthcare.ac.ukhealthcarescience.ac.uk healthcaretechnologies.ac.ukhealthdataresearchuk.ac.ukhealtheducation.ac.ukhealthsciencescotland.ac.ukhealthyuniversities.ac.uk
+hear.ac.ukheart.ac.uk&"heartofworcestershirecollege.ac.uk($heartofworcestershirelawschool.ac.uk
+heat.ac.ukheated.ac.ukhebcon.ac.ukhebetterregulation.ac.ukhecail.ac.ukhecbiosim.ac.uk#hecollegeadvisersinlondon.ac.ukhecsu.ac.ukhector.ac.ukhedata.ac.uk
+hedd.ac.uk
+hedg.ac.ukhediip.ac.ukhedip.ac.ukheefs.ac.uk
+heeg.ac.uk
+heep.ac.ukheesf.ac.ukheestates.ac.ukhefce.ac.ukhefcw.ac.ukhefestis.ac.ukhegovernance.ac.uk
+heia.ac.ukheidi.ac.ukheids.ac.ukheilbronn.ac.ukheinlondon.ac.ukhei-worcester.ac.uk
+helf.ac.ukhellofuture.ac.ukheloa.ac.ukhendon.ac.ukhenley.ac.ukhenleycol.ac.ukhenleycollege.ac.ukhenley-cov.ac.ukhenleymc.ac.ukhenryfordcollege.ac.ukhenry-moore.ac.ukhensa.ac.ukhenshaws.ac.uk
+hepa.ac.uk
hep.ac.ukhepcw.ac.uk
+hepi.ac.uk
+hepp.ac.ukhe-purchasing.ac.uk
+hera.ac.ukherbi.ac.uk
+herc.ac.ukhereford.ac.ukhereford-art-col.ac.ukhereford-tech.ac.ukhereward.ac.ukheriot-watt.ac.ukheritageconsortium.ac.ukheritagequay.ac.ukheritagescience.ac.ukheron.ac.ukhertfordshire.ac.uk%!hertfordshirebusinessschool.ac.uk
hertreg.ac.ukherts.ac.ukherts-e-learn.ac.ukherts-he.ac.ukherts-regional.ac.uk
+hesa.ac.ukhesharedlegal.ac.ukhesin.ac.ukhespa.ac.ukhestem.ac.ukheswbusnet.ac.uk
hew.ac.ukhewit.ac.ukheythrop.ac.ukheythropcollege.ac.ukhfaes.ac.ukhfals.ac.uk
+hfma.ac.uk
hhc.ac.ukhiddenhistorieswwi.ac.ukhighbury.ac.ukhighburygroup.ac.ukhigher-education.ac.ukhighfieldscentre.ac.ukhighlands.ac.ukhighlands-jersey.ac.ukhighpeak.ac.ukhilderstone.ac.ukhillcroft.ac.ukhillsroad.ac.ukhiperduct.ac.ukhison.ac.uk!historicalmusicpedagogy.ac.ukhistoricalpageants.ac.ukhistoricbooks.ac.uk
history.ac.ukhistorysubjectcentre.ac.ukhistory-uk.ac.ukhistparl.ac.ukhkvets.ac.ukhlcollege.ac.uk
hlg.ac.ukhlnsc.ac.uk
hogarth.ac.ukholmelacy.ac.ukholts.ac.ukholycross.ac.ukhomefieldcollege.ac.ukhomenetworks.ac.ukhoney-monitoring.ac.uk
+hope.ac.uk
hopwood.ac.uk
horizon.ac.ukhorizonscollege.ac.ukhorniman.ac.ukhotbed.ac.ukhoughall.ac.ukhousefraserarchive.ac.ukhousingevidence.ac.ukhowcollege.ac.ukhpc-diversity.ac.uk
+hpci.ac.ukhpc-midlands.ac.ukhpc-midlands-plus.ac.ukhpc-sc.ac.ukhpc-uk.ac.uk
+hpcx.ac.ukhpoolsfc.ac.ukhrbdt.ac.uk
hrc.ac.uk
hri.ac.ukhrionline.ac.ukhrsfc.ac.uk
+hsad.ac.uklipidomics.ac.uk
+hsdp.ac.uk
hss.ac.uk
hta.ac.ukht.ac.uk
htp.ac.uk
hts.ac.ukhuawen.ac.uk#hubbard-theory-consortium.ac.uk
hud.ac.ukhuddcoll.ac.ukhuddersfield.ac.ukhuddnewcoll.ac.ukhughbaird.ac.ukhuish.ac.uk
hullacl.ac.uk
+hull.ac.ukhull-college.ac.ukhullschoolartdesign.ac.ukhulltraining.ac.ukhumanities.ac.uk!humanities-human-rights.ac.ukhumanmind.ac.ukhumanrights-lse.ac.ukhumber.ac.ukhumbermaritimecollege.ac.ukhumbox.ac.ukhumbug.ac.ukhumbul.ac.ukhungerford.ac.ukhuntingdon.ac.ukhutton.ac.ukhw.ac.uk
+hwlc.ac.ukhwlln.ac.ukhybrid-group.ac.uk
+hyde.ac.ukhydeclarendon.ac.ukhydronationscholars.ac.uk
+hyms.ac.uk
hyp.ac.ukhysbys.ac.uk
+iaac.ac.uk
+iagp.ac.uk
iah.ac.uk
+ials.ac.ukial-wrecsam.ac.ukiapetus2.ac.uk
iapetus.ac.uk
iat.ac.ukibd-boost.ac.uk
+ibis.ac.uk
+ibss.ac.ukibuild.ac.uk
+icac.ac.ukic.ac.ukicair.ac.uk
+icca.ac.ukiccliverpool.ac.uk
ice-cse.ac.uk
+iced.ac.uki-centralwm.ac.uk
+icif.ac.uk
+icit.ac.uk
+icls.ac.uk
+icma.ac.ukicmacentre.ac.uk
+icmp.ac.ukiconcollege.ac.ukiconnect.ac.uk
icr.ac.uk
+icsa.ac.uk
ics.ac.uk
+icsl.ac.ukictheatre.ac.ukidcore.ac.uk
idealse.ac.uk
+idgo.ac.ukidras.ac.uk
ids.ac.uk
ies.ac.uk
+iesr.ac.ukiexchange.ac.uk
ife.ac.uk
ifl.ac.uk
ifm.ac.uk
ifr.ac.uk
ifs.ac.ukifslearning.ac.ukifstal.ac.uk
+iger.ac.uk
+igmm.ac.ukignite.ac.ukigsqt.ac.uk
+ihgs.ac.ukihighbury.ac.uk
ihrinfo.ac.uk
iis.ac.uki-lab.ac.uk
+ilab.ac.ukilex-tutorial.ac.uk
ilt.ac.ukilthe.ac.uk image-guided-therapies.ac.ukimageworkshop.ac.ukimems.ac.uk
+imet.ac.ukimlab.ac.ukimpact.ac.ukimpact-hei.ac.ukimpala.ac.ukimperial.ac.uk
imr-cdt.ac.ukimrci.ac.uk
imt.ac.ukinclusion.ac.ukindeedproject.ac.uk
infogov.ac.ukinform25.ac.ukinformation-systems.ac.ukinformedchoices.ac.ukinfosciscotland.ac.ukinitiate.ac.uk
innogen.ac.ukinnovation.ac.ukinnovation-exchange.ac.ukinnovations.ac.uk inquisitionspostmortem.ac.ukinspire-dtp.ac.ukinspiretrust.ac.uk&"institute-of-cancer-research.ac.ukinstituteofcoding.ac.uk instituteofcounselling.ac.uk"institutionofelectronics.ac.uk#inst-of-oceanographic-sci.ac.uk
intarch.ac.ukintegrativebiology.ac.ukinteractcbt.ac.ukinteractive-e.ac.ukinteractiveeducation.ac.ukinternational.ac.uk$ internationalcollegedundee.ac.uk$ international-house-london.ac.ukinternationalstaff.ac.ukinternationalstudies.ac.uk-)international-union-crystallography.ac.ukinto-newcastle.ac.ukintute.ac.uk
ioe.ac.uk
ion.ac.uk
ios.ac.uk
ioz.ac.ukipcc-wg3.ac.uk
+ipem.ac.ukipforesightforum.ac.uk
+ipgc.ac.uk
ipi.ac.uk
+ipv6.ac.ukirc-sphere.ac.uk
+ired.ac.ukirese.ac.uk
+iris.ac.ukiri-scotland.ac.ukiriss.ac.ukirscl.ac.uk
isc.ac.uk
+iscp.ac.uk
+isic.ac.uk
+isis.ac.ukislam-anatolia.ac.ukislamicacademy.ac.ukislamic-college.ac.ukislamicstudiesnetwork.ac.uk
+isle.ac.uk
+isli.ac.ukislington-acl.ac.uk
ism.ac.uk
+ismg.ac.ukispan.ac.ukistar.ac.uk
+isvc.ac.ukitchen.ac.ukiteach.ac.uk
+itec.ac.ukitlearningspace-scot.ac.ukitnow.ac.uk
+itol.ac.ukitrace.ac.ukitutility.ac.uk
+iucr.ac.ukiwcollege.ac.ukiwcommunitylearning.ac.uk
iwightc.ac.uk
iwm.ac.uk
+jade.ac.ukjamesbondstudies.ac.ukjaneausten.ac.ukjanet.ac.ukjanet-brokerage.ac.ukjanetbrokerage.ac.ukjanetcollaborate.ac.ukjasmin.ac.ukjas-mine.ac.uk
jca.ac.uk
jcc.ac.ukjcmaxwell.ac.ukjcpsg.ac.uk
jec.ac.ukjenner.ac.uk
+jevc.ac.ukjewel-esk.ac.ukjga-group.ac.uk
jic.ac.uk
+jisc.ac.ukjiscadvance.ac.ukjisc-collections.ac.ukjisccollections.ac.ukjisc-content.ac.ukjisccontent.ac.ukjiscdigitalmedia.ac.ukjiscecollections.ac.ukjischistoricbooks.ac.ukjischistories.ac.ukjiscinfonet.ac.ukjiscjournalarchives.ac.ukjisc-liberate.ac.uk jisc-liberate-migrate1.ac.uk jisc-liberate-migrate2.ac.uk jisc-liberate-migrate3.ac.ukjiscmail.ac.ukjisc-mau.ac.ukjiscmediahub.ac.ukjiscmu.ac.uk
jiscpas.ac.ukjisc-services.ac.ukjisc-tau.ac.ukjiscwell.ac.uk
jmc.ac.uk
jmu.ac.uk
jnt.ac.uk
+jobs.ac.ukjohnruskin.ac.ukjoinup.ac.uk
+jolt.ac.ukjorum.ac.ukjoseph-chamberlain.ac.ukjoseph-priestley.ac.ukjoseph-priestly.ac.ukjosephwright6form.ac.ukjournalarchives.ac.ukjournaltocs.ac.uk
jrs.ac.uk
+jsmc.ac.ukjstor.ac.uk
+jtap.ac.ukjtltraining.ac.ukjubileecentre.ac.uk
juc.ac.uk
+juno.ac.ukjustincraig.ac.uk
+jwfl.ac.ukjwheatley.ac.uk
+kaes.ac.ukkbplus.ac.uk
kcb.ac.uk
kcc.ac.uk
kcl.ac.uk
kclwave.ac.ukkcollege.ac.ukkecnuneaton.ac.ukkec-stourbridge.ac.ukkedst.ac.ukkeele.ac.ukkeighleycollege.ac.ukkendal.ac.ukkendalcollege.ac.uk
kennedy.ac.ukkensingtoncoll.ac.uk
+kent.ac.ukkentadulteducation.ac.uk
kentcls.ac.uk
kentman.ac.ukkess2.ac.uk
kew.ac.ukke-westyorkshire.ac.ukkeyseducation.ac.ukkeyskillbuilder.ac.uk
kgv.ac.uk
+kiad.ac.ukkiddercoll.ac.ukkidderminster.ac.ukkidsfirst.ac.ukkilmarnock.ac.ukkinds.ac.uk
+king.ac.ukkingalfreds.ac.uk kingalfredsbasingstoke.ac.ukkinged6nun.ac.ukkings.ac.ukkingshillinstitute.ac.ukkingshurst.ac.ukkingslondon.ac.ukkingston.ac.ukkingstonalumni.ac.ukkingston-college.ac.ukkingsway.ac.ukkirkleescollege.ac.uk
kirkley.ac.ukkisharon.ac.ukkitts.ac.ukkl.ac.uk
kmc.ac.uk
+kmms.ac.ukknightlearning.ac.ukknowledge-house.ac.ukknowledgehouse.ac.ukknowsleycc.ac.ukknowsleycollege.ac.uk
+knti.ac.uk
ksc.ac.uk
+ksep.ac.ukkssacademy.ac.ukkssdeanery.ac.uklaban.ac.uklabinacell.ac.uklackcoll.ac.uk
lackham.ac.uk
lae.ac.uklaetottenham.ac.uk
+lahp.ac.uk
+laia.ac.uklakescollege.ac.uk!lakescollegewestcumbria.ac.uk
lal.ac.uklambethacl.ac.uk
lambeth.ac.uklambethcollege.ac.uklamda.ac.uk
+lamp.ac.uklampeter.ac.uklanarkshirefederation.ac.uklancashire.ac.uklancashirecompact.ac.uk)%lancashireinstituteoftechnology.ac.uklancashirelawacademy.ac.uklancashirelawschool.ac.uklancaster.ac.uk"lancasterbeijingjiaotong.ac.uklancs.ac.uklancs-cumbrianti.ac.uklancs-initiative.ac.uklancsngfl.ac.uk
landmap.ac.uklandmarks.ac.uklandscape.ac.uklangdoncollege.ac.uk
langpol.ac.uklangside.ac.uklanguagebox.ac.uklanguagesmythsfinds.ac.uklanguagesresearch.ac.uklanguagessoutheast.ac.uk
+laps.ac.uk
law.ac.uk
lawcabs.ac.uklawteacher.ac.uk
lbc.ac.uklbc-northwood.ac.uklboro.ac.uklborolondon.ac.uklbpresearch.ac.uk
lbs.ac.uk
lbu.ac.uk
+lcad.ac.uk
lcb.ac.uk
+lcbs.ac.uk
+lcbt.ac.uk
+lcds.ac.uk
lcf.ac.uk
+lcfi.ac.uk
lcgroup.ac.uklciot.ac.uklcirah.ac.uk
+lcit.ac.uk
lcm.ac.uklcriconvergence.ac.uklcssp.ac.uk
lct.ac.uklcuck.ac.uk
+lcwc.ac.ukldoc-cdt.ac.ukle.ac.ukleadershipfoundation.ac.ukleadershiphe.ac.ukleanhe.ac.ukleanhehub.ac.uk
+leap.ac.ukleapahead.ac.uklearna.ac.uklearnbaes.ac.uklearndirect.ac.uklearnedsocietywales.ac.uklearnharrow.ac.uklearnhigher.ac.uklearningbites.ac.uklearninglink.ac.uklearningmathsonline.ac.uklearningonscreen.ac.uklearningstaffordshire.ac.uklearningtogether.ac.uklearningzone.ac.uklearninscotland.ac.uklearninworcestershire.ac.uklearnit-northampton.ac.uklearnnorthants.ac.uklearnportsmouth.ac.uklearnsafl.ac.uklearntelford.ac.uklearntogive.ac.uk
lec.ac.uk
+lecb.ac.ukledas.ac.ukleder.ac.ukleeds.ac.ukleedsadultlearning.ac.ukleeds-art.ac.ukleedsbeckett.ac.uk leedsbeckettuniversity.ac.ukleedscitycollege.ac.ukleedscollege.ac.ukleedsd.ac.ukleeds-ecampus.ac.ukleeds-lcot.ac.ukleeds-met.ac.ukleedsmet.ac.ukleedsmetcarnegie.ac.ukleeds-metropolitan.ac.ukleedsmetropolitan.ac.ukleedssixthform.ac.ukleedsthomasdanby.ac.ukleedstrinity.ac.uk
+leek.ac.uklegacy.ac.uklegalscholars.ac.uk
leggott.ac.ukleicester.ac.ukleicestercollege.ac.ukleicesterlearns.ac.ukleicestermuseums.ac.ukleicester-poly.ac.ukleicp.ac.ukleics-als.ac.ukleighcollege.ac.uk
+leis.ac.ukleos-scot.ac.uk
lersnet.ac.uklesoco.ac.ukletbsharedservice.ac.uklettol.ac.ukleverhulme.ac.uklewcol.ac.uklewestraining.ac.uklewisham.ac.uk"lewishamsouthwarkcollege.ac.ukleyton.ac.uk
lfa.ac.uk
+lfhe.ac.uklgbtnonhe.ac.uk
lgu.ac.uk
lhc.ac.uk
+lhcb.ac.uk
+lhec.ac.uk
+libf.ac.uklichfield.ac.uk
+lidc.ac.uklido-dtp.ac.uk
+life.ac.uk
lifearc.ac.uklifeatkings.ac.uk
lifelab.ac.uklifelonglearning.ac.uklifesign.ac.uklifestudy.ac.uk
liftapp.ac.uk!lighthouselearningtrust.ac.uk
+lihe.ac.uklimavady.ac.uk
+lime.ac.uk
+lims.ac.uk
lincoln.ac.uklincolncollege.ac.uklincolninstitute.ac.uk&"lincolninstituteoftechnology.ac.uklincolnmedicalschool.ac.uk+'lincolnshireinstituteoftechnology.ac.uklincsiot.ac.uk
lincsit.ac.uklinguistics.ac.uklink19college.ac.uklink2learn-ni.ac.uk
linkage.ac.uklinkagecollege.ac.uklinkinglondon.ac.uklinksintolanguages.ac.uklinst.ac.uk
+lipa.ac.uk1994group.ac.uk
+hsdc.ac.uk
+3aaa.ac.uk
bishopg.ac.ukliss-dtp.ac.uklistar.ac.uklisten-up.ac.uklisterpostgraduate.ac.uk
+litt.ac.uklittlehampton.ac.uk
liv.ac.ukliv-coll.ac.ukliv-e.ac.uk
+live.ac.uk
livenet.ac.ukliverpool.ac.ukliverpoolsas.ac.uklivesandletters.ac.uklivewell.ac.uk
livhope.ac.uklivingdigital.ac.uklivinglab.ac.uklivinglaboratory.ac.uklivinglegacies1914-18.ac.uklivingwithmachines.ac.uklivjm.ac.uk
+ljmu.ac.uk
lkl.ac.ukllakes.ac.uk
llambed.ac.ukllandrillo.ac.uk
+llas.ac.ukllysfasi.ac.uk
lma.ac.uklmbru.ac.uk
lmc.ac.uk
lmd.ac.uklmi4he.ac.uk
lms.ac.uk
lmu.ac.uk
+lnat.ac.uklocate.ac.uklockssalliance.ac.uklogic.ac.uk
+lolo.ac.uk
lon.ac.uklondon.ac.uklondonbiblecollege.ac.uklondonbusinessschool.ac.uklondoncbs.ac.uklondoncentre-hstm.ac.uk londonchurchillcollege.ac.uklondon-college.ac.uklondondeanery.ac.uklondoneastcove.ac.uklondonexternal.ac.uklondon-fashion.ac.uklondonfilmacademy.ac.uklondon-guildhall.ac.uklondonhigher.ac.uklondoninternational.ac.uklondonknowledgelab.ac.uklondonlinks.ac.uklondonmedicine.ac.uklondonmet.ac.uklondonmetro.ac.uklondonmetropolitan.ac.uk&"londonmetropolitanuniversity.ac.uklondonmetuniversity.ac.uklondonp4p.ac.uklondon-pgmde.ac.uklondonreach.ac.uk londonschooloftheology.ac.uklondonscreenacademy.ac.uklondonstudiocenter.ac.uklondonstudiocentre.ac.uklongeaton.ac.uklongley-park.ac.uklongleypark.ac.uklongleyparkcollege.ac.uklongley-parksfc.ac.uklongleyparksfc.ac.uk%!longleyparksixthformcollege.ac.uklongroad.ac.uk
lonklab.ac.uklonmet.ac.uklonmetro.ac.uklonmt.ac.ukloreto.ac.uklothiancolleges.ac.uk
lou.ac.uk
loucoll.ac.ukloughborough.ac.uklowestoft.ac.uklowestoftsfc.ac.uk#lowestoftsixthformcollege.ac.uk
lpc.ac.uklpmde.ac.uk
lsa.ac.uk
+lsbm.ac.uk
+lsbu.ac.uklscollege.ac.uk
+lscs.ac.uk
lse.ac.uklseapplicants.ac.uk
+lsec.ac.uklsecollaborators.ac.uklse-departments.ac.uklse-events.ac.uklse-global.ac.uklsejournals.ac.uklse-marketing.ac.uklse-nursery.ac.uklse-research.ac.uklse-residences.ac.uklse-sport.ac.uklsestaff.ac.uklse-students.ac.uk
+lsfc.ac.uklsgnt-cdt.ac.uklshtm.ac.uk
+lsjs.ac.uk
+lsme.ac.uk
lso.ac.uk
+lsrc.ac.uklsrnw.ac.uk
+lsst.ac.uk
lst.ac.uklstmed.ac.uklstmliverpool.ac.uklstonline.ac.ukls-uc.ac.uk
+ltcc.ac.uk
+ltea.ac.ukltegroup.ac.ukltscotland.ac.uk
ltsn-01.ac.uk
+ltsn.ac.uk
ltsneng.ac.uk
lucbjtu.ac.uklucid.ac.ukludlow-college.ac.ukluftoncollege.ac.uklufton-college-fe.ac.uk
+luil.ac.ukluminate.ac.ukluminateeducation.ac.uk luminateeducationgroup.ac.ukluminategroup.ac.uk
+lupc.ac.uk
lut.ac.ukluton-acl.ac.uklutonacl.ac.ukluton.ac.uklutonsfc.ac.uk
lvv.ac.uk
+lwms.ac.uklww-cetl.ac.uklyellcentre.ac.uklythamsixth.ac.uklz.ac.ukm25lib.ac.ukm5servicedesk.ac.ukm5universities.ac.ukmablethorpe.ac.ukmacaulay.ac.ukmacclesfield.ac.ukmacclesfield-college.ac.ukmackworth.ac.ukmackworth-college.ac.ukmac-migs.ac.uk
+maes.ac.ukmagic.ac.ukmaglue.ac.ukmagnacartacollege.ac.ukmahsc.ac.ukmailtalk.ac.ukmakingassessmentcount.ac.uk makingthemostofmasters.ac.uk
malvern.ac.uk
man.ac.uk&"managementcontrolassociation.ac.ukmancat.ac.ukmanchester.ac.uk$ manchester-business-school.ac.uk"manchesterbusinessschool.ac.ukmanchester-city-coll.ac.uk%!manchester-computing-centre.ac.uk manchesterdentalschool.ac.ukmanchesterjmce.ac.uk!manchestermedicalschool.ac.ukmanchestermethod.ac.uk,(manchester-metropolitan-university.ac.ukmanchesternti.ac.uk73manchesternursingmidwiferyandsocialworkschool.ac.uk!manchesternursingschool.ac.uk"manchesterpharmacyschool.ac.uk$ manchesterpsychologyschool.ac.uk%!manchesterschoolofdentistry.ac.uk$ manchesterschoolofmedicine.ac.uk#manchesterschoolofnursing.ac.uk95manchesterschoolofnursingmidwiferyandsocialwork.ac.uk$ manchesterschoolofpharmacy.ac.uk&"manchesterschoolofpsychology.ac.ukmanchester-worldwide.ac.ukmanlitphil.ac.uk
mantais.ac.ukmanufacturingedc.ac.ukmaoeraobjects.ac.uk
+mapp.ac.uk#mappingthemedievalmargins.ac.ukmappingtheunderworld.ac.ukmappingwales.ac.ukmappingwelshmarches.ac.ukmarble.ac.ukmarchmont.ac.uk
maremap.ac.ukmarianstudies.ac.ukmarinecentrewales.ac.ukmarjon.ac.ukmarlab.ac.ukmarlin.ac.ukmarplecollege.ac.ukmaryvale.ac.ukmaryward.ac.ukmarywardcentre.ac.ukmasc25.ac.ukmastersprojects.ac.ukmasts.ac.ukmatch.ac.ukmaterials.ac.ukmaterialsnexus.ac.ukmathcentre.ac.ukmathematics.ac.uk
mathfit.ac.ukmathgate.ac.ukmathscentre.ac.ukmaths-magic.ac.ukmathstore.ac.ukmathsvideoclubs.ac.ukmathtutor.ac.ukmatrix.ac.ukmatthew-boulton.ac.ukmattu.ac.uk
+matu.ac.uk
mau.ac.ukmaximize.ac.uk
maxwell.ac.uk
mba.ac.uk
mbc.ac.uk
mbn.ac.uk
+mbro.ac.uk
mbs.ac.ukmbs-worldwide.ac.uk
mc6.ac.uk
mca.ac.uk
mcc.ac.uk
+mcls.ac.uk
+mcsw.ac.ukmctimoney-college.ac.uk
mdx.ac.ukmeddyliwchamgymru.ac.ukmede-innovation.ac.ukmedev.ac.uk
medhist.ac.ukmediahub.ac.ukmedian.ac.ukmedicine.ac.ukmedievalchester.ac.ukmedievalfrancophone.ac.ukmedievalswansea.ac.ukmedipathways.ac.ukmedschools.ac.ukmedwayacl.ac.ukmedway.ac.ukmeguk.ac.ukmeirion-dwyfor.ac.ukmenai.ac.ukmendel.ac.ukmeplg.ac.uk
+merc.ac.ukmerlin.ac.ukmerops.ac.ukmerristwood.ac.ukmerseyandwestlancslln.ac.uk
merthyr.ac.ukmerton-acl.ac.ukmerton.ac.uk merton-adult-education.ac.ukmertonadulteducation.ac.ukmetabolomics.ac.uk
metadac.ac.ukmetanoia.ac.ukmetcaerdydd.ac.uk
meteorr.ac.uk
metfilm.ac.ukmetfilmschool.ac.uk
methnet.ac.ukmethodsnetwork.ac.ukmethodsnorthwest.ac.uk
meu.ac.uk
mfo.ac.ukmgsdtp.ac.ukmhdss.ac.uk
+mhie.ac.uk
+mhrn.ac.uk
mhs.ac.ukmhs-relay.ac.uk
mib.ac.uk
mic.ac.ukmicrobusiness.ac.ukmicrogravity.ac.ukmicron.ac.ukmicronanoflows.ac.ukmicrosimulation.ac.ukmidchesh.ac.ukmiddlesbro.ac.ukmiddlesex.ac.uk
midfife.ac.ukmidhurst.ac.uk
midkent.ac.ukmidlands3cities.ac.ukmidlands4cities.ac.uk"midlandsenergyconsortium.ac.uk!midlandsphysicsalliance.ac.uk
midplus.ac.ukmidrib.ac.uk
+mihe.ac.ukmillionplus.ac.ukmimas.ac.ukmineofinfo.ac.uk
minerva.ac.ukminhajcollege.ac.ukminim.ac.ukminstercentre.ac.ukmirandanet.ac.ukmirror.ac.ukmisoc.ac.ukmissendenabbey.ac.uk
+mist.ac.ukmkcollege.ac.ukmkncc.ac.uk
+mlab.ac.ukmluri.ac.uk
mmf.ac.ukmmmhub.ac.uk
mmu.ac.ukmmubs.ac.uk
mnc.ac.ukmndregister.ac.ukmobilecumbria.ac.ukmobilitymoodplace.ac.ukmodelsofauthority.ac.ukmodip.ac.ukmodmedmicro.ac.ukmoidigital.ac.uk
mol.ac.uk
+mole.ac.uk
mollnet.ac.ukmonash.ac.ukmonkwear.ac.ukmonogram.ac.ukmoodleshare-hw.ac.ukmoorlands.ac.ukmoray.ac.uk
moredun.ac.ukmorgannwg.ac.ukmorley.ac.ukmorleycollege.ac.ukmorleycollegelondon.ac.ukmotherwell.ac.uk
moulton.ac.ukmountcollyer.ac.uk
+move.ac.ukmoveonmoveup.ac.ukmovinghistory.ac.ukmovingmedicine.ac.ukmpags.ac.uk
mpa-mpp.ac.ukmpa-uk.ac.ukmpese.ac.uk
+mpsi.ac.uk
mpw.ac.uk
mrc.ac.ukmrcieu.ac.ukmrcollege.ac.uk
+mrcp.ac.ukm-rhex.ac.uk
mri.ac.uk
msa.ac.ukmscassessment.ac.ukmscos.ac.uk
+msec.ac.uk
msp.ac.ukmsportknowledge.ac.uk
+mssn.ac.uk
+mtec.ac.uk
mti.ac.ukmuarc.ac.uk
+mucm.ac.ukmundus.ac.uk
+murg.ac.ukmuseumofwriting.ac.ukmuseumwales.ac.ukmusicandphilosophy.ac.uk
musiche.ac.ukmusiconline.ac.ukmusic-research.ac.ukmuslimcollege.ac.ukmuther.ac.ukmwell.ac.uk
+mwrc.ac.ukmycalderdale.ac.uk
mycandi.ac.ukmycib.ac.uk
myclyde.ac.ukmyeplg.ac.ukmyerscough.ac.ukmylabnotebook.ac.ukmylcb.ac.ukmynescol.ac.uk
myplace.ac.ukmyport.ac.ukmyscience.ac.ukmywnsc.ac.ukn8agrifood.ac.uknacro.ac.uknacstock.ac.uknactem.ac.uk
+nado.ac.uk
+naea.ac.uk
+nafc.ac.uknagty.ac.uknahste.ac.uk
+naln.ac.uk
nam.ac.ukna-me.ac.uknamss.ac.uknanocmos.ac.uknapier.ac.uknapier-cloud.ac.uk
+narf.ac.uknarti.ac.uk
+nash.ac.uknatcen.ac.uknatcor.ac.uknatdisteam.ac.uk#nationalacademiclibraries.ac.uk&"nationalandacademiclibraries.ac.uknational-army-museum.ac.uk;7nationalcollegeforadvancedtransportinfrastructure.ac.uk)%nationalcollegeforhighspeedrail.ac.uk#nationalcollegefornuclear.ac.uk'#national-confidential-inquiry.ac.uk#national-learning-network.ac.uk($nationalnetworkforinterpreting.ac.uk'#nationalnetworkfortranslation.ac.uknationalskillsacademy.ac.uk#nationaltechnicianscentre.ac.uknatmatsci.ac.uknatsal.ac.uk
natstar.ac.uknaturalhistorymuseum.ac.uknature.ac.uknazarene.ac.uknbcol.ac.uk
nbe.ac.uk
nbi.ac.uknbolton-sfc.ac.uk
+nbpa.ac.uknbria.ac.uk
nbs.ac.uk
nbu.ac.uknc3rs.ac.uk
+nc4m.ac.uk
nca.ac.uk
+ncas.ac.ukncati.ac.ukncaveo.ac.uk
ncb.ac.ukncbradford.ac.uk
ncc.ac.uknccadultlearning.ac.uk
+nccc.ac.ukncccs.ac.ukncclondon.ac.ukncdoncaster.ac.uk
+nceo.ac.ukncess.ac.uk
+ncfn.ac.uk
ncg.ac.uk
+ncgc.ac.ukncgrp.ac.uknchlondon.ac.uk
+nchp.ac.uknchsr.ac.uknciul.ac.uk
ncl.ac.uknclan.ac.uknclanarkshire.ac.ukncl-coll.ac.ukncl-lyme.ac.uk
+ncls.ac.uk
+nclt.ac.ukncl-u-lyme.ac.uk
ncn.ac.ukncpontefract.ac.ukncrcl.ac.uk
+ncrm.ac.uk
ncs.ac.uk
+ncse.ac.uk
nct.ac.uk
+ncti.ac.uk
+ncuk.ac.uk
nda.ac.uk
+ndai.ac.uk
+ndff.ac.ukndonline.ac.uk
+ndtc.ac.uk
+neab.ac.ukneaco.ac.ukneath.ac.uk
nec.ac.uknecah.ac.uknec-arundel.ac.uknectar.ac.uknedial.ac.uknedtc.ac.uk
nei.ac.ukneipdg.ac.uk
nek.ac.uknelcls.ac.uknelson.ac.uknelsoncollege.ac.uknelsongroup.ac.uknemcon.ac.uknemode.ac.uk
+nene.ac.uk
neodaas.ac.ukneonatalsociety.ac.uknerap.ac.uk
+nerc.ac.uknerc-arsf.ac.uknerc-bangor.ac.uknerc-bas.ac.uknerc-belfast.ac.uknerc-bush.ac.uknerc-cardiff.ac.uknerc-cdt-oil-and-gas.ac.uknerc-dorset.ac.uknerc-east-kilbride.ac.uknerc-eskdalemuir.ac.uknerc-essc.ac.uknerc-gilmerton.ac.uknercgw4plus.ac.uknerc-hartland.ac.uknerc-keyworth.ac.uknerc-lancaster.ac.uknerc-lerwick.ac.uknerc-liv.ac.uknerc-loanhead.ac.uknerc-mst-radar.ac.uknerc-murchison.ac.uknerc-oban.ac.uknerc-oxford.ac.uknerc-pml.ac.uknerc-smru.ac.uknerc-solardome.ac.uknerc-southampton.ac.uknerc-swindon.ac.uknerc-wallingford.ac.uknerc-wytham.ac.ukneresc.ac.uk
+nesc.ac.uknesci.ac.uknescol.ac.uknescot.ac.uk
+nesi.ac.uknesli2.ac.uknesli.ac.uk
+nest.ac.uknetlab.ac.uknetscc.ac.uknetskills.ac.uk
netwise.ac.uknetzwerkdeutsch.ac.ukneupc.ac.ukneurogrid.ac.ukneurohub.ac.uknewark.ac.uknewbasildon.ac.uknewbattleabbeycollege.ac.uk
newbold.ac.uknewbury-college.ac.uknew-campus-basildon.ac.uknewcampusbasildon.ac.uknewcampusglasgow.ac.uknewcastle.ac.uknewcastlecitylearning.ac.uknewcastle-college.ac.uknewcastlecollege.ac.uknewcastlesfc.ac.uk#newcastlesixthformcollege.ac.uk
newceys.ac.uknew-coll-cf.ac.uknewcollege.ac.uknewcollegedurham.ac.uknewcollegeglasgow.ac.uknewcollegetelford.ac.uknewcollpont.ac.uknewdirectionsreading.ac.uknewdur.ac.uknewham.ac.uknewhamcfe.ac.uknewham-vic.ac.uk
+newi.ac.uknewman.ac.ukne-worcs.ac.ukne-worcscol.ac.uknewphd.ac.uk
newport.ac.uknewroutephd.ac.uknewsfilm.ac.uknewtec.ac.uknewton.ac.uknewtonfund.ac.uknewtonrigg.ac.uknewvic.ac.uknext-institute.ac.uknextstepssw.ac.uknfacstem.ac.uk
+nfer.ac.uk
nfo.ac.uk
ngc.ac.uk
+ngfl.ac.ukngflscotland.ac.uk
ngs.ac.ukngwnet.ac.uk
nhc.ac.uknhcscotland.ac.uk
nhm.ac.uk
+niab.ac.ukniace.ac.uk
nib.ac.uk
+nibs.ac.uknibsc.ac.uknicats.ac.uk
+nicd.ac.uknicer.ac.uknicis.ac.ukniees.ac.ukniesr.ac.uknightline.ac.uknihcc.ac.uk
+nihr.ac.ukniimle.ac.uk
ninedtp.ac.ukniran.ac.uknismod.ac.uknjncscotlandscolleges.ac.uk
nkc.ac.uk
nkw.ac.uk
nlc.ac.uk
+nlgs.ac.uknlincs-coll.ac.uk
nln.ac.uk
+nlow.ac.uk
nls.ac.uknmahp.ac.uknmahp-ru.ac.uk
+nmap.ac.uk
+nmgm.ac.uk
+nmgw.ac.uk
nmh.ac.uknmite.ac.uk
nmm.ac.uk
nms.ac.uk
+nmsi.ac.uknmssc.ac.uknmwcte.ac.uk
nnc.ac.uknnotts-col.ac.uk
+nnuf.ac.uk
noa.ac.uk
noc.ac.uk
+nocn.ac.uk
+nocs.ac.uknodes.ac.uknorfolkcove.ac.uk
norland.ac.uknormanmanagedservices.ac.uknortcoll.ac.uknorthampton.ac.uknorthamptonapps.ac.uknorthamptoncoll.ac.uknorthamptoncollege.ac.uknorthbham.ac.uknorthbrook.ac.uknorthbrookcollege.ac.uknorthbrook-online.ac.uknorthderbycollege.ac.uknortheast.ac.uknortheastoutreachhub.ac.uknorthern.ac.uknorthernart.ac.uknorthernbridge.ac.uknorthern-consortium.ac.uk#northernenterpriseschools.ac.uknortherngrid.ac.uk"northernlogisticsacademy.ac.uknorth-gla.ac.uknorthglasgowcollege.ac.uknorthgrid.ac.uknorthhighland.ac.uknorthkent.ac.uknorthland.ac.uknorthlindsey.ac.uknorth-london.ac.uk northscotland-research.ac.uknorthtrafford.ac.uk north-trafford-college.ac.uknorthumberland-acl.ac.uknorthumberland.ac.uknorthumbria.ac.uknorwichresearchpark.ac.uknotredamecoll.ac.uk
+nott.ac.uknottingham.ac.uk62nottinghamartsandhumanitiesresearchinstitute.ac.uknottinghamcollege.ac.uknottinghamcourses.ac.uknottinghameuniversity.ac.uk,(nottinghamgraduateschoolofbusiness.ac.uknottinghaminnovation.ac.uk/+nottinghaminternationalbusinessschool.ac.uknottinghamknowledge.ac.uknottingham-trent.ac.uknottinghamtrentadfs.ac.uknottm-coll.ac.uknottsmaternity.ac.uk
novella.ac.uknovus.ac.uknovuscambria.ac.uknowal.ac.uk
nox.ac.uknpcrdc.ac.uknphcardiac-research.ac.uk
npm.ac.uk
+npsc.ac.uk
+nptc.ac.uknptcgroup.ac.uk
nrc.ac.uknrn-lcee.ac.uk
nrp.ac.uk
nrs.ac.uk
+nsad.ac.uknsals.ac.uknsamr.ac.uk
nsc.ac.uknsccs.ac.uk
+nscd.ac.uk
+nscg.ac.uk
+nsea.ac.uk
nsf.ac.uknsfnet-relay.ac.uknsirc.ac.uk
nso.ac.uknspcr.ac.uk
nss.ac.uk
nsu.ac.uk
nsw.ac.uk
ntb.ac.uk
ntc.ac.uk
+ntdc.ac.uk
+ntec.ac.uk
+ntfs.ac.ukntidagenham.ac.uk
ntu.ac.ukntyneside.ac.uk
nua.ac.uk
+nuca.ac.uk
nuc.ac.uk
nucarts.ac.uknuccam.ac.uknuccat.ac.uknucfs.ac.uknuclear2050.ac.uk
nuclear.ac.uknuclearcollege.ac.uknucleartheory.ac.uknuclearuniversities.ac.uk
+nulc.ac.uknulcollege.ac.uknupha.ac.uknuqmu-2kt.ac.uknurse.ac.uk
nurture.ac.uknu-sense.ac.uk
+nwba.ac.uknwcdtp.ac.uk
+nwcs.ac.uknwdtc.ac.uk
nw-grid.ac.uk
+nwhc.ac.uk
nwi.ac.uknwifhe.ac.uk
+nwkc.ac.uknwkcollege.ac.uknwkent.ac.uk
nwl.ac.uknwlcc.ac.uknwman.ac.uknwmentoring.ac.uk
+nwrc.ac.uknwsgc.ac.uknwslc.ac.uknwspm.ac.uk
nwssdtp.ac.uknwstudentandgraduate.ac.uk
+nwtf.ac.uk
+nwua.ac.uknwueu.ac.uknwupc.ac.uknwworkbank.ac.uk
nwy.ac.uk
nyu.ac.ukoaa-anaes.ac.uk
oakhill.ac.ukoaklands.ac.ukoakley.ac.ukoakwoodcourt.ac.uk
oas.ac.ukoasis.ac.ukoasiscollege.ac.uk
+oasp.ac.ukoatridge.ac.uk
obc.ac.uk
+obhe.ac.uk
obs.ac.uk
oca.ac.uk
occ.ac.ukoceanography.ac.uk
+ocfe.ac.ukochjs.ac.uk
+ocms.ac.ukocnkm.ac.uk
+ocvc.ac.uk
+oeps.ac.ukoercymru.ac.ukoerwales.ac.ukofficeforstudents.ac.ukoffshorerenewables.ac.uk
ofs.ac.uk
oge.ac.ukogsa-dai.ac.uk
ohu.ac.uk
+oibc.ac.uk
oldbury.ac.ukoldham.ac.ukoldham-sfc.ac.uk
oldroyd.ac.uk
+olds.ac.ukoldvic.ac.uk
olf.ac.uk
oli.ac.ukomagh.ac.ukomaghcollege.ac.ukomandrilling.ac.ukomcrg.ac.uk
+omii.ac.uk
+omni.ac.uk
omsiirc.ac.ukonlinesurveys.ac.ukonlinm.ac.uk
ontrack.ac.ukoocdtp.ac.ukopdems.ac.uk
+open.ac.ukopened.ac.uk#openengineeringlaboratory.ac.ukopenfields.ac.ukopensciencelab.ac.ukopensciencelaboratory.ac.ukopensource.ac.ukopenstemlab.ac.ukopenstemlabs.ac.ukopenuniversity.ac.uk
openurl.ac.ukopera-archive.ac.ukoptima-cdt.ac.ukopwall.ac.ukorbitalsouthcolleges.ac.ukorchardhill.ac.ukorchestra.ac.ukorchid.ac.ukorientalmed.ac.ukormskirk.ac.ukorpington.ac.ukorsas.ac.uk
osc.ac.ukoscar.ac.uk
+oscg.ac.uk
+osfc.ac.ukosianxiety.ac.ukosier.ac.uk
osmosis.ac.ukoss-watch.ac.ukotleycollege.ac.ukotleyeaston.ac.ukotleyonline.ac.ukou.ac.uk
+oubs.ac.ukourjourney.ac.ukoustudios.ac.ukoutduction.ac.ukoutofhourshelp.ac.uk
ovc.ac.ukowl-elearning.ac.uk
+owsc.ac.ukox.ac.uk
oxademy.ac.ukoxahsc.ac.ukoxcis.ac.ukoxdent.ac.ukoxford.ac.ukoxfordadvancedstudies.ac.ukoxford-brookes.ac.ukoxfordbrookes.ac.ukoxfordbusinesscollege.ac.ukoxford-cherwell.ac.ukoxfordcollege.ac.ukoxforddrama.ac.ukoxfordgsb.ac.ukoxfordtutorialcollege.ac.ukoxilp.ac.ukoxwasp-cdt.ac.uk
+pact.ac.uk
+pads.ac.uk
+pahc.ac.uk
paisley.ac.uk
+pala.ac.ukpalaeography.ac.ukpalatine.ac.uk
palmers.ac.uk
+pals.ac.ukpanda.ac.ukpanorama-dtp.ac.ukparadigm.ac.uk
parkcol.ac.ukpark-college.ac.ukparklane.ac.ukparklanecoll.ac.ukparksandgardens.ac.ukparticlephysics.ac.uk partneriaethaberbangor.ac.uk
+pase.ac.ukpaston.ac.uk
+path.ac.uk
pathcal.ac.ukpathways.ac.ukpathwaystohe.ac.ukpatsy.ac.ukpaul-mellon-centre.ac.ukpaulmelloncentre.ac.uk
+pble.ac.uk
pca.ac.uk
+pcad.ac.uk
+pcae.ac.uk
+pcfe.ac.ukpcfeonline.ac.uk
pcl.ac.uk
+pcmd.ac.ukpcydds.ac.uk
pdi.ac.uk
pds.ac.ukpearl.ac.ukpearsonbusinessschool.ac.ukpearsoncollege.ac.ukpearsoncollegelondon.ac.uk
+peas.ac.uk
pec.ac.ukpedagogicequality.ac.uk
+peep.ac.ukpeerlearning.ac.ukpembrokeshire.ac.ukpembs.ac.uk
pencoed.ac.ukpendcoll.ac.ukpengwerncollege.ac.ukpeninsula.ac.ukpeninsular.ac.uk
pennine.ac.uk
penwith.ac.ukpenwithcollege.ac.ukpenybont.ac.ukpenzance.ac.ukpeoplelikeyou.ac.uk
peoples.ac.uk
+pepa.ac.ukperfected.ac.ukperformancescience.ac.ukpershore.ac.ukperth.ac.ukperthcoll.ac.ukpeterborough.ac.ukpetroc.ac.uk
+pggc.ac.ukpgreen.ac.ukpharmacy.ac.ukpharmacyschools.ac.uk pharmacyschoolscouncil.ac.uk
phc.ac.ukphdcymru.ac.ukpheds-dtc.ac.uk
+phes.ac.uk
philtar.ac.uk
phoenix.ac.ukphotonics.ac.uk
phr.ac.ukpicker.ac.ukpickereurope.ac.ukpickering.ac.ukpier18.ac.ukpiirus.ac.uk!pilgrimageandcathedrals.ac.ukpilgrimagestudies.ac.uk
+pion.ac.ukpipebots.ac.ukpi-project.ac.ukpirbright.ac.uk
+piru.ac.ukpitch-in.ac.ukplant-phenomics.ac.ukpldfscotland.ac.ukplumpton.ac.ukplumptononline.ac.uk
+plus.ac.uk
+plym.ac.ukplymouth.ac.ukplymouthart.ac.ukplymouthcfe.ac.uk$ plymouth-marine-laboratory.ac.uk
plymsea.ac.uk
pml.ac.uk
pms.ac.ukpodium.ac.ukpoint.ac.ukpointblank.ac.ukpointblankmusicschool.ac.uk
pol.ac.ukpolitical-science.ac.ukpoliticsblog.ac.ukpoliticsinaction.ac.ukpoly-of-wales.ac.uk
+poms.ac.uk
+pone.ac.ukpontypridd.ac.ukpooleacl.ac.uk
+port.ac.ukportfolio.ac.ukporth.ac.ukportland.ac.ukportsmouth.ac.ukportsmouth-college.ac.ukportsmouthuni.ac.ukpostgrad.ac.ukpostgraducas.ac.ukpotteries.ac.uk#potterieseducationaltrust.ac.uk
poverty.ac.uk
pow.ac.ukpowerelectronics.ac.ukpowia.ac.ukpparc.ac.uk
+ppre.ac.ukpracticum.ac.ukpramu.ac.ukpremia.ac.ukprescribe.ac.uk%!prescribingsafetyassessment.ac.uk!presidencylondoncollege.ac.uk
preston.ac.ukprestoncoll.ac.ukpriestley.ac.ukpriestleycollege.ac.ukprifysgolioncymru.ac.ukprimarygoal.ac.ukprinciplesinpatterns.ac.uk
prioned.ac.ukprism.ac.uk
privelt.ac.ukprocat.ac.ukprocatdigital.ac.ukprocatstudent.ac.ukproductivemargins.ac.uk
profile.ac.ukprogramme3.ac.ukpromotingpartnership.ac.ukproms.ac.ukpropagandastudies.ac.ukprospects.ac.uk
proteus.ac.uk$ proudman-oceanographic-lab.ac.uk
provide.ac.ukprowe.ac.ukproxomics.ac.ukprs-ltsn.ac.uk
prucomm.ac.uk
psa.ac.uk
psc.ac.ukpsci-com.ac.uk
+psds.ac.uk
psigate.ac.ukpssru.ac.ukpublicengagement.ac.ukpublicinterest.ac.ukpublicservices.ac.ukpublicspace.ac.ukpuppiesofourtime.ac.ukpursglove.ac.uk
qaa.ac.uk
qac.ac.ukqacollege.ac.uk
+qbsc.ac.ukqeliz.ac.ukqmbsc.ac.uk
qmc.ac.ukqmced.ac.uk
qml.ac.ukqmpgmc.ac.uk
qmu.ac.uk
+qmuc.ac.uk
+qmul.ac.uk
qmw.ac.uk
+qoru.ac.uk
qsi.ac.uk
qso.ac.uk
quadram.ac.ukquadraminstitute.ac.uk
quadrat.ac.ukqualidata.ac.uk
quantic.ac.ukquantitativemethods.ac.ukquayside.ac.uk
qub.ac.ukqueens.ac.ukqueens-belfast.ac.uk
queensu.ac.uk
quercus.ac.ukqumrancavesdispersed.ac.uk
raa.ac.uk
rac.ac.ukracals.ac.uk
+racc.ac.uk
+rada.ac.ukradioresearch.ac.uk
rad-sat.ac.uk
rae.ac.uk
+raft.ac.uk
ram.ac.ukrandd.ac.ukrandomsystems-cdt.ac.ukrapid.ac.ukraratutor.ac.ukra-review.ac.ukrareview.ac.uk
ras.ac.ukrascal.ac.ukrascommunity.ac.uk
rau.ac.uk
+rave.ac.ukravemedia.ac.ukravensbourne.ac.uk&"ravensbourneuniversitylondon.ac.uk
+rbge.ac.ukrbgkew.ac.uk
+rbsl.ac.ukrbslondon.ac.uk
rca.ac.ukrcahmw.ac.uk
rcc.ac.uk
+rcds.ac.uk
+rcem.ac.ukrc-harwell.ac.uk
rcl.ac.uk
rcm.ac.ukrcnde.ac.uk
+rcni.ac.uk
+rcoa.ac.uk
+rcog.ac.uk
rcophth.ac.uk
rcp.ac.ukrcpch.ac.uk
+rcpe.ac.ukrcplondon.ac.ukrcpnorth.ac.ukrcpsg.ac.ukrcpsglasg.ac.uk
rcpsych.ac.uk
rcr.ac.uk
rcs.ac.ukrcsed.ac.ukrcseng.ac.uk
+rcuk.ac.uk
rcukssc.ac.uk
+rcvs.ac.uk
rdf.ac.uk
rdg.ac.uk
rdi.ac.ukrdmrsc.ac.ukrdnet.ac.ukreach.ac.ukreachingwider.ac.uk
reading.ac.ukreading-college.ac.ukreadingosi.ac.ukreadytoresearch.ac.ukrealcaledonian.ac.uk realisingopportunities.ac.ukreallifemethods.ac.uk
+reap.ac.ukreaseheath.ac.uk"rebuildingmacroeconomics.ac.ukrecordingachievement.ac.ukredbridge.ac.ukredbridge-college.ac.ukredbridge-iae.ac.ukredbridgeinstitute.ac.ukredcar.ac.ukredcliffe.ac.uk
reednet.ac.uk
ref.ac.uk
refrain.ac.ukregard.ac.ukregener8.ac.ukregent-academy.ac.ukregent-college.ac.ukregentcollegelondon.ac.uk
regents.ac.ukregentscollege.ac.ukregents-tc.ac.ukregionalhpc.ac.uk%!regionalsciencecentreoldham.ac.uk regional-studies-assoc.ac.ukregionalvisions.ac.ukreid-kerr.ac.ukreidkerr.ac.uk
reigate.ac.ukrelateinstitute.ac.ukreload.ac.uk
+relu.ac.ukrememberingslavery.ac.ukrems-cdt.ac.ukrenaissanceskin.ac.ukre-net.ac.uk
+renu.ac.ukrepositorynet.ac.uk
+rerc.ac.ukresearch4justice.ac.ukresearch-clinician.ac.ukresearchconcordat.ac.ukresearch-councils.ac.ukresearchers14.ac.ukresearch-scotland.ac.ukresearchscotland.ac.uk!research-socialsciences.ac.ukresearchwales.ac.uk+'resilient-decarbonised-energy-cdt.ac.uk+'resilient-decarbonised-energy-dtc.ac.uk
+resl.ac.ukresourceshare.ac.uk
restore.ac.uk
results.ac.ukrewind.ac.uk
+rfdc.ac.ukrfhsm.ac.uk
rfi.ac.uk
rgo.ac.uk
rgu.ac.ukrhacc.ac.ukrh.ac.ukrhbnc.ac.ukrhcda-aac.ac.ukrhees.ac.uk
+rhfc.ac.uk
rhs.ac.uk
+rhul.ac.ukrhyac.ac.ukri.ac.uk&"richardtaunton6thformcollege.ac.ukrichardtaunton.ac.ukrichardtauntons.ac.ukrichardwilsononline.ac.ukrichmond.ac.uk richmondbusinessschool.ac.ukrichmond-utcoll.ac.ukrichuish.ac.ukriding.ac.uk
right-2.ac.uk
rin.ac.ukripon-cuddesdon.ac.ukriscl.ac.ukriseholme.ac.ukriverside.ac.ukriversidecollege.ac.uk riversidecollegehalton.ac.ukriversidemusiccollege.ac.ukrivic.ac.ukrl.ac.uk
rlg.ac.uk
rln.ac.ukrlo-cetl.ac.uk
+rluk.ac.uk
rma.ac.uk
+rmas.ac.uk
rnc.ac.uk
+rncb.ac.uk
+rncm.ac.ukrnibcollege.ac.uk
rnibncw.ac.ukrnib-redhill.ac.ukrnibvocoll.ac.uk
rnn.ac.ukrnngroup.ac.ukrochdalesfc.ac.ukrodbaston.ac.uk
roe.ac.ukroehampton.ac.ukroehampton-online.ac.ukroffeypark.ac.ukroisolutions.ac.ukromanrepublic.ac.ukromansocietyrac.ac.ukromeo.ac.ukrosemount.ac.ukroses.ac.uk
rosetta.ac.ukroslin.ac.ukrothamsted.ac.ukrotherham.ac.ukrotherham-coll.ac.ukrothervalley.ac.ukroundtable.ac.ukroutesintolanguages.ac.ukrowett.ac.ukrowleycollege.ac.ukroyagcol.ac.ukroyalacademyofmusic.ac.ukroyalarmouries.ac.ukroyalholloway.ac.uk$ royalhollowaycommunication.ac.uk%!royalhollowaycommunications.ac.uk$ royalhollowayinternational.ac.ukroyalhollowayuniforum.ac.ukroyal-institution.ac.ukroyalmarsdenschool.ac.ukroyalsoc.ac.ukroyalsociety.ac.ukroyce.ac.ukroyce-institute.ac.ukroysocmed.ac.uk
rps.ac.ukrsa-ls.ac.ukrsamd.ac.ukrsc-cymru.ac.ukrsc-east.ac.ukrsc-eastern.ac.ukrsc-east-midlands.ac.ukrsc-em.ac.ukrscem.ac.ukrsc-london.ac.ukrsc-ne-scotland.ac.ukrsc-ni.ac.ukrsc-north.ac.ukrsc-northern.ac.ukrsc-northwest.ac.ukrsc-scotland.ac.ukrsc-south-east.ac.ukrsc-southeast.ac.ukrsc-sw-scotland.ac.ukrsc-wales.ac.ukrsc-westmidlands.ac.ukrsc-wm.ac.ukrsc-yh.ac.ukrsc-yorkshire-humber.ac.uk"rsc-yorkshire-humberside.ac.ukrsd-exeter.ac.uk
rse.ac.uk
+rslg.ac.ukrslondon.ac.uk
+rslp.ac.uk
rsm.ac.uk
+rsms.ac.uk
rsp.ac.ukrua-project.ac.ukrugby.ac.ukrugby-coll.ac.ukrugbycoll.ac.ukrugby-college.ac.ukrugit.ac.uk
rul.ac.uk
runshaw.ac.ukrunshawcollege.ac.uk
+ruru.ac.ukruskin.ac.ukrussell-group.ac.ukrussellgroup.ac.uk
+rutc.ac.ukrutherford.ac.ukrutlandcollege.ac.uk
rvc.ac.ukrwcmd.ac.uk
sac.ac.uk
saclnet.ac.uksacwg.ac.uk
+saes.ac.uk
+saet.ac.uk
+safa.ac.uksafecampuscommunities.ac.uksafepodnetwork.ac.uksages.ac.uksahfos.ac.uksainsburycentre.ac.uk"sainsburyinstituteforart.ac.uksainsbury-laboratory.ac.uk
salford.ac.uksalfordcc.ac.uksalfordcitycollege.ac.uk$ salfordcitycollege-trinity.ac.uksalford-col.ac.uk
+salg.ac.uksalisbury6c.ac.uksalisbury.ac.uksalisbury-college.ac.uksalisburycollege.ac.uk
saltash.ac.uksalts.ac.uksalvationarmy.ac.uk
+samc.ac.uk
+sams.ac.uksandwell.ac.uksandwellcollege.ac.uksanger.ac.uk
+sapc.ac.uksapphire.ac.uk
+sari.ac.uksartre.ac.uksarum.ac.uk
sas.ac.uk$ satsixthformacademiestrust.ac.uk
sbc.ac.uksbirmc.ac.uksbrc-nottingham.ac.uk
+sbrn.ac.uk
sbs.ac.uk
sbu.ac.uksbusinesslondon.ac.uk
sc1.ac.ukscaan.ac.ukscadr.ac.uk
+scae.ac.ukscapa.ac.ukscarb-6-form.ac.ukscarboroughtec.ac.ukscarboroughuniversity.ac.uk%!scarboroughuniversitycampus.ac.uk%!scarboroughuniversitycentre.ac.uk&"scarboroughuniversitycollege.ac.uks-cat.ac.uk
scc.ac.uk
+sccb.ac.uk
+sccc.ac.uksccjr.ac.uk
+scct.ac.uk
+scde.ac.uk
scentro.ac.uk
+scep.ac.uk
scg.ac.uks-cheshire.ac.ukschml.ac.ukscholarsschool.ac.ukschome.ac.ukschoms.ac.uk!school-economic-science.ac.uk
sci.ac.uksciculture.ac.uksciencemuseum.ac.ukscience-museum-group.ac.uksciencemuseumgroup.ac.uksciencesigns.ac.ukscills.ac.ukscilly-acl.ac.ukscinet.ac.uk
+scip.ac.uk
+scir.ac.ukscisci.ac.uk
scitech.ac.uksclondon.ac.uk
+scoc.ac.ukscola.ac.uksconul.ac.ukscoopstudy.ac.uk
+scop.ac.ukscope-uk.ac.ukscopic.ac.ukscore.ac.uk
+scot.ac.ukscotcatproject.ac.ukscotchem.ac.uk
scotcit.ac.uk
scotcol.ac.ukscotdist.ac.uk
scotgem.ac.ukscotgrid.ac.ukscot-hip.ac.ukscotland-aspirenorth.ac.ukscotland-northforum.ac.ukscotlandscolleges.ac.ukscot-reman.ac.ukscot-ship.ac.ukscotssyntaxatlas.ac.ukscottishborderscampus.ac.ukscottishciviljustice.ac.uk#scottishcollegegovernance.ac.ukscottishcorpus.ac.uk scottishdisabilityteam.ac.ukscottisheconomics.ac.ukscottishelections.ac.ukscottishinsight.ac.uk!scottishmarineinstitute.ac.ukscottishresearch.ac.ukscottishresearchpools.ac.uk&"scottishuniversitygovernance.ac.ukscphrp.ac.uk
+scpr.ac.ukscrambledmessages.ac.ukscran.ac.uk
+scre.ac.ukscreenacademyscotland.ac.ukscreenfilmschool.ac.ukscreenspace.ac.uk
+scri.ac.uk
scrolla.ac.uk
+scrr.ac.ukscrsj.ac.uksc-toolkit.ac.uk)%scunthorpeinstituteoftechnology.ac.ukscurl.ac.uk
scutrea.ac.uk
+scva.ac.uk
+scvs.ac.uk
scweims.ac.uk
sda.ac.uk
sdc.ac.uk
+sdeo.ac.uk
s-devon.ac.uk
sdf.ac.uk
+sdhi.ac.uk
sdn.ac.uk
+sdos.ac.uk
+sdss.ac.uk
sdt.ac.uk
seacams.ac.ukseaha-cdt.ac.uk"sea-mammal-research-unit.ac.uksearch25.ac.uksearch.ac.uk
+seas.ac.uksecureharvests.ac.uk
+seda.ac.uk
+sedc.ac.ukse-derbys.ac.uk
+sedg.ac.uk
seecoll.ac.ukseedstor.ac.ukseeingspeech.ac.ukse-essex-college.ac.ukseevic.ac.ukseevic-college.ac.uksefton-acl.ac.uksefton.ac.ukseintiaucymru.ac.ukselby.ac.ukselcog.ac.ukseldensociety.ac.uksellyoak.ac.ukselsey.ac.uksemanticaudio.ac.uksenatehouselibrary.ac.uksense-east.ac.uksensorcity.ac.uksenss-dtp.ac.uksepnet.ac.uk
+sera.ac.uk
+serc.ac.ukserena.ac.ukserio.ac.uk
+serl.ac.uk
ses.ac.uk
+seti.ac.uksetsquared.ac.uk
sfc.ac.uksfefc.ac.uk
+sfeu.ac.uksfhub.ac.uk
+sfps.ac.uk
+sfra.ac.uk
sfs.ac.uksfsstudents.ac.uk
sfx.ac.uk
+sfxc.ac.uksgeulnagaidhlig.ac.uksghms.ac.uksgiliaith.ac.uk
sgm.ac.uk
+sgmc.ac.uk
+sgpe.ac.uksgsah.ac.uksgscol.ac.uksgsss.ac.uk
+sgul.ac.ukshared-ed.ac.ukshared-es.ac.uksharedsolutions.ac.uksharegeo.ac.uksharingpractice.ac.uk
shc.ac.uk
+shdf.ac.uksheef.ac.uk
+shef.ac.ukshefc.ac.uksheffcol.ac.uksheffield2.ac.uksheffield.ac.uksheffieldcareersfairs.ac.uksheffieldcetle.ac.uksheffield-hallam.ac.uksheffieldlegalfair.ac.uksheffield-lls.ac.uksheffieldrobotics.ac.uksheilingcollege.ac.ukshenasimon.ac.uksheppeycollege.ac.uksherif.ac.uksherpa.ac.uksherpa-leap.ac.uk
shiplay.ac.uk
shipley.ac.ukshootershill.ac.ukshrewsbury.ac.uk
shu.ac.ukshuttleworth.ac.ukshuttleworthcollege.ac.uksicsa.ac.uk
+side.ac.uk
sie.ac.uk
+sifa.ac.uksigma-cetl.ac.uksigma-network.ac.uk
+sign.ac.uk
+sihe.ac.uksikh-uni.ac.uk
simbios.ac.uksimian.ac.uk
sinapse.ac.uksinet.ac.uksinica.ac.uk
sino-cs.ac.uksinto.ac.uk
sip.ac.uksipher.ac.uk
+sipr.ac.uksircharleslyellcentre.ac.uk
+sire.ac.uksirius.ac.uk
+sirm.ac.uksiser.ac.uksissc.ac.uk
+siti.ac.uk
+siva.ac.uk
sjd.ac.uk
sjr.ac.ukskegnesstec.ac.ukskelmersdale.ac.ukskillsbridge.ac.uk skillscompetitionwales.ac.ukskillsgroupuk.ac.ukskillswestyorks.ac.ukskyrmions.ac.uk
slc.ac.ukslcollege.ac.uk
+slcs.ac.uk
+sldo.ac.uksleaford.ac.uk%!sleepandwakefulnessresearch.ac.uk
slg.ac.uksli-institute.ac.uksloan.ac.uk
+slsa.ac.uk
+slss.ac.uk
slt-cdt.ac.uk
sma.ac.uksmall-angle.ac.uksmart.ac.uksmbgroup.ac.uk
+smca.ac.uk
smc.ac.uksmcblackburn.ac.uk
+smcl.ac.uk
smg.ac.uk
smi.ac.uksmithinst.ac.uk
sml.ac.uk
+smru.ac.uk
+smsj.ac.uksmstc.ac.uk
smu.ac.uk
+smuc.ac.uksmucb.ac.uk
+smul.ac.uk
snc.ac.uk
+snug.ac.uk
+soas.ac.uk
soc.ac.uk
socbcdt.ac.uksocialpolicy.ac.uksocialsciences.ac.uksocietycentral.ac.uk&"societyofjewelleryhistorians.ac.uk societyoflegalscholars.ac.uksocres.ac.uksocsciscotland.ac.uk
soficdt.ac.uksofteng-support.ac.uksoftmattercdt.ac.uksoftware.ac.uksoftwareoutlook.ac.uk
soillse.ac.uksolent.ac.uksolentmarineacademy.ac.uksolent-university.ac.uksolentuniversity.ac.uksolihull.ac.uksolihullsfc.ac.uksolsfc.ac.uk"solutions-worcestershire.ac.uksomerset.ac.uksomersetcolleges.ac.uksothebys-institute.ac.uksoton.ac.uk
+sots.ac.uksound-heritage.ac.uksoundsoftware.ac.uksoundwell.ac.uksource.ac.uksouthampton.ac.uksouthamptonalumni.ac.uksouthamptonbusiness.ac.uksouthampton-city.ac.uksouthampton-institute.ac.uk'#southampton-solent-university.ac.uk%!southamptonsolentuniversity.ac.uksouthbank-university.ac.uksouthcheshirecollege.ac.uksouthcoastdtp.ac.uksouthcoll-bolton.ac.uksouthdevon.ac.uksouthdowns.ac.uksoutheastdtc.ac.uksoutheastessex.ac.uksouthend-acl-college.ac.uksouthend.ac.uksouthend-adult.ac.uksouthendcollege.ac.uksouthessex.ac.uksouthessexcollege.ac.uksouthgate.ac.uksouthgrid.ac.uksouthkent.ac.uk#south-lanarkshire-college.ac.uksouthport.ac.uksouthport-college.ac.uksouthsefton6thform.ac.uk#southsefton6thformcollege.ac.uksouthseftoncollege.ac.uksouthstaffs.ac.uksouth-thames.ac.uksouthwales.ac.uksouthwark.ac.uksouthwestcollege.ac.uksouthwestiot.ac.uksouthwestnuclearhub.ac.uk
spa.ac.uk"spaceuniversitiesnetwork.ac.ukspaceweather.ac.ukspalding.ac.uk
+span.ac.uksparc.ac.uksparqs.ac.uksparsholt.ac.uksparsholtcollegegroup.ac.uk"sparsholtcollegeservices.ac.uksparsholtservices.ac.ukspatialeconomics.ac.uk
spc.ac.ukspcollege.ac.ukspectrum.ac.ukspeedproject.ac.ukspelthorne.ac.ukspero.ac.ukspice.ac.ukspider.ac.ukspinesurgeons.ac.ukspiritstudios.ac.ukspitfire.ac.uksplint-cetl.ac.ukspokenword.ac.uk
spr.ac.uk
+sprg.ac.uksprint.ac.ukspsrn.ac.ukspurgeons.ac.uksqhwesternconsortium.ac.uk
src.ac.uk
srf.ac.uk
+srhe.ac.uk
+srip.ac.uk
+sroc.ac.uk
+srpe.ac.uk
srs.ac.uk
+sruc.ac.ukssees.ac.uk
+ssfc.ac.uk
+sshm.ac.uk
+ssmh.ac.uk
+sspc.ac.uk
+sspf.ac.ukssphr.ac.uksssfc.ac.uk
ssu.ac.uk
+stac.ac.ukstafford.ac.ukstaffordcoll.ac.ukstaffordshire.ac.ukstaffs.ac.uk
+stak.ac.ukstamford.ac.ukstamfordparktrust.ac.ukst-and.ac.ukst-andrews.ac.ukstanmore.ac.uk stanstedairportcollege.ac.uk
+star.ac.ukstarlink.ac.ukstars.ac.ukstatistics.ac.ukstatstutor.ac.ukstaugustinescollege.ac.ukst-austell.ac.uk
+stbr.ac.ukstbrendans.ac.ukstbrn.ac.uk
stc.ac.uk
+stcg.ac.uk
stchads.ac.ukstcharles.ac.ukstcharles-mail.ac.ukstclares.ac.ukstcoll.ac.ukst-davids-coll.ac.ukstdavidscollege.ac.ukstdavidsdaygroup.ac.ukstdoms.ac.uksteamhouse.ac.uk
+stec.ac.ukstemacademy.ac.uk
+stem.ac.ukstemequals.ac.ukstephenson.ac.ukstephensoncoll.ac.uksterling.ac.ukstets.ac.uk
+stfc.ac.ukstgeorges.ac.uksthelensacl.ac.uksthelens.ac.uksth-leic-coll.ac.uk
+stir.ac.ukstirling.ac.uk
st-ives.ac.ukstjohns-nottm.ac.uk
stloyes.ac.uk
stlukes.ac.ukstmartins.ac.uk
stmarys.ac.ukstmarys-belfast.ac.ukstmarys-blackburn.ac.ukstmarysblackburn.ac.ukstmaryslondon.ac.ukstmarys-sfc.ac.ukstmellitus.ac.ukstmellituscollege.ac.ukstmichaels.ac.ukstockbill.ac.ukstockport.ac.ukstockton.ac.uk*&stocktonlearningandskillsservice.ac.ukstocktonsfc.ac.ukstocsf.ac.ukstokecoll.ac.ukstokecollege.ac.ukstokesfc.ac.ukstomp.ac.ukstonyhurst.ac.ukstorcuram.ac.ukstoriesofchange.ac.ukstourbridge.ac.uk
+stow.ac.ukstpadarns.ac.ukst-patricks.ac.ukstran.ac.ukstrat-avon.ac.ukstratavoncol.ac.ukstratford.ac.uk)%stratfordislanduniversitycentre.ac.uk#stratforduniversitycentre.ac.ukstratgroup.ac.ukstrath.ac.ukstrathclyde.ac.ukstrathmore.ac.ukstreva.ac.ukstripe.ac.ukstrode-coll.ac.ukstrode-college.ac.uk
strodes.ac.ukstrodeslanguages.ac.ukstroud.ac.ukstroudcol.ac.ukstroudcollege.ac.uk
+sttc.ac.ukstudentengagement.ac.ukstudentshows.ac.uk!studentvoteregistration.ac.uk"studentvoterregistration.ac.ukstudygroup.ac.ukstudyhigher.ac.ukstudyinengland.ac.ukstudyingeconomics.ac.ukstudyinglanguages.ac.ukstudyinwales.ac.ukstudylondon.ac.ukstudywithplymouth.ac.uk
+stuk.ac.ukstvincent.ac.uksuburbansolutions.ac.uksucceeds.ac.uksuffolkacademiestrust.ac.uk
suffolk.ac.uksuffolkbusinessschool.ac.uksuffolk-maag.ac.uksuffolkone.ac.uk
+sulc.ac.uksulne.ac.uksulsa.ac.uksumac.ac.uk
+sums.ac.uksumsconsulting.ac.uksuncat.ac.uksuncol.ac.uk
+sund.ac.uksunderland.ac.uksunderlandcollege.ac.uksunderlandsixthform.ac.uk
sunitec.ac.uk
+supa.ac.uk
+supc.ac.uksupercomputingwales.ac.uksuperdarn.ac.uksuperjanet.ac.uksuperjournal.ac.uksuperstem.ac.uksupply-chain.ac.uk
+surf.ac.uk
surrart.ac.uksurrealismcentre.ac.uksurrey.ac.uksurreyadultlearning.ac.uksurreyibc.ac.uksurreyspace.ac.uksurveynet.ac.uk suschem-nottingham-cdt.ac.uksussex.ac.uksussexbusinessschool.ac.uksussexcoast.ac.uksussexdowns.ac.uksussexmedicalschool.ac.uksussexvirtualcollege.ac.uksussp.ac.uk sustainabilityexchange.ac.uk!sustainablehydrogen-cdt.ac.uksustainablelifestyles.ac.uksustainablepractices.ac.uksustainableproperty.ac.uksustainableprosperity.ac.uk!sustainabletechnologies.ac.uk
sustain.ac.uksustainsteel.ac.uk
+susx.ac.uksutcol.ac.uk
sutcoll.ac.uksuttoncollege.ac.uk
+swan.ac.ukswancoll.ac.uk
swanmet.ac.uk
swansea.ac.ukswansea-institute.ac.ukswanseamet.ac.uk
+swap.ac.uk
swapbox.ac.ukswarf.ac.ukswbio.ac.uk
swc.ac.ukswdtc.ac.ukswdtp.ac.uksweep.ac.uk
sweltec.ac.ukswift.ac.ukswincoll.ac.uk
swindon.ac.ukswindonart.ac.ukswindon-college.ac.uksw-iot.ac.ukswiot.ac.ukswlacademicnetwork.ac.uk
+swlc.ac.uksworcs.ac.ukswrac.ac.ukswurcc.ac.uksww-ahdtp.ac.ukswwcte.ac.ukswwhep.ac.uksx.ac.uksycolleges.ac.uksyfec.ac.uk
symonds.ac.uksynbio-cdt.ac.uksynsym.ac.uksyntheticbiology.ac.uksysmic.ac.uksystemicrisk.ac.uktablet-academy.ac.uk
+tacc.ac.uk
+tags.ac.uk
+tait.ac.uktakeyourplace.ac.uktalkinghealthmatters.ac.uktamescol.ac.uktameside-acl.ac.uktameside.ac.uktamesidecollege.ac.uktamworth.ac.uktamworthandlichfield.ac.uk
+tapb.ac.uktapestry.ac.uktarf-lcv.ac.uktargetedgrad.ac.uk
+tarn.ac.uk
+tasc.ac.uk
tau.ac.uktauntons.ac.uktavi-port.ac.uktavistockandportman.ac.uk tavistockrelationships.ac.uk
tay.ac.uk
tbm.ac.uk
+tcat.ac.uk
+tcch.ac.uk
+tccr.ac.uk
tcg.ac.uk
tcm.ac.uktcpartnership.ac.uktdotp.ac.ukteachenergy.ac.ukteachingaccessibility.ac.ukteachingshakespeare.ac.ukteamwork.ac.uk
+tean.ac.uk
tec.ac.uktechextra.ac.uktechne.ac.uktechxtra.ac.uk
+tedi.ac.uktedi-london.ac.uk
+teds.ac.uk
+tees.ac.ukteeslearn.ac.ukteesside.ac.ukteesvalley-acl.ac.uk
tel.ac.uktelfordcollege.ac.uktellusgb.ac.uktelri.ac.uk
temenos.ac.uktempusuk.ac.uktentowns.ac.uk
+terc.ac.uktesta.ac.uk
tex.ac.uktextminingcentre.ac.uk
+tgac.ac.ukthamesgatewaycollege.ac.ukthamesvalleytraining.ac.ukthanet.ac.ukthanetcollege.ac.ukthatcham.ac.uk thealanturinginstitute.ac.ukthearden.ac.ukthebcc.ac.ukthebritishacademy.ac.ukthe-british-museum.ac.ukthe-britishmuseum.ac.ukthebritishmuseum.ac.uk%!thechesterfieldcollegegroup.ac.ukthecobaltstudy.ac.ukthecontactpartnership.ac.ukthecpc.ac.ukthedigitalpicture.ac.uk
the-etc.ac.uktheetc.ac.uktheglobalsite.ac.ukthegraduationproject.ac.ukthehenleycollege.ac.uktheinternetlawschool.ac.uktheknowledgeacademy.ac.uk!thelearningcentrebexley.ac.ukthelearningconsortium.ac.ukthelearningmatrix.ac.uktheletterspage.ac.ukthelondonknowledgelab.ac.ukthemanchestercollege.ac.ukthemis.ac.uktheoca.ac.uktheroslininstitute.ac.ukthesaurus.ac.ukthesenses.ac.ukthesesalive.ac.uktheskillsco.ac.ukthewomenslibrary.ac.ukthinkhigher.ac.ukthinking3d.ac.ukthinkwales.ac.ukthomasdanby.ac.ukthomashpc.ac.ukthomasway.ac.ukthomroth.ac.ukthornbeck.ac.ukthurrock.ac.ukthurrockcampus.ac.uk
tic.ac.uk
tictocs.ac.uk
tiipple.ac.uktilehill.ac.uktipple.ac.uk
tla.ac.uktl.ac.uk
tlc.ac.uktlcbexley.ac.uktlccollege.ac.uktlcmd.ac.uktlcmoodle.ac.uk
+tltp.ac.uk
tmc.ac.uk
+tmcs.ac.uk
tmn.ac.ukt-mus.ac.uk
tombola.ac.uktotton.ac.uktoucan-network.ac.uktower.ac.uktowerhamletscollege.ac.uktowerhamletsllls.ac.uktowerhamletslls.ac.uk
tpc.ac.uk
+tpea.ac.uktpmde.ac.uk
+trac.ac.uktracingnetworks.ac.uktraffcoll.ac.uktrafford.ac.uktraffordcollege.ac.uktraindelayprediction.ac.uktraintogainstoke.ac.uktrans.ac.uktranscocon.ac.uk!transforming-musicology.ac.uk transformingmusicology.ac.uk
transit.ac.uktransitwestyorkshire.ac.uktranslate-medtech.ac.uk&"transnationalmodernlanguages.ac.uktranspharmtech-cdt.ac.uktranspharmtech-dtc.ac.uk
trc.ac.uk
tresham.ac.uktricky-topics-guide.ac.uk
trident.ac.uktri-london.ac.uktrilt.ac.uktrinity-bris.ac.uktrinity-cm.ac.uktrinitycollegebristol.ac.uktrinitylaban.ac.uktrinitysaintdavid.ac.uk
trocoll.ac.uk
tropmed.ac.uk
trs.ac.uktruro.ac.uktrurocollege.ac.uktruro-penwith.ac.uktruropenwith.ac.uk
tsd.ac.uktsdlondon.ac.uk
tse.ac.uktsec-biosys.ac.uk
tsl.ac.uk
+tsrc.ac.uk
ttc.ac.uktte-lisa.ac.ukttetraining.ac.uk
+ttrb.ac.uk
+tuca.ac.uk
+tuco.ac.uktudorpartbooks.ac.ukturbulence.ac.ukturing.ac.ukturingsafehaven.ac.uk
tvc.ac.uk
+tvof.ac.uk
tvu.ac.uktwenty65.ac.uktwin-research.ac.uk
twinsuk.ac.uktwirl.ac.uk
tyndall.ac.uktynecoast.ac.uktynecoll.ac.uk
tynemet.ac.uku4heusergroup.ac.uk
+ua92.ac.uk
uad.ac.uk
uag.ac.uk
ual.ac.uk
+uall.ac.uk
uas.ac.uk
+ubdc.ac.ukubel-dtp.ac.uk
ubn.ac.uk
uca.ac.uk
+ucam.ac.ukucas01.ac.uk
+ucas.ac.ukucasgraduate.ac.ukucaspg.ac.ukucaspostgrad.ac.ukucaspostgraduate.ac.uk
+ucat.ac.uk
+ucav.ac.uk
ucb.ac.uk
ucc.ac.uk
+ucea.ac.uk
uce.ac.uk
+ucem.ac.ukucenmanchester.ac.uk
+ucet.ac.uk
ucf.ac.uk
+ucfb.ac.uk
ucg.ac.ukucisa.ac.uk
ucl.ac.ukuclan.ac.ukuclanresearch.ac.uk
ucleeds.ac.ukuclglobal.ac.ukucl-status.ac.uk
+ucmk.ac.uk
+ucml.ac.uk
ucn.ac.uk
+ucnl.ac.uk
uco.ac.uk
ucp.ac.ukucpmarjon.ac.uk
ucq.ac.ukucreaseheath.ac.ukucreative.ac.uk
ucs.ac.ukucsalf.ac.ukucsalford.ac.ukuc-scarborough.ac.uk
+ucsd.ac.ukucshrewsbury.ac.uk
+ucsm.ac.uk
+ucsp.ac.uk
+ucss.ac.uk
+ucwa.ac.uk
ucw.ac.uk
ucy.ac.uk
+udel.ac.uk
uea.ac.uk
uec.ac.uk
+uedu.ac.uk
uee.ac.ukueharlax.ac.uk
uel.ac.ukuetcollege.ac.uk
ufm.ac.uk
uhi.ac.ukuhicloud.ac.ukuhmlg.ac.ukuhovi.ac.uk
uhr.ac.uk
+uhsl.ac.ukukadia.ac.ukukaea.ac.ukukaff.ac.uk
ukandeu.ac.ukukarc.ac.ukukbiobank.ac.uk
+ukca.ac.uk
ukc.ac.ukukcasa.ac.ukukcat.ac.ukukcbc.ac.uk
ukccsrc.ac.ukuk-cdi.ac.ukukceh.ac.ukukcge.ac.ukukchinab4g.ac.ukukcle.ac.ukukclt.ac.ukukcmri.ac.uk
+ukcp.ac.ukukcpmn.ac.ukukctas.ac.uk
+ukda.ac.uklipsit.ac.ukukdataservice.ac.uk%!ukdementiaresearchinstitute.ac.ukukdri.ac.uk
+ukds.ac.ukukerc.ac.ukukerna.ac.ukukesm.ac.ukukfast.ac.ukukgeos.ac.ukukgrad.ac.ukukhec.ac.ukukhls.ac.ukuk-imr.ac.ukukimr.ac.uk uk-india-energynetwork.ac.ukukirc.ac.ukuklibrariesplus.ac.uk
uklight.ac.uk
ukm.ac.ukukmed.ac.ukukmhd.ac.ukukmhr.ac.ukukmsn.ac.ukukndn.ac.ukuknet.ac.ukukngi.ac.ukuknibc.ac.ukukoln.ac.ukukorea.ac.ukukpass.ac.ukukpmc.ac.ukukpmcplus.ac.ukukpubmedcentral.ac.ukukqcd.ac.uk!ukresearchandinnovation.ac.uk
ukrheeo.ac.uk
+ukri.ac.uk
+ukro.ac.uk
+ukrr.ac.ukukscl.ac.ukukserp.ac.ukuksrn.ac.ukukssdc.ac.uk
+ukt0.ac.ukuktrc.ac.ukukupc.ac.ukukzikaresponse.ac.uk
+ulcc.ac.uk
ulh.ac.uk
ull.ac.ukulsop.ac.uk
+ulst.ac.ukulster.ac.uk
+ulth.ac.ukultralab.ac.uk
+umds.ac.uk
+umis.ac.ukumist.ac.uk
ums.ac.ukumslg.ac.uk
+umtc.ac.uk$ underpinningexcellenceinhe.ac.uk$ understanding-inequalities.ac.ukunderstandingsociety.ac.ukunialliance.ac.uk
unidesk.ac.ukuni-east.ac.uk
unilang.ac.ukunion.ac.uk
unis4ne.ac.ukunistats.ac.ukunisurreydirect.ac.ukuniswales.ac.ukunitedcollegegroup.ac.ukunitedcollegesgroup.ac.ukunity.ac.ukunivault.ac.ukuniversitiesengland.ac.uk#universitiesfornottingham.ac.ukuniversitieshr.ac.ukuniversitiesinlondon.ac.ukuniversitiesireland.ac.uk%!universitiesnorthernireland.ac.ukuniversities-scotland.ac.ukuniversitiesscotland.ac.ukuniversitiesuk.ac.ukuniversitieswales.ac.ukuniversitiesweek.ac.ukuniversitieswm.ac.ukuniversityacademy92.ac.ukuniversity-alliance.ac.uk%!universitycampusscarborough.ac.uk$ university-central-england.ac.uk universitycentreharlow.ac.uk"universitycentrehastings.ac.uk"universitycentresouthend.ac.uk#universitycentrestratford.ac.uk"universitycentrethurrock.ac.ukuniversitychairs.ac.uk#universitycollegefalmouth.ac.uk&"universitycollegescarborough.ac.ukuniversityenglish.ac.uk!university-of-cambridge.ac.ukuniversityofcambridge.ac.uk universityofchichester.ac.ukuniversityoflondon.ac.uk!universityofscarborough.ac.uk($universityofscarboroughcollege.ac.ukuniversityofsuffolk.ac.uk universityofwestlondon.ac.uk!universityquarter-stoke.ac.uk#universitysquarestratford.ac.uk
unl.ac.uk
unn.ac.uk
uod.ac.uk
uol.ac.uk
uos.ac.uk
upa.ac.uk
updates.ac.uk
+upen.ac.uk
+upmg.ac.ukurbanbigdatacentre.ac.ukurbanfloodresilience.ac.ukurbanflows.ac.ukurbanlivinglab.ac.ukurbanobservatory.ac.ukusablepast.ac.ukuse-of-mans.ac.ukushare.ac.ukushaw.ac.ukuspcollege.ac.ukusstratford.ac.uk
ust.ac.uk
+ustc.ac.uk
usw.ac.ukutcreading.ac.uk
uuk.ac.uk
+uvac.ac.ukuwb-global.ac.ukuwcatlantic.ac.ukuwchgyfrifiaduracymru.ac.uk
uwe.ac.ukuwe-bristol.ac.ukuwern.ac.uk
+uwic.ac.ukuwinat.ac.uk
uwl.ac.uk
uws.ac.ukuwtsd.ac.ukuwtsdlondon.ac.ukuxbridge.ac.ukuxbridgecollege.ac.uk
vaccine.ac.uk
+vads.ac.uk
vam.ac.ukvamsas.ac.ukvarndean.ac.uk
+vast.ac.uk
vaughan.ac.uk
+vcol.ac.ukvcoll.ac.uk
verifid.ac.uk
vetgate.ac.ukvetnetlln.ac.ukvetschools.ac.ukvetschoolscouncil.ac.ukvetset2go.ac.ukvetvaccnet.ac.uk
vge.ac.uk
+vgta.ac.ukvicarious.ac.ukvictoriacountyhistory.ac.ukvideoactive.ac.ukvidlearn.ac.ukvirtualcollege.ac.ukvirulogenome.ac.ukvisionnaires.ac.ukvisnet.ac.ukvista.ac.ukvisual-evidence.ac.ukvisuallearninglab.ac.ukvisualrhetoric.ac.ukvitae.ac.ukvital.ac.ukviznet.ac.ukvoila.ac.ukvolstudy.ac.uk
+vows.ac.ukv-resort.ac.uk
+vssn.ac.uk
+vtri.ac.uk
vts.ac.ukvtstutorials.ac.uk
wac.ac.uk
+wacc.ac.uk
+waes.ac.uk
waf.ac.uk
wakcoll.ac.ukwakefield.ac.uk
+walc.ac.ukwalcat.ac.ukwales1801-1919.ac.ukwales.ac.ukwalesdtc.ac.ukwalesdtp.ac.ukwalesglobalcampus.ac.ukwalesmep.ac.ukwalker.ac.ukwalker-institute.ac.ukwalsall-coce.ac.ukwalsallcollege.ac.uk
waltham.ac.ukwalthamintcollege.ac.ukwarkscol.ac.uk
+warr.ac.ukwarrington.ac.uk
warwick.ac.ukwarwickequine.ac.ukwarwickhri.ac.ukwarwickshire.ac.ukwaterwisercdt.ac.ukwaverleyabbeycollege.ac.uk
wbs.ac.uk
wcc.ac.ukwccsj.ac.uk
wcg.ac.uk
+wcmd.ac.uk
+wcoh.ac.uk
wcs.ac.uk
wct.ac.ukwddcp.ac.uk
wea.ac.ukweald.ac.ukwearside.ac.ukwebpa.ac.uk
webster.ac.uk
welbeck.ac.ukwelfareconditionality.ac.uk
+well.ac.ukwellbeing.ac.ukwellcome.ac.ukwelsh-dictionary.ac.ukwelshmediumhe.ac.ukwelshsaints.ac.uk
+wern.ac.uk
+wesc.ac.ukwescfoundation.ac.uk
+wess.ac.ukwessex.ac.ukwessexsfc.ac.ukwestchem.ac.ukwest-cheshire.ac.ukwestcollegescotland.ac.ukwestcumbcoll.ac.ukwestdean.ac.ukwestengland.ac.ukwestherts.ac.ukwesthill.ac.ukwestkent.ac.ukwestkentandashford.ac.ukwestking.ac.ukwestlancs.ac.ukwestlondon.ac.ukwestlondoncollege.ac.ukwestlondoniot.ac.ukwestlondonuniversity.ac.ukwest-lothian.ac.ukwestminster.ac.ukwestminster-cfe.ac.ukwestminsterutc.ac.ukwestnotts.ac.ukwestofscotland.ac.ukweston.ac.ukwestonstudents.ac.ukwestsuffolk.ac.ukwestsuffolkcollege.ac.ukwest-thames.ac.ukwestyorkshirecolleges.ac.ukweymouth.ac.ukweymouthcollege.ac.uk
+wfdc.ac.uk
wgu.ac.ukwhatscotlandthinks.ac.ukwhatworksscotland.ac.ukwhcgroup.ac.uk
+wheb.ac.ukwhelf.ac.ukwherl.ac.ukwhitegates-feu.ac.ukwhiterose.ac.uk*&whiterose-mechanisticbiology-dtp.ac.uk;7whiterose-social-science-doctoral-training-centre.ac.ukwholesem.ac.ukwhystudyamerica.ac.ukwhystudyeconomics.ac.ukwhystudyenglish.ac.ukwhystudylanguages.ac.ukwhystudymaterials.ac.uk
+wias.ac.uk
+wicn.ac.uk*&widnesandruncornsixthformcollege.ac.ukwidnesruncorn.ac.uk widnessixthformcollege.ac.ukwigan-leigh.ac.uk
+wigs.ac.ukwigstoncollege.ac.ukwilberforce.ac.ukwiltscoll.ac.ukwiltshire.ac.ukwiltshirecollege.ac.ukwimbledon.ac.ukwimbledon-school.ac.ukwimcs.ac.ukwinchester.ac.uk
wincoll.ac.ukwindsor-forest.ac.uk
winncop.ac.uk"winningstudents-scotland.ac.ukwinstanley.ac.ukwirralmet.ac.ukwiserd.ac.ukwitcmi.ac.ukwittgen-cam.ac.uk
+wivc.ac.uk
+wkac.ac.uk
wkc.ac.ukwkcic.ac.uk
wlc.ac.ukwlcbms.ac.ukwlcbs.ac.ukwlpms.ac.uk
wlu.ac.uk
wlv.ac.uk
wma.ac.ukwm-air.ac.uk
wmc.ac.uk
+wmcc.ac.ukwmcollege.ac.uk
+wmcu.ac.ukwmhea.ac.uk
+wmin.ac.uk
+wmsf.ac.ukwmucs.ac.uk
wnc.ac.uk
+wnsc.ac.ukwocns.ac.ukwoking.ac.ukwolcol.ac.ukwolseymanuscripts.ac.ukwolvcoll.ac.ukwolverhampton.ac.ukwolverhamptonline.ac.uk
won.ac.ukwoodhouse.ac.uk
+worc.ac.ukworcester.ac.ukworkandhome.ac.ukworkingclasswriting.ac.uk"workingtogethernorthwest.ac.ukworkplacementscotland.ac.uk
wortech.ac.ukworthing.ac.uk
wqe.ac.ukwqeic.ac.ukwrapp.ac.ukwrdtc.ac.ukwrdtp.ac.ukwrekincollege.ac.uk
+wren.ac.uk
wrexham.ac.ukwripa.ac.ukwritenow.ac.ukwriting-pad.ac.uk
writtle.ac.ukwrittlecollege.ac.uk"writtleuniversitycollege.ac.ukwrocah.ac.ukwroxton-college.ac.uk
wrssdtp.ac.uk
wsc.ac.ukwscinternational.ac.uk
+wsfc.ac.ukwspcr.ac.uk
wtc.ac.ukwton-acl.ac.ukwton-adulteducation.ac.uk
+wttw.ac.uk
wulfrun.ac.uk
wun.ac.ukwvlln.ac.uk
wvn.ac.uk
wvr.ac.uk
wwmpcrn.ac.ukwyams.ac.uk
+wyke.ac.ukwylln.ac.ukxaverian.ac.uk
+xavs.ac.ukxbase.ac.uk
+xmas.ac.uk
+xmat.ac.uk
xmm.ac.ukxn--colegsirgr-c5a.ac.uk
+yale.ac.ukyale-wrexham.ac.uk
ycc.ac.ukycoastco.ac.uk
+ycuc.ac.uk
ycw.ac.uk
+ydds.ac.ukydrindoddewisant.ac.ukyeovil.ac.ukyeovil-college.ac.ukyhelln.ac.uk
+yhua.ac.uk
+ymca.ac.ukymca-wales.ac.uk
+york.ac.ukyorkcollege.ac.ukyorkcollegeapps.ac.ukyork-sfc.ac.ukyorkshireuniversities.ac.ukyorksj.ac.ukyorkstonemasonrycove.ac.ukyoungfoundation.ac.uk!yourfuture-eastmidlands.ac.ukyoushare.ac.ukyporth.ac.uk
yra.ac.uk
ysj.ac.ukystrad-mynach.ac.ukysulondon.ac.ukzeplerinstitute.ac.ukzoonoses.ac.ukzoonosis.ac.ukdlib.eastview.com
+D
+CERTUM
certum.plocsp-certum.comocsp-responder.com
+
+WHATSAPP wa.mewhatsapp-plus.infowhatsapp-plus.mewhatsapp-plus.netwhatsapp.ccwhatsapp.com
whatsapp.infowhatsapp.netwhatsapp.orgwhatsapp.tvwhatsappbrand.comgraph.whatsapp.com
+adsgraph.whatsapp.net
+ads
+3
+XHAMSTER-ADS#collector.xhamster.com
+ads
+4
+ZB
+zb.app
+zb.com zb.iozb.live
+
+NAVER
naver.comnaver.me
naver.net
navercorp.com
nheos.compstatic.netclova.ainavercloudcorp.comnaverncp.com
+ncloud.comworksmobile.comnaverfincorp.comsnow.mesnowcorp.comvday.iostudiolico.comstudioncorp.comwattpad.comwebtoons.comwebtoonscorp.comband.usgrafolio.commodoo.atnaver.jpnaverads.com
naverlabs.com
plug.game
prismlive.comlinemobile.comlineshoppingseller.comline-apps-beta.comline-apps-rc.com
line-apps.comline-beta.meline-cdn.netline.biz
+nhncorp.jp
+lin.ee
line-scdn.netlinecorp.comlinefriends.com
linetv.twlinegame.jp
gcld-line.comlinemyshop.comline.melinefriends.com.twnaver.com.akadns.netnaverads.com.akadns.net
+f
+ROKUfandango.commgo.commgo-images.comravm.tvroku.comrokutime.com
+
+RUANMEI6655.comcooldock.com
+ithome.comlapin365.comruanmei.com
+saayaa.com
win7china.com
win8china.com
+-
+BDSMHUBbdsm123.xyz
bondagesm.xyz
+$
+INTEL intelintel.tvsaffrontech.comintel.afintel.agintel.aiintel.arintel.atintel.azintel.baintel.bgintel.bhintel.biintel.bointel.bsintel.byintel.caintel.ccintel.cgintel.chintel.clintel.cm
intel.comintel.crintel.cuintel.czintel.de
+ospray.org
+ospray.netclearlinux.org
+acpica.comsnap-telemetry.ioopenvinotoolkit.org
+oneapi.comintellinuxgraphics.netintellinuxgraphics.comhyperscan.iointel.ttbarefootnetworks.com
+xscale.comxn--ztsq84g.cnxeon.comvpro.netvpro.com
+vokevr.comtrustedanalytics.nettrustedanalytics.comthunderbolttechnology.netintel.acintel.dkintel.dzintel.ecintel.eeintel.egintel.esintel.euintel.fiintel.frintel.gaintel.gdintel.geintel.glintel.gmintel.grintel.gsintel.gtintel.gyintel.hkintel.hnintel.htintel.huintel.ieintel.inintel.iointel.itintel.jeintel.jointel.jpintel.keintel.laintel.lcintel.lkintel.ltintel.luintel.lyintel.maintel.mdintel.meintel.mgintel.mkintel.mnintel.mpintel.mtintel.muintel.mwintel.mxintel.myintel.ngintel.nlintel.nuintel.nzintel.paintel.peintel.phintel.plintel.pnintel.reintel.rointel.ruintel.rwintel.saintel.scintel.seintel.sgintel.siintel.skintel.snintel.srintel.stintel.svintel.sxintel.syintel.tfintel.tjintel.tlintel.tmintel.tn
+01.orgtheintelstore.comintel.aeintel.uaintel.ukintel.usintel.uyintel.uzintel.vgintel.vnintel.vuintel.wfintel.yt
+altera.comalteraforum.comalteraforums.comalteraforums.netalterauserforum.comalterauserforum.netalterauserforums.comalterauserforums.net
buyaltera.comceleron.comceleron.netcentrino.comcentrino.net
chips.comcilk.comcilk.netcloudinsights.comclusterconnection.comcoreduo.comcoreextreme.comcrosswalk-project.comcrosswalk-project.netdoceapower.com
easic.comenpirion.comexascale-tech.comexploreintel.comgordonmoore.cominsidefilms.comintc.comintel-research.net&"intel-university-collaboration.netintelamericasstore.comintelapacstore.com
intelatom.netintelcapital.comintelcapital.netintelcloudbuilders.comintelcloudfinder.comintelemeastore.cominteleventexpress.comintelforchange.comintelfreepress.comintelgo.netintelinsight.cominteliotmarketplace.com
+intell.comintellearningseries.comintellinuxwireless.netintelnervana.comintelnet.component
intelplay.comintelquark.comintelrealsense.comintelrxt.comintelsalestraining.comintelsecurity.comintelserveredge.comintelsoftwarenetwork.comintelstore.cominteltechnologyprovider.com intelvmwarecybersecurity.com
itnel.comlatencytop.comlookinside.commakebettercode.commakesenseofdata.commovidius.commovidius.netnervanasys.com
nevex.comnextgenerationcenter.com
+niosii.com
+niosii.netomekinteractive.com
+omnitek.tvopenamt.comopendroneid.orgoptanedifference.com
+pc.compentium.compentium.netpintool.compoweredbyintel.comreconinstruments.comreconjet.comresearchintel.comintel.twsensorynetworks.com
+siport.comsmart-edge.comintel.com.veintel.com.phintel.co.crintel.co.zaintel.com.myintel.com.mxintel.com.jmintel.com.hkintel.com.ecintel.com.cointel.com.brintel.com.printel.com.auintel.com.bointel.com.peintel.co.ukintel.co.krintel.co.jpintel.co.ilintel.co.idintel.com.arintel.co.aeintel.com.trintel.com.twintel.com.uyintel.com.pyintel.cn
+cnintel.com.cn
+cnintelrealsense.cn
+cn
+U
+TVER
+dogatch.jpgorin.jpscreens-lab.jptver.jp
+tver.co.jp
+
+YOMIURIchuokoron.jp
fujinkoron.jp
+hochi.newsyomilogi.comthe-japan-news.com
yomikyo.or.jp
ync.ne.jpryokoyomiuri.co.jpyomiuri-johkai.co.jpyomiuri-ryokou.co.jp#yomiuri-shimbun.pressreader.comyomiuri-systec.co.jp
yomiuri.co.jp
+R
+ARPHIC
+arphic.comifontcloud.com
arphic.com.cn
arphic.com.tw
+
+PKOPLINKpkoplink.com
+
+
+VOLCENGINEaigc-cloud.combdegnine.com
+bplslb.com
bpltm.combyte-dns.combyte-dns.netbytehouse.cnbyteinspire.cnbyteinspire.combytevdn-boe.combytevdn.comcache4ever.comcache666.comcloudendpoint.cndouyincloud.netdouyincloud.run
dycloudbk.comdycloud.runemr-volces.com
+feilian.cniccvlog.comifeilian.cnifeilian.cominspirecloud.cninspirecloud.comisealsuite.comivolces.comkfcbest.com
kych5.commultilingual-volc.comqingfuwuapi.cnqingfuwucdn.comqingfuwu.cnqingfuwu.comslbauto.com
sms18.comtoutiaopanapi.comtoutiaopan.com
+ttgslb.com
ttgtm.comvecdnlb.comvecloudgame.comvedcdnlb.comvedsalb.comveefdev.comveew-alb-cn1.comveew-alb-cn2.comveew-alb-ts.com
+vegalb.com
+vegslb.com
vegtm.net
veicplive.comve-imcloud.com
vemarsdev.comvemarsstatic.com
vemarsweb.comvertciot.com
vestack.cloudve-trafficroute.comve-trafficroute.netvolcadocean.comvolcadvc.comvolcalb.comvolcautovod.comvolcbiz.com
volcca.cn
+volcca.com
+volcca.netvolccdn1.comvolccdn2.com
+volccdn.cnvolccdn.comvolcddos001.comvolcddos.comvolcdem.comvolcdlspace.cn
+volcdn.comvolc-dns.comvolcdns.comvolc-dns.netvolc-dns.pubvolcdns.pubvolceapi.comvolceapplog.comvolcecr.comvolcecw.comvolc-embed.comvolcenginapi.comvolcenginealb.comvolcengineapi.com
volcengine.cnvolcengine.comvolcengine-dns.comvolcenginedns.comvolcengine-dns.netvolcenginedns.netvolcengine.netvolcenginepaas.com
+volces.comvolcfake.comvolcfcdnbyte.comvolcfcdn.comvolcfcdndvs.comvolcfcdnplus.comvolcfcdnrd.comvolcfcdnsc.comvolcfxgjrtm.com
volcgroup.comvolcgslb.comvolcgtm.comvolciad.com
volcimagex.cnvolcimagex.comvolcimagex.netvolcimagextest.comvolcmagicpage.com
volcmcdn1.com
volcmcdn2.com
volcmcdn3.com
volcmcdn4.comvolcmgs.comvolcmusecdn.comvolcocic.comvolcopjrtm.comvolcpartner.comvolcpartner.netvolcsiriusbd.comvolcsirius.comvolcspaceeduc.comvolctracer.com
volctrack.comvolctraffic.comvolctranscdn.com
volcvideo.comvolcvideos.comvolcvms.comvolcvod.comvolcwaf001.comvolcwaf.comwritingo-editor.comwritingo.net
ytxptd.cn
ytxptz.cnzebracdn.com
zjytxd.cn
zjytxp.cnzvip.cn
+
+DOIdoi.orgdoi.info
+,
+DUYAOSSduyaoss.comduyaossr.com
+
+
+ITUNES
itunes.coitunesradio.tw12diasderegalosdeitunes.co
wwwitunes.com!12diasdepresentesdeitunes.comitunesu.net12diasderegalosdeitunes.comitunesu.comitunesstore.coitunesradio.tvitunesradio.rio12diasderegalosdeitunes.cr12diasderegalosdeitunes.gt12diasderegalosdeitunes.hn12diasderegalosdeitunes.pe 12joursdecadeauxdeitunes.comitun.esitunbes.comituneas.comitunesradio.comitunes-radio.net
itunes.caiutunes.com12diasderegalosdeitunes.cl
+itunes.org
itunes.hk
itunes.mx
+itunes.com
+itunes.rio
itunes.usitunes12days.comitunesessentials.comitunesfestivals.comitunesiradio.comituneslatino.comituneslogin.netitunesmatch.comitunesparty.com"12diasderegalosdeitunes.com.ve"12diasderegalosdeitunes.com.niitunes.co.th"12diasderegalosdeitunes.com.hn"12diasderegalosdeitunes.com.co!12diasderegalosdeitunes.co.ve!12diasderegalosdeitunes.co.ni!12diasderegalosdeitunes.co.critunes-apple.com.akadns.netapple-itunes.cn
+cnitunes-apple.cn
+cnitunesapple.cn
+cnitunesradio.cn
+cnitunesradio.com.cn
+cn
+
+
+JINRISHICIjinrishici.com
+
+CATEGORY-SCHOLAR-!CNmedone-education.thieme.comangle.com.twbeck-online.beck.dedl.begellhouse.comdatabank.worldbank.orgdatabase.asahi.comelib.maruzen.co.jpfirstsearch.oclc.orgmuse.jhu.edut21.nikkei.co.jpt21ipau.nikkei.co.jp#ulrichsweb.serialssolutions.comwrds-www.wharton.upenn.eduimperial.insendi.comscholar.google.aescholar.google.atscholar.google.bescholar.google.bgscholar.google.cascholar.google.catscholar.google.chscholar.google.clscholar.google.cnscholar.google.co.crscholar.google.co.idscholar.google.co.ilscholar.google.co.inscholar.google.co.jpscholar.google.co.krscholar.google.co.nzscholar.google.co.thscholar.google.co.ukscholar.google.co.vescholar.google.co.zascholar.google.comscholar.google.com.arscholar.google.com.auscholar.google.com.boscholar.google.com.brscholar.google.com.coscholar.google.com.cuscholar.google.com.doscholar.google.com.ecscholar.google.com.egscholar.google.com.gtscholar.google.com.hkscholar.google.com.lyscholar.google.com.mxscholar.google.com.myscholar.google.com.nischolar.google.com.pascholar.google.com.pescholar.google.com.phscholar.google.com.pkscholar.google.com.prscholar.google.com.pyscholar.google.com.sgscholar.google.com.svscholar.google.com.trscholar.google.com.twscholar.google.com.uascholar.google.com.uyscholar.google.com.vnscholar.google.czscholar.google.descholar.google.dkscholar.google.esscholar.google.fischolar.google.frscholar.google.grscholar.google.hnscholar.google.hrscholar.google.huscholar.google.isscholar.google.itscholar.google.lischolar.google.ltscholar.google.luscholar.google.lvscholar.google.nlscholar.google.noscholar.google.plscholar.google.ptscholar.google.roscholar.google.ruscholar.google.sescholar.google.sischolar.google.sk!scholar.googleusercontent.comscholar.l.google.commitaacrjournals.org
+aclweb.orgacm.orgacs.orgagu.orgaiaa.orgaimsciences.org
+airiti.comairitilibrary.com
altmetric.comalexanderstreet.comams.org
+anatomy.tvanalytictech.comannualreviews.orgaps.orgarabidopsis.orgartstor.org
arxiv.orgascelibrary.orgasha.orgasm.orgasme.orgasminternational.orgasn-online.orgaspbjournals.orgaspenpublishing.comastm.orgberkeley.edubiologists.combiomedcentral.com
+bioone.orgbiorxiv.orgbloomsburycollections.combloomsburydesignlibrary.combmj.combooksinprint.combrepolis.net
brill.combvdinfo.com
+cairn.info
capitaliq.comcas.orgceicdata.comchemnetbase.comchoicereviews.orgcios.orgcmu.educochranelibrary.comcomputingreviews.comcsrankings.org
degruyter.comdentalhypotheses.com
ebsco.com
ebscohost.comelectrochem.orgelgaronline.comelifesciences.org
+embase.comemerald.com
+ems-ph.orgeurekaselect.com
europepmc.orgfacultyopinions.comfrontiersin.orggale.com
galegroup.com
geolytics.com
ggsrv.comglobal-sci.orgheinonline.orghighwirepress.comhindawi.comicevirtuallibrary.comsciencedirectassets.comsciencedirect.com
+sci-hub.st
+sci-hub.eeigi-global.com
igpublish.com
+sci-hub.se
+scopus.cominforms.orgioinformatics.orgiop.orgisca-speech.orgiwaponline.comjamanetwork.comjapanknowledge.comjbe-platform.comjmlr.org
jneurosci.orgjove.com
+scival.com
jstor.org
+karger.comkuke.com
+reaxys.comlexisnexis.comliteratumonline.commdpi.commedrxiv.orgmorganclaypool.com
+nature.com
naturemag.orgmendeley.comnejm.org
neurology.org
+knovel.comoecd-ilibrary.org
+optica.orgosapublishing.orgovid.com
peerj.comphysiology.orgplos.orgpnas.org
princeton.eduprojecteuclid.orgresearchgate.netroutledgehandbooks.comroyalsocietypublishing.orgrsc.orgrupress.orgsae.orgsagepub.comscholarpedia.orgscience.comscience.orgsciencemag.orgscienceonline.orgscientificamerican.com
scitation.orgsemanticscholar.orgsiam.orgsilverchair-cdn.comspiedigitallibrary.orgstatsmakemecry.com
thelancet.comtickdata.com
thieme.dethieme-connect.comthieme-connect.detotalmateria.comuchicago.eduucla.edu
umass.edu
usaco.orgwestlaw.com
wiley.comwolterskluwer.comworldscientific.comyale.edu
+zenodo.org
cambridge.org"cambridgeschoolshakespeare.comcambridgedigital.netcambridgemaths.orgimperialbusiness.schoolfundinginstitutional.com
evise.comengineeringvillage.comelsevier.ioelsevier.comelsevier-ae.comels-cdn.comclinicalkey.comcell.comwkap.nlspringernature.comspringerlink.comspringer.com
+apress.comproquest.comserialssolutions.comdoi.infodoi.orgisiknowledge.comnewisiknowledge.comwebofscience.comwebofknowledge.com
clarivate.comzlibcdn2.comzlibcdn.com
zlib.lifez-library.se
z-lib.orgsinglelogin.sitesinglelogin.resinglelogin.mesinglelogin.app
+sg1lib.org
+ma1lib.orglibsolutions.netlibsolutions.domainslibsolutions.app
+hk1lib.org
+de1lib.orgbookshome.world
bookshome.netbookshome.info
+booksc.xyz
+booksc.org
booksc.me
booksc.eu
+bookfi.netbook4you.orgb-ok.orgb-ok.globalb-ok.cc
b-ok.asiab-ok.africaart1lib.com3lib.net2lib.org1lib.tw1lib.to1lib.pl1lib.limited1lib.eu1lib.education1lib.domains1lib.cz
+1lib.cloudmitpressjournals.orgmit.netmit.edupsyccareers.comapa.org
srttu.edu
sharif.ir
+sharif.edusanjesh.org
+jtt.ir
+iranlms.ir
+edu.ir ac.irtaylorfrancis.comtaylorandfrancis.comtandfonline.com"universitypressscholarship.com
ukwhoswho.comsipriyearbook.orgoxfordwesternmusic.comoxfordscholarship.comanb.orgoxfordreference.comoxfordre.comoxfordpoliticstrove.comoxfordmusiconline.comoxfordmedicine.comoxfordbibliographies.comoed.com blackstonespoliceservice.com
oxforddnb.comoxfordclinicalpsych.comoxfordlawtrove.comoxfordartonline.comoxfordaasc.comveryshortintroductions.com
+ouplaw.comoup.com
omscr.comoxfordhandbooks.comepigeum.comamamanualofstyle.comoxfordscholarlyeditions.comoxfordfirstsource.com
vtsociety.orgtechnologyandsociety.orgsignalprocessingsociety.orgphotonicssociety.orgmtt.org
itsoc.orgieeesystemscouncil.orgieeesmc.orgieeeoes.orgieeenano.orgieeemagnetics.orgieeedeis.orgieeecss.orgieeecsc.orgieeeaps.org
ieee-uffc.org
ieee-tems.orgieee-sensors.orgieee-ras.orgieee-pes.org
ieee-pels.org
ieee-npss.orgieee-ims.orgieee-ies.orgieee-edusociety.org
ieee-ceda.orgieee-cas.org
ieee-aess.org
grss-ieee.orgemcs.orgembs.org
+comsoc.orgcomputer.orgtechstreet.com
ieee-isto.orgglobalspec.comdatasheets360.comieeeday.org
ieee-vics.orgieee-into-focus.orgieeefoundation.orgieeeusa.org
+ieeer8.org
+ieeer5.orgieeer10.orgieee.caieee-region6.orgstandardsuniversity.orgieeemce.org
ieee-ecce.org
ieee-ccnc.orgtryengineering.orgieee.tvieee.org
livenet.ac.uk
lcm.ac.ukamity.ac.uk
+amof.ac.ukamrtraining.ac.ukanaesthetistswales.ac.ukancientcyprus.ac.ukancientwisdoms.ac.uk
andover.ac.ukandovercollege.ac.ukangel.ac.ukanglia.ac.ukanglia-polytechnic.ac.ukanglia-ruskin.ac.ukangus.ac.ukanguscollege.ac.uk
+anic.ac.ukanniesland.ac.ukanniesland-fe.ac.ukantarctica.ac.ukantarctic.ac.uk
+antf.ac.ukanthropology.ac.ukanticipate.ac.ukantiquity.ac.ukantislavery.ac.ukantislaverylaw.ac.uk
aoc.ac.uk
+aocc.ac.ukaopcuk.ac.uk
+aphe.ac.uk
+apis.ac.ukaplustraining.ac.ukapollo.ac.ukapollocampus.ac.ukapollocrewe.ac.uk
apr.ac.uk
apt.ac.uk
+apts.ac.uk
apu.ac.ukapuc-scot.ac.ukaqmen.ac.uk
aquinas.ac.uk
arc.ac.uk archaeologydataservice.ac.ukarchangel.ac.ukarcher.ac.ukarchie-west.ac.uk
archive.ac.ukarchiveshub.ac.uk
archway.ac.ukarcom.ac.ukarctic.ac.ukarden.ac.ukardencampus.ac.ukardencollege.ac.ukardenu.ac.ukardenuni.ac.ukardenuniversity.ac.ukargyllcollege.ac.uk
ariadne.ac.ukaricd.ac.ukaries-dtp.ac.uk
ark.ac.ukark-genomics.ac.uk
+arma.ac.uk
arm.ac.ukarmagh.ac.ukarnold-carlton.ac.uk
+arrc.ac.uk
ars.ac.ukartdesignhull.ac.ukartifact.ac.ukartofmaking.ac.uk
+arts.ac.ukartsigns.ac.ukarts-inst-bournemouth.ac.ukartsmethodsnorthwest.ac.uk#artsresearchatnorthampton.ac.uk
aru.ac.ukarupoc.ac.ukascent.ac.ukascentis.ac.ukascorpus.ac.uk
+ascr.ac.ukascribed.ac.uk
asearch.ac.uk
+asen.ac.uk
+asfc.ac.uk
+asgp.ac.uk
ashford.ac.ukashridge.ac.ukashtoninstitute.ac.ukasiabrox.ac.uk
asiamap.ac.ukaskham.ac.ukaskham-bryan.ac.ukaskhambryan.ac.uk
ask-sam.ac.ukaspect.ac.ukaspectnetwork.ac.ukaspire.ac.ukaspiretrainingteam.ac.uk
+asra.ac.ukassap.ac.uk($associationforpoliticalthought.ac.ukastec.ac.ukasthma-allergy.ac.ukaston.ac.ukastrobiology.ac.ukastrogrid.ac.ukastronomy.ac.ukasvin.ac.uka-tap.ac.ukathens.ac.ukatlars.ac.ukatlas.ac.uk
atp.ac.ukatsip.ac.ukatthelimits.ac.uk
aua.ac.uk
aub.ac.uk
auc.ac.uk
+aucb.ac.ukaucyfrwngcymraeg.ac.uk
+aude.ac.ukaudelondon.ac.uk
aue.ac.uk
+auee.ac.ukaukcar.ac.ukaulic.ac.ukauphf.ac.uk
autosub.ac.ukavant.ac.ukavphd.ac.ukavprc.ac.ukawfdcp.ac.uk
+awlc.ac.ukaylesbury.ac.uk
ayrcoll.ac.ukayrshire.ac.uk
+b6fc.ac.uk
baa.ac.uk
+baap.ac.uk
+baas.ac.ukbabeltech.ac.ukbabraham.ac.ukbaby-me-nrt.ac.uk
+bach.ac.ukbackoncourse.ac.ukbackstage.ac.uk
+bacl.ac.ukbaclaw.ac.ukbacoll.ac.uk
+badc.ac.uk
+baec.ac.uk
+baes.ac.uk
+bafa.ac.ukbahcesehir.ac.ukbaice.ac.ukbailer.ac.uk
+bais.ac.uk
baj.ac.uk
balance.ac.ukballetwest.ac.uk
bam.ac.uk
+bams.ac.ukbanbury-bicester.ac.ukbanbury-college.ac.ukbandp.ac.ukbandpcoll.ac.ukbanff-buchan.ac.ukbangor.ac.uk"bangor-university-london.ac.ukbarking-coll.ac.ukbarkingcollege.ac.uk barkingdagenhamcollege.ac.ukbarnet.ac.ukbarnetsouthgate.ac.ukbarnfield.ac.ukbarnsley.ac.ukbarony.ac.ukbarricades.ac.ukbarrow6fc.ac.ukbarry.ac.uk
+bars.ac.ukbarton.ac.ukbarton-peveril.ac.uk
bas.ac.ukbasford-hall.ac.ukbasildon.ac.ukbasingstoke.ac.ukbasketry.ac.uk
+basp.ac.uk
+basr.ac.uk
+bath.ac.ukbathcollege.ac.uk#bathnortheastsomerset-acl.ac.uk
bathspa.ac.uk
+bavs.ac.uk
bbc.ac.uk
bbcslln.ac.uk
bbe.ac.uk
bbk.ac.ukbbs-cove.ac.ukbbsrc.ac.uk
bca.ac.uk
+bcam.ac.ukbcast.ac.uk
bcc.ac.ukbccolleges.ac.ukbcftcs.ac.uk
+bcno.ac.uk
+bcom.ac.ukbcomstudents.ac.uk
+bcot.ac.ukbctcs.ac.uk
bcu.ac.uk
+bcuc.ac.uk
bdc.ac.uk
+beaa.ac.ukbeaumontcollege.ac.ukbebirkbeck.ac.ukbecoming-a-teacher.ac.uk
+bede.ac.uk
bedford.ac.ukbedfordshire.ac.ukbedfordsixthform.ac.uk
bedsacl.ac.uk
+beds.ac.uk
+beep.ac.uk
+bees.ac.ukbehaviour4learning.ac.ukbehavioural-science.ac.uk
bei.ac.ukbeinghumanfestival.ac.ukbeinspiredatstaffs.ac.ukbeirc.ac.ukbelfastinstitute.ac.ukbelfastmet.ac.ukbelfastmetropolitan.ac.uk$ belfastmetropolitancollege.ac.ukbelfordcollege.ac.uk
+bell.ac.ukbellerbys.ac.ukbemix.ac.uk
+benc.ac.uk
bep.ac.uk
+bera.ac.ukberks-coll-ag.ac.ukberkscollag.ac.uk
+bern.ac.ukbernards.ac.uk
+besa.ac.uk
+besc.ac.ukbeside.ac.uk
+bess.ac.uk
+best.ac.uk
bestofu.ac.ukbettertogether.ac.ukbeverleycollege.ac.ukbexhillcollege.ac.ukbexley.ac.ukbexleycollege.ac.ukbeyondtext.ac.ukbfmat.ac.uk
+bftv.ac.uk
bgc.ac.uk
bgs.ac.uk
bgu.ac.uk
+bham.ac.ukbhamcity.ac.ukbhamcityuniversity.ac.uk
bhasvic.ac.ukbhpgms.ac.ukbhpms.ac.uk
+bhrc.ac.uk
+biaa.ac.uk
+biab.ac.ukbibliography.ac.uk
+bicc.ac.ukbicpa.ac.ukbicton.ac.uk
+bids.ac.uk
+biea.ac.uk
bigdata.ac.ukbigdata-cdt.ac.uk
+bigf.ac.uk bighealthactuarialdata.ac.uk
bigidea.ac.uk
+bihg.ac.uk
bil.ac.ukbilborough.ac.ukbileta.ac.uk
+bilk.ac.uk
bilston.ac.ukbimacademy.ac.uk
+bimm.ac.ukbimmstudents.ac.uk
biobank.ac.ukbiobankingsolutions.ac.ukbiobankuk.ac.uk
biochar.ac.ukbioethics.ac.ukbioethicsweb.ac.ukbiofilms.ac.ukbioinf.ac.uk
bioinfo.ac.ukbioinformatics.ac.ukbiome.ac.ukbioresearch.ac.ukbioss.ac.ukbioville.ac.uk
bioyork.ac.uk
+bips.ac.ukbirbeckstratford.ac.ukbirkbeck.ac.ukbirkbeckstratford.ac.ukbirmingham.ac.ukbirminghamcity.ac.uk"birminghamcityuniversity.ac.ukbirmingham-nottingham.ac.uk"birminghamschoolofacting.ac.uk
+bisa.ac.ukbishopaucklandcollege.ac.ukbishopb-college.ac.ukbishopburton.ac.ukbishopburtoncollege.ac.ukliscol.ac.uk
+bisi.ac.uk
+bite.ac.ukblackandasiangrad.ac.ukblackburn.ac.ukblack-country.ac.uk#blackcountryandmarchesiot.ac.ukblackpool-acl.ac.ukblackpool.ac.ukblackpoolsixth.ac.ukblake.ac.uk
blc.ac.uk
ble.ac.ukblend-ed.ac.uk
+blms.ac.ukbloomsbury.ac.ukbloomsburydtc.ac.ukbloomsburyinstitute.ac.ukbluegreencities.ac.ukbluestone.ac.uk
+blws.ac.uk
+bm14.ac.uk
+bmac.ac.uk
bmc.ac.uk
bme.ac.uk
+bmet.ac.ukbmetc.ac.uk
bms.ac.uk
+bmth.ac.ukbmth-poole-cad.ac.uk
+bmva.ac.uk
+bnac.ac.uk
bnu.ac.uk
boa.ac.ukbobble.ac.uk
+bodc.ac.ukbognor.ac.ukbognor-training.ac.uk
+bolt.ac.ukbolton.ac.ukboltoncc.ac.ukboltoncollege365.ac.ukbolton-college.ac.ukboltoncollege.ac.ukboltoncollegestem.ac.uk"bolton-community-college.ac.ukbolton-sfc.ac.ukboltonsix.ac.uk
bon.ac.uk
+bone.ac.uk
bookhad.ac.uk
bopcris.ac.ukbordersandborderlands.ac.ukborderscollege.ac.ukbosco.ac.ukbostaa.ac.ukbosta.ac.ukboston.ac.ukbostoncentre.ac.ukbourne.ac.ukbournemouth.ac.uk!bournemouthandpoole-cfe.ac.ukbournville.ac.uk
bpa.ac.uk
bpc.ac.ukbpcoll.ac.uk
+bpmf.ac.ukbppuniversity.ac.uk
bps.ac.ukbracknell.ac.uk
+brad.ac.ukbradcoll.ac.ukbradford.ac.ukbradfordcollege.ac.uk!bradforduni-recruitment.ac.ukbrain.ac.ukbrainsimagebank.ac.ukbraintree.ac.ukbrais.ac.ukbrams.ac.ukbrasshouse.ac.uk
brc.ac.ukbreakingofbritain.ac.ukbrent-acl.ac.ukbrentstart.ac.uk
bretton.ac.ukbricoltech.ac.uk
bridgce.ac.ukbridgecollege.ac.ukbridgend.ac.ukbridgendcollege.ac.ukbridgwater.ac.ukbrighton.ac.uk($brightonandsussexmedicalschool.ac.ukbrightoncity.ac.ukbrightoncitycollege.ac.ukbrightonlegacy.ac.ukbrightonmedicalschool.ac.ukbrightstudy.ac.uk
brilcom.ac.uk
+brin.ac.ukbrinsbury.ac.ukbrinsburycollege.ac.ukbrinscoll.ac.uk
+bris.ac.uk
brismes.ac.uk
bristol.ac.ukbristol-baptist.ac.uk)%bristolinstituteoflegalpractice.ac.ukbristollawschool.ac.uk#bristolroboticslaboratory.ac.ukbristoltheological.ac.ukbristoluwe.ac.ukbritac.ac.ukbritarch.ac.ukbritcollege.ac.ukbritishacademy.ac.uk"british-antarctic-survey.ac.ukbritishart.ac.ukbritishartstudies.ac.ukbritishelectionstudy.ac.uk#british-geological-survey.ac.ukbritish-history.ac.ukbritishlibrary.ac.uk%!britishludwigwittgensociety.ac.ukbritish-museum.ac.ukbritishmuseum.ac.uk$ britishwittgensteinsociety.ac.uk
brl.ac.uk
+brnc.ac.ukbroadstairscollege.ac.ukbrock.ac.uk
bromley.ac.ukbromleyadulteducation.ac.ukbromleyapps.ac.ukbronch.ac.ukbrookehouse.ac.uk
brookes.ac.ukbrooklands.ac.ukbrooks.ac.ukbrooksby.ac.ukbrooksbymelton.ac.ukbroomfield.ac.ukbroomsbarn.ac.ukbrox-coll.ac.ukbroxtowe.ac.uk
bruford.ac.ukbrunel.ac.ukbruneldigital.ac.uk bruneluniversitylondon.ac.uk
bsa.ac.uk
+bsaw.ac.ukbsbec.ac.uk
+bsdc.ac.uk
+bsfc.ac.uk
bsg.ac.uk
+bshm.ac.uk
+bsix.ac.ukbsixbrookehouse.ac.uk)%bsixbrookehousesixthformcollege.ac.ukbsixcollege.ac.uk
+bsls.ac.uk
+bsmb.ac.uk
+bsms.ac.ukbsmslegacy.ac.ukbsnti.ac.uk
bso.ac.uk
+bsom.ac.uk
bsr.ac.uk
+bsrg.ac.uk
+bssd.ac.uk
+bssh.ac.uk
bsu.ac.uk
+btas.ac.uk
btc.ac.uk
+bton.ac.ukbtrp-hyperpolarised.ac.uk
+buba.ac.uk
+bubl.ac.uk
+buck.ac.ukbuckingham.ac.ukbuckinghamshire.ac.ukbucks.ac.ukbuckscol.ac.ukbuckscollege.ac.ukbuckscollegegroup.ac.ukbucksnewuni.ac.ukbufdg.ac.ukbufvc.ac.uk
bui.ac.uk
+buic.ac.ukbuila.ac.ukbuiltenvsigns.ac.uk
burnley.ac.ukburton.ac.uk)%burtonandsouthderbyshirecollege.ac.ukburton-college.ac.uk'#burton-southderbyshirecollege.ac.uk
buryacl.ac.ukburycollege.ac.ukbusinessaccess.ac.uk#businesscove-blackcountry.ac.ukbusiness-intelligence.ac.ukbutex.ac.ukbuxtoncollege.ac.ukbwrhub.ac.uk
bws.ac.ukbyam-shaw.ac.ukbyzantine-ahrb-centre.ac.ukbyzantium.ac.uk
c4ccetl.ac.ukcaacentre.ac.ukcaadoc.ac.ukcaagcc.ac.ukcaban.ac.ukcabot.ac.ukcadarn.ac.ukcadarnskillscentre.ac.uk
cadbury.ac.ukcadburycollege.ac.ukcadcol.ac.uk
+cade.ac.ukcadise.ac.ukcadres.ac.ukcaepr.ac.ukcaerdydd.ac.ukcafmad.ac.ukcafre.ac.ukcalam.ac.ukcalat.ac.ukcalderdale-acl.ac.ukcalderdale.ac.ukcalderdaletraining.ac.ukcaledonian.ac.ukcalls.ac.ukcallywith.ac.uk
cam.ac.ukcamborne.ac.uk
cambria.ac.ukcambridge.ac.uk!cambridgeislamiccollege.ac.uk cambridgemuslimcollege.ac.ukcambridgeshireskills.ac.ukcambridge-university.ac.ukcambridgeuniversity.ac.ukcambslearning.ac.ukcamden-acl.ac.ukcamera.ac.ukcam-man-cic.ac.ukcam-pgmc.ac.ukcamphill.ac.ukcampwsbydeangcymru.ac.ukcamre.ac.ukcamri.ac.ukcamsfc.ac.uk
can.ac.ukcancerandsociety.ac.ukcandi.ac.ukcando.ac.ukcannington.ac.uk
cannock.ac.ukcanolfansgiliaucadarn.ac.uk%!canolfanyramgylcheddolcymru.ac.ukcantab.ac.uk
+cant.ac.ukcant-col.ac.ukcanterbury.ac.ukcanterburycollege.ac.ukcanterburytrust.ac.uk
+cape.ac.ukcapel.ac.ukcapitalccg.ac.ukcapitalcct.ac.ukcapitalcitycg.ac.uk"capitalisingoncreativity.ac.uk
capsule.ac.ukcarbo-biocrop.ac.ukcarbobiocrop.ac.uk
cardiff.ac.ukcardiffandvalecollege.ac.ukcardiff-institute.ac.ukcardiffmet.ac.uk'#cardiffmetropolitanuniversity.ac.ukcardinalnewman.ac.ukcardonald.ac.ukcareersinresearch.ac.ukcareerswales.ac.ukcarlisle.ac.ukcarmel.ac.ukcarmer.ac.ukcarnegie.ac.ukcarnegiecollege.ac.ukcarr-lse.ac.ukcarshalton.ac.ukcartoons.ac.ukcasaw.ac.ukcasim.ac.ukcasms.ac.ukcasnewydd.ac.uk
+cast.ac.ukcastle.ac.ukcastle-coll.ac.ukcastlecollege.ac.ukcastlereagh.ac.ukcataloguementalhealth.ac.ukcatalysis-cdt.ac.ukcathedralsgroup.ac.ukcauseway.ac.uk
+cava.ac.uk
+cavc.ac.uk
+cave.ac.ukcavendish.ac.uk
caw.ac.ukcaxton.ac.uk
+cayt.ac.ukcbcdc.ac.ukcbpar.ac.uk
+cbrl.ac.uk
cbs.ac.uk
+ccad.ac.uk
+ccap.ac.uk
ccb.ac.uk
ccc.ac.ukcccep.ac.uk
+cccr.ac.uk
+cccu.ac.uk
+ccdc.ac.ukccesd.ac.uk
+ccfe.ac.uk
cch.ac.ukcchsr.ac.uk
cci.ac.uk
ccl.ac.ukcclrc.ac.uk
ccm.ac.uk
+ccms.ac.uk
ccn.ac.uk
+ccol.ac.ukccp11.ac.ukccp13.ac.ukccp14.ac.uk
+ccp1.ac.uk
+ccp2.ac.uk
+ccp3.ac.uk
+ccp4.ac.uk
+ccp5.ac.uk
+ccp6.ac.uk
+ccp9.ac.uk
ccp.ac.uk
+ccpb.ac.ukccpbiosim.ac.ukccpem.ac.ukccpforge.ac.uk
+ccpi.ac.ukccplymouth.ac.uk
ccp-mag.ac.uk
+ccpn.ac.ukccpnc.ac.uk
+ccpp.ac.ukccppetmr.ac.uk
+ccpq.ac.uk
ccp-wsi.ac.uk
+ccri.ac.uk
ccs.ac.ukccscfe-cdt.ac.uk
+ccse.ac.uk
+ccsr.ac.uk
+ccsw.ac.uk
+ccta.ac.uk
+ccwp.ac.uk
cdd.ac.uk
cdn.ac.uk
+cdrc.ac.ukcdt-art-ai.ac.ukcdtceltic.ac.uk
cdt-cmp.ac.ukcdt-piads.ac.ukcecan.ac.ukcecos.ac.uk
+ceda.ac.ukcedar.ac.uk
cee.ac.ukceeds.ac.uk
ceelbas.ac.ukceelbas-cdt.ac.ukceesi.ac.ukcefims.ac.uk
ceg.ac.uk
ceh.ac.ukceh-nerc.ac.ukcehuk.ac.ukceh-wallingford.ac.ukcelluloidfilmfutures.ac.uk
+cem1.ac.uk
cem.ac.uk
+ceme.ac.ukcemmap.ac.uk
+cemp.ac.ukcensus.ac.ukcensus-registration.ac.ukcenta.ac.ukcentralbeds.ac.ukcentralcollege.ac.ukcentral-glasgow.ac.ukcentral-lancashire.ac.ukcentralnottingham.ac.ukcentralstmichaels.ac.ukcentralsussex.ac.uk!centreformacroeconomics.ac.uk$ centreforsustainablecities.ac.uk centreforyouthministry.ac.uk&"centreonconstitutionalchange.ac.uk
+ceoi.ac.ukcercia.ac.ukceredigion.ac.uk
+ceri.ac.ukcerlim.ac.ukceruk.ac.uk
+cetc.ac.ukcetis.ac.ukcetl4healthne.ac.ukcetl4musicne.ac.uk
+ceug.ac.ukcf.ac.uk
+cfas.ac.uk
cfldcol.ac.uk
cfs.ac.uk
cgh.ac.ukcglas.ac.ukchace.ac.ukchanging-arctic-ocean.ac.ukcharlemagne-icon.ac.ukcharlemagneseurope.ac.ukcharleslyellcentre.ac.ukchart.ac.uk$ charteredcollegeofteaching.ac.ukchase.ac.ukchasestudy.ac.uk
+chcc.ac.uk
che.ac.ukchead.ac.ukcheadlecollege.ac.ukchea-nmidlands.ac.ukcheep.ac.ukcheia.ac.ukcheib.ac.ukchelmsford.ac.ukchelmsford-college.ac.ukchelt.ac.ukcheltenham-he.ac.ukchemicalbiology.ac.ukchemreact.ac.ukchenel.ac.ukcheshire.ac.ukcheshirecolleges.ac.ukcheshirehe.ac.ukchest.ac.uk
chester.ac.ukchesterfield.ac.uk"chesterfieldcollegegroup.ac.uk
chi.ac.ukchialumni.ac.ukchichester.ac.uk chichestercollegegroup.ac.ukchicloud.ac.ukchigroup.ac.ukchilbolton.ac.ukchildrenofthe90s.ac.uk
chi-med.ac.uk"chinaculturalvisitinghub.ac.ukchinese-empires.ac.ukchipcoll.ac.ukchippcoll.ac.ukchipscohort.ac.ukchiuni.ac.ukchlamydia.ac.uk
+chlg.ac.uk
+chms.ac.ukchopinonline.ac.ukchristredeemer.ac.ukchrysaliscourses.ac.uk
chs.ac.ukchugd.ac.ukchuls.ac.ukchurchill.ac.uk
cia.ac.uk
+cias.ac.uk
cib.ac.uk
+cicl.ac.uk
+cied.ac.ukciemap.ac.ukcignet.ac.uk
+cile.ac.ukcilexlawschool.ac.uk
cimcomp.ac.ukcim-laser.ac.ukciota.ac.ukcirencester.ac.ukcirius.ac.ukcirre.ac.ukcirrus.ac.ukcisban.ac.ukcitscapes.ac.uk
+city.ac.ukcity-and-guilds.ac.ukcityandguilds.ac.uk cityandguildsartschool.ac.ukcitybathcoll.ac.uk
citycol.ac.ukcitycollege.ac.ukcitycollegebrighton.ac.uk!citycollegepeterborough.ac.ukcitycollegeplymouth.ac.ukcitycollegesoton.ac.uk
citylit.ac.ukcityofbristol.ac.ukcityofglacol.ac.ukcityofglasgowcollege.ac.ukcityoflondonbschool.ac.ukcityofoxford.ac.ukcityplym.ac.ukcity-poly.ac.uk
citysun.ac.uk"cityuniversitybirmingham.ac.uk
ciu.ac.ukcivilwarpetitions.ac.ukckeene.ac.ukclackmannan-college.ac.ukclacks.ac.uk
clacton.ac.uk
+clad.ac.ukclarendon.ac.ukclarin.ac.ukclassics.ac.ukclc-london.ac.ukclean-cooling.ac.ukclearflo.ac.ukcleveland.ac.uk
clh.ac.ukclickandgovideo.ac.ukcliffcollege.ac.ukclimatechangewales.ac.ukclimate-lab-book.ac.ukclimb.ac.ukclinicalnotes.ac.ukclinicalskillscentre.ac.uk
cln.ac.ukcloser.ac.ukcloud.ac.ukcloudworks.ac.uk
clp.ac.uk
+clrc.ac.ukclydebank.ac.uk
+cmac.ac.ukcmcnet.ac.ukcmcsm.ac.ukcmpcp.ac.uk
cms.ac.uk
cmu.ac.uk
+cnmd.ac.uk
+cnwl.ac.ukcoatbridge.ac.ukcobra.ac.uk
coccfea.ac.ukcochrane.ac.ukcochrane-airways.ac.ukcockcroft.ac.ukcocorees.ac.uk
+code.ac.ukcod-health.ac.ukcodima.ac.ukcods-nursing.ac.uk
+coem.ac.uk
cof.ac.uk
+cogc.ac.uk
col.ac.uk
+colc.ac.ukcolcc.ac.ukcolchester.ac.ukcolch-inst.ac.ukcolchsfc.ac.ukcolegaucymru.ac.ukcolegcymraeg.ac.ukcolegdewisant.ac.ukcolegelidyr.ac.ukcoleggwent.ac.ukcoleggwyrabertawe.ac.ukcolegmorgannwg.ac.ukcolegpenybont.ac.ukcoleg-powys.ac.ukcolegsirbenfro.ac.ukcolegsirgar.ac.ukcollaborateni.ac.ukcollegecareearlyed.ac.uk#collegedevelopmentnetwork.ac.ukcollege-falmouth.ac.ukcollegeofosteopaths.ac.ukcollegeofteachers.ac.ukcollegeofteaching.ac.ukcollegesni.ac.ukcollegesscotland.ac.ukcollegeswales.ac.ukcollegewebsites.ac.ukcollemergencymed.ac.ukcollyers.ac.ukcolpet.ac.ukcol-westanglia.ac.ukcombinedhonours.ac.ukcomet-study.ac.ukcomics.ac.ukcomm-coll-hackney.ac.uk
commnet.ac.ukcompetitionpolicy.ac.uk
complex.ac.ukcomputing.ac.ukconcordat.ac.ukconcordats.ac.ukcondenastcollege.ac.ukcondovercollege.ac.ukconductus.ac.ukconel.ac.ukconfetti.ac.uk
conform.ac.ukconfuciusinstitute.ac.uk
connect.ac.ukconnect-ed.ac.ukconnectedeverything.ac.uk
connell.ac.ukconservatoiresuk.ac.ukconsilience.ac.ukconsultants.ac.ukcontemp-hist-arch.ac.ukco-op.ac.ukco-opcollege.ac.ukco-operative.ac.uk!co-operative-university.ac.uk co-operativeuniversity.ac.ukcopac.ac.ukcopim.ac.ukcopior.ac.uk
+cops.ac.uk
copstat.ac.ukcordwainers.ac.uk
+core.ac.ukcornell-brown-penn.ac.ukcornwall-acl.ac.ukcornwall.ac.ukcornwall-vithform.ac.ukcorpasnagaidhlig.ac.uk
+cosc.ac.ukcoseelis.ac.ukcospop.ac.uk
cot.ac.uk
+cotr.ac.ukcoulsdon.ac.uk$ councilofhealthcarescience.ac.ukcounsellingresearch.ac.ukcountytraining.ac.uk
+coup.ac.ukcourtauld.ac.uk
cov.ac.ukcovcollege.ac.ukcove4careinkent.ac.ukcoventry.ac.ukcoventrycollege.ac.ukcoventryuniversity.ac.ukcovuni.ac.ukcovuniapps.ac.uk
+cowc.ac.ukcowork.ac.uk
cpc.ac.ukcpd25.ac.uk
cpd4phd.ac.ukcpdnoticeboard.ac.uk
+cpel.ac.uk
+cphc.ac.uk
+cpib.ac.uk
+cppe.ac.uk
+cppr.ac.uk
+cptt.ac.uk
+cral.ac.uk
+cran.ac.ukcranfield.ac.ukcrash.ac.ukcraven-college.ac.uk
crawley.ac.ukcrawley-college.ac.ukcream.ac.ukcreate.ac.ukcreativeindustries.ac.ukcreativity-cetl.ac.ukcreditlink-east.ac.ukcreds.ac.ukcresc.ac.ukcrescentlearning.ac.ukcrest.ac.ukcrestresearch.ac.uk
+crew.ac.uk
+crfr.ac.uk
crh.ac.uk
cri.ac.uk
+cric.ac.ukcricbristol.ac.ukcrichton.ac.ukcrick.ac.ukcricklade.ac.uk
critica.ac.ukcritical.ac.ukcriticalfriend.ac.ukcriticaltheology.ac.uk
crocels.ac.uk
cronton.ac.ukcrontonsixthform.ac.uk!crontonsixthformcollege.ac.ukcropdiversity.ac.ukcropyields.ac.uk
+cros.ac.ukcroydon6f.ac.ukcroydonacl.ac.uk
croydon.ac.ukcroydonhe.ac.ukcroydonsec.ac.ukcrsbi.ac.uk
+crsp.ac.ukcrucible-cetl.ac.uk
cruisse.ac.uk
csc.ac.ukc-scaipe.ac.uk
+cscd.ac.uk
+csct.ac.ukcscuk.ac.uk
+csd3.ac.uk
+csec.ac.uk
+cser.ac.ukcserge.ac.uk
csg.ac.uk
+cshl.ac.uk
csm.ac.ukcsmen.ac.ukcsn-cetl.ac.uk
+csrf.ac.uk
+csrs.ac.uk
+csrw.ac.uk
+cssd.ac.uk
csu.ac.ukcta-observatory.ac.uk
ctc.ac.ukctcrm.ac.uk
ctg.ac.uk
ctk.ac.ukctkaquinas.ac.ukctkemmanuel.ac.ukctksfc.ac.ukctkstmarys.ac.ukctr-math-phys.ac.uk
cts.ac.ukct-toolkit.ac.ukcttoolkit.ac.uk
+cubo.ac.uk
cuc.ac.ukcudah.ac.uk
cudassh.ac.ukcudos.ac.uk
cue.ac.ukcuhop.ac.ukcukas.ac.ukculham.ac.ukcullenproject.ac.uk
cultiva.ac.uk!cultureofthecountryside.ac.ukcumberlandlodge.ac.ukcumbernauld.ac.uk
cumbria.ac.ukcumbriacad.ac.ukcumbriahigherlearning.ac.uk
+cunw.ac.uk
curator.ac.ukcurdev-fe-ni.ac.ukcurioustravellers.ac.uk
+curl.ac.uk
+cusp.ac.ukcusplondon.ac.uk
+cutg.ac.uk
cuv.ac.uk
+cuwm.ac.uk
+cvcp.ac.uk
+cvma.ac.uk
cvr.ac.uk
cvs.ac.uk
cvu.ac.uk
cwa.ac.uk
cwc.ac.ukcwcfe.ac.uk
+cwrc.ac.uk
cws.ac.ukcyber-college.ac.ukcybersecurity-cdt.ac.ukcybersecuritycdt.ac.ukcyclops-network.ac.uk
cym.ac.ukcymdeithasddysgedig.ac.uk"cymdeithasddysgedigcymru.ac.uk
cymoedd.ac.ukcymru.ac.uk&"cynghrairstrategolaberbangor.ac.ukdafni.ac.ukdance-archives.ac.ukdaresbury.ac.ukdarlington.ac.uk%!darlingtonlearningandskills.ac.ukdartington.ac.ukdarts.ac.ukdarwin.ac.ukdarwinproject.ac.uk
+dasg.ac.ukdash-1.ac.ukdassh.ac.uk
+data.ac.ukdata-archive.ac.ukdatafuturesalphapilot.ac.ukdatagrid.ac.ukdata-intensive-cdt.ac.ukdata-service.ac.ukdatashield.ac.uk
datasig.ac.uk
davcoll.ac.uk%!daventrylearningpartnership.ac.ukdavidlewis.ac.uk
dca.ac.uk
dcc.ac.uk
dcd.ac.uk
+dcdp.ac.uk
dcg.ac.uk
dct.ac.uk
ddi.ac.ukdeafandcreative.ac.ukdeafheritagenetwork.ac.ukdeansofscience.ac.ukdearne-coll.ac.uk
+deas.ac.uk
+debs.ac.uk
dec.ac.uk
decymru.ac.uk
+deed.ac.uk
deeping.ac.uk
deeside.ac.ukdefac.ac.ukdefenceacademy.ac.ukdemand.ac.ukdemarco-archive.ac.ukdementianet.ac.uk#dementiaresearchinstitute.ac.ukde-montfort.ac.ukdemos.ac.uk
den.ac.ukdentalschoolscouncil.ac.ukdentpostgradwales.ac.ukderby.ac.ukderbyals.ac.ukderby-college.ac.ukderbycollege.ac.ukderbyonline.ac.ukderbyshire.ac.ukderweb.ac.ukderwen.ac.ukderwencollege.ac.ukderwentside.ac.ukdevelopebp.ac.ukdevolution.ac.ukdewcol.ac.ukdewsbury.ac.uk
+dghe.ac.uk
dhi.ac.ukdiabetes-healthnet.ac.ukdiamm.ac.uk
diamond.ac.ukdiasporas.ac.ukdickwhiteacademy.ac.ukdidet.ac.ukdietandhealth.ac.uk
digimap.ac.ukdigitalcreativity.ac.ukdigitallifespan.ac.ukdigitalscholarship.ac.ukdigitalsocialresearch.ac.uk digitaltransformations.ac.ukdigitisingscotland.ac.uk
digitop.ac.ukdigitrans.ac.ukdigitwin.ac.ukdilstoncollege.ac.ukdippam.ac.ukdirac.ac.ukdisability.ac.ukdisabilitytoolkits.ac.ukdiscover.ac.ukdiscovereconomics.ac.ukdiscovery.ac.uk!discoveryinvestigations.ac.uk
disinhe.ac.ukdistillate.ac.ukdistinct.ac.ukdiversityuk.ac.uk
+dl4d.ac.ukdl.ac.uk
+dlhe.ac.uk
dls.ac.uk
dml.ac.uk
dmu.ac.uk
+dmuk.ac.uk
dna.ac.ukdna-network.ac.ukdncolleges.ac.ukdocusend.ac.ukdogslife.ac.ukdoitpoms.ac.ukdomesticabuserisk.ac.uk
don.ac.ukdoncaster.ac.ukdorset-acl.ac.ukdorset-al.ac.ukdotrural.ac.ukdovercollege.ac.ukdovertechnicalcollege.ac.uk
+dpoc.ac.uk
dpscitt.ac.ukdragonip.ac.ukdrakemarineinstitute.ac.ukdrawnevidence.ac.ukdream-cdt.ac.ukdreeam.ac.uk
drg.ac.uk
dri.ac.uk
drindod.ac.uk
+drns.ac.ukdscis.ac.uk
+dses.ac.uk
+dsfc.ac.uk
dsl.ac.uk
dst-dtc.ac.uk
dsw.ac.ukdtc-online.ac.ukdt-toolkit.ac.ukducere.ac.ukduchy.ac.ukdudley.ac.ukdudleycol.ac.ukdudleylearners.ac.ukdudleylearning.ac.ukdumgal.ac.uk
dun.ac.uk
+dund.ac.ukdundee.ac.ukdundeeandangus.ac.ukdundeeandanguscollege.ac.ukdundeecoll.ac.ukdundeecollege.ac.ukdundee-tech.ac.uk
+dune.ac.ukdunstable.ac.uk!dunstaffnage-marine-lab.ac.uk
dur.ac.ukdurham.ac.ukdurhampriory.ac.ukdutch.ac.uk
dwl.ac.ukdynamicdialects.ac.uk
+e3an.ac.ukeaifhe.ac.ukealingcoll.ac.ukeandc-sirgar.ac.uk
earlham.ac.ukearlhaminstitute.ac.ukearlyenglishlaws.ac.uk%!earlymoderndressandtextiles.ac.ukearlyphonography.ac.ukearthsciencescotland.ac.uk
+ease.ac.ukeaseit-eng.ac.ukeast15.ac.ukeast-anglia.ac.ukeastantrim-institute.ac.ukeastberks.ac.ukeastchem.ac.ukeastcoast.ac.ukeastdevon.ac.ukeastdurham.ac.ukeastendcbc.ac.ukeasternarc.ac.ukeastkent.ac.ukeastkentcollege.ac.ukeastleigh.ac.ukeast-london.ac.ukeastmallingresearch.ac.ukeastmidlandscetls.ac.ukeastnorfolk.ac.ukeaston.ac.ukeaston-college.ac.ukeastonotley.ac.ukeastridingadultlearn.ac.ukeastridingcollege.ac.ukeastscotbiodtp.ac.ukeastsurrey.ac.ukeastsurreycollege.ac.ukeast-yorks-coll.ac.ukeatthatfrog.ac.uk
+ebam.ac.uk
ebi.ac.ukebnet.ac.ukebrahimcollege.ac.uk
+ebrc.ac.uk
ebs.ac.uk
+ebsl.ac.ukebslondon.ac.uke-c-a.ac.uk
eca.ac.ukecampus-leeds.ac.uk
ecc.ac.uk
+ecci.ac.ukecclescollege.ac.uk
+ecdc.ac.ukeceta.ac.uk
eclipse.ac.uk
+eclw.ac.uk
ecn.ac.ukeconomicfutures.ac.ukeconomics.ac.ukeconomicsnetwork.ac.uk
+ecos.ac.ukecosystemservices.ac.uk
+ecsa.ac.uk
ecu.ac.uk
ecw.ac.uk
ed6.ac.uked.ac.uk
+edam.ac.uk
edc.ac.uk
ed-coll.ac.ukedcoll.ac.ukedgehill.ac.ukedge-hill-college.ac.ukedgehilluniversity.ac.ukedgehotelschool.ac.ukedhcc.ac.ukedifhe.ac.ukedina.ac.ukedinburgh.ac.ukedinburghcollege.ac.ukedinburghstelford.ac.uk"edinburghstelfordcollege.ac.ukedinburghtc.ac.ukedlab.ac.uk
edshare.ac.ukedtech.ac.uk educationlondonconnect.ac.uk educationpartnershipne.ac.uk'#educationpartnershipnortheast.ac.uk
eduroam.ac.uk
eduserv.ac.ukedward-greene.ac.ukedwardllwyd.ac.uk
+eecm.ac.uk
eep.ac.uk
+eera.ac.uk
ees.ac.uk
+eevl.ac.ukeevlextra.ac.ukeevlxtra.ac.uk
efc.ac.uk
efetedc.ac.ukefficiencyexchange.ac.uk
efs.ac.ukefutures.ac.ukegyptrevolution2011.ac.ukehche.ac.uke-htpx.ac.uk
ehu.ac.ukeicdt.ac.uk
+eidc.ac.ukeinfrastructureforum.ac.ukeinfrastructuresouth.ac.uk
+eira.ac.uk
+eius.ac.ukekcgroup.ac.ukeklearning.ac.ukelanguages.ac.ukelatt.ac.uk
elc.ac.ukelder-cove.ac.ukelearning.ac.ukelearningnortheast.ac.uke-learningnorthwest.ac.uke-learningresearch.ac.ukelearningresearch.ac.ukelectricalmachineshub.ac.uk
+elib.ac.ukelihe.ac.ukelite.ac.uke-liv.ac.ukelixir.ac.uk!elizabethmontagunetwork.ac.ukelliotthudsoncollege.ac.uk
elmwood.ac.uk
+elne.ac.uk
elp.ac.ukelrah.ac.uk
+elrc.ac.uk
+elsa.ac.ukelsa-project.ac.uk
elt.ac.uk
+elum.ac.ukemahsn.ac.ukemail-bimm.ac.uk
+emas.ac.ukembl-ebi.ac.uk
+embs.ac.uk
emc.ac.uk
eme.ac.uk
+emec.ac.uk
emedlab.ac.uke-merlin.ac.ukemgrad.ac.ukemidsvikings.ac.uk
+emol.ac.ukemo-pain.ac.ukemphasis.ac.uk
emr.ac.uk
ems.ac.ukem-toolkit.ac.ukemttp.ac.uk
+emua.ac.uk
emwprep.ac.ukenbit.ac.uken-compass.ac.ukenergy2050.ac.ukenergybiographies.ac.ukenergyforchange.ac.ukenergystorage-cdt.ac.ukengageinresearch.ac.ukmailtalk.ac.uk
engcetl.ac.ukengineering.ac.uk!engineeringnonlinearity.ac.ukengineeringsigns.ac.ukenglishassociation.ac.ukengsc.ac.ukenhancementthemes.ac.ukenmat.ac.ukenorf.ac.uk
+enos.ac.uk
+ensa.ac.ukensemble.ac.ukensemblepurchasing.ac.ukensfc.ac.ukenterprise.ac.ukenterprisebydesign.ac.ukenterpriseresearch.ac.uk
enveast.ac.ukenvironment-health.ac.uk
epc.ac.uk
+epic.ac.ukepics.ac.uk
epicure.ac.uk
+epne.ac.ukeportfolios.ac.uk
+eppi.ac.ukepping-forest.ac.ukepress.ac.uk
eps.ac.uk
epsilon.ac.ukepsrc.ac.ukepsrc-centre-lime.ac.uk+'epsrc-cim-macromoleculartherapies.ac.ukequal.ac.ukequalityhigher.ac.uk
equator.ac.ukequistudy.ac.uk
era.ac.uk
erasmus.ac.uk
erbecdt.ac.uk
erc.ac.uk
+eres.ac.ukeresearchsouth.ac.uk
eri.ac.uke-rihs.ac.ukerini.ac.uk
+ernw.ac.uk
erp.ac.uk
+erpe.ac.ukesala.ac.uk
esc.ac.ukescalate.ac.ukescapestudios.ac.uk
+escg.ac.uke-science.ac.ukescience.ac.ukescience-etf.ac.ukescoe.ac.ukescp-eap.ac.uke-scrf.ac.uk
+esdi.ac.uk
+esds.ac.uk
ese.ac.ukeselondon.ac.uk
esg.ac.ukeshcru.ac.ukesher.ac.uk
esi.ac.uk
+esim.ac.ukesiss.ac.uk
+esnw.ac.uk
eso.ac.uk
+espa.ac.ukespa-headlines.ac.ukesp-scotland.ac.uk
+esrc.ac.ukesrcfestival.ac.ukesrcmanchesterfest.ac.ukesrcsocietytoday.ac.ukessexacl.ac.ukessex.ac.uke-studio.ac.uk
etc.ac.uketcfhe.ac.uketextbooks.ac.ukethicsguidebook.ac.ukethnicity.ac.ukethos.ac.uketp-scotland.ac.uk
ets.ac.uk
+eued.ac.ukeurobrox.ac.uk
euromod.ac.ukeuropeunit.ac.uk
eva.ac.uk everymantheatrearchive.ac.uk
evesham.ac.ukevolve.ac.uk
+ewlc.ac.uk
+ewrs.ac.uk
+ewva.ac.ukex.ac.uk
exam-ta.ac.ukexcellence.ac.ukexcellencelondon.ac.ukexchange.ac.ukexe-coll.ac.ukexemplashe.ac.ukexeter.ac.ukexetercollege.ac.ukexeterdeafacademy.ac.uk!exetermathematicsschool.ac.ukexetermrcsdf.ac.ukexeterms.ac.ukexondomesday.ac.ukexperienceworks.ac.uk
experts.ac.uk
+faam.ac.ukfablabplymouth.ac.ukface3d.ac.uk
+face.ac.ukfacilities.ac.uk
faclair.ac.ukfacoccmed.ac.ukfailte.ac.ukfairbairn.ac.ukfairfieldfarmcollege.ac.uk"fairfieldopportunityfarm.ac.ukfalkirkcollege.ac.ukfalmouth.ac.ukfalmouthexeterplus.ac.ukfalmouthmarineschool.ac.ukfamilylifestudy.ac.ukfamous.ac.uk
faraday.ac.uk
fareham.ac.ukfarmington.ac.ukfarmplus.ac.ukfarnborough.ac.ukfarnboroughcollege.ac.ukfarnboroughsfc2.ac.ukfarnboroughsfc.ac.uk
farn-ct.ac.uk
farnham.ac.uk"fashioningtheearlymodern.ac.ukfashionretailacademy.ac.ukfashionretail.ac.uk"fashiontechnologyacademy.ac.uk
fastech.ac.ukfault-analysis-group.ac.uk
fba.ac.ukf-boro-sfc.ac.uk
fca.ac.uk
+fcot.ac.uk
+fcrt.ac.uk
fdf.ac.uk
+fdtl.ac.ukfederalschool.ac.ukfederalsurrey.ac.uk
+fefc.ac.ukfehesorp.ac.uk
+felp.ac.ukfeminizingpolitics.ac.ukfermanaghcoll.ac.ukfetalmedicine.ac.uk
ffc.ac.uk
+fflm.ac.uk
+fgls.ac.ukfibre-diffraction.ac.uk
+ficm.ac.uk
+fife.ac.ukfifeglen.ac.ukfilmandsound.ac.ukfilt-coll.ac.ukfilton.ac.ukfilton-college.ac.ukfind-cdt.ac.ukfinder.ac.uk
fineart.ac.uk
finesse.ac.uk
+fipc.ac.ukfircroft.ac.ukfireflyresearch.ac.ukfireservicecollege.ac.ukfirstchancesfife.ac.ukfiscalstudies.ac.uk
+fkse.ac.ukflame.ac.ukmagnacartacollege.ac.ukfluids.ac.uk
fmc.ac.uk
+fmdv.ac.uk
fmg.ac.uk
+fmlm.ac.ukfocus.ac.ukfolkestonecollege.ac.uk
fom.ac.ukfoodchain.ac.ukfoodsecurity.ac.ukforestsixth.ac.ukforestyouth.ac.ukformission.ac.uk
forster.ac.ukforte.ac.ukforthvalley.ac.ukfortitude-group.ac.uk
fortune.ac.ukfortunecentre.ac.ukfoundationyear.ac.ukfoxesacademy.ac.uk
fpm.ac.uk
fra.ac.ukfrancistowne.ac.ukfranklin.ac.ukfreeman-centre.ac.ukfreescotcoll.ac.ukfreezeframe.ac.ukfrenchhistorysociety.ac.ukfrontier.ac.ukfrontiersofoncology.ac.uk
fsb.ac.uk
+fsem.ac.ukfslra.ac.uk
fst.ac.ukfuellearning.ac.uk
fulcrum.ac.uk
furness.ac.uk
+fuse.ac.ukfusion.ac.ukfusion-cdt.ac.ukfuturearmedforces.ac.ukfuturecat.ac.ukfutureme.ac.ukfuture-media.ac.ukfuturemedia.ac.uk"future-reserves-research.ac.ukfuturetrack.ac.ukfuturevehicles.ac.ukfutureworks.ac.uk"fv-distribution-database.ac.ukfxplus.ac.ukgaelicstoryatgu.ac.uk
+gaia.ac.ukgainsborough.ac.uk
+galt.ac.ukgameplan.ac.ukgashe.ac.uk
+gate.ac.ukgateshead.ac.ukgatesheadcollege.ac.uk!gatesheadlearningskills.ac.uk
gateway.ac.uk
+gbmc.ac.ukgbmolluscatypes.ac.ukgbs3trial.ac.uk
gca.ac.ukgcadt.ac.uk
+gcal.ac.uk
+gcbp.ac.uk
gcc.ac.ukgceducationandskills.ac.uk
+gcft.ac.ukgcft-gla.ac.uk
gcg.ac.uk
gci.ac.uk
+gclg.ac.uk
+gcns.ac.uk
+gcrb.ac.uk
gcs.ac.uk
+gcsp.ac.uk
gcu.ac.ukgculondon.ac.uk
gda.ac.ukgeasontraining.ac.ukgecko.ac.ukgeiriadur.ac.uk
gem.ac.uk
+gen2.ac.ukgenerationpup.ac.uk
genesis.ac.uk
genesys.ac.ukgenet.ac.ukgenomeanalysiscentre.ac.ukgenomicsnetwork.ac.ukgeohazard.ac.ukgeorge-monoux.ac.ukgeoxwalk.ac.uk
+gerc.ac.ukgesource.ac.ukgetamoveon.ac.uk
+ghil.ac.ukgift-surg.ac.ukgimsig.ac.uk
gla.ac.ukglaadh.ac.ukgladstudy.ac.uk
+glam.ac.ukglammies.ac.ukglamorgan.ac.ukglan-hafren.ac.uk
glasgow.ac.ukglasgow-caledonian.ac.ukglasgowclyde.ac.ukglasgowcolleges.ac.ukglasgowkelvin.ac.ukglasgowmedhums.ac.ukglasgowmet.ac.ukglasgow-nautical.ac.ukglasgowschoolofart.ac.ukglasgowsciencecentre.ac.uk$ glasgowsequencingsolutions.ac.ukglen-coll.ac.ukglenfife.ac.ukglenrothes-college.ac.uk
+glhl.ac.uk
+gllm.ac.ukglobalbanking.ac.uk&"globalbusinessofforcedlabour.ac.ukglobalshakespeare.ac.ukglobolakes.ac.uk
gloknos.ac.uk
+glos.ac.uk
gloscat.ac.uk
gloscol.ac.ukgloscolgov.ac.ukgloscollege.ac.ukglosnexus.ac.ukgloucestershire.ac.uk gloucestershirecollege.ac.uk!gloucestershirecolleges.ac.uk"gloucestershirelaunchpad.ac.ukgloucs.ac.ukglovitas.ac.uk
+glow.ac.ukglsms.ac.uk
+gltc.ac.uk
glyndwr.ac.uk&"glyndwrlondonholdingslimited.ac.uk3/glyndwrlondonschoolofmanagementandscience.ac.uk
gmc.ac.uk
+gmcg.ac.ukgmcyberfoundry.ac.ukgmhigher.ac.ukgmims.ac.uk
+gmms.ac.uk
+gmsa.ac.ukgnatwork.ac.ukgo4uni.ac.ukgoals.ac.ukgodalming.ac.ukgoetec.ac.ukgofit.ac.ukgogeo.ac.ukgohigherwestyorks.ac.uk
+gold.ac.ukgoldproject.ac.ukgoldsmiths.ac.ukgoodenough.ac.ukgoole-college.ac.ukgorseinon.ac.ukgorseinon-bizcentre.ac.uk
+gosc.ac.uk
gosport.ac.uk#gosportmarineskillscentre.ac.uk
gowales.ac.ukgower.ac.ukgowercollege.ac.ukgowercollegeswansea.ac.ukgpkss.ac.ukgpucomputing.ac.ukgrace.ac.ukgrad2teach.ac.ukgradcareers-scotland.ac.ukgradschools.ac.uk graduate-careers-wales.ac.ukgraduatecareers-wales.ac.ukgraduateconnection.ac.ukgraduate-jobs.ac.uk graduate-jobs-in-wales.ac.ukgraduateoutcomes.ac.ukgraduateswales.ac.ukgraduatewales.ac.ukgranduniondtp.ac.ukgrantham.ac.ukgrantleyhall.ac.ukgraphenecentre.ac.uk
+gray.ac.uk
graylab.ac.uk
+grcb.ac.uk
gre.ac.ukgreatapedictionary.ac.uk,(greatermanchesterbiobankingnetwork.ac.uk#greatermanchestercolleges.ac.uk51greatermanchesterinternationalmedicalschool.ac.uk($greatermanchestermedicalschool.ac.ukgreatwesternresearch.ac.ukgreenbankcollege.ac.ukgreenhead.ac.ukgreenhill.ac.ukgreenwich.ac.ukgreenwich-college.ac.ukgreenwichdev.ac.ukgregynog.ac.uk
gresham.ac.ukgresham-college.ac.ukgreshamcollege.ac.uk
+grid.ac.ukgridpp.ac.ukgrids.ac.ukgrid-support.ac.uk
grimsby.ac.ukgrimsbytec.ac.ukgrows.ac.ukgrpeng.ac.uk
gsa.ac.uk
+gsmd.ac.ukgsmlondon.ac.uk
+gssw.ac.uk
gtc.ac.uk
+gttr.ac.ukgtyarmouthcoll.ac.ukguildford.ac.ukguildhallschool.ac.uk
guildhe.ac.uk
gw4.ac.ukgw4biomed.ac.uk
gw4-cat.ac.ukgwent.ac.ukgw-partnership.ac.uk
gwr.ac.uk
gyc.ac.uk
+hace.ac.uk
hackney.ac.ukhadlow.ac.ukhadlowgroup.ac.uk
hae-acl.ac.ukhairdressing.ac.uk
halcyon.ac.ukhalesowen.ac.ukhalton-acl.ac.ukhaltoncollege.ac.ukhamec.ac.ukhampsteadscience.ac.ukhandsworth.ac.ukhannah.ac.ukharingey6.ac.ukharlaxton.ac.uk
harlech.ac.ukharlow-college.ac.ukharper.ac.ukharper-adams.ac.ukharperadams.ac.ukharperkeelevets.ac.ukharperkeelevetschool.ac.ukharrogate.ac.ukharrogate-college.ac.ukharrow.ac.ukhartlepoolacademy.ac.ukhartlepoolacl.ac.ukhartlepoolfe.ac.ukhartlepoolsixth.ac.ukhartpury.ac.ukhartpurycollege.ac.ukhartpuryuni.ac.ukhartpuryuniversity.ac.uk"hartpuryuniversitycentre.ac.uk
hartree.ac.ukhastings.ac.ukhastingsonline.ac.uk
hau.ac.ukhavant.ac.ukhavantandsouthdowns.ac.ukhavantsouthdowns.ac.ukhavering.ac.ukhavering-college.ac.ukhavering-sfc.ac.ukhayle.ac.ukhaywardsheath.ac.uk
hbs.ac.uk
+hbvc.ac.uk
hca.ac.ukhcctraining.ac.ukhcebusiness.ac.uk
+hcfe.ac.ukhclrg.ac.uk
+hcri.ac.uk
hct.ac.uk
+hcuc.ac.ukhdruk.ac.ukheacademy.ac.ukheadline.ac.ukheadteachers.ac.ukhealth.ac.ukhealthcare.ac.ukhealthcarescience.ac.uk healthcaretechnologies.ac.ukhealthdataresearchuk.ac.ukhealtheducation.ac.ukhealthsciencescotland.ac.ukhealthyuniversities.ac.uk
+hear.ac.ukheart.ac.uk&"heartofworcestershirecollege.ac.uk($heartofworcestershirelawschool.ac.uk
+heat.ac.ukheated.ac.ukhebcon.ac.ukhebetterregulation.ac.ukhecail.ac.ukhecbiosim.ac.uk#hecollegeadvisersinlondon.ac.ukhecsu.ac.ukhector.ac.ukhedata.ac.uk
+hedd.ac.uk
+hedg.ac.ukhediip.ac.ukhedip.ac.ukheefs.ac.uk
+heeg.ac.uk
+heep.ac.ukheesf.ac.ukheestates.ac.ukhefce.ac.ukhefcw.ac.ukhefestis.ac.ukhegovernance.ac.uk
+heia.ac.ukheidi.ac.ukheids.ac.ukheilbronn.ac.ukheinlondon.ac.ukhei-worcester.ac.uk
+helf.ac.ukhellofuture.ac.ukheloa.ac.ukhendon.ac.ukhenley.ac.ukhenleycol.ac.ukhenleycollege.ac.ukhenley-cov.ac.ukhenleymc.ac.ukhenryfordcollege.ac.ukhenry-moore.ac.ukhensa.ac.ukhenshaws.ac.uk
+hepa.ac.uk
hep.ac.ukhepcw.ac.uk
+hepi.ac.uk
+hepp.ac.ukhe-purchasing.ac.uk
+hera.ac.ukherbi.ac.uk
+herc.ac.ukhereford.ac.ukhereford-art-col.ac.ukhereford-tech.ac.ukhereward.ac.ukheriot-watt.ac.ukheritageconsortium.ac.ukheritagequay.ac.ukheritagescience.ac.ukheron.ac.ukhertfordshire.ac.uk%!hertfordshirebusinessschool.ac.uk
hertreg.ac.ukherts.ac.ukherts-e-learn.ac.ukherts-he.ac.ukherts-regional.ac.uk
+hesa.ac.ukhesharedlegal.ac.ukhesin.ac.ukhespa.ac.ukhestem.ac.ukheswbusnet.ac.uk
hew.ac.ukhewit.ac.ukheythrop.ac.ukheythropcollege.ac.ukhfaes.ac.ukhfals.ac.uk
+hfma.ac.uk
hhc.ac.ukhiddenhistorieswwi.ac.ukhighbury.ac.ukhighburygroup.ac.ukhigher-education.ac.ukhighfieldscentre.ac.ukhighlands.ac.ukhighlands-jersey.ac.ukhighpeak.ac.ukhilderstone.ac.ukhillcroft.ac.ukhillsroad.ac.ukhiperduct.ac.ukhison.ac.uk!historicalmusicpedagogy.ac.ukhistoricalpageants.ac.ukhistoricbooks.ac.uk
history.ac.ukhistorysubjectcentre.ac.ukhistory-uk.ac.ukhistparl.ac.ukhkvets.ac.ukhlcollege.ac.uk
hlg.ac.ukhlnsc.ac.uk
hogarth.ac.ukholmelacy.ac.ukholts.ac.ukholycross.ac.ukhomefieldcollege.ac.ukhomenetworks.ac.ukhoney-monitoring.ac.uk
+hope.ac.uk
hopwood.ac.uk
horizon.ac.ukhorizonscollege.ac.ukhorniman.ac.ukhotbed.ac.ukhoughall.ac.ukhousefraserarchive.ac.ukhousingevidence.ac.ukhowcollege.ac.ukhpc-diversity.ac.uk
+hpci.ac.ukhpc-midlands.ac.ukhpc-midlands-plus.ac.ukhpc-sc.ac.ukhpc-uk.ac.uk
+hpcx.ac.ukhpoolsfc.ac.ukhrbdt.ac.uk
hrc.ac.uk
hri.ac.ukhrionline.ac.ukhrsfc.ac.uk
+hsad.ac.uklipidomics.ac.uk
+hsdp.ac.uk
hss.ac.uk
hta.ac.ukht.ac.uk
htp.ac.uk
hts.ac.ukhuawen.ac.uk#hubbard-theory-consortium.ac.uk
hud.ac.ukhuddcoll.ac.ukhuddersfield.ac.ukhuddnewcoll.ac.ukhughbaird.ac.ukhuish.ac.uk
hullacl.ac.uk
+hull.ac.ukhull-college.ac.ukhullschoolartdesign.ac.ukhulltraining.ac.ukhumanities.ac.uk!humanities-human-rights.ac.ukhumanmind.ac.ukhumanrights-lse.ac.ukhumber.ac.ukhumbermaritimecollege.ac.ukhumbox.ac.ukhumbug.ac.ukhumbul.ac.ukhungerford.ac.ukhuntingdon.ac.ukhutton.ac.ukhw.ac.uk
+hwlc.ac.ukhwlln.ac.ukhybrid-group.ac.uk
+hyde.ac.ukhydeclarendon.ac.ukhydronationscholars.ac.uk
+hyms.ac.uk
hyp.ac.ukhysbys.ac.uk
+iaac.ac.uk
+iagp.ac.uk
iah.ac.uk
+ials.ac.ukial-wrecsam.ac.ukiapetus2.ac.uk
iapetus.ac.uk
iat.ac.ukibd-boost.ac.uk
+ibis.ac.uk
+ibss.ac.ukibuild.ac.uk
+icac.ac.ukic.ac.ukicair.ac.uk
+icca.ac.ukiccliverpool.ac.uk
ice-cse.ac.uk
+iced.ac.uki-centralwm.ac.uk
+icif.ac.uk
+icit.ac.uk
+icls.ac.uk
+icma.ac.ukicmacentre.ac.uk
+icmp.ac.ukiconcollege.ac.ukiconnect.ac.uk
icr.ac.uk
+icsa.ac.uk
ics.ac.uk
+icsl.ac.ukictheatre.ac.ukidcore.ac.uk
idealse.ac.uk
+idgo.ac.ukidras.ac.uk
ids.ac.uk
ies.ac.uk
+iesr.ac.ukiexchange.ac.uk
ife.ac.uk
ifl.ac.uk
ifm.ac.uk
ifr.ac.uk
ifs.ac.ukifslearning.ac.ukifstal.ac.uk
+iger.ac.uk
+igmm.ac.ukignite.ac.ukigsqt.ac.uk
+ihgs.ac.ukihighbury.ac.uk
ihrinfo.ac.uk
iis.ac.uki-lab.ac.uk
+ilab.ac.ukilex-tutorial.ac.uk
ilt.ac.ukilthe.ac.uk image-guided-therapies.ac.ukimageworkshop.ac.ukimems.ac.uk
+imet.ac.ukimlab.ac.ukimpact.ac.ukimpact-hei.ac.ukimpala.ac.ukimperial.ac.uk
imr-cdt.ac.ukimrci.ac.uk
imt.ac.ukinclusion.ac.ukindeedproject.ac.uk
infogov.ac.ukinform25.ac.ukinformation-systems.ac.ukinformedchoices.ac.ukinfosciscotland.ac.ukinitiate.ac.uk
innogen.ac.ukinnovation.ac.ukinnovation-exchange.ac.ukinnovations.ac.uk inquisitionspostmortem.ac.ukinspire-dtp.ac.ukinspiretrust.ac.uk&"institute-of-cancer-research.ac.ukinstituteofcoding.ac.uk instituteofcounselling.ac.uk"institutionofelectronics.ac.uk#inst-of-oceanographic-sci.ac.uk
intarch.ac.ukintegrativebiology.ac.ukinteractcbt.ac.ukinteractive-e.ac.ukinteractiveeducation.ac.ukinternational.ac.uk$ internationalcollegedundee.ac.uk$ international-house-london.ac.ukinternationalstaff.ac.ukinternationalstudies.ac.uk-)international-union-crystallography.ac.ukinto-newcastle.ac.ukintute.ac.uk
ioe.ac.uk
ion.ac.uk
ios.ac.uk
ioz.ac.ukipcc-wg3.ac.uk
+ipem.ac.ukipforesightforum.ac.uk
+ipgc.ac.uk
ipi.ac.uk
+ipv6.ac.ukirc-sphere.ac.uk
+ired.ac.ukirese.ac.uk
+iris.ac.ukiri-scotland.ac.ukiriss.ac.ukirscl.ac.uk
isc.ac.uk
+iscp.ac.uk
+isic.ac.uk
+isis.ac.ukislam-anatolia.ac.ukislamicacademy.ac.ukislamic-college.ac.ukislamicstudiesnetwork.ac.uk
+isle.ac.uk
+isli.ac.ukislington-acl.ac.uk
ism.ac.uk
+ismg.ac.ukispan.ac.ukistar.ac.uk
+isvc.ac.ukitchen.ac.ukiteach.ac.uk
+itec.ac.ukitlearningspace-scot.ac.ukitnow.ac.uk
+itol.ac.ukitrace.ac.ukitutility.ac.uk
+iucr.ac.ukiwcollege.ac.ukiwcommunitylearning.ac.uk
iwightc.ac.uk
iwm.ac.uk
+jade.ac.ukjamesbondstudies.ac.ukjaneausten.ac.ukjanet.ac.ukjanet-brokerage.ac.ukjanetbrokerage.ac.ukjanetcollaborate.ac.ukjasmin.ac.ukjas-mine.ac.uk
jca.ac.uk
jcc.ac.ukjcmaxwell.ac.ukjcpsg.ac.uk
jec.ac.ukjenner.ac.uk
+jevc.ac.ukjewel-esk.ac.ukjga-group.ac.uk
jic.ac.uk
+jisc.ac.ukjiscadvance.ac.ukjisc-collections.ac.ukjisccollections.ac.ukjisc-content.ac.ukjisccontent.ac.ukjiscdigitalmedia.ac.ukjiscecollections.ac.ukjischistoricbooks.ac.ukjischistories.ac.ukjiscinfonet.ac.ukjiscjournalarchives.ac.ukjisc-liberate.ac.uk jisc-liberate-migrate1.ac.uk jisc-liberate-migrate2.ac.uk jisc-liberate-migrate3.ac.ukjiscmail.ac.ukjisc-mau.ac.ukjiscmediahub.ac.ukjiscmu.ac.uk
jiscpas.ac.ukjisc-services.ac.ukjisc-tau.ac.ukjiscwell.ac.uk
jmc.ac.uk
jmu.ac.uk
jnt.ac.uk
+jobs.ac.ukjohnruskin.ac.ukjoinup.ac.uk
+jolt.ac.ukjorum.ac.ukjoseph-chamberlain.ac.ukjoseph-priestley.ac.ukjoseph-priestly.ac.ukjosephwright6form.ac.ukjournalarchives.ac.ukjournaltocs.ac.uk
jrs.ac.uk
+jsmc.ac.ukjstor.ac.uk
+jtap.ac.ukjtltraining.ac.ukjubileecentre.ac.uk
juc.ac.uk
+juno.ac.ukjustincraig.ac.uk
+jwfl.ac.ukjwheatley.ac.uk
+kaes.ac.ukkbplus.ac.uk
kcb.ac.uk
kcc.ac.uk
kcl.ac.uk
kclwave.ac.ukkcollege.ac.ukkecnuneaton.ac.ukkec-stourbridge.ac.ukkedst.ac.ukkeele.ac.ukkeighleycollege.ac.ukkendal.ac.ukkendalcollege.ac.uk
kennedy.ac.ukkensingtoncoll.ac.uk
+kent.ac.ukkentadulteducation.ac.uk
kentcls.ac.uk
kentman.ac.ukkess2.ac.uk
kew.ac.ukke-westyorkshire.ac.ukkeyseducation.ac.ukkeyskillbuilder.ac.uk
kgv.ac.uk
+kiad.ac.ukkiddercoll.ac.ukkidderminster.ac.ukkidsfirst.ac.ukkilmarnock.ac.ukkinds.ac.uk
+king.ac.ukkingalfreds.ac.uk kingalfredsbasingstoke.ac.ukkinged6nun.ac.ukkings.ac.ukkingshillinstitute.ac.ukkingshurst.ac.ukkingslondon.ac.ukkingston.ac.ukkingstonalumni.ac.ukkingston-college.ac.ukkingsway.ac.ukkirkleescollege.ac.uk
kirkley.ac.ukkisharon.ac.ukkitts.ac.ukkl.ac.uk
kmc.ac.uk
+kmms.ac.ukknightlearning.ac.ukknowledge-house.ac.ukknowledgehouse.ac.ukknowsleycc.ac.ukknowsleycollege.ac.uk
+knti.ac.uk
ksc.ac.uk
+ksep.ac.ukkssacademy.ac.ukkssdeanery.ac.uklaban.ac.uklabinacell.ac.uklackcoll.ac.uk
lackham.ac.uk
lae.ac.uklaetottenham.ac.uk
+lahp.ac.uk
+laia.ac.uklakescollege.ac.uk!lakescollegewestcumbria.ac.uk
lal.ac.uklambethacl.ac.uk
lambeth.ac.uklambethcollege.ac.uklamda.ac.uk
+lamp.ac.uklampeter.ac.uklanarkshirefederation.ac.uklancashire.ac.uklancashirecompact.ac.uk)%lancashireinstituteoftechnology.ac.uklancashirelawacademy.ac.uklancashirelawschool.ac.uklancaster.ac.uk"lancasterbeijingjiaotong.ac.uklancs.ac.uklancs-cumbrianti.ac.uklancs-initiative.ac.uklancsngfl.ac.uk
landmap.ac.uklandmarks.ac.uklandscape.ac.uklangdoncollege.ac.uk
langpol.ac.uklangside.ac.uklanguagebox.ac.uklanguagesmythsfinds.ac.uklanguagesresearch.ac.uklanguagessoutheast.ac.uk
+laps.ac.uk
law.ac.uk
lawcabs.ac.uklawteacher.ac.uk
lbc.ac.uklbc-northwood.ac.uklboro.ac.uklborolondon.ac.uklbpresearch.ac.uk
lbs.ac.uk
lbu.ac.uk
+lcad.ac.uk
lcb.ac.uk
+lcbs.ac.uk
+lcbt.ac.uk
+lcds.ac.uk
lcf.ac.uk
+lcfi.ac.uk
lcgroup.ac.uklciot.ac.uklcirah.ac.uk
+lcit.ac.ukmahsc.ac.uklcriconvergence.ac.uklcssp.ac.uk
lct.ac.uklcuck.ac.uk
+lcwc.ac.ukldoc-cdt.ac.ukle.ac.ukleadershipfoundation.ac.ukleadershiphe.ac.ukleanhe.ac.ukleanhehub.ac.uk
+leap.ac.ukleapahead.ac.uklearna.ac.uklearnbaes.ac.uklearndirect.ac.uklearnedsocietywales.ac.uklearnharrow.ac.uklearnhigher.ac.uklearningbites.ac.uklearninglink.ac.uklearningmathsonline.ac.uklearningonscreen.ac.uklearningstaffordshire.ac.uklearningtogether.ac.uklearningzone.ac.uklearninscotland.ac.uklearninworcestershire.ac.uklearnit-northampton.ac.uklearnnorthants.ac.uklearnportsmouth.ac.uklearnsafl.ac.uklearntelford.ac.uklearntogive.ac.uk
lec.ac.uk
+lecb.ac.ukledas.ac.ukleder.ac.ukleeds.ac.ukleedsadultlearning.ac.ukleeds-art.ac.ukleedsbeckett.ac.uk leedsbeckettuniversity.ac.ukleedscitycollege.ac.ukleedscollege.ac.ukleedsd.ac.ukleeds-ecampus.ac.ukleeds-lcot.ac.ukleeds-met.ac.ukleedsmet.ac.ukleedsmetcarnegie.ac.ukleeds-metropolitan.ac.ukleedsmetropolitan.ac.ukleedssixthform.ac.ukleedsthomasdanby.ac.ukleedstrinity.ac.uk
+leek.ac.uklegacy.ac.uklegalscholars.ac.uk
leggott.ac.ukleicester.ac.ukleicestercollege.ac.ukleicesterlearns.ac.ukleicestermuseums.ac.ukleicester-poly.ac.ukleicp.ac.ukleics-als.ac.ukleighcollege.ac.uk
+leis.ac.ukleos-scot.ac.uk
lersnet.ac.uklesoco.ac.ukletbsharedservice.ac.uklettol.ac.ukleverhulme.ac.uklewcol.ac.uklewestraining.ac.uklewisham.ac.uk"lewishamsouthwarkcollege.ac.ukleyton.ac.uk
lfa.ac.uk
+lfhe.ac.uklgbtnonhe.ac.uk
lgu.ac.uk
lhc.ac.uk
+lhcb.ac.uk
+lhec.ac.uk
+libf.ac.uklichfield.ac.uk
+lidc.ac.uklido-dtp.ac.uk
+life.ac.uk
lifearc.ac.uklifeatkings.ac.uk
lifelab.ac.uklifelonglearning.ac.uklifesign.ac.uklifestudy.ac.uk
liftapp.ac.uk!lighthouselearningtrust.ac.uk
+lihe.ac.uklimavady.ac.uk
+lime.ac.uk
+lims.ac.uk
lincoln.ac.uklincolncollege.ac.uklincolninstitute.ac.uk&"lincolninstituteoftechnology.ac.uklincolnmedicalschool.ac.uk+'lincolnshireinstituteoftechnology.ac.uklincsiot.ac.uk
lincsit.ac.uklinguistics.ac.uklink19college.ac.uklink2learn-ni.ac.uk
linkage.ac.uklinkagecollege.ac.uklinkinglondon.ac.uklinksintolanguages.ac.uklinst.ac.uk
+lipa.ac.uk1994group.ac.uk
+hsdc.ac.uk
+3aaa.ac.uk
bishopg.ac.ukliss-dtp.ac.uklistar.ac.uklisten-up.ac.uklisterpostgraduate.ac.uk
+litt.ac.uklittlehampton.ac.uk
liv.ac.ukliv-coll.ac.ukliv-e.ac.uk
+live.ac.uk
amh.ac.ukliverpool.ac.ukliverpoolsas.ac.uklivesandletters.ac.uklivewell.ac.uk
livhope.ac.uklivingdigital.ac.uklivinglab.ac.uklivinglaboratory.ac.uklivinglegacies1914-18.ac.uklivingwithmachines.ac.uklivjm.ac.uk
+ljmu.ac.uk
lkl.ac.ukllakes.ac.uk
llambed.ac.ukllandrillo.ac.uk
+llas.ac.ukllysfasi.ac.uk
lma.ac.uklmbru.ac.uk
lmc.ac.uk
lmd.ac.uklmi4he.ac.uk
lms.ac.uk
lmu.ac.uk
+lnat.ac.uklocate.ac.uklockssalliance.ac.uklogic.ac.uk
+lolo.ac.uk
lon.ac.uklondon.ac.uklondonbiblecollege.ac.uklondonbusinessschool.ac.uklondoncbs.ac.uklondoncentre-hstm.ac.uk londonchurchillcollege.ac.uklondon-college.ac.uklondondeanery.ac.uklondoneastcove.ac.uklondonexternal.ac.uklondon-fashion.ac.uklondonfilmacademy.ac.uklondon-guildhall.ac.uklondonhigher.ac.uklondoninternational.ac.uklondonknowledgelab.ac.uklondonlinks.ac.uklondonmedicine.ac.uklondonmet.ac.uklondonmetro.ac.uklondonmetropolitan.ac.uk&"londonmetropolitanuniversity.ac.uklondonmetuniversity.ac.uklondonp4p.ac.uklondon-pgmde.ac.uklondonreach.ac.uk londonschooloftheology.ac.uklondonscreenacademy.ac.uklondonstudiocenter.ac.uklondonstudiocentre.ac.uklongeaton.ac.uklongley-park.ac.uklongleypark.ac.uklongleyparkcollege.ac.uklongley-parksfc.ac.uklongleyparksfc.ac.uk%!longleyparksixthformcollege.ac.uklongroad.ac.uk
lonklab.ac.uklonmet.ac.uklonmetro.ac.uklonmt.ac.ukloreto.ac.uklothiancolleges.ac.uk
lou.ac.uk
loucoll.ac.ukloughborough.ac.uklowestoft.ac.uklowestoftsfc.ac.uk#lowestoftsixthformcollege.ac.uk
lpc.ac.uklpmde.ac.uk
lsa.ac.uk
+lsbm.ac.uk
+lsbu.ac.uklscollege.ac.uk
+lscs.ac.uk
lse.ac.uklseapplicants.ac.uk
+lsec.ac.uklsecollaborators.ac.uklse-departments.ac.uklse-events.ac.uklse-global.ac.uklsejournals.ac.uklse-marketing.ac.uklse-nursery.ac.uklse-research.ac.uklse-residences.ac.uklse-sport.ac.uklsestaff.ac.uklse-students.ac.uk
+lsfc.ac.uklsgnt-cdt.ac.uklshtm.ac.uk
+lsjs.ac.uk
+lsme.ac.uk
lso.ac.uk
+lsrc.ac.uklsrnw.ac.uk
+lsst.ac.uk
lst.ac.uklstmed.ac.uklstmliverpool.ac.uklstonline.ac.ukls-uc.ac.uk
+ltcc.ac.uk
+ltea.ac.ukltegroup.ac.ukltscotland.ac.uk
ltsn-01.ac.uk
+ltsn.ac.uk
ltsneng.ac.uk
lucbjtu.ac.uklucid.ac.ukludlow-college.ac.ukluftoncollege.ac.uklufton-college-fe.ac.uk
+luil.ac.ukluminate.ac.ukluminateeducation.ac.uk luminateeducationgroup.ac.ukluminategroup.ac.uk
+lupc.ac.uk
lut.ac.ukluton-acl.ac.uklutonacl.ac.ukluton.ac.uklutonsfc.ac.uk
lvv.ac.uk
+lwms.ac.uklww-cetl.ac.uklyellcentre.ac.uklythamsixth.ac.uklz.ac.ukm25lib.ac.ukm5servicedesk.ac.ukm5universities.ac.ukmablethorpe.ac.ukmacaulay.ac.ukmacclesfield.ac.ukmacclesfield-college.ac.ukmackworth.ac.ukmackworth-college.ac.ukmac-migs.ac.uk
+maes.ac.ukmagic.ac.ukmaglue.ac.ukflavournetwork.ac.uk
ami.ac.ukengageni.ac.ukmakingassessmentcount.ac.uk makingthemostofmasters.ac.uk
malvern.ac.uk
man.ac.uk&"managementcontrolassociation.ac.ukmancat.ac.ukmanchester.ac.uk$ manchester-business-school.ac.uk"manchesterbusinessschool.ac.ukmanchester-city-coll.ac.uk%!manchester-computing-centre.ac.uk manchesterdentalschool.ac.ukmanchesterjmce.ac.uk!manchestermedicalschool.ac.ukmanchestermethod.ac.uk,(manchester-metropolitan-university.ac.ukmanchesternti.ac.uk73manchesternursingmidwiferyandsocialworkschool.ac.uk!manchesternursingschool.ac.uk"manchesterpharmacyschool.ac.uk$ manchesterpsychologyschool.ac.uk%!manchesterschoolofdentistry.ac.uk$ manchesterschoolofmedicine.ac.uk#manchesterschoolofnursing.ac.uk95manchesterschoolofnursingmidwiferyandsocialwork.ac.uk$ manchesterschoolofpharmacy.ac.uk&"manchesterschoolofpsychology.ac.ukmanchester-worldwide.ac.ukmanlitphil.ac.uk
mantais.ac.ukmanufacturingedc.ac.ukmaoeraobjects.ac.uk
+mapp.ac.uk#mappingthemedievalmargins.ac.ukmappingtheunderworld.ac.ukmappingwales.ac.ukmappingwelshmarches.ac.ukmarble.ac.ukmarchmont.ac.uk
maremap.ac.ukmarianstudies.ac.ukmarinecentrewales.ac.ukmarjon.ac.ukmarlab.ac.ukmarlin.ac.ukmarplecollege.ac.ukmaryvale.ac.ukmaryward.ac.ukmarywardcentre.ac.ukmasc25.ac.ukmastersprojects.ac.ukmasts.ac.ukmatch.ac.ukmaterials.ac.ukmaterialsnexus.ac.ukmathcentre.ac.ukmathematics.ac.uk
mathfit.ac.ukmathgate.ac.ukmathscentre.ac.ukmaths-magic.ac.ukmathstore.ac.ukmathsvideoclubs.ac.ukmathtutor.ac.ukmatrix.ac.ukmatthew-boulton.ac.ukmattu.ac.uk
+matu.ac.uk
mau.ac.ukmaximize.ac.uk
maxwell.ac.uk
mba.ac.uk
mbc.ac.uk
mbn.ac.uk
+mbro.ac.uk
mbs.ac.ukmbs-worldwide.ac.uk
mc6.ac.uk
mca.ac.uk
mcc.ac.uk
+mcls.ac.uk
+mcsw.ac.ukmctimoney-college.ac.uk
mdx.ac.ukmeddyliwchamgymru.ac.ukmede-innovation.ac.ukmedev.ac.uk
medhist.ac.ukmediahub.ac.ukmedian.ac.ukmedicine.ac.ukmedievalchester.ac.ukmedievalfrancophone.ac.ukmedievalswansea.ac.ukmedipathways.ac.ukmedschools.ac.ukmedwayacl.ac.ukmedway.ac.ukmeguk.ac.ukmeirion-dwyfor.ac.ukmenai.ac.ukmendel.ac.ukmeplg.ac.uk
+merc.ac.ukmerlin.ac.ukmerops.ac.ukmerristwood.ac.ukmerseyandwestlancslln.ac.uk
merthyr.ac.ukmerton-acl.ac.ukmerton.ac.uk merton-adult-education.ac.ukmertonadulteducation.ac.ukmetabolomics.ac.uk
metadac.ac.ukmetanoia.ac.ukmetcaerdydd.ac.uk
meteorr.ac.uk
metfilm.ac.ukmetfilmschool.ac.uk
methnet.ac.ukmethodsnetwork.ac.ukmethodsnorthwest.ac.uk
meu.ac.uk
mfo.ac.ukmgsdtp.ac.ukmhdss.ac.uk
+mhie.ac.uk
+mhrn.ac.uk
mhs.ac.ukmhs-relay.ac.uk
mib.ac.uk
mic.ac.ukmicrobusiness.ac.ukmicrogravity.ac.ukmicron.ac.ukmicronanoflows.ac.ukmicrosimulation.ac.ukmidchesh.ac.ukmiddlesbro.ac.ukmiddlesex.ac.uk
midfife.ac.ukmidhurst.ac.uk
midkent.ac.ukmidlands3cities.ac.ukmidlands4cities.ac.uk"midlandsenergyconsortium.ac.uk!midlandsphysicsalliance.ac.uk
midplus.ac.ukmidrib.ac.uk
+mihe.ac.ukmillionplus.ac.ukmimas.ac.ukmineofinfo.ac.uk
minerva.ac.ukminhajcollege.ac.ukminim.ac.ukminstercentre.ac.ukmirandanet.ac.ukmirror.ac.ukmisoc.ac.ukmissendenabbey.ac.uk
+mist.ac.ukmkcollege.ac.ukmkncc.ac.uk
+mlab.ac.ukmluri.ac.uk
mmf.ac.ukmmmhub.ac.uk
mmu.ac.ukmmubs.ac.uk
mnc.ac.ukmndregister.ac.ukmobilecumbria.ac.ukmobilitymoodplace.ac.ukmodelsofauthority.ac.ukmodip.ac.ukmodmedmicro.ac.ukmoidigital.ac.uk
mol.ac.uk
+mole.ac.uk
mollnet.ac.ukmonash.ac.ukmonkwear.ac.ukmonogram.ac.ukmoodleshare-hw.ac.ukmoorlands.ac.ukmoray.ac.uk
moredun.ac.ukmorgannwg.ac.ukmorley.ac.ukmorleycollege.ac.ukmorleycollegelondon.ac.ukmotherwell.ac.uk
moulton.ac.ukmountcollyer.ac.uk
+move.ac.ukmoveonmoveup.ac.ukmovinghistory.ac.ukmovingmedicine.ac.ukmpags.ac.uk
mpa-mpp.ac.ukmpa-uk.ac.ukmpese.ac.uk
+mpsi.ac.uk
mpw.ac.uk
mrc.ac.ukmrcieu.ac.ukmrcollege.ac.uk
+mrcp.ac.ukm-rhex.ac.uk
mri.ac.uk
msa.ac.ukmscassessment.ac.ukmscos.ac.uk
+msec.ac.uk
msp.ac.ukmsportknowledge.ac.uk
+mssn.ac.uk
+mtec.ac.uk
mti.ac.ukmuarc.ac.uk
+mucm.ac.ukmundus.ac.uk
+murg.ac.ukmuseumofwriting.ac.ukmuseumwales.ac.ukmusicandphilosophy.ac.uk
musiche.ac.ukmusiconline.ac.ukmusic-research.ac.ukmuslimcollege.ac.ukmuther.ac.ukmwell.ac.uk
+mwrc.ac.ukmycalderdale.ac.uk
mycandi.ac.ukmycib.ac.uk
myclyde.ac.ukmyeplg.ac.ukmyerscough.ac.ukmylabnotebook.ac.ukmylcb.ac.ukmynescol.ac.uk
myplace.ac.ukmyport.ac.ukmyscience.ac.ukmywnsc.ac.ukn8agrifood.ac.uknacro.ac.uknacstock.ac.uknactem.ac.uk
+nado.ac.uk
+naea.ac.uk
+nafc.ac.uknagty.ac.uknahste.ac.uk
+naln.ac.uk
nam.ac.ukna-me.ac.uknamss.ac.uknanocmos.ac.uknapier.ac.uknapier-cloud.ac.uk
+narf.ac.uknarti.ac.uk
+nash.ac.uknatcen.ac.uknatcor.ac.uknatdisteam.ac.uk#nationalacademiclibraries.ac.uk&"nationalandacademiclibraries.ac.uknational-army-museum.ac.uk;7nationalcollegeforadvancedtransportinfrastructure.ac.uk)%nationalcollegeforhighspeedrail.ac.uk#nationalcollegefornuclear.ac.uk'#national-confidential-inquiry.ac.uk#national-learning-network.ac.uk($nationalnetworkforinterpreting.ac.uk'#nationalnetworkfortranslation.ac.uknationalskillsacademy.ac.uk#nationaltechnicianscentre.ac.uknatmatsci.ac.uknatsal.ac.uk
natstar.ac.uknaturalhistorymuseum.ac.uknature.ac.uknazarene.ac.uknbcol.ac.uk
nbe.ac.uk
nbi.ac.uknbolton-sfc.ac.uk
+nbpa.ac.uknbria.ac.uk
nbs.ac.uk
nbu.ac.uknc3rs.ac.uk
+nc4m.ac.uk
nca.ac.uk
+ncas.ac.ukncati.ac.ukncaveo.ac.uk
ncb.ac.ukncbradford.ac.uk
ncc.ac.uknccadultlearning.ac.uk
+nccc.ac.ukncccs.ac.ukncclondon.ac.ukncdoncaster.ac.uk
+nceo.ac.ukncess.ac.uk
+ncfn.ac.uk
ncg.ac.uk
+ncgc.ac.ukncgrp.ac.uknchlondon.ac.uk
+nchp.ac.uknchsr.ac.uknciul.ac.uk
ncl.ac.uknclan.ac.uknclanarkshire.ac.ukncl-coll.ac.ukncl-lyme.ac.uk
+ncls.ac.uk
+nclt.ac.ukncl-u-lyme.ac.uk
ncn.ac.ukncpontefract.ac.ukncrcl.ac.uk
+ncrm.ac.uk
ncs.ac.uk
+ncse.ac.uk
nct.ac.uk
+ncti.ac.uk
+ncuk.ac.uk
nda.ac.uk
+ndai.ac.uk
+ndff.ac.ukndonline.ac.uk
+ndtc.ac.uk
+neab.ac.ukneaco.ac.ukneath.ac.uk
nec.ac.uknecah.ac.uknec-arundel.ac.uknectar.ac.uknedial.ac.uknedtc.ac.uk
nei.ac.ukneipdg.ac.uk
nek.ac.uknelcls.ac.uknelson.ac.uknelsoncollege.ac.uknelsongroup.ac.uknemcon.ac.uknemode.ac.uk
+nene.ac.uk
neodaas.ac.ukneonatalsociety.ac.uknerap.ac.uk
+nerc.ac.uknerc-arsf.ac.uknerc-bangor.ac.uknerc-bas.ac.uknerc-belfast.ac.uknerc-bush.ac.uknerc-cardiff.ac.uknerc-cdt-oil-and-gas.ac.uknerc-dorset.ac.uknerc-east-kilbride.ac.uknerc-eskdalemuir.ac.uknerc-essc.ac.uknerc-gilmerton.ac.uknercgw4plus.ac.uknerc-hartland.ac.uknerc-keyworth.ac.uknerc-lancaster.ac.uknerc-lerwick.ac.uknerc-liv.ac.uknerc-loanhead.ac.uknerc-mst-radar.ac.uknerc-murchison.ac.uknerc-oban.ac.uknerc-oxford.ac.uknerc-pml.ac.uknerc-smru.ac.uknerc-solardome.ac.uknerc-southampton.ac.uknerc-swindon.ac.uknerc-wallingford.ac.uknerc-wytham.ac.ukneresc.ac.uk
+nesc.ac.uknesci.ac.uknescol.ac.uknescot.ac.uk
+nesi.ac.uknesli2.ac.uknesli.ac.uk
+nest.ac.uknetlab.ac.uknetscc.ac.uknetskills.ac.uk
netwise.ac.uknetzwerkdeutsch.ac.ukneupc.ac.ukneurogrid.ac.ukneurohub.ac.uknewark.ac.uknewbasildon.ac.uknewbattleabbeycollege.ac.uk
newbold.ac.uknewbury-college.ac.uknew-campus-basildon.ac.uknewcampusbasildon.ac.uknewcampusglasgow.ac.uknewcastle.ac.uknewcastlecitylearning.ac.uknewcastle-college.ac.uknewcastlecollege.ac.uknewcastlesfc.ac.uk#newcastlesixthformcollege.ac.uk
newceys.ac.uknew-coll-cf.ac.uknewcollege.ac.uknewcollegedurham.ac.uknewcollegeglasgow.ac.uknewcollegetelford.ac.uknewcollpont.ac.uknewdirectionsreading.ac.uknewdur.ac.uknewham.ac.uknewhamcfe.ac.uknewham-vic.ac.uk
+newi.ac.uknewman.ac.ukne-worcs.ac.ukne-worcscol.ac.uknewphd.ac.uk
newport.ac.uknewroutephd.ac.uknewsfilm.ac.uknewtec.ac.uknewton.ac.uknewtonfund.ac.uknewtonrigg.ac.uknewvic.ac.uknext-institute.ac.uknextstepssw.ac.uknfacstem.ac.uk
+nfer.ac.uk
nfo.ac.uk
ngc.ac.uk
+ngfl.ac.ukngflscotland.ac.uk
ngs.ac.ukngwnet.ac.uk
nhc.ac.uknhcscotland.ac.uk
nhm.ac.uk
+niab.ac.ukniace.ac.uk
nib.ac.uk
+nibs.ac.uknibsc.ac.uknicats.ac.uk
+nicd.ac.uknicer.ac.uknicis.ac.ukniees.ac.ukniesr.ac.uknightline.ac.uknihcc.ac.uk
+nihr.ac.ukniimle.ac.uk
ninedtp.ac.ukniran.ac.uknismod.ac.uknjncscotlandscolleges.ac.uk
nkc.ac.uk
nkw.ac.uk
nlc.ac.uk
+nlgs.ac.uknlincs-coll.ac.uk
nln.ac.uk
+nlow.ac.uk
nls.ac.uknmahp.ac.uknmahp-ru.ac.uk
+nmap.ac.uk
+nmgm.ac.uk
+nmgw.ac.uk
nmh.ac.uknmite.ac.uk
nmm.ac.uk
nms.ac.uk
+nmsi.ac.uknmssc.ac.uknmwcte.ac.uk
nnc.ac.uknnotts-col.ac.uk
+nnuf.ac.uk
noa.ac.uk
noc.ac.uk
+nocn.ac.uk
+nocs.ac.uknodes.ac.uknorfolkcove.ac.uk
norland.ac.uknormanmanagedservices.ac.uknortcoll.ac.uknorthampton.ac.uknorthamptonapps.ac.uknorthamptoncoll.ac.uknorthamptoncollege.ac.uknorthbham.ac.uknorthbrook.ac.uknorthbrookcollege.ac.uknorthbrook-online.ac.uknorthderbycollege.ac.uknortheast.ac.uknortheastoutreachhub.ac.uknorthern.ac.uknorthernart.ac.uknorthernbridge.ac.uknorthern-consortium.ac.uk#northernenterpriseschools.ac.uknortherngrid.ac.uk"northernlogisticsacademy.ac.uknorth-gla.ac.uknorthglasgowcollege.ac.uknorthgrid.ac.uknorthhighland.ac.uknorthkent.ac.uknorthland.ac.uknorthlindsey.ac.uknorth-london.ac.uk northscotland-research.ac.uknorthtrafford.ac.uk north-trafford-college.ac.uknorthumberland-acl.ac.uknorthumberland.ac.uknorthumbria.ac.uknorwichresearchpark.ac.uknotredamecoll.ac.uk
+nott.ac.uknottingham.ac.uk62nottinghamartsandhumanitiesresearchinstitute.ac.uknottinghamcollege.ac.uknottinghamcourses.ac.uknottinghameuniversity.ac.uk,(nottinghamgraduateschoolofbusiness.ac.uknottinghaminnovation.ac.uk/+nottinghaminternationalbusinessschool.ac.uknottinghamknowledge.ac.uknottingham-trent.ac.uknottinghamtrentadfs.ac.uknottm-coll.ac.uknottsmaternity.ac.uk
novella.ac.uknovus.ac.uknovuscambria.ac.uknowal.ac.uk
nox.ac.uknpcrdc.ac.uknphcardiac-research.ac.uk
npm.ac.uk
+npsc.ac.uk
+nptc.ac.uknptcgroup.ac.uk
nrc.ac.uknrn-lcee.ac.uk
nrp.ac.uk
nrs.ac.uk
+nsad.ac.uknsals.ac.uknsamr.ac.uk
nsc.ac.uknsccs.ac.uk
+nscd.ac.uk
+nscg.ac.uk
+nsea.ac.uk
nsf.ac.uknsfnet-relay.ac.uknsirc.ac.uk
nso.ac.uknspcr.ac.uk
nss.ac.uk
nsu.ac.uk
nsw.ac.uk
ntb.ac.uk
ntc.ac.uk
+ntdc.ac.uk
+ntec.ac.uk
+ntfs.ac.ukntidagenham.ac.uk
ntu.ac.ukntyneside.ac.uk
nua.ac.uk
+nuca.ac.uk
nuc.ac.uk
nucarts.ac.uknuccam.ac.uknuccat.ac.uknucfs.ac.uknuclear2050.ac.uk
nuclear.ac.uknuclearcollege.ac.uknucleartheory.ac.uknuclearuniversities.ac.uk
+nulc.ac.uknulcollege.ac.uknupha.ac.uknuqmu-2kt.ac.uknurse.ac.uk
nurture.ac.uknu-sense.ac.uk
+nwba.ac.uknwcdtp.ac.uk
+nwcs.ac.uknwdtc.ac.uk
nw-grid.ac.uk
+nwhc.ac.uk
nwi.ac.uknwifhe.ac.uk
+nwkc.ac.uknwkcollege.ac.uknwkent.ac.uk
nwl.ac.uknwlcc.ac.uknwman.ac.uknwmentoring.ac.uk
+nwrc.ac.uknwsgc.ac.uknwslc.ac.uknwspm.ac.uk
nwssdtp.ac.uknwstudentandgraduate.ac.uk
+nwtf.ac.uk
+nwua.ac.uknwueu.ac.uknwupc.ac.uknwworkbank.ac.uk
nwy.ac.uk
nyu.ac.ukoaa-anaes.ac.uk
oakhill.ac.ukoaklands.ac.ukoakley.ac.ukoakwoodcourt.ac.uk
oas.ac.ukoasis.ac.ukoasiscollege.ac.uk
+oasp.ac.ukoatridge.ac.uk
obc.ac.uk
+obhe.ac.uk
obs.ac.uk
oca.ac.uk
occ.ac.ukoceanography.ac.uk
+ocfe.ac.ukochjs.ac.uk
+ocms.ac.ukocnkm.ac.uk
+ocvc.ac.uk
+oeps.ac.ukoercymru.ac.ukoerwales.ac.ukofficeforstudents.ac.ukoffshorerenewables.ac.uk
ofs.ac.uk
oge.ac.ukogsa-dai.ac.uk
ohu.ac.uk
+oibc.ac.uk
oldbury.ac.ukoldham.ac.ukoldham-sfc.ac.uk
oldroyd.ac.uk
+olds.ac.ukoldvic.ac.uk
olf.ac.uk
oli.ac.ukomagh.ac.ukomaghcollege.ac.ukomandrilling.ac.ukomcrg.ac.uk
+omii.ac.uk
+omni.ac.uk
omsiirc.ac.ukonlinesurveys.ac.ukonlinm.ac.uk
ontrack.ac.ukoocdtp.ac.ukopdems.ac.uk
+open.ac.ukopened.ac.uk#openengineeringlaboratory.ac.ukopenfields.ac.ukopensciencelab.ac.ukopensciencelaboratory.ac.ukopensource.ac.ukopenstemlab.ac.ukopenstemlabs.ac.ukopenuniversity.ac.uk
openurl.ac.ukopera-archive.ac.ukoptima-cdt.ac.ukopwall.ac.ukorbitalsouthcolleges.ac.ukorchardhill.ac.ukorchestra.ac.ukorchid.ac.ukorientalmed.ac.ukormskirk.ac.ukorpington.ac.ukorsas.ac.uk
osc.ac.ukoscar.ac.uk
+oscg.ac.uk
+osfc.ac.ukosianxiety.ac.ukosier.ac.uk
osmosis.ac.ukoss-watch.ac.ukotleycollege.ac.ukotleyeaston.ac.ukotleyonline.ac.ukou.ac.uk
+oubs.ac.ukourjourney.ac.ukoustudios.ac.ukoutduction.ac.ukoutofhourshelp.ac.uk
ovc.ac.ukowl-elearning.ac.uk
+owsc.ac.ukox.ac.uk
oxademy.ac.ukoxahsc.ac.ukoxcis.ac.ukoxdent.ac.ukoxford.ac.ukoxfordadvancedstudies.ac.ukoxford-brookes.ac.ukoxfordbrookes.ac.ukoxfordbusinesscollege.ac.ukoxford-cherwell.ac.ukoxfordcollege.ac.ukoxforddrama.ac.ukoxfordgsb.ac.ukoxfordtutorialcollege.ac.ukoxilp.ac.ukoxwasp-cdt.ac.uk
+pact.ac.uk
+pads.ac.uk
+pahc.ac.uk
paisley.ac.uk
+pala.ac.ukpalaeography.ac.ukpalatine.ac.uk
palmers.ac.uk
+pals.ac.ukpanda.ac.ukpanorama-dtp.ac.ukparadigm.ac.uk
parkcol.ac.ukpark-college.ac.ukparklane.ac.ukparklanecoll.ac.ukparksandgardens.ac.ukparticlephysics.ac.uk partneriaethaberbangor.ac.uk
+pase.ac.ukpaston.ac.uk
+path.ac.uk
pathcal.ac.ukpathways.ac.ukpathwaystohe.ac.ukpatsy.ac.ukpaul-mellon-centre.ac.ukpaulmelloncentre.ac.uk
+pble.ac.uk
pca.ac.uk
+pcad.ac.uk
+pcae.ac.uk
+pcfe.ac.ukpcfeonline.ac.uk
pcl.ac.uk
+pcmd.ac.ukpcydds.ac.uk
pdi.ac.uk
pds.ac.ukpearl.ac.ukpearsonbusinessschool.ac.ukpearsoncollege.ac.ukpearsoncollegelondon.ac.uk
+peas.ac.uk
pec.ac.ukpedagogicequality.ac.uk
+peep.ac.ukpeerlearning.ac.ukpembrokeshire.ac.ukpembs.ac.uk
pencoed.ac.ukpendcoll.ac.ukpengwerncollege.ac.ukpeninsula.ac.ukpeninsular.ac.uk
pennine.ac.uk
penwith.ac.ukpenwithcollege.ac.ukpenybont.ac.ukpenzance.ac.ukpeoplelikeyou.ac.uk
peoples.ac.uk
+pepa.ac.ukperfected.ac.ukperformancescience.ac.ukpershore.ac.ukperth.ac.ukperthcoll.ac.ukpeterborough.ac.ukpetroc.ac.uk
+pggc.ac.ukpgreen.ac.ukpharmacy.ac.ukpharmacyschools.ac.uk pharmacyschoolscouncil.ac.uk
phc.ac.ukphdcymru.ac.ukpheds-dtc.ac.uk
+phes.ac.uk
philtar.ac.uk
phoenix.ac.ukphotonics.ac.uk
phr.ac.ukpicker.ac.ukpickereurope.ac.ukpickering.ac.ukpier18.ac.ukpiirus.ac.uk!pilgrimageandcathedrals.ac.ukpilgrimagestudies.ac.uk
+pion.ac.ukpipebots.ac.ukpi-project.ac.ukpirbright.ac.uk
+piru.ac.ukpitch-in.ac.ukplant-phenomics.ac.ukpldfscotland.ac.ukplumpton.ac.ukplumptononline.ac.uk
+plus.ac.uk
+plym.ac.ukplymouth.ac.ukplymouthart.ac.ukplymouthcfe.ac.uk$ plymouth-marine-laboratory.ac.uk
plymsea.ac.uk
pml.ac.uk
pms.ac.ukpodium.ac.ukpoint.ac.ukpointblank.ac.ukpointblankmusicschool.ac.uk
pol.ac.ukpolitical-science.ac.ukpoliticsblog.ac.ukpoliticsinaction.ac.ukpoly-of-wales.ac.uk
+poms.ac.uk
+pone.ac.ukpontypridd.ac.ukpooleacl.ac.uk
+port.ac.ukportfolio.ac.ukporth.ac.ukportland.ac.ukportsmouth.ac.ukportsmouth-college.ac.ukportsmouthuni.ac.ukpostgrad.ac.ukpostgraducas.ac.ukpotteries.ac.uk#potterieseducationaltrust.ac.uk
poverty.ac.uk
pow.ac.ukpowerelectronics.ac.ukpowia.ac.ukpparc.ac.uk
+ppre.ac.ukpracticum.ac.ukpramu.ac.ukpremia.ac.ukprescribe.ac.uk%!prescribingsafetyassessment.ac.uk!presidencylondoncollege.ac.uk
preston.ac.ukprestoncoll.ac.ukpriestley.ac.ukpriestleycollege.ac.ukprifysgolioncymru.ac.ukprimarygoal.ac.ukprinciplesinpatterns.ac.uk
prioned.ac.ukprism.ac.uk
privelt.ac.ukprocat.ac.ukprocatdigital.ac.ukprocatstudent.ac.ukproductivemargins.ac.uk
profile.ac.ukprogramme3.ac.ukpromotingpartnership.ac.ukproms.ac.ukpropagandastudies.ac.ukprospects.ac.uk
proteus.ac.uk$ proudman-oceanographic-lab.ac.uk
provide.ac.ukprowe.ac.ukproxomics.ac.ukprs-ltsn.ac.uk
prucomm.ac.uk
psa.ac.uk
psc.ac.ukpsci-com.ac.uk
+psds.ac.uk
psigate.ac.ukpssru.ac.ukpublicengagement.ac.ukpublicinterest.ac.ukpublicservices.ac.ukpublicspace.ac.ukpuppiesofourtime.ac.ukpursglove.ac.uk
qaa.ac.uk
qac.ac.ukqacollege.ac.uk
+qbsc.ac.ukqeliz.ac.ukqmbsc.ac.uk
qmc.ac.ukqmced.ac.uk
qml.ac.ukqmpgmc.ac.uk
qmu.ac.uk
+qmuc.ac.uk
+qmul.ac.uk
qmw.ac.uk
+qoru.ac.uk
qsi.ac.uk
qso.ac.uk
quadram.ac.ukquadraminstitute.ac.uk
quadrat.ac.ukqualidata.ac.uk
quantic.ac.ukquantitativemethods.ac.ukquayside.ac.uk
qub.ac.ukqueens.ac.ukqueens-belfast.ac.uk
queensu.ac.uk
quercus.ac.ukqumrancavesdispersed.ac.uk
raa.ac.uk
rac.ac.ukracals.ac.uk
+racc.ac.uk
+rada.ac.ukradioresearch.ac.uk
rad-sat.ac.uk
rae.ac.uk
+raft.ac.uk
ram.ac.ukrandd.ac.ukrandomsystems-cdt.ac.ukrapid.ac.ukraratutor.ac.ukra-review.ac.ukrareview.ac.uk
ras.ac.ukrascal.ac.ukrascommunity.ac.uk
rau.ac.uk
+rave.ac.ukravemedia.ac.ukravensbourne.ac.uk&"ravensbourneuniversitylondon.ac.uk
+rbge.ac.ukrbgkew.ac.uk
+rbsl.ac.ukrbslondon.ac.uk
rca.ac.ukrcahmw.ac.uk
rcc.ac.uk
+rcds.ac.uk
+rcem.ac.ukrc-harwell.ac.uk
rcl.ac.uk
rcm.ac.ukrcnde.ac.uk
+rcni.ac.uk
+rcoa.ac.uk
+rcog.ac.uk
rcophth.ac.uk
rcp.ac.ukrcpch.ac.uk
+rcpe.ac.ukrcplondon.ac.ukrcpnorth.ac.ukrcpsg.ac.ukrcpsglasg.ac.uk
rcpsych.ac.uk
rcr.ac.uk
rcs.ac.ukrcsed.ac.ukrcseng.ac.uk
+rcuk.ac.uk
rcukssc.ac.uk
+rcvs.ac.uk
rdf.ac.uk
rdg.ac.uk
rdi.ac.ukrdmrsc.ac.ukrdnet.ac.ukreach.ac.ukreachingwider.ac.uk
reading.ac.ukreading-college.ac.ukreadingosi.ac.ukreadytoresearch.ac.ukrealcaledonian.ac.uk realisingopportunities.ac.ukreallifemethods.ac.uk
+reap.ac.ukreaseheath.ac.uk"rebuildingmacroeconomics.ac.ukrecordingachievement.ac.ukredbridge.ac.ukredbridge-college.ac.ukredbridge-iae.ac.ukredbridgeinstitute.ac.ukredcar.ac.ukredcliffe.ac.uk
reednet.ac.uk
ref.ac.uk
refrain.ac.ukregard.ac.ukregener8.ac.ukregent-academy.ac.ukregent-college.ac.ukregentcollegelondon.ac.uk
regents.ac.ukregentscollege.ac.ukregents-tc.ac.ukregionalhpc.ac.uk%!regionalsciencecentreoldham.ac.uk regional-studies-assoc.ac.ukregionalvisions.ac.ukreid-kerr.ac.ukreidkerr.ac.uk
reigate.ac.ukrelateinstitute.ac.ukreload.ac.uk
+relu.ac.ukrememberingslavery.ac.ukrems-cdt.ac.ukrenaissanceskin.ac.ukre-net.ac.uk
+renu.ac.ukrepositorynet.ac.uk
+rerc.ac.ukresearch4justice.ac.ukresearch-clinician.ac.ukresearchconcordat.ac.ukresearch-councils.ac.ukresearchers14.ac.ukresearch-scotland.ac.ukresearchscotland.ac.uk!research-socialsciences.ac.ukresearchwales.ac.uk+'resilient-decarbonised-energy-cdt.ac.uk+'resilient-decarbonised-energy-dtc.ac.uk
+resl.ac.ukresourceshare.ac.uk
restore.ac.uk
results.ac.ukrewind.ac.uk
+rfdc.ac.ukrfhsm.ac.uk
rfi.ac.uk
rgo.ac.uk
rgu.ac.ukrhacc.ac.ukrh.ac.ukrhbnc.ac.ukrhcda-aac.ac.ukrhees.ac.uk
+rhfc.ac.uk
rhs.ac.uk
+rhul.ac.ukrhyac.ac.ukri.ac.uk&"richardtaunton6thformcollege.ac.ukrichardtaunton.ac.ukrichardtauntons.ac.ukrichardwilsononline.ac.ukrichmond.ac.uk richmondbusinessschool.ac.ukrichmond-utcoll.ac.ukrichuish.ac.ukriding.ac.uk
right-2.ac.uk
rin.ac.ukripon-cuddesdon.ac.ukriscl.ac.ukriseholme.ac.ukriverside.ac.ukriversidecollege.ac.uk riversidecollegehalton.ac.ukriversidemusiccollege.ac.ukrivic.ac.ukrl.ac.uk
rlg.ac.uk
rln.ac.ukrlo-cetl.ac.uk
+rluk.ac.uk
rma.ac.uk
+rmas.ac.uk
rnc.ac.uk
+rncb.ac.uk
+rncm.ac.ukrnibcollege.ac.uk
rnibncw.ac.ukrnib-redhill.ac.ukrnibvocoll.ac.uk
rnn.ac.ukrnngroup.ac.ukrochdalesfc.ac.ukrodbaston.ac.uk
roe.ac.ukroehampton.ac.ukroehampton-online.ac.ukroffeypark.ac.ukroisolutions.ac.ukromanrepublic.ac.ukromansocietyrac.ac.ukromeo.ac.ukrosemount.ac.ukroses.ac.uk
rosetta.ac.ukroslin.ac.ukrothamsted.ac.ukrotherham.ac.ukrotherham-coll.ac.ukrothervalley.ac.ukroundtable.ac.ukroutesintolanguages.ac.ukrowett.ac.ukrowleycollege.ac.ukroyagcol.ac.ukroyalacademyofmusic.ac.ukroyalarmouries.ac.ukroyalholloway.ac.uk$ royalhollowaycommunication.ac.uk%!royalhollowaycommunications.ac.uk$ royalhollowayinternational.ac.ukroyalhollowayuniforum.ac.ukroyal-institution.ac.ukroyalmarsdenschool.ac.ukroyalsoc.ac.ukroyalsociety.ac.ukroyce.ac.ukroyce-institute.ac.ukroysocmed.ac.uk
rps.ac.ukrsa-ls.ac.ukrsamd.ac.ukrsc-cymru.ac.ukrsc-east.ac.ukrsc-eastern.ac.ukrsc-east-midlands.ac.ukrsc-em.ac.ukrscem.ac.ukrsc-london.ac.ukrsc-ne-scotland.ac.ukrsc-ni.ac.ukrsc-north.ac.ukrsc-northern.ac.ukrsc-northwest.ac.ukrsc-scotland.ac.ukrsc-south-east.ac.ukrsc-southeast.ac.ukrsc-sw-scotland.ac.ukrsc-wales.ac.ukrsc-westmidlands.ac.ukrsc-wm.ac.ukrsc-yh.ac.ukrsc-yorkshire-humber.ac.uk"rsc-yorkshire-humberside.ac.ukrsd-exeter.ac.uk
rse.ac.uk
+rslg.ac.ukrslondon.ac.uk
+rslp.ac.uk
rsm.ac.uk
+rsms.ac.uk
rsp.ac.ukrua-project.ac.ukrugby.ac.ukrugby-coll.ac.ukrugbycoll.ac.ukrugby-college.ac.ukrugit.ac.uk
rul.ac.uk
runshaw.ac.ukrunshawcollege.ac.uk
+ruru.ac.ukruskin.ac.ukrussell-group.ac.ukrussellgroup.ac.uk
+rutc.ac.ukrutherford.ac.ukrutlandcollege.ac.uk
rvc.ac.ukrwcmd.ac.uk
sac.ac.uk
saclnet.ac.uksacwg.ac.uk
+saes.ac.uk
+saet.ac.uk
+safa.ac.uksafecampuscommunities.ac.uksafepodnetwork.ac.uksages.ac.uksahfos.ac.uksainsburycentre.ac.uk"sainsburyinstituteforart.ac.uksainsbury-laboratory.ac.uk
salford.ac.uksalfordcc.ac.uksalfordcitycollege.ac.uk$ salfordcitycollege-trinity.ac.uksalford-col.ac.uk
+salg.ac.uksalisbury6c.ac.uksalisbury.ac.uksalisbury-college.ac.uksalisburycollege.ac.uk
saltash.ac.uksalts.ac.uksalvationarmy.ac.uk
+samc.ac.uk
+sams.ac.uksandwell.ac.uksandwellcollege.ac.uksanger.ac.uk
+sapc.ac.uksapphire.ac.uk
+sari.ac.uksartre.ac.uksarum.ac.uk
sas.ac.uk$ satsixthformacademiestrust.ac.uk
sbc.ac.uksbirmc.ac.uksbrc-nottingham.ac.uk
+sbrn.ac.uk
sbs.ac.uk
sbu.ac.uksbusinesslondon.ac.uk
sc1.ac.ukscaan.ac.ukscadr.ac.uk
+scae.ac.ukscapa.ac.ukscarb-6-form.ac.ukscarboroughtec.ac.ukscarboroughuniversity.ac.uk%!scarboroughuniversitycampus.ac.uk%!scarboroughuniversitycentre.ac.uk&"scarboroughuniversitycollege.ac.uks-cat.ac.uk
scc.ac.uk
+sccb.ac.uk
+sccc.ac.uksccjr.ac.uk
+scct.ac.uk
+scde.ac.uk
scentro.ac.uk
+scep.ac.uk
scg.ac.uks-cheshire.ac.ukschml.ac.ukscholarsschool.ac.ukschome.ac.ukschoms.ac.uk!school-economic-science.ac.uk
sci.ac.uksciculture.ac.uksciencemuseum.ac.ukscience-museum-group.ac.uksciencemuseumgroup.ac.uksciencesigns.ac.ukscills.ac.ukscilly-acl.ac.ukscinet.ac.uk
+scip.ac.uk
+scir.ac.ukscisci.ac.uk
scitech.ac.uksclondon.ac.uk
+scoc.ac.ukscola.ac.uksconul.ac.ukscoopstudy.ac.uk
+scop.ac.ukscope-uk.ac.ukscopic.ac.ukscore.ac.uk
+scot.ac.ukscotcatproject.ac.ukscotchem.ac.uk
scotcit.ac.uk
scotcol.ac.ukscotdist.ac.uk
scotgem.ac.ukscotgrid.ac.ukscot-hip.ac.ukscotland-aspirenorth.ac.ukscotland-northforum.ac.ukscotlandscolleges.ac.ukscot-reman.ac.ukscot-ship.ac.ukscotssyntaxatlas.ac.ukscottishborderscampus.ac.ukscottishciviljustice.ac.uk#scottishcollegegovernance.ac.ukscottishcorpus.ac.uk scottishdisabilityteam.ac.ukscottisheconomics.ac.ukscottishelections.ac.ukscottishinsight.ac.uk!scottishmarineinstitute.ac.ukscottishresearch.ac.ukscottishresearchpools.ac.uk&"scottishuniversitygovernance.ac.ukscphrp.ac.uk
+scpr.ac.ukscrambledmessages.ac.ukscran.ac.uk
+scre.ac.ukscreenacademyscotland.ac.ukscreenfilmschool.ac.ukscreenspace.ac.uk
+scri.ac.uk
scrolla.ac.uk
+scrr.ac.ukscrsj.ac.uksc-toolkit.ac.uk)%scunthorpeinstituteoftechnology.ac.ukscurl.ac.uk
scutrea.ac.uk
+scva.ac.uk
+scvs.ac.uk
scweims.ac.uk
sda.ac.uk
sdc.ac.uk
+sdeo.ac.uk
s-devon.ac.uk
sdf.ac.uk
+sdhi.ac.uk
sdn.ac.uk
+sdos.ac.uk
+sdss.ac.uk
sdt.ac.uk
seacams.ac.ukseaha-cdt.ac.uk"sea-mammal-research-unit.ac.uksearch25.ac.uksearch.ac.uk
+seas.ac.uksecureharvests.ac.uk
+seda.ac.uk
+sedc.ac.ukse-derbys.ac.uk
+sedg.ac.uk
seecoll.ac.ukseedstor.ac.ukseeingspeech.ac.ukse-essex-college.ac.ukseevic.ac.ukseevic-college.ac.uksefton-acl.ac.uksefton.ac.ukseintiaucymru.ac.ukselby.ac.ukselcog.ac.ukseldensociety.ac.uksellyoak.ac.ukselsey.ac.uksemanticaudio.ac.uksenatehouselibrary.ac.uksense-east.ac.uksensorcity.ac.uksenss-dtp.ac.uksepnet.ac.uk
+sera.ac.uk
+serc.ac.ukserena.ac.ukserio.ac.uk
+serl.ac.uk
ses.ac.uk
+seti.ac.uksetsquared.ac.uk
sfc.ac.uksfefc.ac.uk
+sfeu.ac.uksfhub.ac.uk
+sfps.ac.uk
+sfra.ac.uk
sfs.ac.uksfsstudents.ac.uk
sfx.ac.uk
+sfxc.ac.uksgeulnagaidhlig.ac.uksghms.ac.uksgiliaith.ac.uk
sgm.ac.uk
+sgmc.ac.uk
+sgpe.ac.uksgsah.ac.uksgscol.ac.uksgsss.ac.uk
+sgul.ac.ukshared-ed.ac.ukshared-es.ac.uksharedsolutions.ac.uksharegeo.ac.uksharingpractice.ac.uk
shc.ac.uk
+shdf.ac.uksheef.ac.uk
+shef.ac.ukshefc.ac.uksheffcol.ac.uksheffield2.ac.uksheffield.ac.uksheffieldcareersfairs.ac.uksheffieldcetle.ac.uksheffield-hallam.ac.uksheffieldlegalfair.ac.uksheffield-lls.ac.uksheffieldrobotics.ac.uksheilingcollege.ac.ukshenasimon.ac.uksheppeycollege.ac.uksherif.ac.uksherpa.ac.uksherpa-leap.ac.uk
shiplay.ac.uk
shipley.ac.ukshootershill.ac.ukshrewsbury.ac.uk
shu.ac.ukshuttleworth.ac.ukshuttleworthcollege.ac.uksicsa.ac.uk
+side.ac.uk
sie.ac.uk
+sifa.ac.uksigma-cetl.ac.uksigma-network.ac.uk
+sign.ac.uk
+sihe.ac.uksikh-uni.ac.uk
simbios.ac.uksimian.ac.uk
sinapse.ac.uksinet.ac.uksinica.ac.uk
sino-cs.ac.uksinto.ac.uk
sip.ac.uksipher.ac.uk
+sipr.ac.uksircharleslyellcentre.ac.uk
+sire.ac.uksirius.ac.uk
+sirm.ac.uksiser.ac.uksissc.ac.uk
+siti.ac.uk
+siva.ac.uk
sjd.ac.uk
sjr.ac.ukskegnesstec.ac.ukskelmersdale.ac.ukskillsbridge.ac.uk skillscompetitionwales.ac.ukskillsgroupuk.ac.ukskillswestyorks.ac.ukskyrmions.ac.uk
slc.ac.ukslcollege.ac.uk
+slcs.ac.uk
+sldo.ac.uksleaford.ac.uk%!sleepandwakefulnessresearch.ac.uk
slg.ac.uksli-institute.ac.uksloan.ac.uk
+slsa.ac.uk
+slss.ac.uk
slt-cdt.ac.uk
sma.ac.uksmall-angle.ac.uksmart.ac.uksmbgroup.ac.uk
+smca.ac.uk
smc.ac.uksmcblackburn.ac.uk
+smcl.ac.uk
smg.ac.uk
smi.ac.uksmithinst.ac.uk
sml.ac.uk
+smru.ac.uk
+smsj.ac.uksmstc.ac.uk
smu.ac.uk
+smuc.ac.uksmucb.ac.uk
+smul.ac.uk
snc.ac.uk
+snug.ac.uk
+soas.ac.uk
soc.ac.uk
socbcdt.ac.uksocialpolicy.ac.uksocialsciences.ac.uksocietycentral.ac.uk&"societyofjewelleryhistorians.ac.uk societyoflegalscholars.ac.uksocres.ac.uksocsciscotland.ac.uk
soficdt.ac.uksofteng-support.ac.uksoftmattercdt.ac.uksoftware.ac.uksoftwareoutlook.ac.uk
soillse.ac.uksolent.ac.uksolentmarineacademy.ac.uksolent-university.ac.uksolentuniversity.ac.uksolihull.ac.uksolihullsfc.ac.uksolsfc.ac.uk"solutions-worcestershire.ac.uksomerset.ac.uksomersetcolleges.ac.uksothebys-institute.ac.uksoton.ac.uk
+sots.ac.uksound-heritage.ac.uksoundsoftware.ac.uksoundwell.ac.uksource.ac.uksouthampton.ac.uksouthamptonalumni.ac.uksouthamptonbusiness.ac.uksouthampton-city.ac.uksouthampton-institute.ac.uk'#southampton-solent-university.ac.uk%!southamptonsolentuniversity.ac.uksouthbank-university.ac.uksouthcheshirecollege.ac.uksouthcoastdtp.ac.uksouthcoll-bolton.ac.uksouthdevon.ac.uksouthdowns.ac.uksoutheastdtc.ac.uksoutheastessex.ac.uksouthend-acl-college.ac.uksouthend.ac.uksouthend-adult.ac.uksouthendcollege.ac.uksouthessex.ac.uksouthessexcollege.ac.uksouthgate.ac.uksouthgrid.ac.uksouthkent.ac.uk#south-lanarkshire-college.ac.uksouthport.ac.uksouthport-college.ac.uksouthsefton6thform.ac.uk#southsefton6thformcollege.ac.uksouthseftoncollege.ac.uksouthstaffs.ac.uksouth-thames.ac.uksouthwales.ac.uksouthwark.ac.uksouthwestcollege.ac.uksouthwestiot.ac.uksouthwestnuclearhub.ac.uk
spa.ac.uk"spaceuniversitiesnetwork.ac.ukspaceweather.ac.ukspalding.ac.uk
+span.ac.uksparc.ac.uksparqs.ac.uksparsholt.ac.uksparsholtcollegegroup.ac.uk"sparsholtcollegeservices.ac.uksparsholtservices.ac.ukspatialeconomics.ac.uk
spc.ac.ukspcollege.ac.ukspectrum.ac.ukspeedproject.ac.ukspelthorne.ac.ukspero.ac.ukspice.ac.ukspider.ac.ukspinesurgeons.ac.ukspiritstudios.ac.ukspitfire.ac.uksplint-cetl.ac.ukspokenword.ac.uk
spr.ac.uk
+sprg.ac.uksprint.ac.ukspsrn.ac.ukspurgeons.ac.uksqhwesternconsortium.ac.uk
src.ac.uk
srf.ac.uk
+srhe.ac.uk
+srip.ac.uk
+sroc.ac.uk
+srpe.ac.uk
srs.ac.uk
+sruc.ac.ukssees.ac.uk
+ssfc.ac.uk
+sshm.ac.uk
+ssmh.ac.uk
+sspc.ac.uk
+sspf.ac.ukssphr.ac.uksssfc.ac.uk
ssu.ac.uk
+stac.ac.ukstafford.ac.ukstaffordcoll.ac.ukstaffordshire.ac.ukstaffs.ac.uk
+stak.ac.ukstamford.ac.ukstamfordparktrust.ac.ukst-and.ac.ukst-andrews.ac.ukstanmore.ac.uk stanstedairportcollege.ac.uk
+star.ac.ukstarlink.ac.ukstars.ac.ukstatistics.ac.ukstatstutor.ac.ukstaugustinescollege.ac.ukst-austell.ac.uk
+stbr.ac.ukstbrendans.ac.ukstbrn.ac.uk
stc.ac.uk
+stcg.ac.uk
stchads.ac.ukstcharles.ac.ukstcharles-mail.ac.ukstclares.ac.ukstcoll.ac.ukst-davids-coll.ac.ukstdavidscollege.ac.ukstdavidsdaygroup.ac.ukstdoms.ac.uksteamhouse.ac.uk
+stec.ac.ukstemacademy.ac.uk
+stem.ac.ukstemequals.ac.ukstephenson.ac.ukstephensoncoll.ac.uksterling.ac.ukstets.ac.uk
+stfc.ac.ukstgeorges.ac.uksthelensacl.ac.uksthelens.ac.uksth-leic-coll.ac.uk
+stir.ac.ukstirling.ac.uk
st-ives.ac.ukstjohns-nottm.ac.uk
stloyes.ac.uk
stlukes.ac.ukstmartins.ac.uk
stmarys.ac.ukstmarys-belfast.ac.ukstmarys-blackburn.ac.ukstmarysblackburn.ac.ukstmaryslondon.ac.ukstmarys-sfc.ac.ukstmellitus.ac.ukstmellituscollege.ac.ukstmichaels.ac.ukstockbill.ac.ukstockport.ac.ukstockton.ac.uk*&stocktonlearningandskillsservice.ac.ukstocktonsfc.ac.ukstocsf.ac.ukstokecoll.ac.ukstokecollege.ac.ukstokesfc.ac.ukstomp.ac.ukstonyhurst.ac.ukstorcuram.ac.ukstoriesofchange.ac.ukstourbridge.ac.uk
+stow.ac.ukstpadarns.ac.ukst-patricks.ac.ukstran.ac.ukstrat-avon.ac.ukstratavoncol.ac.ukstratford.ac.uk)%stratfordislanduniversitycentre.ac.uk#stratforduniversitycentre.ac.ukstratgroup.ac.ukstrath.ac.ukstrathclyde.ac.ukstrathmore.ac.ukstreva.ac.ukstripe.ac.ukstrode-coll.ac.ukstrode-college.ac.uk
strodes.ac.ukstrodeslanguages.ac.ukstroud.ac.ukstroudcol.ac.ukstroudcollege.ac.uk
+sttc.ac.ukstudentengagement.ac.ukstudentshows.ac.uk!studentvoteregistration.ac.uk"studentvoterregistration.ac.ukstudygroup.ac.ukstudyhigher.ac.ukstudyinengland.ac.ukstudyingeconomics.ac.ukstudyinglanguages.ac.ukstudyinwales.ac.ukstudylondon.ac.ukstudywithplymouth.ac.uk
+stuk.ac.ukstvincent.ac.uksuburbansolutions.ac.uksucceeds.ac.uksuffolkacademiestrust.ac.uk
suffolk.ac.uksuffolkbusinessschool.ac.uksuffolk-maag.ac.uksuffolkone.ac.uk
+sulc.ac.uksulne.ac.uksulsa.ac.uksumac.ac.uk
+sums.ac.uksumsconsulting.ac.uksuncat.ac.uksuncol.ac.uk
+sund.ac.uksunderland.ac.uksunderlandcollege.ac.uksunderlandsixthform.ac.uk
sunitec.ac.uk
+supa.ac.uk
+supc.ac.uksupercomputingwales.ac.uksuperdarn.ac.uksuperjanet.ac.uksuperjournal.ac.uksuperstem.ac.uksupply-chain.ac.uk
+surf.ac.uk
surrart.ac.uksurrealismcentre.ac.uksurrey.ac.uksurreyadultlearning.ac.uksurreyibc.ac.uksurreyspace.ac.uksurveynet.ac.uk suschem-nottingham-cdt.ac.uksussex.ac.uksussexbusinessschool.ac.uksussexcoast.ac.uksussexdowns.ac.uksussexmedicalschool.ac.uksussexvirtualcollege.ac.uksussp.ac.uk sustainabilityexchange.ac.uk!sustainablehydrogen-cdt.ac.uksustainablelifestyles.ac.uksustainablepractices.ac.uksustainableproperty.ac.uksustainableprosperity.ac.uk!sustainabletechnologies.ac.uk
sustain.ac.uksustainsteel.ac.uk
+susx.ac.uksutcol.ac.uk
sutcoll.ac.uksuttoncollege.ac.uk
+swan.ac.ukswancoll.ac.uk
swanmet.ac.uk
swansea.ac.ukswansea-institute.ac.ukswanseamet.ac.uk
+swap.ac.uk
swapbox.ac.ukswarf.ac.ukswbio.ac.uk
swc.ac.ukswdtc.ac.ukswdtp.ac.uksweep.ac.uk
sweltec.ac.ukswift.ac.ukswincoll.ac.uk
swindon.ac.ukswindonart.ac.ukswindon-college.ac.uksw-iot.ac.ukswiot.ac.ukswlacademicnetwork.ac.uk
+swlc.ac.uksworcs.ac.ukswrac.ac.ukswurcc.ac.uksww-ahdtp.ac.ukswwcte.ac.ukswwhep.ac.uksx.ac.uksycolleges.ac.uksyfec.ac.uk
symonds.ac.uksynbio-cdt.ac.uksynsym.ac.uksyntheticbiology.ac.uksysmic.ac.uksystemicrisk.ac.uktablet-academy.ac.uk
+tacc.ac.uk
+tags.ac.uk
+tait.ac.uktakeyourplace.ac.uktalkinghealthmatters.ac.uktamescol.ac.uktameside-acl.ac.uktameside.ac.uktamesidecollege.ac.uktamworth.ac.uktamworthandlichfield.ac.uk
+tapb.ac.uktapestry.ac.uktarf-lcv.ac.uktargetedgrad.ac.uk
+tarn.ac.uk
+tasc.ac.uk
tau.ac.uktauntons.ac.uktavi-port.ac.uktavistockandportman.ac.uk tavistockrelationships.ac.uk
tay.ac.uk
tbm.ac.uk
+tcat.ac.uk
+tcch.ac.uk
+tccr.ac.uk
tcg.ac.uk
tcm.ac.uktcpartnership.ac.uktdotp.ac.ukteachenergy.ac.ukteachingaccessibility.ac.ukteachingshakespeare.ac.ukteamwork.ac.uk
+tean.ac.uk
tec.ac.uktechextra.ac.uktechne.ac.uktechxtra.ac.uk
+tedi.ac.uktedi-london.ac.uk
+teds.ac.uk
+tees.ac.ukteeslearn.ac.ukteesside.ac.ukteesvalley-acl.ac.uk
tel.ac.uktelfordcollege.ac.uktellusgb.ac.uktelri.ac.uk
temenos.ac.uktempusuk.ac.uktentowns.ac.uk
+terc.ac.uktesta.ac.uk
tex.ac.uktextminingcentre.ac.uk
+tgac.ac.ukthamesgatewaycollege.ac.ukthamesvalleytraining.ac.ukthanet.ac.ukthanetcollege.ac.ukthatcham.ac.uk thealanturinginstitute.ac.ukthearden.ac.ukthebcc.ac.ukthebritishacademy.ac.ukthe-british-museum.ac.ukthe-britishmuseum.ac.ukthebritishmuseum.ac.uk%!thechesterfieldcollegegroup.ac.ukthecobaltstudy.ac.ukthecontactpartnership.ac.ukthecpc.ac.ukthedigitalpicture.ac.uk
the-etc.ac.uktheetc.ac.uktheglobalsite.ac.ukthegraduationproject.ac.ukthehenleycollege.ac.uktheinternetlawschool.ac.uktheknowledgeacademy.ac.uk!thelearningcentrebexley.ac.ukthelearningconsortium.ac.ukthelearningmatrix.ac.uktheletterspage.ac.ukthelondonknowledgelab.ac.ukthemanchestercollege.ac.ukthemis.ac.uktheoca.ac.uktheroslininstitute.ac.ukthesaurus.ac.ukthesenses.ac.ukthesesalive.ac.uktheskillsco.ac.ukthewomenslibrary.ac.ukthinkhigher.ac.ukthinking3d.ac.ukthinkwales.ac.ukthomasdanby.ac.ukthomashpc.ac.ukthomasway.ac.ukthomroth.ac.ukthornbeck.ac.ukthurrock.ac.ukthurrockcampus.ac.uk
tic.ac.uk
tictocs.ac.uk
tiipple.ac.uktilehill.ac.uktipple.ac.uk
tla.ac.uktl.ac.uk
tlc.ac.uktlcbexley.ac.uktlccollege.ac.uktlcmd.ac.uktlcmoodle.ac.uk
+tltp.ac.uk
tmc.ac.uk
+tmcs.ac.uk
tmn.ac.ukt-mus.ac.uk
tombola.ac.uktotton.ac.uktoucan-network.ac.uktower.ac.uktowerhamletscollege.ac.uktowerhamletsllls.ac.uktowerhamletslls.ac.uk
tpc.ac.uk
+tpea.ac.uktpmde.ac.uk
+trac.ac.uktracingnetworks.ac.uktraffcoll.ac.uktrafford.ac.uktraffordcollege.ac.uktraindelayprediction.ac.uktraintogainstoke.ac.uktrans.ac.uktranscocon.ac.uk!transforming-musicology.ac.uk transformingmusicology.ac.uk
transit.ac.uktransitwestyorkshire.ac.uktranslate-medtech.ac.uk&"transnationalmodernlanguages.ac.uktranspharmtech-cdt.ac.uktranspharmtech-dtc.ac.uk
trc.ac.uk
tresham.ac.uktricky-topics-guide.ac.uk
trident.ac.uktri-london.ac.uktrilt.ac.uktrinity-bris.ac.uktrinity-cm.ac.uktrinitycollegebristol.ac.uktrinitylaban.ac.uktrinitysaintdavid.ac.uk
trocoll.ac.uk
tropmed.ac.uk
trs.ac.uktruro.ac.uktrurocollege.ac.uktruro-penwith.ac.uktruropenwith.ac.uk
tsd.ac.uktsdlondon.ac.uk
tse.ac.uktsec-biosys.ac.uk
tsl.ac.uk
+tsrc.ac.uk
ttc.ac.uktte-lisa.ac.ukttetraining.ac.uk
+ttrb.ac.uk
+tuca.ac.uk
+tuco.ac.uktudorpartbooks.ac.ukturbulence.ac.ukturing.ac.ukturingsafehaven.ac.uk
tvc.ac.uk
+tvof.ac.uk
tvu.ac.uktwenty65.ac.uktwin-research.ac.uk
twinsuk.ac.uktwirl.ac.uk
tyndall.ac.uktynecoast.ac.uktynecoll.ac.uk
tynemet.ac.uku4heusergroup.ac.uk
+ua92.ac.uk
uad.ac.uk
uag.ac.uk
ual.ac.uk
+uall.ac.uk
uas.ac.uk
+ubdc.ac.ukubel-dtp.ac.uk
ubn.ac.uk
uca.ac.uk
+ucam.ac.ukucas01.ac.uk
+ucas.ac.ukucasgraduate.ac.ukucaspg.ac.ukucaspostgrad.ac.ukucaspostgraduate.ac.uk
+ucat.ac.uk
+ucav.ac.uk
ucb.ac.uk
ucc.ac.uk
+ucea.ac.uk
uce.ac.uk
+ucem.ac.ukucenmanchester.ac.uk
+ucet.ac.uk
ucf.ac.uk
+ucfb.ac.uk
ucg.ac.ukucisa.ac.uk
ucl.ac.ukuclan.ac.ukuclanresearch.ac.uk
ucleeds.ac.ukuclglobal.ac.ukucl-status.ac.uk
+ucmk.ac.uk
+ucml.ac.uk
ucn.ac.uk
+ucnl.ac.uk
uco.ac.uk
ucp.ac.ukucpmarjon.ac.uk
ucq.ac.ukucreaseheath.ac.ukucreative.ac.uk
ucs.ac.ukucsalf.ac.ukucsalford.ac.ukuc-scarborough.ac.uk
+ucsd.ac.ukucshrewsbury.ac.uk
+ucsm.ac.uk
+ucsp.ac.uk
+ucss.ac.uk
+ucwa.ac.uk
ucw.ac.uk
ucy.ac.uk
+udel.ac.uk
uea.ac.uk
uec.ac.uk
+uedu.ac.uk
uee.ac.ukueharlax.ac.uk
uel.ac.ukuetcollege.ac.uk
ufm.ac.uk
uhi.ac.ukuhicloud.ac.ukuhmlg.ac.ukuhovi.ac.uk
uhr.ac.uk
+uhsl.ac.ukukadia.ac.ukukaea.ac.ukukaff.ac.uk
ukandeu.ac.ukukarc.ac.ukukbiobank.ac.uk
+ukca.ac.uk
ukc.ac.ukukcasa.ac.ukukcat.ac.ukukcbc.ac.uk
ukccsrc.ac.ukuk-cdi.ac.ukukceh.ac.ukukcge.ac.ukukchinab4g.ac.ukukcle.ac.ukukclt.ac.ukukcmri.ac.uk
+ukcp.ac.ukukcpmn.ac.ukukctas.ac.uk
+ukda.ac.uklipsit.ac.ukukdataservice.ac.uk%!ukdementiaresearchinstitute.ac.ukukdri.ac.uk
+ukds.ac.ukukerc.ac.ukukerna.ac.ukukesm.ac.ukukfast.ac.ukukgeos.ac.ukukgrad.ac.ukukhec.ac.ukukhls.ac.ukuk-imr.ac.ukukimr.ac.uk uk-india-energynetwork.ac.ukukirc.ac.ukuklibrariesplus.ac.uk
uklight.ac.uk
ukm.ac.ukukmed.ac.ukukmhd.ac.ukukmhr.ac.ukukmsn.ac.ukukndn.ac.ukuknet.ac.ukukngi.ac.ukuknibc.ac.ukukoln.ac.ukukorea.ac.ukukpass.ac.ukukpmc.ac.ukukpmcplus.ac.ukukpubmedcentral.ac.ukukqcd.ac.uk!ukresearchandinnovation.ac.uk
ukrheeo.ac.uk
+ukri.ac.uk
+ukro.ac.uk
+ukrr.ac.ukukscl.ac.ukukserp.ac.ukuksrn.ac.ukukssdc.ac.uk
+ukt0.ac.ukuktrc.ac.ukukupc.ac.ukukzikaresponse.ac.uk
+ulcc.ac.uk
ulh.ac.uk
ull.ac.ukulsop.ac.uk
+ulst.ac.ukulster.ac.uk
+ulth.ac.ukultralab.ac.uk
+umds.ac.uk
+umis.ac.ukumist.ac.uk
ums.ac.ukumslg.ac.uk
+umtc.ac.uk$ underpinningexcellenceinhe.ac.uk$ understanding-inequalities.ac.ukunderstandingsociety.ac.ukunialliance.ac.uk
unidesk.ac.ukuni-east.ac.uk
unilang.ac.ukunion.ac.uk
unis4ne.ac.ukunistats.ac.ukunisurreydirect.ac.ukuniswales.ac.ukunitedcollegegroup.ac.ukunitedcollegesgroup.ac.ukunity.ac.ukunivault.ac.ukuniversitiesengland.ac.uk#universitiesfornottingham.ac.ukuniversitieshr.ac.ukuniversitiesinlondon.ac.ukuniversitiesireland.ac.uk%!universitiesnorthernireland.ac.ukuniversities-scotland.ac.ukuniversitiesscotland.ac.ukuniversitiesuk.ac.ukuniversitieswales.ac.ukuniversitiesweek.ac.ukuniversitieswm.ac.ukuniversityacademy92.ac.ukuniversity-alliance.ac.uk%!universitycampusscarborough.ac.uk$ university-central-england.ac.uk universitycentreharlow.ac.uk"universitycentrehastings.ac.uk"universitycentresouthend.ac.uk#universitycentrestratford.ac.uk"universitycentrethurrock.ac.ukuniversitychairs.ac.uk#universitycollegefalmouth.ac.uk&"universitycollegescarborough.ac.ukuniversityenglish.ac.uk!university-of-cambridge.ac.ukuniversityofcambridge.ac.uk universityofchichester.ac.ukuniversityoflondon.ac.uk!universityofscarborough.ac.uk($universityofscarboroughcollege.ac.ukuniversityofsuffolk.ac.uk universityofwestlondon.ac.uk!universityquarter-stoke.ac.uk#universitysquarestratford.ac.uk
unl.ac.uk
unn.ac.uk
uod.ac.uk
uol.ac.uk
uos.ac.uk
upa.ac.uk
updates.ac.uk
+upen.ac.uk
+upmg.ac.ukurbanbigdatacentre.ac.ukurbanfloodresilience.ac.ukurbanflows.ac.ukurbanlivinglab.ac.ukurbanobservatory.ac.ukusablepast.ac.ukuse-of-mans.ac.ukushare.ac.ukushaw.ac.ukuspcollege.ac.ukusstratford.ac.uk
ust.ac.uk
+ustc.ac.uk
usw.ac.ukutcreading.ac.uk
uuk.ac.uk
+uvac.ac.ukuwb-global.ac.ukuwcatlantic.ac.ukuwchgyfrifiaduracymru.ac.uk
uwe.ac.ukuwe-bristol.ac.ukuwern.ac.uk
+uwic.ac.ukuwinat.ac.uk
uwl.ac.uk
uws.ac.ukuwtsd.ac.ukuwtsdlondon.ac.ukuxbridge.ac.ukuxbridgecollege.ac.uk
vaccine.ac.uk
+vads.ac.uk
vam.ac.ukvamsas.ac.ukvarndean.ac.uk
+vast.ac.uk
vaughan.ac.uk
+vcol.ac.ukvcoll.ac.uk
verifid.ac.uk
vetgate.ac.ukvetnetlln.ac.ukvetschools.ac.ukvetschoolscouncil.ac.ukvetset2go.ac.ukvetvaccnet.ac.uk
vge.ac.uk
+vgta.ac.ukvicarious.ac.ukvictoriacountyhistory.ac.ukvideoactive.ac.ukvidlearn.ac.ukvirtualcollege.ac.ukvirulogenome.ac.ukvisionnaires.ac.ukvisnet.ac.ukvista.ac.ukvisual-evidence.ac.ukvisuallearninglab.ac.ukvisualrhetoric.ac.ukvitae.ac.ukvital.ac.ukviznet.ac.ukvoila.ac.ukvolstudy.ac.uk
+vows.ac.ukv-resort.ac.uk
+vssn.ac.uk
+vtri.ac.uk
vts.ac.ukvtstutorials.ac.uk
wac.ac.uk
+wacc.ac.uk
+waes.ac.uk
waf.ac.uk
wakcoll.ac.ukwakefield.ac.uk
+walc.ac.ukwalcat.ac.ukwales1801-1919.ac.ukwales.ac.ukwalesdtc.ac.ukwalesdtp.ac.ukwalesglobalcampus.ac.ukwalesmep.ac.ukwalker.ac.ukwalker-institute.ac.ukwalsall-coce.ac.ukwalsallcollege.ac.uk
waltham.ac.ukwalthamintcollege.ac.ukwarkscol.ac.uk
+warr.ac.ukwarrington.ac.uk
warwick.ac.ukwarwickequine.ac.ukwarwickhri.ac.ukwarwickshire.ac.ukwaterwisercdt.ac.ukwaverleyabbeycollege.ac.uk
wbs.ac.uk
wcc.ac.ukwccsj.ac.uk
wcg.ac.uk
+wcmd.ac.uk
+wcoh.ac.uk
wcs.ac.uk
wct.ac.ukwddcp.ac.uk
wea.ac.ukweald.ac.ukwearside.ac.ukwebpa.ac.uk
webster.ac.uk
welbeck.ac.ukwelfareconditionality.ac.uk
+well.ac.ukwellbeing.ac.ukwellcome.ac.ukwelsh-dictionary.ac.ukwelshmediumhe.ac.ukwelshsaints.ac.uk
+wern.ac.uk
+wesc.ac.ukwescfoundation.ac.uk
+wess.ac.ukwessex.ac.ukwessexsfc.ac.ukwestchem.ac.ukwest-cheshire.ac.ukwestcollegescotland.ac.ukwestcumbcoll.ac.ukwestdean.ac.ukwestengland.ac.ukwestherts.ac.ukwesthill.ac.ukwestkent.ac.ukwestkentandashford.ac.ukwestking.ac.ukwestlancs.ac.ukwestlondon.ac.ukwestlondoncollege.ac.ukwestlondoniot.ac.ukwestlondonuniversity.ac.ukwest-lothian.ac.ukwestminster.ac.ukwestminster-cfe.ac.ukwestminsterutc.ac.ukwestnotts.ac.ukwestofscotland.ac.ukweston.ac.ukwestonstudents.ac.ukwestsuffolk.ac.ukwestsuffolkcollege.ac.ukwest-thames.ac.ukwestyorkshirecolleges.ac.ukweymouth.ac.ukweymouthcollege.ac.uk
+wfdc.ac.uk
wgu.ac.ukwhatscotlandthinks.ac.ukwhatworksscotland.ac.ukwhcgroup.ac.uk
+wheb.ac.ukwhelf.ac.ukwherl.ac.ukwhitegates-feu.ac.ukwhiterose.ac.uk*&whiterose-mechanisticbiology-dtp.ac.uk;7whiterose-social-science-doctoral-training-centre.ac.ukwholesem.ac.ukwhystudyamerica.ac.ukwhystudyeconomics.ac.ukwhystudyenglish.ac.ukwhystudylanguages.ac.ukwhystudymaterials.ac.uk
+wias.ac.uk
+wicn.ac.uk*&widnesandruncornsixthformcollege.ac.ukwidnesruncorn.ac.uk widnessixthformcollege.ac.ukwigan-leigh.ac.uk
+wigs.ac.ukwigstoncollege.ac.ukwilberforce.ac.ukwiltscoll.ac.ukwiltshire.ac.ukwiltshirecollege.ac.ukwimbledon.ac.ukwimbledon-school.ac.ukwimcs.ac.ukwinchester.ac.uk
wincoll.ac.ukwindsor-forest.ac.uk
winncop.ac.uk"winningstudents-scotland.ac.ukwinstanley.ac.ukwirralmet.ac.ukwiserd.ac.ukwitcmi.ac.ukwittgen-cam.ac.uk
+wivc.ac.uk
+wkac.ac.uk
wkc.ac.ukwkcic.ac.uk
wlc.ac.ukwlcbms.ac.ukwlcbs.ac.ukwlpms.ac.uk
wlu.ac.uk
wlv.ac.uk
wma.ac.ukwm-air.ac.uk
wmc.ac.uk
+wmcc.ac.ukwmcollege.ac.uk
+wmcu.ac.ukwmhea.ac.uk
+wmin.ac.uk
+wmsf.ac.ukwmucs.ac.uk
wnc.ac.uk
+wnsc.ac.ukwocns.ac.ukwoking.ac.ukwolcol.ac.ukwolseymanuscripts.ac.ukwolvcoll.ac.ukwolverhampton.ac.ukwolverhamptonline.ac.uk
won.ac.ukwoodhouse.ac.uk
+worc.ac.ukworcester.ac.ukworkandhome.ac.ukworkingclasswriting.ac.uk"workingtogethernorthwest.ac.ukworkplacementscotland.ac.uk
wortech.ac.ukworthing.ac.uk
wqe.ac.ukwqeic.ac.ukwrapp.ac.ukwrdtc.ac.ukwrdtp.ac.ukwrekincollege.ac.uk
+wren.ac.uk
wrexham.ac.ukwripa.ac.ukwritenow.ac.ukwriting-pad.ac.uk
writtle.ac.ukwrittlecollege.ac.uk"writtleuniversitycollege.ac.ukwrocah.ac.ukwroxton-college.ac.uk
wrssdtp.ac.uk
wsc.ac.ukwscinternational.ac.uk
+wsfc.ac.ukwspcr.ac.uk
wtc.ac.ukwton-acl.ac.ukwton-adulteducation.ac.uk
+wttw.ac.uk
wulfrun.ac.uk
wun.ac.ukwvlln.ac.uk
wvn.ac.uk
wvr.ac.uk
wwmpcrn.ac.ukwyams.ac.uk
+wyke.ac.ukwylln.ac.ukxaverian.ac.uk
+xavs.ac.ukxbase.ac.uk
+xmas.ac.uk
+xmat.ac.uk
xmm.ac.ukxn--colegsirgr-c5a.ac.uk
+yale.ac.ukyale-wrexham.ac.uk
ycc.ac.ukycoastco.ac.uk
+ycuc.ac.uk
ycw.ac.uk
+ydds.ac.ukydrindoddewisant.ac.ukyeovil.ac.ukyeovil-college.ac.ukyhelln.ac.uk
+yhua.ac.uk
+ymca.ac.ukymca-wales.ac.uk
+york.ac.ukyorkcollege.ac.ukyorkcollegeapps.ac.ukyork-sfc.ac.ukyorkshireuniversities.ac.ukyorksj.ac.ukyorkstonemasonrycove.ac.ukyoungfoundation.ac.uk!yourfuture-eastmidlands.ac.ukyoushare.ac.ukyporth.ac.uk
yra.ac.uk
ysj.ac.ukystrad-mynach.ac.ukysulondon.ac.ukzeplerinstitute.ac.ukzoonoses.ac.ukzoonosis.ac.ukdlib.eastview.comacademic.eb.comamgueddfacymru.ac.uk
amf.ac.ukamerwyc-coll.ac.ukamersham.ac.ukamericabrox.ac.ukamerc.ac.uk
+ambs.ac.ukalzheimers.ac.ukalwcymru.ac.ukaltoncollege.ac.ukalton.ac.ukaltis.ac.ukaltereco.ac.uk
alt.ac.ukalsod.ac.uk
alsalam.ac.uk
alps-wm.ac.ukalps-cetl.ac.uk
+aloe.ac.ukalmcollege.ac.uk
+alma.ac.ukallnations.ac.ukalliancembs.ac.uk*&alliancemanchesterbusinessschool.ac.ukalliancemanchester.ac.ukallcu.ac.ukalis-wales.ac.uk alexanderlondoncollege.ac.uk
aldinhe.ac.uk
+alcs.ac.uk
alc.ac.ukaire-wharf-coll.ac.uk
+aims.ac.ukaimhigherwm-alps.ac.ukaimhigherwm.ac.ukaimhighersw.ac.ukaimhighersurrey.ac.ukaimhigherscotland.ac.ukaimhighernw.ac.uk#aimhighernorthamptonshire.ac.uk$ aimhighergreatermerseyside.ac.ukaim25.ac.uk
aib.ac.ukai3sd.ac.uk
+ahua.ac.ukahrcfoodnetwork.ac.uk
+ahrc.ac.uk
+ahpd.ac.ukahgtm.ac.ukahessc.ac.uk
+ahds.ac.uk
+ahcs.ac.uk
ahc.ac.uk
ags.ac.ukagroforestry.ac.ukagriforwards-cdt.ac.uk
agrifor.ac.ukagrifoodatp.ac.uk%!agressofinanceroyalholloway.ac.ukagocg.ac.ukagenet.ac.ukafterenglish.ac.ukafsni.ac.ukafricanplants.ac.ukafricadesk.ac.uk
afi.ac.uk
+afao.ac.uk
aes.ac.uk"aerospace-training-wales.ac.ukaerosol-cdt.ac.ukaengd.ac.ukaemap.ac.ukaecc-chiropractic.ac.uk
+aecc.ac.uk"advantagenottinghamshire.ac.ukadvancingaccess.ac.ukadvancehe.ac.ukadvance-he.ac.uk"advancedtherapeutics-cdt.ac.ukadvanced-radiotherapy.ac.ukadvancedhe.ac.ukadvanced-he.ac.ukadultlearningbcc.ac.uk
ads.ac.uk
+adrn.ac.uktandf.co.ukadrc-e.ac.uk
+adls.ac.ukadlib.ac.ukadeptt.ac.uk
addison.ac.uk
+adas.ac.ukadapt.ac.ukadamsmithcollege.ac.ukadamsmith.ac.ukadams-institute.ac.ukadalovelacecentre.ac.ukadacollege.ac.uk
ada.ac.uk
acu.ac.ukactual.ac.ukactris.ac.ukactofunion.ac.ukactivatelearning.ac.ukacsis.ac.ukacpme.ac.uk
acp.ac.ukacoustics.ac.ukacmedsci.ac.uk
acm.ac.ukacets.ac.uk
+aces.ac.uk
+acer.ac.ukace-lp.ac.uk
+aced.ac.uk
+accs.ac.uk
accross.ac.ukaccountancylearning.ac.ukaccesstomusic.ac.uk!accesstohighereducation.ac.ukaccesstohe.ac.ukaccess-summit.ac.ukaccessheonline.ac.ukaccesshe.ac.ukaccesscreative.ac.ukaccesscollege.ac.ukacceleratedcomputing.ac.ukacademyofmusic.ac.uk%!academyforhealthcarescience.ac.ukacademicpeerlearning.ac.uk($academicpaediatricsassociation.ac.ukacademic-clinician.ac.ukacacia.ac.uk
abs.ac.ukabrsm.ac.ukabira.ac.ukabingdon-witney.ac.ukabicollege.ac.ukabhsc.ac.ukaberystwyth.ac.ukabertaydundee.ac.uk
abertay.ac.ukabertawe.ac.ukaberdeenrescon.ac.ukaberdeen-isc.ac.ukaberdeenenergy.ac.ukaberdeen.ac.ukaberdare.ac.uk%!aberbangorstrategicalliance.ac.ukaberbangorpartnership.ac.uk
+aber.ac.ukabdn-online.ac.uk
+abdn.ac.uk abdn-access-biomedical.ac.ukabcolstudents.ac.ukabcol.ac.uk#abbeygatesixthformcollege.ac.ukabbeygatesfc.ac.uk
aau.ac.ukaaschool.ac.ukaaacymru.ac.uk
+4gls.ac.uk3sixty-ucc.ac.uk3d-fossils.ac.ukuk-data-service.ac.ukliparm.ac.uk
nii.ac.jp
+ncl.edu.twlawdata.com.twacaric.co.jpinfolinker.com.twhanzhen.xmulib.orgicsd.fiz-karlsruhe.deamdigital.co.uk
sci-hub.it.nfsci-hub.mksa.topsci.hubg.orgjstage.jst.go.jp
+
+CBScbsi.live.ott.irdeto.com%!cbsplaylistserver.aws.syncbak.comcbsservice.aws.syncbak.comlink.theplatform.comcbsshowtimecbs.comcbscorporation.comcbsi.com
+cbsi.video
+cbsiam.com
cbsig.net
+cbsimg.netcbsinteractive.comcbsistatic.com
cbsivideo.comcbsnews.comcbspressexpress.com
cbssports.com
cbsstatic.com
cbssvideo.com
+viacbs.com
+viacom.com
viacomcbs.comviacomcbspressexpress.com
paramount.comamlg.iocbsaavideo.commtvnservices.comparamountplus.compplusstatic.com
+
+DLSITE
chobit.ccci-en.jp
ci-en.net
+dlsite.com
dlsite.jpdlsitestudio.comnijiyome.jptriokini.com
dlsite.com.tw
+
+LYSOLlysol.calysol.cl
lysol.com
lysol.netlizol.co.inlysol.co.crlysol.com.mxlysol.cn
+cnlysol.com.cn
+cn
++
+MONGODBmongodb.commongodb.org
+m
+SUNINGcnsuning.com
+suning.comsuningcloud.comsuningestate.comsuningholdings.com
+X
+ TENDCLOUD
tendcloud.comtalkingdata.comtalkinggame.com
+cpatrk.net
+#
+V8
+v8.dev
v8project.org
+
+GCORES
+gcores.com
+
+IMAGEBAMimagebam.com
+-
+KEYBASE
+keybase.iokeybaseapi.com
+
+FARFETCHfarfetch-apps.comfarfetch-contents.comfarfetch.comfarfetch.net
fflnk.netfarfetch.cn
+cnfarfetch.com.cn
+cnfarfetch.net.cn
+cn
+
+RFERL
rferl.orgazadiradio.comazadliq.org
azathabar.comazatliq.orgazattyk.orgazattyq.orgazatutyun.amcurrenttime.tvekhokavkaza.comeuropalibera.orgevropaelire.orgfactograph.infoidelreal.orgkavkazr.com
krymr.commashaalradio.com
ozodi.orgozodlik.orgradiofarda.comradiomarsho.comradiosvoboda.orgradiotavisupleba.ge
severreal.orgsibreal.orgslobodnaevropa.mksvaboda.orgsvoboda.orgsvobodnaevropa.bgszabadeuropa.hu
+
+ADOBE-ACTIVATION3dns-1.adobe.com3dns-2.adobe.com3dns-3.adobe.com3dns-4.adobe.com3dns-5.adobe.com3dns.adobe.comactivate-sea.adobe.comactivate-sjc0.adobe.comactivate.adobe.comactivate.wip1.adobe.comactivate.wip2.adobe.comactivate.wip3.adobe.comactivate.wip4.adobe.comadobe-dns-1.adobe.comadobe-dns-2.adobe.comadobe-dns-3.adobe.comadobe-dns-4.adobe.comadobe-dns.adobe.com
adobeereg.comcrl.versign.netereg.adobe.comereg.wip.adobe.comereg.wip1.adobe.comereg.wip2.adobe.comereg.wip3.adobe.comereg.wip4.adobe.comhl2rcv.adobe.comhlrcv.stage.adobe.comlm.licenses.adobe.comlmlicenses.wip4.adobe.comna1r.services.adobe.comood.opsource.netpractivate.adobepractivate.adobe.compractivate.adobe.ipppractivate.adobe.newoapractivate.adobe.ntp
wip.adobe.comwip1.adobe.comwip2.adobe.comwip3.adobe.comwip4.adobe.comwwis-dubc1-vip100.adobe.comwwis-dubc1-vip101.adobe.comwwis-dubc1-vip102.adobe.comwwis-dubc1-vip103.adobe.comwwis-dubc1-vip104.adobe.comwwis-dubc1-vip105.adobe.comwwis-dubc1-vip106.adobe.comwwis-dubc1-vip107.adobe.comwwis-dubc1-vip108.adobe.comwwis-dubc1-vip109.adobe.comwwis-dubc1-vip110.adobe.comwwis-dubc1-vip111.adobe.comwwis-dubc1-vip112.adobe.comwwis-dubc1-vip113.adobe.comwwis-dubc1-vip114.adobe.comwwis-dubc1-vip115.adobe.comwwis-dubc1-vip116.adobe.comwwis-dubc1-vip117.adobe.comwwis-dubc1-vip118.adobe.comwwis-dubc1-vip119.adobe.comwwis-dubc1-vip120.adobe.comwwis-dubc1-vip121.adobe.comwwis-dubc1-vip122.adobe.comwwis-dubc1-vip123.adobe.comwwis-dubc1-vip124.adobe.comwwis-dubc1-vip125.adobe.comwwis-dubc1-vip30.adobe.comwwis-dubc1-vip31.adobe.comwwis-dubc1-vip32.adobe.comwwis-dubc1-vip33.adobe.comwwis-dubc1-vip34.adobe.comwwis-dubc1-vip35.adobe.comwwis-dubc1-vip36.adobe.comwwis-dubc1-vip37.adobe.comwwis-dubc1-vip38.adobe.comwwis-dubc1-vip39.adobe.comwwis-dubc1-vip40.adobe.comwwis-dubc1-vip41.adobe.comwwis-dubc1-vip42.adobe.comwwis-dubc1-vip43.adobe.comwwis-dubc1-vip44.adobe.comwwis-dubc1-vip45.adobe.comwwis-dubc1-vip46.adobe.comwwis-dubc1-vip47.adobe.comwwis-dubc1-vip48.adobe.comwwis-dubc1-vip49.adobe.comwwis-dubc1-vip50.adobe.comwwis-dubc1-vip51.adobe.comwwis-dubc1-vip52.adobe.comwwis-dubc1-vip53.adobe.comwwis-dubc1-vip54.adobe.comwwis-dubc1-vip55.adobe.comwwis-dubc1-vip56.adobe.comwwis-dubc1-vip57.adobe.comwwis-dubc1-vip58.adobe.comwwis-dubc1-vip59.adobe.comwwis-dubc1-vip60.adobe.comwwis-dubc1-vip61.adobe.comwwis-dubc1-vip62.adobe.comwwis-dubc1-vip63.adobe.comwwis-dubc1-vip64.adobe.comwwis-dubc1-vip65.adobe.comwwis-dubc1-vip66.adobe.comwwis-dubc1-vip67.adobe.comwwis-dubc1-vip68.adobe.comwwis-dubc1-vip69.adobe.comwwis-dubc1-vip70.adobe.comwwis-dubc1-vip71.adobe.comwwis-dubc1-vip72.adobe.comwwis-dubc1-vip73.adobe.comwwis-dubc1-vip74.adobe.comwwis-dubc1-vip75.adobe.comwwis-dubc1-vip76.adobe.comwwis-dubc1-vip77.adobe.comwwis-dubc1-vip78.adobe.comwwis-dubc1-vip79.adobe.comwwis-dubc1-vip80.adobe.comwwis-dubc1-vip81.adobe.comwwis-dubc1-vip82.adobe.comwwis-dubc1-vip83.adobe.comwwis-dubc1-vip84.adobe.comwwis-dubc1-vip85.adobe.comwwis-dubc1-vip86.adobe.comwwis-dubc1-vip87.adobe.comwwis-dubc1-vip88.adobe.comwwis-dubc1-vip89.adobe.comwwis-dubc1-vip90.adobe.comwwis-dubc1-vip91.adobe.comwwis-dubc1-vip92.adobe.comwwis-dubc1-vip93.adobe.comwwis-dubc1-vip94.adobe.comwwis-dubc1-vip95.adobe.comwwis-dubc1-vip96.adobe.comwwis-dubc1-vip97.adobe.comwwis-dubc1-vip98.adobe.comwwis-dubc1-vip99.adobe.com
+F
+
+CLIPS4SALEc4slive.comclips4sale.comvideos4sale.com
+(
+FANS66
fans66.twfansking.tw
+b
+ ECONOMIST
economist.comeconomistgroup.comeconomistgroupcareers.comeiu.com
+
+FARONICSfaronics.kayako.comfaronics.eu
deepfreeze.eufaronicswise.comfaronicslabs.comfaronics.comdeepfreeze.netdeepfreeze.tech
faronics.techdeepfreeze.comfaronics.cadeepfreeze.co.ukfaronics.com.sgclickedu.co.ukfaronics.com.audeepfreeze.com.brfaronicswise.co.ukfaronics.co.uk
+@
+GLOBALVOICESglobalvoices.orgglobalvoicesonline.org
+8
+ HOMEDEPOThomedepot-static.com
homedepot.com
+
+KUAISHOUgifshow.com
+inkwai.comksapisrv.comkuaishou.com
+kwaizt.comkuaishouzt.com
+kwimgs.com
+yximgs.com log-sdk.gifshow.com
+adswlog.kuaishou.com
+ads
+s
+BMWminibmwmini-connected.se
mybmw.combmw-abudhabi.combmw-adventskalender.combmw-albania.combmw-antilles.frbmw-art-journey.combmw-arts-design.combmw-asia.com bmw-auslieferungszentrum.combmw-authority-vehicles.combmw-bahrain.combmw-businessdrive.combmw-calgary.cabmw-carit.debmw-classic.combmw-clubs-international.combmw-connected-drive.combmw-connecteddrive.aebmw-connecteddrive.atbmw-connecteddrive.bebmw-connecteddrive.bgbmw-connecteddrive.cabmw-connecteddrive.ch
minispace.comminishop.caminisaskatoon.combmw-connecteddrive.comminisaskatoon.caminirichmond.comminirichmond.caminipetfriendly.comminiofmonrovia.comminioakville.combmw-connecteddrive.czbmw-connecteddrive.debmw-connecteddrive.dkbmw-connecteddrive.eebmw-connecteddrive.esbmw-connecteddrive.fibmw-connecteddrive.frbmw-connecteddrive.grbmw-connecteddrive.hubmw-connecteddrive.iebmw-connecteddrive.itbmw-connecteddrive.jpbmw-connecteddrive.krbmw-connecteddrive.ltbmw-connecteddrive.lubmw-connecteddrive.lvbmw-connecteddrive.mxbmw-connecteddrive.mybmw-connecteddrive.nlbmw-connecteddrive.nobmw-connecteddrive.plbmw-connecteddrive.ptbmw-connecteddrive.robmw-connecteddrive.rubmw-connecteddrive.sebmw-connecteddrive.sgbmw-connecteddrive.sibmw-connecteddrive.skbmw-connecteddrive.twbmw-corporate-sales.combmw-diplomatic-sales.commininanaimo.combmw-drivingexperience.com
bmw-dubai.com
+bmw-eg.com
bmw-fleet.net
bmw-ghana.combmw-golfsport.com
bmw-group.com
bmw-group.netbmw-grouparchiv.debmw-grouparchives.com
+bmw-gta.cabmw-i-pure-impulse.combmw-i.jpbmw-int1.combmw-iraq.combmw-jordan.combmw-konzernarchiv.debmw-ksa.combmw-kuwait.com
+bmw-lao.labmw-lebanon.combmw-m-safetycar.com
bmw-m.combmw-mdrivetour.com
+bmw-me.combmw-military-sales.combmw-motorcycle.combmw-motorcycles.vnbmw-motorrad-abudhabi.com bmw-motorrad-authorities.combmw-motorrad-dubai.combmw-motorrad-motorsport.com!bmw-motorrad-now-or-never.com&"bmw-motorrad-service-inclusive.combmw-motorrad-test-ride.combmw-motorrad.atbmw-motorrad.bebmw-motorrad.bgbmw-motorrad.bhbmw-motorrad.bobmw-motorrad.cabmw-motorrad.chbmw-motorrad.clbmw-motorrad.comininanaimo.caminimotorsport.comminimotoringschool.comminimotoringrewards.comminimontroyal.comminimontroyal.cabmw-motorrad.comminimontrealcentre.caminimoncton.comminimoncton.caminimarkham.comminimarkham.ca
minilondon.co
minilondon.ca
minilaval.comminilaval.caminilat.combmw-motorrad.crbmw-motorrad.czbmw-motorrad.debmw-motorrad.dkbmw-motorrad.dzbmw-motorrad.ecbmw-motorrad.eebmw-motorrad.esbmw-motorrad.fibmw-motorrad.frbmw-motorrad.grbmw-motorrad.gtbmw-motorrad.hubmw-motorrad.inbmw-motorrad.itbmw-motorrad.jpbmw-motorrad.lubmw-motorrad.mabmw-motorrad.nlbmw-motorrad.nobmw-motorrad.pabmw-motorrad.plbmw-motorrad.ptbmw-motorrad.robmw-motorrad.rsbmw-motorrad.rubmw-motorrad.sabmw-motorrad.sebmw-motorrad.sibmw-motorrad.skbmw-motorrad.svbmw-motorrad.twbmw-motorrad.uabmw-motorrad.uybmw-motorsport.combmw-mountains.combmw-museum.combmw-museum.netbmw-nigeria.combmw-oman.com
bmw-ottawa.cabmw-pakistan.combmw-plant-munich.comminilangley.combmw-powertrain.combmw-product-highlights.com
bmw-qatar.combmw-routes.com
+bmw-rp.combmw-rrdays.combmw-saudiarabia.combmw-security-vehicles.combmw-special-sales.combmw-sports.com
bmw-sudan.combmw-tahiti.combmw-tunisia.combmw-vancouver.cabmw-voli.mebmw-welt.combmw-welt.netbmw-welt.tvbmw-werk-berlin.de
bmw-world.com
bmw-world.netbmw-world.tvbmw-worldfinal.combmw-yachtsport.com
+bmw-yeg.ca
bmw-yemen.com
+bmw.am
+bmw.at
+bmw.az
+bmw.ba
+bmw.bb
+bmw.be
+bmw.bg
+bmw.bm
+bmw.bs
+bmw.by
+bmw.ca
+bmw.cc
+bmw.ch
+bmw.clminilangley.caminikelowna.comminikelowna.caminiitalianjob.comminiinvasion.ca
+minihk.comminihalifax.comminihalifax.caminigrandriver.comminigeorgian.ca
+minifs.combmw.com
minie.comminidurham.com
minidurham.ca minidrivingexperienceusa.comminidowntown.comminidowntown.caminidealernet.comminidealer.com
minicooper.caminiccrc.caminicaribbean.commini.luminibrossard.comminibrossard.caminiargentina.com
+mini101.camini.uamini.tnmini.tmmini.skmini.simini.semini.rumini.rsmini.romini.remini.ptmini.nomini.nlmini.nc
+bmw.cw
+bmw.cz
+bmw.de
+bmw.dk
+bmw.dz
+bmw.ee
+bmw.es
+bmw.fi
+bmw.fr
+bmw.gp
+bmw.gr
+bmw.hn
+bmw.hr
+bmw.ht
+bmw.hu
+bmw.ie
+bmw.in
+bmw.is
+bmw.it
+bmw.kg
+bmw.kz
+bmw.lc
+bmw.lk
+bmw.lt
+bmw.lu
+bmw.lv
+bmw.ly
+bmw.ma
+bmw.md
+bmw.mn
+bmw.mq
+bmw.mu
+bmw.nc
+bmw.nl
+bmw.no
+bmw.pl
+bmw.ps
+bmw.pt
+bmw.re
+bmw.ro
+bmw.rs
+bmw.se
+bmw.si
+bmw.sk
+bmw.sn
+bmw.tm
+bmw.tt
+bmw.ua
+bmw.uz
+bmw.vnbmwarchiv.atbmwarchiv.debmwartjourney.combmwasia.combmwauslieferungszentrum.combmwbikes.com
bmwbkk.de
+bmwccrc.cabmwcenternet.combmwchampionship.combmwchampionshipusa.combmwcharitygolf.combmwcitychallenge.combmwclassic.combmwcolorado.combmwconnecteddrive.combmwcustomapparel.com
bmwdcsnet.netbmwdealercareers.combmwdealerdirect.combmwdelawarevalley.combmwfilms.combmwgroup-classic-heart.combmwgroup-classic.combmwgroup-gaad.combmwgroup-plants.combmwgroup-posdigital.combmwgroup-werke.combmwgroup.atbmwgroup.combmwgroup.net
bmwgroup.jobsbmwgroupclassic.combmwgroupdesignworks.combmwgroupdirect.combmwgroupfs.combmwgroupinfobahn.combmwgroupna.com
bmwhk.combmwi.cabmwi.jpbmwiventures.combmwjamaica.com
+bmwlat.combmwlifestyle.cabmwm.combmwmagazine.combmwmagazine.debmwmass.combmwmass.net
bmwmc.netbmwmontreal.cabmwmotorcycles.combmwmotorcycleusa.commini.mymini.mumini.mqmini.mdbmwmotorradhk.comalphabet.bebayareabmw.commini-stjohns.com
bmwmuseum.netbmwmyanmar.combmwofannapolis.combmwofcentralpa.combmwoftulsa.combmwondemandusa.com
bmworegon.combmwperformancecenter.combmwpittsburgh.combmwproductnews.com
bmwsafari.com
+bmwsfl.com
+bmwsfl.net
+bmwshop.cabmwspecialoffers.ca
bmwsports.combmwstartupgarage.combmwstep.combmwstepconnections.combmwsummerschool.combmwtampabay.com
+bmwusa.combmwusatires.combmwusaservice.combmwusfactory.combmwusrideracademy.combmwvalueservice.combmwwholesaleconnect.combmwworld.combmwworld.netbmwworld.tvbmwzentrum.combrand-protection-team.comcencoastbmw.com
chargenow.comchargenowusa.comchicagolandbmw.comconnected-drive.com
daytonbmw.comdealerspeed.net
desertbmw.comdreambmw.cagrupobmw.comguambmw.comhackthedrive.com
hawaiibmw.comiaablog.comlasvegasbmw.comm-power.comminneapolisbmw.comminneapolisbmw.netmotorshowblog.commybmw.cabmwmotorsport.comnewhampshirebmw.com
nmbmw.comocbmwdealers.comoffresspecialesbmw.capark-now.comparkinfo.com
+pdxbmw.com
+phxbmw.compre-bmwgroup.jobspugetsoundbmw.com
rentaride.comrentaride.derhodeislandbmw.comsdcountybmw.comshopbmwmotorcycles.comshopbmwusa.comsocalbmw.comstlouisbmw.netthe-m-festival.comtristatebmw.comvancouverbmwretailers.cawashingtondcbmw.commini-connected.noaboutyourmini.com
alfera.in
alfera.my!midatlanticbmwmotorcycles.com4myminicard.comalphera-finance.in
+alphera.camini.itmini.isalphera.commini.inmini.iemini.hu
+alphera.de
+alphera.es
+alphera.ie
+alphera.in
+alphera.myalphera.netmini.gpalpherafinancialservices.esalpherafinancialservices.inalpherafs.camini.frmini.fimini.esalpherafs.iealpherafs.inalpherafs.mypremiumfs.de
alphabet.asiaalphabet.atbmwmotorshowblog.comalphabet.bizalphabet.chmini.dzminispecialoffers.caminispygear.comalphabet.comministcatharines.caministeagathe.comministjohns.caminitakesthestates.comminitoronto.caalphabet.czalphabet.dealphabet.esalphabet.eualphabet.fr
alphabet.infoalphabet.jpalphabet.ltalphabet.lualphabet.lvalphabet.mxalphabet.nominitroisrivieres.caalphabet.plalphabet.ptalphabet.ukalphabet.usalphabetfinance.netelectricluxury.comrolls-roycecullinan.comrolls-roycemotorcars.comrolls-roycemotorcarsna.com
rrtis.comspiritofecstasy.combaltimorebmw.commini.jp
minicanada.caatlantaminidealers.comgreatergothammini.commini.kzmini-abudhabi.commini-antilles.frmini-bahrain.commini-bosnia.com mini-clubs-international.commini-connected.atmini-connected.bemini-connected.chmini-connected.commini-connected.czmini-connected.demini-connected.dkmini-connected.eemini-connected.esmini-connected.fimini-connected.frmini-connected.iemini-connected.itmini-connected.ltmini-connected.lumini-connected.lvmini-connected.nlmini.mamini-connected.plmini-connected.ptapprovedusedbmw.commini-corporate-sales.com
mini-coupe.camini-dubai.com
+mini-e.commini-egypt.commini-georgia.commini-grouparchiv.demini-grouparchive.commini-jordan.commini-ksa.commini-kuwait.commini-lebanon.commini-me.com
mini-oman.commini-qatar.commini-srilanka.commini-stjohns.cabmwmperformance.commini-tahiti.commini-vietnam.commini-windsor.camini-windsor.commini.ammini.atmini.bemini.bgmini.bymini.camini.ccmini.chmini.clmini.commini.czmini.demini.dktroisrivieresmini.com
+trmini.comsouthfloridamini.comshopminiusa.compugetsoundmini.comminiyaletown.caminiworkshop.comminiwindsor.com
miniwidget.caminiwholesaleconnect.comminivilledequebec.comminivilledequebec.caminivictoria.comminivictoria.caminivaughanwest.comminivaughanwest.caminivancouver.caminivalueservice.comminiusatires.comminiusaservice.comminiusa.com
+bmw.com.au
bmw.co.zaalphabet.com.plalphabet.com.mxalphabet.com.lvalphabet.com.esalphabet.co.zaalphabet.co.ukalphabet.co.hualpherafs.com.myalpherafs.com.hkalpherafs.co.nzalpherafinance.com.hkalphera.com.myalphera.com.hkalphera.com.es
alphera.co.nz
alphera.co.inalphera-finance.com.hkalphera-finance.co.in
alfera.com.my
bmw.co.idbmwmotorrad.com.sgbmwmotorrad.com.phbmwmotorrad.com.aubmwmotorrad.co.kr
+bmw.com.ve
+bmw.com.uy
+bmw.com.tw
+bmw.com.tr
+bmw.com.sv
+bmw.com.sg
+bmw.com.py
+bmw.com.ph
+bmw.com.pe
+bmw.com.pa
+bmw.com.ni
+bmw.com.my
+bmw.com.mx
+bmw.com.mt
+bmw.com.mo
+bmw.com.mk
+bmw.com.ky
+bmw.com.kh
+bmw.com.gt
+bmw.com.ge
+bmw.com.ec
+bmw.com.do
+bmw.com.cy
+bmw.com.co
+bmw.com.br
+bmw.com.bo
+bmw.com.bn
+bmw.com.bd
bmw.co.jp
+bmw.com.arbmw-motorrad.co.nz
bmw.co.uk
bmw.co.th
bmw.co.nz
bmw.co.kr
+mini.co.idbmw-connecteddrive.com.aualphabet.com.pt
alfera.com.hk
bmw.co.cr
bmw.co.aobmw-pma.com.sgbmw-motorrad.com.trbmw-motorrad.com.pybmw-motorrad.com.pebmw-motorrad.com.mybmw-motorrad.com.mxbmw-motorrad.com.hrbmw-motorrad.com.dobmw-motorrad.com.brbmw-motorrad.com.aubmw-motorrad.com.arbmw-motorrad.co.zabmw-motorrad.co.ukbmw-motorrad.co.th
bmw.co.ilbmw-motorrad.co.krbmw-motorrad.co.idbmw-driving-center.co.krbmw-connecteddrive.com.mtbmw-connecteddrive.com.kwbmw-connecteddrive.com.hrbmw-connecteddrive.com.cybmw-connecteddrive.com.bralphabet.org.ukbmw-connecteddrive.co.zabmw-connecteddrive.co.ukbmw-connecteddrive.co.nzmini.com.mxmini.com.mtmini.com.plmini.com.sgmini.com.pemini.com.pamini.com.comini.com.momini.com.brmini.com.mkmini.com.hrmini.com.gtmini.com.grmini.com.bnmini.com.domini.com.phmini.com.cymini.com.pymini.com.ecmini.com.ar
+mini.co.za
+mini.co.uk
+mini.co.th
+mini.co.me
+mini.co.kr
+mini.co.il
bmw.co.ke
+mini.co.crmini-connected.co.ukmini.com.trmini.com.twmini.com.uy
+bmw.com.cn
+cnalphabet.com.cn
+cnalphabet.net.cn
+cn
+
+CITIC citicchinaamc.com
citicbank.comciticcapital.comciticiam.comciticifh.comciticsf.comclsa.com
+csc108.com
+ecitic.comcitic-prudential.com.cnciticprufunds.com.cn
citics.com.hk
+!cn"cncbinternational.com
+!cncsci.hk
+!cn
+
+CNBLOGSblogjava.netcnblogs.comcnitblog.comcnweblog.comcppblog.com
phpweblog.net
teachblog.net
+D
+
+POCOIQ-ADS
cdn.pocoiq.cn
+ads
oct.pocoiq.cn
+ads
+-
+SUBSCENEi.jeded.comsubscene.com
+
+XUNLEI
+sandai.netthunderurl.com
+xunlei.com
00cdn.com
88cdn.com
p2cdn.comthundercdn.comxycloud.com
xycdn.com
+
+CATEGORY-INSURANCE-IRiraninsurance.irtins.iralborzinsurance.irbimeonline.comdana-insurance.com
+dayins.comhafezinsurance.irkarafarin-insurance.ir
bimehasia.com
bimeh.comnovininsurance.commellatinsurance.comomid-insurance.irparsianinsurance.irrazi-insurance.irrisc.irsinainsurance.comtamin.irihio.gov.ir
+
+ HKETGROUPetwealth.comhket.com
hketgroup.comapexprint.com.hkeprc.com.hketbc.com.hketnet.com.hketpress.com.hkettrade.com.hkulifestyle.com.hkumagazine.com.hketnet.com.cn
+cnetnetchina.com.cn
+cn
+
+THESUNdreamteamfc.com
page3.com
talksport.com
thesun.iesunbingo.co.ukthescottishsun.co.ukthesun.co.uk
+B
+HKEDCITY
edcity.hkhkedcity.nethkreadingcity.net
+
+WEBFLOWwebflow.com
+
+WESTERNDIGITALsandisk.com
+sandisk.sg
+sandisk.itwesterndigital.comwdc.comg-technology.com
+sandisk.ae
+wd.com
+sandisk.id
+sandisk.nl
+sandisk.in
+sandisk.de
+sandisk.es
+sandisk.fr
+sandisk.hk
sandisk.co.uksandisk.com.twsandisk.com.trsandisk.com.brsandisk.com.au
sandisk.co.kr
sandisk.co.jp
+sandisk.cn
+cn
+
+ ANANDTECH
anandtech.com
+:
+ENTERMEDIADBentermediadb.netentermediadb.org
+
+ GOOGLEFCMalt1-mtalk.google.comalt2-mtalk.google.comalt3-mtalk.google.comalt4-mtalk.google.comalt5-mtalk.google.comalt6-mtalk.google.comalt7-mtalk.google.comalt8-mtalk.google.commtalk-dev.google.commtalk-staging.google.commtalk.google.commtalk4.google.com
+n
+SECOMsecomtrust.netsecom.co.jpcybertrust.co.jpcybertrust.ne.jpmanagedpki.ne.jp
+2
+SWAG 5w.agswag-live.co
swag.live
+M
+TOKYO-TOSHOKANtokyo-tosho.nettokyotosho.info
tokyotosho.se
+F
+LETSENCRYPT
lencr.orgletsencrypt.comletsencrypt.org
+(
+LTN
+ltn.com.tw
yes123.com.tw
+I
+NEXON
nexon.comnexon.ionexon.co.jpnexoncdn.co.kr
+
+MINISO
+miniso.com
miniso.pe
miniso.pk
miniso-np.com
miniso-nz.com
miniso.by
miniso.ca
miniso.comyminiso.comminisokorea.com
miniso-bh.com
miniso-au.comminisovietam.vnminisojordan.comminisoindia.com
miniso.uz
miniso.ua
miniso.ge
miniso.ie
miniso.jp
miniso.ma
miniso.myminisothailand.comminiso.co.id
miniso.com.tr
miniso.com.py
miniso.com.pl
miniso.com.mx
miniso.com.grminisolife.co.za
miniso.com.esminiso.co.tzloveminiso.com.br miniso.cn
+cn
minisohome.cn
+cn minsio.cn
+cn
+W
+HUJIANG
+cctalk.com
hjapi.com
hjfile.cnhujiang.com
yeshj.com
+o
+IFANRcoolbuy.com
ifanr.comifanr.inifanrusercontent.com
+ifanrx.com
+minapp.com
+*
+IPIPipip.netmyip.la
+!cn
+
+SOHU-ADSadnet.sohu.com
+adsads.sohu.com
+ads!adv-sv-show.focus.cn
+adsaty.sohu.com
+adsdata.vod.itc.cn
+adsepro.sogou.com
+adsgo.sohu.com
+adsgolden1.sogou.com
+adsimp.optaim.com
+adsinte.sogou.com
+adsinte.sogoucdn.com
+adslu.sogoucdn.com
+adspv.sohu.com
+adstheta.sogoucdn.com
+adstrack.sohu.com
+adsuranus.sogou.com
+adsv2.reachmax.cn
+ads)e8aeb8bbdbbd7.cdn.sohucs.com
+ads)643108e7617ef.cdn.sohucs.com
+ads
+)
+ SOURCEHUT
sourcehut.org sr.ht
+
+YUNFANJIASUyfcache.com
+yfcalc.com
yfcdn.netyfcloud.com
yfdts.net
yfp2p.net
+yfscdn.net
yunfancdn.com
+
+CATEGORY-ENHANCE-GAMINGbluestacks.commaa.plus
prts.pluspoi.moeplaycover.io
+fflogs.comrpglogs.complaycover.workers.devlsplayer.com
+cn
+yeshen.com
+cnheavenlywind.cc
+cnsteampp.net
+cn
+rpglogs.cn
+cn
+*
+MOBILE015i01.commobile01.com
+`
+SB
+dns.sb ip.gs ip.sbloli.net sb.sb sm.msu.nu
+www.sb
+:
+POLYMERpolymer-project.orgpolymerproject.org
+H
+5464754647.global54647.io54647.online
54647.org
+
+CATEGORY-ADS-ALLtaboola.comkepler-37b.comero-advertising.com
+aaxads.com
+ad-srv.netyektanet.com
+tapsell.iradbutter.netjuicyads.comsabavision.comadtechus.com
+adtrue.comadxprtz.com
najva.com51y5.netcfts1tifqr.comcontentabc.comcretgate.com
+lqc006.comeroadvertising.comexoclick.com
+exosrv.com
+go2.global
gozendata.com
gzads.comgz-data.comkaprila.comimglnkc.comimglnkd.cominnovid.com
+adivery.irjads.coadivery.comaddthisedge.com
+shuzilm.cnunioncom.ccmoat.commoatads.com
mobwithad.comrealsrv.coms4yxaqyq95.comtelecome.cntoboads.com
beizi.biztrafficfactory.biztsyndicate.comwwads.cnhubcloud.com.cnpbmp.ali213.netadx.36kr.coma.adtng.comstatic.javhd.comadq.chinaso.comstat.chinaso.comshhs-ydd8x2.yjrmss.cndn-growing.qbox.me
ad.unimhk.comtm-banners.gamingadult.comdas-rpt-log.ucloud.cnclick.ali213.netcdn.banclip.com
jl3.yjaxa.topja2.gamersky.comimg-bss.csdn.netcdn.advertserve.comads.trafficjunky.netad.wang502.comad.api.moji.com^pinggai\d\.caixin\.com$7box.vip
+adsad-delivery.net
+adsadinplay.com
+ads adnxs.com
+ads!ads.trafficjunky.net
+adsadvertserve.com
+adscasalemedia.com
+ads!contextual.media.net
+adscpmstar.com
+ads
+demdex.net
+adshttpool.com
+ads lijit.com
+ads1rx.io
+adsmfadsrvr.com
+adsmgid.com
+adsns1p.net
+adspubmatic.com
+adssnapads.com
+adsspotxchange.com
+ads
+unimhk.com
+ads upapi.net
+ads apilog-web.acfun.cn
+adsads.union.jd.com
+adsc-nfa.jd.com
+adscps.360buy.com
+ads
+jzt.jd.com
+ads
stat.m.jd.com
+adsimg-x.jd.com
+adsanalytics.163.com
+ads
crash.163.com
+ads crashlytics.163.com
+ads g.163.com
+ads amazon-adsystem.com
+adsserving-sys.com
+adsssp.api.tappx.com
+adsa.alimama.cn
+adsacjs.aliyun.com
+ads!adash-c.m.taobao.com
+ads"adash-c.ut.taobao.com
+ads0#adash-emas.cn-hangzhou.aliyuncs.com
+adsadash.m.taobao.com
+ads#adash.man.aliyuncs.com
+ads!adashbc.m.taobao.com
+ads"adashbc.ut.taobao.com
+ads adashx.m.taobao.com
+adsadashx.ut.amap.com
+adsadashx.ut.ele.me
+ads adashx.ut.youku.com
+ads$adashx4ae.ut.taobao.com
+ads#adashx4yt.m.taobao.com
+ads#adashxgc.ut.taobao.com
+adsadsh.m.taobao.com
+adsafp.adchina.com
+adsafp.alicdn.com
+ads agoodm.m.taobao.com
+ads#agoodm.wapa.taobao.com
+ads
alipaylog.com
+adsamdc.alipay.com
+ads api.wapa.taobao.com
+ads#api.waptest.taobao.com
+adsapoll.m.taobao.com
+adsatanx.alicdn.com
+adsatanx2.alicdn.com
+ads!c-adash.m.taobao.com
+adscdn0.mobmore.com
+adsclick.aliyun.com
+ads&click.mz.simba.taobao.com
+adscm.ipinyou.com
+ads!dsp.simba.taobao.com
+adsex.mobmore.com
+ads
ex.puata.info
+ads!fav.simba.taobao.com
+ads$feedback.whalecloud.com
+adsff.win.taobao.com
+ads fm.p0y.cn
+adsg.click.taobao.com
+ads
+g.tbcdn.cn
+adsgma.alicdn.com
+adsgtms01.alicdn.com
+adsgtms02.alicdn.com
+adsgtms03.alicdn.com
+adsgtms04.alicdn.com
+adsh-adashx.ut.ele.me
+ads#h-adashx.ut.taobao.com
+ads"h-adashx.ut.youku.com
+ads&h-adashx4yt.ut.taobao.com
+adshydra.alibaba.com
+ads'hz.pre.tbusergw.taobao.net
+ads#hz.tbusergw.taobao.net
+ads
i.ipinyou.com
+adsinit.phpwind.com
+ads!intl.wapa.taobao.com
+ads$intl.waptest.taobao.com
+ads"jxlog.istreamsche.com
+adslog.umtrack.com
+ads!m-adash.m.taobao.com
+adsm.intl.taobao.com
+adsm.simba.taobao.com
+adsmatch.p4p.1688.com
+ads%material.istreamsche.com
+ads mlt01.com
+ads&nbsdk-baichuan.alicdn.com
+ads&nbsdk-baichuan.taobao.com
+ads"osfota.cdn.aliyun.com
+ads osupdate.aliyun.com
+ads&osupdateservice.yunos.com
+ads%pindao.huoban.taobao.com
+adspush.wandoujia.com
+adsre.m.taobao.com
+ads
re.taobao.com
+ads&redirect.simba.taobao.com
+adsrj.m.taobao.co
+adsrj.m.taobao.com
+adssdkinit.taobao.com
+adssimaba.taobao.com
+adssimba.m.taobao.com
+ads!srd.simba.taobao.com
+adsstats.ipinyou.com
+ads strip.taobaocdn.com
+ads$tanxlog.istreamsche.com
+adstejia.taobao.com
+adstemai.taobao.com
+ads!tns.simba.taobao.com
+ads tongji.linezing.com
+ads tvupgrade.yunos.com
+adstyh.taobao.com
+adsuserimg.qunar.com
+ads"v6-adashx.ut.amap.com
+ads%v6-adashx.ut.cainiao.com
+ads v6-adashx.ut.ele.me
+ads$v6-adashx.ut.taobao.com
+adsw.m.taobao.com
+adsyiliao.hupan.com
+ads fenxi.com
+adslianmeng.360.cn
+ads
+mediav.com
+adsmvad.com
+adsqhupdate.com
+adss.360.cn
+adss.so.360.cn
+adss.union.360.cn
+adsa.ckm.iqiyi.com
+adsad.m.iqiyi.com
+ads
afp.iqiyi.com
+adsc.uaa.iqiyi.com
+ads cloudpush.iqiyi.com
+ads"cm.passport.iqiyi.com
+adscupid.iqiyi.com
+ads#emoticon.sns.iqiyi.com
+ads!gamecenter.iqiyi.com
+ads!hotchat-im.iqiyi.com
+adsifacelog.iqiyi.com
+adsmbdlog.iqiyi.com
+ads msg.71.am
+adsmsg.video.qiyi.com
+ads msg2.video.qiyi.com
+ads#policy.video.iqiyi.com
+adsyuedu.iqiyi.com
+adsadnet.sohu.com
+adsads.sohu.com
+ads!adv-sv-show.focus.cn
+adsaty.sohu.com
+adsdata.vod.itc.cn
+adsepro.sogou.com
+adsgo.sohu.com
+adsgolden1.sogou.com
+adsimp.optaim.com
+adsinte.sogou.com
+adsinte.sogoucdn.com
+adslu.sogoucdn.com
+adspv.sohu.com
+adstheta.sogoucdn.com
+adstrack.sohu.com
+adsuranus.sogou.com
+adsv2.reachmax.cn
+ads)e8aeb8bbdbbd7.cdn.sohucs.com
+ads)643108e7617ef.cdn.sohucs.com
+adssupersonic.com
+adssupersonicads.com
+ads
+ssacdn.com
+ads)supersonicads-a.akamaihd.net
+adscdn.segment.com
+adsadcolony.com
+adsclick.hunantv.com
+adsda.hunantv.com
+adsda.mgtv.com
+adslog.hunantv.com
+adslog.v2.hunantv.com
+adsres.hunantv.com
+adsleanplum.com
+ads#api.game.letvstore.com
+adsark.letv.com
+adsdc.letv.com
+adsfz.letv.com
+adsg3.letv.com
+adsletv.allyes.com
+adsminisite.letv.com
+adsmsg.m.letv.com
+adsn.mark.letv.com
+adspro.hoye.letv.com
+adspro.letv.com
+ads
stat.letv.com
+ads"static.app.m.letv.com
+adsOB^speed\.(coe|open)\.ad\.[a-z]{2,6}\.prod\.hosts\.ooklaserver\.net$
+ads$adbehavior.ximalaya.com
+ads"adse.wsa.ximalaya.com
+adsadse.ximalaya.com
+ads
ads.yahoo.com
+adsgemini.yahoo.com
+ads
ysm.yahoo.com
+adsx.clearbitjs.com
+adsstatic.hotjar.com
+ads"ads.service.kugou.com
+ads%adserviceretry.kglink.cn
+ads%adserviceretry.kugou.com
+ads"js-agent.newrelic.com
+adsbds.snssdk.com
+adsctobsnssdk.com
+ads
dig.bdurl.net
+adsextlog.snssdk.com
+adsi.snssdk.com
+adsmcs.snssdk.com
+ads'pangolin-dsp-toutiao-b.com
+ads%pangolin-dsp-toutiao.com
+ads'pangolin-sdk-toutiao-b.com
+ads%pangolin-sdk-toutiao.com
+ads&pangolin-sdk-toutiao1.com
+ads pangolin.snssdk.com
+ads&panplayable-toutiao-b.com
+ads$panplayable-toutiao.com
+ads%pglstatp-sdk-toutiao.com
+ads(pglstatp-snssdk-toutiao.com
+ads#pglstatp-toutiao-b.com
+ads!pglstatp-toutiao.com
+ads%sf3-ttcdn-tos.pstatp.com
+ads2mdn-cn.net
+ads2mdn.net
+adsadmob-cn.com
+ads admob.com
+adsads.youtube.com
+adsadsense.com
+ads'adsensecustomsearchads.com
+ads%adsenseformobileapps.com
+ads!adservice.google.com
+ads$advertisercommunity.com
+ads%advertiserscommunity.com
+ads"adwords-community.com
+adsadwords.com
+adsadwordsexpress.com
+ads#app-measurement-cn.com
+ads app-measurement.com
+adsdoubleclick-cn.net
+adsdoubleclick.cn
+adsdoubleclick.com
+adsdoubleclick.net
+ads$google-analytics-cn.com
+ads!google-analytics.com
+adsgoogleadapis.com
+adsgoogleads-cn.com
+ads
googleads.com
+ads$googleadservices-cn.com
+ads!googleadservices.com
+ads googleadsserving.cn
+ads googleanalytics.com
+ads"googleoptimize-cn.com
+adsgoogleoptimize.com
+ads%googlesyndication-cn.com
+ads"googlesyndication.com
+ads$googletagmanager-cn.com
+ads!googletagmanager.com
+ads%googletagservices-cn.com
+ads"googletagservices.com
+ads*googletraveladservices-cn.com
+ads'googletraveladservices.com
+adsgooglevads-cn.com
+ads mail-ads.google.com
+ads)marketingplatform.google.com
+ads
+urchin.com
+ads!analytics.google.com
+ads>1^adservice\.google\.([a-z]{2}|com?)(\.[a-z]{2})?$
+ads openx.net
+ads openxadexchange.com
+adsopenxcdn.net
+ads openxenterprise.com
+adsopenxmarket.asia
+ads
cdn.pocoiq.cn
+ads
oct.pocoiq.cn
+ads!assets.growingio.com
+ads
onesignal.com
+adsads.pubmatic.com
+adsatom-data.io
+adsanalytics-data.io
+adsironbeast.io
+adsa.baidu.com
+ads
ad.duapps.com
+ads ad.player.baidu.com
+ads
adm.baidu.com
+adsadscdn.baidu.com
+adsadx.xiaodutv.com
+adsae.bdstatic.com
+ads
afd.baidu.com
+ads
als.baidu.com
+ads&api.mobula.sdk.duapps.com
+ads"api.tuisong.baidu.com
+adsappc.baidu.com
+adsb.bdstatic.com
+adsbaichuan.baidu.com
+adsbaidustatic.com
+adsbaidutv.baidu.com
+adsbanlv.baidu.com
+ads
bar.baidu.com
+adsbdplus.baidu.com
+adsbtlaunch.baidu.com
+adsc.baidu.com
+adscb.baidu.com
+adscbjs.baidu.com
+adscjhq.baidu.com
+adscleaner.baidu.com
+ads click.bes.baidu.com
+adsclick.qianqian.com
+adscm.baidu.com
+ads
cpro.baidu.cn
+adscpro.baidu.com
+ads!cpro.baidustatic.com
+ads!cpro.tieba.baidu.com
+ads"cpro.zhidao.baidu.com
+adscpro2.baidu.com
+ads"cpro2.baidustatic.com
+ads
cpu.baidu.com
+ads
crs.baidu.com
+adscstm.baidu.com
+adsdatax.baidu.com
+ads dd713.bj.bcebos.com
+ads dl.client.baidu.com
+adsdl.ops.baidu.com
+adsdl1sw.baidu.com
+adsdl2.bav.baidu.com
+adsdlsw.baidu.com
+adsdlsw.br.baidu.com
+adsdlswbr.baidu.com
+ads!dl-vip.bav.baidu.com
+ads(dl-vip.pcfaster.baidu.co.th
+ads#download.bav.baidu.com
+ads"download.sd.baidu.com
+adsdrmcmm.baidu.com
+adsduiwai.baidu.com
+ads dup.baidustatic.com
+ads
dxp.baidu.com
+ads
dzl.baidu.com
+adse.baidu.com
+adseclick.baidu.com
+adsecma.bdimg.com
+adsecmb.bdimg.com
+adsecmc.bdimg.com
+adseduad.baidu.com
+ads
eiv.baidu.com
+adsem.baidu.com
+adsentry.baidu.com
+ads
ers.baidu.com
+ads
f10.baidu.com
+ads#fc-feed.cdn.bcebos.com
+adsfclick.baidu.com
+adsfclog.baidu.com
+adsfeed.baidu.com
+adsg.baidu.com
+adsgimg.baidu.com
+adsgoutong.baidu.com
+adsgsp1.baidu.com
+adsguanjia.baidu.com
+ads"hao123union.baidu.com
+adshc.baidu.com
+adshm.baidu.com
+adshmma.baidu.com
+ads
hpd.baidu.com
+adsidm.bce.baidu.com
+adsidm-su.baidu.com
+adsiebar.baidu.com
+adsikcode.baidu.com
+adsimg.taotaosou.cn
+adsimg01.taotaosou.cn
+adsimgstat.baidu.com
+adsiwanad.baidu.com
+adsj.br.baidu.com
+adskstj.baidu.com
+ads log.music.baidu.com
+adslxbjs.baidu.com
+adsm1.baidu.com
+adsma.baidu.com
+adsmiao.baidu.com
+adsmobads.baidu.com
+ads"mobads-logs.baidu.com
+adsmpro.baidu.com
+adsmsite.baidu.com
+adsneirong.baidu.com
+adsnsclick.baidu.com
+ads#nsclickvideo.baidu.com
+adsopenrcv.baidu.com
+ads$pc.videoclick.baidu.com
+ads
pos.baidu.com
+adspups.bdimg.com
+ads%push.zhanzhang.baidu.com
+ads qianclick.baidu.com
+adsrelease.baidu.com
+adsres.mi.baidu.com
+ads"rigel.baidustatic.com
+ads#river.zhidao.baidu.com
+adsrj.baidu.com
+adsrplog.baidu.com
+adss.baidu.com
+ads!sa.tuisong.baidu.com
+adssclick.baidu.com
+adssestat.baidu.com
+adsshadu.baidu.com
+adsshare.baidu.com
+adssobar.baidu.com
+adssobartop.baidu.com
+adsspcode.baidu.com
+adsstat.v.baidu.com
+adssu.bdimg.com
+adssu.bdstatic.com
+adstk.baidu.com
+adstkweb.baidu.com
+ads"tob-cms.bj.bcebos.com
+adstongji.baidu.com
+adstoolbar.baidu.com
+adstracker.baidu.com
+adstuijian.baidu.com
+ads*uat1.bfsspadserver.8le8le.com
+ads#ubmcmm.baidustatic.com
+adsucstat.baidu.com
+adsulic.baidu.com
+ads ulog.imap.baidu.com
+adsunion.baidu.com
+ads!unionimage.baidu.com
+adsutility.baidu.com
+ads
utk.baidu.com
+ads videopush.baidu.com
+adsvv84.bj.bcebos.com
+adsw.gdown.baidu.com
+ads
w.x.baidu.com
+adswangmeng.baidu.com
+adsweishi.baidu.com
+ads$wenku-cms.bj.bcebos.com
+ads%wisepush.video.baidu.com
+adswkctj.baidu.com
+adswm.baidu.com
+adsznsv.baidu.com
+adszz.bdstatic.com
+adszzy1.quyaoya.com
+adsad.games.dmm.com
+adsbluekai.com
+adsfout.jp
+adsgmossp-sp.jp
+adsi-mobile.co.jp
+adsim-apps.net
+adsimpact-ad.jp
+ads ladsp.com
+ads
microad.co.jp
+ads
+microad.jp
+ads socdm.com
+ads
+adjust.com
+adsmlog.hiido.com
+adsylog.hiido.com
+adsinner-active.mobi
+ads ogury.com
+ads
+presage.io
+adsogury.co
+ads2016.sina.cn
+adsad.sina.com.cn
+adsadbox.sina.com.cn
+ads!adimages.sina.com.hk
+ads!adimg.mobile.sina.cn
+ads adimg.uve.weibo.com
+ads!adm.leju.sina.com.cn
+adsads.sina.com
+adsalitui.weibo.com
+adsapi.apps.sina.cn
+ads appgift.sinaapp.com
+ads#appsupdate.sinaapp.com
+adsatm.sina.com
+adsbeacon.sina.com.cn
+ads
biz.weibo.com
+ads%click.uve.mobile.sina.cn
+ads click.uve.weibo.com
+ads0#contentrecommend-out.mobile.sina.cn
+ads$count.video.sina.com.cn
+ads counter.sina.com.cn
+adscre.dp.sina.cn
+adscre-dp.sina.cn
+adsd00.sina.com.cn
+adsdcads.sina.com.cn
+adsdl.kjava.sina.cn
+adsdmp.sina.cn
+adsdp.im.weibo.cn
+ads
game.weibo.cn
+adsgame.weibo.com
+ads"gw5.push.mcp.weibo.cn
+ads"gw6.push.mcp.weibo.cn
+ads"int.dpool.sina.com.cn
+ads%interest.mix.sina.com.cn
+ads log.mix.sina.com.cn
+adslog.sina.cn
+ads!mg.games.sina.com.cn
+adsnewspush.sinajs.cn
+ads oascentral.sina.com
+ads#oascentral.sina.com.hk
+adsp4p.sina.com.cn
+adspalmnews.sina.cn
+adspay.mobile.sina.cn
+adspfp.sina.com.cn
+adspfpip.sina.com
+ads!promote.biz.weibo.cn
+adsrm.sina.com.cn
+adsrs.sinajs.cn
+ads"s.img.mix.sina.com.cn
+adssapi.sina.cn
+adssax.sina.cn
+adssax.sina.com.cn
+adssaxn.sina.com.cn
+adssaxs.sina.com.cn
+ads sbeacon.sina.com.cn
+ads"sdkapp.mobile.sina.cn
+ads!sdkapp.uve.weibo.com
+ads$sdkclick.mobile.sina.cn
+adsslog.sina.cn
+adsslog.sina.com.cn
+ads'staticadm.leju.sina.com.cn
+adstjs.sjs.sinajs.cn
+ads"trends.mobile.sina.cn
+ads"u1.img.mobile.sina.cn
+ads&wapwbclick.mobile.sina.cn
+ads!wbapp.mobile.sina.cn
+ads wbapp.uve.weibo.com
+ads#wbclick.mobile.sina.cn
+ads$wbpctips.mobile.sina.cn
+adswidget.weibo.com
+ads woocall.sina.com.cn
+adszymo.mps.weibo.com
+adsads.unitychina.cn
+ads$splash-ads.cdn.unity.cn
+ads%splash-ads.unitychina.cn
+adsunityads.unity.cn
+ads!unityads.unity3d.com
+ads#unityads.unitychina.cn
+ads"advertising.adobe.com
+ads
tubemogul.com
+ads'adeventtracker.spotify.com
+ads$adstudio-assets.scdn.co
+ads#bloodhound.spotify.com
+adsg1.tagtic.cn
+adsxy-log.tagtic.cn
+ads zynga.com
+ads#zyngaplayersupport.com
+ads!ads-api.duolingo.com
+ads!metrics.duolingo.com
+ads'analytics.vpc.duolingo.com
+ads log-sdk.gifshow.com
+adswlog.kuaishou.com
+ads decide.mixpanel.com
+ads mopub.com
+adsevt.mxplay.com
+adsuberads.com
+ads#collector.xhamster.com
+ads a.market.xiaomi.com
+adsad.intl.xiaomi.com
+ads ad.mi.com
+ads
ad.xiaomi.com
+adsad1.xiaomi.com
+adsadmob.xiaomi.com
+ads"adv.sec.intl.miui.com
+adsadv.sec.miui.com
+ads"misc.in.duokanbox.com
+adsmistat.xiaomi.com
+adssentry.d.mi.com
+ads sentry.d.xiaomi.net
+adstjqonline.cn
+ads"tracker.ai.xiaomi.com
+adstracking.miui.com
+adsactives.youku.com
+ads ad.api.3g.youku.com
+ads$ad.api.mobile.youku.com
+ads ad.mobile.youku.com
+ads(a-dxk.play.api.3g.youku.com
+ads
atm.youku.com
+ads#b.smartvideo.youku.com
+adsc.yes.youku.com
+adsdas.api.youku.com
+ads!das.mobile.youku.com
+ads!dev-push.m.youku.com
+adsdl.g.youku.com
+adsdmapp.youku.com
+adse.stat.ykimg.com
+ads#gamex.mobile.youku.com
+ads!guanggaoad.youku.com
+ads"huodong.vip.youku.com
+adshz.youku.com
+adsiyes.youku.com
+adsl.ykimg.com
+adslstat.youku.com
+ads mobilemsg.youku.com
+ads
msg.youku.com
+adsmyes.youku.com
+ads
p.l.youku.com
+adspl.youku.com
+ads#passport-log.youku.com
+adsp-log.ykimg.com
+adspush.m.youku.com
+ads
r.l.youku.com
+ads
s.p.youku.com
+adssdk.m.youku.com
+adsstat.youku.com
+ads$statis.api.3g.youku.com
+ads&store.tv.api.3g.youku.com
+ads&store.xl.api.3g.youku.com
+adstdrec.youku.com
+adstest.ott.youku.com
+ads
v.l.youku.com
+adsval.api.youku.com
+ads
wan.youku.com
+adsykatr.youku.com
+adsykrec.youku.com
+ads emogi.com
+ads"static.sensorsdata.cn
+adsalog.umeng.com
+ads alog.umengcloud.com
+ads
+w.cnzz.com
+adsz.gds.cnzz.com
+ads
ads.wteam.xyz
+adsapplovin.com
+ads
+applvn.com
+adsad.hpplay.cn
+adsadeng.hpplay.cn
+ads#ads-uo.api.leiniao.com
+ads#ads-ut.api.leiniao.com
+adsads.api.my7v.com
+adsads.huan.tv
+adsads.huantest.com
+adsadvapi.joyplus.tv
+ads advapikj.joyplus.tv
+ads$euads-o.api.leiniao.com
+ads!hwads-t.api.my7v.com
+ads kuyun.com
+ads!testads.api.my7v.com
+ads%api-adservices.apple.com
+adsiadsdk.apple.com
+ads
iad.apple.com
+ads qwapi.com
+adsdata.flurry.com
+ads ad.qq.com
+ads
ad.qun.qq.com
+ads!adfilter.imtt.qq.com
+ads
adping.qq.com
+adsadpm.app.qq.com
+adsadsclick.qq.com
+adsadsfile.qq.com
+adsadshmmsg.qq.com
+adsadslvfile.qq.com
+adsadslvseed.qq.com
+ads%adsmind.apdcdn.tc.qq.com
+adsadsqqclick.qq.com
+adsadstestview.qq.com
+adsadsview.qq.com
+adsadsview2.qq.com
+adsadv.app.qq.com
+adsadver.qq.com
+ads
beacon.qq.com
+adsbeaconcdn.qq.com
+ads
btrace.qq.com
+adse.qq.com
+ads
+gdt.qq.com
+adsisdspeed.qq.com
+adslog.tbs.qq.com
+adsmpush.qq.com
+ads
mtrace.qq.com
+ads
pgdt.gtimg.cn
+ads
pingjs.qq.com
+adspush.qq.com
+ads
sngmta.qq.com
+ads
stat.y.qq.com
+adstajs.qq.com
+adstcss.qq.com
+adstrace.qq.com
+adsugdtimg.com
+ads
+wit.qq.com
+ads
+
+CATEGORY-PAYMENT-IR
+payping.irasanpardakht.combehpardakht.comiranicard.ir
mydigipay.com
+pay.irasanpardakht.net
+pec.ir
+sep.irsadadpsp.irzarinpal.comshaparak.irweswap.digital
pep.co.ir
+
+MIAOPAImiaopai.com
+
+OPENAI openaiapi-site.azureedge.net2.openaicom-api-bdcpf8c6d2e9atf6.z01.azurefd.net1-openaicomproductionae4b.blob.core.windows.net.*production-openaicom-storage.azureedge.net
+ai.comchatgpt.com
oaistatic.comoaiusercontent.com
+openai.com!openai.com.cdn.cloudflare.net=9^chatgpt-async-webps-prod-\S+-\d+\.webpubsub\.azure\.com$$o33249.ingest.sentry.io
+ads openaicom.imgix.net
+ads
+
+WINDY
windy.com
+
+ ATLASSIAN
atlassian.com
atlassian.netbitbucket.io
bitbucket.org
statuspage.io
+trello.com
trellocdn.com
+=
+CATEGORY-CAScrl.microsoft.commscrl.microsoft.comocsp.microsoft.comoneocsp.microsoft.comcdn.js7k.compublicca.googleapis.com#preprod-publicca.googleapis.comclients1.google.compki.google.com yahoogodaddy
+flickryahoo.ruaffirmtrust.come-tugra.comfirmaprofesional.comfnmt.es
harica.grinfocert.digitalinfocert.it
+netlock.hutrustcor.catrustcor.comtrustisfps.com
lencr.orgletsencrypt.comletsencrypt.orgvodafone.comvodafone.devodafone.itcertinomis.com
certinomis.frdigicert-cn.comdigicert-validation.comdigicert.comdigitalcertvalidation.comfreessl.comgeotrust.comrapidssl.com
+thawte.com
thawte.de
thawte.frquovadisglobal.compublic-trust.compki.googx.cogodaddy.comcamerfirma.com
verisign.mobi
verisign.jobswisecoin.com
+wiseid.comwisekey.com
verisign.info
identrust.com
identrust.netverisign.in
+msocsp.combuypass-ssl.combuypass.com
+buypass.no
+buypass.seminid.noentrust.netentrustdatacard.comyahoo.amatos.net
+myatos.netcertificat2.comtrendmicro.com
verisign.asiaverisign.orgsecomtrust.netverisign.proverisign.dkverisign.deverisign.hkstarfieldtech.comactalis.com
+actalis.it
globalsign.esglobalsign-media.com
globalsign.chglobalsign.cloud
globalsign.nlglobalsign.net
globalsign.be
globalsign.fr
globalsign.euverisign.se
verisign.nameverisign.twverisign.bizverisign.usverisign.frverisign.vnmanagedpki.comsymantec.com
symcb.com
symcd.comtelekom.com
+telekom.de
+telesec.deamazontrust.comawstrust.com
+ss2.us
gandi.netenterprisessl.comhackerguardian.cominstantssl.comoptimumssl.compositivessl.comsectigo.comtrust-provider.com
usertrust.comaoc.catcatcert.catincommon-rsa.org
netsolssl.comd-trust.netcertsign.ro
+oath.cloudoath.comouroath.comstatic-verizon.com
+uplynk.comverizon.comverizon.netverizonbusinessfios.comverizondigitalmedia.comverizonenterprise.comverizonfios.comverizonmedia.comverizonwireless.comvzw.com
+xo.comomniroot.comyahoo.psyahoo.snyahoo.atyahoo.azyahoo.bayahoo.beyahoo.bgyahoo.biyahoo.bsyahoo.btyahoo.byyahoo.ca
yahoo.catyahoo.cdyahoo.cgyahoo.chyahoo.clyahoo.cmstaticflickr.com
+flickr.net
+flickr.comflic.kryahoo.aeyusercontent.com
ymail.comyimg.jpyimg.comyho.comyahoosportsbook.comyahoosandbox.comyahoomusic.comyahoohealth.comyahoofinance.comyahoodns.net
yahooapis.comtechcrunch.com
yahoo.com
+myguide.hkmaktoob.comyahoo.wsyahoo.vgyahoo.tnyahoo.asyahoo.tmyahoo.tlyahoo.deyahoo.tkyahoo.tgyahoo.ptyahoo.sryahoo.soyahoo.isyahoo.smyahoo.skyahoo.siyahoo.dkyahoo.sgyahoo.djyahoo.seyahoo.rwaccv.esverisign.comyahoo.ste-szigno.huyahoo.pnyahoo.plyahoo.phyahoo.nuyahoo.noyahoo.nl
yahoo.netyahoo.mxyahoo.mwyahoo.mkyahoo.meyahoo.mdyahoo.lvyahoo.luyahoo.ltyahoo.layahoo.joyahoo.czyahoo.jeyahoo.ityahoo.shyahoo.dmyahoo.eeyahoo.esyahoo.fiyahoo.fmyahoo.fryahoo.geyahoo.ggyahoo.glyahoo.gmyahoo.gpyahoo.gryahoo.gyyahoo.hkyahoo.hryahoo.huyahoo.ieyahoo.imyahoo.inverisigninc.comverisign.esverisign.chverisign.sgverisign.netzert.chtrustsign.chtrustdoc.chswisstsa.liswisstsa.chswissstick.comswisssigngroup.comswisssigngroup.chswisssigner.comswisssigner.ch
swisssign.org
swisssign.netswisssign.li
swisssign.comswisssign.chswisssign-group.liswisssign-group.comswisssign-group.chswissign.liswissign.com
+swissid.chssl-certificate.chrootsigning.comroot-signing.chpki-poste.chpki-posta.chyahoo.ropki-post.chmanaged-pki.demanaged-pki.chdigitalid.ch
digital-id.ch
trustwave.comssl.com
comodoca4.com
comodoca3.com
comodoca2.comcomodoca.com
+comodo.net
+comodo.comocsp-responder.comocsp-certum.com
certum.plyahoo.co.idyahoo-news.com.hkyahoo.co.tzyahoo.co.thyahoo.co.nzyahoo.co.mzyahoo.co.kryahoo.co.jpyahoo.co.inyahoo.co.ilyahoo.com.pryahoo.co.cryahoo.co.ckyahoo.co.bwyahoo.co.aoyahoo.co.veyahoo.co.viyahoo.com.mtcybertrust.co.jpcybertrust.ne.jpyahoo.com.pyyahoo.com.afyahoo.com.agyahoo.com.aiyahoo.com.aryahoo.com.auyahoo.com.boyahoo.com.phyahoo.com.coyahoo.com.doyahoo.com.ecyahoo.co.uzyahoo.com.esyahoo.com.giyahoo.com.gtyahoo.com.hkyahoo.com.kwyahoo.com.lbyahoo.com.pkyahoo.com.mxyahoo.com.myyahoo.com.nayahoo.com.nfyahoo.com.omyahoo.com.payahoo.com.peyahoo.com.bryahoo.co.ukyahoo.com.egyahoo.co.zayahoo.com.sayahoo.com.sbyahoo.com.sgyahoo.com.svyahoo.com.tjyahoo.com.tryahoo.com.twyahoo.com.uayahoo.com.uyyahoo.com.vcyahoo.com.vnyahoo.com.bzyahoo.com.lyyahoo.com.bdyahoo.com.fjecert.gov.hkhongkongpost.gov.hkglobalsign.co.ukglobalsign.com.auglobalsign.com.hkglobalsign.com.sgglobalsign.com.brmanagedpki.ne.jpsecom.co.jpmyvodafone.com.au
eca.hinet.netidentrust.co.ukwisekey.com.hktwca.com.twvodafone.com.trverisign.com.esverisign.com.vnverisign.com.brverisign.co.inverisign.com.twverisign.com.sgverisign.com.hkverisign.com.cnverisign.com.auverisign.co.ukvodafone.com.auvodafone.co.ukmyvodafone.com.wsgtlsca.nat.gov.tw dcocsp.cn
+cndigicert.cn
+cnwww.microsoft.com
+cn)certs-lb.apple.com.akadns.net
+cncerts.apple.com
+cn'crl-lb.apple.com.akadns.net
+cn
crl.apple.com
+cn(ocsp-lb.apple.com.akadns.net
+cnocsp.apple.com
+cn)ocsp2-lb.apple.com.akadns.net
+cnocsp2.apple.com
+cnalphassl.com
+cneasy-signing.com
+cn
globalsign.cn
+cnglobalsign.com
+cnglobalsigncdn.com
+cn4(cdn.globalsigncdn.com.cdn.cloudflare.net
+cn oemssl.cn
+cn(oemssl.cn.cdn.cloudflare.net
+cnsectigochina.com
+cn/#sectigochina.com.cdn.cloudflare.net
+cntrust-provider.cn
+cnyahoo.cn
+cnyahoo.com.cn
+cn
ads.yahoo.com
+adsgemini.yahoo.com
+ads
ysm.yahoo.com
+ads sslcom.cn
+cn!pki-goog.l.google.com
+cn
+c.pki.goog
+cn
+i.pki.goog
+cn
+o.pki.goog
+cncrl.pki.goog
+cn
crls.pki.goog
+cn
ocsp.pki.goog
+cn
+^
+GATEIOgate.iogatedata.orggateimg.comgateio.livegateio.services
+r
+MOJANGcallersbane.com
minecraft.netminecraftservices.comminecraftshop.com
+mojang.com
+
+TGBUS
tgbus.com
+o
+
+CHATWHORESchatwhores.comchatwhores.netchatwhores.orgchatwhores.sex
chatwhores.tv
+7
+DARTdart.devdartlang.orgdartpad.dev
+P
+DIGITALPLAYGROUNDdigitalplayground.com digitalplaygroundnetwork.com
+
+
+CATEGORY-NTP
+ntp.se
+ntp.ufe.cz
+ntp.nat.ms
+ntp.nic.czntp.ripe.netntp.fiord.ru
clock.isc.orgpool.ntp.orgtime.cloudflare.comtime.nrc.catime.windows.comntp.nict.jpntp2.wakwak.comntp1.wakwak.comats1.e-timing.ne.jpntp0.ring.gr.jpntp1.tohoku.ac.jpntp.tohoku.ac.jpntp2.ring.gr.jpntp1.ring.gr.jp
ntp.tut.ac.jpntp2.tohoku.ac.jpntp-tk02.ocn.ad.jpntp-os01.ocn.ad.jpntp1.plala.or.jpntp2.plala.or.jpntp.ring.gr.jpntp-tk01.ocn.ad.jpntp3.v6.mfeed.ad.jps2csntp.miz.nao.ac.jpntp.t.ring.gr.jpntp.dnsbalance.ring.gr.jpntp.nc.u-tokyo.ac.jpntp2.v6.mfeed.ad.jpntp1.v6.mfeed.ad.jpntp3.jst.mfeed.ad.jpntp2.jst.mfeed.ad.jpntp1.jst.mfeed.ad.jpntp.jst.mfeed.ad.jp^time(.euro)?.apple.com$!^time([1-5])?\.facebook\.com$^time([1-4])?.google.com$^((((ut1-wwv)|(ntp\-(b|d|wwv))|(time(\-(([a-e]\-(g|b))|([a-e]\-wwv)))?))\.nist\.gov)|((ntp-c|ut1-time)|(utcnist(2|3)?))\.colorado\.edu)$ ^ntp[0-7]\.ntp-servers\.net$&^ntp([1-7])?\.aliyun\.com$
+cntime.izatcloud.net
+cntime.xtracloud.net
+cn'^ntp([1-5])?\.tencent\.com$
+cncn.pool.ntp.org
+cnntp.neu.edu.cn
+cnntp.ntsc.ac.cn
+cn
+ntp.org.cn
+cn
+
+FANSTA-)misa-prod.s3.ap-northeast-1.amazonaws.com
fansta.meaga-expo.comcosfans-tw.com2023aga.oen.tw
+
+GUO!himalaya-exchange.zendesk.comg-tvapp.com
+gclubs.com
gettr.comgfashion.com
gnews.orggtv.orggtv1.orggtvmediagroupfairfund.com
guo.media
gwiki.net
gwins.orghimalaya.exchangehpayshop.comnfsc.globalnfscdict.comnfscofficial.com
+rexcha.comrolfoundation.orgrolsociety.org!yiqiedoushiganggangkaishi.org
+w
+JWPLAYER
+jwpcdn.comjwplatform.comjwplayer.com
+jwpltx.com
+jwpsrv.comlongtailvideo.com
+O
+MIKROTIKmikrotik.com mt.lv
mynetname.netrouterboard.com
+C
+ADDTHISaddthis.comaddthiscdn.comaddthisedge.com
+e
+
ATOM-DATA-ADSatom-data.io
+adsanalytics-data.io
+adsironbeast.io
+ads
+C
+ BITWARDEN
bitwarden.combitwarden.eu
bitwarden.net
+1
+TIANCITYtiancity.comtiancitycdn.com
+:
+JAVDB
javdb.comjdbimgs.com
jdbstatic.com
+/
+MAPBOX
+mapbox.com mapbox.cn
+cn
+
+WIXeditorx.comparastorage.comwix-code.comwix.comwixanswers.comwixapps.net
wixmp.comwixsite.com
wixstatic.com
+0
+BITLY
+bit.ly
bitly.combitly.is
+E
+HCAPTCHAbotstop.comhcaptcha.comhcaptchastatus.com
+
+HETZNERfirst-ns.de
hetzner.cloudhetzner.comhetzner.company
+hetzner.dehtznr.li
second-ns.comsecond-ns.deyour-objectstorage.comyour-server.de#sentry.hetzner.company
+ads
+
+ISGD is.gdv.gd
+
+SKYskysky.com
skyassets.comskyoceanrescue.comskyoceanrescue.deskyoceanrescue.it
skysports.comskysports.frskysports.ieskysportsonline.comskysportsracing.com
+n
+YUNLAOPO
doure.net
+kuaipa.net
+miaopa.netyunlaopo.ccyunlaopo.comyunlaopo.net
+?
+
CAPITALONLINEcapitalonline.netmirrors.yun-idc.com
+
+CHATANGOchatango.com
+
+CHINAUNICOM
10010.com114menhu.comchinaunicom.commychinaunicom.com wo.cnwo116114.com10010.com.cnchinaunicom.com.cn
wo.com.cnchinaunicom.com.hk
+!cn"chinaunicomglobal.com
+!cn cuniq.com
+!cn
+B
+LKCOFFEElkcoffee.comluckincoffeecdn.comyyds.co
+
+ MCDONALDSmcd
mcdonaldsmcdonalds.noaboutmcdonalds.commcdonaldsapps.commcdonalds.hk
happymeal.com
mcdonalds.commcdindia.commcdonalds.semcdindonesia.commcdonalds.itmcdonalds.camcdonalds-online.commcdonalds.behappymealdigital.commcd.commcdonaldsarabia.commcdonalds.com.lbmcdonalds.co.idmcdelivery.com.twmcdelivery.com.aumcdelivery.co.krmcdonalds.co.krmcdelivery.com.mymcdelivery.com.phmcdelivery.com.sgmcd-holdings.co.jpmcdonalds.co.jpmcdonalds.com.twhappymeal.com.aumcdelivery.co.idmcdonalds.co.nzmcdonalds.co.ukmcdelivery.co.inmcdonalds.com.hkmcdonalds.com.mymcdonalds.com.phmcdonalds.com.auhappymeal.co.nzmcdonaldsparties.co.nz4008-517-517.cn
+cnmcd.cn
+cnmcdonalds.com.cn
+cn
+s
+STRIPElink.com$ stripe-terminal-local-reader.net
+stripe.comstripe.network
stripecdn.com
+;
+WJX
+sojump.com
+wjx.cnwjx.comwjx.top
+B
+DISQUS
+disqus.com
disquscdn.comdisqusservice.com
+
+GOGgog.comgog-statics.comgog.qtlglb.com
+cn$gogalaxy.gog-statics.com
+cn'menu-static.gog-statics.com
+cn'productcard.gog-statics.com
+cn(static-login.gog-statics.com
+cn'www4-static.gog-statics.com
+cn."^cdn-akamai-.+\.gog-services\.com$
+cn(^gog-cdn-.+\.footprint\.net$
+cn, ^images(-\d)?\.gog-statics\.com$
+cn
+:
+INSHOT
inshot.cc
+inshot.com
inshotapp.com
+\
+
INSTAGRAM-ADS graph.instagram.com
+ads)graph-fallback.instagram.com
+ads
+L
+ JUTONGBAOguanggaotongapp.cnjutongbao.online
jutongbao.top
+?
+BOOTCSSbootcss.com
+bootcdn.cnphpcomposer.com
+F
+COINONEcoinonecore.comcoinonecorp.com
coinone.co.kr
+
+EPOCHMEDIAGROUP
epochtimes.sepersianepochtimes.comedninfo.comepoch.cloud
epochbase.comepochbuy.comepochcar.comepochhk.com
epochmall.comepochmediagroup.comdajiyuan.comepochstories.com
epochtime.comepochtimes-bg.comepochtimes-romania.com
epochtimes.bgepochtimes.com
epochtimes.cz
epochtimes.de
epochtimes.euvelkaepocha.cztheepochtimessubscribe.com
epochtimes.pl
renminbao.com
epochtimes.ru
ntdvn.com
epochtimes.fr
epochtimes.it
epochtimes.jp
epochtimes.nltheepochtimes.comdajiyuan.eu
epochshop.comepochtimeshk.orgepochtimestr.com
epochweek.comepochweekly.comerabaru.net
+etviet.comlagranepoca.comminghui.orgntd.com
+ntd.tv
ntdca.com
+ntdimg.comntdtv.cantdtvla.comntdtv-dc.comntdtv.ru
ntdtv.org
ntdtv.comntdtv.krntdtv.jpntdtv.com.twntdtv.co.krepochtimes.com.uaepochtimes.com.twepochtimes.com.sgepochtimes.com.brepochtimes.com.auepochtimes.co.ukepochtimes.co.krepochtimes.co.ilepoch.org.il
++
+
+KUBERNETES
kubernetes.io
+k8s.io
+4
+MAILRUimgsmail.rumail.rumycdn.me
+
+MORTEINmortein.commorteincam.compifpafarabia.com
mortein.co.in
mortein.co.nz
mortein.co.zamortein.com.aumortein.com.brmortein.com.ngmortein.com.pk
+mortein.cn
+cn
+O
+PUBMATICpubmatic.compubmatic.co.jpads.pubmatic.com
+ads
+
+VOXMEDIAcstatic.net
+curbed.com
eater.comfunnyordie.commeridian.netpolygon.com
+racked.com
+recode.netsbnation.comtheverge.comvox-cdn.comvox.comvoxcreative.comvoxfieldguide.comvoxmedia.com
+voxops.net
+
+AISIKUlearnywhere.cnbbdc.cnbeingfine.cn1tyy.cnqtyy.cn
+coolab.top
+is-cool.cn
+qlisten.cnlangeasy.cnbeingfine.com.cnlangeasy.com.cnlearnywhere.com.cnis-cool.com.cnbubei.com.cn
+
+EHENTAIe-hentai.orgehgt.org
ehtracker.org
+ehwiki.orgexhentai.orghath.networkhentaiathome.nethentaiverse.org
+"
+EPICBROWSERepicbrowser.com
+
+
+EVERBRIGHTebtrust.com
ebfortune.com
+eb-ind.comebasset.comebchina.comebchinaintl.comceblease.com
ebfcn.comsunlife-everbright.comcebbank.comebscn-am.com
ebscn.comeverbright.com
secec.com
+ebf.com.cn
+
+ZEETV
+z5.app
+z5.comzee5.comzee5.inzee5.tvzeebioskop.com
zeetv.com
zeeuk.comzeetv.co.uk
+&
+DOCIN
docin.com
+douding.cn
+
+
+FAMILYMART
famima.vnfamifun.com.twfamily.co.jp
family.com.twfamilymart.com.myfamilymart.com.phfamilymart.com.cn
+cn
+8
+NPMJS
npm.community
npmjs.com
npmjs.org
+Q
+CATEGORY-DEV!d29vzk4ow07wi7.cloudfront.net.*gitlab-assets.oss-cn-hongkong.aliyuncs.comdevelopers.facebook.comhomebrew.bintray.comaz764295.vo.msecnd.net)%bingsettingssearch.trafficmanager.netdefault.exp-tas.comdeveloper.microsoft.com'#download.visualstudio.microsoft.comdtlgalleryint.cloudapp.net poshtestgallery.cloudapp.net"psg-int-centralus.cloudapp.netpsg-int-eastus.cloudapp.netrink.hockeyapp.net+'vscode-sync-insiders.trafficmanager.net"vscode-sync.trafficmanager.net vscode.blob.core.windows.netvscode.search.windows.net vsmarketplacebadge.apphb.comcdn.jsdelivr.net-)appleworldwidedeveloper.hb-api.omtrdc.net)%appleworldwidedeveloper.sc.omtrdc.net#p-events-delivery.akamaized.net!github-cloud.s3.amazonaws.comfirebase.google.comfirebase.googleapis.com#firebaseappcheck.googleapis.com,(firebasedynamiclinks-ipv4.googleapis.com,(firebasedynamiclinks-ipv6.googleapis.com'#firebasedynamiclinks.googleapis.com)%firebaseinappmessaging.googleapis.com($firebaseinstallations.googleapis.com%!firebaselogging-pa.googleapis.com"firebaselogging.googleapis.com+'firebaseperusertopics-pa.googleapis.com'#firebaseremoteconfig.googleapis.comamp.akamaized.netjavaembedly.com
+sankie.netartixlinux.orgatom.io
+badgen.netbitvise.com
cdnjs.com
+centos.orgchocolatey.orgclojure.org
+cnpmjs.org
+cygwin.com
+cython.orgdeno.com
deno.land
+dev.toelixir-lang.org
+elrepo.org
+erlang.org
+ffmpeg.orgfreebsd.org
+gentoo.orggetcomposer.orggetzola.orggit-scm.comgnu.org
+hex.pm
+hexdocs.pm
+ius.io
+jenkins.io
+js.orgembed.lykali.orglinuxfromscratch.org
linuxmint.comlua.orgmacports.orgmariadb.org
mingw.orgmobatek.net
mysql.com
nixos.orgnodesource.comnotepad-plus-plus.org
openresty.orgopenssl.orgopensuse.org
packagist.orgpcre.org
phantomjs.orgphp.net
putty.orgpostgresql.org
r-project.orgraspberrypi.orgraspbian.orgregex101.com
rpmfusion.orgscientificlinux.orgscoop.shshellcheck.net
+shields.io
+sqlite.orgsublimetext.comtermius.com
unpkg.comvideojs.comvideolan.orgwapm.io
wasmer.io
wireshark.org x.orgxposed.infoyarnpkg.comzsh.orghuggingface.co
jfrog.com
jfrog.orgbintray.comfastlane.cifastlane.tools
getfedora.orgfedoraforum.orgfedorapeople.orgfedoraproject.orgfedoramagazine.orgflutter.devflutterapp.compub.dev
+gitlab.com
gitlab.io
+gitlab.netgitlab-static.net
+redhat.com
+redhat.orgmystrikingly.comstrikingly.comstrikinglycdn.comtopcoder.comaccountkit.comatscaleconference.combotorch.org
+buck.build
buckbuild.comcomponentkit.orgdraftjs.org
+f8.comfacebookappcenter.infofacebookappcenter.netfacebookappcenter.orgfacebookconnect.comfacebookdevelopergarage.comfaciometrics.comfasttext.ccfbf8.comfbinfer.comfblitho.comfbredex.com
+fbrell.comflow.devflow.orgflowtype.org
frescolib.orghacklang.orghhvm.commakeitopen.commcrouter.netmcrouter.orgmessengerdevelopers.com
+ogp.meopengraphprotocol.comopengraphprotocol.org
parse.compyrobot.org
react.comreactjs.comreactjs.orgrecoiljs.orgrocksdb.comrocksdb.netrocksdb.orgyogalayout.com
fury.blogfury.cofury.dev
fury.helpfury.iogemfury.comosdn.netperl.orgcpan.orgmetacpan.org
+modperl.plredis.io
redislabs.com
rust-lang.org
rustup.rs
crates.iodocs.rsbrew.shremirepo.netflathub.orgflatpak.org
grazie.aiadaptivecards.ioapi-extractor.com
+gitbook.io
+apisof.netappcenter.ms
+blazor.netbotframework.comcodethemicrobit.comdevopsassessment.netdot.netgamesstack.comgraphengine.ioinsiderdevtour.com
+jwt.msmicrobit.orgmicrosoftadc.commicrosoftgamestack.commicrosoftiotinsiderlabs.commicrosoftreactor.infomicrosoftreactor.netmicrosoftreactor.orgmicrosoftsilverlight.commicrosoftsilverlight.orgmicrosoftsilverlight.netmicrosoftsqlserver.com
mmdnn.commono-project.commsdn.commsinnovationchallenge.commspairlift.commsropendata.com
nuget.org
nugettest.orgopentranslatorstothings.orgposhtestgallery.compwabuilder.comadventofcode.comsqlserveronlinux.comtimelinestoryteller.comuwpcommunitytoolkit.comvisualstudio-staging.comvisualstudio.comvisualstudio.covisualstudio.euvisualstudio.net
vfsforgit.com
vfsforgit.orgvsassets.io
+vscode.devvscode-cdn.netvscode-unpkg.netxamarin.comgitbook.com
xdaforums.comopenwrt.orglede-project.org qt.ioqt-project.org
unity.comunity3d.comjupyter.org
+apache.org
launchpad.nethaskell.orghaskellstack.orgstackage.orgjsdelivr.comjsdelivr.netesm.run
+debian.org
+dotdeb.orgalpinelinux.orgjava.comjava.net
nginx.com
nginx.org
ruby-lang.orgrubygems.org
+termux.com
+termux.dev
+termux.orgcompose-spec.io
+docker.com
docker.io
kubernetes.io
+k8s.iopolymer-project.orgpolymerproject.orgvim.orgpiwheels.org
askubuntu.comblogoverflow.comcodeforaliving.iomathoverflow.netserverfault.comsstatic.net
stackapps.com
stackauth.comstackexchange.com
stackmod.blogstackoverflow.blogstackoverflow.costackoverflow.comstackoverflow.emailstackoverflowbusiness.comstackoverflowcareers.comstacksnippets.net
superuser.comtex-talk.netthesffblog.comanaconda.cloudanaconda.comanaconda.orgconda.ioresearchkit.tvcups.orgcarekit.orgresearchandcare.orgappleswift.comwebobjects.comfoundationdb.orgmacosforge.orgmacruby.commacruby.netmacruby.orgapple-mapkit.com
swift.orgapple-cloudkit.com
wpewebkit.orgresearchkit.hkresearchkit.netresearchkit.orgcalendarserver.orgservicetalk.io
+webkit.org
webkitgtk.orgxda-developers.comxda-cdn.com
linux.org
+kernel.org
archlinux.orgarchlinuxarm.orgbraventures.combraveux.com
+compass.isfightforux.comforthebadge.comstockagainstphotography.comgithubhackathon.comghcr.iogithubnext.comgithubpreview.devgithub.blog
+github.comgithub.community
+github.dev
github.io
githubapp.comgithubassets.comgithubcopilot.com
npmjs.orgdependabot.com
+git.iogithubstatus.comgithubuniverse.comgithubusercontent.com
myoctocat.comopensource.guiderepo.newthegithubshop.com
npm.community
npmjs.commochajs.orgjqueryui.comintellij.comintellij.netintellij.org
jetbrains.com
jetbrains.netjetbrains.spacejetbrains.teamdatalore.iokotlinlang.org jb.ggbootstrapcdn.comgetbootstrap.com
canonical.complayerjs.iolaunchpadcontent.netlaunchpadlibrarian.comlaunchpadlibrarian.netlaunchpadlibrarian.orgsnapcraft.iosnapstore.io
+ubuntu.com
+ubuntu.netubuntuforums.orgubuntu-touch.iogo-lang.comgo-lang.netgo-lang.org
+go.dev
godoc.org
+golang.com
+golang.net
+golang.orgcodeberg.org
codeberg.pagefirebase.comfirebase.iofirebaseapp.comfirebaseio.comfontawesome.comfortawesome.com
+v8.dev
v8project.organdroid.comandroidify.comdart.devdartlang.orgdartpad.devmongodb.commongodb.org
pycon.orgpypa.iopypi.iopypi.org
+python.orgpythonhosted.org
+azurecr.ioecr.aws
+gcr.ioquay.iojquerymobile.com
+jquery.comelectronjs.org
consul.io
hashicorp.comnomadproject.io
packer.ioterraform.iovagrantcloud.com
vagrantup.comvaultproject.ioreadthedocs-hosted.comreadthedocs.comreadthedocs.ioreadthedocs.org
+01.orghyperscan.iointellinuxgraphics.comintellinuxgraphics.net
+oneapi.comopenvinotoolkit.orgsnap-telemetry.io
+acpica.comclearlinux.org
+ospray.net
+ospray.orgscala-lang.org
scala-sbt.org
sourcehut.org sr.htlfai.foundationlinuxfoundation.orgopenjsf.org
+nodejs.orgamp.devampproject.comampproject.netampproject.orgmcr.microsoft.complaygrounds-cdn.apple.comdevimages-cdn.apple.comdevstreaming-cdn.apple.comdeveloper.apple.comvisualstudio.co.ukgreenend.org.ukblob.core.windows.netHD^github-production-release-asset-[0-9a-zA-Z]{6}\.s3\.amazonaws\.com$)%.+\.dkr\.ecr\.[^\.]+\.amazonaws\.com$microsoftreactor.cn
+cn#microsoftreactor.com.cn
+cnreactorms.com.cn
+cnads.unitychina.cn
+ads$splash-ads.cdn.unity.cn
+ads%splash-ads.unitychina.cn
+adsunityads.unity.cn
+ads!unityads.unity3d.com
+ads#unityads.unitychina.cn
+adsresearchkit.cn
+cnresearchkit.com.cn
+cn
+swiftui.cn
+cnswiftui.com.cn
+cncdn.jetbrains.com
+cn)download-cdn.jetbrains.com.cn
+cn-!firebase-settings.crashlytics.com
+cncdn.ampproject.org
+cn
+9
+DISCUZcomsenz.com
+discuz.net
+discuz.org
+8
+DIVARdivar.clouddivar.irdivarcdn.com
+
+QUALCOMMqualcomm.sc.omtrdc.netqualcomm.comsnapdragonbooth.comcdmatech.comdragoniscoming.comgobianywhere.comhellosmartbook.com
+brewmp.comipleadership.org
+iskoot.commeetsmartbook.compatenttruth.org
pixtronix.comqctconnect.com
+qprize.comqualcomm-email.com
xtracloud.netwirelessreach.comairgonetworks.comimod.comberkanawireless.comwipower.com
+uplinq.com
snapdragon.cnqualcomm.dequalcomm.frqualcommhalo.comqualcommlabs.comqualcommmea.comqualcommretail.comqualcommventures.cnqualcommventures.com
qualphone.comquicinc.comqualcomm.com.twqualcomm.co.ukqualcomm.com.brqualcomm.co.jpqualcomm.co.inqualcomm.co.idqualcomm.co.krgpsonextra.net
+cn
izatcloud.net
+cn!qceventscenter.com.cn
+cnqualcomm.cn
+cn*qualcomm.cn.cdn.cloudflare.net
+cnxtracloud.cn
+cn
+
+SQUAREUPcash.appcashbycashapp.comgosq.cogosq.comissquaredown.comissquareup.commkt.comsellercommunity.comsquarecapital.com
squarecdn.comsquarecloudservices.comsquareup.com
+
+TSQUARE
+tsquare.tv
+
+TVB
tvbweekly.combigbigshop.com
encoretvb.comtvb.comtvbanywhere.com
+tvbusa.com
mytvsuper.com
+tvb.com.autvbanywhere.com.sgtvbeventpower.com.hkbigbigchannel.com.hktvmedia.net.autvbc.com.cn
+cn
+C
+DAILYMOTIONdailymotion.comdm-event.net
dmcdn.net
+5
+MIAOMIAOZHE
miaomiaoz.commiaomiaozhe.com
+#
+ MOPUB-ADS mopub.com
+ads
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/ic_launcher-playstore.png b/Android-kotlin-Code/app/src/main/ic_launcher-playstore.png
new file mode 100644
index 0000000..7264f7b
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/ic_launcher-playstore.png differ
diff --git a/Android-kotlin-Code/app/src/main/ic_launcher-web.png b/Android-kotlin-Code/app/src/main/ic_launcher-web.png
new file mode 100644
index 0000000..853d58d
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/ic_launcher-web.png differ
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/AccessControlActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/AccessControlActivity.kt
new file mode 100644
index 0000000..b357534
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/AccessControlActivity.kt
@@ -0,0 +1,137 @@
+package com.github.kr328.clash
+
+import android.Manifest.permission.INTERNET
+import android.content.ClipData
+import android.content.ClipboardManager
+import android.content.pm.ApplicationInfo
+import android.content.pm.PackageInfo
+import android.content.pm.PackageManager
+import androidx.core.content.getSystemService
+import com.github.kr328.clash.design.AccessControlDesign
+import com.github.kr328.clash.design.model.AppInfo
+import com.github.kr328.clash.design.util.toAppInfo
+import com.github.kr328.clash.service.store.ServiceStore
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.selects.select
+import kotlinx.coroutines.withContext
+
+class AccessControlActivity : BaseActivity() {
+ override suspend fun main() {
+ val service = ServiceStore(this)
+
+ val selected = withContext(Dispatchers.IO) {
+ service.accessControlPackages.toMutableSet()
+ }
+
+ defer {
+ withContext(Dispatchers.IO) {
+ service.accessControlPackages = selected
+ }
+ }
+
+ val design = AccessControlDesign(this, uiStore, selected)
+
+ setContentDesign(design)
+
+ design.requests.send(AccessControlDesign.Request.ReloadApps)
+
+ while (isActive) {
+ select {
+ events.onReceive {
+
+ }
+ design.requests.onReceive {
+ when (it) {
+ AccessControlDesign.Request.ReloadApps -> {
+ design.patchApps(loadApps(selected))
+ }
+ AccessControlDesign.Request.SelectAll -> {
+ val all = withContext(Dispatchers.Default) {
+ design.apps.map(AppInfo::packageName)
+ }
+
+ selected.clear()
+ selected.addAll(all)
+
+ design.rebindAll()
+ }
+ AccessControlDesign.Request.SelectNone -> {
+ selected.clear()
+
+ design.rebindAll()
+ }
+ AccessControlDesign.Request.SelectInvert -> {
+ val all = withContext(Dispatchers.Default) {
+ design.apps.map(AppInfo::packageName).toSet() - selected
+ }
+
+ selected.clear()
+ selected.addAll(all)
+
+ design.rebindAll()
+ }
+ AccessControlDesign.Request.Import -> {
+ val clipboard = getSystemService()
+ val data = clipboard?.primaryClip
+
+ if (data != null && data.itemCount > 0) {
+ val packages = data.getItemAt(0).text.split("\n").toSet()
+ val all = design.apps.map(AppInfo::packageName).intersect(packages)
+
+ selected.clear()
+ selected.addAll(all)
+ }
+
+ design.rebindAll()
+ }
+ AccessControlDesign.Request.Export -> {
+ val clipboard = getSystemService()
+
+ val data = ClipData.newPlainText(
+ "packages",
+ selected.joinToString("\n")
+ )
+
+ clipboard?.setPrimaryClip(data)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private suspend fun loadApps(selected: Set): List =
+ withContext(Dispatchers.IO) {
+ val reverse = uiStore.accessControlReverse
+ val sort = uiStore.accessControlSort
+ val systemApp = uiStore.accessControlSystemApp
+
+ val base = compareByDescending { it.packageName in selected }
+ val comparator = if (reverse) base.thenDescending(sort) else base.then(sort)
+
+ val pm = packageManager
+ val packages = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS)
+
+ packages.asSequence()
+ .filter {
+ it.packageName != packageName
+ }
+ .filter {
+ it.packageName == "android" || it.requestedPermissions?.contains(INTERNET) == true
+ }
+ .filter {
+ systemApp || !it.isSystemApp
+ }
+ .map {
+ it.toAppInfo(pm)
+ }
+ .sortedWith(comparator)
+ .toList()
+ }
+
+ private val PackageInfo.isSystemApp: Boolean
+ get() {
+ return applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM != 0
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ApkBrokenActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ApkBrokenActivity.kt
new file mode 100644
index 0000000..33f4145
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ApkBrokenActivity.kt
@@ -0,0 +1,20 @@
+package com.github.kr328.clash
+
+import android.content.Intent
+import android.net.Uri
+import com.github.kr328.clash.design.ApkBrokenDesign
+import kotlinx.coroutines.isActive
+
+class ApkBrokenActivity : BaseActivity() {
+ override suspend fun main() {
+ val design = ApkBrokenDesign(this)
+
+ setContentDesign(design)
+
+ while (isActive) {
+ val req = design.requests.receive()
+
+ startActivity(Intent(Intent.ACTION_VIEW).setData(Uri.parse(req.url)))
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/AppCrashedActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/AppCrashedActivity.kt
new file mode 100644
index 0000000..0a0a204
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/AppCrashedActivity.kt
@@ -0,0 +1,33 @@
+package com.github.kr328.clash
+
+import com.github.kr328.clash.common.compat.versionCodeCompat
+import com.github.kr328.clash.common.log.Log
+import com.github.kr328.clash.design.AppCrashedDesign
+import com.github.kr328.clash.log.SystemLogcat
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.withContext
+
+class AppCrashedActivity : BaseActivity() {
+ override suspend fun main() {
+ val design = AppCrashedDesign(this)
+
+ setContentDesign(design)
+
+ val packageInfo = withContext(Dispatchers.IO) {
+ packageManager.getPackageInfo(packageName, 0)
+ }
+
+ Log.i("App version: versionName = ${packageInfo.versionName} versionCode = ${packageInfo.versionCodeCompat}")
+
+ val logs = withContext(Dispatchers.IO) {
+ SystemLogcat.dumpCrash()
+ }
+
+ design.setAppLogs(logs)
+
+ while (isActive) {
+ events.receive()
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt
new file mode 100644
index 0000000..c600c4e
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt
@@ -0,0 +1,62 @@
+package com.github.kr328.clash
+
+import android.content.pm.PackageManager
+import com.github.kr328.clash.common.util.componentName
+import com.github.kr328.clash.design.AppSettingsDesign
+import com.github.kr328.clash.design.model.Behavior
+import com.github.kr328.clash.service.store.ServiceStore
+import com.github.kr328.clash.util.ApplicationObserver
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.selects.select
+
+class AppSettingsActivity : BaseActivity(), Behavior {
+ override suspend fun main() {
+ val design = AppSettingsDesign(
+ this,
+ uiStore,
+ ServiceStore(this),
+ this,
+ clashRunning,
+ )
+
+ setContentDesign(design)
+
+ while (isActive) {
+ select {
+ events.onReceive {
+ when (it) {
+ Event.ClashStart, Event.ClashStop, Event.ServiceRecreated ->
+ recreate()
+ else -> Unit
+ }
+ }
+ design.requests.onReceive {
+ ApplicationObserver.createdActivities.forEach {
+ it.recreate()
+ }
+ }
+ }
+ }
+ }
+
+ override var autoRestart: Boolean
+ get() {
+ val status = packageManager.getComponentEnabledSetting(
+ RestartReceiver::class.componentName
+ )
+
+ return status == PackageManager.COMPONENT_ENABLED_STATE_ENABLED
+ }
+ set(value) {
+ val status = if (value)
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED
+ else
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED
+
+ packageManager.setComponentEnabledSetting(
+ RestartReceiver::class.componentName,
+ status,
+ PackageManager.DONT_KILL_APP,
+ )
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/BaseActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/BaseActivity.kt
new file mode 100644
index 0000000..402dc4c
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/BaseActivity.kt
@@ -0,0 +1,226 @@
+package com.github.kr328.clash
+
+import android.content.res.Configuration
+import android.os.Build
+import android.os.Bundle
+import android.view.View
+import androidx.activity.result.contract.ActivityResultContract
+import androidx.appcompat.app.AppCompatActivity
+import com.github.kr328.clash.common.compat.isAllowForceDarkCompat
+import com.github.kr328.clash.common.compat.isLightNavigationBarCompat
+import com.github.kr328.clash.common.compat.isLightStatusBarsCompat
+import com.github.kr328.clash.common.compat.isSystemBarsTranslucentCompat
+import com.github.kr328.clash.core.bridge.ClashException
+import com.github.kr328.clash.design.Design
+import com.github.kr328.clash.design.model.DarkMode
+import com.github.kr328.clash.design.store.UiStore
+import com.github.kr328.clash.design.ui.DayNight
+import com.github.kr328.clash.design.util.resolveThemedBoolean
+import com.github.kr328.clash.design.util.resolveThemedColor
+import com.github.kr328.clash.design.util.showExceptionToast
+import com.github.kr328.clash.remote.Broadcasts
+import com.github.kr328.clash.remote.Remote
+import com.github.kr328.clash.util.ActivityResultLifecycle
+import com.github.kr328.clash.util.ApplicationObserver
+import kotlinx.coroutines.*
+import kotlinx.coroutines.channels.Channel
+import java.util.*
+import java.util.concurrent.atomic.AtomicInteger
+import kotlin.coroutines.resume
+import kotlin.coroutines.suspendCoroutine
+
+abstract class BaseActivity> : AppCompatActivity(),
+ CoroutineScope by MainScope(),
+ Broadcasts.Observer {
+
+ protected val uiStore by lazy { UiStore(this) }
+ protected val events = Channel(Channel.UNLIMITED)
+ protected var activityStarted: Boolean = false
+ protected val clashRunning: Boolean
+ get() = Remote.broadcasts.clashRunning
+ protected var design: D? = null
+ set(value) {
+ field = value
+ if (value != null) {
+ setContentView(value.root)
+ } else {
+ setContentView(View(this))
+ }
+ }
+
+ private var defer: suspend () -> Unit = {}
+ private var deferRunning = false
+ private val nextRequestKey = AtomicInteger(0)
+ private var dayNight: DayNight = DayNight.Day
+
+ protected abstract suspend fun main()
+
+ fun defer(operation: suspend () -> Unit) {
+ this.defer = operation
+ }
+
+ suspend fun startActivityForResult(
+ contracts: ActivityResultContract,
+ input: I,
+ ): O = withContext(Dispatchers.Main) {
+ val requestKey = nextRequestKey.getAndIncrement().toString()
+
+ ActivityResultLifecycle().use { lifecycle, start ->
+ suspendCoroutine { c ->
+ activityResultRegistry.register(requestKey, lifecycle, contracts) {
+ c.resume(it)
+ }.apply { start() }.launch(input)
+ }
+ }
+ }
+
+ suspend fun setContentDesign(design: D) {
+ suspendCoroutine {
+ window.decorView.post {
+ this.design = design
+ it.resume(Unit)
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ applyDayNight()
+
+ launch {
+ main()
+ }
+ }
+
+ override fun onStart() {
+ super.onStart()
+ activityStarted = true
+ Remote.broadcasts.addObserver(this)
+ events.trySend(Event.ActivityStart)
+ }
+
+ override fun onStop() {
+ super.onStop()
+ activityStarted = false
+ Remote.broadcasts.removeObserver(this)
+ events.trySend(Event.ActivityStop)
+ }
+
+ override fun onDestroy() {
+ design?.cancel()
+ cancel()
+ super.onDestroy()
+ }
+
+ override fun finish() {
+ if (deferRunning) return
+ deferRunning = true
+
+ launch {
+ try {
+ defer()
+ } finally {
+ withContext(NonCancellable) {
+ super.finish()
+ }
+ }
+ }
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+
+ if (queryDayNight(newConfig) != dayNight) {
+ ApplicationObserver.createdActivities.forEach {
+ it.recreate()
+ }
+ }
+ }
+
+ open fun shouldDisplayHomeAsUpEnabled(): Boolean {
+ return true
+ }
+
+ override fun onSupportNavigateUp(): Boolean {
+ this.onBackPressed()
+ return true
+ }
+
+ override fun onProfileChanged() {
+ events.trySend(Event.ProfileChanged)
+ }
+
+ override fun onProfileUpdateCompleted(uuid: UUID?) {
+ events.trySend(Event.ProfileUpdateCompleted)
+ }
+
+ override fun onProfileUpdateFailed(uuid: UUID?, reason: String?) {
+ events.trySend(Event.ProfileUpdateFailed)
+ }
+
+ override fun onProfileLoaded() {
+ events.trySend(Event.ProfileLoaded)
+ }
+
+ override fun onServiceRecreated() {
+ events.trySend(Event.ServiceRecreated)
+ }
+
+ override fun onStarted() {
+ events.trySend(Event.ClashStart)
+ }
+
+ override fun onStopped(cause: String?) {
+ events.trySend(Event.ClashStop)
+
+ if (cause != null && activityStarted) {
+ launch {
+ design?.showExceptionToast(ClashException(cause))
+ }
+ }
+ }
+
+ private fun queryDayNight(config: Configuration = resources.configuration): DayNight {
+ return when (uiStore.darkMode) {
+ DarkMode.Auto -> if (config.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES) DayNight.Night else DayNight.Day
+ DarkMode.ForceLight -> DayNight.Day
+ DarkMode.ForceDark -> DayNight.Night
+ }
+ }
+
+ private fun applyDayNight(config: Configuration = resources.configuration) {
+ val dayNight = queryDayNight(config)
+ when (dayNight) {
+ DayNight.Night -> theme.applyStyle(R.style.AppThemeDark, true)
+ DayNight.Day -> theme.applyStyle(R.style.AppThemeLight, true)
+ }
+
+ window.isAllowForceDarkCompat = false
+ window.isSystemBarsTranslucentCompat = true
+
+ window.statusBarColor = resolveThemedColor(android.R.attr.statusBarColor)
+ window.navigationBarColor = resolveThemedColor(android.R.attr.navigationBarColor)
+
+ if (Build.VERSION.SDK_INT >= 23) {
+ window.isLightStatusBarsCompat = resolveThemedBoolean(android.R.attr.windowLightStatusBar)
+ }
+
+ if (Build.VERSION.SDK_INT >= 27) {
+ window.isLightNavigationBarCompat = resolveThemedBoolean(android.R.attr.windowLightNavigationBar)
+ }
+
+ this.dayNight = dayNight
+ }
+
+ enum class Event {
+ ServiceRecreated,
+ ActivityStart,
+ ActivityStop,
+ ClashStop,
+ ClashStart,
+ ProfileLoaded,
+ ProfileChanged,
+ ProfileUpdateCompleted,
+ ProfileUpdateFailed,
+ }
+}
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ExternalControlActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ExternalControlActivity.kt
new file mode 100644
index 0000000..d690e8a
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ExternalControlActivity.kt
@@ -0,0 +1,92 @@
+package com.github.kr328.clash
+
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import android.widget.Toast
+import androidx.activity.result.contract.ActivityResultContracts
+import com.github.kr328.clash.common.constants.Intents
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.setUUID
+import com.github.kr328.clash.design.MainDesign
+import com.github.kr328.clash.design.ui.ToastDuration
+import com.github.kr328.clash.remote.Remote
+import com.github.kr328.clash.remote.StatusClient
+import com.github.kr328.clash.service.model.Profile
+import com.github.kr328.clash.util.startClashService
+import com.github.kr328.clash.util.stopClashService
+import com.github.kr328.clash.util.withProfile
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.launch
+import java.util.*
+
+class ExternalControlActivity : Activity(), CoroutineScope by MainScope() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ when(intent.action) {
+ Intent.ACTION_VIEW -> {
+ val uri = intent.data ?: return finish()
+ val url = uri.getQueryParameter("url") ?: return finish()
+
+ launch {
+ val uuid = withProfile {
+ val type = when (uri.getQueryParameter("type")?.lowercase(Locale.getDefault())) {
+ "url" -> Profile.Type.Url
+ "file" -> Profile.Type.File
+ else -> Profile.Type.Url
+ }
+ val name = uri.getQueryParameter("name") ?: getString(R.string.new_profile)
+
+ create(type, name).also {
+ patch(it, name, url, 0)
+ }
+ }
+ startActivity(PropertiesActivity::class.intent.setUUID(uuid))
+ finish()
+ }
+ }
+
+ Intents.ACTION_TOGGLE_CLASH -> if(Remote.broadcasts.clashRunning) {
+ stopClash()
+ }
+ else {
+ startClash()
+ }
+
+ Intents.ACTION_START_CLASH -> if(!Remote.broadcasts.clashRunning) {
+ startClash()
+ }
+ else {
+ Toast.makeText(this, R.string.external_control_started, Toast.LENGTH_LONG).show()
+ }
+
+ Intents.ACTION_STOP_CLASH -> if(Remote.broadcasts.clashRunning) {
+ stopClash()
+ }
+ else {
+ Toast.makeText(this, R.string.external_control_stopped, Toast.LENGTH_LONG).show()
+ }
+ }
+ return finish()
+ }
+
+ private fun startClash() {
+// if (currentProfile == null) {
+// Toast.makeText(this, R.string.no_profile_selected, Toast.LENGTH_LONG).show()
+// return
+// }
+ val vpnRequest = startClashService()
+ if (vpnRequest != null) {
+ Toast.makeText(this, R.string.unable_to_start_vpn, Toast.LENGTH_LONG).show()
+ return
+ }
+ Toast.makeText(this, R.string.external_control_started, Toast.LENGTH_LONG).show()
+ }
+
+ private fun stopClash() {
+ stopClashService()
+ Toast.makeText(this, R.string.external_control_stopped, Toast.LENGTH_LONG).show()
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/FilesActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/FilesActivity.kt
new file mode 100644
index 0000000..f0e2ba3
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/FilesActivity.kt
@@ -0,0 +1,160 @@
+@file:Suppress("BlockingMethodInNonBlockingContext")
+
+package com.github.kr328.clash
+
+import android.Manifest
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.net.Uri
+import android.os.Build
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.core.content.ContextCompat
+import com.github.kr328.clash.common.util.grantPermissions
+import com.github.kr328.clash.common.util.ticker
+import com.github.kr328.clash.common.util.uuid
+import com.github.kr328.clash.design.FilesDesign
+import com.github.kr328.clash.design.util.showExceptionToast
+import com.github.kr328.clash.remote.FilesClient
+import com.github.kr328.clash.service.model.Profile
+import com.github.kr328.clash.util.fileName
+import com.github.kr328.clash.util.withProfile
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.selects.select
+import java.util.*
+import java.util.concurrent.TimeUnit
+
+class FilesActivity : BaseActivity() {
+ override suspend fun main() {
+ val uuid = intent.uuid ?: return finish()
+ val profile = withProfile { queryByUUID(uuid) } ?: return finish()
+ val root = uuid.toString()
+
+ val design = FilesDesign(this)
+ val client = FilesClient(this)
+ val stack = Stack()
+
+ design.configurationEditable = profile.type != Profile.Type.Url
+ design.fetch(client, stack, root)
+
+ setContentDesign(design)
+
+ val ticker = ticker(TimeUnit.MINUTES.toMillis(1))
+
+ while (isActive) {
+ select {
+ events.onReceive {
+ when (it) {
+ Event.ActivityStart, Event.ActivityStop -> {
+ design.fetch(client, stack, root)
+ }
+ else -> Unit
+ }
+ }
+ design.requests.onReceive {
+ try {
+ when (it) {
+ FilesDesign.Request.PopStack -> {
+ if (stack.empty()) {
+ finish()
+ } else {
+ stack.pop()
+ }
+ }
+ is FilesDesign.Request.OpenDirectory -> {
+ stack.push(it.file.id)
+ }
+ is FilesDesign.Request.OpenFile -> {
+ startActivityForResult(
+ ActivityResultContracts.StartActivityForResult(),
+ Intent(Intent.ACTION_VIEW).setDataAndType(
+ client.buildDocumentUri(it.file.id),
+ "text/plain"
+ ).grantPermissions()
+ )
+ }
+ is FilesDesign.Request.DeleteFile -> {
+ client.deleteDocument(it.file.id)
+ }
+ is FilesDesign.Request.RenameFile -> {
+ val newName = design.requestFileName(it.file.name)
+
+ client.renameDocument(it.file.id, newName)
+ }
+ is FilesDesign.Request.ImportFile -> {
+ if (Build.VERSION.SDK_INT >= 23) {
+ val hasPermission = ContextCompat.checkSelfPermission(
+ this@FilesActivity,
+ Manifest.permission.READ_EXTERNAL_STORAGE
+ ) == PackageManager.PERMISSION_GRANTED
+
+ if (!hasPermission) {
+ val granted = startActivityForResult(
+ ActivityResultContracts.RequestPermission(),
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ )
+
+ if (!granted) {
+ return@onReceive
+ }
+ }
+ }
+
+ val uri: Uri? = startActivityForResult(
+ ActivityResultContracts.GetContent(),
+ "*/*"
+ )
+
+ if (uri != null) {
+ if (it.file == null) {
+ val name = design.requestFileName(uri.fileName ?: "File")
+
+ client.importDocument(stack.last(), uri, name)
+ } else {
+ client.copyDocument(it.file!!.id, uri)
+ }
+ }
+ }
+ is FilesDesign.Request.ExportFile -> {
+ val uri: Uri? = startActivityForResult(
+ ActivityResultContracts.CreateDocument("text/plain"),
+ it.file.name
+ )
+
+ if (uri != null) {
+ client.copyDocument(uri, it.file.id)
+ }
+ }
+ }
+ } catch (e: Exception) {
+ design.showExceptionToast(e)
+ }
+
+ design.fetch(client, stack, root)
+ }
+ if (activityStarted) {
+ ticker.onReceive {
+ design.updateElapsed()
+ }
+ }
+ }
+ }
+ }
+
+ override fun onBackPressed() {
+ design?.requests?.trySend(FilesDesign.Request.PopStack)
+ }
+
+ private suspend fun FilesDesign.fetch(client: FilesClient, stack: Stack, root: String) {
+ val documentId = stack.lastOrNull() ?: root
+ val files = if (stack.empty()) {
+ val list = client.list(documentId)
+ val config = list.firstOrNull { it.id.endsWith("config.yaml") }
+
+ if (config == null || config.size > 0) list else listOf(config)
+ } else {
+ client.list(documentId)
+ }
+
+ swapFiles(files, stack.empty())
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/HelpActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/HelpActivity.kt
new file mode 100644
index 0000000..af25b81
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/HelpActivity.kt
@@ -0,0 +1,19 @@
+package com.github.kr328.clash
+
+import android.content.Intent
+import com.github.kr328.clash.design.HelpDesign
+import kotlinx.coroutines.isActive
+
+class HelpActivity : BaseActivity() {
+ override suspend fun main() {
+ val design = HelpDesign(this) {
+ startActivity(Intent(Intent.ACTION_VIEW).setData(it))
+ }
+
+ setContentDesign(design)
+
+ while (isActive) {
+ events.receive()
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LogcatActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LogcatActivity.kt
new file mode 100644
index 0000000..04a2487
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LogcatActivity.kt
@@ -0,0 +1,187 @@
+package com.github.kr328.clash
+
+import android.content.ComponentName
+import android.content.Context
+import android.content.ServiceConnection
+import android.net.Uri
+import android.os.IBinder
+import android.widget.Toast
+import androidx.activity.result.contract.ActivityResultContracts
+import com.github.kr328.clash.common.compat.startForegroundServiceCompat
+import com.github.kr328.clash.common.log.Log
+import com.github.kr328.clash.common.util.fileName
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.ticker
+import com.github.kr328.clash.core.model.LogMessage
+import com.github.kr328.clash.design.LogcatDesign
+import com.github.kr328.clash.design.dialog.withModelProgressBar
+import com.github.kr328.clash.design.model.LogFile
+import com.github.kr328.clash.design.ui.ToastDuration
+import com.github.kr328.clash.design.util.showExceptionToast
+import com.github.kr328.clash.log.LogcatFilter
+import com.github.kr328.clash.log.LogcatReader
+import com.github.kr328.clash.util.logsDir
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.selects.select
+import kotlinx.coroutines.withContext
+import java.io.OutputStreamWriter
+import kotlin.coroutines.resume
+import kotlin.coroutines.suspendCoroutine
+
+class LogcatActivity : BaseActivity() {
+ private var conn: ServiceConnection? = null
+
+ override suspend fun main() {
+ val fileName = intent?.fileName
+
+ if (fileName != null) {
+ val file = LogFile.parseFromFileName(fileName) ?: return showInvalid()
+
+ return mainLocalFile(file)
+ }
+
+ return mainStreaming()
+ }
+
+ private suspend fun mainLocalFile(file: LogFile) {
+ val messages = try {
+ LogcatReader(this, file).readAll()
+ } catch (e: Exception) {
+ Log.e("Fail to read log file ${file.fileName}: ${e.message}")
+ return showInvalid()
+ }
+
+ val design = LogcatDesign(this, false)
+
+ setContentDesign(design)
+
+ design.patchMessages(messages, 0, messages.size)
+
+ while (isActive) {
+ when (design.requests.receive()) {
+ LogcatDesign.Request.Delete -> {
+ withContext(Dispatchers.IO) {
+ logsDir.resolve(file.fileName).delete()
+ }
+
+ finish()
+ }
+ LogcatDesign.Request.Export -> {
+ val output = startActivityForResult(
+ ActivityResultContracts.CreateDocument("text/plain"),
+ file.fileName
+ )
+
+ if (output != null) {
+ try {
+ withContext(Dispatchers.IO) {
+ writeLogTo(messages, file, output)
+ }
+
+ design.showToast(R.string.file_exported, ToastDuration.Long)
+ } catch (e: Exception) {
+ design.showExceptionToast(e)
+ }
+ }
+ }
+ else -> Unit
+ }
+ }
+ }
+
+ private suspend fun mainStreaming() {
+ val design = LogcatDesign(this, true)
+
+ setContentDesign(design)
+
+ startForegroundServiceCompat(LogcatService::class.intent)
+
+ val logcat = bindLogcatService()
+ val ticker = ticker(500)
+
+ var initial = true
+
+ while (isActive) {
+ select {
+ events.onReceive {
+
+ }
+ design.requests.onReceive {
+ when (it) {
+ LogcatDesign.Request.Close -> {
+ stopService(LogcatService::class.intent)
+
+ finish()
+ }
+ else -> Unit
+ }
+ }
+ if (activityStarted) {
+ ticker.onReceive {
+ val snapshot = logcat.snapshot(initial) ?: return@onReceive
+
+ design.patchMessages(snapshot.messages, snapshot.removed, snapshot.appended)
+
+ initial = false
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ conn?.apply(this::unbindService)
+
+ super.onDestroy()
+ }
+
+ private suspend fun bindLogcatService(): LogcatService {
+ return suspendCoroutine { ctx ->
+ bindService(LogcatService::class.intent, object : ServiceConnection {
+ override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
+ val srv = service!!.queryLocalInterface("") as LogcatService
+
+ ctx.resume(srv)
+
+ conn = this
+ }
+
+ override fun onServiceDisconnected(name: ComponentName?) {
+ conn = null
+ }
+ }, Context.BIND_AUTO_CREATE)
+ }
+ }
+
+ @Suppress("BlockingMethodInNonBlockingContext")
+ private suspend fun writeLogTo(messages: List, file: LogFile, uri: Uri) {
+ LogcatFilter(OutputStreamWriter(contentResolver.openOutputStream(uri)), this).use {
+ withContext(Dispatchers.Main) {
+ withModelProgressBar {
+ configure {
+ isIndeterminate = true
+ max = messages.size
+ }
+
+ withContext(Dispatchers.IO) {
+ it.writeHeader(file.date)
+
+ messages.forEachIndexed { idx, msg ->
+ configure {
+ isIndeterminate = false
+ progress = idx
+ }
+
+ it.writeMessage(msg)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private fun showInvalid() {
+ Toast.makeText(this, R.string.invalid_log_file, Toast.LENGTH_LONG).show()
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LogcatService.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LogcatService.kt
new file mode 100644
index 0000000..da0673d
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LogcatService.kt
@@ -0,0 +1,164 @@
+package com.github.kr328.clash
+
+import android.app.PendingIntent
+import android.app.Service
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.content.ServiceConnection
+import android.os.Binder
+import android.os.IBinder
+import android.os.IInterface
+import androidx.core.app.NotificationChannelCompat
+import androidx.core.app.NotificationCompat
+import androidx.core.app.NotificationManagerCompat
+import com.github.kr328.clash.common.compat.getColorCompat
+import com.github.kr328.clash.common.compat.pendingIntentFlags
+import com.github.kr328.clash.common.log.Log
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.core.model.LogMessage
+import com.github.kr328.clash.log.LogcatCache
+import com.github.kr328.clash.log.LogcatWriter
+import com.github.kr328.clash.service.RemoteService
+import com.github.kr328.clash.service.remote.ILogObserver
+import com.github.kr328.clash.service.remote.IRemoteService
+import com.github.kr328.clash.service.remote.unwrap
+import com.github.kr328.clash.util.logsDir
+import kotlinx.coroutines.*
+import kotlinx.coroutines.channels.Channel
+import java.io.IOException
+import java.util.*
+
+class LogcatService : Service(), CoroutineScope by CoroutineScope(Dispatchers.Default), IInterface {
+ private val cache = LogcatCache()
+
+ private val connection = object : ServiceConnection {
+ override fun onServiceDisconnected(name: ComponentName?) {
+ stopSelf()
+ }
+
+ override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
+ startObserver(service ?: return stopSelf())
+ }
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+
+ running = true
+
+ createNotificationChannel()
+
+ showNotification()
+
+ bindService(RemoteService::class.intent, connection, Context.BIND_AUTO_CREATE)
+ }
+
+ override fun onDestroy() {
+ cancel()
+
+ unbindService(connection)
+
+ stopForeground(true)
+
+ running = false
+
+ super.onDestroy()
+ }
+
+ override fun onBind(intent: Intent?): IBinder {
+ return this.asBinder()
+ }
+
+ override fun asBinder(): IBinder {
+ return object : Binder() {
+ override fun queryLocalInterface(descriptor: String): IInterface {
+ return this@LogcatService
+ }
+ }
+ }
+
+ suspend fun snapshot(full: Boolean): LogcatCache.Snapshot? {
+ return cache.snapshot(full)
+ }
+
+ private fun startObserver(binder: IBinder) {
+ if (!binder.isBinderAlive)
+ return stopSelf()
+
+ launch(Dispatchers.IO) {
+ val service = binder.unwrap(IRemoteService::class).clash()
+ val channel = Channel(CACHE_CAPACITY)
+
+ try {
+ logsDir.mkdirs()
+
+ LogcatWriter(this@LogcatService).use {
+ val observer = object : ILogObserver {
+ override fun newItem(log: LogMessage) {
+ channel.trySend(log)
+ }
+ }
+
+ service.setLogObserver(observer)
+
+ while (isActive) {
+ val msg = channel.receive()
+
+ it.appendMessage(msg)
+
+ cache.append(msg)
+ }
+ }
+ } catch (e: IOException) {
+ Log.e("Write log file: $e", e)
+ } finally {
+ withContext(NonCancellable) {
+ if (binder.isBinderAlive) {
+ service.setLogObserver(null)
+ }
+
+ stopSelf()
+ }
+ }
+ }
+ }
+
+ private fun createNotificationChannel() {
+ NotificationManagerCompat.from(this)
+ .createNotificationChannel(
+ NotificationChannelCompat.Builder(
+ CHANNEL_ID,
+ NotificationManagerCompat.IMPORTANCE_DEFAULT
+ ).setName(getString(R.string.clash_logcat)).build()
+ )
+ }
+
+ private fun showNotification() {
+ val notification = NotificationCompat
+ .Builder(this, CHANNEL_ID)
+ .setSmallIcon(R.drawable.ic_logo_service)
+ .setColor(getColorCompat(R.color.color_clash_light))
+ .setContentTitle(getString(R.string.clash_logcat))
+ .setContentText(getString(R.string.running))
+ .setContentIntent(
+ PendingIntent.getActivity(
+ this,
+ R.id.nf_logcat_status,
+ LogcatActivity::class.intent
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP),
+ pendingIntentFlags(PendingIntent.FLAG_UPDATE_CURRENT)
+ )
+ )
+ .build()
+
+ startForeground(R.id.nf_logcat_status, notification)
+ }
+
+ companion object {
+ private const val CHANNEL_ID = "clash_logcat_channel"
+ private const val CACHE_CAPACITY = 128
+
+ var running: Boolean = false
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LogsActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LogsActivity.kt
new file mode 100644
index 0000000..0a482b6
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/LogsActivity.kt
@@ -0,0 +1,71 @@
+package com.github.kr328.clash
+
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.setFileName
+import com.github.kr328.clash.design.LogsDesign
+import com.github.kr328.clash.design.model.LogFile
+import com.github.kr328.clash.util.logsDir
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.selects.select
+import kotlinx.coroutines.withContext
+
+class LogsActivity : BaseActivity() {
+ override suspend fun main() {
+ if (LogcatService.running) {
+ return startActivity(LogcatActivity::class.intent)
+ }
+
+ val design = LogsDesign(this)
+
+ setContentDesign(design)
+
+ while (isActive) {
+ select {
+ events.onReceive {
+ when (it) {
+ Event.ActivityStart -> {
+ val files = withContext(Dispatchers.IO) {
+ loadFiles()
+ }
+
+ design.patchLogs(files)
+ }
+ else -> Unit
+ }
+ }
+ design.requests.onReceive {
+ when (it) {
+ LogsDesign.Request.StartLogcat -> {
+ startActivity(LogcatActivity::class.intent)
+
+ finish()
+ }
+ LogsDesign.Request.DeleteAll -> {
+ if (design.requestDeleteAll()) {
+ withContext(Dispatchers.IO) {
+ deleteAllLogs()
+ }
+
+ events.trySend(Event.ActivityStart)
+ }
+ }
+ is LogsDesign.Request.OpenFile -> {
+ startActivity(LogcatActivity::class.intent.setFileName(it.file.fileName))
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private fun loadFiles(): List {
+ val list = cacheDir.resolve("logs").listFiles()?.toList() ?: emptyList()
+
+ return list.mapNotNull { LogFile.parseFromFileName(it.name) }
+ }
+
+ private fun deleteAllLogs() {
+ logsDir.deleteRecursively()
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/MainActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/MainActivity.kt
new file mode 100644
index 0000000..90cbff5
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/MainActivity.kt
@@ -0,0 +1,245 @@
+package com.github.kr328.clash
+
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import com.github.kr328.clash.common.log.Log
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.ticker
+import com.github.kr328.clash.core.Clash
+import com.github.kr328.clash.design.MainDesign
+import com.github.kr328.clash.design.ui.ToastDuration
+import com.github.kr328.clash.util.startClashService
+import com.github.kr328.clash.util.stopClashService
+import com.github.kr328.clash.util.withClash
+import com.github.kr328.clash.util.withProfile
+import com.github.kr328.clash.core.bridge.*
+import com.github.kr328.clash.core.model.FetchStatus
+import com.github.kr328.clash.core.model.TunnelState
+import com.github.kr328.clash.design.NewProfileDesign
+import com.github.kr328.clash.design.PreferenceLiveData
+import com.github.kr328.clash.design.PreferenceManager
+import com.github.kr328.clash.design.dialog.requestModelTextInput
+import com.github.kr328.clash.design.util.ValidatorHttpUrl
+import com.github.kr328.clash.service.ProfileManager
+import com.github.kr328.clash.service.model.Profile
+import com.github.kr328.clash.service.remote.IRemoteService
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.selects.select
+import kotlinx.coroutines.withContext
+import java.util.*
+import java.util.concurrent.TimeUnit
+
+class MainActivity : BaseActivity() {
+
+
+
+ private val selectnodeName: LiveData by lazy {
+ PreferenceLiveData(this)
+ }
+
+ override suspend fun main() {
+ val design = MainDesign(this)
+
+ PreferenceManager.init(this)
+
+ setContentDesign(design)
+
+ design.fetch()
+ design.startBannsers()
+
+ selectnodeName.observe(this, androidx.lifecycle.Observer { newValue ->
+ })
+
+ val ticker = ticker(TimeUnit.SECONDS.toMillis(1))
+
+ while (isActive) {
+ select {
+ events.onReceive {
+ when (it) {
+ Event.ActivityStart,
+ Event.ServiceRecreated,
+ Event.ClashStop, Event.ClashStart,
+ Event.ProfileLoaded, Event.ProfileChanged -> design.fetch()
+ else -> Unit
+ }
+ }
+ design.requests.onReceive {
+ when (it) {
+ MainDesign.Request.ToggleStatus -> {
+ if (clashRunning)
+ stopClashService()
+ else
+ design.startClash()
+ }
+ MainDesign.Request.OpenProxy ->
+ startActivity(ProxyActivity::class.intent)
+ MainDesign.Request.OpenProfiles ->
+ startActivity(ProfilesActivity::class.intent)
+ MainDesign.Request.OpenProviders ->
+ startActivity(ProvidersActivity::class.intent)
+ MainDesign.Request.OpenLogs ->
+ startActivity(LogsActivity::class.intent)
+ MainDesign.Request.OpenSettings ->
+ startActivity(SettingsActivity::class.intent)
+ MainDesign.Request.OpenHelp ->
+ startActivity(HelpActivity::class.intent)
+ MainDesign.Request.OpenAbout ->
+ design.showAbout(queryAppVersionName())
+ MainDesign.Request.OpenSettingsDIY ->
+ startActivity(NetworkSettingsActivity::class.intent)
+ MainDesign.Request.OpenSettingsKEFU ->
+ startActivity(HelpActivity::class.intent)
+
+ MainDesign.Request.OpenModeDirect ->
+ withClash {
+ val o = queryOverride(Clash.OverrideSlot.Session)
+ o.mode = TunnelState.Mode.Direct
+ patchOverride(Clash.OverrideSlot.Session, o)
+ }
+
+ MainDesign.Request.OpenModeGlobal -> withClash {
+ withClash {
+ val o = queryOverride(Clash.OverrideSlot.Session)
+ o.mode = TunnelState.Mode.Global
+ patchOverride(Clash.OverrideSlot.Session, o)
+ }
+ }
+ MainDesign.Request.OpenModeRule -> withClash {
+ withClash {
+ val o = queryOverride(Clash.OverrideSlot.Session)
+ o.mode = TunnelState.Mode.Direct
+ patchOverride(Clash.OverrideSlot.Session, o)
+ }
+ }
+ }
+ }
+ if (clashRunning) {
+ ticker.onReceive {
+ design.fetchTraffic()
+ }
+ }
+ }
+ }
+ }
+
+ private suspend fun MainDesign.fetch() {
+ setClashRunning(clashRunning)
+
+ val state = withClash {
+ queryTunnelState()
+ }
+ val providers = withClash {
+ queryProviders()
+ }
+ android.util.Log.i("MainActivity","fetch Info: ${state.mode.name} ${providers.count()}")
+ if (providers.isNotEmpty()) {
+ providers.forEach { android.util.Log.i("MainActivity", "The element is ${it.name}") }
+ }
+
+ setMode(state.mode)
+ setHasProviders(providers.isNotEmpty())
+
+ withProfile {
+ setProfileName(queryActive()?.name)
+
+ setSelectNodeName(PreferenceManager.selectnodeName)
+
+ }
+
+ }
+
+ private suspend fun MainDesign.fetchTraffic() {
+ withClash {
+ setForwarded(queryTrafficTotal())
+ }
+ }
+
+ private suspend fun MainDesign.startClash() {
+
+ withProfile {
+ var allProfiles = queryAll()
+ if (allProfiles.isNotEmpty() && allProfiles.count() > 1){
+ allProfiles.forEach { delete(it.uuid) }
+ //删除所有节点
+ }
+ }
+
+
+// val activeProfile = withProfile { queryActive() }
+// if (activeProfile != null) {
+// android.util.Log.i("activeProfile",">> ${activeProfile.type.name} ${activeProfile.uuid} ${activeProfile.source} ")
+// showToast(R.string.no_profile_selected, ToastDuration.Long) {
+// setAction(R.string.profiles) {
+// startActivity(ProfilesActivity::class.intent)
+// }
+// }
+
+// }
+ val activeProfile = withProfile { queryActive() }
+
+ if (activeProfile == null || !activeProfile.imported) {
+
+ showToast("正在请求节点数据....", ToastDuration.Long) {
+
+ }
+
+
+ //create(Profile.Type.Url, "VPN")
+ withProfile{
+ val uuid: UUID = create(Profile.Type.Url,"VPN","https://api.0009.uk/api/v1/client/subscribe?token=5652e3eec20c553047dbe3fcf8754090")
+ commit(uuid){
+ android.util.Log.i("commit",">> ${it.progress} ${it.action} ${it.args.toString()} ")
+ if (it.action == FetchStatus.Action.Verifying){
+ // 在协程中启动 activeProfile 调用
+ CoroutineScope(Dispatchers.IO).launch {
+ activeProfile()
+ }
+ }
+ }
+ }
+
+ }else{
+// showToast(R.string.no_profile_selected, ToastDuration.Long) {
+// setAction(R.string.profiles) {
+// startActivity(ProfilesActivity::class.intent)
+// }
+// }
+
+ android.util.Log.i("activeProfile",">> ${activeProfile.type.name} ${activeProfile.uuid} ${activeProfile.imported} ")
+
+ }
+
+ val vpnRequest = startClashService()
+
+ try {
+ if (vpnRequest != null) {
+ val result = startActivityForResult(
+ ActivityResultContracts.StartActivityForResult(),
+ vpnRequest
+ )
+
+ if (result.resultCode == RESULT_OK)
+ startClashService()
+ }
+ } catch (e: Exception) {
+ design?.showToast(R.string.unable_to_start_vpn, ToastDuration.Long)
+ }
+ }
+
+ private suspend fun activeProfile(){
+ withProfile {
+ setActive(queryAll().first())
+ }
+
+ }
+ private suspend fun queryAppVersionName(): String {
+ return withContext(Dispatchers.IO) {
+ packageManager.getPackageInfo(packageName, 0).versionName + "\n" + Bridge.nativeCoreVersion().replace("_", "-")
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/MainApplication.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/MainApplication.kt
new file mode 100644
index 0000000..7f4ddf7
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/MainApplication.kt
@@ -0,0 +1,69 @@
+package com.github.kr328.clash
+
+import android.app.Application
+import android.content.Context
+import com.github.kr328.clash.common.Global
+import com.github.kr328.clash.common.compat.currentProcessName
+import com.github.kr328.clash.common.log.Log
+import com.github.kr328.clash.remote.Remote
+import com.github.kr328.clash.service.util.sendServiceRecreated
+import com.github.kr328.clash.util.clashDir
+import java.io.File
+import java.io.FileOutputStream
+import java.io.IOException
+import java.io.InputStream
+import java.io.OutputStream
+
+
+@Suppress("unused")
+class MainApplication : Application() {
+ override fun attachBaseContext(base: Context?) {
+ super.attachBaseContext(base)
+
+ Global.init(this)
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+
+ val processName = currentProcessName
+ extractGeoFiles()
+
+ Log.d("Process $processName started")
+
+ if (processName == packageName) {
+ Remote.launch()
+ } else {
+ sendServiceRecreated()
+ }
+ }
+
+ private fun extractGeoFiles() {
+ clashDir.mkdirs();
+
+ val geoipFile = File(clashDir, "geoip.metadb")
+ if(!geoipFile.exists()) {
+ FileOutputStream(geoipFile).use {
+ assets.open("geoip.metadb").copyTo(it);
+ }
+ }
+
+ val geositeFile = File(clashDir, "geosite.dat")
+ if(!geositeFile.exists()) {
+ FileOutputStream(geositeFile).use {
+ assets.open("geosite.dat").copyTo(it);
+ }
+ }
+
+ val ASNFile = File(clashDir, "ASN.mmdb")
+ if(!ASNFile.exists()) {
+ FileOutputStream(ASNFile).use {
+ assets.open("ASN.mmdb").copyTo(it);
+ }
+ }
+ }
+
+ fun finalize() {
+ Global.destroy()
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/MetaFeatureSettingsActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/MetaFeatureSettingsActivity.kt
new file mode 100644
index 0000000..913bc07
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/MetaFeatureSettingsActivity.kt
@@ -0,0 +1,136 @@
+package com.github.kr328.clash
+
+import android.database.Cursor
+import android.net.Uri
+import android.provider.OpenableColumns
+import android.widget.Toast
+import androidx.activity.result.contract.ActivityResultContracts
+import com.github.kr328.clash.core.Clash
+import com.github.kr328.clash.design.MetaFeatureSettingsDesign
+import com.github.kr328.clash.util.clashDir
+import com.github.kr328.clash.util.withClash
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.selects.select
+import kotlinx.coroutines.withContext
+import java.io.File
+import java.io.FileOutputStream
+
+
+class MetaFeatureSettingsActivity : BaseActivity() {
+ override suspend fun main() {
+ val configuration = withClash { queryOverride(Clash.OverrideSlot.Persist) }
+
+ defer {
+ withClash {
+ patchOverride(Clash.OverrideSlot.Persist, configuration)
+ }
+ }
+
+ val design = MetaFeatureSettingsDesign(
+ this,
+ configuration
+ )
+
+ setContentDesign(design)
+
+ while (isActive) {
+ select {
+ events.onReceive {
+
+ }
+ design.requests.onReceive {
+ when (it) {
+ MetaFeatureSettingsDesign.Request.ResetOverride -> {
+ if (design.requestResetConfirm()) {
+ defer {
+ withClash {
+ clearOverride(Clash.OverrideSlot.Persist)
+ }
+ }
+ finish()
+ }
+ }
+ MetaFeatureSettingsDesign.Request.ImportGeoIp -> {
+ val uri = startActivityForResult(
+ ActivityResultContracts.GetContent(),
+ "*/*")
+ importGeoFile(uri, MetaFeatureSettingsDesign.Request.ImportGeoIp)
+ }
+ MetaFeatureSettingsDesign.Request.ImportGeoSite -> {
+ val uri = startActivityForResult(
+ ActivityResultContracts.GetContent(),
+ "*/*")
+ importGeoFile(uri, MetaFeatureSettingsDesign.Request.ImportGeoSite)
+ }
+ MetaFeatureSettingsDesign.Request.ImportCountry -> {
+ val uri = startActivityForResult(
+ ActivityResultContracts.GetContent(),
+ "*/*")
+ importGeoFile(uri, MetaFeatureSettingsDesign.Request.ImportCountry)
+ }
+ MetaFeatureSettingsDesign.Request.ImportASN -> {
+ val uri = startActivityForResult(
+ ActivityResultContracts.GetContent(),
+ "*/*")
+ importGeoFile(uri, MetaFeatureSettingsDesign.Request.ImportASN)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private val validDatabaseExtensions = listOf(
+ ".metadb", ".db", ".dat", ".mmdb"
+ )
+
+ private suspend fun importGeoFile(uri: Uri?, importType: MetaFeatureSettingsDesign.Request) {
+ val cursor: Cursor? = uri?.let {
+ contentResolver.query(it, null, null, null, null, null)
+ }
+ cursor?.use {
+ if (it.moveToFirst()) {
+ val columnIndex = it.getColumnIndex(OpenableColumns.DISPLAY_NAME)
+ val displayName: String =
+ if (columnIndex != -1) it.getString(columnIndex) else "";
+ val ext = "." + displayName.substringAfterLast(".")
+
+ if (!validDatabaseExtensions.contains(ext)) {
+ MaterialAlertDialogBuilder(this)
+ .setTitle(R.string.geofile_unknown_db_format)
+ .setMessage(getString(R.string.geofile_unknown_db_format_message,
+ validDatabaseExtensions.joinToString("/")))
+ .setPositiveButton("OK") { _, _ -> }
+ .show()
+ return
+ }
+ val outputFileName = when (importType) {
+ MetaFeatureSettingsDesign.Request.ImportGeoIp ->
+ "geoip$ext"
+ MetaFeatureSettingsDesign.Request.ImportGeoSite ->
+ "geosite$ext"
+ MetaFeatureSettingsDesign.Request.ImportCountry ->
+ "country$ext"
+ MetaFeatureSettingsDesign.Request.ImportASN ->
+ "ASN$ext"
+ else -> ""
+ }
+
+ withContext(Dispatchers.IO) {
+ val outputFile = File(clashDir, outputFileName);
+ contentResolver.openInputStream(uri).use { ins ->
+ FileOutputStream(outputFile).use { outs ->
+ ins?.copyTo(outs)
+ }
+ }
+ }
+ Toast.makeText(this, getString(R.string.geofile_imported, displayName),
+ Toast.LENGTH_LONG).show()
+ return
+ }
+ }
+ Toast.makeText(this, R.string.geofile_import_failed, Toast.LENGTH_LONG).show()
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/NetworkSettingsActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/NetworkSettingsActivity.kt
new file mode 100644
index 0000000..c7cc724
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/NetworkSettingsActivity.kt
@@ -0,0 +1,39 @@
+package com.github.kr328.clash
+
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.design.NetworkSettingsDesign
+import com.github.kr328.clash.service.store.ServiceStore
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.selects.select
+
+class NetworkSettingsActivity : BaseActivity() {
+ override suspend fun main() {
+ val design = NetworkSettingsDesign(
+ this,
+ uiStore,
+ ServiceStore(this),
+ clashRunning,
+ )
+
+ setContentDesign(design)
+
+ while (isActive) {
+ select {
+ events.onReceive {
+ when (it) {
+ Event.ClashStart, Event.ClashStop, Event.ServiceRecreated ->
+ recreate()
+ else -> Unit
+ }
+ }
+ design.requests.onReceive {
+ when (it) {
+ NetworkSettingsDesign.Request.StartAccessControlList ->
+ startActivity(AccessControlActivity::class.intent)
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/NewProfileActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/NewProfileActivity.kt
new file mode 100644
index 0000000..99c1f6a
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/NewProfileActivity.kt
@@ -0,0 +1,145 @@
+package com.github.kr328.clash
+
+import android.app.Activity
+import android.content.ComponentName
+import android.content.Intent
+import android.net.Uri
+import android.provider.Settings
+import android.util.Log
+import androidx.activity.result.contract.ActivityResultContracts
+import com.github.kr328.clash.common.constants.Intents
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.setUUID
+import com.github.kr328.clash.design.NewProfileDesign
+import com.github.kr328.clash.design.model.ProfileProvider
+import com.github.kr328.clash.service.model.Profile
+import com.github.kr328.clash.util.withProfile
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.selects.select
+import kotlinx.coroutines.withContext
+import java.util.*
+
+class NewProfileActivity : BaseActivity() {
+ private val self: NewProfileActivity
+ get() = this
+
+ override suspend fun main() {
+ val design = NewProfileDesign(this)
+
+ design.patchProviders(queryProfileProviders())
+
+ setContentDesign(design)
+
+ while (isActive) {
+ select {
+ events.onReceive {
+
+ }
+ design.requests.onReceive {
+ when (it) {
+ is NewProfileDesign.Request.Create -> {
+ withProfile {
+ val name = getString(R.string.new_profile)
+
+ val uuid: UUID? = when (val p = it.provider) {
+ is ProfileProvider.File ->
+ create(Profile.Type.File, name)
+ is ProfileProvider.Url ->
+ create(Profile.Type.Url, name)
+ is ProfileProvider.External -> {
+ val data = p.get()
+
+ if (data != null) {
+ val (uri, initialName) = data
+
+ create(
+ Profile.Type.External,
+ initialName ?: name,
+ uri.toString()
+ )
+ } else {
+ null
+ }
+ }
+ }
+
+ if (uuid != null)
+ launchProperties(uuid)
+ }
+ }
+ is NewProfileDesign.Request.OpenDetail -> {
+ launchAppDetailed(it.provider)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private fun launchAppDetailed(provider: ProfileProvider.External) {
+ val data = Uri.fromParts(
+ "package",
+ provider.intent.component?.packageName ?: return,
+ null
+ )
+
+ startActivity(Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).setData(data))
+ }
+
+ private suspend fun launchProperties(uuid: UUID) {
+ Log.i("launchProperties",uuid.toString())
+ val r = startActivityForResult(
+ ActivityResultContracts.StartActivityForResult(),
+ PropertiesActivity::class.intent.setUUID(uuid)
+ )
+
+ if (r.resultCode == Activity.RESULT_OK)
+ finish()
+ }
+
+ private suspend fun ProfileProvider.External.get(): Pair? {
+ val result = startActivityForResult(
+ ActivityResultContracts.StartActivityForResult(),
+ intent
+ )
+
+ if (result.resultCode != RESULT_OK)
+ return null
+
+ val uri = result.data?.data
+ val name = result.data?.getStringExtra(Intents.EXTRA_NAME)
+
+ if (uri != null) {
+ return uri to name
+ }
+
+ return null
+ }
+
+ private suspend fun queryProfileProviders(): List {
+ return withContext(Dispatchers.IO) {
+ val providers = packageManager.queryIntentActivities(
+ Intent(Intents.ACTION_PROVIDE_URL),
+ 0
+ ).map {
+ val activity = it.activityInfo
+
+ val name = activity.applicationInfo.loadLabel(packageManager)
+ val summary = activity.loadLabel(packageManager)
+ val icon = activity.loadIcon(packageManager)
+ val intent = Intent(Intents.ACTION_PROVIDE_URL)
+ .setComponent(
+ ComponentName(
+ activity.packageName,
+ activity.name
+ )
+ )
+
+ ProfileProvider.External(name.toString(), summary.toString(), icon, intent)
+ }
+
+ listOf(ProfileProvider.File(self), ProfileProvider.Url(self)) + providers
+ }
+ }
+}
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/OverrideSettingsActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/OverrideSettingsActivity.kt
new file mode 100644
index 0000000..b4641ed
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/OverrideSettingsActivity.kt
@@ -0,0 +1,58 @@
+package com.github.kr328.clash
+
+import android.content.pm.PackageManager
+import com.github.kr328.clash.common.compat.getDrawableCompat
+import com.github.kr328.clash.common.constants.Metadata
+import com.github.kr328.clash.core.Clash
+import com.github.kr328.clash.design.OverrideSettingsDesign
+import com.github.kr328.clash.design.model.AppInfo
+import com.github.kr328.clash.design.util.toAppInfo
+import com.github.kr328.clash.service.store.ServiceStore
+import com.github.kr328.clash.util.withClash
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.selects.select
+import kotlinx.coroutines.withContext
+
+class OverrideSettingsActivity : BaseActivity() {
+ override suspend fun main() {
+ val configuration = withClash { queryOverride(Clash.OverrideSlot.Persist) }
+ val service = ServiceStore(this)
+
+ defer {
+ withClash {
+ patchOverride(Clash.OverrideSlot.Persist, configuration)
+ }
+ }
+
+ val design = OverrideSettingsDesign(
+ this,
+ configuration
+ )
+
+ setContentDesign(design)
+
+ while (isActive) {
+ select {
+ events.onReceive {
+
+ }
+ design.requests.onReceive {
+ when (it) {
+ OverrideSettingsDesign.Request.ResetOverride -> {
+ if (design.requestResetConfirm()) {
+ defer {
+ withClash {
+ clearOverride(Clash.OverrideSlot.Persist)
+ }
+ }
+
+ finish()
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt
new file mode 100644
index 0000000..75943dd
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt
@@ -0,0 +1,127 @@
+package com.github.kr328.clash
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.setUUID
+import com.github.kr328.clash.common.util.ticker
+import com.github.kr328.clash.design.ProfilesDesign
+import com.github.kr328.clash.design.ui.ToastDuration
+import com.github.kr328.clash.R
+import com.github.kr328.clash.service.model.Profile
+import com.github.kr328.clash.util.withProfile
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.selects.select
+import kotlinx.coroutines.withContext
+import java.util.*
+import java.util.concurrent.TimeUnit
+
+class ProfilesActivity : BaseActivity() {
+ override suspend fun main() {
+ val design = ProfilesDesign(this)
+
+ setContentDesign(design)
+
+ val ticker = ticker(TimeUnit.MINUTES.toMillis(1))
+
+ while (isActive) {
+ select {
+ events.onReceive {
+ when (it) {
+ Event.ActivityStart, Event.ProfileChanged -> {
+ design.fetch()
+ }
+ else -> Unit
+ }
+ }
+ design.requests.onReceive {
+ when (it) {
+ ProfilesDesign.Request.Create ->
+ startActivity(NewProfileActivity::class.intent)
+ ProfilesDesign.Request.UpdateAll ->
+ withProfile {
+ try {
+ queryAll().forEach { p ->
+ if (p.imported && p.type != Profile.Type.File)
+ update(p.uuid)
+ }
+ }
+ finally {
+ withContext(Dispatchers.Main) {
+ design.finishUpdateAll();
+ }
+ }
+ }
+ is ProfilesDesign.Request.Update ->
+ withProfile { update(it.profile.uuid) }
+ is ProfilesDesign.Request.Delete ->
+ withProfile { delete(it.profile.uuid) }
+ is ProfilesDesign.Request.Edit ->
+ startActivity(PropertiesActivity::class.intent.setUUID(it.profile.uuid))
+ is ProfilesDesign.Request.Active -> {
+ withProfile {
+ if (it.profile.imported)
+ setActive(it.profile)
+ else
+ design.requestSave(it.profile)
+ }
+ }
+ is ProfilesDesign.Request.Duplicate -> {
+ val uuid = withProfile { clone(it.profile.uuid) }
+
+ startActivity(PropertiesActivity::class.intent.setUUID(uuid))
+ }
+ }
+ }
+ if (activityStarted) {
+ ticker.onReceive {
+ design.updateElapsed()
+ }
+ }
+ }
+ }
+ }
+
+ private suspend fun ProfilesDesign.fetch() {
+ withProfile {
+ patchProfiles(queryAll())
+ }
+ }
+
+ override fun onProfileUpdateCompleted(uuid: UUID?) {
+ if(uuid == null)
+ return;
+ launch {
+ var name: String? = null;
+ withProfile {
+ name = queryByUUID(uuid)?.name
+ }
+ design?.showToast(
+ getString(R.string.toast_profile_updated_complete, name),
+ ToastDuration.Long
+ )
+ }
+ }
+ override fun onProfileUpdateFailed(uuid: UUID?, reason: String?) {
+ if(uuid == null)
+ return;
+ launch {
+ var name: String? = null;
+ withProfile {
+ name = queryByUUID(uuid)?.name
+ }
+ design?.showToast(
+ getString(R.string.toast_profile_updated_failed, name, reason),
+ ToastDuration.Long
+ ){
+ setAction(R.string.edit) {
+ startActivity(PropertiesActivity::class.intent.setUUID(uuid))
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/PropertiesActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/PropertiesActivity.kt
new file mode 100644
index 0000000..93e6ecc
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/PropertiesActivity.kt
@@ -0,0 +1,114 @@
+package com.github.kr328.clash
+
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.setUUID
+import com.github.kr328.clash.common.util.uuid
+import com.github.kr328.clash.design.PropertiesDesign
+import com.github.kr328.clash.design.ui.ToastDuration
+import com.github.kr328.clash.design.util.showExceptionToast
+import com.github.kr328.clash.service.model.Profile
+import com.github.kr328.clash.util.withProfile
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.selects.select
+
+class PropertiesActivity : BaseActivity() {
+ private var canceled: Boolean = false
+
+ override suspend fun main() {
+ setResult(RESULT_CANCELED)
+
+ val uuid = intent.uuid ?: return finish()
+ val design = PropertiesDesign(this)
+
+ val original = withProfile { queryByUUID(uuid) } ?: return finish()
+
+ design.profile = original
+
+ setContentDesign(design)
+
+ defer {
+ canceled = true
+
+ withProfile { release(uuid) }
+ }
+
+ while (isActive) {
+ select {
+ events.onReceive {
+ when (it) {
+ Event.ActivityStop -> {
+ val profile = design.profile
+
+ if (!canceled && profile != original) {
+ withProfile {
+ patch(profile.uuid, profile.name, profile.source, profile.interval)
+ }
+ }
+ }
+ Event.ServiceRecreated -> {
+ finish()
+ }
+ else -> Unit
+ }
+ }
+ design.requests.onReceive {
+ when (it) {
+ PropertiesDesign.Request.BrowseFiles -> {
+ startActivity(FilesActivity::class.intent.setUUID(uuid))
+ }
+ PropertiesDesign.Request.Commit -> {
+ design.verifyAndCommit()
+ }
+ }
+ }
+ }
+ }
+ }
+
+ override fun onBackPressed() {
+ design?.apply {
+ launch {
+ if (!progressing) {
+ if (requestExitWithoutSaving())
+ finish()
+ }
+ }
+ } ?: return super.onBackPressed()
+ }
+
+ private suspend fun PropertiesDesign.verifyAndCommit() {
+ when {
+ profile.name.isBlank() -> {
+ showToast(R.string.empty_name, ToastDuration.Long)
+ }
+ profile.type != Profile.Type.File && profile.source.isBlank() -> {
+ showToast(R.string.invalid_url, ToastDuration.Long)
+ }
+ else -> {
+ try {
+ withProcessing { updateStatus ->
+ withProfile {
+ patch(profile.uuid, profile.name, profile.source, profile.interval)
+
+ coroutineScope {
+ commit(profile.uuid) {
+ launch {
+ updateStatus(it)
+ }
+ }
+ }
+ }
+ }
+
+ setResult(RESULT_OK)
+
+ finish()
+ } catch (e: Exception) {
+ showExceptionToast(e)
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ProvidersActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ProvidersActivity.kt
new file mode 100644
index 0000000..22bdbd0
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ProvidersActivity.kt
@@ -0,0 +1,71 @@
+package com.github.kr328.clash
+
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.ticker
+import com.github.kr328.clash.design.ProvidersDesign
+import com.github.kr328.clash.design.util.showExceptionToast
+import com.github.kr328.clash.util.withClash
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.selects.select
+import java.util.concurrent.TimeUnit
+
+class ProvidersActivity : BaseActivity() {
+ override suspend fun main() {
+ val providers = withClash { queryProviders().sorted() }
+ val design = ProvidersDesign(this, providers)
+
+ setContentDesign(design)
+
+ val ticker = ticker(TimeUnit.MINUTES.toMillis(1))
+
+ while (isActive) {
+ select {
+ events.onReceive {
+ when (it) {
+ Event.ProfileLoaded -> {
+ val newList = withClash { queryProviders().sorted() }
+
+ if (newList != providers) {
+ startActivity(ProvidersActivity::class.intent)
+
+ finish()
+ }
+ }
+ else -> Unit
+ }
+ }
+ design.requests.onReceive {
+ when (it) {
+ is ProvidersDesign.Request.Update -> {
+ launch {
+ try {
+ withClash {
+ updateProvider(it.provider.type, it.provider.name)
+ }
+
+ design.notifyChanged(it.index)
+ } catch (e: Exception) {
+ design.showExceptionToast(
+ getString(
+ R.string.format_update_provider_failure,
+ it.provider.name,
+ e.message
+ )
+ )
+
+ design.notifyUpdated(it.index)
+ }
+ }
+ }
+ }
+ }
+ if (activityStarted) {
+ ticker.onReceive {
+ design.updateElapsed()
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ProxyActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ProxyActivity.kt
new file mode 100644
index 0000000..700be3b
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/ProxyActivity.kt
@@ -0,0 +1,120 @@
+package com.github.kr328.clash
+
+import android.util.Log
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.core.Clash
+import com.github.kr328.clash.core.model.Proxy
+import com.github.kr328.clash.design.PreferenceManager
+import com.github.kr328.clash.design.ProxyDesign
+import com.github.kr328.clash.design.model.ProxyState
+import com.github.kr328.clash.util.withClash
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.selects.select
+import kotlinx.coroutines.sync.Semaphore
+import kotlinx.coroutines.sync.withPermit
+
+class ProxyActivity : BaseActivity() {
+ override suspend fun main() {
+ val mode = withClash { queryOverride(Clash.OverrideSlot.Session).mode }
+ val names = withClash { queryProxyGroupNames(uiStore.proxyExcludeNotSelectable) }
+ val states = List(names.size) { ProxyState("?") }
+ val unorderedStates = names.indices.map { names[it] to states[it] }.toMap()
+ val reloadLock = Semaphore(10)
+
+ val design = ProxyDesign(
+ this,
+ mode,
+ names,
+ uiStore
+ )
+
+ setContentDesign(design)
+
+ design.requests.send(ProxyDesign.Request.ReloadAll)
+
+ while (isActive) {
+ select {
+ events.onReceive {
+ when (it) {
+ Event.ProfileLoaded -> {
+ val newNames = withClash {
+ queryProxyGroupNames(uiStore.proxyExcludeNotSelectable)
+ }
+
+ if (newNames != names) {
+ startActivity(ProxyActivity::class.intent)
+
+ finish()
+ }
+ }
+ else -> Unit
+ }
+ }
+ design.requests.onReceive {
+ when (it) {
+ ProxyDesign.Request.ReLaunch -> {
+ startActivity(ProxyActivity::class.intent)
+
+ finish()
+ }
+ ProxyDesign.Request.ReloadAll -> {
+ names.indices.forEach { idx ->
+ design.requests.trySend(ProxyDesign.Request.Reload(idx))
+ }
+ }
+ is ProxyDesign.Request.Reload -> {
+ launch {
+ val group = reloadLock.withPermit {
+ withClash {
+ queryProxyGroup(names[it.index], uiStore.proxySort)
+ }
+ }
+ val state = states[it.index]
+
+ state.now = group.now
+
+ design.updateGroup(
+ it.index,
+ group.proxies,
+ group.type == Proxy.Type.Selector,
+ state,
+ unorderedStates
+ )
+ }
+ }
+ is ProxyDesign.Request.Select -> {
+ withClash {
+ patchSelector(names[it.index], it.name)
+ states[it.index].now = it.name
+ }
+ Log.i("selectnodeName","${it.name}")
+ PreferenceManager.selectnodeName = it.name
+ design.requestRedrawVisible()
+ }
+ is ProxyDesign.Request.UrlTest -> {
+ launch {
+ withClash {
+ healthCheck(names[it.index])
+ }
+
+ design.requests.send(ProxyDesign.Request.Reload(it.index))
+ }
+ }
+ is ProxyDesign.Request.PatchMode -> {
+ design.showModeSwitchTips()
+
+ withClash {
+ val o = queryOverride(Clash.OverrideSlot.Session)
+
+ o.mode = it.mode
+
+ patchOverride(Clash.OverrideSlot.Session, o)
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/RestartReceiver.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/RestartReceiver.kt
new file mode 100644
index 0000000..27402e2
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/RestartReceiver.kt
@@ -0,0 +1,18 @@
+package com.github.kr328.clash
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.github.kr328.clash.service.StatusProvider
+import com.github.kr328.clash.util.startClashService
+
+class RestartReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: Intent) {
+ when (intent.action) {
+ Intent.ACTION_BOOT_COMPLETED, Intent.ACTION_MY_PACKAGE_REPLACED -> {
+ if (StatusProvider.shouldStartClashOnBoot)
+ context.startClashService()
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt
new file mode 100644
index 0000000..95a0393
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt
@@ -0,0 +1,34 @@
+package com.github.kr328.clash
+
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.design.SettingsDesign
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.selects.select
+
+class SettingsActivity : BaseActivity() {
+ override suspend fun main() {
+ val design = SettingsDesign(this)
+
+ setContentDesign(design)
+
+ while (isActive) {
+ select {
+ events.onReceive {
+
+ }
+ design.requests.onReceive {
+ when (it) {
+ SettingsDesign.Request.StartApp ->
+ startActivity(AppSettingsActivity::class.intent)
+ SettingsDesign.Request.StartNetwork ->
+ startActivity(NetworkSettingsActivity::class.intent)
+ SettingsDesign.Request.StartOverride ->
+ startActivity(OverrideSettingsActivity::class.intent)
+ SettingsDesign.Request.StartMetaFeature ->
+ startActivity(MetaFeatureSettingsActivity::class.intent)
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/TileService.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/TileService.kt
new file mode 100644
index 0000000..d00f2ad
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/TileService.kt
@@ -0,0 +1,104 @@
+package com.github.kr328.clash
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.graphics.drawable.Icon
+import android.os.Build
+import android.service.quicksettings.Tile
+import android.service.quicksettings.TileService
+import androidx.annotation.RequiresApi
+import com.github.kr328.clash.common.constants.Intents
+import com.github.kr328.clash.common.constants.Permissions
+import com.github.kr328.clash.remote.StatusClient
+import com.github.kr328.clash.util.startClashService
+import com.github.kr328.clash.util.stopClashService
+
+@RequiresApi(Build.VERSION_CODES.N)
+class TileService : TileService() {
+ private var currentProfile = ""
+ private var clashRunning = false
+
+ override fun onClick() {
+ val tile = qsTile ?: return
+
+ when (tile.state) {
+ Tile.STATE_INACTIVE -> {
+ startClashService()
+ }
+ Tile.STATE_ACTIVE -> {
+ stopClashService()
+ }
+ }
+ }
+
+ override fun onStartListening() {
+ super.onStartListening()
+
+ registerReceiver(
+ receiver,
+ IntentFilter().apply {
+ addAction(Intents.ACTION_CLASH_STARTED)
+ addAction(Intents.ACTION_CLASH_STOPPED)
+ addAction(Intents.ACTION_PROFILE_LOADED)
+ addAction(Intents.ACTION_SERVICE_RECREATED)
+ },
+ Permissions.RECEIVE_SELF_BROADCASTS,
+ null
+ )
+
+ val name = StatusClient(this).currentProfile()
+
+ clashRunning = name != null
+ currentProfile = name ?: ""
+
+ updateTile()
+ }
+
+ override fun onStopListening() {
+ super.onStopListening()
+
+ unregisterReceiver(receiver)
+ }
+
+ private fun updateTile() {
+ val tile = qsTile ?: return
+
+ tile.state = if (clashRunning)
+ Tile.STATE_ACTIVE
+ else
+ Tile.STATE_INACTIVE
+
+ tile.label = if (currentProfile.isEmpty())
+ getText(R.string.launch_name)
+ else
+ currentProfile
+
+ tile.icon = Icon.createWithResource(this, R.drawable.ic_logo_service)
+
+ tile.updateTile()
+ }
+
+ private val receiver = object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ when (intent?.action) {
+ Intents.ACTION_CLASH_STARTED -> {
+ clashRunning = true
+
+ currentProfile = ""
+ }
+ Intents.ACTION_CLASH_STOPPED, Intents.ACTION_SERVICE_RECREATED -> {
+ clashRunning = false
+
+ currentProfile = ""
+ }
+ Intents.ACTION_PROFILE_LOADED -> {
+ currentProfile = StatusClient(this@TileService).currentProfile() ?: ""
+ }
+ }
+
+ updateTile()
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatCache.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatCache.kt
new file mode 100644
index 0000000..ae75bfa
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatCache.kt
@@ -0,0 +1,52 @@
+package com.github.kr328.clash.log
+
+import androidx.collection.CircularArray
+import com.github.kr328.clash.core.model.LogMessage
+import kotlinx.coroutines.sync.Mutex
+import kotlinx.coroutines.sync.withLock
+
+class LogcatCache {
+ data class Snapshot(val messages: List, val removed: Int, val appended: Int)
+
+ private val array = CircularArray(CAPACITY)
+ private val lock = Mutex()
+
+ private var removed: Int = 0
+ private var appended: Int = 0
+
+ suspend fun append(msg: LogMessage) {
+ lock.withLock {
+ if (array.size() >= CAPACITY) {
+ array.removeFromStart(1)
+
+ removed++
+ appended--
+ }
+
+ array.addLast(msg)
+
+ appended++
+ }
+ }
+
+ suspend fun snapshot(full: Boolean): Snapshot? {
+ return lock.withLock {
+ if (!full && removed == 0 && appended == 0) {
+ return@withLock null
+ }
+
+ Snapshot(
+ List(array.size()) { array[it] },
+ removed,
+ if (full) array.size() + appended else appended
+ ).also {
+ removed = 0
+ appended = 0
+ }
+ }
+ }
+
+ companion object {
+ const val CAPACITY = 128
+ }
+}
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatFilter.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatFilter.kt
new file mode 100644
index 0000000..08b9953
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatFilter.kt
@@ -0,0 +1,25 @@
+package com.github.kr328.clash.log
+
+import android.content.Context
+import com.github.kr328.clash.core.model.LogMessage
+import com.github.kr328.clash.design.util.format
+import java.io.BufferedWriter
+import java.io.Writer
+import java.util.*
+
+class LogcatFilter(output: Writer, private val context: Context) : BufferedWriter(output) {
+ fun writeHeader(time: Date) {
+ appendLine("# Capture on ${time.format(context)}")
+ }
+
+ fun writeMessage(message: LogMessage) {
+ val time = message.time.format(context, includeDate = false)
+ val level = message.level.name
+
+ appendLine(FORMAT.format(time, level, message.message))
+ }
+
+ companion object {
+ private const val FORMAT = "%12s %7s: %s"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatReader.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatReader.kt
new file mode 100644
index 0000000..debb4db
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatReader.kt
@@ -0,0 +1,44 @@
+package com.github.kr328.clash.log
+
+import android.content.Context
+import com.github.kr328.clash.core.model.LogMessage
+import com.github.kr328.clash.design.model.LogFile
+import com.github.kr328.clash.util.logsDir
+import java.io.BufferedReader
+import java.io.FileReader
+import java.util.*
+
+class LogcatReader(context: Context, file: LogFile) : AutoCloseable {
+ private val reader = BufferedReader(FileReader(context.logsDir.resolve(file.fileName)))
+
+ override fun close() {
+ reader.close()
+ }
+
+ fun readAll(): List {
+ var lastTime = Date(0)
+ return reader.lineSequence()
+ .map { it.trim() }
+ .filter { !it.startsWith("#") }
+ .map { it.split(":", limit = 3) }
+ .map {
+ val time = it[0].toLongOrNull()?.let { Date(it) } ?: lastTime
+ val logMessage = if (it[0].toLongOrNull() != null) {
+ LogMessage(
+ time = time,
+ level = LogMessage.Level.valueOf(it[1]),
+ message = it[2]
+ )
+ } else {
+ LogMessage(
+ time = time,
+ level = LogMessage.Level.Warning, // or any default level
+ message = it.joinToString(":")
+ )
+ }
+ lastTime = time
+ logMessage
+ }
+ .toList()
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatWriter.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatWriter.kt
new file mode 100644
index 0000000..4f8c422
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/LogcatWriter.kt
@@ -0,0 +1,25 @@
+package com.github.kr328.clash.log
+
+import android.content.Context
+import com.github.kr328.clash.core.model.LogMessage
+import com.github.kr328.clash.design.model.LogFile
+import com.github.kr328.clash.util.logsDir
+import java.io.BufferedWriter
+import java.io.FileWriter
+
+class LogcatWriter(context: Context) : AutoCloseable {
+ private val file = LogFile.generate()
+ private val writer = BufferedWriter(FileWriter(context.logsDir.resolve(file.fileName)))
+
+ override fun close() {
+ writer.close()
+ }
+
+ fun appendMessage(message: LogMessage) {
+ writer.appendLine(FORMAT.format(message.time.time, message.level.name, message.message))
+ }
+
+ companion object {
+ private const val FORMAT = "%d:%s:%s"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/SystemLogcat.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/SystemLogcat.kt
new file mode 100644
index 0000000..310ad2a
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/log/SystemLogcat.kt
@@ -0,0 +1,32 @@
+package com.github.kr328.clash.log
+
+object SystemLogcat {
+ private val command = arrayOf(
+ "logcat",
+ "-d",
+ "-s",
+ "Go",
+ "DEBUG",
+ "AndroidRuntime",
+ "ClashMetaForAndroid",
+ "LwIP",
+ )
+
+ fun dumpCrash(): String {
+ return try {
+ val process = Runtime.getRuntime().exec(command)
+
+ val result = process.inputStream.use { stream ->
+ stream.reader().readLines()
+ .filterNot { it.startsWith("------") }
+ .joinToString("\n")
+ }
+
+ process.waitFor()
+
+ result.trim()
+ } catch (e: Exception) {
+ ""
+ }
+ }
+}
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Broadcasts.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Broadcasts.kt
new file mode 100644
index 0000000..51d0692
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Broadcasts.kt
@@ -0,0 +1,119 @@
+package com.github.kr328.clash.remote
+
+import android.app.Application
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import com.github.kr328.clash.common.constants.Intents
+import com.github.kr328.clash.common.log.Log
+import java.util.*
+
+class Broadcasts(private val context: Application) {
+ interface Observer {
+ fun onServiceRecreated()
+ fun onStarted()
+ fun onStopped(cause: String?)
+ fun onProfileChanged()
+ fun onProfileUpdateCompleted(uuid: UUID?)
+ fun onProfileUpdateFailed(uuid: UUID?, reason: String?)
+ fun onProfileLoaded()
+ }
+
+ var clashRunning: Boolean = false
+
+ private var registered = false
+ private val receivers = mutableListOf()
+ private val broadcastReceiver = object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ if (intent?.`package` != context?.packageName)
+ return
+
+ when (intent?.action) {
+ Intents.ACTION_SERVICE_RECREATED -> {
+ clashRunning = false
+
+ receivers.forEach {
+ it.onServiceRecreated()
+ }
+ }
+ Intents.ACTION_CLASH_STARTED -> {
+ clashRunning = true
+
+ receivers.forEach {
+ it.onStarted()
+ }
+ }
+ Intents.ACTION_CLASH_STOPPED -> {
+ clashRunning = false
+
+ receivers.forEach {
+ it.onStopped(intent.getStringExtra(Intents.EXTRA_STOP_REASON))
+ }
+ }
+ Intents.ACTION_PROFILE_CHANGED ->
+ receivers.forEach {
+ it.onProfileChanged()
+ }
+ Intents.ACTION_PROFILE_UPDATE_COMPLETED ->
+ receivers.forEach {
+ it.onProfileUpdateCompleted(
+ UUID.fromString(intent.getStringExtra(Intents.EXTRA_UUID)))
+ }
+ Intents.ACTION_PROFILE_UPDATE_FAILED ->
+ receivers.forEach {
+ it.onProfileUpdateFailed(
+ UUID.fromString(intent.getStringExtra(Intents.EXTRA_UUID)),
+ intent.getStringExtra(Intents.EXTRA_FAIL_REASON))
+ }
+ Intents.ACTION_PROFILE_LOADED -> {
+ receivers.forEach {
+ it.onProfileLoaded()
+ }
+ }
+ }
+ }
+ }
+
+ fun addObserver(observer: Observer) {
+ receivers.add(observer)
+ }
+
+ fun removeObserver(observer: Observer) {
+ receivers.remove(observer)
+ }
+
+ fun register() {
+ if (registered)
+ return
+
+ try {
+ context.registerReceiver(broadcastReceiver, IntentFilter().apply {
+ addAction(Intents.ACTION_SERVICE_RECREATED)
+ addAction(Intents.ACTION_CLASH_STARTED)
+ addAction(Intents.ACTION_CLASH_STOPPED)
+ addAction(Intents.ACTION_PROFILE_CHANGED)
+ addAction(Intents.ACTION_PROFILE_UPDATE_COMPLETED)
+ addAction(Intents.ACTION_PROFILE_UPDATE_FAILED)
+ addAction(Intents.ACTION_PROFILE_LOADED)
+ })
+
+ clashRunning = StatusClient(context).currentProfile() != null
+ } catch (e: Exception) {
+ Log.w("Register global receiver: $e", e)
+ }
+ }
+
+ fun unregister() {
+ if (!registered)
+ return
+
+ try {
+ context.unregisterReceiver(broadcastReceiver)
+
+ clashRunning = false
+ } catch (e: Exception) {
+ Log.w("Unregister global receiver: $e", e)
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/FilesClient.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/FilesClient.kt
new file mode 100644
index 0000000..1adde3b
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/FilesClient.kt
@@ -0,0 +1,94 @@
+@file:Suppress("BlockingMethodInNonBlockingContext")
+
+package com.github.kr328.clash.remote
+
+import android.content.Context
+import android.net.Uri
+import com.github.kr328.clash.common.constants.Authorities
+import com.github.kr328.clash.design.model.File
+import com.github.kr328.clash.util.copyContentTo
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+import android.provider.DocumentsContract as DC
+
+class FilesClient(private val context: Context) {
+ suspend fun list(parentDocumentId: String): List = withContext(Dispatchers.IO) {
+ val uri = DC.buildChildDocumentsUri(Authorities.FILES_PROVIDER, parentDocumentId)
+
+ context.contentResolver.query(uri, FilesProjection, null, null, null)?.use { cursor ->
+ val idIndex = cursor.getColumnIndex(DC.Document.COLUMN_DOCUMENT_ID)
+ val nameIndex = cursor.getColumnIndex(DC.Document.COLUMN_DISPLAY_NAME)
+ val sizeIndex = cursor.getColumnIndex(DC.Document.COLUMN_SIZE)
+ val lastModified = cursor.getColumnIndex(DC.Document.COLUMN_LAST_MODIFIED)
+ val mimeTypeIndex = cursor.getColumnIndex(DC.Document.COLUMN_MIME_TYPE)
+
+ cursor.moveToFirst()
+
+ List(cursor.count) {
+ File(
+ id = cursor.getString(idIndex),
+ name = cursor.getString(nameIndex),
+ size = cursor.getLong(sizeIndex),
+ lastModified = cursor.getLong(lastModified),
+ isDirectory = cursor.getString(mimeTypeIndex) == DC.Document.MIME_TYPE_DIR,
+ ).also {
+ cursor.moveToNext()
+ }
+ }.sortedWith(compareBy({ !it.isDirectory }, { it.name }))
+ } ?: emptyList()
+ }
+
+ suspend fun renameDocument(documentId: String, name: String) = withContext(Dispatchers.IO) {
+ val uri = buildDocumentUri(documentId)
+
+ DC.renameDocument(context.contentResolver, uri, name)
+ }
+
+ suspend fun deleteDocument(documentId: String) = withContext(Dispatchers.IO) {
+ val uri = buildDocumentUri(documentId)
+
+ DC.deleteDocument(context.contentResolver, uri)
+ }
+
+ suspend fun importDocument(
+ parentDocumentId: String,
+ source: Uri,
+ name: String
+ ) = withContext(Dispatchers.IO) {
+ val target = buildDocumentUri("$parentDocumentId/$name")
+
+ context.contentResolver.copyContentTo(source, target)
+ }
+
+ suspend fun copyDocument(
+ documentId: String,
+ source: Uri
+ ) {
+ val target = buildDocumentUri(documentId)
+
+ context.contentResolver.copyContentTo(source, target)
+ }
+
+ suspend fun copyDocument(
+ target: Uri,
+ documentId: String
+ ) {
+ val source = buildDocumentUri(documentId)
+
+ context.contentResolver.copyContentTo(source, target)
+ }
+
+ fun buildDocumentUri(documentId: String): Uri {
+ return DC.buildDocumentUri(Authorities.FILES_PROVIDER, documentId)
+ }
+
+ companion object {
+ private val FilesProjection = arrayOf(
+ DC.Document.COLUMN_DOCUMENT_ID,
+ DC.Document.COLUMN_DISPLAY_NAME,
+ DC.Document.COLUMN_SIZE,
+ DC.Document.COLUMN_LAST_MODIFIED,
+ DC.Document.COLUMN_MIME_TYPE,
+ )
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Remote.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Remote.kt
new file mode 100644
index 0000000..d8b249d
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Remote.kt
@@ -0,0 +1,73 @@
+package com.github.kr328.clash.remote
+
+import android.content.Context
+import android.content.Intent
+import com.github.kr328.clash.ApkBrokenActivity
+import com.github.kr328.clash.AppCrashedActivity
+import com.github.kr328.clash.common.Global
+import com.github.kr328.clash.common.log.Log
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.store.AppStore
+import com.github.kr328.clash.util.ApplicationObserver
+import com.github.kr328.clash.util.verifyApk
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.launch
+
+object Remote {
+ val broadcasts: Broadcasts = Broadcasts(Global.application)
+ val service: Service = Service(Global.application) {
+ ApplicationObserver.createdActivities.forEach { it.finish() }
+
+ val intent = AppCrashedActivity::class.intent
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+
+ Global.application.startActivity(intent)
+ }
+
+ private val visible = Channel(Channel.CONFLATED)
+
+ fun launch() {
+ ApplicationObserver.attach(Global.application)
+
+ ApplicationObserver.onVisibleChanged {
+ if(it) {
+ Log.d("App becomes visible")
+ service.bind()
+ broadcasts.register()
+ }
+ else {
+ Log.d("App becomes invisible")
+ service.unbind()
+ broadcasts.unregister()
+ }
+ }
+
+ Global.launch(Dispatchers.IO) {
+ verifyApp()
+ }
+ }
+
+ private suspend fun verifyApp() {
+ val context = Global.application
+ val store = AppStore(context)
+ val updatedAt = getLastUpdated(context)
+
+ if (store.updatedAt != updatedAt) {
+ if (!context.verifyApk()) {
+ ApplicationObserver.createdActivities.forEach { it.finish() }
+
+ val intent = ApkBrokenActivity::class.intent
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+
+ return context.startActivity(intent)
+ } else {
+ store.updatedAt = updatedAt
+ }
+ }
+ }
+
+ private fun getLastUpdated(context: Context): Long {
+ return context.packageManager.getPackageInfo(context.packageName, 0).lastUpdateTime
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Resource.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Resource.kt
new file mode 100644
index 0000000..a718adf
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Resource.kt
@@ -0,0 +1,74 @@
+package com.github.kr328.clash.remote
+
+import kotlinx.coroutines.suspendCancellableCoroutine
+import kotlin.coroutines.resume
+
+class Resource {
+ private interface Callback {
+ fun accept(value: T)
+ }
+
+ private val pending: MutableSet> = mutableSetOf()
+
+ private var value: T? = null
+
+ suspend fun get(): T {
+ return suspendCancellableCoroutine { ctx ->
+ val callback = object : Callback {
+ override fun accept(value: T) {
+ ctx.resume(value)
+ }
+ }
+
+ ctx.invokeOnCancellation {
+ cancel(callback)
+ }
+
+ get(callback)
+ }
+ }
+
+ fun set(v: T?) {
+ setAndNotify(v)
+ }
+
+ fun reset(v: T) {
+ resetIfMatched(v)
+ }
+
+ @Synchronized
+ private fun get(callback: Callback) {
+ val v = value
+
+ if (v == null) {
+ pending.add(callback)
+ } else {
+ callback.accept(v)
+ }
+ }
+
+ @Synchronized
+ private fun setAndNotify(value: T?) {
+ this.value = value
+
+ if (value != null) {
+ pending.forEach {
+ it.accept(value)
+ }
+
+ pending.clear()
+ }
+ }
+
+ @Synchronized
+ private fun resetIfMatched(value: T) {
+ if (this.value === value) {
+ this.value = null
+ }
+ }
+
+ @Synchronized
+ private fun cancel(callback: Callback) {
+ pending.remove(callback)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Service.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Service.kt
new file mode 100644
index 0000000..3d901bf
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/Service.kt
@@ -0,0 +1,59 @@
+package com.github.kr328.clash.remote
+
+import android.app.Application
+import android.content.ComponentName
+import android.content.Context
+import android.content.ServiceConnection
+import android.os.IBinder
+import com.github.kr328.clash.common.log.Log
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.service.RemoteService
+import com.github.kr328.clash.service.remote.IRemoteService
+import com.github.kr328.clash.service.remote.unwrap
+import com.github.kr328.clash.util.unbindServiceSilent
+import java.util.concurrent.TimeUnit
+
+class Service(private val context: Application, val crashed: () -> Unit) {
+ val remote = Resource()
+
+ private val connection = object : ServiceConnection {
+ private var lastCrashed: Long = -1
+
+ override fun onServiceConnected(name: ComponentName?, service: IBinder) {
+ remote.set(service.unwrap(IRemoteService::class))
+ }
+
+ override fun onServiceDisconnected(name: ComponentName?) {
+ remote.set(null)
+
+ if (System.currentTimeMillis() - lastCrashed < TOGGLE_CRASHED_INTERVAL) {
+ unbind()
+
+ crashed()
+ }
+
+ lastCrashed = System.currentTimeMillis()
+ Log.w("RemoteService killed or crashed")
+ }
+ }
+
+ fun bind() {
+ try {
+ context.bindService(RemoteService::class.intent, connection, Context.BIND_AUTO_CREATE)
+ } catch (e: Exception) {
+ unbind()
+
+ crashed()
+ }
+ }
+
+ fun unbind() {
+ context.unbindServiceSilent(connection)
+
+ remote.set(null)
+ }
+
+ companion object {
+ private val TOGGLE_CRASHED_INTERVAL = TimeUnit.SECONDS.toMillis(10)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/StatusClient.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/StatusClient.kt
new file mode 100644
index 0000000..fd3625b
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/remote/StatusClient.kt
@@ -0,0 +1,34 @@
+package com.github.kr328.clash.remote
+
+import android.content.Context
+import android.net.Uri
+import com.github.kr328.clash.common.constants.Authorities
+import com.github.kr328.clash.common.log.Log
+import com.github.kr328.clash.service.StatusProvider
+
+class StatusClient(private val context: Context) {
+ private val uri: Uri
+ get() {
+ return Uri.Builder()
+ .scheme("content")
+ .authority(Authorities.STATUS_PROVIDER)
+ .build()
+ }
+
+ fun currentProfile(): String? {
+ return try {
+ val result = context.contentResolver.call(
+ uri,
+ StatusProvider.METHOD_CURRENT_PROFILE,
+ null,
+ null
+ )
+
+ result?.getString("name")
+ } catch (e: Exception) {
+ Log.w("Query current profile: $e", e)
+
+ null
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/store/AppStore.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/store/AppStore.kt
new file mode 100644
index 0000000..86c7f86
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/store/AppStore.kt
@@ -0,0 +1,22 @@
+package com.github.kr328.clash.store
+
+import android.content.Context
+import com.github.kr328.clash.common.store.Store
+import com.github.kr328.clash.common.store.asStoreProvider
+
+class AppStore(context: Context) {
+ private val store = Store(
+ context
+ .getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE)
+ .asStoreProvider()
+ )
+
+ var updatedAt: Long by store.long(
+ key = "updated_at",
+ defaultValue = -1,
+ )
+
+ companion object {
+ private const val FILE_NAME = "app"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/store/TipsStore.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/store/TipsStore.kt
new file mode 100644
index 0000000..562cfee
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/store/TipsStore.kt
@@ -0,0 +1,29 @@
+package com.github.kr328.clash.store
+
+import android.content.Context
+import com.github.kr328.clash.common.store.Store
+import com.github.kr328.clash.common.store.asStoreProvider
+
+class TipsStore(context: Context) {
+ private val store = Store(
+ context
+ .getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE)
+ .asStoreProvider()
+ )
+
+ var requestDonate: Boolean by store.boolean(
+ key = "request_donate",
+ defaultValue = true,
+ )
+
+ var primaryVersion: Int by store.int(
+ key = "primary_version",
+ defaultValue = -1,
+ )
+
+ companion object {
+ const val CURRENT_PRIMARY_VERSION = 1
+
+ private const val FILE_NAME = "tips"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Activity.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Activity.kt
new file mode 100644
index 0000000..6109248
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Activity.kt
@@ -0,0 +1,44 @@
+package com.github.kr328.clash.util
+
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.LifecycleRegistry
+import kotlinx.coroutines.NonCancellable
+import kotlinx.coroutines.withContext
+
+class ActivityResultLifecycle : LifecycleOwner {
+ private val lifecycle = LifecycleRegistry(this)
+
+ init {
+ lifecycle.currentState = Lifecycle.State.INITIALIZED
+ }
+
+ override fun getLifecycle(): Lifecycle {
+ return lifecycle
+ }
+
+ suspend fun use(block: suspend (lifecycle: ActivityResultLifecycle, start: () -> Unit) -> T): T {
+ return try {
+ markCreated()
+
+ block(this, this::markStarted)
+ } finally {
+ withContext(NonCancellable) {
+ markDestroy()
+ }
+ }
+ }
+
+ private fun markCreated() {
+ lifecycle.currentState = Lifecycle.State.CREATED
+ }
+
+ private fun markStarted() {
+ lifecycle.currentState = Lifecycle.State.STARTED
+ lifecycle.currentState = Lifecycle.State.RESUMED
+ }
+
+ private fun markDestroy() {
+ lifecycle.currentState = Lifecycle.State.DESTROYED
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Application.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Application.kt
new file mode 100644
index 0000000..1fb6336
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Application.kt
@@ -0,0 +1,85 @@
+package com.github.kr328.clash.util
+
+import android.app.Activity
+import android.app.Application
+import android.content.Context
+import android.os.Build
+import android.os.Bundle
+import java.io.File
+import java.util.zip.ZipFile
+
+object ApplicationObserver {
+ private val _createdActivities: MutableSet = mutableSetOf()
+ private val _visibleActivities: MutableSet = mutableSetOf()
+
+ private var visibleChanged: (Boolean) -> Unit = {}
+
+ private var appVisible = false
+ private set(value) {
+ if (field != value) {
+ field = value
+
+ visibleChanged(value)
+ }
+ }
+
+ val createdActivities: Set
+ get() = _createdActivities
+
+ private val activityObserver = object : Application.ActivityLifecycleCallbacks {
+ @Synchronized
+ override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
+ _createdActivities.add(activity)
+ }
+
+ @Synchronized
+ override fun onActivityDestroyed(activity: Activity) {
+ _createdActivities.remove(activity)
+ _visibleActivities.remove(activity)
+ appVisible = _visibleActivities.isNotEmpty()
+ }
+
+ override fun onActivityStarted(activity: Activity) {
+ _visibleActivities.add(activity)
+ appVisible = true
+ }
+
+ override fun onActivityStopped(activity: Activity) {
+ _visibleActivities.remove(activity)
+ appVisible = _visibleActivities.isNotEmpty()
+ }
+
+ override fun onActivityPaused(activity: Activity) {}
+ override fun onActivityResumed(activity: Activity) {}
+ override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
+ }
+
+ fun onVisibleChanged(visibleChanged: (Boolean) -> Unit) {
+ this.visibleChanged = visibleChanged
+ }
+
+ fun attach(application: Application) {
+ application.registerActivityLifecycleCallbacks(activityObserver)
+ }
+}
+
+fun Context.verifyApk(): Boolean {
+ return try {
+ val info = applicationInfo
+ val sources = info.splitSourceDirs ?: arrayOf(info.sourceDir) ?: return false
+
+ val regexNativeLibrary = Regex("lib/(\\S+)/libclash.so")
+ val availableAbi = Build.SUPPORTED_ABIS.toSet()
+ val apkAbi = sources
+ .asSequence()
+ .filter { File(it).exists() }
+ .flatMap { ZipFile(it).entries().asSequence() }
+ .mapNotNull { regexNativeLibrary.matchEntire(it.name) }
+ .mapNotNull { it.groups[1]?.value }
+ .toSet()
+
+ availableAbi.intersect(apkAbi).isNotEmpty()
+ } catch (e: Exception) {
+ false
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Clash.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Clash.kt
new file mode 100644
index 0000000..777fb12
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Clash.kt
@@ -0,0 +1,32 @@
+package com.github.kr328.clash.util
+
+import android.content.Context
+import android.content.Intent
+import android.net.VpnService
+import com.github.kr328.clash.common.compat.startForegroundServiceCompat
+import com.github.kr328.clash.common.constants.Intents
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.design.store.UiStore
+import com.github.kr328.clash.service.ClashService
+import com.github.kr328.clash.service.TunService
+import com.github.kr328.clash.service.util.sendBroadcastSelf
+
+fun Context.startClashService(): Intent? {
+ val startTun = UiStore(this).enableVpn
+
+ if (startTun) {
+ val vpnRequest = VpnService.prepare(this)
+ if (vpnRequest != null)
+ return vpnRequest
+
+ startForegroundServiceCompat(TunService::class.intent)
+ } else {
+ startForegroundServiceCompat(ClashService::class.intent)
+ }
+
+ return null
+}
+
+fun Context.stopClashService() {
+ sendBroadcastSelf(Intent(Intents.ACTION_CLASH_REQUEST_STOP))
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Content.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Content.kt
new file mode 100644
index 0000000..94f5f48
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Content.kt
@@ -0,0 +1,25 @@
+package com.github.kr328.clash.util
+
+import android.content.ContentResolver
+import android.net.Uri
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+import java.io.FileNotFoundException
+
+private fun fileNotFound(file: Uri): FileNotFoundException {
+ return FileNotFoundException("$file not found")
+}
+
+@Suppress("BlockingMethodInNonBlockingContext")
+suspend fun ContentResolver.copyContentTo(
+ source: Uri,
+ target: Uri
+) {
+ withContext(Dispatchers.IO) {
+ (openInputStream(source) ?: throw fileNotFound(source)).use { input ->
+ (openOutputStream(target, "rwt") ?: throw fileNotFound(target)).use { output ->
+ input.copyTo(output)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Files.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Files.kt
new file mode 100644
index 0000000..9b696c8
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Files.kt
@@ -0,0 +1,10 @@
+package com.github.kr328.clash.util
+
+import android.content.Context
+import java.io.File
+
+val Context.logsDir: File
+ get() = cacheDir.resolve("logs")
+
+val Context.clashDir: File
+ get() = filesDir.resolve("clash")
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Remote.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Remote.kt
new file mode 100644
index 0000000..20120c4
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Remote.kt
@@ -0,0 +1,46 @@
+package com.github.kr328.clash.util
+
+import android.os.DeadObjectException
+import com.github.kr328.clash.common.log.Log
+import com.github.kr328.clash.remote.Remote
+import com.github.kr328.clash.service.remote.IClashManager
+import com.github.kr328.clash.service.remote.IProfileManager
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+import kotlin.coroutines.CoroutineContext
+
+suspend fun withClash(
+ context: CoroutineContext = Dispatchers.IO,
+ block: suspend IClashManager.() -> T
+): T {
+ while (true) {
+ val remote = Remote.service.remote.get()
+ val client = remote.clash()
+
+ try {
+ return withContext(context) { client.block() }
+ } catch (e: DeadObjectException) {
+ Log.w("Remote services panic")
+
+ Remote.service.remote.reset(remote)
+ }
+ }
+}
+
+suspend fun withProfile(
+ context: CoroutineContext = Dispatchers.IO,
+ block: suspend IProfileManager.() -> T
+): T {
+ while (true) {
+ val remote = Remote.service.remote.get()
+ val client = remote.profile()
+
+ try {
+ return withContext(context) { client.block() }
+ } catch (e: DeadObjectException) {
+ Log.w("Remote services panic")
+
+ Remote.service.remote.reset(remote)
+ }
+ }
+}
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Service.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Service.kt
new file mode 100644
index 0000000..a23d6ee
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Service.kt
@@ -0,0 +1,12 @@
+package com.github.kr328.clash.util
+
+import android.content.Context
+import android.content.ServiceConnection
+
+fun Context.unbindServiceSilent(connection: ServiceConnection) {
+ try {
+ unbindService(connection)
+ } catch (e: Exception) {
+ // ignore
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Uri.kt b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Uri.kt
new file mode 100644
index 0000000..5cfb774
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/java/com/github/kr328/clash/util/Uri.kt
@@ -0,0 +1,6 @@
+package com.github.kr328.clash.util
+
+import android.net.Uri
+
+val Uri.fileName: String?
+ get() = schemeSpecificPart.split("/").lastOrNull()
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/res/drawable/appicon.xml b/Android-kotlin-Code/app/src/main/res/drawable/appicon.xml
new file mode 100644
index 0000000..79200c1
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/drawable/appicon.xml
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android-kotlin-Code/app/src/main/res/drawable/ic_launcher_foreground.xml b/Android-kotlin-Code/app/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..53a21da
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Android-kotlin-Code/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..5f7b11e
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Android-kotlin-Code/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..5f7b11e
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Android-kotlin-Code/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..5ff2325
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Android-kotlin-Code/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..5ff2325
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Android-kotlin-Code/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..d855e29
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Android-kotlin-Code/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..d855e29
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Android-kotlin-Code/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..ed1d65c
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Android-kotlin-Code/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..ed1d65c
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Android-kotlin-Code/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..a2990a6
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Android-kotlin-Code/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..a2990a6
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Android-kotlin-Code/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..cf5b405
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/Android-kotlin-Code/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Android-kotlin-Code/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..cf5b405
Binary files /dev/null and b/Android-kotlin-Code/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/Android-kotlin-Code/app/src/main/res/values-night/themes.xml b/Android-kotlin-Code/app/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..a2f025b
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/res/values/colors.xml b/Android-kotlin-Code/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..9f6352f
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/values/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/res/values/ic_banner_background.xml b/Android-kotlin-Code/app/src/main/res/values/ic_banner_background.xml
new file mode 100644
index 0000000..15db34b
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/values/ic_banner_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/res/values/ic_launcher_background.xml b/Android-kotlin-Code/app/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 0000000..c5d5899
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/res/values/ids.xml b/Android-kotlin-Code/app/src/main/res/values/ids.xml
new file mode 100644
index 0000000..8e4ebb8
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/values/ids.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/res/values/strings.xml b/Android-kotlin-Code/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..045e125
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Android-kotlin-Code/app/src/main/res/values/themes.xml b/Android-kotlin-Code/app/src/main/res/values/themes.xml
new file mode 100644
index 0000000..9fb80f6
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/values/themes.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Android-kotlin-Code/app/src/main/res/xml/full_backup_content.xml b/Android-kotlin-Code/app/src/main/res/xml/full_backup_content.xml
new file mode 100644
index 0000000..4ce6e59
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/xml/full_backup_content.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android-kotlin-Code/app/src/main/res/xml/network_security_config.xml b/Android-kotlin-Code/app/src/main/res/xml/network_security_config.xml
new file mode 100644
index 0000000..efbcacf
--- /dev/null
+++ b/Android-kotlin-Code/app/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Android-kotlin-Code/build.gradle.kts b/Android-kotlin-Code/build.gradle.kts
new file mode 100644
index 0000000..996272a
--- /dev/null
+++ b/Android-kotlin-Code/build.gradle.kts
@@ -0,0 +1,181 @@
+@file:Suppress("UNUSED_VARIABLE")
+
+import com.android.build.gradle.AppExtension
+import com.android.build.gradle.BaseExtension
+import java.net.URL
+import java.util.*
+
+buildscript {
+ repositories {
+ mavenCentral()
+ google()
+ maven("https://raw.githubusercontent.com/MetaCubeX/maven-backup/main/releases")
+ }
+ dependencies {
+ classpath(libs.build.android)
+ classpath(libs.build.kotlin.common)
+ classpath(libs.build.kotlin.serialization)
+ classpath(libs.build.ksp)
+ classpath(libs.build.golang)
+ }
+}
+
+subprojects {
+ repositories {
+ mavenCentral()
+ google()
+ maven("https://raw.githubusercontent.com/MetaCubeX/maven-backup/main/releases")
+ }
+
+ val isApp = name == "app"
+
+ apply(plugin = if (isApp) "com.android.application" else "com.android.library")
+
+ extensions.configure {
+ defaultConfig {
+ if (isApp) {
+ applicationId = "com.github.metacubex.clash"
+ }
+
+ minSdk = 24
+
+ compileSdkVersion(33)
+// targetSdkVersion(33)
+ versionName = "2.11.1"
+ versionCode = 211001
+
+ resValue("string", "release_name", "v$versionName")
+ resValue("integer", "release_code", "$versionCode")
+
+ externalNativeBuild {
+ cmake {
+ abiFilters("arm64-v8a", "armeabi-v7a",)
+ }
+ }
+
+ if (!isApp) {
+ consumerProguardFiles("consumer-rules.pro")
+ } else {
+ setProperty("archivesBaseName", "LiteVPN-$versionName")
+ }
+ }
+
+ ndkVersion = "23.0.7599858"
+// compileSdkVersion(defaultConfig.targetSdk!!)
+
+ if (isApp) {
+ packagingOptions {
+ resources {
+ excludes.add("DebugProbesKt.bin")
+ }
+ }
+ }
+
+ productFlavors {
+ flavorDimensions("feature")
+
+ create("alpha") {
+ isDefault = true
+ dimension = flavorDimensionList[0]
+ versionNameSuffix = ".Alpha"
+
+ buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")")
+
+ resValue("string", "launch_name", "LiteVPN")
+ resValue("string", "application_name", "LiteVPN")
+
+ if (isApp) {
+ applicationIdSuffix = ".alpha"
+ }
+ }
+
+ create("meta") {
+
+ dimension = flavorDimensionList[0]
+ versionNameSuffix = ".Meta"
+
+ buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")")
+
+ resValue("string", "launch_name", "LiteVPN")//@string/launch_name_meta
+ resValue("string", "application_name", "LiteVPN")//@string/application_name_meta
+
+ if (isApp) {
+ applicationIdSuffix = ".meta"
+ }
+ }
+ }
+
+ sourceSets {
+ getByName("meta") {
+ java.srcDirs("src/foss/java")
+ }
+ getByName("alpha") {
+ java.srcDirs("src/foss/java")
+ }
+ }
+
+ signingConfigs {
+ val keystore = rootProject.file("signing.properties")
+ if (keystore.exists()) {
+ create("release") {
+ val prop = Properties().apply {
+ keystore.inputStream().use(this::load)
+ }
+
+ storeFile = rootProject.file("release.keystore")
+ storePassword = prop.getProperty("keystore.password")!!
+ keyAlias = prop.getProperty("key.alias")!!
+ keyPassword = prop.getProperty("key.password")!!
+ }
+ }
+ }
+
+ buildTypes {
+ named("release") {
+ isMinifyEnabled = isApp
+ isShrinkResources = isApp
+ signingConfig = signingConfigs.findByName("release")
+ proguardFiles(
+ getDefaultProguardFile("proguard-android-optimize.txt"),
+ "proguard-rules.pro"
+ )
+ }
+ named("debug") {
+ versionNameSuffix = ".debug"
+ }
+ }
+
+ buildFeatures.apply {
+ dataBinding {
+ isEnabled = name != "hideapi"
+ }
+ }
+
+ if (isApp) {
+ this as AppExtension
+
+ splits {
+ abi {
+ isEnable = true
+ isUniversalApk = true
+ }
+ }
+ }
+ }
+}
+
+task("clean", type = Delete::class) {
+ delete(rootProject.buildDir)
+}
+
+tasks.wrapper {
+ distributionType = Wrapper.DistributionType.ALL
+
+ doLast {
+ val sha256 = URL("$distributionUrl.sha256").openStream()
+ .use { it.reader().readText().trim() }
+
+ file("gradle/wrapper/gradle-wrapper.properties")
+ .appendText("distributionSha256Sum=$sha256")
+ }
+}
diff --git a/Android-kotlin-Code/common/build.gradle.kts b/Android-kotlin-Code/common/build.gradle.kts
new file mode 100644
index 0000000..bff1f8b
--- /dev/null
+++ b/Android-kotlin-Code/common/build.gradle.kts
@@ -0,0 +1,11 @@
+plugins {
+ kotlin("android")
+ id("com.android.library")
+}
+
+dependencies {
+ compileOnly(project(":hideapi"))
+
+ implementation(libs.kotlin.coroutine)
+ implementation(libs.androidx.core)
+}
diff --git a/Android-kotlin-Code/common/consumer-rules.pro b/Android-kotlin-Code/common/consumer-rules.pro
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/common/proguard-rules.pro b/Android-kotlin-Code/common/proguard-rules.pro
new file mode 100644
index 0000000..f1b4245
--- /dev/null
+++ b/Android-kotlin-Code/common/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/Android-kotlin-Code/common/src/main/AndroidManifest.xml b/Android-kotlin-Code/common/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..cda5885
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/AndroidManifest.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/Global.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/Global.kt
new file mode 100644
index 0000000..bea2201
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/Global.kt
@@ -0,0 +1,21 @@
+package com.github.kr328.clash.common
+
+import android.app.Application
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.cancel
+
+object Global : CoroutineScope by CoroutineScope(Dispatchers.IO) {
+ val application: Application
+ get() = application_
+
+ private lateinit var application_: Application
+
+ fun init(application: Application) {
+ this.application_ = application
+ }
+
+ fun destroy() {
+ cancel()
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/App.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/App.kt
new file mode 100644
index 0000000..cb1b536
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/App.kt
@@ -0,0 +1,31 @@
+package com.github.kr328.clash.common.compat
+
+import android.app.ActivityThread
+import android.app.Application
+import android.graphics.drawable.AdaptiveIconDrawable
+import android.graphics.drawable.Drawable
+import android.os.Build
+import com.github.kr328.clash.common.log.Log
+
+val Application.currentProcessName: String
+ get() {
+ if (Build.VERSION.SDK_INT >= 28)
+ return Application.getProcessName()
+
+ return try {
+ ActivityThread.currentProcessName()
+ } catch (throwable: Throwable) {
+ Log.w("Resolve process name: $throwable")
+
+ packageName
+ }
+ }
+
+fun Drawable.foreground(): Drawable {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O &&
+ this is AdaptiveIconDrawable && this.background == null
+ ) {
+ return this.foreground
+ }
+ return this
+}
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Context.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Context.kt
new file mode 100644
index 0000000..cc4b7c1
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Context.kt
@@ -0,0 +1,17 @@
+@file:Suppress("DEPRECATION")
+
+package com.github.kr328.clash.common.compat
+
+import android.content.Context
+import android.graphics.drawable.Drawable
+import androidx.annotation.ColorRes
+import androidx.annotation.DrawableRes
+import androidx.core.content.ContextCompat
+
+fun Context.getColorCompat(@ColorRes id: Int): Int {
+ return ContextCompat.getColor(this, id)
+}
+
+fun Context.getDrawableCompat(@DrawableRes id: Int): Drawable? {
+ return ContextCompat.getDrawable(this, id)
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Html.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Html.kt
new file mode 100644
index 0000000..deb2cb1
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Html.kt
@@ -0,0 +1,15 @@
+@file:Suppress("DEPRECATION")
+
+package com.github.kr328.clash.common.compat
+
+import android.os.Build
+import android.text.Html
+import android.text.Spanned
+
+fun fromHtmlCompat(content: String): Spanned {
+ return if (Build.VERSION.SDK_INT >= 24) {
+ Html.fromHtml(content, Html.FROM_HTML_MODE_COMPACT)
+ } else {
+ Html.fromHtml(content)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Intents.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Intents.kt
new file mode 100644
index 0000000..dae7463
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Intents.kt
@@ -0,0 +1,16 @@
+package com.github.kr328.clash.common.compat
+
+import android.app.PendingIntent
+import android.os.Build
+
+fun pendingIntentFlags(flags: Int, mutable: Boolean = false): Int {
+ return if (Build.VERSION.SDK_INT >= 24) {
+ if (Build.VERSION.SDK_INT > 30 && mutable) {
+ flags or PendingIntent.FLAG_MUTABLE
+ } else {
+ flags or PendingIntent.FLAG_IMMUTABLE
+ }
+ } else {
+ flags
+ }
+}
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Package.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Package.kt
new file mode 100644
index 0000000..f1d119a
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Package.kt
@@ -0,0 +1,14 @@
+@file:Suppress("DEPRECATION")
+
+package com.github.kr328.clash.common.compat
+
+import android.content.pm.PackageInfo
+
+val PackageInfo.versionCodeCompat: Long
+ get() {
+ return if (android.os.Build.VERSION.SDK_INT >= 28) {
+ longVersionCode
+ } else {
+ versionCode.toLong()
+ }
+ }
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Resource.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Resource.kt
new file mode 100644
index 0000000..a478f85
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Resource.kt
@@ -0,0 +1,16 @@
+@file:Suppress("DEPRECATION")
+
+package com.github.kr328.clash.common.compat
+
+import android.content.res.Configuration
+import android.os.Build
+import java.util.*
+
+val Configuration.preferredLocale: Locale
+ get() {
+ return if (Build.VERSION.SDK_INT >= 24) {
+ locales[0]
+ } else {
+ locale
+ }
+ }
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Services.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Services.kt
new file mode 100644
index 0000000..5eded77
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/Services.kt
@@ -0,0 +1,13 @@
+package com.github.kr328.clash.common.compat
+
+import android.content.Context
+import android.content.Intent
+import android.os.Build
+
+fun Context.startForegroundServiceCompat(intent: Intent) {
+ if (Build.VERSION.SDK_INT >= 26) {
+ startForegroundService(intent)
+ } else {
+ startService(intent)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/UI.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/UI.kt
new file mode 100644
index 0000000..3ce2d64
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/UI.kt
@@ -0,0 +1,126 @@
+@file:Suppress("DEPRECATION")
+
+package com.github.kr328.clash.common.compat
+
+import android.annotation.TargetApi
+import android.os.Build
+import android.view.View
+import android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
+import android.view.View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
+import android.view.Window
+import android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS
+import android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
+import android.view.WindowManager
+
+var Window.isSystemBarsTranslucentCompat: Boolean
+ get() {
+ throw UnsupportedOperationException("set value only")
+ }
+ set(value) {
+ if (Build.VERSION.SDK_INT >= 30) {
+ setDecorFitsSystemWindows(!value)
+ } else {
+ decorView.systemUiVisibility =
+ if (value) {
+ decorView.systemUiVisibility or
+ View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
+ View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
+ View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+ } else {
+ decorView.systemUiVisibility and
+ (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
+ View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
+ View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION).inv()
+ }
+ }
+
+ if (Build.VERSION.SDK_INT >= 28) {
+ if (value) {
+ attributes.layoutInDisplayCutoutMode =
+ WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
+ } else {
+ attributes.layoutInDisplayCutoutMode =
+ WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
+ }
+ }
+ }
+
+var Window.isLightStatusBarsCompat: Boolean
+ get() {
+ throw UnsupportedOperationException("set value only")
+ }
+ @TargetApi(23)
+ set(value) {
+ if (value) {
+ if (Build.VERSION.SDK_INT >= 30) {
+ decorView.windowInsetsController?.apply {
+ setSystemBarsAppearance(
+ APPEARANCE_LIGHT_STATUS_BARS,
+ APPEARANCE_LIGHT_STATUS_BARS
+ )
+ }
+ } else {
+ decorView.systemUiVisibility =
+ decorView.systemUiVisibility or SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
+ }
+ } else {
+ if (Build.VERSION.SDK_INT >= 30) {
+ decorView.windowInsetsController?.apply {
+ setSystemBarsAppearance(
+ 0,
+ APPEARANCE_LIGHT_STATUS_BARS
+ )
+ }
+ } else {
+ decorView.systemUiVisibility =
+ decorView.systemUiVisibility and SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv()
+ }
+ }
+ }
+
+var Window.isLightNavigationBarCompat: Boolean
+ get() {
+ throw UnsupportedOperationException("set value only")
+ }
+ @TargetApi(27)
+ set(value) {
+ if (value) {
+ if (Build.VERSION.SDK_INT >= 30) {
+ decorView.windowInsetsController?.apply {
+ setSystemBarsAppearance(
+ APPEARANCE_LIGHT_NAVIGATION_BARS,
+ APPEARANCE_LIGHT_NAVIGATION_BARS
+ )
+ }
+ } else {
+ decorView.systemUiVisibility =
+ decorView.systemUiVisibility or SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
+ }
+ } else {
+ if (Build.VERSION.SDK_INT >= 30) {
+ decorView.windowInsetsController?.apply {
+ setSystemBarsAppearance(
+ 0,
+ APPEARANCE_LIGHT_NAVIGATION_BARS
+ )
+ }
+ } else {
+ decorView.systemUiVisibility =
+ decorView.systemUiVisibility and SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR.inv()
+ }
+ }
+ }
+
+var Window.isAllowForceDarkCompat: Boolean
+ get() {
+ return if (Build.VERSION.SDK_INT >= 29) {
+ decorView.isForceDarkAllowed
+ } else {
+ false
+ }
+ }
+ set(value) {
+ if (Build.VERSION.SDK_INT >= 29) {
+ decorView.isForceDarkAllowed = value
+ }
+ }
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/View.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/View.kt
new file mode 100644
index 0000000..77de8ed
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/compat/View.kt
@@ -0,0 +1,17 @@
+@file:Suppress("DEPRECATION")
+
+package com.github.kr328.clash.common.compat
+
+import android.os.Build
+import android.widget.TextView
+import androidx.annotation.StyleRes
+
+var TextView.textAppearance: Int
+ get() = throw UnsupportedOperationException("set value only")
+ set(@StyleRes value) {
+ if (Build.VERSION.SDK_INT >= 23) {
+ setTextAppearance(value)
+ } else {
+ setTextAppearance(context, value)
+ }
+ }
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Authorities.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Authorities.kt
new file mode 100644
index 0000000..63c7e94
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Authorities.kt
@@ -0,0 +1,9 @@
+package com.github.kr328.clash.common.constants
+
+import com.github.kr328.clash.common.util.packageName
+
+object Authorities {
+ val STATUS_PROVIDER = "$packageName.status"
+ val SETTINGS_PROVIDER = "$packageName.settings"
+ val FILES_PROVIDER = "$packageName.files"
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Components.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Components.kt
new file mode 100644
index 0000000..734a2a0
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Components.kt
@@ -0,0 +1,11 @@
+package com.github.kr328.clash.common.constants
+
+import android.content.ComponentName
+import com.github.kr328.clash.common.util.packageName
+
+object Components {
+ private const val componentsPackageName = "com.github.kr328.clash"
+
+ val MAIN_ACTIVITY = ComponentName(packageName, "$componentsPackageName.MainActivity")
+ val PROPERTIES_ACTIVITY = ComponentName(packageName, "$componentsPackageName.PropertiesActivity")
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Intents.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Intents.kt
new file mode 100644
index 0000000..b754dc7
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Intents.kt
@@ -0,0 +1,30 @@
+package com.github.kr328.clash.common.constants
+
+import com.github.kr328.clash.common.util.packageName
+
+object Intents {
+ // Public
+ val ACTION_PROVIDE_URL = "$packageName.action.PROVIDE_URL"
+ val ACTION_START_CLASH = "$packageName.action.START_CLASH"
+ val ACTION_STOP_CLASH = "$packageName.action.STOP_CLASH"
+ val ACTION_TOGGLE_CLASH = "$packageName.action.TOGGLE_CLASH"
+
+ const val EXTRA_NAME = "name"
+
+ // Self
+ val ACTION_SERVICE_RECREATED = "$packageName.intent.action.CLASH_RECREATED"
+ val ACTION_CLASH_STARTED = "$packageName.intent.action.CLASH_STARTED"
+ val ACTION_CLASH_STOPPED = "$packageName.intent.action.CLASH_STOPPED"
+ val ACTION_CLASH_REQUEST_STOP = "$packageName.intent.action.CLASH_REQUEST_STOP"
+ val ACTION_PROFILE_CHANGED = "$packageName.intent.action.PROFILE_CHANGED"
+ val ACTION_PROFILE_UPDATE_COMPLETED = "$packageName.intent.action.PROFILE_UPDATE_COMPLETED"
+ val ACTION_PROFILE_UPDATE_FAILED = "$packageName.intent.action.PROFILE_UPDATE_FAILED"
+ val ACTION_PROFILE_REQUEST_UPDATE = "$packageName.intent.action.REQUEST_UPDATE"
+ val ACTION_PROFILE_SCHEDULE_UPDATES = "$packageName.intent.action.SCHEDULE_UPDATES"
+ val ACTION_PROFILE_LOADED = "$packageName.intent.action.PROFILE_LOADED"
+ val ACTION_OVERRIDE_CHANGED = "$packageName.intent.action.OVERRIDE_CHANGED"
+
+ const val EXTRA_STOP_REASON = "stop_reason"
+ const val EXTRA_UUID = "uuid"
+ const val EXTRA_FAIL_REASON = "fail_reason"
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Metadata.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Metadata.kt
new file mode 100644
index 0000000..61a6e9d
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Metadata.kt
@@ -0,0 +1,7 @@
+package com.github.kr328.clash.common.constants
+
+import com.github.kr328.clash.common.util.packageName
+
+object Metadata {
+ val GEOIP_FILE_NAME = "$packageName.GEOIP_FILE_NAME"
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Permissions.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Permissions.kt
new file mode 100644
index 0000000..f682f80
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/constants/Permissions.kt
@@ -0,0 +1,7 @@
+package com.github.kr328.clash.common.constants
+
+import com.github.kr328.clash.common.util.packageName
+
+object Permissions {
+ val RECEIVE_SELF_BROADCASTS = "$packageName.permission.RECEIVE_BROADCASTS"
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/id/UndefinedIds.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/id/UndefinedIds.kt
new file mode 100644
index 0000000..674eb63
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/id/UndefinedIds.kt
@@ -0,0 +1,15 @@
+package com.github.kr328.clash.common.id
+
+object UndefinedIds {
+ private const val PREFIX = 0x14000000
+ private const val MASK = 0x00FFFFFF
+
+ private var current: Int = 0
+
+ @Synchronized
+ fun next(): Int {
+ current = ((current and MASK) + 1 or PREFIX)
+
+ return current
+ }
+}
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/log/Log.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/log/Log.kt
new file mode 100644
index 0000000..52fa687
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/log/Log.kt
@@ -0,0 +1,23 @@
+package com.github.kr328.clash.common.log
+
+object Log {
+ private const val TAG = "ClashMetaForAndroid"
+
+ fun i(message: String, throwable: Throwable? = null) =
+ android.util.Log.i(TAG, message, throwable)
+
+ fun w(message: String, throwable: Throwable? = null) =
+ android.util.Log.w(TAG, message, throwable)
+
+ fun e(message: String, throwable: Throwable? = null) =
+ android.util.Log.e(TAG, message, throwable)
+
+ fun d(message: String, throwable: Throwable? = null) =
+ android.util.Log.d(TAG, message, throwable)
+
+ fun v(message: String, throwable: Throwable? = null) =
+ android.util.Log.v(TAG, message, throwable)
+
+ fun f(message: String, throwable: Throwable) =
+ android.util.Log.wtf(message, throwable)
+}
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt
new file mode 100644
index 0000000..dce74fc
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/store/Providers.kt
@@ -0,0 +1,60 @@
+package com.github.kr328.clash.common.store
+
+import android.content.SharedPreferences
+import androidx.core.content.edit
+
+class SharedPreferenceProvider(private val preferences: SharedPreferences) : StoreProvider {
+ override fun getInt(key: String, defaultValue: Int): Int {
+ return preferences.getInt(key, defaultValue)
+ }
+
+ override fun setInt(key: String, value: Int) {
+ preferences.edit {
+ putInt(key, value)
+ }
+ }
+
+ override fun getLong(key: String, defaultValue: Long): Long {
+ return preferences.getLong(key, defaultValue)
+ }
+
+ override fun setLong(key: String, value: Long) {
+ preferences.edit {
+ putLong(key, value)
+ }
+ }
+
+ override fun getString(key: String, defaultValue: String): String {
+ return preferences.getString(key, defaultValue)!!
+ }
+
+ override fun setString(key: String, value: String) {
+ preferences.edit {
+ putString(key, value)
+ }
+ }
+
+ override fun getStringSet(key: String, defaultValue: Set): Set {
+ return preferences.getStringSet(key, defaultValue)!!
+ }
+
+ override fun setStringSet(key: String, value: Set) {
+ preferences.edit {
+ putStringSet(key, value)
+ }
+ }
+
+ override fun getBoolean(key: String, defaultValue: Boolean): Boolean {
+ return preferences.getBoolean(key, defaultValue)
+ }
+
+ override fun setBoolean(key: String, value: Boolean) {
+ preferences.edit {
+ putBoolean(key, value)
+ }
+ }
+}
+
+fun SharedPreferences.asStoreProvider(): StoreProvider {
+ return SharedPreferenceProvider(this)
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/store/Store.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/store/Store.kt
new file mode 100644
index 0000000..4429fed
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/store/Store.kt
@@ -0,0 +1,98 @@
+package com.github.kr328.clash.common.store
+
+import kotlin.reflect.KProperty
+
+class Store(val provider: StoreProvider) {
+ interface Delegate {
+ operator fun getValue(thisRef: Any?, property: KProperty<*>): T
+ operator fun setValue(thisRef: Any?, property: KProperty<*>, value: T)
+ }
+
+ fun int(key: String, defaultValue: Int): Delegate {
+ return object : Delegate {
+ override fun getValue(thisRef: Any?, property: KProperty<*>): Int {
+ return provider.getInt(key, defaultValue)
+ }
+
+ override fun setValue(thisRef: Any?, property: KProperty<*>, value: Int) {
+ provider.setInt(key, value)
+ }
+ }
+ }
+
+ fun long(key: String, defaultValue: Long): Delegate {
+ return object : Delegate {
+ override fun getValue(thisRef: Any?, property: KProperty<*>): Long {
+ return provider.getLong(key, defaultValue)
+ }
+
+ override fun setValue(thisRef: Any?, property: KProperty<*>, value: Long) {
+ provider.setLong(key, value)
+ }
+ }
+ }
+
+ fun string(key: String, defaultValue: String): Delegate {
+ return object : Delegate {
+ override fun getValue(thisRef: Any?, property: KProperty<*>): String {
+ return provider.getString(key, defaultValue)
+ }
+
+ override fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
+ provider.setString(key, value)
+ }
+ }
+ }
+
+ fun stringSet(key: String, defaultValue: Set): Delegate> {
+ return object : Delegate> {
+ override fun getValue(thisRef: Any?, property: KProperty<*>): Set {
+ return provider.getStringSet(key, defaultValue)
+ }
+
+ override fun setValue(thisRef: Any?, property: KProperty<*>, value: Set) {
+ provider.setStringSet(key, value)
+ }
+ }
+ }
+
+ fun boolean(key: String, defaultValue: Boolean): Delegate {
+ return object : Delegate {
+ override fun getValue(thisRef: Any?, property: KProperty<*>): Boolean {
+ return provider.getBoolean(key, defaultValue)
+ }
+
+ override fun setValue(thisRef: Any?, property: KProperty<*>, value: Boolean) {
+ provider.setBoolean(key, value)
+ }
+ }
+ }
+
+ fun > enum(key: String, defaultValue: T, values: Array): Delegate {
+ return object : Delegate {
+ override fun getValue(thisRef: Any?, property: KProperty<*>): T {
+ val name = provider.getString(key, defaultValue.name)
+
+ return values.find { name == it.name } ?: defaultValue
+ }
+
+ override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {
+ provider.setString(key, value.name)
+ }
+ }
+ }
+
+ fun typedString(key: String, from: (String) -> T?, to: (T?) -> String): Delegate {
+ return object : Delegate {
+ override fun getValue(thisRef: Any?, property: KProperty<*>): T? {
+ val value = provider.getString(key, to(null))
+
+ return from(value)
+ }
+
+ override fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) {
+ provider.setString(key, to(value))
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt
new file mode 100644
index 0000000..1f01f77
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/store/StoreProvider.kt
@@ -0,0 +1,18 @@
+package com.github.kr328.clash.common.store
+
+interface StoreProvider {
+ fun getInt(key: String, defaultValue: Int): Int
+ fun setInt(key: String, value: Int)
+
+ fun getLong(key: String, defaultValue: Long): Long
+ fun setLong(key: String, value: Long)
+
+ fun getString(key: String, defaultValue: String): String
+ fun setString(key: String, value: String)
+
+ fun getStringSet(key: String, defaultValue: Set): Set
+ fun setStringSet(key: String, value: Set)
+
+ fun getBoolean(key: String, defaultValue: Boolean): Boolean
+ fun setBoolean(key: String, value: Boolean)
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Components.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Components.kt
new file mode 100644
index 0000000..a9d1bf4
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Components.kt
@@ -0,0 +1,12 @@
+package com.github.kr328.clash.common.util
+
+import android.content.ComponentName
+import android.content.Intent
+import com.github.kr328.clash.common.Global
+import kotlin.reflect.KClass
+
+val KClass<*>.componentName: ComponentName
+ get() = ComponentName(Global.application.packageName, this.java.name)
+
+val KClass<*>.intent: Intent
+ get() = Intent(Global.application, this.java)
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Global.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Global.kt
new file mode 100644
index 0000000..b36c828
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Global.kt
@@ -0,0 +1,5 @@
+package com.github.kr328.clash.common.util
+
+import com.github.kr328.clash.common.Global
+
+val packageName: String = Global.application.packageName
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Intent.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Intent.kt
new file mode 100644
index 0000000..6852140
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Intent.kt
@@ -0,0 +1,47 @@
+package com.github.kr328.clash.common.util
+
+import android.content.Intent
+import android.net.Uri
+import java.util.*
+
+fun Intent.grantPermissions(read: Boolean = true, write: Boolean = true): Intent {
+ var flags = 0
+
+ if (read)
+ flags = flags or Intent.FLAG_GRANT_READ_URI_PERMISSION
+
+ if (write)
+ flags = flags or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
+
+ addFlags(flags)
+
+ return this
+}
+
+var Intent.fileName: String?
+ get() {
+ return data?.takeIf { it.scheme == "file" }?.schemeSpecificPart
+ }
+ set(value) {
+ data = Uri.fromParts("file", value, null)
+ }
+
+var Intent.uuid: UUID?
+ get() {
+ return data?.takeIf { it.scheme == "uuid" }?.schemeSpecificPart?.let(UUID::fromString)
+ }
+ set(value) {
+ data = Uri.fromParts("uuid", value.toString(), null)
+ }
+
+fun Intent.setUUID(uuid: UUID): Intent {
+ this.uuid = uuid
+
+ return this
+}
+
+fun Intent.setFileName(fileName: String): Intent {
+ this.fileName = fileName
+
+ return this
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Parcelable.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Parcelable.kt
new file mode 100644
index 0000000..18152d9
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Parcelable.kt
@@ -0,0 +1,89 @@
+package com.github.kr328.clash.common.util
+
+import android.os.Binder
+import android.os.Parcel
+import android.os.Parcelable
+
+private class SliceParcelableListBpBinder(val list: List, val flags: Int) : Binder() {
+ override fun onTransact(code: Int, data: Parcel, reply: Parcel?, tFlags: Int): Boolean {
+ when (code) {
+ TRANSACTION_GET_ITEMS -> {
+ reply ?: return false
+
+ val offset = data.readInt()
+ val chunk = data.readInt()
+
+ val end = (offset + chunk).coerceAtMost(list.size)
+
+ reply.writeInt(end - offset)
+
+ for (i in offset until end) {
+ list[i].writeToParcel(reply, flags)
+ }
+
+ return true
+ }
+ }
+
+ return super.onTransact(code, data, reply, flags)
+ }
+
+ companion object {
+ const val TRANSACTION_GET_ITEMS = 10
+ }
+}
+
+fun List.writeToParcelSlice(parcel: Parcel, flags: Int) {
+ val bp = SliceParcelableListBpBinder(this, flags)
+
+ parcel.writeInt(size)
+ parcel.writeStrongBinder(bp)
+}
+
+fun Parcelable.Creator.createListFromParcelSlice(
+ parcel: Parcel,
+ flags: Int,
+ chunk: Int,
+): List {
+ val total = parcel.readInt()
+ val remote = parcel.readStrongBinder()
+ val result = ArrayList(total)
+
+ var offset = 0
+
+ while (offset < total) {
+ val data = Parcel.obtain()
+ val reply = Parcel.obtain()
+
+ try {
+ data.writeInt(offset)
+ data.writeInt(chunk)
+
+ if (!remote.transact(
+ SliceParcelableListBpBinder.TRANSACTION_GET_ITEMS,
+ data,
+ reply,
+ flags
+ )
+ ) {
+ break
+ }
+
+ val size = reply.readInt()
+
+ repeat(size) {
+ result.add(createFromParcel(reply))
+ }
+
+ offset += size
+
+ if (size == 0)
+ break
+ } finally {
+ data.recycle()
+ reply.recycle()
+ }
+ }
+
+ return result
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Patterns.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Patterns.kt
new file mode 100644
index 0000000..0520c15
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Patterns.kt
@@ -0,0 +1,3 @@
+package com.github.kr328.clash.common.util
+
+val PatternFileName = Regex("[^*&%\\n\\r/]+")
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Ticker.kt b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Ticker.kt
new file mode 100644
index 0000000..01cab40
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/java/com/github/kr328/clash/common/util/Ticker.kt
@@ -0,0 +1,25 @@
+package com.github.kr328.clash.common.util
+
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.launch
+
+fun CoroutineScope.ticker(period: Long): Channel {
+ val channel = Channel(Channel.RENDEZVOUS)
+
+ launch {
+ try {
+ while (isActive) {
+ channel.send(System.currentTimeMillis())
+
+ delay(period)
+ }
+ } catch (ignored: Exception) {
+
+ }
+ }
+
+ return channel
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/res/values-ru/strings.xml b/Android-kotlin-Code/common/src/main/res/values-ru/strings.xml
new file mode 100644
index 0000000..a5d4a39
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/res/values-ru/strings.xml
@@ -0,0 +1,5 @@
+
+
+ Получать оповещения от Clash
+ Получать оповещения от сервисов Clash
+
diff --git a/Android-kotlin-Code/common/src/main/res/values-zh-rTW/strings.xml b/Android-kotlin-Code/common/src/main/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..2b3e3b5
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/res/values-zh-rTW/strings.xml
@@ -0,0 +1,5 @@
+
+
+ 接收 Clash 廣播
+ 接收來自 Clash 內部的廣播
+
diff --git a/Android-kotlin-Code/common/src/main/res/values-zh/strings.xml b/Android-kotlin-Code/common/src/main/res/values-zh/strings.xml
new file mode 100644
index 0000000..d516d6e
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/res/values-zh/strings.xml
@@ -0,0 +1,5 @@
+
+
+ 接收 Clash 广播
+ 接收来自 Clash 内部的广播
+
\ No newline at end of file
diff --git a/Android-kotlin-Code/common/src/main/res/values/strings.xml b/Android-kotlin-Code/common/src/main/res/values/strings.xml
new file mode 100644
index 0000000..3300c1e
--- /dev/null
+++ b/Android-kotlin-Code/common/src/main/res/values/strings.xml
@@ -0,0 +1,6 @@
+
+
+ Receive Clash Broadcasts
+ Receive broadcasts of clash services
+
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/cache-v2-1139a18846e2431585f8.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/cache-v2-1139a18846e2431585f8.json
new file mode 100644
index 0000000..3a3d816
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/cache-v2-1139a18846e2431585f8.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-24"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "Debug"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "24"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-d5eba61b07fa62ce8c42.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-d5eba61b07fa62ce8c42.json
new file mode 100644
index 0000000..c8281d6
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-d5eba61b07fa62ce8c42.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-86c91a08090b1cd48c81.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-86c91a08090b1cd48c81.json
new file mode 100644
index 0000000..d1504cd
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-86c91a08090b1cd48c81.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "Debug",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-Debug-a88af6526146ee2dd726.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-06-0602.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-06-0602.json
new file mode 100644
index 0000000..94eb41a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-06-0602.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-86c91a08090b1cd48c81.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-1139a18846e2431585f8.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-d5eba61b07fa62ce8c42.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-1139a18846e2431585f8.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-d5eba61b07fa62ce8c42.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-86c91a08090b1cd48c81.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-a88af6526146ee2dd726.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-a88af6526146ee2dd726.json
new file mode 100644
index 0000000..f562aa3
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-a88af6526146ee2dd726.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.ninja_deps b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.ninja_deps
new file mode 100644
index 0000000..4f31e0a
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.ninja_log b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.ninja_log
new file mode 100644
index 0000000..2de2ce2
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/.ninja_log
@@ -0,0 +1,12 @@
+# ninja log v5
+2 93 1729063389 CMakeFiles/bridge.dir/bridge_helper.c.o f028609ec8edd0d1
+1 114 1729063389 CMakeFiles/bridge.dir/jni_helper.c.o 83bc6809a04c5f79
+0 141 1729063389 CMakeFiles/bridge.dir/main.c.o 8e73b8907825dc18
+142 187 1729063389 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so 6c7340a32c892534
+0 9 0 clean 609cc99e61b9952c
+1 370 1729233248 CMakeFiles/bridge.dir/bridge_helper.c.o f028609ec8edd0d1
+0 371 1729233248 CMakeFiles/bridge.dir/jni_helper.c.o 83bc6809a04c5f79
+0 244 1729233373 CMakeFiles/bridge.dir/main.c.o 8e73b8907825dc18
+244 586 1729233374 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so 6c7340a32c892534
+1 63 1729693135 CMakeFiles/bridge.dir/main.c.o 8e73b8907825dc18
+63 119 1729693135 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so 6c7340a32c892534
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeCache.txt
new file mode 100644
index 0000000..7cd56bb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-24
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=24
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..5fd01d9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/aarch64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/24;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..d17843d
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..7e45d48
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "aarch64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..ef0fedf
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..6b62ead
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..91d1760
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..73ee283
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..7f9c0ed
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_Debug
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_Debug
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build.json
new file mode 100644
index 0000000..b08bd09
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "arm64-v8a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..b636e24
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..dcdadf2
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
@@ -0,0 +1,2 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a'
+ninja: no work to do.
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/build.ninja b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/build.ninja
new file mode 100644
index 0000000..278bf91
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = Debug
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_Debug CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/cmake_install.cmake
new file mode 100644
index 0000000..0c13f8c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/compile_commands.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/compile_commands.json
new file mode 100644
index 0000000..17a9d5b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/compile_commands.json.bin
new file mode 100644
index 0000000..d0c2dff
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/metadata_generation_command.txt
new file mode 100644
index 0000000..93b54de
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=24
+-DANDROID_PLATFORM=android-24
+-DANDROID_ABI=arm64-v8a
+-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/arm64-v8a
+-DCMAKE_BUILD_TYPE=Debug
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/arm64-v8a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/prefab_config.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/arm64-v8a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/cache-v2-d435e7bb5cd390c36c04.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/cache-v2-d435e7bb5cd390c36c04.json
new file mode 100644
index 0000000..5d7929c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/cache-v2-d435e7bb5cd390c36c04.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "armeabi-v7a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-24"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "Debug"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "24"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-39dda1bd2ba99b4ce6f5.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-39dda1bd2ba99b4ce6f5.json
new file mode 100644
index 0000000..00cd61f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-39dda1bd2ba99b4ce6f5.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-fa3aa7b4f11183c6b92a.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-fa3aa7b4f11183c6b92a.json
new file mode 100644
index 0000000..91a1100
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-fa3aa7b4f11183c6b92a.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "Debug",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-Debug-ff1ce1d3512436a7a632.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-18T06-34-10-0850.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-18T06-34-10-0850.json
new file mode 100644
index 0000000..3610fb9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-18T06-34-10-0850.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-fa3aa7b4f11183c6b92a.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-d435e7bb5cd390c36c04.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-39dda1bd2ba99b4ce6f5.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-d435e7bb5cd390c36c04.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-39dda1bd2ba99b4ce6f5.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-fa3aa7b4f11183c6b92a.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/target-bridge-Debug-ff1ce1d3512436a7a632.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/target-bridge-Debug-ff1ce1d3512436a7a632.json
new file mode 100644
index 0000000..7e76e39
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.cmake/api/v1/reply/target-bridge-Debug-ff1ce1d3512436a7a632.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.ninja_deps b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.ninja_deps
new file mode 100644
index 0000000..ca95708
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.ninja_log b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.ninja_log
new file mode 100644
index 0000000..2cc71b0
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/.ninja_log
@@ -0,0 +1,5 @@
+# ninja log v5
+0 41 1729233251 CMakeFiles/bridge.dir/bridge_helper.c.o ca4fd7d1be3c4a0
+0 42 1729233251 CMakeFiles/bridge.dir/jni_helper.c.o bb143fd9e2bf1287
+0 67 1729233374 CMakeFiles/bridge.dir/main.c.o 28b4589b2f8a6bc9
+67 117 1729233374 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a/libbridge.so 17e1c629cae3d4fd
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeCache.txt
new file mode 100644
index 0000000..498f03b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=armeabi-v7a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-24
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=armeabi-v7a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=24
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..bba9719
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "4")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/arm;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/24;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..77a38d2
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..02ca383
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "armv7-a")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..b5c95aa
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..253d8eb
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..af89e1b
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..ee2e1cc
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..2780dc8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_Debug
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_Debug
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build.json
new file mode 100644
index 0000000..2346e0a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "armeabi-v7a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..fb648df
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build_stderr_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build_stderr_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..2b8bfdb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt
@@ -0,0 +1,2 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a'
+ninja: no work to do.
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/build.ninja b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/build.ninja
new file mode 100644
index 0000000..ea6f549
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = Debug
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_Debug CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/cmake_install.cmake
new file mode 100644
index 0000000..7d09f7c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/compile_commands.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/compile_commands.json
new file mode 100644
index 0000000..892af69
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/compile_commands.json.bin
new file mode 100644
index 0000000..183e978
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/metadata_generation_command.txt
new file mode 100644
index 0000000..3f6f0ad
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=24
+-DANDROID_PLATFORM=android-24
+-DANDROID_ABI=armeabi-v7a
+-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/1t22401e/obj/armeabi-v7a
+-DCMAKE_BUILD_TYPE=Debug
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/1t22401e/armeabi-v7a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/prefab_config.json b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/1t22401e/armeabi-v7a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/cache-v2-b93f967bce689e1da406.json b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/cache-v2-b93f967bce689e1da406.json
new file mode 100644
index 0000000..664535c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/cache-v2-b93f967bce689e1da406.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-24"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "Debug"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "24"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "meta"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-1d3ce3e2d3b1be1ab742.json b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-1d3ce3e2d3b1be1ab742.json
new file mode 100644
index 0000000..7d82622
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-1d3ce3e2d3b1be1ab742.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-d5513eac4a7ff8609dab.json b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-d5513eac4a7ff8609dab.json
new file mode 100644
index 0000000..24d7ce5
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-d5513eac4a7ff8609dab.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "Debug",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-Debug-0e6dcc99307196ab6e99.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-45-0157.json b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-45-0157.json
new file mode 100644
index 0000000..03636e8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-45-0157.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-d5513eac4a7ff8609dab.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-b93f967bce689e1da406.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-1d3ce3e2d3b1be1ab742.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-b93f967bce689e1da406.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-1d3ce3e2d3b1be1ab742.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-d5513eac4a7ff8609dab.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-0e6dcc99307196ab6e99.json b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-0e6dcc99307196ab6e99.json
new file mode 100644
index 0000000..586ac07
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-0e6dcc99307196ab6e99.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaDebug/arm64-v8a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaDebug/arm64-v8a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.ninja_deps b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.ninja_deps
new file mode 100644
index 0000000..2afb5cc
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.ninja_log b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.ninja_log
new file mode 100644
index 0000000..2e7685e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/.ninja_log
@@ -0,0 +1,2 @@
+# ninja log v5
+0 8 0 clean 609cc99e61b9952c
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeCache.txt
new file mode 100644
index 0000000..9ba53b3
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-24
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=24
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=meta
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..5fd01d9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/aarch64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/24;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..8d93b49
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..7e45d48
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "aarch64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..805cc8b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..2ca0472
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_Debug
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_Debug
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/android_gradle_build.json
new file mode 100644
index 0000000..bcb43cb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "arm64-v8a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/build.ninja b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/build.ninja
new file mode 100644
index 0000000..57c65cf
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = Debug
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_Debug CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaDebug/arm64-v8a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/cmake_install.cmake
new file mode 100644
index 0000000..d053d7a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/compile_commands.json b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/compile_commands.json
new file mode 100644
index 0000000..d1e0aea
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/compile_commands.json.bin
new file mode 100644
index 0000000..6553a1c
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/metadata_generation_command.txt
new file mode 100644
index 0000000..dff512c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=24
+-DANDROID_PLATFORM=android-24
+-DANDROID_ABI=arm64-v8a
+-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/486x145z/obj/arm64-v8a
+-DCMAKE_BUILD_TYPE=Debug
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/486x145z/arm64-v8a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=meta
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/prefab_config.json b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/486x145z/arm64-v8a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/cache-v2-d0af18d82316de2ebeeb.json b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/cache-v2-d0af18d82316de2ebeeb.json
new file mode 100644
index 0000000..b5b7793
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/cache-v2-d0af18d82316de2ebeeb.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-24"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "Debug"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "24"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-8c98156a6f4441b5a344.json b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-8c98156a6f4441b5a344.json
new file mode 100644
index 0000000..415e89d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-8c98156a6f4441b5a344.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-2b9587d692d23abaae40.json b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-2b9587d692d23abaae40.json
new file mode 100644
index 0000000..b948173
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-2b9587d692d23abaae40.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "Debug",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-Debug-334ce37cef792234b1b7.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-25-00-0433.json b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-25-00-0433.json
new file mode 100644
index 0000000..bde7176
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-25-00-0433.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-2b9587d692d23abaae40.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-d0af18d82316de2ebeeb.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-8c98156a6f4441b5a344.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-d0af18d82316de2ebeeb.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-8c98156a6f4441b5a344.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-2b9587d692d23abaae40.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-334ce37cef792234b1b7.json b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-334ce37cef792234b1b7.json
new file mode 100644
index 0000000..e8bbab6
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-334ce37cef792234b1b7.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.ninja_deps b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.ninja_deps
new file mode 100644
index 0000000..27770be
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.ninja_log b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.ninja_log
new file mode 100644
index 0000000..b8a269c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/.ninja_log
@@ -0,0 +1,5 @@
+# ninja log v5
+1 474 1729063513 CMakeFiles/bridge.dir/bridge_helper.c.o f028609ec8edd0d1
+1 475 1729063513 CMakeFiles/bridge.dir/jni_helper.c.o 83bc6809a04c5f79
+0 514 1729063513 CMakeFiles/bridge.dir/main.c.o 8e73b8907825dc18
+515 715 1729063514 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a/libbridge.so 61bfd0f8cc46c79
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeCache.txt
new file mode 100644
index 0000000..6d9c474
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-24
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=24
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..5fd01d9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/aarch64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/24;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..cbae449
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..7e45d48
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "aarch64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..c8d13ac
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..5efa04a
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..7b59f57
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..8f7f603
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..2edddef
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_Debug
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_Debug
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/android_gradle_build.json
new file mode 100644
index 0000000..b825ecf
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "arm64-v8a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/build.ninja b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/build.ninja
new file mode 100644
index 0000000..31e8be7
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = Debug
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_Debug CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/cmake_install.cmake
new file mode 100644
index 0000000..409602e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/compile_commands.json b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/compile_commands.json
new file mode 100644
index 0000000..d7386b7
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/compile_commands.json.bin
new file mode 100644
index 0000000..faf01e5
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/metadata_generation_command.txt
new file mode 100644
index 0000000..9b8c77b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/metadata_generation_command.txt
@@ -0,0 +1,21 @@
+ -H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=24
+-DANDROID_PLATFORM=android-24
+-DANDROID_ABI=arm64-v8a
+-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/51501g16/obj/arm64-v8a
+-DCMAKE_BUILD_TYPE=Debug
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/51501g16/arm64-v8a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/prefab_config.json b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/51501g16/arm64-v8a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/cache-v2-e3c86763d4613c887665.json b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/cache-v2-e3c86763d4613c887665.json
new file mode 100644
index 0000000..0eddeba
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/cache-v2-e3c86763d4613c887665.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-23"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "Debug"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "23"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-511f37d724ffe89cd852.json b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-511f37d724ffe89cd852.json
new file mode 100644
index 0000000..c7eded9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-511f37d724ffe89cd852.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-08ce17e2378b49f39281.json b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-08ce17e2378b49f39281.json
new file mode 100644
index 0000000..d42b2f4
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-08ce17e2378b49f39281.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "Debug",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-Debug-919f7a7334ee5e8f542b.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T10-51-07-0530.json b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T10-51-07-0530.json
new file mode 100644
index 0000000..fb09da4
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T10-51-07-0530.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-08ce17e2378b49f39281.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-e3c86763d4613c887665.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-511f37d724ffe89cd852.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-e3c86763d4613c887665.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-511f37d724ffe89cd852.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-08ce17e2378b49f39281.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-919f7a7334ee5e8f542b.json b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-919f7a7334ee5e8f542b.json
new file mode 100644
index 0000000..53689a8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-919f7a7334ee5e8f542b.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.ninja_deps b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.ninja_deps
new file mode 100644
index 0000000..0da3da7
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.ninja_log b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.ninja_log
new file mode 100644
index 0000000..087a9f1
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/.ninja_log
@@ -0,0 +1,5 @@
+# ninja log v5
+1 77 1728989473 CMakeFiles/bridge.dir/bridge_helper.c.o 8fcda7d12a42485e
+1 98 1728989473 CMakeFiles/bridge.dir/jni_helper.c.o 3be8132b76a90847
+1 124 1728989473 CMakeFiles/bridge.dir/main.c.o a9d888616f5188ef
+124 185 1728989473 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a/libbridge.so ca828d014058d3be
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeCache.txt
new file mode 100644
index 0000000..aa7415c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-23
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=23
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..522b741
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/aarch64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..776707e
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..7e45d48
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "aarch64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..374f26d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..a57ff76
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..031c5ca
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..a0b7d3d
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..2fc1750
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_Debug
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_Debug
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build.json
new file mode 100644
index 0000000..9b30a4b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "arm64-v8a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..885184c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..a0b65c1
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
@@ -0,0 +1,2 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a'
+ninja: no work to do.
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/build.ninja b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/build.ninja
new file mode 100644
index 0000000..1da6217
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = Debug
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_Debug CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/cmake_install.cmake
new file mode 100644
index 0000000..4a43a20
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/compile_commands.json b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/compile_commands.json
new file mode 100644
index 0000000..a067888
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/compile_commands.json.bin
new file mode 100644
index 0000000..596960e
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/metadata_generation_command.txt
new file mode 100644
index 0000000..c770391
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=23
+-DANDROID_PLATFORM=android-23
+-DANDROID_ABI=arm64-v8a
+-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6l571421/obj/arm64-v8a
+-DCMAKE_BUILD_TYPE=Debug
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6l571421/arm64-v8a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/prefab_config.json b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6l571421/arm64-v8a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/cache-v2-3f1cd56376978aa4c433.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/cache-v2-3f1cd56376978aa4c433.json
new file mode 100644
index 0000000..14df802
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/cache-v2-3f1cd56376978aa4c433.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-21"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "Debug"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "21"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-b7a72aec8f388051d59a.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-b7a72aec8f388051d59a.json
new file mode 100644
index 0000000..27fa820
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-b7a72aec8f388051d59a.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-4236291514bf3cafaeb5.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-4236291514bf3cafaeb5.json
new file mode 100644
index 0000000..fc650ac
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-4236291514bf3cafaeb5.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "Debug",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-Debug-39f0411d58b6a40cc6f5.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T07-52-14-0593.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T07-52-14-0593.json
new file mode 100644
index 0000000..f109566
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T07-52-14-0593.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-4236291514bf3cafaeb5.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-3f1cd56376978aa4c433.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-b7a72aec8f388051d59a.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-3f1cd56376978aa4c433.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-b7a72aec8f388051d59a.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-4236291514bf3cafaeb5.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-39f0411d58b6a40cc6f5.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-39f0411d58b6a40cc6f5.json
new file mode 100644
index 0000000..b4c957a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.cmake/api/v1/reply/target-bridge-Debug-39f0411d58b6a40cc6f5.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.ninja_deps b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.ninja_deps
new file mode 100644
index 0000000..ccf822e
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.ninja_log b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.ninja_log
new file mode 100644
index 0000000..097c209
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/.ninja_log
@@ -0,0 +1,12 @@
+# ninja log v5
+1 46 1728978734 CMakeFiles/bridge.dir/bridge_helper.c.o 26e169e3360402d7
+1 59 1728978734 CMakeFiles/bridge.dir/jni_helper.c.o ed488423b613c31e
+1 239 1728980351 CMakeFiles/bridge.dir/main.c.o d50d3f69f6ffa88c
+0 246 1728980850 CMakeFiles/bridge.dir/main.c.o d50d3f69f6ffa88c
+246 470 1728980850 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a/libbridge.so b68efcbcd5e0be4e
+0 6 0 clean 609cc99e61b9952c
+0 5 0 clean 609cc99e61b9952c
+2 53 1728982886 CMakeFiles/bridge.dir/bridge_helper.c.o 26e169e3360402d7
+1 65 1728982886 CMakeFiles/bridge.dir/jni_helper.c.o ed488423b613c31e
+1 78 1728982886 CMakeFiles/bridge.dir/main.c.o d50d3f69f6ffa88c
+78 133 1728982887 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a/libbridge.so b68efcbcd5e0be4e
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeCache.txt
new file mode 100644
index 0000000..6ee96fe
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-21
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=21
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..695ee86
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/aarch64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/21;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..5d36729
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..7e45d48
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "aarch64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..7ab238c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..194dea2
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..4275c82
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..9c2ae55
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..e0e361d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_Debug
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_Debug
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build.json
new file mode 100644
index 0000000..ae96953
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "arm64-v8a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..d0a82e3
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..2f61448
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
@@ -0,0 +1,2 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a'
+ninja: no work to do.
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/build.ninja b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/build.ninja
new file mode 100644
index 0000000..0264195
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = Debug
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_Debug CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/cmake_install.cmake
new file mode 100644
index 0000000..7ca4204
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/compile_commands.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/compile_commands.json
new file mode 100644
index 0000000..2027c59
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/compile_commands.json.bin
new file mode 100644
index 0000000..fbbae9e
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/metadata_generation_command.txt
new file mode 100644
index 0000000..63ed362
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=21
+-DANDROID_PLATFORM=android-21
+-DANDROID_ABI=arm64-v8a
+-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/arm64-v8a
+-DCMAKE_BUILD_TYPE=Debug
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/arm64-v8a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/prefab_config.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/arm64-v8a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/cache-v2-c8b604bd53f70bfb42b1.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/cache-v2-c8b604bd53f70bfb42b1.json
new file mode 100644
index 0000000..e1333cb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/cache-v2-c8b604bd53f70bfb42b1.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "armeabi-v7a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-21"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "Debug"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "21"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-ae6250d4a5df027d97a8.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-ae6250d4a5df027d97a8.json
new file mode 100644
index 0000000..d23ae2e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-ae6250d4a5df027d97a8.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-8f0268d433ddc110e298.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-8f0268d433ddc110e298.json
new file mode 100644
index 0000000..2de3d55
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-8f0268d433ddc110e298.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "Debug",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-Debug-9a10de1d719416cd6d54.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-15T07-52-15-0340.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-15T07-52-15-0340.json
new file mode 100644
index 0000000..7035635
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-15T07-52-15-0340.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-8f0268d433ddc110e298.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-c8b604bd53f70bfb42b1.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-ae6250d4a5df027d97a8.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-c8b604bd53f70bfb42b1.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-ae6250d4a5df027d97a8.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-8f0268d433ddc110e298.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/target-bridge-Debug-9a10de1d719416cd6d54.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/target-bridge-Debug-9a10de1d719416cd6d54.json
new file mode 100644
index 0000000..721b56d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.cmake/api/v1/reply/target-bridge-Debug-9a10de1d719416cd6d54.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.ninja_deps b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.ninja_deps
new file mode 100644
index 0000000..d73229f
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.ninja_log b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.ninja_log
new file mode 100644
index 0000000..25b94dc
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/.ninja_log
@@ -0,0 +1,10 @@
+# ninja log v5
+2 57 1728978735 CMakeFiles/bridge.dir/bridge_helper.c.o fa0a3ecd4c3fe8d4
+1 70 1728978735 CMakeFiles/bridge.dir/jni_helper.c.o c372e2762f877ed5
+1 54 1728980351 CMakeFiles/bridge.dir/main.c.o 80222e161b31d07a
+0 7 0 clean 609cc99e61b9952c
+0 6 0 clean 609cc99e61b9952c
+1 38 1728982887 CMakeFiles/bridge.dir/bridge_helper.c.o fa0a3ecd4c3fe8d4
+0 42 1728982887 CMakeFiles/bridge.dir/jni_helper.c.o c372e2762f877ed5
+0 57 1728982887 CMakeFiles/bridge.dir/main.c.o 80222e161b31d07a
+57 108 1728982887 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a/libbridge.so a9a65fd9341f1854
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeCache.txt
new file mode 100644
index 0000000..4722c8c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=armeabi-v7a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-21
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=armeabi-v7a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=21
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..37536d4
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "4")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/arm;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/21;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..07d1ffc
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..02ca383
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "armv7-a")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..0b74a72
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..94e9edd
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..9ce8173
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..07c84db
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..6db193d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_Debug
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_Debug
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build.json
new file mode 100644
index 0000000..bc560b0
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "armeabi-v7a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..a6e0126
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build_stderr_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build_stderr_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..49e487c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt
@@ -0,0 +1,2 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a'
+ninja: no work to do.
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/build.ninja b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/build.ninja
new file mode 100644
index 0000000..bf41bcb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = Debug
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_Debug CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/cmake_install.cmake
new file mode 100644
index 0000000..dafbbf6
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/compile_commands.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/compile_commands.json
new file mode 100644
index 0000000..ccee111
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/compile_commands.json.bin
new file mode 100644
index 0000000..f524788
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/metadata_generation_command.txt
new file mode 100644
index 0000000..4dbe86e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=21
+-DANDROID_PLATFORM=android-21
+-DANDROID_ABI=armeabi-v7a
+-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/armeabi-v7a
+-DCMAKE_BUILD_TYPE=Debug
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/armeabi-v7a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/prefab_config.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/armeabi-v7a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/cache-v2-79eaf91b1c89c39c9809.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/cache-v2-79eaf91b1c89c39c9809.json
new file mode 100644
index 0000000..778211f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/cache-v2-79eaf91b1c89c39c9809.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "x86"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-21"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "x86"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "Debug"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "21"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/cmakeFiles-v1-7d6ac6bb91b9ed6de7e3.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/cmakeFiles-v1-7d6ac6bb91b9ed6de7e3.json
new file mode 100644
index 0000000..b8fc0f8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/cmakeFiles-v1-7d6ac6bb91b9ed6de7e3.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/codemodel-v2-c19f92e40f226cd851ad.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/codemodel-v2-c19f92e40f226cd851ad.json
new file mode 100644
index 0000000..20086d8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/codemodel-v2-c19f92e40f226cd851ad.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "Debug",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-Debug-5f323086d209f36b542e.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/index-2024-10-15T07-51-53-0855.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/index-2024-10-15T07-51-53-0855.json
new file mode 100644
index 0000000..d11ef38
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/index-2024-10-15T07-51-53-0855.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-c19f92e40f226cd851ad.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-79eaf91b1c89c39c9809.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-7d6ac6bb91b9ed6de7e3.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-79eaf91b1c89c39c9809.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-7d6ac6bb91b9ed6de7e3.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-c19f92e40f226cd851ad.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/target-bridge-Debug-5f323086d209f36b542e.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/target-bridge-Debug-5f323086d209f36b542e.json
new file mode 100644
index 0000000..9f6288d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.cmake/api/v1/reply/target-bridge-Debug-5f323086d209f36b542e.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.ninja_deps b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.ninja_deps
new file mode 100644
index 0000000..4ca6519
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.ninja_log b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.ninja_log
new file mode 100644
index 0000000..06de1e0
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/.ninja_log
@@ -0,0 +1,10 @@
+# ninja log v5
+1 63 1728978735 CMakeFiles/bridge.dir/bridge_helper.c.o 66e2a6e4a2dbfbf4
+1 77 1728978735 CMakeFiles/bridge.dir/jni_helper.c.o b843ec1d84392070
+1 53 1728980351 CMakeFiles/bridge.dir/main.c.o baf5649a6ac49494
+0 7 0 clean 609cc99e61b9952c
+0 5 0 clean 609cc99e61b9952c
+1 43 1728982887 CMakeFiles/bridge.dir/bridge_helper.c.o 66e2a6e4a2dbfbf4
+1 50 1728982887 CMakeFiles/bridge.dir/jni_helper.c.o b843ec1d84392070
+1 59 1728982887 CMakeFiles/bridge.dir/main.c.o baf5649a6ac49494
+59 100 1728982887 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86/libbridge.so 8062096b402caa17
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeCache.txt
new file mode 100644
index 0000000..50e8183
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=x86
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-21
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=x86
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=21
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..b54272b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "4")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/i386;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/21;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..4df4e8a
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..b3e57a5
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "i686")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..c9482fe
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..629a88b
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..8f9d4c5
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..a1ff6d9
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..c024f0a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_Debug
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_Debug
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build.json
new file mode 100644
index 0000000..087463e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "x86",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build_command_bridge_x86.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build_command_bridge_x86.txt
new file mode 100644
index 0000000..0457bee
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build_command_bridge_x86.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build_stderr_bridge_x86.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build_stderr_bridge_x86.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build_stdout_bridge_x86.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build_stdout_bridge_x86.txt
new file mode 100644
index 0000000..d4caca6
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/android_gradle_build_stdout_bridge_x86.txt
@@ -0,0 +1,2 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86'
+ninja: no work to do.
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/build.ninja b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/build.ninja
new file mode 100644
index 0000000..f24e659
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = Debug
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86 && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86 && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_Debug CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/cmake_install.cmake
new file mode 100644
index 0000000..9bb6258
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/compile_commands.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/compile_commands.json
new file mode 100644
index 0000000..c57416d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/compile_commands.json.bin
new file mode 100644
index 0000000..27bded6
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/metadata_generation_command.txt
new file mode 100644
index 0000000..c4b1cf0
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=21
+-DANDROID_PLATFORM=android-21
+-DANDROID_ABI=x86
+-DCMAKE_ANDROID_ARCH_ABI=x86
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86
+-DCMAKE_BUILD_TYPE=Debug
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/prefab_config.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/cache-v2-7ecb97826fc580b8174a.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/cache-v2-7ecb97826fc580b8174a.json
new file mode 100644
index 0000000..6a372be
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/cache-v2-7ecb97826fc580b8174a.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "x86_64"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-21"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "x86_64"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "Debug"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "21"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-499dff75dcd310fcf91d.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-499dff75dcd310fcf91d.json
new file mode 100644
index 0000000..e7a7b16
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-499dff75dcd310fcf91d.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/codemodel-v2-fd01ddbc249b9add2f8c.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/codemodel-v2-fd01ddbc249b9add2f8c.json
new file mode 100644
index 0000000..fd36c0a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/codemodel-v2-fd01ddbc249b9add2f8c.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "Debug",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-Debug-36664a31729cc1b2c8ed.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/index-2024-10-15T07-52-16-0157.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/index-2024-10-15T07-52-16-0157.json
new file mode 100644
index 0000000..56d6439
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/index-2024-10-15T07-52-16-0157.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-fd01ddbc249b9add2f8c.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-7ecb97826fc580b8174a.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-499dff75dcd310fcf91d.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-7ecb97826fc580b8174a.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-499dff75dcd310fcf91d.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-fd01ddbc249b9add2f8c.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/target-bridge-Debug-36664a31729cc1b2c8ed.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/target-bridge-Debug-36664a31729cc1b2c8ed.json
new file mode 100644
index 0000000..f52b72f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.cmake/api/v1/reply/target-bridge-Debug-36664a31729cc1b2c8ed.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86_64"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86_64",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.ninja_deps b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.ninja_deps
new file mode 100644
index 0000000..1b98565
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.ninja_log b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.ninja_log
new file mode 100644
index 0000000..5aaa35b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/.ninja_log
@@ -0,0 +1,10 @@
+# ninja log v5
+1 47 1728978736 CMakeFiles/bridge.dir/bridge_helper.c.o a037added4bec17c
+0 59 1728978736 CMakeFiles/bridge.dir/jni_helper.c.o b93a1357abdc35b5
+1 50 1728980351 CMakeFiles/bridge.dir/main.c.o ecd8be96b1938888
+0 7 0 clean 609cc99e61b9952c
+0 5 0 clean 609cc99e61b9952c
+1 30 1728982887 CMakeFiles/bridge.dir/bridge_helper.c.o a037added4bec17c
+1 37 1728982887 CMakeFiles/bridge.dir/jni_helper.c.o b93a1357abdc35b5
+0 56 1728982887 CMakeFiles/bridge.dir/main.c.o ecd8be96b1938888
+56 103 1728982887 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64/libbridge.so 275c1d465223c92f
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeCache.txt
new file mode 100644
index 0000000..2b6f0db
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=x86_64
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-21
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=x86_64
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=21
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..0027182
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/x86_64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/21;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..95dc405
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..c1a4dea
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..778da56
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..9ec955e
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..d9ecc94
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..0b1a2c9
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..f75919d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_Debug
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_Debug
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build.json
new file mode 100644
index 0000000..9734ba6
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "x86_64",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build_command_bridge_x86_64.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build_command_bridge_x86_64.txt
new file mode 100644
index 0000000..e77480a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build_command_bridge_x86_64.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build_stderr_bridge_x86_64.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build_stderr_bridge_x86_64.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build_stdout_bridge_x86_64.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build_stdout_bridge_x86_64.txt
new file mode 100644
index 0000000..edc9307
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/android_gradle_build_stdout_bridge_x86_64.txt
@@ -0,0 +1,2 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64'
+ninja: no work to do.
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/build.ninja b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/build.ninja
new file mode 100644
index 0000000..b168352
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: Debug
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = Debug
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64 && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64 && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_Debug /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_Debug CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86_64
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/cmake_install.cmake
new file mode 100644
index 0000000..a9db86a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/compile_commands.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/compile_commands.json
new file mode 100644
index 0000000..3a3d0ad
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaDebug/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O0 -fno-limit-debug-info -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/compile_commands.json.bin
new file mode 100644
index 0000000..4bd663d
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/metadata_generation_command.txt
new file mode 100644
index 0000000..0504498
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=21
+-DANDROID_PLATFORM=android-21
+-DANDROID_ABI=x86_64
+-DCMAKE_ANDROID_ARCH_ABI=x86_64
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/Debug/6w6f414t/obj/x86_64
+-DCMAKE_BUILD_TYPE=Debug
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/Debug/6w6f414t/x86_64
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/prefab_config.json b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/Debug/6w6f414t/x86_64/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/cache-v2-e4b1cae473a0e3f6e8b8.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/cache-v2-e4b1cae473a0e3f6e8b8.json
new file mode 100644
index 0000000..c49dba2
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/cache-v2-e4b1cae473a0e3f6e8b8.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-24"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "RelWithDebInfo"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "24"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-51d5da4c7947d31fcabd.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-51d5da4c7947d31fcabd.json
new file mode 100644
index 0000000..2d7263d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-51d5da4c7947d31fcabd.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-b71a3d0f4f3fd1ffee6d.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-b71a3d0f4f3fd1ffee6d.json
new file mode 100644
index 0000000..4b131ee
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-b71a3d0f4f3fd1ffee6d.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "RelWithDebInfo",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-RelWithDebInfo-95dacef32944d55b2875.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-45-0800.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-45-0800.json
new file mode 100644
index 0000000..a5b6d37
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-45-0800.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-b71a3d0f4f3fd1ffee6d.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-e4b1cae473a0e3f6e8b8.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-51d5da4c7947d31fcabd.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-e4b1cae473a0e3f6e8b8.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-51d5da4c7947d31fcabd.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-b71a3d0f4f3fd1ffee6d.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-95dacef32944d55b2875.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-95dacef32944d55b2875.json
new file mode 100644
index 0000000..b2bc6e2
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-95dacef32944d55b2875.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.ninja_deps b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.ninja_deps
new file mode 100644
index 0000000..852605c
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.ninja_log b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.ninja_log
new file mode 100644
index 0000000..f4d7ae3
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/.ninja_log
@@ -0,0 +1,6 @@
+# ninja log v5
+0 8 0 clean 609cc99e61b9952c
+2 37 1729692968 CMakeFiles/bridge.dir/bridge_helper.c.o 43a1cdb48e0b0e45
+2 48 1729692968 CMakeFiles/bridge.dir/jni_helper.c.o 17c8cf23b639abe9
+0 73 1729692968 CMakeFiles/bridge.dir/main.c.o 1a2544b344ddfe2f
+73 118 1729692968 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a/libbridge.so cdfc45ea9d8aab9f
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeCache.txt
new file mode 100644
index 0000000..e922668
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-24
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=24
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..5fd01d9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/aarch64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/24;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..0fe6973
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..7e45d48
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "aarch64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..d92e115
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..f88aecc
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..ca18066
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..d016c87
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..97bc195
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_RelWithDebInfo
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build.json
new file mode 100644
index 0000000..b864169
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "arm64-v8a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..6cebb1f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..f2b3f0f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
@@ -0,0 +1,2 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a'
+ninja: no work to do.
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/build.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/build.ninja
new file mode 100644
index 0000000..aaa8962
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = RelWithDebInfo
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/cmake_install.cmake
new file mode 100644
index 0000000..388cc54
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/compile_commands.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/compile_commands.json
new file mode 100644
index 0000000..a474afa
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/compile_commands.json.bin
new file mode 100644
index 0000000..5462127
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/metadata_generation_command.txt
new file mode 100644
index 0000000..f22cbe8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=24
+-DANDROID_PLATFORM=android-24
+-DANDROID_ABI=arm64-v8a
+-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/arm64-v8a
+-DCMAKE_BUILD_TYPE=RelWithDebInfo
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/prefab_config.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/arm64-v8a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/cache-v2-36cbd2124d7bed13dbf5.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/cache-v2-36cbd2124d7bed13dbf5.json
new file mode 100644
index 0000000..f9693ce
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/cache-v2-36cbd2124d7bed13dbf5.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "armeabi-v7a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-24"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "RelWithDebInfo"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "24"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-b47dfc30732bc932ee49.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-b47dfc30732bc932ee49.json
new file mode 100644
index 0000000..63c1018
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-b47dfc30732bc932ee49.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-92c59e6b912ae3f8e352.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-92c59e6b912ae3f8e352.json
new file mode 100644
index 0000000..14cb546
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-92c59e6b912ae3f8e352.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "RelWithDebInfo",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-RelWithDebInfo-6a4094fccb6a4dea3c3a.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-23T14-16-08-0759.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-23T14-16-08-0759.json
new file mode 100644
index 0000000..e6c9ce3
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-23T14-16-08-0759.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-92c59e6b912ae3f8e352.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-36cbd2124d7bed13dbf5.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-b47dfc30732bc932ee49.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-36cbd2124d7bed13dbf5.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-b47dfc30732bc932ee49.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-92c59e6b912ae3f8e352.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-6a4094fccb6a4dea3c3a.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-6a4094fccb6a4dea3c3a.json
new file mode 100644
index 0000000..f73562f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-6a4094fccb6a4dea3c3a.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.ninja_deps b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.ninja_deps
new file mode 100644
index 0000000..c8c2814
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.ninja_log b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.ninja_log
new file mode 100644
index 0000000..0df610a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/.ninja_log
@@ -0,0 +1,5 @@
+# ninja log v5
+0 32 1729692968 CMakeFiles/bridge.dir/bridge_helper.c.o aaa6857e8d1fd719
+0 38 1729692968 CMakeFiles/bridge.dir/jni_helper.c.o e7fb9d8f247d4976
+0 67 1729692968 CMakeFiles/bridge.dir/main.c.o f4a1d4ea50009ca7
+67 110 1729692968 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a/libbridge.so 69aabf2729928884
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeCache.txt
new file mode 100644
index 0000000..e8e7ba1
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=armeabi-v7a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-24
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=armeabi-v7a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=24
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..bba9719
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "4")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/arm;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/24;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..ff65862
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..02ca383
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "armv7-a")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..b4aba8e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..020b1ce
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..d9b5b65
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..cbdc9e0
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..397c10f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_RelWithDebInfo
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build.json
new file mode 100644
index 0000000..b8eed19
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "armeabi-v7a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..0a515d3
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build_stderr_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build_stderr_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..67cb7eb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt
@@ -0,0 +1,2 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a'
+ninja: no work to do.
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/build.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/build.ninja
new file mode 100644
index 0000000..2d93864
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = RelWithDebInfo
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/cmake_install.cmake
new file mode 100644
index 0000000..6987b5f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/compile_commands.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/compile_commands.json
new file mode 100644
index 0000000..afafb68
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/compile_commands.json.bin
new file mode 100644
index 0000000..92f3b2c
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/metadata_generation_command.txt
new file mode 100644
index 0000000..64523bf
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=24
+-DANDROID_PLATFORM=android-24
+-DANDROID_ABI=armeabi-v7a
+-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3n172x2f/obj/armeabi-v7a
+-DCMAKE_BUILD_TYPE=RelWithDebInfo
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/prefab_config.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3n172x2f/armeabi-v7a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/cache-v2-d6931b0a838f529eabc7.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/cache-v2-d6931b0a838f529eabc7.json
new file mode 100644
index 0000000..90dc59b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/cache-v2-d6931b0a838f529eabc7.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-23"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "RelWithDebInfo"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "23"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-2f895d6278120a203dc3.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-2f895d6278120a203dc3.json
new file mode 100644
index 0000000..aef769f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-2f895d6278120a203dc3.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-1de8457625a97a3d9337.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-1de8457625a97a3d9337.json
new file mode 100644
index 0000000..4b6f46d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-1de8457625a97a3d9337.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "RelWithDebInfo",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-RelWithDebInfo-b1bfe66a6c282047a279.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T10-54-54-0426.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T10-54-54-0426.json
new file mode 100644
index 0000000..1206536
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T10-54-54-0426.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-1de8457625a97a3d9337.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-d6931b0a838f529eabc7.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-2f895d6278120a203dc3.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-d6931b0a838f529eabc7.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-2f895d6278120a203dc3.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-1de8457625a97a3d9337.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-b1bfe66a6c282047a279.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-b1bfe66a6c282047a279.json
new file mode 100644
index 0000000..ed7a74d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-b1bfe66a6c282047a279.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.ninja_deps b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.ninja_deps
new file mode 100644
index 0000000..6f35508
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.ninja_log b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.ninja_log
new file mode 100644
index 0000000..9c411a5
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/.ninja_log
@@ -0,0 +1,5 @@
+# ninja log v5
+1 71 1728989694 CMakeFiles/bridge.dir/bridge_helper.c.o 5319268b5e1e8683
+0 72 1728989694 CMakeFiles/bridge.dir/jni_helper.c.o d376de558fd68e6c
+0 95 1728989694 CMakeFiles/bridge.dir/main.c.o eab5ad521cb75628
+95 146 1728989694 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a/libbridge.so 455be32978872013
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeCache.txt
new file mode 100644
index 0000000..e80abf1
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-23
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=23
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..522b741
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/aarch64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/23;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..9a6c58c
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..7e45d48
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "aarch64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..21b87aa
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..10ddc5c
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..6b30270
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..f2e749e
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..dbb4e1f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_RelWithDebInfo
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build.json
new file mode 100644
index 0000000..5bf737a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "arm64-v8a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..c513a1e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..885f7b9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
@@ -0,0 +1,5 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a'
+[1/4] Building C object CMakeFiles/bridge.dir/bridge_helper.c.o
+[2/4] Building C object CMakeFiles/bridge.dir/jni_helper.c.o
+[3/4] Building C object CMakeFiles/bridge.dir/main.c.o
+[4/4] Linking C shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a/libbridge.so
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/build.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/build.ninja
new file mode 100644
index 0000000..27a2e61
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = RelWithDebInfo
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/cmake_install.cmake
new file mode 100644
index 0000000..465c5de
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/compile_commands.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/compile_commands.json
new file mode 100644
index 0000000..0089fbb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/compile_commands.json.bin
new file mode 100644
index 0000000..900b0a1
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/metadata_generation_command.txt
new file mode 100644
index 0000000..a0a6606
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=23
+-DANDROID_PLATFORM=android-23
+-DANDROID_ABI=arm64-v8a
+-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/arm64-v8a
+-DCMAKE_BUILD_TYPE=RelWithDebInfo
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/prefab_config.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/arm64-v8a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/cache-v2-f94e2eb16c2d2f0da5bf.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/cache-v2-f94e2eb16c2d2f0da5bf.json
new file mode 100644
index 0000000..f58a964
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/cache-v2-f94e2eb16c2d2f0da5bf.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "armeabi-v7a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-23"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "RelWithDebInfo"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "23"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "alpha"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-889790d0658e6dd0de41.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-889790d0658e6dd0de41.json
new file mode 100644
index 0000000..08541fc
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-889790d0658e6dd0de41.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-0a50bf82134dbcbf7f3e.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-0a50bf82134dbcbf7f3e.json
new file mode 100644
index 0000000..208f9ac
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-0a50bf82134dbcbf7f3e.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "RelWithDebInfo",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-RelWithDebInfo-8280d02df7a9984183e0.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-15T10-54-54-0948.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-15T10-54-54-0948.json
new file mode 100644
index 0000000..ba8cbd4
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-15T10-54-54-0948.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-0a50bf82134dbcbf7f3e.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-f94e2eb16c2d2f0da5bf.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-889790d0658e6dd0de41.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-f94e2eb16c2d2f0da5bf.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-889790d0658e6dd0de41.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-0a50bf82134dbcbf7f3e.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-8280d02df7a9984183e0.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-8280d02df7a9984183e0.json
new file mode 100644
index 0000000..3f052e8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-8280d02df7a9984183e0.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.ninja_deps b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.ninja_deps
new file mode 100644
index 0000000..1255682
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.ninja_log b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.ninja_log
new file mode 100644
index 0000000..799aee6
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/.ninja_log
@@ -0,0 +1,5 @@
+# ninja log v5
+1 53 1728989695 CMakeFiles/bridge.dir/bridge_helper.c.o 65817b91f547f410
+1 66 1728989695 CMakeFiles/bridge.dir/jni_helper.c.o 2507970b9008bdc3
+0 105 1728989695 CMakeFiles/bridge.dir/main.c.o 71422f04ccc8b8e4
+105 147 1728989695 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a/libbridge.so bfdc77b96091e189
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeCache.txt
new file mode 100644
index 0000000..827c621
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=armeabi-v7a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-23
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=armeabi-v7a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=23
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=alpha
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..9fd865b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "4")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/arm;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/23;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..ab268f0
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..02ca383
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "armv7-a")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..a30cec9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..ecef5d8
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..0cb9b44
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..893ed4c
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..ec3f89e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_RelWithDebInfo
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build.json
new file mode 100644
index 0000000..95bfb48
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "armeabi-v7a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..6ae3798
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build_stderr_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build_stderr_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..f126427
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt
@@ -0,0 +1,5 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a'
+[1/4] Building C object CMakeFiles/bridge.dir/bridge_helper.c.o
+[2/4] Building C object CMakeFiles/bridge.dir/jni_helper.c.o
+[3/4] Building C object CMakeFiles/bridge.dir/main.c.o
+[4/4] Linking C shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a/libbridge.so
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/build.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/build.ninja
new file mode 100644
index 0000000..7a840ae
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = RelWithDebInfo
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/cmake_install.cmake
new file mode 100644
index 0000000..48b4a08
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/compile_commands.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/compile_commands.json
new file mode 100644
index 0000000..7ad8f91
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi23 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/alphaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/compile_commands.json.bin
new file mode 100644
index 0000000..0a37975
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/metadata_generation_command.txt
new file mode 100644
index 0000000..52cef0a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=23
+-DANDROID_PLATFORM=android-23
+-DANDROID_ABI=armeabi-v7a
+-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/3q493u12/obj/armeabi-v7a
+-DCMAKE_BUILD_TYPE=RelWithDebInfo
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=alpha
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/prefab_config.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/3q493u12/armeabi-v7a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/cache-v2-9365fa16c22c64fa65fb.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/cache-v2-9365fa16c22c64fa65fb.json
new file mode 100644
index 0000000..baaa8b0
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/cache-v2-9365fa16c22c64fa65fb.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-24"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "RelWithDebInfo"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "24"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "meta"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-6b1298fb05625a9d5e85.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-6b1298fb05625a9d5e85.json
new file mode 100644
index 0000000..60b2ef7
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-6b1298fb05625a9d5e85.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-9834cc2e55ef8618b724.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-9834cc2e55ef8618b724.json
new file mode 100644
index 0000000..37629fd
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-9834cc2e55ef8618b724.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "RelWithDebInfo",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-RelWithDebInfo-66971db66d0b655dc253.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-45-0456.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-45-0456.json
new file mode 100644
index 0000000..de9898d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/index-2024-10-16T07-23-45-0456.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-9834cc2e55ef8618b724.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-9365fa16c22c64fa65fb.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-6b1298fb05625a9d5e85.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-9365fa16c22c64fa65fb.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-6b1298fb05625a9d5e85.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-9834cc2e55ef8618b724.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-66971db66d0b655dc253.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-66971db66d0b655dc253.json
new file mode 100644
index 0000000..20cedd7
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-66971db66d0b655dc253.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.ninja_deps b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.ninja_deps
new file mode 100644
index 0000000..2afb5cc
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.ninja_log b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.ninja_log
new file mode 100644
index 0000000..2bff171
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/.ninja_log
@@ -0,0 +1,2 @@
+# ninja log v5
+0 5 0 clean 609cc99e61b9952c
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeCache.txt
new file mode 100644
index 0000000..95aa131
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-24
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=24
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=meta
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..5fd01d9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/aarch64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/24;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..6633d35
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..7e45d48
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "aarch64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..c6263fc
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..cfcdf86
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_RelWithDebInfo
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/android_gradle_build.json
new file mode 100644
index 0000000..ee78a5c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "arm64-v8a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/build.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/build.ninja
new file mode 100644
index 0000000..45ccaf1
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = RelWithDebInfo
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/cmake_install.cmake
new file mode 100644
index 0000000..a6a0ad9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/compile_commands.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/compile_commands.json
new file mode 100644
index 0000000..c4229ce
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android24 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/compile_commands.json.bin
new file mode 100644
index 0000000..365c9cd
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/metadata_generation_command.txt
new file mode 100644
index 0000000..938becf
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=24
+-DANDROID_PLATFORM=android-24
+-DANDROID_ABI=arm64-v8a
+-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/674ms4z2/obj/arm64-v8a
+-DCMAKE_BUILD_TYPE=RelWithDebInfo
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=meta
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/prefab_config.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/674ms4z2/arm64-v8a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/cache-v2-6701ceeaaf34213ebcf5.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/cache-v2-6701ceeaaf34213ebcf5.json
new file mode 100644
index 0000000..11fd879
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/cache-v2-6701ceeaaf34213ebcf5.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-21"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "RelWithDebInfo"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "21"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "meta"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-b5bc4b4e26cb4e8ecbe9.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-b5bc4b4e26cb4e8ecbe9.json
new file mode 100644
index 0000000..d8b15c8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-b5bc4b4e26cb4e8ecbe9.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-f766003d9b1f8111dc2e.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-f766003d9b1f8111dc2e.json
new file mode 100644
index 0000000..536e50c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-f766003d9b1f8111dc2e.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "RelWithDebInfo",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-RelWithDebInfo-b64c8e409f93d59800cf.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T10-32-47-0110.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T10-32-47-0110.json
new file mode 100644
index 0000000..574eb04
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/index-2024-10-15T10-32-47-0110.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-f766003d9b1f8111dc2e.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-6701ceeaaf34213ebcf5.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-b5bc4b4e26cb4e8ecbe9.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-6701ceeaaf34213ebcf5.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-b5bc4b4e26cb4e8ecbe9.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-f766003d9b1f8111dc2e.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-b64c8e409f93d59800cf.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-b64c8e409f93d59800cf.json
new file mode 100644
index 0000000..277894d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-b64c8e409f93d59800cf.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.ninja_deps b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.ninja_deps
new file mode 100644
index 0000000..211c74d
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.ninja_log b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.ninja_log
new file mode 100644
index 0000000..7cfea42
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/.ninja_log
@@ -0,0 +1,5 @@
+# ninja log v5
+0 69 1728988367 CMakeFiles/bridge.dir/bridge_helper.c.o 19c058ff40cb9912
+0 73 1728988367 CMakeFiles/bridge.dir/jni_helper.c.o 21443fb2042e7995
+0 100 1728988367 CMakeFiles/bridge.dir/main.c.o d246f9fa9de6ed95
+100 178 1728988367 /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a/libbridge.so efe53e4e3a733186
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeCache.txt
new file mode 100644
index 0000000..850cbdb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-21
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=arm64-v8a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=21
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=meta
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..695ee86
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/aarch64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/21;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..52f69fd
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..7e45d48
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "aarch64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..8e850b9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..3727255
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..326aa68
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/bridge.dir/main.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/bridge.dir/main.c.o
new file mode 100644
index 0000000..64fef1d
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/bridge.dir/main.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..2efc71e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_RelWithDebInfo
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build.json
new file mode 100644
index 0000000..390ad17
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "arm64-v8a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..397452e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build_command_bridge_arm64-v8a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build_stderr_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
new file mode 100644
index 0000000..a0936be
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/android_gradle_build_stdout_bridge_arm64-v8a.txt
@@ -0,0 +1,5 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a'
+[1/4] Building C object CMakeFiles/bridge.dir/bridge_helper.c.o
+[2/4] Building C object CMakeFiles/bridge.dir/jni_helper.c.o
+[3/4] Building C object CMakeFiles/bridge.dir/main.c.o
+[4/4] Linking C shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a/libbridge.so
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/build.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/build.ninja
new file mode 100644
index 0000000..3db94e2
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = RelWithDebInfo
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/cmake_install.cmake
new file mode 100644
index 0000000..be5a6b8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/compile_commands.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/compile_commands.json
new file mode 100644
index 0000000..27db559
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=aarch64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/arm64-v8a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/compile_commands.json.bin
new file mode 100644
index 0000000..410732b
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/metadata_generation_command.txt
new file mode 100644
index 0000000..b227f4a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=21
+-DANDROID_PLATFORM=android-21
+-DANDROID_ABI=arm64-v8a
+-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/arm64-v8a
+-DCMAKE_BUILD_TYPE=RelWithDebInfo
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=meta
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/prefab_config.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/arm64-v8a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/cache-v2-d9b7064a894e2779e718.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/cache-v2-d9b7064a894e2779e718.json
new file mode 100644
index 0000000..3bb3156
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/cache-v2-d9b7064a894e2779e718.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "armeabi-v7a"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-21"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "RelWithDebInfo"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "21"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "meta"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-67fc3a6dad05eaa47c7a.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-67fc3a6dad05eaa47c7a.json
new file mode 100644
index 0000000..c0bcfd9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-67fc3a6dad05eaa47c7a.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-ad5cd48362204e1a4f70.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-ad5cd48362204e1a4f70.json
new file mode 100644
index 0000000..f1c3326
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-ad5cd48362204e1a4f70.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "RelWithDebInfo",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-RelWithDebInfo-77a10fc3d9064e563a26.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-15T10-32-47-0720.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-15T10-32-47-0720.json
new file mode 100644
index 0000000..348bb09
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/index-2024-10-15T10-32-47-0720.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-ad5cd48362204e1a4f70.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-d9b7064a894e2779e718.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-67fc3a6dad05eaa47c7a.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-d9b7064a894e2779e718.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-67fc3a6dad05eaa47c7a.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-ad5cd48362204e1a4f70.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-77a10fc3d9064e563a26.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-77a10fc3d9064e563a26.json
new file mode 100644
index 0000000..f9d5d12
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-77a10fc3d9064e563a26.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/armeabi-v7a"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/armeabi-v7a",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.ninja_deps b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.ninja_deps
new file mode 100644
index 0000000..c9c36ee
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.ninja_log b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.ninja_log
new file mode 100644
index 0000000..caf7430
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/.ninja_log
@@ -0,0 +1,3 @@
+# ninja log v5
+0 38 1728988367 CMakeFiles/bridge.dir/bridge_helper.c.o 15d6c3324e877a47
+0 47 1728988367 CMakeFiles/bridge.dir/jni_helper.c.o a11a6651c1e2617f
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeCache.txt
new file mode 100644
index 0000000..b78809d
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=armeabi-v7a
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-21
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=armeabi-v7a
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=21
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=meta
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..37536d4
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "4")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/arm-linux-androideabi;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/arm;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/21;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..931eccd
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..02ca383
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "armv7-a")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..318da49
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..b3dcbe5
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..bbd308b
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..54ea75e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_RelWithDebInfo
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build.json
new file mode 100644
index 0000000..03b6a0e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "armeabi-v7a",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..5cac961
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build_command_bridge_armeabi-v7a.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build_stderr_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build_stderr_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt
new file mode 100644
index 0000000..ed77a57
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/android_gradle_build_stdout_bridge_armeabi-v7a.txt
@@ -0,0 +1,11 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a'
+[1/4] Building C object CMakeFiles/bridge.dir/main.c.o
+FAILED: CMakeFiles/bridge.dir/main.c.o
+/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -MD -MT CMakeFiles/bridge.dir/main.c.o -MF CMakeFiles/bridge.dir/main.c.o.d -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c:7:10: fatal error: 'libclash.h' file not found
+#include "libclash.h"
+ ^~~~~~~~~~~~
+1 error generated.
+[2/4] Building C object CMakeFiles/bridge.dir/bridge_helper.c.o
+[3/4] Building C object CMakeFiles/bridge.dir/jni_helper.c.o
+ninja: build stopped: subcommand failed.
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/build.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/build.ninja
new file mode 100644
index 0000000..e25ae6b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = RelWithDebInfo
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/armeabi-v7a
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/cmake_install.cmake
new file mode 100644
index 0000000..8ebc2e8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/compile_commands.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/compile_commands.json
new file mode 100644
index 0000000..7e16e81
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=armv7-none-linux-androideabi21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/armeabi-v7a -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/compile_commands.json.bin
new file mode 100644
index 0000000..7100e7a
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/metadata_generation_command.txt
new file mode 100644
index 0000000..da658a5
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=21
+-DANDROID_PLATFORM=android-21
+-DANDROID_ABI=armeabi-v7a
+-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/armeabi-v7a
+-DCMAKE_BUILD_TYPE=RelWithDebInfo
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=meta
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/prefab_config.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/armeabi-v7a/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/cache-v2-b854e7fdfb676b3beaa0.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/cache-v2-b854e7fdfb676b3beaa0.json
new file mode 100644
index 0000000..d15b76a
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/cache-v2-b854e7fdfb676b3beaa0.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "x86"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-21"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "x86"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "RelWithDebInfo"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "21"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "meta"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/cmakeFiles-v1-9451ee9bc83cae6b0274.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/cmakeFiles-v1-9451ee9bc83cae6b0274.json
new file mode 100644
index 0000000..54da23b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/cmakeFiles-v1-9451ee9bc83cae6b0274.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/codemodel-v2-0e11e35ec508f2f1ebd4.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/codemodel-v2-0e11e35ec508f2f1ebd4.json
new file mode 100644
index 0000000..0e68bee
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/codemodel-v2-0e11e35ec508f2f1ebd4.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "RelWithDebInfo",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-RelWithDebInfo-a53df749d3cb8ff79152.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/index-2024-10-15T10-32-48-0155.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/index-2024-10-15T10-32-48-0155.json
new file mode 100644
index 0000000..ecd0afb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/index-2024-10-15T10-32-48-0155.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-0e11e35ec508f2f1ebd4.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-b854e7fdfb676b3beaa0.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-9451ee9bc83cae6b0274.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-b854e7fdfb676b3beaa0.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-9451ee9bc83cae6b0274.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-0e11e35ec508f2f1ebd4.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-a53df749d3cb8ff79152.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-a53df749d3cb8ff79152.json
new file mode 100644
index 0000000..c1c72c7
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-a53df749d3cb8ff79152.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.ninja_deps b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.ninja_deps
new file mode 100644
index 0000000..2242583
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.ninja_log b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.ninja_log
new file mode 100644
index 0000000..e4c6ccf
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/.ninja_log
@@ -0,0 +1,3 @@
+# ninja log v5
+0 45 1728988368 CMakeFiles/bridge.dir/bridge_helper.c.o eaa87efa349f430c
+0 53 1728988368 CMakeFiles/bridge.dir/jni_helper.c.o 3d0ee4f00c453687
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeCache.txt
new file mode 100644
index 0000000..ea8b59b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=x86
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-21
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=x86
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=21
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=meta
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..b54272b
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "4")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/i686-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/i386;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/21;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..439d314
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..b3e57a5
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "i686")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..59d81f3
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..022c003
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..c5c7ada
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..79ccbdb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_RelWithDebInfo
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build.json
new file mode 100644
index 0000000..5cd89a4
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "x86",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build_command_bridge_x86.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build_command_bridge_x86.txt
new file mode 100644
index 0000000..806ef23
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build_command_bridge_x86.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build_stderr_bridge_x86.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build_stderr_bridge_x86.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build_stdout_bridge_x86.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build_stdout_bridge_x86.txt
new file mode 100644
index 0000000..047b99c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/android_gradle_build_stdout_bridge_x86.txt
@@ -0,0 +1,11 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86'
+[1/4] Building C object CMakeFiles/bridge.dir/main.c.o
+FAILED: CMakeFiles/bridge.dir/main.c.o
+/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -MD -MT CMakeFiles/bridge.dir/main.c.o -MF CMakeFiles/bridge.dir/main.c.o.d -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c:7:10: fatal error: 'libclash.h' file not found
+#include "libclash.h"
+ ^~~~~~~~~~~~
+1 error generated.
+[2/4] Building C object CMakeFiles/bridge.dir/bridge_helper.c.o
+[3/4] Building C object CMakeFiles/bridge.dir/jni_helper.c.o
+ninja: build stopped: subcommand failed.
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/build.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/build.ninja
new file mode 100644
index 0000000..fc2a387
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = RelWithDebInfo
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86 && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86 && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/cmake_install.cmake
new file mode 100644
index 0000000..91a96bb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/compile_commands.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/compile_commands.json
new file mode 100644
index 0000000..ec66084
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=i686-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/compile_commands.json.bin
new file mode 100644
index 0000000..6f2449c
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/metadata_generation_command.txt
new file mode 100644
index 0000000..c7522bb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=21
+-DANDROID_PLATFORM=android-21
+-DANDROID_ABI=x86
+-DCMAKE_ANDROID_ARCH_ABI=x86
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86
+-DCMAKE_BUILD_TYPE=RelWithDebInfo
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=meta
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/prefab_config.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/query/client-agp/cache-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/query/client-agp/cache-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/cache-v2-72254181c8c7047daf5d.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/cache-v2-72254181c8c7047daf5d.json
new file mode 100644
index 0000000..425c5fb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/cache-v2-72254181c8c7047daf5d.json
@@ -0,0 +1,1247 @@
+{
+ "entries" :
+ [
+ {
+ "name" : "ANDROID_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "x86_64"
+ },
+ {
+ "name" : "ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "ANDROID_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "android-21"
+ },
+ {
+ "name" : "CMAKE_ADDR2LINE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line"
+ },
+ {
+ "name" : "CMAKE_ANDROID_ARCH_ABI",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "x86_64"
+ },
+ {
+ "name" : "CMAKE_ANDROID_NDK",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858"
+ },
+ {
+ "name" : "CMAKE_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_ASM_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_BUILD_TYPE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "RelWithDebInfo"
+ },
+ {
+ "name" : "CMAKE_CACHEFILE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "This is the directory where this CMakeCache.txt was created"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64"
+ },
+ {
+ "name" : "CMAKE_CACHE_MAJOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Major version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "3"
+ },
+ {
+ "name" : "CMAKE_CACHE_MINOR_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Minor version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "18"
+ },
+ {
+ "name" : "CMAKE_CACHE_PATCH_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Patch version of cmake used to create the current loaded cache"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake"
+ },
+ {
+ "name" : "CMAKE_CPACK_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to cpack program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack"
+ },
+ {
+ "name" : "CMAKE_CTEST_COMMAND",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to ctest program executable."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest"
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_CXX_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "(This variable does not exist and should not be used)"
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_AR",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "LLVM archiver"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_AR-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_COMPILER_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generate index for LLVM archive"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_C_COMPILER_RANLIB-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during debug builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-Os -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the compiler during release builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the C compiler during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-O2 -g -DNDEBUG"
+ },
+ {
+ "name" : "CMAKE_C_STANDARD_LIBRARIES",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Libraries linked by default with all C applications."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "-latomic -lm"
+ },
+ {
+ "name" : "CMAKE_DLLTOOL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "CMAKE_DLLTOOL-NOTFOUND"
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_EXPORT_COMPILE_COMMANDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "ON"
+ },
+ {
+ "name" : "CMAKE_EXTRA_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of external makefile project generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "Ninja"
+ },
+ {
+ "name" : "CMAKE_GENERATOR_INSTANCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Generator instance identifier."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_PLATFORM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator platform."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_GENERATOR_TOOLSET",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Name of generator toolset."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_HOME_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Source directory with the top level CMakeLists.txt file for this project"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ {
+ "name" : "CMAKE_INSTALL_PREFIX",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install path prefix, prepended onto install directories."
+ }
+ ],
+ "type" : "PATH",
+ "value" : "/usr/local"
+ },
+ {
+ "name" : "CMAKE_INSTALL_SO_NO_EXE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Install .so files without execute permission."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "0"
+ },
+ {
+ "name" : "CMAKE_LIBRARY_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64"
+ },
+ {
+ "name" : "CMAKE_LINKER",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld"
+ },
+ {
+ "name" : "CMAKE_MAKE_PROGRAM",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja"
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_NM",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm"
+ },
+ {
+ "name" : "CMAKE_NUMBER_OF_MAKEFILES",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "number of local generators"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_OBJCOPY",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy"
+ },
+ {
+ "name" : "CMAKE_OBJDUMP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump"
+ },
+ {
+ "name" : "CMAKE_PLATFORM_INFO_INITIALIZED",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Platform information initialized"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "1"
+ },
+ {
+ "name" : "CMAKE_PROJECT_DESCRIPTION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_HOMEPAGE_URL",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_PROJECT_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "clash-bridge"
+ },
+ {
+ "name" : "CMAKE_RANLIB",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Ranlib"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib"
+ },
+ {
+ "name" : "CMAKE_READELF",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to a program."
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf"
+ },
+ {
+ "name" : "CMAKE_ROOT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Path to CMake installation."
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ {
+ "name" : "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64"
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of dll's."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_SKIP_INSTALL_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_SKIP_RPATH",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If set, runtime paths are not added when using shared libraries."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "NO"
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during all build types."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds."
+ }
+ ],
+ "type" : "STRING",
+ "value" : ""
+ },
+ {
+ "name" : "CMAKE_STRIP",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "Strip"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "Android"
+ },
+ {
+ "name" : "CMAKE_SYSTEM_VERSION",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "UNINITIALIZED",
+ "value" : "21"
+ },
+ {
+ "name" : "CMAKE_TOOLCHAIN_FILE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "The CMake toolchain file"
+ }
+ ],
+ "type" : "FILEPATH",
+ "value" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "name" : "CMAKE_UNAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "uname command"
+ }
+ ],
+ "type" : "INTERNAL",
+ "value" : "/usr/bin/uname"
+ },
+ {
+ "name" : "CMAKE_VERBOSE_MAKEFILE",
+ "properties" :
+ [
+ {
+ "name" : "ADVANCED",
+ "value" : "1"
+ },
+ {
+ "name" : "HELPSTRING",
+ "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo."
+ }
+ ],
+ "type" : "BOOL",
+ "value" : "FALSE"
+ },
+ {
+ "name" : "FLAVOR_NAME",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "meta"
+ },
+ {
+ "name" : "GO_OUTPUT",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang"
+ },
+ {
+ "name" : "GO_SOURCE",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "No help, variable specified on the command line."
+ }
+ ],
+ "type" : "STRING",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ },
+ {
+ "name" : "bridge_LIB_DEPENDS",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Dependencies for the target"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "general;log;general;clash;"
+ },
+ {
+ "name" : "clash-bridge_BINARY_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64"
+ },
+ {
+ "name" : "clash-bridge_SOURCE_DIR",
+ "properties" :
+ [
+ {
+ "name" : "HELPSTRING",
+ "value" : "Value Computed by CMake"
+ }
+ ],
+ "type" : "STATIC",
+ "value" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ }
+ ],
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-5693e50114dfc685ce4a.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-5693e50114dfc685ce4a.json
new file mode 100644
index 0000000..dfcef4c
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-5693e50114dfc685ce4a.json
@@ -0,0 +1,254 @@
+{
+ "inputs" :
+ [
+ {
+ "path" : "CMakeLists.txt"
+ },
+ {
+ "path" : "version.h.in"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake"
+ },
+ {
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake"
+ },
+ {
+ "isCMake" : true,
+ "isExternal" : true,
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in"
+ },
+ {
+ "isGenerated" : true,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake"
+ }
+ ],
+ "kind" : "cmakeFiles",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/codemodel-v2-37d173e2114f1c05647c.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/codemodel-v2-37d173e2114f1c05647c.json
new file mode 100644
index 0000000..01ebda0
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/codemodel-v2-37d173e2114f1c05647c.json
@@ -0,0 +1,59 @@
+{
+ "configurations" :
+ [
+ {
+ "directories" :
+ [
+ {
+ "build" : ".",
+ "minimumCMakeVersion" :
+ {
+ "string" : "3.6.0"
+ },
+ "projectIndex" : 0,
+ "source" : ".",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "name" : "RelWithDebInfo",
+ "projects" :
+ [
+ {
+ "directoryIndexes" :
+ [
+ 0
+ ],
+ "name" : "clash-bridge",
+ "targetIndexes" :
+ [
+ 0
+ ]
+ }
+ ],
+ "targets" :
+ [
+ {
+ "directoryIndex" : 0,
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "jsonFile" : "target-bridge-RelWithDebInfo-2d99a72053f7485cd691.json",
+ "name" : "bridge",
+ "projectIndex" : 0
+ }
+ ]
+ }
+ ],
+ "kind" : "codemodel",
+ "paths" :
+ {
+ "build" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64",
+ "source" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp"
+ },
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/index-2024-10-15T10-32-48-0879.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/index-2024-10-15T10-32-48-0879.json
new file mode 100644
index 0000000..3890197
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/index-2024-10-15T10-32-48-0879.json
@@ -0,0 +1,92 @@
+{
+ "cmake" :
+ {
+ "generator" :
+ {
+ "multiConfig" : false,
+ "name" : "Ninja"
+ },
+ "paths" :
+ {
+ "cmake" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake",
+ "cpack" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack",
+ "ctest" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest",
+ "root" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18"
+ },
+ "version" :
+ {
+ "isDirty" : false,
+ "major" : 3,
+ "minor" : 18,
+ "patch" : 1,
+ "string" : "3.18.1-g262b901",
+ "suffix" : "g262b901"
+ }
+ },
+ "objects" :
+ [
+ {
+ "jsonFile" : "codemodel-v2-37d173e2114f1c05647c.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ },
+ {
+ "jsonFile" : "cache-v2-72254181c8c7047daf5d.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ {
+ "jsonFile" : "cmakeFiles-v1-5693e50114dfc685ce4a.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ }
+ ],
+ "reply" :
+ {
+ "client-agp" :
+ {
+ "cache-v2" :
+ {
+ "jsonFile" : "cache-v2-72254181c8c7047daf5d.json",
+ "kind" : "cache",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 0
+ }
+ },
+ "cmakeFiles-v1" :
+ {
+ "jsonFile" : "cmakeFiles-v1-5693e50114dfc685ce4a.json",
+ "kind" : "cmakeFiles",
+ "version" :
+ {
+ "major" : 1,
+ "minor" : 0
+ }
+ },
+ "codemodel-v2" :
+ {
+ "jsonFile" : "codemodel-v2-37d173e2114f1c05647c.json",
+ "kind" : "codemodel",
+ "version" :
+ {
+ "major" : 2,
+ "minor" : 1
+ }
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-2d99a72053f7485cd691.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-2d99a72053f7485cd691.json
new file mode 100644
index 0000000..9051060
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.cmake/api/v1/reply/target-bridge-RelWithDebInfo-2d99a72053f7485cd691.json
@@ -0,0 +1,174 @@
+{
+ "artifacts" :
+ [
+ {
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64/libbridge.so"
+ }
+ ],
+ "backtrace" : 1,
+ "backtraceGraph" :
+ {
+ "commands" :
+ [
+ "add_library",
+ "link_directories",
+ "target_link_libraries",
+ "include_directories"
+ ],
+ "files" :
+ [
+ "CMakeLists.txt"
+ ],
+ "nodes" :
+ [
+ {
+ "file" : 0
+ },
+ {
+ "command" : 0,
+ "file" : 0,
+ "line" : 68,
+ "parent" : 0
+ },
+ {
+ "command" : 1,
+ "file" : 0,
+ "line" : 66,
+ "parent" : 0
+ },
+ {
+ "command" : 2,
+ "file" : 0,
+ "line" : 69,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 63,
+ "parent" : 0
+ },
+ {
+ "command" : 3,
+ "file" : 0,
+ "line" : 64,
+ "parent" : 0
+ }
+ ]
+ },
+ "compileGroups" :
+ [
+ {
+ "compileCommandFragments" :
+ [
+ {
+ "fragment" : "-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC"
+ }
+ ],
+ "defines" :
+ [
+ {
+ "define" : "bridge_EXPORTS"
+ }
+ ],
+ "includes" :
+ [
+ {
+ "backtrace" : 4,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86_64"
+ },
+ {
+ "backtrace" : 5,
+ "path" : "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native"
+ }
+ ],
+ "language" : "C",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ],
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ }
+ ],
+ "id" : "bridge::@6890427a1f51a3e7e1df",
+ "link" :
+ {
+ "commandFragments" :
+ [
+ {
+ "fragment" : "-static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments",
+ "role" : "flags"
+ },
+ {
+ "backtrace" : 2,
+ "fragment" : "-L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86_64",
+ "role" : "libraryPath"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-llog",
+ "role" : "libraries"
+ },
+ {
+ "backtrace" : 3,
+ "fragment" : "-lclash",
+ "role" : "libraries"
+ },
+ {
+ "fragment" : "-latomic -lm",
+ "role" : "libraries"
+ }
+ ],
+ "language" : "C",
+ "sysroot" :
+ {
+ "path" : "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot"
+ }
+ },
+ "name" : "bridge",
+ "nameOnDisk" : "libbridge.so",
+ "paths" :
+ {
+ "build" : ".",
+ "source" : "."
+ },
+ "sourceGroups" :
+ [
+ {
+ "name" : "Source Files",
+ "sourceIndexes" :
+ [
+ 0,
+ 1,
+ 2
+ ]
+ }
+ ],
+ "sources" :
+ [
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "main.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "jni_helper.c",
+ "sourceGroupIndex" : 0
+ },
+ {
+ "backtrace" : 1,
+ "compileGroupIndex" : 0,
+ "path" : "bridge_helper.c",
+ "sourceGroupIndex" : 0
+ }
+ ],
+ "type" : "SHARED_LIBRARY"
+}
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.ninja_deps b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.ninja_deps
new file mode 100644
index 0000000..32c4681
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.ninja_deps differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.ninja_log b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.ninja_log
new file mode 100644
index 0000000..3497e8e
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/.ninja_log
@@ -0,0 +1,3 @@
+# ninja log v5
+1 34 1728988368 CMakeFiles/bridge.dir/bridge_helper.c.o b6c9078da376d6f6
+0 49 1728988368 CMakeFiles/bridge.dir/jni_helper.c.o 6ccf61cfbb75a598
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeCache.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeCache.txt
new file mode 100644
index 0000000..ef6d52f
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeCache.txt
@@ -0,0 +1,369 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64
+# It was generated by CMake: /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//No help, variable specified on the command line.
+ANDROID_ABI:UNINITIALIZED=x86_64
+
+//No help, variable specified on the command line.
+ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//No help, variable specified on the command line.
+ANDROID_PLATFORM:UNINITIALIZED=android-21
+
+//Path to a program.
+CMAKE_ADDR2LINE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_ARCH_ABI:UNINITIALIZED=x86_64
+
+//No help, variable specified on the command line.
+CMAKE_ANDROID_NDK:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+
+//Archiver
+CMAKE_AR:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar
+
+//Flags used by the compiler during all build types.
+CMAKE_ASM_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_ASM_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_ASM_FLAGS_RELEASE:STRING=
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=
+
+//LLVM archiver
+CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
+
+//Generate index for LLVM archive
+CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-latomic -lm
+
+//Path to a program.
+CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//No help, variable specified on the command line.
+CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=ON
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//No help, variable specified on the command line.
+CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld
+
+//No help, variable specified on the command line.
+CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_DESCRIPTION:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=clash-bridge
+
+//Ranlib
+CMAKE_RANLIB:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib
+
+//Path to a program.
+CMAKE_READELF:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf
+
+//No help, variable specified on the command line.
+CMAKE_RUNTIME_OUTPUT_DIRECTORY:UNINITIALIZED=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Strip
+CMAKE_STRIP:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_NAME:UNINITIALIZED=Android
+
+//No help, variable specified on the command line.
+CMAKE_SYSTEM_VERSION:UNINITIALIZED=21
+
+//The CMake toolchain file
+CMAKE_TOOLCHAIN_FILE:FILEPATH=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//No help, variable specified on the command line.
+FLAVOR_NAME:STRING=meta
+
+//No help, variable specified on the command line.
+GO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+
+//No help, variable specified on the command line.
+GO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+
+//Dependencies for the target
+bridge_LIB_DEPENDS:STATIC=general;log;general;clash;
+
+//Value Computed by CMake
+clash-bridge_BINARY_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64
+
+//Value Computed by CMake
+clash-bridge_SOURCE_DIR:STATIC=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_ADDR2LINE
+CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER_AR
+CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
+CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_DLLTOOL
+CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Ninja
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_READELF
+CMAKE_READELF-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
new file mode 100644
index 0000000..0027182
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake
@@ -0,0 +1,77 @@
+set(CMAKE_C_COMPILER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "Clang")
+set(CMAKE_C_COMPILER_VERSION "12.0.5")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+
+set(CMAKE_AR "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar")
+set(CMAKE_C_COMPILER_AR "CMAKE_C_COMPILER_AR-NOTFOUND")
+set(CMAKE_RANLIB "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib")
+set(CMAKE_C_COMPILER_RANLIB "CMAKE_C_COMPILER_RANLIB-NOTFOUND")
+set(CMAKE_LINKER "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/ld.lld")
+set(CMAKE_MT "")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/include;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/x86_64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include")
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "-l:libunwind.a;dl;c;-l:libunwind.a;dl")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/12.0.5/lib/linux/x86_64;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/21;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android;/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..9ddb148
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
new file mode 100644
index 0000000..c1a4dea
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+include("/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake")
+
+set(CMAKE_SYSTEM "Android-1")
+set(CMAKE_SYSTEM_NAME "Android")
+set(CMAKE_SYSTEM_VERSION "1")
+set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_CROSSCOMPILING "TRUE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/TargetDirectories.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..83ad3eb
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/rebuild_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/edit_cache.dir
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/bridge.dir
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/bridge.dir/bridge_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/bridge.dir/bridge_helper.c.o
new file mode 100644
index 0000000..72faa24
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/bridge.dir/bridge_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/bridge.dir/jni_helper.c.o b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/bridge.dir/jni_helper.c.o
new file mode 100644
index 0000000..eb46775
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/bridge.dir/jni_helper.c.o differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/cmake.check_cache b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/rules.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/rules.ninja
new file mode 100644
index 0000000..a517dda
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/CMakeFiles/rules.ninja
@@ -0,0 +1,64 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the rules used to get the outputs files
+# built from the input files.
+# It is included in the main 'build.ninja'.
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+# =============================================================================
+
+#############################################
+# Rule for running custom commands.
+
+rule CUSTOM_COMMAND
+ command = $COMMAND
+ description = $DESC
+
+
+#############################################
+# Rule for compiling C files.
+
+rule C_COMPILER__bridge_RelWithDebInfo
+ depfile = $DEP_FILE
+ deps = gcc
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
+ description = Building C object $out
+
+
+#############################################
+# Rule for linking C shared library.
+
+rule C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo
+ command = $PRE_LINK && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC $LANGUAGE_COMPILE_FLAGS $ARCH_FLAGS $LINK_FLAGS -shared $SONAME_FLAG$SONAME -o $TARGET_FILE $in $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
+ description = Linking C shared library $TARGET_FILE
+ restat = $RESTAT
+
+
+#############################################
+# Rule for re-running cmake.
+
+rule RERUN_CMAKE
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64
+ description = Re-running CMake...
+ generator = 1
+
+
+#############################################
+# Rule for cleaning all built files.
+
+rule CLEAN
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja $FILE_ARG -t clean $TARGETS
+ description = Cleaning all built files...
+
+
+#############################################
+# Rule for printing all primary targets available.
+
+rule HELP
+ command = /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja -t targets
+ description = All primary targets available:
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build.json
new file mode 100644
index 0000000..a2743a5
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build.json
@@ -0,0 +1,38 @@
+{
+ "buildFiles": [
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt"
+ ],
+ "cleanCommandsComponents": [
+ [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64",
+ "clean"
+ ]
+ ],
+ "buildTargetsCommandComponents": [
+ "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja",
+ "-C",
+ "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64",
+ "{LIST_OF_TARGETS_TO_BUILD}"
+ ],
+ "libraries": {
+ "bridge::@6890427a1f51a3e7e1df": {
+ "toolchain": "toolchain",
+ "abi": "x86_64",
+ "artifactName": "bridge",
+ "output": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64/libbridge.so",
+ "runtimeFiles": []
+ }
+ },
+ "toolchains": {
+ "toolchain": {
+ "cCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang.lld",
+ "cppCompilerExecutable": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++.lld"
+ }
+ },
+ "cFileExtensions": [
+ "c"
+ ],
+ "cppFileExtensions": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build_command_bridge_x86_64.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build_command_bridge_x86_64.txt
new file mode 100644
index 0000000..adaf9e9
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build_command_bridge_x86_64.txt
@@ -0,0 +1,7 @@
+Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+arguments :
+-C
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64
+bridge
+jvmArgs :
+
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build_stderr_bridge_x86_64.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build_stderr_bridge_x86_64.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build_stdout_bridge_x86_64.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build_stdout_bridge_x86_64.txt
new file mode 100644
index 0000000..c152905
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/android_gradle_build_stdout_bridge_x86_64.txt
@@ -0,0 +1,11 @@
+ninja: Entering directory `/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64'
+[1/4] Building C object CMakeFiles/bridge.dir/main.c.o
+FAILED: CMakeFiles/bridge.dir/main.c.o
+/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -MD -MT CMakeFiles/bridge.dir/main.c.o -MF CMakeFiles/bridge.dir/main.c.o.d -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c
+/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c:7:10: fatal error: 'libclash.h' file not found
+#include "libclash.h"
+ ^~~~~~~~~~~~
+1 error generated.
+[2/4] Building C object CMakeFiles/bridge.dir/bridge_helper.c.o
+[3/4] Building C object CMakeFiles/bridge.dir/jni_helper.c.o
+ninja: build stopped: subcommand failed.
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/build.ninja b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/build.ninja
new file mode 100644
index 0000000..e32fcc1
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/build.ninja
@@ -0,0 +1,168 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Ninja" Generator, CMake Version 3.18
+
+# This file contains all the build statements describing the
+# compilation DAG.
+
+# =============================================================================
+# Write statements declared in CMakeLists.txt:
+#
+# Which is the root file.
+# =============================================================================
+
+# =============================================================================
+# Project: clash-bridge
+# Configurations: RelWithDebInfo
+# =============================================================================
+
+#############################################
+# Minimal version of Ninja required by this file
+
+ninja_required_version = 1.5
+
+
+#############################################
+# Set configuration variable for custom commands.
+
+CONFIGURATION = RelWithDebInfo
+# =============================================================================
+# Include auxiliary files.
+
+
+#############################################
+# Include rules file.
+
+include CMakeFiles/rules.ninja
+
+
+#############################################
+# Utility command for rebuild_cache
+
+build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64 && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake --regenerate-during-build -S/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp -B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64
+ DESC = Running CMake to regenerate build system...
+ pool = console
+ restat = 1
+
+build rebuild_cache: phony CMakeFiles/rebuild_cache.util
+
+
+#############################################
+# Utility command for edit_cache
+
+build CMakeFiles/edit_cache.util: CUSTOM_COMMAND
+ COMMAND = cd /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64 && /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+ DESC = No interactive CMake dialog available...
+ restat = 1
+
+build edit_cache: phony CMakeFiles/edit_cache.util
+
+# =============================================================================
+# Object build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Order-only phony target for bridge
+
+build cmake_object_order_depends_target_bridge: phony || CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/main.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/main.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/jni_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/jni_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+build CMakeFiles/bridge.dir/bridge_helper.c.o: C_COMPILER__bridge_RelWithDebInfo /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c || cmake_object_order_depends_target_bridge
+ DEFINES = -Dbridge_EXPORTS
+ DEP_FILE = CMakeFiles/bridge.dir/bridge_helper.c.o.d
+ FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC
+ INCLUDES = -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ OBJECT_FILE_DIR = CMakeFiles/bridge.dir
+
+
+# =============================================================================
+# Link build statements for SHARED_LIBRARY target bridge
+
+
+#############################################
+# Link the shared library /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64/libbridge.so
+
+build /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64/libbridge.so: C_SHARED_LIBRARY_LINKER__bridge_RelWithDebInfo CMakeFiles/bridge.dir/main.c.o CMakeFiles/bridge.dir/jni_helper.c.o CMakeFiles/bridge.dir/bridge_helper.c.o
+ LANGUAGE_COMPILE_FLAGS = -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG
+ LINK_FLAGS = -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments
+ LINK_LIBRARIES = -llog -lclash -latomic -lm
+ LINK_PATH = -L/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86_64
+ OBJECT_DIR = CMakeFiles/bridge.dir
+ POST_BUILD = :
+ PRE_LINK = :
+ SONAME = libbridge.so
+ SONAME_FLAG = -Wl,-soname,
+ TARGET_FILE = /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64/libbridge.so
+ TARGET_PDB = bridge.so.dbg
+
+# =============================================================================
+# Target aliases.
+
+build bridge: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64/libbridge.so
+
+build libbridge.so: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64/libbridge.so
+
+# =============================================================================
+# Folder targets.
+
+# =============================================================================
+
+#############################################
+# Folder: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64
+
+build all: phony /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64/libbridge.so
+
+# =============================================================================
+# Unknown Build Time Dependencies.
+# Tell Ninja that they may appear as side effects of build rules
+# otherwise ordered by order-only dependencies.
+
+# =============================================================================
+# Built-in targets
+
+
+#############################################
+# Re-run CMake if any of its inputs changed.
+
+build build.ninja: RERUN_CMAKE | /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake
+ pool = console
+
+
+#############################################
+# A missing CMake input file is not an error.
+
+build /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompiler.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCCompilerABI.c /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeCommonLanguageInclude.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompileFeatures.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineCompilerABI.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeDetermineSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeFindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeGenericSystem.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeInitializeConfigs.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeLanguageInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitIncludeInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeParseImplicitLinkInfo.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystem.cmake.in /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInformation.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeSystemSpecificInitialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/CMakeTestCompilerCommon.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang-FindBinUtils.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Compiler/GNU.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/CMakeCheckCompilerFlag.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Internal/FeatureTesting.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Clang.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine-C.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Determine.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android-Initialize.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Android/Determine-Compiler.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/Linux.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/share/cmake-3.18/Modules/Platform/UnixPaths.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android-legacy.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/compiler_id.cmake /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/platforms.cmake /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/CMakeLists.txt /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/version.h.in CMakeCache.txt CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake: phony
+
+
+#############################################
+# Clean all the built files.
+
+build clean: CLEAN
+
+
+#############################################
+# Print all primary targets available.
+
+build help: HELP
+
+
+#############################################
+# Make the all target the default.
+
+default all
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/cmake_install.cmake b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/cmake_install.cmake
new file mode 100644
index 0000000..c9dc976
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/cmake_install.cmake
@@ -0,0 +1,54 @@
+# Install script for directory: /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "0")
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "TRUE")
+endif()
+
+# Set default install directory permissions.
+if(NOT DEFINED CMAKE_OBJDUMP)
+ set(CMAKE_OBJDUMP "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/compile_commands.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/compile_commands.json
new file mode 100644
index 0000000..aa46ce0
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/compile_commands.json
@@ -0,0 +1,17 @@
+[
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/main.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/main.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/jni_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/jni_helper.c"
+},
+{
+ "directory": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64",
+ "command": "/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang --target=x86_64-none-linux-android21 --gcc-toolchain=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dbridge_EXPORTS -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang/metaRelease/x86_64 -I/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/bridge.dir/bridge_helper.c.o -c /Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c",
+ "file": "/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp/bridge_helper.c"
+}
+]
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/compile_commands.json.bin b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/compile_commands.json.bin
new file mode 100644
index 0000000..aa0dc27
Binary files /dev/null and b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/compile_commands.json.bin differ
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/metadata_generation_command.txt b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/metadata_generation_command.txt
new file mode 100644
index 0000000..feeb3e4
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/metadata_generation_command.txt
@@ -0,0 +1,26 @@
+ Executable : /Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/cmake
+arguments :
+-H/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/cpp
+-DCMAKE_SYSTEM_NAME=Android
+-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+-DCMAKE_SYSTEM_VERSION=21
+-DANDROID_PLATFORM=android-21
+-DANDROID_ABI=x86_64
+-DCMAKE_ANDROID_ARCH_ABI=x86_64
+-DANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_ANDROID_NDK=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858
+-DCMAKE_TOOLCHAIN_FILE=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/ndk/23.0.7599858/build/cmake/android.toolchain.cmake
+-DCMAKE_MAKE_PROGRAM=/Applications/Unity/Hub/Editor/2022.3.32f1/PlaybackEngines/AndroidPlayer/SDK/cmake/3.18.1/bin/ninja
+-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64
+-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/intermediates/cxx/RelWithDebInfo/i674g392/obj/x86_64
+-DCMAKE_BUILD_TYPE=RelWithDebInfo
+-B/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/.cxx/RelWithDebInfo/i674g392/x86_64
+-GNinja
+-DGO_SOURCE:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/src/main/golang/native
+-DGO_OUTPUT:STRING=/Users/zeus/Documents/GitHub/ClashMetaForAndroid/core/build/outputs/golang
+-DFLAVOR_NAME:STRING=meta
+jvmArgs :
+
+
+ Build command args: []
+ Version: 2
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/prefab_config.json b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/prefab_config.json
new file mode 100644
index 0000000..e799de8
--- /dev/null
+++ b/Android-kotlin-Code/core/.cxx/RelWithDebInfo/i674g392/x86_64/prefab_config.json
@@ -0,0 +1,4 @@
+{
+ "enabled": false,
+ "packages": []
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/build.gradle.kts b/Android-kotlin-Code/core/build.gradle.kts
new file mode 100644
index 0000000..465edb5
--- /dev/null
+++ b/Android-kotlin-Code/core/build.gradle.kts
@@ -0,0 +1,65 @@
+import com.github.kr328.golang.GolangBuildTask
+import com.github.kr328.golang.GolangPlugin
+import java.io.FileOutputStream
+import java.net.URL
+import java.time.Duration
+
+plugins {
+ kotlin("android")
+ id("com.android.library")
+ id("kotlinx-serialization")
+ id("golang-android")
+}
+
+val golangSource = file("src/main/golang/native")
+
+golang {
+ sourceSets {
+ create("alpha") {
+ tags.set(listOf("foss","with_gvisor","cmfa"))
+ srcDir.set(file("src/foss/golang"))
+ }
+ create("meta") {
+ tags.set(listOf("foss","with_gvisor","cmfa"))
+ srcDir.set(file("src/foss/golang"))
+ }
+ all {
+ fileName.set("libclash.so")
+ packageName.set("cfa/native")
+ }
+ }
+}
+
+android {
+ productFlavors {
+ all {
+ externalNativeBuild {
+ cmake {
+ arguments("-DGO_SOURCE:STRING=${golangSource}")
+ arguments("-DGO_OUTPUT:STRING=${GolangPlugin.outputDirOf(project, null, null)}")
+ arguments("-DFLAVOR_NAME:STRING=$name")
+ }
+ }
+ }
+ }
+
+ externalNativeBuild {
+ cmake {
+ path = file("src/main/cpp/CMakeLists.txt")
+ }
+ }
+}
+
+dependencies {
+ implementation(project(":common"))
+
+ implementation(libs.androidx.core)
+ implementation(libs.kotlin.coroutine)
+ implementation(libs.kotlin.serialization.json)
+}
+
+afterEvaluate {
+ tasks.withType(GolangBuildTask::class.java).forEach {
+ it.inputs.dir(golangSource)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/consumer-rules.pro b/Android-kotlin-Code/core/consumer-rules.pro
new file mode 100644
index 0000000..c0c57ed
--- /dev/null
+++ b/Android-kotlin-Code/core/consumer-rules.pro
@@ -0,0 +1,18 @@
+-keep class kotlinx.coroutines.CompletableDeferred {
+ *;
+}
+
+-keep class kotlin.Unit {
+ *;
+}
+
+-keepattributes *Annotation*, InnerClasses
+-dontnote kotlinx.serialization.AnnotationsKt # core serialization annotations
+
+# kotlinx-serialization-json specific. Add this if you have java.lang.NoClassDefFoundError kotlinx.serialization.json.JsonObjectSerializer
+-keepclassmembers class kotlinx.serialization.json.** {
+ *** Companion;
+}
+-keepclasseswithmembers class kotlinx.serialization.json.** {
+ kotlinx.serialization.KSerializer serializer(...);
+}
diff --git a/Android-kotlin-Code/core/proguard-rules.pro b/Android-kotlin-Code/core/proguard-rules.pro
new file mode 100644
index 0000000..f1b4245
--- /dev/null
+++ b/Android-kotlin-Code/core/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.github/ISSUE_TEMPLATE/bug_report.yml b/Android-kotlin-Code/core/src/foss/golang/clash/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 0000000..d68bd25
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,83 @@
+name: Bug report
+description: Create a report to help us improve
+title: "[Bug] "
+labels: ["bug"]
+body:
+ - type: checkboxes
+ id: ensure
+ attributes:
+ label: Verify steps
+ description: "
+在提交之前,请确认
+Please verify that you've followed these steps
+"
+ options:
+ - label: "
+确保你使用的是**本仓库**最新的的 mihomo 或 mihomo Alpha 版本
+Ensure you are using the latest version of Mihomo or Mihomo Alpha from **this repository**.
+"
+ required: true
+ - label: "
+如果你可以自己 debug 并解决的话,提交 PR 吧
+Is this something you can **debug and fix**? Send a pull request! Bug fixes and documentation fixes are welcome.
+"
+ required: false
+ - label: "
+我已经在 [Issue Tracker](……/) 中找过我要提出的问题
+I have searched on the [issue tracker](……/) for a related issue.
+"
+ required: true
+ - label: "
+我已经使用 Alpha 分支版本测试过,问题依旧存在
+I have tested using the dev branch, and the issue still exists.
+"
+ required: true
+ - label: "
+我已经仔细看过 [Documentation](https://wiki.metacubex.one/) 并无法自行解决问题
+I have read the [documentation](https://wiki.metacubex.one/) and was unable to solve the issue.
+"
+ required: true
+ - label: "
+这是 Mihomo 核心的问题,并非我所使用的 Mihomo 衍生版本(如 OpenMihomo、KoolMihomo 等)的特定问题
+This is an issue of the Mihomo core *per se*, not to the derivatives of Mihomo, like OpenMihomo or KoolMihomo.
+"
+ required: true
+ - type: input
+ attributes:
+ label: Mihomo version
+ description: "use `mihomo -v`"
+ validations:
+ required: true
+ - type: dropdown
+ id: os
+ attributes:
+ label: What OS are you seeing the problem on?
+ multiple: true
+ options:
+ - macOS
+ - Windows
+ - Linux
+ - OpenBSD/FreeBSD
+ - type: textarea
+ attributes:
+ render: yaml
+ label: "Mihomo config"
+ description: "
+在下方附上 Mihomo core 配置文件,请确保配置文件中没有敏感信息(比如:服务器地址,密码,端口等)
+Paste the Mihomo core configuration file below, please make sure that there is no sensitive information in the configuration file (e.g., server address/url, password, port)
+"
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ render: shell
+ label: Mihomo log
+ description: "
+在下方附上 Mihomo Core 的日志,log level 使用 DEBUG
+Paste the Mihomo core log below with the log level set to `DEBUG`.
+"
+ - type: textarea
+ attributes:
+ label: Description
+ validations:
+ required: true
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.github/ISSUE_TEMPLATE/config.yml b/Android-kotlin-Code/core/src/foss/golang/clash/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..75d37b6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+ - name: mihomo Community Support
+ url: https://github.com/MetaCubeX/mihomo/discussions
+ about: Please ask and answer questions about mihomo here.
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.github/ISSUE_TEMPLATE/feature_request.yml b/Android-kotlin-Code/core/src/foss/golang/clash/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 0000000..7987526
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,37 @@
+name: Feature request
+description: Suggest an idea for this project
+title: "[Feature] "
+labels: ["enhancement"]
+body:
+ - type: checkboxes
+ id: ensure
+ attributes:
+ label: Verify steps
+ description: "
+在提交之前,请确认
+Please verify that you've followed these steps
+"
+ options:
+ - label: "
+我已经在 [Issue Tracker](……/) 中找过我要提出的请求
+I have searched on the [issue tracker](……/) for a related feature request.
+"
+ required: true
+ - label: "
+我已经仔细看过 [Documentation](https://wiki.metacubex.one/) 并无法找到这个功能
+I have read the [documentation](https://wiki.metacubex.one/) and was unable to solve the issue.
+"
+ required: true
+ - type: textarea
+ attributes:
+ label: Description
+ description: 请详细、清晰地表达你要提出的论述,例如这个问题如何影响到你?你想实现什么功能?目前 Mihomo Core 的行为是什麽?
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Possible Solution
+ description: "
+此项非必须,但是如果你有想法的话欢迎提出。
+Not obligatory, but suggest a fix/reason for the bug, or ideas how to implement the addition or change
+"
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.github/genReleaseNote.sh b/Android-kotlin-Code/core/src/foss/golang/clash/.github/genReleaseNote.sh
new file mode 100755
index 0000000..ab617fd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.github/genReleaseNote.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+while getopts "v:" opt; do
+ case $opt in
+ v)
+ version_range=$OPTARG
+ ;;
+ \?)
+ echo "Invalid option: -$OPTARG" >&2
+ exit 1
+ ;;
+ esac
+done
+
+if [ -z "$version_range" ]; then
+ echo "Please provide the version range using -v option. Example: ./genReleashNote.sh -v v1.14.1...v1.14.2"
+ exit 1
+fi
+
+echo "## What's Changed" > release.md
+git log --pretty=format:"* %h %s by @%an" --grep="^feat" -i $version_range | sort -f | uniq >> release.md
+echo "" >> release.md
+
+echo "## BUG & Fix" >> release.md
+git log --pretty=format:"* %h %s by @%an" --grep="^fix" -i $version_range | sort -f | uniq >> release.md
+echo "" >> release.md
+
+echo "## Maintenance" >> release.md
+git log --pretty=format:"* %h %s by @%an" --grep="^chore\|^docs\|^refactor" -i $version_range | sort -f | uniq >> release.md
+echo "" >> release.md
+
+echo "**Full Changelog**: https://github.com/MetaCubeX/mihomo/compare/$version_range" >> release.md
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.github/mihomo.service b/Android-kotlin-Code/core/src/foss/golang/clash/.github/mihomo.service
new file mode 100644
index 0000000..f34b6a6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.github/mihomo.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=mihomo Daemon, Another Clash Kernel.
+After=network.target NetworkManager.service systemd-networkd.service iwd.service
+
+[Service]
+Type=simple
+LimitNPROC=500
+LimitNOFILE=1000000
+CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH CAP_DAC_OVERRIDE
+AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH CAP_DAC_OVERRIDE
+Restart=always
+ExecStartPre=/usr/bin/sleep 2s
+ExecStart=/usr/bin/mihomo -d /etc/mihomo
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.github/release.sh b/Android-kotlin-Code/core/src/foss/golang/clash/.github/release.sh
new file mode 100644
index 0000000..4757cdb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.github/release.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+FILENAMES=$(ls)
+for FILENAME in $FILENAMES
+do
+ if [[ ! ($FILENAME =~ ".exe" || $FILENAME =~ ".sh")]];then
+ gzip -S ".gz" $FILENAME
+ elif [[ $FILENAME =~ ".exe" ]];then
+ zip -m ${FILENAME%.*}.zip $FILENAME
+ else echo "skip $FILENAME"
+ fi
+done
+
+FILENAMES=$(ls)
+for FILENAME in $FILENAMES
+do
+ if [[ $FILENAME =~ ".zip" ]];then
+ echo "rename $FILENAME"
+ mv $FILENAME ${FILENAME%.*}-${VERSION}.zip
+ elif [[ $FILENAME =~ ".gz" ]];then
+ echo "rename $FILENAME"
+ mv $FILENAME ${FILENAME%.*}-${VERSION}.gz
+ else
+ echo "skip $FILENAME"
+ fi
+done
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.github/rename-cgo.sh b/Android-kotlin-Code/core/src/foss/golang/clash/.github/rename-cgo.sh
new file mode 100644
index 0000000..2bfdb3c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.github/rename-cgo.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+FILENAMES=$(ls)
+for FILENAME in $FILENAMES
+do
+ if [[ $FILENAME =~ "darwin-10.16-arm64" ]];then
+ echo "rename darwin-10.16-arm64 $FILENAME"
+ mv $FILENAME mihomo-darwin-arm64-cgo
+ elif [[ $FILENAME =~ "darwin-10.16-amd64" ]];then
+ echo "rename darwin-10.16-amd64 $FILENAME"
+ mv $FILENAME mihomo-darwin-amd64-cgo
+ elif [[ $FILENAME =~ "windows-4.0-386" ]];then
+ echo "rename windows 386 $FILENAME"
+ mv $FILENAME mihomo-windows-386-cgo.exe
+ elif [[ $FILENAME =~ "windows-4.0-amd64" ]];then
+ echo "rename windows amd64 $FILENAME"
+ mv $FILENAME mihomo-windows-amd64-cgo.exe
+ elif [[ $FILENAME =~ "mihomo-linux-arm-5" ]];then
+ echo "rename mihomo-linux-arm-5 $FILENAME"
+ mv $FILENAME mihomo-linux-armv5-cgo
+ elif [[ $FILENAME =~ "mihomo-linux-arm-6" ]];then
+ echo "rename mihomo-linux-arm-6 $FILENAME"
+ mv $FILENAME mihomo-linux-armv6-cgo
+ elif [[ $FILENAME =~ "mihomo-linux-arm-7" ]];then
+ echo "rename mihomo-linux-arm-7 $FILENAME"
+ mv $FILENAME mihomo-linux-armv7-cgo
+ elif [[ $FILENAME =~ "linux" ]];then
+ echo "rename linux $FILENAME"
+ mv $FILENAME $FILENAME-cgo
+ elif [[ $FILENAME =~ "android" ]];then
+ echo "rename android $FILENAME"
+ mv $FILENAME $FILENAME-cgo
+ else echo "skip $FILENAME"
+ fi
+done
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.github/rename-go120.sh b/Android-kotlin-Code/core/src/foss/golang/clash/.github/rename-go120.sh
new file mode 100644
index 0000000..eddb176
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.github/rename-go120.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+FILENAMES=$(ls)
+for FILENAME in $FILENAMES
+do
+ if [[ ! ($FILENAME =~ ".exe" || $FILENAME =~ ".sh")]];then
+ mv $FILENAME ${FILENAME}-go120
+ elif [[ $FILENAME =~ ".exe" ]];then
+ mv $FILENAME ${FILENAME%.*}-go120.exe
+ else echo "skip $FILENAME"
+ fi
+done
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.github/workflows/build.yml b/Android-kotlin-Code/core/src/foss/golang/clash/.github/workflows/build.yml
new file mode 100644
index 0000000..5ba2ef6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.github/workflows/build.yml
@@ -0,0 +1,523 @@
+name: Build
+on:
+ workflow_dispatch:
+ inputs:
+ version:
+ description: "Tag version to release"
+ required: true
+ push:
+ paths-ignore:
+ - "docs/**"
+ - "README.md"
+ - ".github/ISSUE_TEMPLATE/**"
+ branches:
+ - Alpha
+ tags:
+ - "v*"
+ pull_request_target:
+ branches:
+ - Alpha
+concurrency:
+ group: "${{ github.workflow }}-${{ github.ref }}"
+ cancel-in-progress: true
+
+env:
+ REGISTRY: docker.io
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ jobs:
+ - { goos: darwin, goarch: arm64, output: arm64 }
+ - { goos: darwin, goarch: amd64, goamd64: v1, output: amd64-compatible }
+ - { goos: darwin, goarch: amd64, goamd64: v3, output: amd64 }
+
+ - { goos: linux, goarch: '386', output: '386' }
+ - { goos: linux, goarch: amd64, goamd64: v1, output: amd64-compatible, test: test }
+ - { goos: linux, goarch: amd64, goamd64: v3, output: amd64 }
+ - { goos: linux, goarch: arm64, output: arm64 }
+ - { goos: linux, goarch: arm, goarm: '5', output: armv5 }
+ - { goos: linux, goarch: arm, goarm: '6', output: armv6 }
+ - { goos: linux, goarch: arm, goarm: '7', output: armv7 }
+ - { goos: linux, goarch: mips, gomips: hardfloat, output: mips-hardfloat }
+ - { goos: linux, goarch: mips, gomips: softfloat, output: mips-softfloat }
+ - { goos: linux, goarch: mipsle, gomips: hardfloat, output: mipsle-hardfloat }
+ - { goos: linux, goarch: mipsle, gomips: softfloat, output: mipsle-softfloat }
+ - { goos: linux, goarch: mips64, output: mips64 }
+ - { goos: linux, goarch: mips64le, output: mips64le }
+ - { goos: linux, goarch: loong64, output: loong64-abi1, abi: '1' }
+ - { goos: linux, goarch: loong64, output: loong64-abi2, abi: '2' }
+ - { goos: linux, goarch: riscv64, output: riscv64 }
+ - { goos: linux, goarch: s390x, output: s390x }
+
+ - { goos: windows, goarch: '386', output: '386' }
+ - { goos: windows, goarch: amd64, goamd64: v1, output: amd64-compatible }
+ - { goos: windows, goarch: amd64, goamd64: v3, output: amd64 }
+ - { goos: windows, goarch: arm, goarm: '7', output: armv7 }
+ - { goos: windows, goarch: arm64, output: arm64 }
+
+ - { goos: freebsd, goarch: '386', output: '386' }
+ - { goos: freebsd, goarch: amd64, goamd64: v1, output: amd64-compatible }
+ - { goos: freebsd, goarch: amd64, goamd64: v3, output: amd64 }
+ - { goos: freebsd, goarch: arm64, output: arm64 }
+
+ - { goos: android, goarch: '386', ndk: i686-linux-android34, output: '386' }
+ - { goos: android, goarch: amd64, ndk: x86_64-linux-android34, output: amd64 }
+ - { goos: android, goarch: arm, ndk: armv7a-linux-androideabi34, output: armv7 }
+ - { goos: android, goarch: arm64, ndk: aarch64-linux-android34, output: arm64-v8 }
+
+ # Go 1.22 with special patch can work on Windows 7
+ # https://github.com/MetaCubeX/go/commits/release-branch.go1.22/
+ - { goos: windows, goarch: '386', output: '386-go122', goversion: '1.22' }
+ - { goos: windows, goarch: amd64, goamd64: v1, output: amd64-compatible-go122, goversion: '1.22' }
+ - { goos: windows, goarch: amd64, goamd64: v3, output: amd64-go122, goversion: '1.22' }
+
+ # Go 1.21 can revert commit `9e4385` to work on Windows 7
+ # https://github.com/golang/go/issues/64622#issuecomment-1847475161
+ # (OR we can just use golang1.21.4 which unneeded any patch)
+ - { goos: windows, goarch: '386', output: '386-go121', goversion: '1.21' }
+ - { goos: windows, goarch: amd64, goamd64: v1, output: amd64-compatible-go121, goversion: '1.21' }
+ - { goos: windows, goarch: amd64, goamd64: v3, output: amd64-go121, goversion: '1.21' }
+
+ # Go 1.20 is the last release that will run on any release of Windows 7, 8, Server 2008 and Server 2012. Go 1.21 will require at least Windows 10 or Server 2016.
+ - { goos: windows, goarch: '386', output: '386-go120', goversion: '1.20' }
+ - { goos: windows, goarch: amd64, goamd64: v1, output: amd64-compatible-go120, goversion: '1.20' }
+ - { goos: windows, goarch: amd64, goamd64: v3, output: amd64-go120, goversion: '1.20' }
+
+ # Go 1.22 is the last release that will run on macOS 10.15 Catalina. Go 1.23 will require macOS 11 Big Sur or later.
+ - { goos: darwin, goarch: arm64, output: arm64-go122, goversion: '1.22' }
+ - { goos: darwin, goarch: amd64, goamd64: v1, output: amd64-compatible-go122, goversion: '1.22' }
+ - { goos: darwin, goarch: amd64, goamd64: v3, output: amd64-go122, goversion: '1.22' }
+
+ # Go 1.20 is the last release that will run on macOS 10.13 High Sierra or 10.14 Mojave. Go 1.21 will require macOS 10.15 Catalina or later.
+ - { goos: darwin, goarch: arm64, output: arm64-go120, goversion: '1.20' }
+ - { goos: darwin, goarch: amd64, goamd64: v1, output: amd64-compatible-go120, goversion: '1.20' }
+ - { goos: darwin, goarch: amd64, goamd64: v3, output: amd64-go120, goversion: '1.20' }
+
+ # only for test
+ - { goos: linux, goarch: '386', output: '386-go120', goversion: '1.20' }
+ - { goos: linux, goarch: amd64, goamd64: v1, output: amd64-compatible-go120, goversion: '1.20', test: test }
+ - { goos: linux, goarch: amd64, goamd64: v3, output: amd64-go120, goversion: '1.20' }
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up Go
+ if: ${{ matrix.jobs.goversion == '' && matrix.jobs.goarch != 'loong64' }}
+ uses: actions/setup-go@v5
+ with:
+ go-version: '1.23'
+
+ - name: Set up Go
+ if: ${{ matrix.jobs.goversion != '' && matrix.jobs.goarch != 'loong64' }}
+ uses: actions/setup-go@v5
+ with:
+ go-version: ${{ matrix.jobs.goversion }}
+
+ - name: Set up Go1.22 loongarch abi1
+ if: ${{ matrix.jobs.goarch == 'loong64' && matrix.jobs.abi == '1' }}
+ run: |
+ wget -q https://github.com/MetaCubeX/loongarch64-golang/releases/download/1.22.4/go1.22.4.linux-amd64-abi1.tar.gz
+ sudo tar zxf go1.22.4.linux-amd64-abi1.tar.gz -C /usr/local
+ echo "/usr/local/go/bin" >> $GITHUB_PATH
+
+ - name: Set up Go1.22 loongarch abi2
+ if: ${{ matrix.jobs.goarch == 'loong64' && matrix.jobs.abi == '2' }}
+ run: |
+ wget -q https://github.com/MetaCubeX/loongarch64-golang/releases/download/1.22.4/go1.22.4.linux-amd64-abi2.tar.gz
+ sudo tar zxf go1.22.4.linux-amd64-abi2.tar.gz -C /usr/local
+ echo "/usr/local/go/bin" >> $GITHUB_PATH
+
+ # modify from https://github.com/restic/restic/issues/4636#issuecomment-1896455557
+ # this patch file only works on golang1.23.x
+ # that means after golang1.24 release it must be changed
+ # see: https://github.com/MetaCubeX/go/commits/release-branch.go1.23/
+ # revert:
+ # 693def151adff1af707d82d28f55dba81ceb08e1: "crypto/rand,runtime: switch RtlGenRandom for ProcessPrng"
+ # 7c1157f9544922e96945196b47b95664b1e39108: "net: remove sysSocket fallback for Windows 7"
+ # 48042aa09c2f878c4faa576948b07fe625c4707a: "syscall: remove Windows 7 console handle workaround"
+ # a17d959debdb04cd550016a3501dd09d50cd62e7: "runtime: always use LoadLibraryEx to load system libraries"
+ - name: Revert Golang1.23 commit for Windows7/8
+ if: ${{ matrix.jobs.goos == 'windows' && matrix.jobs.goversion == '' }}
+ run: |
+ cd $(go env GOROOT)
+ curl https://github.com/MetaCubeX/go/commit/9ac42137ef6730e8b7daca016ece831297a1d75b.diff | patch --verbose -p 1
+ curl https://github.com/MetaCubeX/go/commit/21290de8a4c91408de7c2b5b68757b1e90af49dd.diff | patch --verbose -p 1
+ curl https://github.com/MetaCubeX/go/commit/6a31d3fa8e47ddabc10bd97bff10d9a85f4cfb76.diff | patch --verbose -p 1
+ curl https://github.com/MetaCubeX/go/commit/69e2eed6dd0f6d815ebf15797761c13f31213dd6.diff | patch --verbose -p 1
+
+ # modify from https://github.com/restic/restic/issues/4636#issuecomment-1896455557
+ # this patch file only works on golang1.22.x
+ # that means after golang1.23 release it must be changed
+ # see: https://github.com/MetaCubeX/go/commits/release-branch.go1.22/
+ # revert:
+ # 693def151adff1af707d82d28f55dba81ceb08e1: "crypto/rand,runtime: switch RtlGenRandom for ProcessPrng"
+ # 7c1157f9544922e96945196b47b95664b1e39108: "net: remove sysSocket fallback for Windows 7"
+ # 48042aa09c2f878c4faa576948b07fe625c4707a: "syscall: remove Windows 7 console handle workaround"
+ # a17d959debdb04cd550016a3501dd09d50cd62e7: "runtime: always use LoadLibraryEx to load system libraries"
+ - name: Revert Golang1.22 commit for Windows7/8
+ if: ${{ matrix.jobs.goos == 'windows' && matrix.jobs.goversion == '1.22' }}
+ run: |
+ cd $(go env GOROOT)
+ curl https://github.com/MetaCubeX/go/commit/9779155f18b6556a034f7bb79fb7fb2aad1e26a9.diff | patch --verbose -p 1
+ curl https://github.com/MetaCubeX/go/commit/ef0606261340e608017860b423ffae5c1ce78239.diff | patch --verbose -p 1
+ curl https://github.com/MetaCubeX/go/commit/7f83badcb925a7e743188041cb6e561fc9b5b642.diff | patch --verbose -p 1
+ curl https://github.com/MetaCubeX/go/commit/83ff9782e024cb328b690cbf0da4e7848a327f4f.diff | patch --verbose -p 1
+
+ # modify from https://github.com/restic/restic/issues/4636#issuecomment-1896455557
+ - name: Revert Golang1.21 commit for Windows7/8
+ if: ${{ matrix.jobs.goos == 'windows' && matrix.jobs.goversion == '1.21' }}
+ run: |
+ cd $(go env GOROOT)
+ curl https://github.com/golang/go/commit/9e43850a3298a9b8b1162ba0033d4c53f8637571.diff | patch --verbose -R -p 1
+
+ - name: Set variables
+ if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version != '' }}
+ run: echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
+ shell: bash
+
+ - name: Set variables
+ if: ${{ github.event_name != 'workflow_dispatch' && github.ref_name == 'Alpha' }}
+ run: echo "VERSION=alpha-$(git rev-parse --short HEAD)" >> $GITHUB_ENV
+ shell: bash
+
+ - name: Set Time Variable
+ run: |
+ echo "BUILDTIME=$(date)" >> $GITHUB_ENV
+ echo "CGO_ENABLED=0" >> $GITHUB_ENV
+ echo "BUILDTAG=-extldflags --static" >> $GITHUB_ENV
+ echo "GOTOOLCHAIN=local" >> $GITHUB_ENV
+
+ - name: Setup NDK
+ if: ${{ matrix.jobs.goos == 'android' }}
+ uses: nttld/setup-ndk@v1
+ id: setup-ndk
+ with:
+ ndk-version: r27
+
+ - name: Set NDK path
+ if: ${{ matrix.jobs.goos == 'android' }}
+ run: |
+ echo "CC=${{steps.setup-ndk.outputs.ndk-path}}/toolchains/llvm/prebuilt/linux-x86_64/bin/${{matrix.jobs.ndk}}-clang" >> $GITHUB_ENV
+ echo "CGO_ENABLED=1" >> $GITHUB_ENV
+ echo "BUILDTAG=" >> $GITHUB_ENV
+
+ - name: Test
+ if: ${{ matrix.jobs.test == 'test' }}
+ run: |
+ go test ./...
+ echo "---test with_gvisor---"
+ go test ./... -tags "with_gvisor" -count=1
+
+ - name: Update CA
+ run: |
+ sudo apt-get install ca-certificates
+ sudo update-ca-certificates
+ cp -f /etc/ssl/certs/ca-certificates.crt component/ca/ca-certificates.crt
+
+ - name: Build core
+ env:
+ GOOS: ${{matrix.jobs.goos}}
+ GOARCH: ${{matrix.jobs.goarch}}
+ GOAMD64: ${{matrix.jobs.goamd64}}
+ GOARM: ${{matrix.jobs.goarm}}
+ GOMIPS: ${{matrix.jobs.gomips}}
+ run: |
+ go env
+ go build -v -tags "with_gvisor" -trimpath -ldflags "${BUILDTAG} -X 'github.com/metacubex/mihomo/constant.Version=${VERSION}' -X 'github.com/metacubex/mihomo/constant.BuildTime=${BUILDTIME}' -w -s -buildid="
+ if [ "${{matrix.jobs.goos}}" = "windows" ]; then
+ cp mihomo.exe mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}.exe
+ zip -r mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}.zip mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}.exe
+ else
+ cp mihomo mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}
+ gzip -c mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}} > mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}.gz
+ rm mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}
+ fi
+
+ - name: Create DEB package
+ if: ${{ matrix.jobs.goos == 'linux' && !contains(matrix.jobs.goarch, 'mips') }}
+ run: |
+ sudo apt-get install dpkg
+ if [ "${{matrix.jobs.abi}}" = "1" ]; then
+ ARCH=loongarch64
+ elif [ "${{matrix.jobs.goarm}}" = "7" ]; then
+ ARCH=armhf
+ elif [ "${{matrix.jobs.goarch}}" = "arm" ]; then
+ ARCH=armel
+ else
+ ARCH=${{matrix.jobs.goarch}}
+ fi
+ PackageVersion=$(curl -s "https://api.github.com/repos/MetaCubeX/mihomo/releases/latest" | grep -o '"tag_name": "[^"]*' | grep -o '[^"]*$' | sed 's/v//g' )
+ if [ $(git branch | awk -F ' ' '{print $2}') = "Alpha" ]; then
+ PackageVersion="$(echo "${PackageVersion}" | awk -F '.' '{$NF = $NF + 1; print}' OFS='.')-${VERSION}"
+ fi
+
+ mkdir -p mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}/DEBIAN
+ mkdir -p mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}/usr/bin
+ mkdir -p mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}/etc/mihomo
+ mkdir -p mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}/etc/systemd/system/
+ mkdir -p mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}/usr/share/licenses/mihomo
+
+ cp mihomo mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}/usr/bin/mihomo
+ cp LICENSE mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}/usr/share/licenses/mihomo/
+ cp .github/mihomo.service mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}/etc/systemd/system/
+
+ cat > mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}/etc/mihomo/config.yaml < mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}/DEBIAN/control <
+ Homepage: https://wiki.metacubex.one/
+ Description: The universal proxy platform.
+ EOF
+
+ dpkg-deb -Z gzip --build mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}
+
+ - name: Convert DEB to RPM
+ if: ${{ matrix.jobs.goos == 'linux' && !contains(matrix.jobs.goarch, 'mips') }}
+ run: |
+ sudo apt-get install -y alien
+ alien --to-rpm --scripts mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}.deb
+ mv mihomo*.rpm mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}.rpm
+
+ # - name: Convert DEB to PKG
+ # if: ${{ matrix.jobs.goos == 'linux' && !contains(matrix.jobs.goarch, 'mips') && !contains(matrix.jobs.goarch, 'loong64') }}
+ # run: |
+ # docker pull archlinux
+ # docker run --rm -v ./:/mnt archlinux bash -c "
+ # pacman -Syu pkgfile base-devel --noconfirm
+ # curl -L https://github.com/helixarch/debtap/raw/master/debtap > /usr/bin/debtap
+ # chmod 755 /usr/bin/debtap
+ # debtap -u
+ # debtap -Q /mnt/mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}.deb
+ # "
+ # mv mihomo*.pkg.tar.zst mihomo-${{matrix.jobs.goos}}-${{matrix.jobs.output}}-${VERSION}.pkg.tar.zst
+
+ - name: Save version
+ run: |
+ echo ${VERSION} > version.txt
+ shell: bash
+
+ - name: Archive production artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: "${{ matrix.jobs.goos }}-${{ matrix.jobs.output }}"
+ path: |
+ mihomo*.gz
+ mihomo*.deb
+ mihomo*.rpm
+ mihomo*.zip
+ version.txt
+
+ Upload-Prerelease:
+ permissions: write-all
+ if: ${{ github.event_name != 'workflow_dispatch' && github.ref_type == 'branch' && !startsWith(github.event_name, 'pull_request') }}
+ needs: [build]
+ runs-on: ubuntu-latest
+ steps:
+ - name: Download all workflow run artifacts
+ uses: actions/download-artifact@v4
+ with:
+ path: bin/
+ merge-multiple: true
+
+ - name: Delete current release assets
+ uses: 8Mi-Tech/delete-release-assets-action@main
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ tag: Prerelease-${{ github.ref_name }}
+ deleteOnlyFromDrafts: false
+ - name: Set Env
+ run: |
+ echo "BUILDTIME=$(TZ=Asia/Shanghai date)" >> $GITHUB_ENV
+ shell: bash
+
+ - name: Tag Repo
+ uses: richardsimko/update-tag@v1
+ with:
+ tag_name: Prerelease-${{ github.ref_name }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - run: |
+ cat > release.txt << 'EOF'
+ Release created at ${{ env.BUILDTIME }}
+ Synchronize ${{ github.ref_name }} branch code updates, keeping only the latest version
+
+ [我应该下载哪个文件? / Which file should I download?](https://github.com/MetaCubeX/mihomo/wiki/FAQ)
+ [二进制文件筛选 / Binary file selector](https://metacubex.github.io/Meta-Docs/startup/#_1)
+ [查看文档 / Docs](https://metacubex.github.io/Meta-Docs/)
+ EOF
+
+ - name: Upload Prerelease
+ uses: softprops/action-gh-release@v1
+ if: ${{ success() }}
+ with:
+ tag_name: Prerelease-${{ github.ref_name }}
+ files: |
+ bin/*
+ prerelease: true
+ generate_release_notes: true
+ body_path: release.txt
+
+ Upload-Release:
+ permissions: write-all
+ if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version != '' }}
+ needs: [build]
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ ref: Meta
+ fetch-depth: '0'
+ fetch-tags: 'true'
+
+ - name: Get tags
+ run: |
+ echo "CURRENTVERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
+ git fetch --tags
+ echo "PREVERSION=$(git describe --tags --abbrev=0 HEAD)" >> $GITHUB_ENV
+
+ - name: Force push Alpha branch to Meta
+ run: |
+ git config --global user.email "github-actions[bot]@users.noreply.github.com"
+ git config --global user.name "github-actions[bot]"
+ git fetch origin Alpha:Alpha
+ git push origin Alpha:Meta --force
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Tag the commit on Alpha
+ run: |
+ git checkout Alpha
+ git tag ${{ github.event.inputs.version }}
+ git push origin ${{ github.event.inputs.version }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Generate release notes
+ run: |
+ cp ./.github/genReleaseNote.sh ./
+ bash ./genReleaseNote.sh -v ${PREVERSION}...${CURRENTVERSION}
+ rm ./genReleaseNote.sh
+
+ - uses: actions/download-artifact@v4
+ with:
+ path: bin/
+ merge-multiple: true
+
+ - name: Display structure of downloaded files
+ run: ls -R
+ working-directory: bin
+
+ - name: Upload Release
+ uses: softprops/action-gh-release@v2
+ if: ${{ success() }}
+ with:
+ tag_name: ${{ github.event.inputs.version }}
+ files: bin/*
+ body_path: release.md
+
+ Docker:
+ if: ${{ !startsWith(github.event_name, 'pull_request') }}
+ permissions: write-all
+ needs: [build]
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - uses: actions/download-artifact@v4
+ with:
+ path: bin/
+ merge-multiple: true
+
+ - name: Display structure of downloaded files
+ run: ls -R
+ working-directory: bin
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - name: Setup Docker buildx
+ uses: docker/setup-buildx-action@v3
+ with:
+ version: latest
+
+ # Extract metadata (tags, labels) for Docker
+ # https://github.com/docker/metadata-action
+ - name: Extract Docker metadata
+ if: ${{ github.event_name != 'workflow_dispatch' }}
+ id: meta_alpha
+ uses: docker/metadata-action@v5
+ with:
+ images: '${{ env.REGISTRY }}/${{ github.repository }}'
+
+ # Extract metadata (tags, labels) for Docker
+ # https://github.com/docker/metadata-action
+ - name: Extract Docker metadata
+ if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version != '' }}
+ id: meta_release
+ uses: docker/metadata-action@v5
+ with:
+ images: '${{ env.REGISTRY }}/${{ github.repository }}'
+ tags: |
+ ${{ github.event.inputs.version }}
+ flavor: |
+ latest=true
+ labels: org.opencontainers.image.version=${{ github.event.inputs.version }}
+
+ - name: Show files
+ run: |
+ ls .
+ ls bin/
+
+ - name: login to docker REGISTRY
+ uses: docker/login-action@v3
+ with:
+ registry: ${{ env.REGISTRY }}
+ username: ${{ secrets.DOCKER_HUB_USER }}
+ password: ${{ secrets.DOCKER_HUB_TOKEN }}
+
+ # Build and push Docker image with Buildx (don't push on PR)
+ # https://github.com/docker/build-push-action
+ - name: Build and push Docker image
+ if: ${{ github.event_name != 'workflow_dispatch' }}
+ uses: docker/build-push-action@v5
+ with:
+ context: .
+ file: ./Dockerfile
+ push: ${{ github.event_name != 'pull_request' }}
+ platforms: |
+ linux/386
+ linux/amd64
+ linux/arm64
+ linux/arm/v7
+ tags: ${{ steps.meta_alpha.outputs.tags }}
+ labels: ${{ steps.meta_alpha.outputs.labels }}
+
+ - name: Build and push Docker image
+ if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.version != '' }}
+ uses: docker/build-push-action@v5
+ with:
+ context: .
+ file: ./Dockerfile
+ push: ${{ github.event_name != 'pull_request' }}
+ platforms: |
+ linux/386
+ linux/amd64
+ linux/arm64
+ linux/arm/v7
+ tags: ${{ steps.meta_release.outputs.tags }}
+ labels: ${{ steps.meta_release.outputs.labels }}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.github/workflows/trigger-cmfa-update.yml b/Android-kotlin-Code/core/src/foss/golang/clash/.github/workflows/trigger-cmfa-update.yml
new file mode 100644
index 0000000..d9523a0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.github/workflows/trigger-cmfa-update.yml
@@ -0,0 +1,33 @@
+name: Trigger CMFA Update
+on:
+ workflow_dispatch:
+ push:
+ paths-ignore:
+ - "docs/**"
+ - "README.md"
+ - ".github/ISSUE_TEMPLATE/**"
+ branches:
+ - Alpha
+ tags:
+ - "v*"
+ pull_request_target:
+ branches:
+ - Alpha
+
+jobs:
+ # Send "core-updated" to MetaCubeX/ClashMetaForAndroid to trigger update-dependencies
+ trigger-CMFA-update:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: tibdex/github-app-token@v1
+ id: generate-token
+ with:
+ app_id: ${{ secrets.MAINTAINER_APPID }}
+ private_key: ${{ secrets.MAINTAINER_APP_PRIVATE_KEY }}
+
+ - name: Trigger update-dependencies
+ run: |
+ curl -X POST https://api.github.com/repos/MetaCubeX/ClashMetaForAndroid/dispatches \
+ -H "Accept: application/vnd.github.everest-preview+json" \
+ -H "Authorization: token ${{ steps.generate-token.outputs.token }}" \
+ -d '{"event_type": "core-updated"}'
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.gitignore b/Android-kotlin-Code/core/src/foss/golang/clash/.gitignore
new file mode 100644
index 0000000..d880126
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.gitignore
@@ -0,0 +1,28 @@
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.so
+*.dylib
+bin/*
+
+# Test binary, build with `go test -c`
+*.test
+
+# Output of the go coverage tool, specifically when used with LiteIDE
+*.out
+
+# go mod vendor
+vendor
+
+# GoLand
+.idea/*
+
+# macOS file
+.DS_Store
+
+# test suite
+test/config/cache*
+/output
+.vscode/
+.fleet/
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/.golangci.yaml b/Android-kotlin-Code/core/src/foss/golang/clash/.golangci.yaml
new file mode 100644
index 0000000..1de71ad
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/.golangci.yaml
@@ -0,0 +1,17 @@
+linters:
+ disable-all: true
+ enable:
+ - gofumpt
+ - staticcheck
+ - govet
+ - gci
+
+linters-settings:
+ gci:
+ custom-order: true
+ sections:
+ - standard
+ - prefix(github.com/metacubex/mihomo)
+ - default
+ staticcheck:
+ go: '1.19'
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/Dockerfile b/Android-kotlin-Code/core/src/foss/golang/clash/Dockerfile
new file mode 100644
index 0000000..67d4a6e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/Dockerfile
@@ -0,0 +1,26 @@
+FROM alpine:latest as builder
+ARG TARGETPLATFORM
+RUN echo "I'm building for $TARGETPLATFORM"
+
+RUN apk add --no-cache gzip && \
+ mkdir /mihomo-config && \
+ wget -O /mihomo-config/geoip.metadb https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.metadb && \
+ wget -O /mihomo-config/geosite.dat https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat && \
+ wget -O /mihomo-config/geoip.dat https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat
+
+COPY docker/file-name.sh /mihomo/file-name.sh
+WORKDIR /mihomo
+COPY bin/ bin/
+RUN FILE_NAME=`sh file-name.sh` && echo $FILE_NAME && \
+ FILE_NAME=`ls bin/ | egrep "$FILE_NAME.gz"|awk NR==1` && echo $FILE_NAME && \
+ mv bin/$FILE_NAME mihomo.gz && gzip -d mihomo.gz && chmod +x mihomo && echo "$FILE_NAME" > /mihomo-config/test
+FROM alpine:latest
+LABEL org.opencontainers.image.source="https://github.com/MetaCubeX/mihomo"
+
+RUN apk add --no-cache ca-certificates tzdata iptables
+
+VOLUME ["/root/.config/mihomo/"]
+
+COPY --from=builder /mihomo-config/ /root/.config/mihomo/
+COPY --from=builder /mihomo/mihomo /mihomo
+ENTRYPOINT [ "/mihomo" ]
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/LICENSE b/Android-kotlin-Code/core/src/foss/golang/clash/LICENSE
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/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
+.
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/Makefile b/Android-kotlin-Code/core/src/foss/golang/clash/Makefile
new file mode 100644
index 0000000..36c640d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/Makefile
@@ -0,0 +1,165 @@
+NAME=mihomo
+BINDIR=bin
+BRANCH=$(shell git branch --show-current)
+ifeq ($(BRANCH),Alpha)
+VERSION=alpha-$(shell git rev-parse --short HEAD)
+else ifeq ($(BRANCH),Beta)
+VERSION=beta-$(shell git rev-parse --short HEAD)
+else ifeq ($(BRANCH),)
+VERSION=$(shell git describe --tags)
+else
+VERSION=$(shell git rev-parse --short HEAD)
+endif
+
+BUILDTIME=$(shell date -u)
+GOBUILD=CGO_ENABLED=0 go build -tags with_gvisor -trimpath -ldflags '-X "github.com/metacubex/mihomo/constant.Version=$(VERSION)" \
+ -X "github.com/metacubex/mihomo/constant.BuildTime=$(BUILDTIME)" \
+ -w -s -buildid='
+
+PLATFORM_LIST = \
+ darwin-amd64-compatible \
+ darwin-amd64 \
+ darwin-arm64 \
+ linux-amd64-compatible \
+ linux-amd64 \
+ linux-armv5 \
+ linux-armv6 \
+ linux-armv7 \
+ linux-arm64 \
+ linux-mips64 \
+ linux-mips64le \
+ linux-mips-softfloat \
+ linux-mips-hardfloat \
+ linux-mipsle-softfloat \
+ linux-mipsle-hardfloat \
+ linux-riscv64 \
+ linux-loong64 \
+ android-arm64 \
+ freebsd-386 \
+ freebsd-amd64 \
+ freebsd-arm64
+
+WINDOWS_ARCH_LIST = \
+ windows-386 \
+ windows-amd64-compatible \
+ windows-amd64 \
+ windows-arm64 \
+ windows-arm32v7
+
+all:linux-amd64 linux-arm64\
+ darwin-amd64 darwin-arm64\
+ windows-amd64 windows-arm64\
+
+
+darwin-all: darwin-amd64 darwin-arm64
+
+docker:
+ GOAMD64=v1 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+darwin-amd64:
+ GOARCH=amd64 GOOS=darwin GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+darwin-amd64-compatible:
+ GOARCH=amd64 GOOS=darwin GOAMD64=v1 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+darwin-arm64:
+ GOARCH=arm64 GOOS=darwin $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-386:
+ GOARCH=386 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-amd64:
+ GOARCH=amd64 GOOS=linux GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-amd64-compatible:
+ GOARCH=amd64 GOOS=linux GOAMD64=v1 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-arm64:
+ GOARCH=arm64 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-armv5:
+ GOARCH=arm GOOS=linux GOARM=5 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-armv6:
+ GOARCH=arm GOOS=linux GOARM=6 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-armv7:
+ GOARCH=arm GOOS=linux GOARM=7 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-mips-softfloat:
+ GOARCH=mips GOMIPS=softfloat GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-mips-hardfloat:
+ GOARCH=mips GOMIPS=hardfloat GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-mipsle-softfloat:
+ GOARCH=mipsle GOMIPS=softfloat GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-mipsle-hardfloat:
+ GOARCH=mipsle GOMIPS=hardfloat GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-mips64:
+ GOARCH=mips64 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-mips64le:
+ GOARCH=mips64le GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-riscv64:
+ GOARCH=riscv64 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+linux-loong64:
+ GOARCH=loong64 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+android-arm64:
+ GOARCH=arm64 GOOS=android $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+freebsd-386:
+ GOARCH=386 GOOS=freebsd $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+freebsd-amd64:
+ GOARCH=amd64 GOOS=freebsd GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+freebsd-arm64:
+ GOARCH=arm64 GOOS=freebsd $(GOBUILD) -o $(BINDIR)/$(NAME)-$@
+
+windows-386:
+ GOARCH=386 GOOS=windows $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe
+
+windows-amd64:
+ GOARCH=amd64 GOOS=windows GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe
+
+windows-amd64-compatible:
+ GOARCH=amd64 GOOS=windows GOAMD64=v1 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe
+
+windows-arm64:
+ GOARCH=arm64 GOOS=windows $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe
+
+windows-arm32v7:
+ GOARCH=arm GOOS=windows GOARM=7 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe
+
+gz_releases=$(addsuffix .gz, $(PLATFORM_LIST))
+zip_releases=$(addsuffix .zip, $(WINDOWS_ARCH_LIST))
+
+$(gz_releases): %.gz : %
+ chmod +x $(BINDIR)/$(NAME)-$(basename $@)
+ gzip -f -S -$(VERSION).gz $(BINDIR)/$(NAME)-$(basename $@)
+
+$(zip_releases): %.zip : %
+ zip -m -j $(BINDIR)/$(NAME)-$(basename $@)-$(VERSION).zip $(BINDIR)/$(NAME)-$(basename $@).exe
+
+all-arch: $(PLATFORM_LIST) $(WINDOWS_ARCH_LIST)
+
+releases: $(gz_releases) $(zip_releases)
+
+vet:
+ go test ./...
+
+lint:
+ golangci-lint run ./...
+
+clean:
+ rm $(BINDIR)/*
+
+CLANG ?= clang-14
+CFLAGS := -O2 -g -Wall -Werror $(CFLAGS)
+
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/Meta.png b/Android-kotlin-Code/core/src/foss/golang/clash/Meta.png
new file mode 100644
index 0000000..1f6323d
Binary files /dev/null and b/Android-kotlin-Code/core/src/foss/golang/clash/Meta.png differ
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/README.md b/Android-kotlin-Code/core/src/foss/golang/clash/README.md
new file mode 100644
index 0000000..d38fbed
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/README.md
@@ -0,0 +1,100 @@
+
+
+
Meta Kernel
+
+
+Another Mihomo Kernel.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Features
+
+- Local HTTP/HTTPS/SOCKS server with authentication support
+- VMess, VLESS, Shadowsocks, Trojan, Snell, TUIC, Hysteria protocol support
+- Built-in DNS server that aims to minimize DNS pollution attack impact, supports DoH/DoT upstream and fake IP.
+- Rules based off domains, GEOIP, IPCIDR or Process to forward packets to different nodes
+- Remote groups allow users to implement powerful rules. Supports automatic fallback, load balancing or auto select node
+ based off latency
+- Remote providers, allowing users to get node lists remotely instead of hard-coding in config
+- Netfilter TCP redirecting. Deploy Mihomo on your Internet gateway with `iptables`.
+- Comprehensive HTTP RESTful API controller
+
+## Dashboard
+
+A web dashboard with first-class support for this project has been created; it can be checked out at [metacubexd](https://github.com/MetaCubeX/metacubexd).
+
+## Configration example
+
+Configuration example is located at [/docs/config.yaml](https://github.com/MetaCubeX/mihomo/blob/Alpha/docs/config.yaml).
+
+## Docs
+
+Documentation can be found in [mihomo Docs](https://wiki.metacubex.one/).
+
+## For development
+
+Requirements:
+[Go 1.20 or newer](https://go.dev/dl/)
+
+Build mihomo:
+
+```shell
+git clone https://github.com/MetaCubeX/mihomo.git
+cd mihomo && go mod download
+go build
+```
+
+Set go proxy if a connection to GitHub is not possible:
+
+```shell
+go env -w GOPROXY=https://goproxy.io,direct
+```
+
+Build with gvisor tun stack:
+
+```shell
+go build -tags with_gvisor
+```
+
+### IPTABLES configuration
+
+Work on Linux OS which supported `iptables`
+
+```yaml
+# Enable the TPROXY listener
+tproxy-port: 9898
+
+iptables:
+ enable: true # default is false
+ inbound-interface: eth0 # detect the inbound interface, default is 'lo'
+```
+
+## Debugging
+
+Check [wiki](https://wiki.metacubex.one/api/#debug) to get an instruction on using debug
+API.
+
+## Credits
+
+- [Dreamacro/clash](https://github.com/Dreamacro/clash)
+- [SagerNet/sing-box](https://github.com/SagerNet/sing-box)
+- [riobard/go-shadowsocks2](https://github.com/riobard/go-shadowsocks2)
+- [v2ray/v2ray-core](https://github.com/v2ray/v2ray-core)
+- [WireGuard/wireguard-go](https://github.com/WireGuard/wireguard-go)
+- [yaling888/clash-plus-pro](https://github.com/yaling888/clash)
+
+## License
+
+This software is released under the GPL-3.0 license.
+
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/adapter.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/adapter.go
new file mode 100644
index 0000000..6de7fb9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/adapter.go
@@ -0,0 +1,321 @@
+package adapter
+
+import (
+ "context"
+ "crypto/tls"
+ "encoding/json"
+ "fmt"
+ "net"
+ "net/http"
+ "net/netip"
+ "net/url"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ "github.com/metacubex/mihomo/common/queue"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ "github.com/puzpuzpuz/xsync/v3"
+)
+
+var UnifiedDelay = atomic.NewBool(false)
+
+const (
+ defaultHistoriesNum = 10
+)
+
+type internalProxyState struct {
+ alive atomic.Bool
+ history *queue.Queue[C.DelayHistory]
+}
+
+type Proxy struct {
+ C.ProxyAdapter
+ alive atomic.Bool
+ history *queue.Queue[C.DelayHistory]
+ extra *xsync.MapOf[string, *internalProxyState]
+}
+
+// Adapter implements C.Proxy
+func (p *Proxy) Adapter() C.ProxyAdapter {
+ return p.ProxyAdapter
+}
+
+// AliveForTestUrl implements C.Proxy
+func (p *Proxy) AliveForTestUrl(url string) bool {
+ if state, ok := p.extra.Load(url); ok {
+ return state.alive.Load()
+ }
+
+ return p.alive.Load()
+}
+
+// Dial implements C.Proxy
+func (p *Proxy) Dial(metadata *C.Metadata) (C.Conn, error) {
+ ctx, cancel := context.WithTimeout(context.Background(), C.DefaultTCPTimeout)
+ defer cancel()
+ return p.DialContext(ctx, metadata)
+}
+
+// DialContext implements C.ProxyAdapter
+func (p *Proxy) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ conn, err := p.ProxyAdapter.DialContext(ctx, metadata, opts...)
+ return conn, err
+}
+
+// DialUDP implements C.ProxyAdapter
+func (p *Proxy) DialUDP(metadata *C.Metadata) (C.PacketConn, error) {
+ ctx, cancel := context.WithTimeout(context.Background(), C.DefaultUDPTimeout)
+ defer cancel()
+ return p.ListenPacketContext(ctx, metadata)
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (p *Proxy) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ pc, err := p.ProxyAdapter.ListenPacketContext(ctx, metadata, opts...)
+ return pc, err
+}
+
+// DelayHistory implements C.Proxy
+func (p *Proxy) DelayHistory() []C.DelayHistory {
+ queueM := p.history.Copy()
+ histories := []C.DelayHistory{}
+ for _, item := range queueM {
+ histories = append(histories, item)
+ }
+ return histories
+}
+
+// DelayHistoryForTestUrl implements C.Proxy
+func (p *Proxy) DelayHistoryForTestUrl(url string) []C.DelayHistory {
+ var queueM []C.DelayHistory
+
+ if state, ok := p.extra.Load(url); ok {
+ queueM = state.history.Copy()
+ }
+ histories := []C.DelayHistory{}
+ for _, item := range queueM {
+ histories = append(histories, item)
+ }
+ return histories
+}
+
+// ExtraDelayHistories return all delay histories for each test URL
+// implements C.Proxy
+func (p *Proxy) ExtraDelayHistories() map[string]C.ProxyState {
+ histories := map[string]C.ProxyState{}
+
+ p.extra.Range(func(k string, v *internalProxyState) bool {
+ testUrl := k
+ state := v
+
+ queueM := state.history.Copy()
+ var history []C.DelayHistory
+
+ for _, item := range queueM {
+ history = append(history, item)
+ }
+
+ histories[testUrl] = C.ProxyState{
+ Alive: state.alive.Load(),
+ History: history,
+ }
+ return true
+ })
+ return histories
+}
+
+// LastDelayForTestUrl return last history record of the specified URL. if proxy is not alive, return the max value of uint16.
+// implements C.Proxy
+func (p *Proxy) LastDelayForTestUrl(url string) (delay uint16) {
+ var maxDelay uint16 = 0xffff
+
+ alive := false
+ var history C.DelayHistory
+
+ if state, ok := p.extra.Load(url); ok {
+ alive = state.alive.Load()
+ history = state.history.Last()
+ }
+
+ if !alive || history.Delay == 0 {
+ return maxDelay
+ }
+ return history.Delay
+}
+
+// MarshalJSON implements C.ProxyAdapter
+func (p *Proxy) MarshalJSON() ([]byte, error) {
+ inner, err := p.ProxyAdapter.MarshalJSON()
+ if err != nil {
+ return inner, err
+ }
+
+ mapping := map[string]any{}
+ _ = json.Unmarshal(inner, &mapping)
+ mapping["history"] = p.DelayHistory()
+ mapping["extra"] = p.ExtraDelayHistories()
+ mapping["alive"] = p.alive.Load()
+ mapping["name"] = p.Name()
+ mapping["udp"] = p.SupportUDP()
+ mapping["xudp"] = p.SupportXUDP()
+ mapping["tfo"] = p.SupportTFO()
+ return json.Marshal(mapping)
+}
+
+// URLTest get the delay for the specified URL
+// implements C.Proxy
+func (p *Proxy) URLTest(ctx context.Context, url string, expectedStatus utils.IntRanges[uint16]) (t uint16, err error) {
+ var satisfied bool
+
+ defer func() {
+ alive := err == nil
+ record := C.DelayHistory{Time: time.Now()}
+ if alive {
+ record.Delay = t
+ }
+
+ p.alive.Store(alive)
+ p.history.Put(record)
+ if p.history.Len() > defaultHistoriesNum {
+ p.history.Pop()
+ }
+
+ state, ok := p.extra.Load(url)
+ if !ok {
+ state = &internalProxyState{
+ history: queue.New[C.DelayHistory](defaultHistoriesNum),
+ alive: atomic.NewBool(true),
+ }
+ p.extra.Store(url, state)
+ }
+
+ if !satisfied {
+ record.Delay = 0
+ alive = false
+ }
+
+ state.alive.Store(alive)
+ state.history.Put(record)
+ if state.history.Len() > defaultHistoriesNum {
+ state.history.Pop()
+ }
+
+ }()
+
+ unifiedDelay := UnifiedDelay.Load()
+
+ addr, err := urlToMetadata(url)
+ if err != nil {
+ return
+ }
+
+ start := time.Now()
+ instance, err := p.DialContext(ctx, &addr)
+ if err != nil {
+ return
+ }
+ defer func() {
+ _ = instance.Close()
+ }()
+
+ req, err := http.NewRequest(http.MethodHead, url, nil)
+ if err != nil {
+ return
+ }
+ req = req.WithContext(ctx)
+
+ transport := &http.Transport{
+ DialContext: func(context.Context, string, string) (net.Conn, error) {
+ return instance, nil
+ },
+ // from http.DefaultTransport
+ MaxIdleConns: 100,
+ IdleConnTimeout: 90 * time.Second,
+ TLSHandshakeTimeout: 10 * time.Second,
+ ExpectContinueTimeout: 1 * time.Second,
+ TLSClientConfig: ca.GetGlobalTLSConfig(&tls.Config{}),
+ }
+
+ client := http.Client{
+ Timeout: 30 * time.Second,
+ Transport: transport,
+ CheckRedirect: func(req *http.Request, via []*http.Request) error {
+ return http.ErrUseLastResponse
+ },
+ }
+
+ defer client.CloseIdleConnections()
+
+ resp, err := client.Do(req)
+
+ if err != nil {
+ return
+ }
+
+ _ = resp.Body.Close()
+
+ if unifiedDelay {
+ second := time.Now()
+ var ignoredErr error
+ var secondResp *http.Response
+ secondResp, ignoredErr = client.Do(req)
+ if ignoredErr == nil {
+ resp = secondResp
+ _ = resp.Body.Close()
+ start = second
+ } else {
+ if strings.HasPrefix(url, "http://") {
+ log.Errorln("%s failed to get the second response from %s: %v", p.Name(), url, ignoredErr)
+ log.Warnln("It is recommended to use HTTPS for provider.health-check.url and group.url to ensure better reliability. Due to some proxy providers hijacking test addresses and not being compatible with repeated HEAD requests, using HTTP may result in failed tests.")
+ }
+ }
+ }
+
+ satisfied = resp != nil && (expectedStatus == nil || expectedStatus.Check(uint16(resp.StatusCode)))
+ t = uint16(time.Since(start) / time.Millisecond)
+ return
+}
+func NewProxy(adapter C.ProxyAdapter) *Proxy {
+ return &Proxy{
+ ProxyAdapter: adapter,
+ history: queue.New[C.DelayHistory](defaultHistoriesNum),
+ alive: atomic.NewBool(true),
+ extra: xsync.NewMapOf[string, *internalProxyState]()}
+}
+
+func urlToMetadata(rawURL string) (addr C.Metadata, err error) {
+ u, err := url.Parse(rawURL)
+ if err != nil {
+ return
+ }
+
+ port := u.Port()
+ if port == "" {
+ switch u.Scheme {
+ case "https":
+ port = "443"
+ case "http":
+ port = "80"
+ default:
+ err = fmt.Errorf("%s scheme not Support", rawURL)
+ return
+ }
+ }
+ uintPort, err := strconv.ParseUint(port, 10, 16)
+ if err != nil {
+ return
+ }
+
+ addr = C.Metadata{
+ Host: u.Hostname(),
+ DstIP: netip.Addr{},
+ DstPort: uint16(uintPort),
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/addition.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/addition.go
new file mode 100644
index 0000000..894910a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/addition.go
@@ -0,0 +1,73 @@
+package inbound
+
+import (
+ "net"
+
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type Addition func(metadata *C.Metadata)
+
+func ApplyAdditions(metadata *C.Metadata, additions ...Addition) {
+ for _, addition := range additions {
+ addition(metadata)
+ }
+}
+
+func WithInName(name string) Addition {
+ return func(metadata *C.Metadata) {
+ metadata.InName = name
+ }
+}
+
+func WithInUser(user string) Addition {
+ return func(metadata *C.Metadata) {
+ metadata.InUser = user
+ }
+}
+
+func WithSpecialRules(specialRules string) Addition {
+ return func(metadata *C.Metadata) {
+ metadata.SpecialRules = specialRules
+ }
+}
+
+func WithSpecialProxy(specialProxy string) Addition {
+ return func(metadata *C.Metadata) {
+ metadata.SpecialProxy = specialProxy
+ }
+}
+
+func WithDstAddr(addr net.Addr) Addition {
+ return func(metadata *C.Metadata) {
+ _ = metadata.SetRemoteAddr(addr)
+ }
+}
+
+func WithSrcAddr(addr net.Addr) Addition {
+ return func(metadata *C.Metadata) {
+ m := C.Metadata{}
+ if err := m.SetRemoteAddr(addr); err == nil {
+ metadata.SrcIP = m.DstIP
+ metadata.SrcPort = m.DstPort
+ }
+ }
+}
+
+func WithInAddr(addr net.Addr) Addition {
+ return func(metadata *C.Metadata) {
+ m := C.Metadata{}
+ if err := m.SetRemoteAddr(addr); err == nil {
+ metadata.InIP = m.DstIP
+ metadata.InPort = m.DstPort
+ }
+ }
+}
+
+func WithDSCP(dscp uint8) Addition {
+ return func(metadata *C.Metadata) {
+ metadata.DSCP = dscp
+ }
+}
+
+func Placeholder(metadata *C.Metadata) {}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/auth.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/auth.go
new file mode 100644
index 0000000..984c9bd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/auth.go
@@ -0,0 +1,45 @@
+package inbound
+
+import (
+ "net"
+ "net/netip"
+
+ C "github.com/metacubex/mihomo/constant"
+)
+
+var skipAuthPrefixes []netip.Prefix
+
+func SetSkipAuthPrefixes(prefixes []netip.Prefix) {
+ skipAuthPrefixes = prefixes
+}
+
+func SkipAuthPrefixes() []netip.Prefix {
+ return skipAuthPrefixes
+}
+
+func SkipAuthRemoteAddr(addr net.Addr) bool {
+ m := C.Metadata{}
+ if err := m.SetRemoteAddr(addr); err != nil {
+ return false
+ }
+ return skipAuth(m.AddrPort().Addr())
+}
+
+func SkipAuthRemoteAddress(addr string) bool {
+ m := C.Metadata{}
+ if err := m.SetRemoteAddress(addr); err != nil {
+ return false
+ }
+ return skipAuth(m.AddrPort().Addr())
+}
+
+func skipAuth(addr netip.Addr) bool {
+ if addr.IsValid() {
+ for _, prefix := range skipAuthPrefixes {
+ if prefix.Contains(addr.Unmap()) {
+ return true
+ }
+ }
+ }
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/http.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/http.go
new file mode 100644
index 0000000..f7d4539
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/http.go
@@ -0,0 +1,20 @@
+package inbound
+
+import (
+ "net"
+
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+// NewHTTP receive normal http request and return HTTPContext
+func NewHTTP(target socks5.Addr, srcConn net.Conn, conn net.Conn, additions ...Addition) (net.Conn, *C.Metadata) {
+ metadata := parseSocksAddr(target)
+ metadata.NetWork = C.TCP
+ metadata.Type = C.HTTP
+ metadata.RawSrcAddr = srcConn.RemoteAddr()
+ metadata.RawDstAddr = srcConn.LocalAddr()
+ ApplyAdditions(metadata, WithSrcAddr(srcConn.RemoteAddr()), WithInAddr(srcConn.LocalAddr()))
+ ApplyAdditions(metadata, additions...)
+ return conn, metadata
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/https.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/https.go
new file mode 100644
index 0000000..24b3080
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/https.go
@@ -0,0 +1,19 @@
+package inbound
+
+import (
+ "net"
+ "net/http"
+
+ C "github.com/metacubex/mihomo/constant"
+)
+
+// NewHTTPS receive CONNECT request and return ConnContext
+func NewHTTPS(request *http.Request, conn net.Conn, additions ...Addition) (net.Conn, *C.Metadata) {
+ metadata := parseHTTPAddr(request)
+ metadata.Type = C.HTTPS
+ metadata.RawSrcAddr = conn.RemoteAddr()
+ metadata.RawDstAddr = conn.LocalAddr()
+ ApplyAdditions(metadata, WithSrcAddr(conn.RemoteAddr()), WithInAddr(conn.LocalAddr()))
+ ApplyAdditions(metadata, additions...)
+ return conn, metadata
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/ipfilter.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/ipfilter.go
new file mode 100644
index 0000000..7fa218c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/ipfilter.go
@@ -0,0 +1,57 @@
+package inbound
+
+import (
+ "net"
+ "net/netip"
+
+ C "github.com/metacubex/mihomo/constant"
+)
+
+var lanAllowedIPs []netip.Prefix
+var lanDisAllowedIPs []netip.Prefix
+
+func SetAllowedIPs(prefixes []netip.Prefix) {
+ lanAllowedIPs = prefixes
+}
+
+func SetDisAllowedIPs(prefixes []netip.Prefix) {
+ lanDisAllowedIPs = prefixes
+}
+
+func AllowedIPs() []netip.Prefix {
+ return lanAllowedIPs
+}
+
+func DisAllowedIPs() []netip.Prefix {
+ return lanDisAllowedIPs
+}
+
+func IsRemoteAddrDisAllowed(addr net.Addr) bool {
+ m := C.Metadata{}
+ if err := m.SetRemoteAddr(addr); err != nil {
+ return false
+ }
+ return isAllowed(m.AddrPort().Addr().Unmap()) && !isDisAllowed(m.AddrPort().Addr().Unmap())
+}
+
+func isAllowed(addr netip.Addr) bool {
+ if addr.IsValid() {
+ for _, prefix := range lanAllowedIPs {
+ if prefix.Contains(addr) {
+ return true
+ }
+ }
+ }
+ return false
+}
+
+func isDisAllowed(addr netip.Addr) bool {
+ if addr.IsValid() {
+ for _, prefix := range lanDisAllowedIPs {
+ if prefix.Contains(addr) {
+ return true
+ }
+ }
+ }
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/listen.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/listen.go
new file mode 100644
index 0000000..318c967
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/listen.go
@@ -0,0 +1,60 @@
+package inbound
+
+import (
+ "context"
+ "net"
+ "sync"
+
+ "github.com/metacubex/mihomo/component/keepalive"
+
+ "github.com/metacubex/tfo-go"
+)
+
+var (
+ lc = tfo.ListenConfig{
+ DisableTFO: true,
+ }
+ mutex sync.RWMutex
+)
+
+func SetTfo(open bool) {
+ mutex.Lock()
+ defer mutex.Unlock()
+ lc.DisableTFO = !open
+}
+
+func Tfo() bool {
+ mutex.RLock()
+ defer mutex.RUnlock()
+ return !lc.DisableTFO
+}
+
+func SetMPTCP(open bool) {
+ mutex.Lock()
+ defer mutex.Unlock()
+ setMultiPathTCP(&lc.ListenConfig, open)
+}
+
+func MPTCP() bool {
+ mutex.RLock()
+ defer mutex.RUnlock()
+ return getMultiPathTCP(&lc.ListenConfig)
+}
+
+func ListenContext(ctx context.Context, network, address string) (net.Listener, error) {
+ mutex.RLock()
+ defer mutex.RUnlock()
+ return lc.Listen(ctx, network, address)
+}
+
+func Listen(network, address string) (net.Listener, error) {
+ return ListenContext(context.Background(), network, address)
+}
+
+func init() {
+ keepalive.SetDisableKeepAliveCallback.Register(func(b bool) {
+ mutex.Lock()
+ defer mutex.Unlock()
+ keepalive.SetNetListenConfig(&lc.ListenConfig)
+ })
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/listen_notwindows.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/listen_notwindows.go
new file mode 100644
index 0000000..8fdfb7b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/listen_notwindows.go
@@ -0,0 +1,14 @@
+//go:build !windows
+
+package inbound
+
+import (
+ "net"
+ "os"
+)
+
+const SupportNamedPipe = false
+
+func ListenNamedPipe(path string) (net.Listener, error) {
+ return nil, os.ErrInvalid
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/listen_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/listen_windows.go
new file mode 100644
index 0000000..d19239d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/listen_windows.go
@@ -0,0 +1,32 @@
+package inbound
+
+import (
+ "net"
+ "os"
+
+ "github.com/metacubex/wireguard-go/ipc/namedpipe"
+ "golang.org/x/sys/windows"
+)
+
+const SupportNamedPipe = true
+
+// windowsSDDL is the Security Descriptor set on the namedpipe.
+// It provides read/write access to all users and the local system.
+const windowsSDDL = "D:PAI(A;OICI;GWGR;;;BU)(A;OICI;GWGR;;;SY)"
+
+func ListenNamedPipe(path string) (net.Listener, error) {
+ sddl := os.Getenv("LISTEN_NAMEDPIPE_SDDL")
+ if sddl == "" {
+ sddl = windowsSDDL
+ }
+ securityDescriptor, err := windows.SecurityDescriptorFromString(sddl)
+ if err != nil {
+ return nil, err
+ }
+ namedpipeLC := namedpipe.ListenConfig{
+ SecurityDescriptor: securityDescriptor,
+ InputBufferSize: 256 * 1024,
+ OutputBufferSize: 256 * 1024,
+ }
+ return namedpipeLC.Listen(path)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/mptcp_go120.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/mptcp_go120.go
new file mode 100644
index 0000000..faae6ec
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/mptcp_go120.go
@@ -0,0 +1,14 @@
+//go:build !go1.21
+
+package inbound
+
+import "net"
+
+const multipathTCPAvailable = false
+
+func setMultiPathTCP(listenConfig *net.ListenConfig, open bool) {
+}
+
+func getMultiPathTCP(listenConfig *net.ListenConfig) bool {
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/mptcp_go121.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/mptcp_go121.go
new file mode 100644
index 0000000..9163878
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/mptcp_go121.go
@@ -0,0 +1,15 @@
+//go:build go1.21
+
+package inbound
+
+import "net"
+
+const multipathTCPAvailable = true
+
+func setMultiPathTCP(listenConfig *net.ListenConfig, open bool) {
+ listenConfig.SetMultipathTCP(open)
+}
+
+func getMultiPathTCP(listenConfig *net.ListenConfig) bool {
+ return listenConfig.MultipathTCP()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/packet.go
new file mode 100644
index 0000000..a10d402
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/packet.go
@@ -0,0 +1,22 @@
+package inbound
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+// NewPacket is PacketAdapter generator
+func NewPacket(target socks5.Addr, packet C.UDPPacket, source C.Type, additions ...Addition) (C.UDPPacket, *C.Metadata) {
+ metadata := parseSocksAddr(target)
+ metadata.NetWork = C.UDP
+ metadata.Type = source
+ metadata.RawSrcAddr = packet.LocalAddr()
+ metadata.RawDstAddr = metadata.UDPAddr()
+ ApplyAdditions(metadata, WithSrcAddr(packet.LocalAddr()))
+ if p, ok := packet.(C.UDPPacketInAddr); ok {
+ ApplyAdditions(metadata, WithInAddr(p.InAddr()))
+ }
+ ApplyAdditions(metadata, additions...)
+
+ return packet, metadata
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/socket.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/socket.go
new file mode 100644
index 0000000..8cd301f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/socket.go
@@ -0,0 +1,18 @@
+package inbound
+
+import (
+ "net"
+
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+// NewSocket receive TCP inbound and return ConnContext
+func NewSocket(target socks5.Addr, conn net.Conn, source C.Type, additions ...Addition) (net.Conn, *C.Metadata) {
+ metadata := parseSocksAddr(target)
+ metadata.NetWork = C.TCP
+ metadata.Type = source
+ ApplyAdditions(metadata, WithSrcAddr(conn.RemoteAddr()), WithInAddr(conn.LocalAddr()))
+ ApplyAdditions(metadata, additions...)
+ return conn, metadata
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/util.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/util.go
new file mode 100644
index 0000000..743337f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/inbound/util.go
@@ -0,0 +1,63 @@
+package inbound
+
+import (
+ "net"
+ "net/http"
+ "net/netip"
+ "strconv"
+ "strings"
+
+ "github.com/metacubex/mihomo/common/nnip"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+func parseSocksAddr(target socks5.Addr) *C.Metadata {
+ metadata := &C.Metadata{}
+
+ switch target[0] {
+ case socks5.AtypDomainName:
+ // trim for FQDN
+ metadata.Host = strings.TrimRight(string(target[2:2+target[1]]), ".")
+ metadata.DstPort = uint16((int(target[2+target[1]]) << 8) | int(target[2+target[1]+1]))
+ case socks5.AtypIPv4:
+ metadata.DstIP = nnip.IpToAddr(net.IP(target[1 : 1+net.IPv4len]))
+ metadata.DstPort = uint16((int(target[1+net.IPv4len]) << 8) | int(target[1+net.IPv4len+1]))
+ case socks5.AtypIPv6:
+ ip6, _ := netip.AddrFromSlice(target[1 : 1+net.IPv6len])
+ metadata.DstIP = ip6.Unmap()
+ metadata.DstPort = uint16((int(target[1+net.IPv6len]) << 8) | int(target[1+net.IPv6len+1]))
+ }
+
+ return metadata
+}
+
+func parseHTTPAddr(request *http.Request) *C.Metadata {
+ host := request.URL.Hostname()
+ port := request.URL.Port()
+ if port == "" {
+ port = "80"
+ }
+
+ // trim FQDN (#737)
+ host = strings.TrimRight(host, ".")
+
+ var uint16Port uint16
+ if port, err := strconv.ParseUint(port, 10, 16); err == nil {
+ uint16Port = uint16(port)
+ }
+
+ metadata := &C.Metadata{
+ NetWork: C.TCP,
+ Host: host,
+ DstIP: netip.Addr{},
+ DstPort: uint16Port,
+ }
+
+ ip, err := netip.ParseAddr(host)
+ if err == nil {
+ metadata.DstIP = ip
+ }
+
+ return metadata
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/base.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/base.go
new file mode 100644
index 0000000..ae8c465
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/base.go
@@ -0,0 +1,287 @@
+package outbound
+
+import (
+ "context"
+ "encoding/json"
+ "net"
+ "strings"
+ "syscall"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/dialer"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type Base struct {
+ name string
+ addr string
+ iface string
+ tp C.AdapterType
+ udp bool
+ xudp bool
+ tfo bool
+ mpTcp bool
+ rmark int
+ id string
+ prefer C.DNSPrefer
+}
+
+// Name implements C.ProxyAdapter
+func (b *Base) Name() string {
+ return b.name
+}
+
+// Id implements C.ProxyAdapter
+func (b *Base) Id() string {
+ if b.id == "" {
+ b.id = utils.NewUUIDV6().String()
+ }
+
+ return b.id
+}
+
+// Type implements C.ProxyAdapter
+func (b *Base) Type() C.AdapterType {
+ return b.tp
+}
+
+// StreamConnContext implements C.ProxyAdapter
+func (b *Base) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (net.Conn, error) {
+ return c, C.ErrNotSupport
+}
+
+func (b *Base) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ return nil, C.ErrNotSupport
+}
+
+// DialContextWithDialer implements C.ProxyAdapter
+func (b *Base) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error) {
+ return nil, C.ErrNotSupport
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (b *Base) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ return nil, C.ErrNotSupport
+}
+
+// ListenPacketWithDialer implements C.ProxyAdapter
+func (b *Base) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ return nil, C.ErrNotSupport
+}
+
+// SupportWithDialer implements C.ProxyAdapter
+func (b *Base) SupportWithDialer() C.NetWork {
+ return C.InvalidNet
+}
+
+// SupportUOT implements C.ProxyAdapter
+func (b *Base) SupportUOT() bool {
+ return false
+}
+
+// SupportUDP implements C.ProxyAdapter
+func (b *Base) SupportUDP() bool {
+ return b.udp
+}
+
+// SupportXUDP implements C.ProxyAdapter
+func (b *Base) SupportXUDP() bool {
+ return b.xudp
+}
+
+// SupportTFO implements C.ProxyAdapter
+func (b *Base) SupportTFO() bool {
+ return b.tfo
+}
+
+// IsL3Protocol implements C.ProxyAdapter
+func (b *Base) IsL3Protocol(metadata *C.Metadata) bool {
+ return false
+}
+
+// MarshalJSON implements C.ProxyAdapter
+func (b *Base) MarshalJSON() ([]byte, error) {
+ return json.Marshal(map[string]string{
+ "type": b.Type().String(),
+ "id": b.Id(),
+ })
+}
+
+// Addr implements C.ProxyAdapter
+func (b *Base) Addr() string {
+ return b.addr
+}
+
+// Unwrap implements C.ProxyAdapter
+func (b *Base) Unwrap(metadata *C.Metadata, touch bool) C.Proxy {
+ return nil
+}
+
+// DialOptions return []dialer.Option from struct
+func (b *Base) DialOptions(opts ...dialer.Option) []dialer.Option {
+ if b.iface != "" {
+ opts = append(opts, dialer.WithInterface(b.iface))
+ }
+
+ if b.rmark != 0 {
+ opts = append(opts, dialer.WithRoutingMark(b.rmark))
+ }
+
+ switch b.prefer {
+ case C.IPv4Only:
+ opts = append(opts, dialer.WithOnlySingleStack(true))
+ case C.IPv6Only:
+ opts = append(opts, dialer.WithOnlySingleStack(false))
+ case C.IPv4Prefer:
+ opts = append(opts, dialer.WithPreferIPv4())
+ case C.IPv6Prefer:
+ opts = append(opts, dialer.WithPreferIPv6())
+ default:
+ }
+
+ if b.tfo {
+ opts = append(opts, dialer.WithTFO(true))
+ }
+
+ if b.mpTcp {
+ opts = append(opts, dialer.WithMPTCP(true))
+ }
+
+ return opts
+}
+
+type BasicOption struct {
+ TFO bool `proxy:"tfo,omitempty" group:"tfo,omitempty"`
+ MPTCP bool `proxy:"mptcp,omitempty" group:"mptcp,omitempty"`
+ Interface string `proxy:"interface-name,omitempty" group:"interface-name,omitempty"`
+ RoutingMark int `proxy:"routing-mark,omitempty" group:"routing-mark,omitempty"`
+ IPVersion string `proxy:"ip-version,omitempty" group:"ip-version,omitempty"`
+ DialerProxy string `proxy:"dialer-proxy,omitempty"` // don't apply this option into groups, but can set a group name in a proxy
+}
+
+type BaseOption struct {
+ Name string
+ Addr string
+ Type C.AdapterType
+ UDP bool
+ XUDP bool
+ TFO bool
+ MPTCP bool
+ Interface string
+ RoutingMark int
+ Prefer C.DNSPrefer
+}
+
+func NewBase(opt BaseOption) *Base {
+ return &Base{
+ name: opt.Name,
+ addr: opt.Addr,
+ tp: opt.Type,
+ udp: opt.UDP,
+ xudp: opt.XUDP,
+ tfo: opt.TFO,
+ mpTcp: opt.MPTCP,
+ iface: opt.Interface,
+ rmark: opt.RoutingMark,
+ prefer: opt.Prefer,
+ }
+}
+
+type conn struct {
+ N.ExtendedConn
+ chain C.Chain
+ actualRemoteDestination string
+}
+
+func (c *conn) RemoteDestination() string {
+ return c.actualRemoteDestination
+}
+
+// Chains implements C.Connection
+func (c *conn) Chains() C.Chain {
+ return c.chain
+}
+
+// AppendToChains implements C.Connection
+func (c *conn) AppendToChains(a C.ProxyAdapter) {
+ c.chain = append(c.chain, a.Name())
+}
+
+func (c *conn) Upstream() any {
+ return c.ExtendedConn
+}
+
+func (c *conn) WriterReplaceable() bool {
+ return true
+}
+
+func (c *conn) ReaderReplaceable() bool {
+ return true
+}
+
+func NewConn(c net.Conn, a C.ProxyAdapter) C.Conn {
+ if _, ok := c.(syscall.Conn); !ok { // exclusion system conn like *net.TCPConn
+ c = N.NewDeadlineConn(c) // most conn from outbound can't handle readDeadline correctly
+ }
+ return &conn{N.NewExtendedConn(c), []string{a.Name()}, parseRemoteDestination(a.Addr())}
+}
+
+type packetConn struct {
+ N.EnhancePacketConn
+ chain C.Chain
+ adapterName string
+ connID string
+ actualRemoteDestination string
+}
+
+func (c *packetConn) RemoteDestination() string {
+ return c.actualRemoteDestination
+}
+
+// Chains implements C.Connection
+func (c *packetConn) Chains() C.Chain {
+ return c.chain
+}
+
+// AppendToChains implements C.Connection
+func (c *packetConn) AppendToChains(a C.ProxyAdapter) {
+ c.chain = append(c.chain, a.Name())
+}
+
+func (c *packetConn) LocalAddr() net.Addr {
+ lAddr := c.EnhancePacketConn.LocalAddr()
+ return N.NewCustomAddr(c.adapterName, c.connID, lAddr) // make quic-go's connMultiplexer happy
+}
+
+func (c *packetConn) Upstream() any {
+ return c.EnhancePacketConn
+}
+
+func (c *packetConn) WriterReplaceable() bool {
+ return true
+}
+
+func (c *packetConn) ReaderReplaceable() bool {
+ return true
+}
+
+func newPacketConn(pc net.PacketConn, a C.ProxyAdapter) C.PacketConn {
+ epc := N.NewEnhancePacketConn(pc)
+ if _, ok := pc.(syscall.Conn); !ok { // exclusion system conn like *net.UDPConn
+ epc = N.NewDeadlineEnhancePacketConn(epc) // most conn from outbound can't handle readDeadline correctly
+ }
+ return &packetConn{epc, []string{a.Name()}, a.Name(), utils.NewUUIDV4().String(), parseRemoteDestination(a.Addr())}
+}
+
+func parseRemoteDestination(addr string) string {
+ if dst, _, err := net.SplitHostPort(addr); err == nil {
+ return dst
+ } else {
+ if addrError, ok := err.(*net.AddrError); ok && strings.Contains(addrError.Err, "missing port") {
+ return dst
+ } else {
+ return ""
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/direct.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/direct.go
new file mode 100644
index 0000000..9ee237f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/direct.go
@@ -0,0 +1,107 @@
+package outbound
+
+import (
+ "context"
+ "errors"
+ "os"
+ "strconv"
+
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/loopback"
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/features"
+)
+
+var DisableLoopBackDetector, _ = strconv.ParseBool(os.Getenv("DISABLE_LOOPBACK_DETECTOR"))
+
+type Direct struct {
+ *Base
+ loopBack *loopback.Detector
+}
+
+type DirectOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+}
+
+// DialContext implements C.ProxyAdapter
+func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ if !features.CMFA && !DisableLoopBackDetector {
+ if err := d.loopBack.CheckConn(metadata); err != nil {
+ return nil, err
+ }
+ }
+ opts = append(opts, dialer.WithResolver(resolver.DirectHostResolver))
+ c, err := dialer.DialContext(ctx, "tcp", metadata.RemoteAddress(), d.Base.DialOptions(opts...)...)
+ if err != nil {
+ return nil, err
+ }
+ return d.loopBack.NewConn(NewConn(c, d)), nil
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (d *Direct) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ if !features.CMFA && !DisableLoopBackDetector {
+ if err := d.loopBack.CheckPacketConn(metadata); err != nil {
+ return nil, err
+ }
+ }
+ // net.UDPConn.WriteTo only working with *net.UDPAddr, so we need a net.UDPAddr
+ if !metadata.Resolved() {
+ ip, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, resolver.DirectHostResolver)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+ pc, err := dialer.NewDialer(d.Base.DialOptions(opts...)...).ListenPacket(ctx, "udp", "", metadata.AddrPort())
+ if err != nil {
+ return nil, err
+ }
+ return d.loopBack.NewPacketConn(newPacketConn(pc, d)), nil
+}
+
+func (d *Direct) IsL3Protocol(metadata *C.Metadata) bool {
+ return true // tell DNSDialer don't send domain to DialContext, avoid lookback to DefaultResolver
+}
+
+func NewDirectWithOption(option DirectOption) *Direct {
+ return &Direct{
+ Base: &Base{
+ name: option.Name,
+ tp: C.Direct,
+ udp: true,
+ tfo: option.TFO,
+ mpTcp: option.MPTCP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ loopBack: loopback.NewDetector(),
+ }
+}
+
+func NewDirect() *Direct {
+ return &Direct{
+ Base: &Base{
+ name: "DIRECT",
+ tp: C.Direct,
+ udp: true,
+ prefer: C.DualStack,
+ },
+ loopBack: loopback.NewDetector(),
+ }
+}
+
+func NewCompatible() *Direct {
+ return &Direct{
+ Base: &Base{
+ name: "COMPATIBLE",
+ tp: C.Compatible,
+ udp: true,
+ prefer: C.DualStack,
+ },
+ loopBack: loopback.NewDetector(),
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/dns.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/dns.go
new file mode 100644
index 0000000..8686b28
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/dns.go
@@ -0,0 +1,159 @@
+package outbound
+
+import (
+ "context"
+ "net"
+ "time"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+type Dns struct {
+ *Base
+}
+
+type DnsOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+}
+
+// DialContext implements C.ProxyAdapter
+func (d *Dns) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ left, right := N.Pipe()
+ go resolver.RelayDnsConn(context.Background(), right, 0)
+ return NewConn(left, d), nil
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (d *Dns) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ log.Debugln("[DNS] hijack udp:%s from %s", metadata.RemoteAddress(), metadata.SourceAddrPort())
+
+ ctx, cancel := context.WithCancel(context.Background())
+
+ return newPacketConn(&dnsPacketConn{
+ response: make(chan dnsPacket, 1),
+ ctx: ctx,
+ cancel: cancel,
+ }, d), nil
+}
+
+type dnsPacket struct {
+ data []byte
+ put func()
+ addr net.Addr
+}
+
+// dnsPacketConn implements net.PacketConn
+type dnsPacketConn struct {
+ response chan dnsPacket
+ ctx context.Context
+ cancel context.CancelFunc
+}
+
+func (d *dnsPacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ select {
+ case packet := <-d.response:
+ return packet.data, packet.put, packet.addr, nil
+ case <-d.ctx.Done():
+ return nil, nil, nil, net.ErrClosed
+ }
+}
+
+func (d *dnsPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
+ select {
+ case packet := <-d.response:
+ n = copy(p, packet.data)
+ if packet.put != nil {
+ packet.put()
+ }
+ return n, packet.addr, nil
+ case <-d.ctx.Done():
+ return 0, nil, net.ErrClosed
+ }
+}
+
+func (d *dnsPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
+ select {
+ case <-d.ctx.Done():
+ return 0, net.ErrClosed
+ default:
+ }
+
+ if len(p) > resolver.SafeDnsPacketSize {
+ // wtf???
+ return len(p), nil
+ }
+
+ buf := pool.Get(resolver.SafeDnsPacketSize)
+ put := func() { _ = pool.Put(buf) }
+ copy(buf, p) // avoid p be changed after WriteTo returned
+
+ go func() { // don't block the WriteTo function
+ ctx, cancel := context.WithTimeout(d.ctx, resolver.DefaultDnsRelayTimeout)
+ defer cancel()
+
+ buf, err = resolver.RelayDnsPacket(ctx, buf[:len(p)], buf)
+ if err != nil {
+ put()
+ return
+ }
+
+ packet := dnsPacket{
+ data: buf,
+ put: put,
+ addr: addr,
+ }
+ select {
+ case d.response <- packet:
+ break
+ case <-d.ctx.Done():
+ put()
+ }
+ }()
+ return len(p), nil
+}
+
+func (d *dnsPacketConn) Close() error {
+ d.cancel()
+ return nil
+}
+
+func (*dnsPacketConn) LocalAddr() net.Addr {
+ return &net.UDPAddr{
+ IP: net.IPv4(127, 0, 0, 1),
+ Port: 53,
+ Zone: "",
+ }
+}
+
+func (*dnsPacketConn) SetDeadline(t time.Time) error {
+ return nil
+}
+
+func (*dnsPacketConn) SetReadDeadline(t time.Time) error {
+ return nil
+}
+
+func (*dnsPacketConn) SetWriteDeadline(t time.Time) error {
+ return nil
+}
+
+func NewDnsWithOption(option DnsOption) *Dns {
+ return &Dns{
+ Base: &Base{
+ name: option.Name,
+ tp: C.Dns,
+ udp: true,
+ tfo: option.TFO,
+ mpTcp: option.MPTCP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/http.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/http.go
new file mode 100644
index 0000000..ebb1d67
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/http.go
@@ -0,0 +1,183 @@
+package outbound
+
+import (
+ "bufio"
+ "context"
+ "crypto/tls"
+ "encoding/base64"
+ "errors"
+ "fmt"
+ "io"
+ "net"
+ "net/http"
+ "strconv"
+
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type Http struct {
+ *Base
+ user string
+ pass string
+ tlsConfig *tls.Config
+ option *HttpOption
+}
+
+type HttpOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ UserName string `proxy:"username,omitempty"`
+ Password string `proxy:"password,omitempty"`
+ TLS bool `proxy:"tls,omitempty"`
+ SNI string `proxy:"sni,omitempty"`
+ SkipCertVerify bool `proxy:"skip-cert-verify,omitempty"`
+ Fingerprint string `proxy:"fingerprint,omitempty"`
+ Headers map[string]string `proxy:"headers,omitempty"`
+}
+
+// StreamConnContext implements C.ProxyAdapter
+func (h *Http) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (net.Conn, error) {
+ if h.tlsConfig != nil {
+ cc := tls.Client(c, h.tlsConfig)
+ err := cc.HandshakeContext(ctx)
+ c = cc
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", h.addr, err)
+ }
+ }
+
+ if err := h.shakeHand(metadata, c); err != nil {
+ return nil, err
+ }
+ return c, nil
+}
+
+// DialContext implements C.ProxyAdapter
+func (h *Http) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ return h.DialContextWithDialer(ctx, dialer.NewDialer(h.Base.DialOptions(opts...)...), metadata)
+}
+
+// DialContextWithDialer implements C.ProxyAdapter
+func (h *Http) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error) {
+ if len(h.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(h.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := dialer.DialContext(ctx, "tcp", h.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", h.addr, err)
+ }
+
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = h.StreamConnContext(ctx, c, metadata)
+ if err != nil {
+ return nil, err
+ }
+
+ return NewConn(c, h), nil
+}
+
+// SupportWithDialer implements C.ProxyAdapter
+func (h *Http) SupportWithDialer() C.NetWork {
+ return C.TCP
+}
+
+func (h *Http) shakeHand(metadata *C.Metadata, rw io.ReadWriter) error {
+ addr := metadata.RemoteAddress()
+ HeaderString := "CONNECT " + addr + " HTTP/1.1\r\n"
+ tempHeaders := map[string]string{
+ "Host": addr,
+ "User-Agent": "Go-http-client/1.1",
+ "Proxy-Connection": "Keep-Alive",
+ }
+
+ for key, value := range h.option.Headers {
+ tempHeaders[key] = value
+ }
+
+ if h.user != "" && h.pass != "" {
+ auth := h.user + ":" + h.pass
+ tempHeaders["Proxy-Authorization"] = "Basic " + base64.StdEncoding.EncodeToString([]byte(auth))
+ }
+
+ for key, value := range tempHeaders {
+ HeaderString += key + ": " + value + "\r\n"
+ }
+
+ HeaderString += "\r\n"
+
+ _, err := rw.Write([]byte(HeaderString))
+
+ if err != nil {
+ return err
+ }
+
+ resp, err := http.ReadResponse(bufio.NewReader(rw), nil)
+
+ if err != nil {
+ return err
+ }
+
+ if resp.StatusCode == http.StatusOK {
+ return nil
+ }
+
+ if resp.StatusCode == http.StatusProxyAuthRequired {
+ return errors.New("HTTP need auth")
+ }
+
+ if resp.StatusCode == http.StatusMethodNotAllowed {
+ return errors.New("CONNECT method not allowed by proxy")
+ }
+
+ if resp.StatusCode >= http.StatusInternalServerError {
+ return errors.New(resp.Status)
+ }
+
+ return fmt.Errorf("can not connect remote err code: %d", resp.StatusCode)
+}
+
+func NewHttp(option HttpOption) (*Http, error) {
+ var tlsConfig *tls.Config
+ if option.TLS {
+ sni := option.Server
+ if option.SNI != "" {
+ sni = option.SNI
+ }
+ var err error
+ tlsConfig, err = ca.GetSpecifiedFingerprintTLSConfig(&tls.Config{
+ InsecureSkipVerify: option.SkipCertVerify,
+ ServerName: sni,
+ }, option.Fingerprint)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ return &Http{
+ Base: &Base{
+ name: option.Name,
+ addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)),
+ tp: C.Http,
+ tfo: option.TFO,
+ mpTcp: option.MPTCP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ user: option.UserName,
+ pass: option.Password,
+ tlsConfig: tlsConfig,
+ option: &option,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria.go
new file mode 100644
index 0000000..55c66c4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria.go
@@ -0,0 +1,302 @@
+package outbound
+
+import (
+ "context"
+ "crypto/tls"
+ "encoding/base64"
+ "fmt"
+ "net"
+ "net/netip"
+ "runtime"
+ "strconv"
+ "time"
+
+ "github.com/metacubex/quic-go"
+ "github.com/metacubex/quic-go/congestion"
+ M "github.com/sagernet/sing/common/metadata"
+
+ CN "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ hyCongestion "github.com/metacubex/mihomo/transport/hysteria/congestion"
+ "github.com/metacubex/mihomo/transport/hysteria/core"
+ "github.com/metacubex/mihomo/transport/hysteria/obfs"
+ "github.com/metacubex/mihomo/transport/hysteria/pmtud_fix"
+ "github.com/metacubex/mihomo/transport/hysteria/transport"
+ "github.com/metacubex/mihomo/transport/hysteria/utils"
+)
+
+const (
+ mbpsToBps = 125000
+
+ DefaultStreamReceiveWindow = 15728640 // 15 MB/s
+ DefaultConnectionReceiveWindow = 67108864 // 64 MB/s
+
+ DefaultALPN = "hysteria"
+ DefaultProtocol = "udp"
+ DefaultHopInterval = 10
+)
+
+type Hysteria struct {
+ *Base
+
+ option *HysteriaOption
+ client *core.Client
+
+ closeCh chan struct{} // for test
+}
+
+func (h *Hysteria) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ tcpConn, err := h.client.DialTCP(metadata.String(), metadata.DstPort, h.genHdc(ctx, opts...))
+ if err != nil {
+ return nil, err
+ }
+
+ return NewConn(CN.NewRefConn(tcpConn, h), h), nil
+}
+
+func (h *Hysteria) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ udpConn, err := h.client.DialUDP(h.genHdc(ctx, opts...))
+ if err != nil {
+ return nil, err
+ }
+ return newPacketConn(CN.NewRefPacketConn(&hyPacketConn{udpConn}, h), h), nil
+}
+
+func (h *Hysteria) genHdc(ctx context.Context, opts ...dialer.Option) utils.PacketDialer {
+ return &hyDialerWithContext{
+ ctx: context.Background(),
+ hyDialer: func(network string, rAddr net.Addr) (net.PacketConn, error) {
+ var err error
+ var cDialer C.Dialer = dialer.NewDialer(h.Base.DialOptions(opts...)...)
+ if len(h.option.DialerProxy) > 0 {
+ cDialer, err = proxydialer.NewByName(h.option.DialerProxy, cDialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ rAddrPort, _ := netip.ParseAddrPort(rAddr.String())
+ return cDialer.ListenPacket(ctx, network, "", rAddrPort)
+ },
+ remoteAddr: func(addr string) (net.Addr, error) {
+ return resolveUDPAddrWithPrefer(ctx, "udp", addr, h.prefer)
+ },
+ }
+}
+
+type HysteriaOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port,omitempty"`
+ Ports string `proxy:"ports,omitempty"`
+ Protocol string `proxy:"protocol,omitempty"`
+ ObfsProtocol string `proxy:"obfs-protocol,omitempty"` // compatible with Stash
+ Up string `proxy:"up"`
+ UpSpeed int `proxy:"up-speed,omitempty"` // compatible with Stash
+ Down string `proxy:"down"`
+ DownSpeed int `proxy:"down-speed,omitempty"` // compatible with Stash
+ Auth string `proxy:"auth,omitempty"`
+ AuthString string `proxy:"auth-str,omitempty"`
+ Obfs string `proxy:"obfs,omitempty"`
+ SNI string `proxy:"sni,omitempty"`
+ SkipCertVerify bool `proxy:"skip-cert-verify,omitempty"`
+ Fingerprint string `proxy:"fingerprint,omitempty"`
+ ALPN []string `proxy:"alpn,omitempty"`
+ CustomCA string `proxy:"ca,omitempty"`
+ CustomCAString string `proxy:"ca-str,omitempty"`
+ ReceiveWindowConn int `proxy:"recv-window-conn,omitempty"`
+ ReceiveWindow int `proxy:"recv-window,omitempty"`
+ DisableMTUDiscovery bool `proxy:"disable-mtu-discovery,omitempty"`
+ FastOpen bool `proxy:"fast-open,omitempty"`
+ HopInterval int `proxy:"hop-interval,omitempty"`
+}
+
+func (c *HysteriaOption) Speed() (uint64, uint64, error) {
+ var up, down uint64
+ up = StringToBps(c.Up)
+ if up == 0 {
+ return 0, 0, fmt.Errorf("invaild upload speed: %s", c.Up)
+ }
+
+ down = StringToBps(c.Down)
+ if down == 0 {
+ return 0, 0, fmt.Errorf("invaild download speed: %s", c.Down)
+ }
+
+ return up, down, nil
+}
+
+func NewHysteria(option HysteriaOption) (*Hysteria, error) {
+ clientTransport := &transport.ClientTransport{}
+ addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port))
+ ports := option.Ports
+
+ serverName := option.Server
+ if option.SNI != "" {
+ serverName = option.SNI
+ }
+
+ tlsConfig := &tls.Config{
+ ServerName: serverName,
+ InsecureSkipVerify: option.SkipCertVerify,
+ MinVersion: tls.VersionTLS13,
+ }
+
+ var err error
+ tlsConfig, err = ca.GetTLSConfig(tlsConfig, option.Fingerprint, option.CustomCA, option.CustomCAString)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(option.ALPN) > 0 {
+ tlsConfig.NextProtos = option.ALPN
+ } else {
+ tlsConfig.NextProtos = []string{DefaultALPN}
+ }
+ quicConfig := &quic.Config{
+ InitialStreamReceiveWindow: uint64(option.ReceiveWindowConn),
+ MaxStreamReceiveWindow: uint64(option.ReceiveWindowConn),
+ InitialConnectionReceiveWindow: uint64(option.ReceiveWindow),
+ MaxConnectionReceiveWindow: uint64(option.ReceiveWindow),
+ KeepAlivePeriod: 10 * time.Second,
+ DisablePathMTUDiscovery: option.DisableMTUDiscovery,
+ EnableDatagrams: true,
+ }
+ if option.ObfsProtocol != "" {
+ option.Protocol = option.ObfsProtocol
+ }
+ if option.Protocol == "" {
+ option.Protocol = DefaultProtocol
+ }
+ if option.HopInterval == 0 {
+ option.HopInterval = DefaultHopInterval
+ }
+ hopInterval := time.Duration(int64(option.HopInterval)) * time.Second
+ if option.ReceiveWindow == 0 {
+ quicConfig.InitialStreamReceiveWindow = DefaultStreamReceiveWindow / 10
+ quicConfig.MaxStreamReceiveWindow = DefaultStreamReceiveWindow
+ }
+ if option.ReceiveWindow == 0 {
+ quicConfig.InitialConnectionReceiveWindow = DefaultConnectionReceiveWindow / 10
+ quicConfig.MaxConnectionReceiveWindow = DefaultConnectionReceiveWindow
+ }
+ if !quicConfig.DisablePathMTUDiscovery && pmtud_fix.DisablePathMTUDiscovery {
+ log.Infoln("hysteria: Path MTU Discovery is not yet supported on this platform")
+ }
+
+ var auth = []byte(option.AuthString)
+ if option.Auth != "" {
+ auth, err = base64.StdEncoding.DecodeString(option.Auth)
+ if err != nil {
+ return nil, err
+ }
+ }
+ var obfuscator obfs.Obfuscator
+ if len(option.Obfs) > 0 {
+ obfuscator = obfs.NewXPlusObfuscator([]byte(option.Obfs))
+ }
+
+ up, down, err := option.Speed()
+ if err != nil {
+ return nil, err
+ }
+ if option.UpSpeed != 0 {
+ up = uint64(option.UpSpeed * mbpsToBps)
+ }
+ if option.DownSpeed != 0 {
+ down = uint64(option.DownSpeed * mbpsToBps)
+ }
+ client, err := core.NewClient(
+ addr, ports, option.Protocol, auth, tlsConfig, quicConfig, clientTransport, up, down, func(refBPS uint64) congestion.CongestionControl {
+ return hyCongestion.NewBrutalSender(congestion.ByteCount(refBPS))
+ }, obfuscator, hopInterval, option.FastOpen,
+ )
+ if err != nil {
+ return nil, fmt.Errorf("hysteria %s create error: %w", addr, err)
+ }
+ outbound := &Hysteria{
+ Base: &Base{
+ name: option.Name,
+ addr: addr,
+ tp: C.Hysteria,
+ udp: true,
+ tfo: option.FastOpen,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ option: &option,
+ client: client,
+ }
+ runtime.SetFinalizer(outbound, closeHysteria)
+
+ return outbound, nil
+}
+
+func closeHysteria(h *Hysteria) {
+ if h.client != nil {
+ _ = h.client.Close()
+ }
+ if h.closeCh != nil {
+ close(h.closeCh)
+ }
+}
+
+type hyPacketConn struct {
+ core.UDPConn
+}
+
+func (c *hyPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
+ b, addrStr, err := c.UDPConn.ReadFrom()
+ if err != nil {
+ return
+ }
+ n = copy(p, b)
+ addr = M.ParseSocksaddr(addrStr).UDPAddr()
+ return
+}
+
+func (c *hyPacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ b, addrStr, err := c.UDPConn.ReadFrom()
+ if err != nil {
+ return
+ }
+ data = b
+ addr = M.ParseSocksaddr(addrStr).UDPAddr()
+ return
+}
+
+func (c *hyPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
+ err = c.UDPConn.WriteTo(p, M.SocksaddrFromNet(addr).String())
+ if err != nil {
+ return
+ }
+ n = len(p)
+ return
+}
+
+type hyDialerWithContext struct {
+ hyDialer func(network string, rAddr net.Addr) (net.PacketConn, error)
+ ctx context.Context
+ remoteAddr func(host string) (net.Addr, error)
+}
+
+func (h *hyDialerWithContext) ListenPacket(rAddr net.Addr) (net.PacketConn, error) {
+ network := "udp"
+ if addrPort, err := netip.ParseAddrPort(rAddr.String()); err == nil {
+ network = dialer.ParseNetwork(network, addrPort.Addr())
+ }
+ return h.hyDialer(network, rAddr)
+}
+
+func (h *hyDialerWithContext) Context() context.Context {
+ return h.ctx
+}
+
+func (h *hyDialerWithContext) RemoteAddr(host string) (net.Addr, error) {
+ return h.remoteAddr(host)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria2.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria2.go
new file mode 100644
index 0000000..c1a255a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria2.go
@@ -0,0 +1,210 @@
+package outbound
+
+import (
+ "context"
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "net"
+ "runtime"
+ "strconv"
+ "time"
+
+ CN "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ tuicCommon "github.com/metacubex/mihomo/transport/tuic/common"
+
+ "github.com/metacubex/sing-quic/hysteria2"
+
+ "github.com/metacubex/randv2"
+ M "github.com/sagernet/sing/common/metadata"
+)
+
+func init() {
+ hysteria2.SetCongestionController = tuicCommon.SetCongestionController
+}
+
+const minHopInterval = 5
+const defaultHopInterval = 30
+
+type Hysteria2 struct {
+ *Base
+
+ option *Hysteria2Option
+ client *hysteria2.Client
+ dialer proxydialer.SingDialer
+
+ closeCh chan struct{} // for test
+}
+
+type Hysteria2Option struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port,omitempty"`
+ Ports string `proxy:"ports,omitempty"`
+ HopInterval int `proxy:"hop-interval,omitempty"`
+ Up string `proxy:"up,omitempty"`
+ Down string `proxy:"down,omitempty"`
+ Password string `proxy:"password,omitempty"`
+ Obfs string `proxy:"obfs,omitempty"`
+ ObfsPassword string `proxy:"obfs-password,omitempty"`
+ SNI string `proxy:"sni,omitempty"`
+ SkipCertVerify bool `proxy:"skip-cert-verify,omitempty"`
+ Fingerprint string `proxy:"fingerprint,omitempty"`
+ ALPN []string `proxy:"alpn,omitempty"`
+ CustomCA string `proxy:"ca,omitempty"`
+ CustomCAString string `proxy:"ca-str,omitempty"`
+ CWND int `proxy:"cwnd,omitempty"`
+ UdpMTU int `proxy:"udp-mtu,omitempty"`
+}
+
+func (h *Hysteria2) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ options := h.Base.DialOptions(opts...)
+ h.dialer.SetDialer(dialer.NewDialer(options...))
+ c, err := h.client.DialConn(ctx, M.ParseSocksaddrHostPort(metadata.String(), metadata.DstPort))
+ if err != nil {
+ return nil, err
+ }
+ return NewConn(CN.NewRefConn(c, h), h), nil
+}
+
+func (h *Hysteria2) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
+ options := h.Base.DialOptions(opts...)
+ h.dialer.SetDialer(dialer.NewDialer(options...))
+ pc, err := h.client.ListenPacket(ctx)
+ if err != nil {
+ return nil, err
+ }
+ if pc == nil {
+ return nil, errors.New("packetConn is nil")
+ }
+ return newPacketConn(CN.NewRefPacketConn(CN.NewThreadSafePacketConn(pc), h), h), nil
+}
+
+func closeHysteria2(h *Hysteria2) {
+ if h.client != nil {
+ _ = h.client.CloseWithError(errors.New("proxy removed"))
+ }
+ if h.closeCh != nil {
+ close(h.closeCh)
+ }
+}
+
+func NewHysteria2(option Hysteria2Option) (*Hysteria2, error) {
+ addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port))
+ var salamanderPassword string
+ if len(option.Obfs) > 0 {
+ if option.ObfsPassword == "" {
+ return nil, errors.New("missing obfs password")
+ }
+ switch option.Obfs {
+ case hysteria2.ObfsTypeSalamander:
+ salamanderPassword = option.ObfsPassword
+ default:
+ return nil, fmt.Errorf("unknown obfs type: %s", option.Obfs)
+ }
+ }
+
+ serverName := option.Server
+ if option.SNI != "" {
+ serverName = option.SNI
+ }
+
+ tlsConfig := &tls.Config{
+ ServerName: serverName,
+ InsecureSkipVerify: option.SkipCertVerify,
+ MinVersion: tls.VersionTLS13,
+ }
+
+ var err error
+ tlsConfig, err = ca.GetTLSConfig(tlsConfig, option.Fingerprint, option.CustomCA, option.CustomCAString)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(option.ALPN) > 0 {
+ tlsConfig.NextProtos = option.ALPN
+ }
+
+ if option.UdpMTU == 0 {
+ // "1200" from quic-go's MaxDatagramSize
+ // "-3" from quic-go's DatagramFrame.MaxDataLen
+ option.UdpMTU = 1200 - 3
+ }
+
+ singDialer := proxydialer.NewByNameSingDialer(option.DialerProxy, dialer.NewDialer())
+
+ clientOptions := hysteria2.ClientOptions{
+ Context: context.TODO(),
+ Dialer: singDialer,
+ Logger: log.SingLogger,
+ SendBPS: StringToBps(option.Up),
+ ReceiveBPS: StringToBps(option.Down),
+ SalamanderPassword: salamanderPassword,
+ Password: option.Password,
+ TLSConfig: tlsConfig,
+ UDPDisabled: false,
+ CWND: option.CWND,
+ UdpMTU: option.UdpMTU,
+ ServerAddress: func(ctx context.Context) (*net.UDPAddr, error) {
+ return resolveUDPAddrWithPrefer(ctx, "udp", addr, C.NewDNSPrefer(option.IPVersion))
+ },
+ }
+
+ var ranges utils.IntRanges[uint16]
+ var serverAddress []string
+ if option.Ports != "" {
+ ranges, err = utils.NewUnsignedRanges[uint16](option.Ports)
+ if err != nil {
+ return nil, err
+ }
+ ranges.Range(func(port uint16) bool {
+ serverAddress = append(serverAddress, net.JoinHostPort(option.Server, strconv.Itoa(int(port))))
+ return true
+ })
+ if len(serverAddress) > 0 {
+ clientOptions.ServerAddress = func(ctx context.Context) (*net.UDPAddr, error) {
+ return resolveUDPAddrWithPrefer(ctx, "udp", serverAddress[randv2.IntN(len(serverAddress))], C.NewDNSPrefer(option.IPVersion))
+ }
+
+ if option.HopInterval == 0 {
+ option.HopInterval = defaultHopInterval
+ } else if option.HopInterval < minHopInterval {
+ option.HopInterval = minHopInterval
+ }
+ clientOptions.HopInterval = time.Duration(option.HopInterval) * time.Second
+ }
+ }
+ if option.Port == 0 && len(serverAddress) == 0 {
+ return nil, errors.New("invalid port")
+ }
+
+ client, err := hysteria2.NewClient(clientOptions)
+ if err != nil {
+ return nil, err
+ }
+
+ outbound := &Hysteria2{
+ Base: &Base{
+ name: option.Name,
+ addr: addr,
+ tp: C.Hysteria2,
+ udp: true,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ option: &option,
+ client: client,
+ dialer: singDialer,
+ }
+ runtime.SetFinalizer(outbound, closeHysteria2)
+
+ return outbound, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria2_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria2_test.go
new file mode 100644
index 0000000..de7d822
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria2_test.go
@@ -0,0 +1,38 @@
+package outbound
+
+import (
+ "context"
+ "runtime"
+ "testing"
+ "time"
+)
+
+func TestHysteria2GC(t *testing.T) {
+ option := Hysteria2Option{}
+ option.Server = "127.0.0.1"
+ option.Ports = "200,204,401-429,501-503"
+ option.HopInterval = 30
+ option.Password = "password"
+ option.Obfs = "salamander"
+ option.ObfsPassword = "password"
+ option.SNI = "example.com"
+ option.ALPN = []string{"h3"}
+ hy, err := NewHysteria2(option)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ closeCh := make(chan struct{})
+ hy.closeCh = closeCh
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
+ defer cancel()
+
+ hy = nil
+ runtime.GC()
+ select {
+ case <-closeCh:
+ return
+ case <-ctx.Done():
+ t.Error("timeout not GC")
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria_test.go
new file mode 100644
index 0000000..f2297c6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/hysteria_test.go
@@ -0,0 +1,39 @@
+package outbound
+
+import (
+ "context"
+ "runtime"
+ "testing"
+ "time"
+)
+
+func TestHysteriaGC(t *testing.T) {
+ option := HysteriaOption{}
+ option.Server = "127.0.0.1"
+ option.Ports = "200,204,401-429,501-503"
+ option.Protocol = "udp"
+ option.Up = "1Mbps"
+ option.Down = "1Mbps"
+ option.HopInterval = 30
+ option.Obfs = "salamander"
+ option.SNI = "example.com"
+ option.ALPN = []string{"h3"}
+ hy, err := NewHysteria(option)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ closeCh := make(chan struct{})
+ hy.closeCh = closeCh
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
+ defer cancel()
+
+ hy = nil
+ runtime.GC()
+ select {
+ case <-closeCh:
+ return
+ case <-ctx.Done():
+ t.Error("timeout not GC")
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/reality.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/reality.go
new file mode 100644
index 0000000..6711f37
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/reality.go
@@ -0,0 +1,41 @@
+package outbound
+
+import (
+ "crypto/ecdh"
+ "encoding/base64"
+ "encoding/hex"
+ "errors"
+ "fmt"
+
+ tlsC "github.com/metacubex/mihomo/component/tls"
+)
+
+type RealityOptions struct {
+ PublicKey string `proxy:"public-key"`
+ ShortID string `proxy:"short-id"`
+}
+
+func (o RealityOptions) Parse() (*tlsC.RealityConfig, error) {
+ if o.PublicKey != "" {
+ config := new(tlsC.RealityConfig)
+
+ const x25519ScalarSize = 32
+ var publicKey [x25519ScalarSize]byte
+ n, err := base64.RawURLEncoding.Decode(publicKey[:], []byte(o.PublicKey))
+ if err != nil || n != x25519ScalarSize {
+ return nil, errors.New("invalid REALITY public key")
+ }
+ config.PublicKey, err = ecdh.X25519().NewPublicKey(publicKey[:])
+ if err != nil {
+ return nil, fmt.Errorf("fail to create REALITY public key: %w", err)
+ }
+
+ n, err = hex.Decode(config.ShortID[:], []byte(o.ShortID))
+ if err != nil || n > tlsC.RealityMaxShortIDLen {
+ return nil, errors.New("invalid REALITY short ID")
+ }
+
+ return config, nil
+ }
+ return nil, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/reject.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/reject.go
new file mode 100644
index 0000000..a8e2100
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/reject.go
@@ -0,0 +1,128 @@
+package outbound
+
+import (
+ "context"
+ "io"
+ "net"
+ "time"
+
+ "github.com/metacubex/mihomo/common/buf"
+ "github.com/metacubex/mihomo/component/dialer"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type Reject struct {
+ *Base
+ drop bool
+}
+
+type RejectOption struct {
+ Name string `proxy:"name"`
+}
+
+// DialContext implements C.ProxyAdapter
+func (r *Reject) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ if r.drop {
+ return NewConn(dropConn{}, r), nil
+ }
+ return NewConn(nopConn{}, r), nil
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (r *Reject) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ return newPacketConn(&nopPacketConn{}, r), nil
+}
+
+func NewRejectWithOption(option RejectOption) *Reject {
+ return &Reject{
+ Base: &Base{
+ name: option.Name,
+ tp: C.Reject,
+ udp: true,
+ },
+ }
+}
+
+func NewReject() *Reject {
+ return &Reject{
+ Base: &Base{
+ name: "REJECT",
+ tp: C.Reject,
+ udp: true,
+ prefer: C.DualStack,
+ },
+ }
+}
+
+func NewRejectDrop() *Reject {
+ return &Reject{
+ Base: &Base{
+ name: "REJECT-DROP",
+ tp: C.RejectDrop,
+ udp: true,
+ prefer: C.DualStack,
+ },
+ drop: true,
+ }
+}
+
+func NewPass() *Reject {
+ return &Reject{
+ Base: &Base{
+ name: "PASS",
+ tp: C.Pass,
+ udp: true,
+ prefer: C.DualStack,
+ },
+ }
+}
+
+type nopConn struct{}
+
+func (rw nopConn) Read(b []byte) (int, error) { return 0, io.EOF }
+
+func (rw nopConn) ReadBuffer(buffer *buf.Buffer) error { return io.EOF }
+
+func (rw nopConn) Write(b []byte) (int, error) { return 0, io.EOF }
+func (rw nopConn) WriteBuffer(buffer *buf.Buffer) error { return io.EOF }
+func (rw nopConn) Close() error { return nil }
+func (rw nopConn) LocalAddr() net.Addr { return nil }
+func (rw nopConn) RemoteAddr() net.Addr { return nil }
+func (rw nopConn) SetDeadline(time.Time) error { return nil }
+func (rw nopConn) SetReadDeadline(time.Time) error { return nil }
+func (rw nopConn) SetWriteDeadline(time.Time) error { return nil }
+
+var udpAddrIPv4Unspecified = &net.UDPAddr{IP: net.IPv4zero, Port: 0}
+
+type nopPacketConn struct{}
+
+func (npc nopPacketConn) WriteTo(b []byte, addr net.Addr) (n int, err error) {
+ return len(b), nil
+}
+func (npc nopPacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ return 0, nil, io.EOF
+}
+func (npc nopPacketConn) WaitReadFrom() ([]byte, func(), net.Addr, error) {
+ return nil, nil, nil, io.EOF
+}
+func (npc nopPacketConn) Close() error { return nil }
+func (npc nopPacketConn) LocalAddr() net.Addr { return udpAddrIPv4Unspecified }
+func (npc nopPacketConn) SetDeadline(time.Time) error { return nil }
+func (npc nopPacketConn) SetReadDeadline(time.Time) error { return nil }
+func (npc nopPacketConn) SetWriteDeadline(time.Time) error { return nil }
+
+type dropConn struct{}
+
+func (rw dropConn) Read(b []byte) (int, error) { return 0, io.EOF }
+func (rw dropConn) ReadBuffer(buffer *buf.Buffer) error {
+ time.Sleep(C.DefaultDropTime)
+ return io.EOF
+}
+func (rw dropConn) Write(b []byte) (int, error) { return 0, io.EOF }
+func (rw dropConn) WriteBuffer(buffer *buf.Buffer) error { return io.EOF }
+func (rw dropConn) Close() error { return nil }
+func (rw dropConn) LocalAddr() net.Addr { return nil }
+func (rw dropConn) RemoteAddr() net.Addr { return nil }
+func (rw dropConn) SetDeadline(time.Time) error { return nil }
+func (rw dropConn) SetReadDeadline(time.Time) error { return nil }
+func (rw dropConn) SetWriteDeadline(time.Time) error { return nil }
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/shadowsocks.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/shadowsocks.go
new file mode 100644
index 0000000..021fbc0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/shadowsocks.go
@@ -0,0 +1,336 @@
+package outbound
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "net"
+ "strconv"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/structure"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/restls"
+ obfs "github.com/metacubex/mihomo/transport/simple-obfs"
+ shadowtls "github.com/metacubex/mihomo/transport/sing-shadowtls"
+ v2rayObfs "github.com/metacubex/mihomo/transport/v2ray-plugin"
+
+ restlsC "github.com/3andne/restls-client-go"
+ shadowsocks "github.com/metacubex/sing-shadowsocks2"
+ "github.com/sagernet/sing/common/bufio"
+ M "github.com/sagernet/sing/common/metadata"
+ "github.com/sagernet/sing/common/uot"
+)
+
+type ShadowSocks struct {
+ *Base
+ method shadowsocks.Method
+
+ option *ShadowSocksOption
+ // obfs
+ obfsMode string
+ obfsOption *simpleObfsOption
+ v2rayOption *v2rayObfs.Option
+ shadowTLSOption *shadowtls.ShadowTLSOption
+ restlsConfig *restlsC.Config
+}
+
+type ShadowSocksOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ Password string `proxy:"password"`
+ Cipher string `proxy:"cipher"`
+ UDP bool `proxy:"udp,omitempty"`
+ Plugin string `proxy:"plugin,omitempty"`
+ PluginOpts map[string]any `proxy:"plugin-opts,omitempty"`
+ UDPOverTCP bool `proxy:"udp-over-tcp,omitempty"`
+ UDPOverTCPVersion int `proxy:"udp-over-tcp-version,omitempty"`
+ ClientFingerprint string `proxy:"client-fingerprint,omitempty"`
+}
+
+type simpleObfsOption struct {
+ Mode string `obfs:"mode,omitempty"`
+ Host string `obfs:"host,omitempty"`
+}
+
+type v2rayObfsOption struct {
+ Mode string `obfs:"mode"`
+ Host string `obfs:"host,omitempty"`
+ Path string `obfs:"path,omitempty"`
+ TLS bool `obfs:"tls,omitempty"`
+ Fingerprint string `obfs:"fingerprint,omitempty"`
+ Headers map[string]string `obfs:"headers,omitempty"`
+ SkipCertVerify bool `obfs:"skip-cert-verify,omitempty"`
+ Mux bool `obfs:"mux,omitempty"`
+ V2rayHttpUpgrade bool `obfs:"v2ray-http-upgrade,omitempty"`
+ V2rayHttpUpgradeFastOpen bool `obfs:"v2ray-http-upgrade-fast-open,omitempty"`
+}
+
+type shadowTLSOption struct {
+ Password string `obfs:"password"`
+ Host string `obfs:"host"`
+ Fingerprint string `obfs:"fingerprint,omitempty"`
+ SkipCertVerify bool `obfs:"skip-cert-verify,omitempty"`
+ Version int `obfs:"version,omitempty"`
+}
+
+type restlsOption struct {
+ Password string `obfs:"password"`
+ Host string `obfs:"host"`
+ VersionHint string `obfs:"version-hint"`
+ RestlsScript string `obfs:"restls-script,omitempty"`
+}
+
+// StreamConnContext implements C.ProxyAdapter
+func (ss *ShadowSocks) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (net.Conn, error) {
+ useEarly := false
+ switch ss.obfsMode {
+ case "tls":
+ c = obfs.NewTLSObfs(c, ss.obfsOption.Host)
+ case "http":
+ _, port, _ := net.SplitHostPort(ss.addr)
+ c = obfs.NewHTTPObfs(c, ss.obfsOption.Host, port)
+ case "websocket":
+ var err error
+ c, err = v2rayObfs.NewV2rayObfs(ctx, c, ss.v2rayOption)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", ss.addr, err)
+ }
+ case shadowtls.Mode:
+ var err error
+ c, err = shadowtls.NewShadowTLS(ctx, c, ss.shadowTLSOption)
+ if err != nil {
+ return nil, err
+ }
+ useEarly = true
+ case restls.Mode:
+ var err error
+ c, err = restls.NewRestls(ctx, c, ss.restlsConfig)
+ if err != nil {
+ return nil, fmt.Errorf("%s (restls) connect error: %w", ss.addr, err)
+ }
+ useEarly = true
+ }
+ useEarly = useEarly || N.NeedHandshake(c)
+ if metadata.NetWork == C.UDP && ss.option.UDPOverTCP {
+ uotDestination := uot.RequestDestination(uint8(ss.option.UDPOverTCPVersion))
+ if useEarly {
+ return ss.method.DialEarlyConn(c, uotDestination), nil
+ } else {
+ return ss.method.DialConn(c, uotDestination)
+ }
+ }
+ if useEarly {
+ return ss.method.DialEarlyConn(c, M.ParseSocksaddrHostPort(metadata.String(), metadata.DstPort)), nil
+ } else {
+ return ss.method.DialConn(c, M.ParseSocksaddrHostPort(metadata.String(), metadata.DstPort))
+ }
+}
+
+// DialContext implements C.ProxyAdapter
+func (ss *ShadowSocks) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ return ss.DialContextWithDialer(ctx, dialer.NewDialer(ss.Base.DialOptions(opts...)...), metadata)
+}
+
+// DialContextWithDialer implements C.ProxyAdapter
+func (ss *ShadowSocks) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error) {
+ if len(ss.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(ss.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := dialer.DialContext(ctx, "tcp", ss.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", ss.addr, err)
+ }
+
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = ss.StreamConnContext(ctx, c, metadata)
+ return NewConn(c, ss), err
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (ss *ShadowSocks) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ return ss.ListenPacketWithDialer(ctx, dialer.NewDialer(ss.Base.DialOptions(opts...)...), metadata)
+}
+
+// ListenPacketWithDialer implements C.ProxyAdapter
+func (ss *ShadowSocks) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ if ss.option.UDPOverTCP {
+ tcpConn, err := ss.DialContextWithDialer(ctx, dialer, metadata)
+ if err != nil {
+ return nil, err
+ }
+ return ss.ListenPacketOnStreamConn(ctx, tcpConn, metadata)
+ }
+ if len(ss.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(ss.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ addr, err := resolveUDPAddrWithPrefer(ctx, "udp", ss.addr, ss.prefer)
+ if err != nil {
+ return nil, err
+ }
+
+ pc, err := dialer.ListenPacket(ctx, "udp", "", addr.AddrPort())
+ if err != nil {
+ return nil, err
+ }
+ pc = ss.method.DialPacketConn(bufio.NewBindPacketConn(pc, addr))
+ return newPacketConn(pc, ss), nil
+}
+
+// SupportWithDialer implements C.ProxyAdapter
+func (ss *ShadowSocks) SupportWithDialer() C.NetWork {
+ return C.ALLNet
+}
+
+// ListenPacketOnStreamConn implements C.ProxyAdapter
+func (ss *ShadowSocks) ListenPacketOnStreamConn(ctx context.Context, c net.Conn, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ if ss.option.UDPOverTCP {
+ // ss uot use stream-oriented udp with a special address, so we need a net.UDPAddr
+ if !metadata.Resolved() {
+ ip, err := resolver.ResolveIP(ctx, metadata.Host)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+
+ destination := M.SocksaddrFromNet(metadata.UDPAddr())
+ if ss.option.UDPOverTCPVersion == uot.LegacyVersion {
+ return newPacketConn(N.NewThreadSafePacketConn(uot.NewConn(c, uot.Request{Destination: destination})), ss), nil
+ } else {
+ return newPacketConn(N.NewThreadSafePacketConn(uot.NewLazyConn(c, uot.Request{Destination: destination})), ss), nil
+ }
+ }
+ return nil, C.ErrNotSupport
+}
+
+// SupportUOT implements C.ProxyAdapter
+func (ss *ShadowSocks) SupportUOT() bool {
+ return ss.option.UDPOverTCP
+}
+
+func NewShadowSocks(option ShadowSocksOption) (*ShadowSocks, error) {
+ addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port))
+ method, err := shadowsocks.CreateMethod(context.Background(), option.Cipher, shadowsocks.MethodOptions{
+ Password: option.Password,
+ })
+ if err != nil {
+ return nil, fmt.Errorf("ss %s initialize error: %w", addr, err)
+ }
+
+ var v2rayOption *v2rayObfs.Option
+ var obfsOption *simpleObfsOption
+ var shadowTLSOpt *shadowtls.ShadowTLSOption
+ var restlsConfig *restlsC.Config
+ obfsMode := ""
+
+ decoder := structure.NewDecoder(structure.Option{TagName: "obfs", WeaklyTypedInput: true})
+ if option.Plugin == "obfs" {
+ opts := simpleObfsOption{Host: "bing.com"}
+ if err := decoder.Decode(option.PluginOpts, &opts); err != nil {
+ return nil, fmt.Errorf("ss %s initialize obfs error: %w", addr, err)
+ }
+
+ if opts.Mode != "tls" && opts.Mode != "http" {
+ return nil, fmt.Errorf("ss %s obfs mode error: %s", addr, opts.Mode)
+ }
+ obfsMode = opts.Mode
+ obfsOption = &opts
+ } else if option.Plugin == "v2ray-plugin" {
+ opts := v2rayObfsOption{Host: "bing.com", Mux: true}
+ if err := decoder.Decode(option.PluginOpts, &opts); err != nil {
+ return nil, fmt.Errorf("ss %s initialize v2ray-plugin error: %w", addr, err)
+ }
+
+ if opts.Mode != "websocket" {
+ return nil, fmt.Errorf("ss %s obfs mode error: %s", addr, opts.Mode)
+ }
+ obfsMode = opts.Mode
+ v2rayOption = &v2rayObfs.Option{
+ Host: opts.Host,
+ Path: opts.Path,
+ Headers: opts.Headers,
+ Mux: opts.Mux,
+ V2rayHttpUpgrade: opts.V2rayHttpUpgrade,
+ V2rayHttpUpgradeFastOpen: opts.V2rayHttpUpgradeFastOpen,
+ }
+
+ if opts.TLS {
+ v2rayOption.TLS = true
+ v2rayOption.SkipCertVerify = opts.SkipCertVerify
+ v2rayOption.Fingerprint = opts.Fingerprint
+ }
+ } else if option.Plugin == shadowtls.Mode {
+ obfsMode = shadowtls.Mode
+ opt := &shadowTLSOption{
+ Version: 2,
+ }
+ if err := decoder.Decode(option.PluginOpts, opt); err != nil {
+ return nil, fmt.Errorf("ss %s initialize shadow-tls-plugin error: %w", addr, err)
+ }
+
+ shadowTLSOpt = &shadowtls.ShadowTLSOption{
+ Password: opt.Password,
+ Host: opt.Host,
+ Fingerprint: opt.Fingerprint,
+ ClientFingerprint: option.ClientFingerprint,
+ SkipCertVerify: opt.SkipCertVerify,
+ Version: opt.Version,
+ }
+ } else if option.Plugin == restls.Mode {
+ obfsMode = restls.Mode
+ restlsOpt := &restlsOption{}
+ if err := decoder.Decode(option.PluginOpts, restlsOpt); err != nil {
+ return nil, fmt.Errorf("ss %s initialize restls-plugin error: %w", addr, err)
+ }
+
+ restlsConfig, err = restlsC.NewRestlsConfig(restlsOpt.Host, restlsOpt.Password, restlsOpt.VersionHint, restlsOpt.RestlsScript, option.ClientFingerprint)
+ if err != nil {
+ return nil, fmt.Errorf("ss %s initialize restls-plugin error: %w", addr, err)
+ }
+
+ }
+ switch option.UDPOverTCPVersion {
+ case uot.Version, uot.LegacyVersion:
+ case 0:
+ option.UDPOverTCPVersion = uot.LegacyVersion
+ default:
+ return nil, fmt.Errorf("ss %s unknown udp over tcp protocol version: %d", addr, option.UDPOverTCPVersion)
+ }
+
+ return &ShadowSocks{
+ Base: &Base{
+ name: option.Name,
+ addr: addr,
+ tp: C.Shadowsocks,
+ udp: option.UDP,
+ tfo: option.TFO,
+ mpTcp: option.MPTCP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ method: method,
+
+ option: &option,
+ obfsMode: obfsMode,
+ v2rayOption: v2rayOption,
+ obfsOption: obfsOption,
+ shadowTLSOption: shadowTLSOpt,
+ restlsConfig: restlsConfig,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/shadowsocksr.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/shadowsocksr.go
new file mode 100644
index 0000000..437695b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/shadowsocksr.go
@@ -0,0 +1,252 @@
+package outbound
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "net"
+ "strconv"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/shadowsocks/core"
+ "github.com/metacubex/mihomo/transport/shadowsocks/shadowaead"
+ "github.com/metacubex/mihomo/transport/shadowsocks/shadowstream"
+ "github.com/metacubex/mihomo/transport/socks5"
+ "github.com/metacubex/mihomo/transport/ssr/obfs"
+ "github.com/metacubex/mihomo/transport/ssr/protocol"
+)
+
+type ShadowSocksR struct {
+ *Base
+ option *ShadowSocksROption
+ cipher core.Cipher
+ obfs obfs.Obfs
+ protocol protocol.Protocol
+}
+
+type ShadowSocksROption struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ Password string `proxy:"password"`
+ Cipher string `proxy:"cipher"`
+ Obfs string `proxy:"obfs"`
+ ObfsParam string `proxy:"obfs-param,omitempty"`
+ Protocol string `proxy:"protocol"`
+ ProtocolParam string `proxy:"protocol-param,omitempty"`
+ UDP bool `proxy:"udp,omitempty"`
+}
+
+// StreamConnContext implements C.ProxyAdapter
+func (ssr *ShadowSocksR) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (net.Conn, error) {
+ c = ssr.obfs.StreamConn(c)
+ c = ssr.cipher.StreamConn(c)
+ var (
+ iv []byte
+ err error
+ )
+ switch conn := c.(type) {
+ case *shadowstream.Conn:
+ iv, err = conn.ObtainWriteIV()
+ if err != nil {
+ return nil, err
+ }
+ case *shadowaead.Conn:
+ return nil, fmt.Errorf("invalid connection type")
+ }
+ c = ssr.protocol.StreamConn(c, iv)
+ _, err = c.Write(serializesSocksAddr(metadata))
+ return c, err
+}
+
+// DialContext implements C.ProxyAdapter
+func (ssr *ShadowSocksR) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ return ssr.DialContextWithDialer(ctx, dialer.NewDialer(ssr.Base.DialOptions(opts...)...), metadata)
+}
+
+// DialContextWithDialer implements C.ProxyAdapter
+func (ssr *ShadowSocksR) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error) {
+ if len(ssr.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(ssr.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := dialer.DialContext(ctx, "tcp", ssr.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", ssr.addr, err)
+ }
+
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = ssr.StreamConnContext(ctx, c, metadata)
+ return NewConn(c, ssr), err
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (ssr *ShadowSocksR) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ return ssr.ListenPacketWithDialer(ctx, dialer.NewDialer(ssr.Base.DialOptions(opts...)...), metadata)
+}
+
+// ListenPacketWithDialer implements C.ProxyAdapter
+func (ssr *ShadowSocksR) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ if len(ssr.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(ssr.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ addr, err := resolveUDPAddrWithPrefer(ctx, "udp", ssr.addr, ssr.prefer)
+ if err != nil {
+ return nil, err
+ }
+
+ pc, err := dialer.ListenPacket(ctx, "udp", "", addr.AddrPort())
+ if err != nil {
+ return nil, err
+ }
+
+ epc := ssr.cipher.PacketConn(N.NewEnhancePacketConn(pc))
+ epc = ssr.protocol.PacketConn(epc)
+ return newPacketConn(&ssrPacketConn{EnhancePacketConn: epc, rAddr: addr}, ssr), nil
+}
+
+// SupportWithDialer implements C.ProxyAdapter
+func (ssr *ShadowSocksR) SupportWithDialer() C.NetWork {
+ return C.ALLNet
+}
+
+func NewShadowSocksR(option ShadowSocksROption) (*ShadowSocksR, error) {
+ // SSR protocol compatibility
+ // https://github.com/metacubex/mihomo/pull/2056
+ if option.Cipher == "none" {
+ option.Cipher = "dummy"
+ }
+
+ addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port))
+ cipher := option.Cipher
+ password := option.Password
+ coreCiph, err := core.PickCipher(cipher, nil, password)
+ if err != nil {
+ return nil, fmt.Errorf("ssr %s initialize error: %w", addr, err)
+ }
+ var (
+ ivSize int
+ key []byte
+ )
+
+ if option.Cipher == "dummy" {
+ ivSize = 0
+ key = core.Kdf(option.Password, 16)
+ } else {
+ ciph, ok := coreCiph.(*core.StreamCipher)
+ if !ok {
+ return nil, fmt.Errorf("%s is not none or a supported stream cipher in ssr", cipher)
+ }
+ ivSize = ciph.IVSize()
+ key = ciph.Key
+ }
+
+ obfs, obfsOverhead, err := obfs.PickObfs(option.Obfs, &obfs.Base{
+ Host: option.Server,
+ Port: option.Port,
+ Key: key,
+ IVSize: ivSize,
+ Param: option.ObfsParam,
+ })
+ if err != nil {
+ return nil, fmt.Errorf("ssr %s initialize obfs error: %w", addr, err)
+ }
+
+ protocol, err := protocol.PickProtocol(option.Protocol, &protocol.Base{
+ Key: key,
+ Overhead: obfsOverhead,
+ Param: option.ProtocolParam,
+ })
+ if err != nil {
+ return nil, fmt.Errorf("ssr %s initialize protocol error: %w", addr, err)
+ }
+
+ return &ShadowSocksR{
+ Base: &Base{
+ name: option.Name,
+ addr: addr,
+ tp: C.ShadowsocksR,
+ udp: option.UDP,
+ tfo: option.TFO,
+ mpTcp: option.MPTCP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ option: &option,
+ cipher: coreCiph,
+ obfs: obfs,
+ protocol: protocol,
+ }, nil
+}
+
+type ssrPacketConn struct {
+ N.EnhancePacketConn
+ rAddr net.Addr
+}
+
+func (spc *ssrPacketConn) WriteTo(b []byte, addr net.Addr) (n int, err error) {
+ packet, err := socks5.EncodeUDPPacket(socks5.ParseAddrToSocksAddr(addr), b)
+ if err != nil {
+ return
+ }
+ return spc.EnhancePacketConn.WriteTo(packet[3:], spc.rAddr)
+}
+
+func (spc *ssrPacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ n, _, e := spc.EnhancePacketConn.ReadFrom(b)
+ if e != nil {
+ return 0, nil, e
+ }
+
+ addr := socks5.SplitAddr(b[:n])
+ if addr == nil {
+ return 0, nil, errors.New("parse addr error")
+ }
+
+ udpAddr := addr.UDPAddr()
+ if udpAddr == nil {
+ return 0, nil, errors.New("parse addr error")
+ }
+
+ copy(b, b[len(addr):])
+ return n - len(addr), udpAddr, e
+}
+
+func (spc *ssrPacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ data, put, _, err = spc.EnhancePacketConn.WaitReadFrom()
+ if err != nil {
+ return nil, nil, nil, err
+ }
+
+ _addr := socks5.SplitAddr(data)
+ if _addr == nil {
+ if put != nil {
+ put()
+ }
+ return nil, nil, nil, errors.New("parse addr error")
+ }
+
+ addr = _addr.UDPAddr()
+ if addr == nil {
+ if put != nil {
+ put()
+ }
+ return nil, nil, nil, errors.New("parse addr error")
+ }
+
+ data = data[len(_addr):]
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/singmux.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/singmux.go
new file mode 100644
index 0000000..6726774
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/singmux.go
@@ -0,0 +1,135 @@
+package outbound
+
+import (
+ "context"
+ "errors"
+ "runtime"
+
+ CN "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ mux "github.com/sagernet/sing-mux"
+ E "github.com/sagernet/sing/common/exceptions"
+ M "github.com/sagernet/sing/common/metadata"
+)
+
+type SingMux struct {
+ C.ProxyAdapter
+ base ProxyBase
+ client *mux.Client
+ dialer proxydialer.SingDialer
+ onlyTcp bool
+}
+
+type SingMuxOption struct {
+ Enabled bool `proxy:"enabled,omitempty"`
+ Protocol string `proxy:"protocol,omitempty"`
+ MaxConnections int `proxy:"max-connections,omitempty"`
+ MinStreams int `proxy:"min-streams,omitempty"`
+ MaxStreams int `proxy:"max-streams,omitempty"`
+ Padding bool `proxy:"padding,omitempty"`
+ Statistic bool `proxy:"statistic,omitempty"`
+ OnlyTcp bool `proxy:"only-tcp,omitempty"`
+ BrutalOpts BrutalOption `proxy:"brutal-opts,omitempty"`
+}
+
+type BrutalOption struct {
+ Enabled bool `proxy:"enabled,omitempty"`
+ Up string `proxy:"up,omitempty"`
+ Down string `proxy:"down,omitempty"`
+}
+
+type ProxyBase interface {
+ DialOptions(opts ...dialer.Option) []dialer.Option
+}
+
+func (s *SingMux) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ options := s.base.DialOptions(opts...)
+ s.dialer.SetDialer(dialer.NewDialer(options...))
+ c, err := s.client.DialContext(ctx, "tcp", M.ParseSocksaddrHostPort(metadata.String(), metadata.DstPort))
+ if err != nil {
+ return nil, err
+ }
+ return NewConn(CN.NewRefConn(c, s), s.ProxyAdapter), err
+}
+
+func (s *SingMux) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
+ if s.onlyTcp {
+ return s.ProxyAdapter.ListenPacketContext(ctx, metadata, opts...)
+ }
+ options := s.base.DialOptions(opts...)
+ s.dialer.SetDialer(dialer.NewDialer(options...))
+
+ // sing-mux use stream-oriented udp with a special address, so we need a net.UDPAddr
+ if !metadata.Resolved() {
+ ip, err := resolver.ResolveIP(ctx, metadata.Host)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+
+ pc, err := s.client.ListenPacket(ctx, M.SocksaddrFromNet(metadata.UDPAddr()))
+ if err != nil {
+ return nil, err
+ }
+ if pc == nil {
+ return nil, E.New("packetConn is nil")
+ }
+ return newPacketConn(CN.NewRefPacketConn(CN.NewThreadSafePacketConn(pc), s), s.ProxyAdapter), nil
+}
+
+func (s *SingMux) SupportUDP() bool {
+ if s.onlyTcp {
+ return s.ProxyAdapter.SupportUDP()
+ }
+ return true
+}
+
+func (s *SingMux) SupportUOT() bool {
+ if s.onlyTcp {
+ return s.ProxyAdapter.SupportUOT()
+ }
+ return true
+}
+
+func closeSingMux(s *SingMux) {
+ _ = s.client.Close()
+}
+
+func NewSingMux(option SingMuxOption, proxy C.ProxyAdapter, base ProxyBase) (C.ProxyAdapter, error) {
+ // TODO
+ // "TCP Brutal is only supported on Linux-based systems"
+
+ singDialer := proxydialer.NewSingDialer(proxy, dialer.NewDialer(), option.Statistic)
+ client, err := mux.NewClient(mux.Options{
+ Dialer: singDialer,
+ Logger: log.SingLogger,
+ Protocol: option.Protocol,
+ MaxConnections: option.MaxConnections,
+ MinStreams: option.MinStreams,
+ MaxStreams: option.MaxStreams,
+ Padding: option.Padding,
+ Brutal: mux.BrutalOptions{
+ Enabled: option.BrutalOpts.Enabled,
+ SendBPS: StringToBps(option.BrutalOpts.Up),
+ ReceiveBPS: StringToBps(option.BrutalOpts.Down),
+ },
+ })
+ if err != nil {
+ return nil, err
+ }
+ outbound := &SingMux{
+ ProxyAdapter: proxy,
+ base: base,
+ client: client,
+ dialer: singDialer,
+ onlyTcp: option.OnlyTcp,
+ }
+ runtime.SetFinalizer(outbound, closeSingMux)
+ return outbound, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/snell.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/snell.go
new file mode 100644
index 0000000..f6a4b4f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/snell.go
@@ -0,0 +1,212 @@
+package outbound
+
+import (
+ "context"
+ "fmt"
+ "net"
+ "strconv"
+
+ "github.com/metacubex/mihomo/common/structure"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ C "github.com/metacubex/mihomo/constant"
+ obfs "github.com/metacubex/mihomo/transport/simple-obfs"
+ "github.com/metacubex/mihomo/transport/snell"
+)
+
+type Snell struct {
+ *Base
+ option *SnellOption
+ psk []byte
+ pool *snell.Pool
+ obfsOption *simpleObfsOption
+ version int
+}
+
+type SnellOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ Psk string `proxy:"psk"`
+ UDP bool `proxy:"udp,omitempty"`
+ Version int `proxy:"version,omitempty"`
+ ObfsOpts map[string]any `proxy:"obfs-opts,omitempty"`
+}
+
+type streamOption struct {
+ psk []byte
+ version int
+ addr string
+ obfsOption *simpleObfsOption
+}
+
+func streamConn(c net.Conn, option streamOption) *snell.Snell {
+ switch option.obfsOption.Mode {
+ case "tls":
+ c = obfs.NewTLSObfs(c, option.obfsOption.Host)
+ case "http":
+ _, port, _ := net.SplitHostPort(option.addr)
+ c = obfs.NewHTTPObfs(c, option.obfsOption.Host, port)
+ }
+ return snell.StreamConn(c, option.psk, option.version)
+}
+
+// StreamConnContext implements C.ProxyAdapter
+func (s *Snell) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (net.Conn, error) {
+ c = streamConn(c, streamOption{s.psk, s.version, s.addr, s.obfsOption})
+ if metadata.NetWork == C.UDP {
+ err := snell.WriteUDPHeader(c, s.version)
+ return c, err
+ }
+ err := snell.WriteHeader(c, metadata.String(), uint(metadata.DstPort), s.version)
+ return c, err
+}
+
+// DialContext implements C.ProxyAdapter
+func (s *Snell) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ if s.version == snell.Version2 && len(opts) == 0 {
+ c, err := s.pool.Get()
+ if err != nil {
+ return nil, err
+ }
+
+ if err = snell.WriteHeader(c, metadata.String(), uint(metadata.DstPort), s.version); err != nil {
+ c.Close()
+ return nil, err
+ }
+ return NewConn(c, s), err
+ }
+
+ return s.DialContextWithDialer(ctx, dialer.NewDialer(s.Base.DialOptions(opts...)...), metadata)
+}
+
+// DialContextWithDialer implements C.ProxyAdapter
+func (s *Snell) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error) {
+ if len(s.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(s.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := dialer.DialContext(ctx, "tcp", s.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", s.addr, err)
+ }
+
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = s.StreamConnContext(ctx, c, metadata)
+ return NewConn(c, s), err
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (s *Snell) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ return s.ListenPacketWithDialer(ctx, dialer.NewDialer(s.Base.DialOptions(opts...)...), metadata)
+}
+
+// ListenPacketWithDialer implements C.ProxyAdapter
+func (s *Snell) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (C.PacketConn, error) {
+ var err error
+ if len(s.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(s.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := dialer.DialContext(ctx, "tcp", s.addr)
+ if err != nil {
+ return nil, err
+ }
+ c = streamConn(c, streamOption{s.psk, s.version, s.addr, s.obfsOption})
+
+ err = snell.WriteUDPHeader(c, s.version)
+ if err != nil {
+ return nil, err
+ }
+
+ pc := snell.PacketConn(c)
+ return newPacketConn(pc, s), nil
+}
+
+// SupportWithDialer implements C.ProxyAdapter
+func (s *Snell) SupportWithDialer() C.NetWork {
+ return C.ALLNet
+}
+
+// SupportUOT implements C.ProxyAdapter
+func (s *Snell) SupportUOT() bool {
+ return true
+}
+
+func NewSnell(option SnellOption) (*Snell, error) {
+ addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port))
+ psk := []byte(option.Psk)
+
+ decoder := structure.NewDecoder(structure.Option{TagName: "obfs", WeaklyTypedInput: true})
+ obfsOption := &simpleObfsOption{Host: "bing.com"}
+ if err := decoder.Decode(option.ObfsOpts, obfsOption); err != nil {
+ return nil, fmt.Errorf("snell %s initialize obfs error: %w", addr, err)
+ }
+
+ switch obfsOption.Mode {
+ case "tls", "http", "":
+ break
+ default:
+ return nil, fmt.Errorf("snell %s obfs mode error: %s", addr, obfsOption.Mode)
+ }
+
+ // backward compatible
+ if option.Version == 0 {
+ option.Version = snell.DefaultSnellVersion
+ }
+ switch option.Version {
+ case snell.Version1, snell.Version2:
+ if option.UDP {
+ return nil, fmt.Errorf("snell version %d not support UDP", option.Version)
+ }
+ case snell.Version3:
+ default:
+ return nil, fmt.Errorf("snell version error: %d", option.Version)
+ }
+
+ s := &Snell{
+ Base: &Base{
+ name: option.Name,
+ addr: addr,
+ tp: C.Snell,
+ udp: option.UDP,
+ tfo: option.TFO,
+ mpTcp: option.MPTCP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ option: &option,
+ psk: psk,
+ obfsOption: obfsOption,
+ version: option.Version,
+ }
+
+ if option.Version == snell.Version2 {
+ s.pool = snell.NewPool(func(ctx context.Context) (*snell.Snell, error) {
+ var err error
+ var cDialer C.Dialer = dialer.NewDialer(s.Base.DialOptions()...)
+ if len(s.option.DialerProxy) > 0 {
+ cDialer, err = proxydialer.NewByName(s.option.DialerProxy, cDialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := cDialer.DialContext(ctx, "tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ return streamConn(c, streamOption{psk, option.Version, addr, obfsOption}), nil
+ })
+ }
+ return s, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/socks5.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/socks5.go
new file mode 100644
index 0000000..1908167
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/socks5.go
@@ -0,0 +1,247 @@
+package outbound
+
+import (
+ "context"
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "io"
+ "net"
+ "net/netip"
+ "strconv"
+
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type Socks5 struct {
+ *Base
+ option *Socks5Option
+ user string
+ pass string
+ tls bool
+ skipCertVerify bool
+ tlsConfig *tls.Config
+}
+
+type Socks5Option struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ UserName string `proxy:"username,omitempty"`
+ Password string `proxy:"password,omitempty"`
+ TLS bool `proxy:"tls,omitempty"`
+ UDP bool `proxy:"udp,omitempty"`
+ SkipCertVerify bool `proxy:"skip-cert-verify,omitempty"`
+ Fingerprint string `proxy:"fingerprint,omitempty"`
+}
+
+// StreamConnContext implements C.ProxyAdapter
+func (ss *Socks5) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (net.Conn, error) {
+ if ss.tls {
+ cc := tls.Client(c, ss.tlsConfig)
+ err := cc.HandshakeContext(ctx)
+ c = cc
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", ss.addr, err)
+ }
+ }
+
+ var user *socks5.User
+ if ss.user != "" {
+ user = &socks5.User{
+ Username: ss.user,
+ Password: ss.pass,
+ }
+ }
+ if _, err := socks5.ClientHandshake(c, serializesSocksAddr(metadata), socks5.CmdConnect, user); err != nil {
+ return nil, err
+ }
+ return c, nil
+}
+
+// DialContext implements C.ProxyAdapter
+func (ss *Socks5) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ return ss.DialContextWithDialer(ctx, dialer.NewDialer(ss.Base.DialOptions(opts...)...), metadata)
+}
+
+// DialContextWithDialer implements C.ProxyAdapter
+func (ss *Socks5) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error) {
+ if len(ss.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(ss.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := dialer.DialContext(ctx, "tcp", ss.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", ss.addr, err)
+ }
+
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = ss.StreamConnContext(ctx, c, metadata)
+ if err != nil {
+ return nil, err
+ }
+
+ return NewConn(c, ss), nil
+}
+
+// SupportWithDialer implements C.ProxyAdapter
+func (ss *Socks5) SupportWithDialer() C.NetWork {
+ return C.TCP
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (ss *Socks5) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
+ var cDialer C.Dialer = dialer.NewDialer(ss.Base.DialOptions(opts...)...)
+ if len(ss.option.DialerProxy) > 0 {
+ cDialer, err = proxydialer.NewByName(ss.option.DialerProxy, cDialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := cDialer.DialContext(ctx, "tcp", ss.addr)
+ if err != nil {
+ err = fmt.Errorf("%s connect error: %w", ss.addr, err)
+ return
+ }
+
+ if ss.tls {
+ cc := tls.Client(c, ss.tlsConfig)
+ ctx, cancel := context.WithTimeout(context.Background(), C.DefaultTLSTimeout)
+ defer cancel()
+ err = cc.HandshakeContext(ctx)
+ c = cc
+ }
+
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ var user *socks5.User
+ if ss.user != "" {
+ user = &socks5.User{
+ Username: ss.user,
+ Password: ss.pass,
+ }
+ }
+
+ udpAssocateAddr := socks5.AddrFromStdAddrPort(netip.AddrPortFrom(netip.IPv4Unspecified(), 0))
+ bindAddr, err := socks5.ClientHandshake(c, udpAssocateAddr, socks5.CmdUDPAssociate, user)
+ if err != nil {
+ err = fmt.Errorf("client hanshake error: %w", err)
+ return
+ }
+
+ // Support unspecified UDP bind address.
+ bindUDPAddr := bindAddr.UDPAddr()
+ if bindUDPAddr == nil {
+ err = errors.New("invalid UDP bind address")
+ return
+ } else if bindUDPAddr.IP.IsUnspecified() {
+ serverAddr, err := resolveUDPAddr(ctx, "udp", ss.Addr())
+ if err != nil {
+ return nil, err
+ }
+
+ bindUDPAddr.IP = serverAddr.IP
+ }
+
+ pc, err := cDialer.ListenPacket(ctx, "udp", "", bindUDPAddr.AddrPort())
+ if err != nil {
+ return
+ }
+
+ go func() {
+ io.Copy(io.Discard, c)
+ c.Close()
+ // A UDP association terminates when the TCP connection that the UDP
+ // ASSOCIATE request arrived on terminates. RFC1928
+ pc.Close()
+ }()
+
+ return newPacketConn(&socksPacketConn{PacketConn: pc, rAddr: bindUDPAddr, tcpConn: c}, ss), nil
+}
+
+func NewSocks5(option Socks5Option) (*Socks5, error) {
+ var tlsConfig *tls.Config
+ if option.TLS {
+ tlsConfig = &tls.Config{
+ InsecureSkipVerify: option.SkipCertVerify,
+ ServerName: option.Server,
+ }
+
+ var err error
+ tlsConfig, err = ca.GetSpecifiedFingerprintTLSConfig(tlsConfig, option.Fingerprint)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ return &Socks5{
+ Base: &Base{
+ name: option.Name,
+ addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)),
+ tp: C.Socks5,
+ udp: option.UDP,
+ tfo: option.TFO,
+ mpTcp: option.MPTCP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ option: &option,
+ user: option.UserName,
+ pass: option.Password,
+ tls: option.TLS,
+ skipCertVerify: option.SkipCertVerify,
+ tlsConfig: tlsConfig,
+ }, nil
+}
+
+type socksPacketConn struct {
+ net.PacketConn
+ rAddr net.Addr
+ tcpConn net.Conn
+}
+
+func (uc *socksPacketConn) WriteTo(b []byte, addr net.Addr) (n int, err error) {
+ packet, err := socks5.EncodeUDPPacket(socks5.ParseAddrToSocksAddr(addr), b)
+ if err != nil {
+ return
+ }
+ return uc.PacketConn.WriteTo(packet, uc.rAddr)
+}
+
+func (uc *socksPacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ n, _, e := uc.PacketConn.ReadFrom(b)
+ if e != nil {
+ return 0, nil, e
+ }
+ addr, payload, err := socks5.DecodeUDPPacket(b)
+ if err != nil {
+ return 0, nil, err
+ }
+
+ udpAddr := addr.UDPAddr()
+ if udpAddr == nil {
+ return 0, nil, errors.New("parse udp addr error")
+ }
+
+ // due to DecodeUDPPacket is mutable, record addr length
+ copy(b, payload)
+ return n - len(addr) - 3, udpAddr, nil
+}
+
+func (uc *socksPacketConn) Close() error {
+ uc.tcpConn.Close()
+ return uc.PacketConn.Close()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/ssh.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/ssh.go
new file mode 100644
index 0000000..9e23b46
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/ssh.go
@@ -0,0 +1,207 @@
+package outbound
+
+import (
+ "bytes"
+ "context"
+ "encoding/base64"
+ "fmt"
+ "net"
+ "os"
+ "runtime"
+ "strconv"
+ "strings"
+ "sync"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/metacubex/randv2"
+ "golang.org/x/crypto/ssh"
+)
+
+type Ssh struct {
+ *Base
+
+ option *SshOption
+ client *sshClient // using a standalone struct to avoid its inner loop invalidate the Finalizer
+}
+
+type SshOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ UserName string `proxy:"username"`
+ Password string `proxy:"password,omitempty"`
+ PrivateKey string `proxy:"private-key,omitempty"`
+ PrivateKeyPassphrase string `proxy:"private-key-passphrase,omitempty"`
+ HostKey []string `proxy:"host-key,omitempty"`
+ HostKeyAlgorithms []string `proxy:"host-key-algorithms,omitempty"`
+}
+
+func (s *Ssh) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ var cDialer C.Dialer = dialer.NewDialer(s.Base.DialOptions(opts...)...)
+ if len(s.option.DialerProxy) > 0 {
+ cDialer, err = proxydialer.NewByName(s.option.DialerProxy, cDialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ client, err := s.client.connect(ctx, cDialer, s.addr)
+ if err != nil {
+ return nil, err
+ }
+ c, err := client.DialContext(ctx, "tcp", metadata.RemoteAddress())
+ if err != nil {
+ return nil, err
+ }
+
+ return NewConn(N.NewRefConn(c, s), s), nil
+}
+
+type sshClient struct {
+ config *ssh.ClientConfig
+ client *ssh.Client
+ cMutex sync.Mutex
+}
+
+func (s *sshClient) connect(ctx context.Context, cDialer C.Dialer, addr string) (client *ssh.Client, err error) {
+ s.cMutex.Lock()
+ defer s.cMutex.Unlock()
+ if s.client != nil {
+ return s.client, nil
+ }
+ c, err := cDialer.DialContext(ctx, "tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ if ctx.Done() != nil {
+ done := N.SetupContextForConn(ctx, c)
+ defer done(&err)
+ }
+
+ clientConn, chans, reqs, err := ssh.NewClientConn(c, addr, s.config)
+ if err != nil {
+ return nil, err
+ }
+ client = ssh.NewClient(clientConn, chans, reqs)
+
+ s.client = client
+
+ go func() {
+ _ = client.Wait() // wait shutdown
+ _ = client.Close()
+ s.cMutex.Lock()
+ defer s.cMutex.Unlock()
+ if s.client == client {
+ s.client = nil
+ }
+ }()
+
+ return client, nil
+}
+
+func (s *sshClient) Close() error {
+ s.cMutex.Lock()
+ defer s.cMutex.Unlock()
+ if s.client != nil {
+ return s.client.Close()
+ }
+ return nil
+}
+
+func closeSsh(s *Ssh) {
+ _ = s.client.Close()
+}
+
+func NewSsh(option SshOption) (*Ssh, error) {
+ addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port))
+
+ config := ssh.ClientConfig{
+ User: option.UserName,
+ HostKeyCallback: ssh.InsecureIgnoreHostKey(),
+ HostKeyAlgorithms: option.HostKeyAlgorithms,
+ }
+
+ if option.PrivateKey != "" {
+ var b []byte
+ var err error
+ if strings.Contains(option.PrivateKey, "PRIVATE KEY") {
+ b = []byte(option.PrivateKey)
+ } else {
+ b, err = os.ReadFile(C.Path.Resolve(option.PrivateKey))
+ if err != nil {
+ return nil, err
+ }
+ }
+ var pKey ssh.Signer
+ if option.PrivateKeyPassphrase != "" {
+ pKey, err = ssh.ParsePrivateKeyWithPassphrase(b, []byte(option.PrivateKeyPassphrase))
+ } else {
+ pKey, err = ssh.ParsePrivateKey(b)
+ }
+ if err != nil {
+ return nil, err
+ }
+
+ config.Auth = append(config.Auth, ssh.PublicKeys(pKey))
+ }
+
+ if option.Password != "" {
+ config.Auth = append(config.Auth, ssh.Password(option.Password))
+ }
+
+ if len(option.HostKey) != 0 {
+ keys := make([]ssh.PublicKey, len(option.HostKey))
+ for i, hostKey := range option.HostKey {
+ key, _, _, _, err := ssh.ParseAuthorizedKey([]byte(hostKey))
+ if err != nil {
+ return nil, fmt.Errorf("parse host key :%s", key)
+ }
+ keys[i] = key
+ }
+ config.HostKeyCallback = func(hostname string, remote net.Addr, key ssh.PublicKey) error {
+ serverKey := key.Marshal()
+ for _, hostKey := range keys {
+ if bytes.Equal(serverKey, hostKey.Marshal()) {
+ return nil
+ }
+ }
+ return fmt.Errorf("host key mismatch, server send :%s %s", key.Type(), base64.StdEncoding.EncodeToString(serverKey))
+ }
+ }
+
+ version := "SSH-2.0-OpenSSH_"
+ if randv2.IntN(2) == 0 {
+ version += "7." + strconv.Itoa(randv2.IntN(10))
+ } else {
+ version += "8." + strconv.Itoa(randv2.IntN(9))
+ }
+ config.ClientVersion = version
+
+ outbound := &Ssh{
+ Base: &Base{
+ name: option.Name,
+ addr: addr,
+ tp: C.Ssh,
+ udp: false,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ option: &option,
+ client: &sshClient{
+ config: &config,
+ },
+ }
+ runtime.SetFinalizer(outbound, closeSsh)
+
+ return outbound, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/trojan.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/trojan.go
new file mode 100644
index 0000000..b3a611a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/trojan.go
@@ -0,0 +1,340 @@
+package outbound
+
+import (
+ "context"
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "net"
+ "net/http"
+ "strconv"
+
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ tlsC "github.com/metacubex/mihomo/component/tls"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/gun"
+ "github.com/metacubex/mihomo/transport/shadowsocks/core"
+ "github.com/metacubex/mihomo/transport/trojan"
+)
+
+type Trojan struct {
+ *Base
+ instance *trojan.Trojan
+ option *TrojanOption
+
+ // for gun mux
+ gunTLSConfig *tls.Config
+ gunConfig *gun.Config
+ transport *gun.TransportWrap
+
+ realityConfig *tlsC.RealityConfig
+
+ ssCipher core.Cipher
+}
+
+type TrojanOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ Password string `proxy:"password"`
+ ALPN []string `proxy:"alpn,omitempty"`
+ SNI string `proxy:"sni,omitempty"`
+ SkipCertVerify bool `proxy:"skip-cert-verify,omitempty"`
+ Fingerprint string `proxy:"fingerprint,omitempty"`
+ UDP bool `proxy:"udp,omitempty"`
+ Network string `proxy:"network,omitempty"`
+ RealityOpts RealityOptions `proxy:"reality-opts,omitempty"`
+ GrpcOpts GrpcOptions `proxy:"grpc-opts,omitempty"`
+ WSOpts WSOptions `proxy:"ws-opts,omitempty"`
+ SSOpts TrojanSSOption `proxy:"ss-opts,omitempty"`
+ ClientFingerprint string `proxy:"client-fingerprint,omitempty"`
+}
+
+// TrojanSSOption from https://github.com/p4gefau1t/trojan-go/blob/v0.10.6/tunnel/shadowsocks/config.go#L5
+type TrojanSSOption struct {
+ Enabled bool `proxy:"enabled,omitempty"`
+ Method string `proxy:"method,omitempty"`
+ Password string `proxy:"password,omitempty"`
+}
+
+func (t *Trojan) plainStream(ctx context.Context, c net.Conn) (net.Conn, error) {
+ if t.option.Network == "ws" {
+ host, port, _ := net.SplitHostPort(t.addr)
+ wsOpts := &trojan.WebsocketOption{
+ Host: host,
+ Port: port,
+ Path: t.option.WSOpts.Path,
+ V2rayHttpUpgrade: t.option.WSOpts.V2rayHttpUpgrade,
+ V2rayHttpUpgradeFastOpen: t.option.WSOpts.V2rayHttpUpgradeFastOpen,
+ Headers: http.Header{},
+ }
+
+ if t.option.SNI != "" {
+ wsOpts.Host = t.option.SNI
+ }
+
+ if len(t.option.WSOpts.Headers) != 0 {
+ for key, value := range t.option.WSOpts.Headers {
+ wsOpts.Headers.Add(key, value)
+ }
+ }
+
+ return t.instance.StreamWebsocketConn(ctx, c, wsOpts)
+ }
+
+ return t.instance.StreamConn(ctx, c)
+}
+
+// StreamConnContext implements C.ProxyAdapter
+func (t *Trojan) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (net.Conn, error) {
+ var err error
+
+ if tlsC.HaveGlobalFingerprint() && len(t.option.ClientFingerprint) == 0 {
+ t.option.ClientFingerprint = tlsC.GetGlobalFingerprint()
+ }
+
+ if t.transport != nil {
+ c, err = gun.StreamGunWithConn(c, t.gunTLSConfig, t.gunConfig, t.realityConfig)
+ } else {
+ c, err = t.plainStream(ctx, c)
+ }
+
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", t.addr, err)
+ }
+
+ if t.ssCipher != nil {
+ c = t.ssCipher.StreamConn(c)
+ }
+
+ if metadata.NetWork == C.UDP {
+ err = t.instance.WriteHeader(c, trojan.CommandUDP, serializesSocksAddr(metadata))
+ return c, err
+ }
+ err = t.instance.WriteHeader(c, trojan.CommandTCP, serializesSocksAddr(metadata))
+ return c, err
+}
+
+// DialContext implements C.ProxyAdapter
+func (t *Trojan) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ // gun transport
+ if t.transport != nil && len(opts) == 0 {
+ c, err := gun.StreamGunWithTransport(t.transport, t.gunConfig)
+ if err != nil {
+ return nil, err
+ }
+
+ if t.ssCipher != nil {
+ c = t.ssCipher.StreamConn(c)
+ }
+
+ if err = t.instance.WriteHeader(c, trojan.CommandTCP, serializesSocksAddr(metadata)); err != nil {
+ c.Close()
+ return nil, err
+ }
+
+ return NewConn(c, t), nil
+ }
+ return t.DialContextWithDialer(ctx, dialer.NewDialer(t.Base.DialOptions(opts...)...), metadata)
+}
+
+// DialContextWithDialer implements C.ProxyAdapter
+func (t *Trojan) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error) {
+ if len(t.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(t.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := dialer.DialContext(ctx, "tcp", t.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", t.addr, err)
+ }
+
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = t.StreamConnContext(ctx, c, metadata)
+ if err != nil {
+ return nil, err
+ }
+
+ return NewConn(c, t), err
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (t *Trojan) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
+ var c net.Conn
+
+ // grpc transport
+ if t.transport != nil && len(opts) == 0 {
+ c, err = gun.StreamGunWithTransport(t.transport, t.gunConfig)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", t.addr, err)
+ }
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ if t.ssCipher != nil {
+ c = t.ssCipher.StreamConn(c)
+ }
+
+ err = t.instance.WriteHeader(c, trojan.CommandUDP, serializesSocksAddr(metadata))
+ if err != nil {
+ return nil, err
+ }
+
+ pc := t.instance.PacketConn(c)
+ return newPacketConn(pc, t), err
+ }
+ return t.ListenPacketWithDialer(ctx, dialer.NewDialer(t.Base.DialOptions(opts...)...), metadata)
+}
+
+// ListenPacketWithDialer implements C.ProxyAdapter
+func (t *Trojan) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ if len(t.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(t.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := dialer.DialContext(ctx, "tcp", t.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", t.addr, err)
+ }
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+ c, err = t.plainStream(ctx, c)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %w", t.addr, err)
+ }
+
+ if t.ssCipher != nil {
+ c = t.ssCipher.StreamConn(c)
+ }
+
+ err = t.instance.WriteHeader(c, trojan.CommandUDP, serializesSocksAddr(metadata))
+ if err != nil {
+ return nil, err
+ }
+
+ pc := t.instance.PacketConn(c)
+ return newPacketConn(pc, t), err
+}
+
+// SupportWithDialer implements C.ProxyAdapter
+func (t *Trojan) SupportWithDialer() C.NetWork {
+ return C.ALLNet
+}
+
+// ListenPacketOnStreamConn implements C.ProxyAdapter
+func (t *Trojan) ListenPacketOnStreamConn(c net.Conn, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ pc := t.instance.PacketConn(c)
+ return newPacketConn(pc, t), err
+}
+
+// SupportUOT implements C.ProxyAdapter
+func (t *Trojan) SupportUOT() bool {
+ return true
+}
+
+func NewTrojan(option TrojanOption) (*Trojan, error) {
+ addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port))
+
+ tOption := &trojan.Option{
+ Password: option.Password,
+ ALPN: option.ALPN,
+ ServerName: option.Server,
+ SkipCertVerify: option.SkipCertVerify,
+ Fingerprint: option.Fingerprint,
+ ClientFingerprint: option.ClientFingerprint,
+ }
+
+ if option.SNI != "" {
+ tOption.ServerName = option.SNI
+ }
+
+ t := &Trojan{
+ Base: &Base{
+ name: option.Name,
+ addr: addr,
+ tp: C.Trojan,
+ udp: option.UDP,
+ tfo: option.TFO,
+ mpTcp: option.MPTCP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ instance: trojan.New(tOption),
+ option: &option,
+ }
+
+ var err error
+ t.realityConfig, err = option.RealityOpts.Parse()
+ if err != nil {
+ return nil, err
+ }
+ tOption.Reality = t.realityConfig
+
+ if option.SSOpts.Enabled {
+ if option.SSOpts.Password == "" {
+ return nil, errors.New("empty password")
+ }
+ if option.SSOpts.Method == "" {
+ option.SSOpts.Method = "AES-128-GCM"
+ }
+ ciph, err := core.PickCipher(option.SSOpts.Method, nil, option.SSOpts.Password)
+ if err != nil {
+ return nil, err
+ }
+ t.ssCipher = ciph
+ }
+
+ if option.Network == "grpc" {
+ dialFn := func(network, addr string) (net.Conn, error) {
+ var err error
+ var cDialer C.Dialer = dialer.NewDialer(t.Base.DialOptions()...)
+ if len(t.option.DialerProxy) > 0 {
+ cDialer, err = proxydialer.NewByName(t.option.DialerProxy, cDialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := cDialer.DialContext(context.Background(), "tcp", t.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %s", t.addr, err.Error())
+ }
+ return c, nil
+ }
+
+ tlsConfig := &tls.Config{
+ NextProtos: option.ALPN,
+ MinVersion: tls.VersionTLS12,
+ InsecureSkipVerify: tOption.SkipCertVerify,
+ ServerName: tOption.ServerName,
+ }
+
+ var err error
+ tlsConfig, err = ca.GetSpecifiedFingerprintTLSConfig(tlsConfig, option.Fingerprint)
+ if err != nil {
+ return nil, err
+ }
+
+ t.transport = gun.NewHTTP2Client(dialFn, tlsConfig, tOption.ClientFingerprint, t.realityConfig)
+
+ t.gunTLSConfig = tlsConfig
+ t.gunConfig = &gun.Config{
+ ServiceName: option.GrpcOpts.GrpcServiceName,
+ Host: tOption.ServerName,
+ }
+ }
+
+ return t, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/tuic.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/tuic.go
new file mode 100644
index 0000000..666e72f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/tuic.go
@@ -0,0 +1,316 @@
+package outbound
+
+import (
+ "context"
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "math"
+ "net"
+ "strconv"
+ "time"
+
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/tuic"
+
+ "github.com/gofrs/uuid/v5"
+ "github.com/metacubex/quic-go"
+ M "github.com/sagernet/sing/common/metadata"
+ "github.com/sagernet/sing/common/uot"
+)
+
+type Tuic struct {
+ *Base
+ option *TuicOption
+ client *tuic.PoolClient
+}
+
+type TuicOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ Token string `proxy:"token,omitempty"`
+ UUID string `proxy:"uuid,omitempty"`
+ Password string `proxy:"password,omitempty"`
+ Ip string `proxy:"ip,omitempty"`
+ HeartbeatInterval int `proxy:"heartbeat-interval,omitempty"`
+ ALPN []string `proxy:"alpn,omitempty"`
+ ReduceRtt bool `proxy:"reduce-rtt,omitempty"`
+ RequestTimeout int `proxy:"request-timeout,omitempty"`
+ UdpRelayMode string `proxy:"udp-relay-mode,omitempty"`
+ CongestionController string `proxy:"congestion-controller,omitempty"`
+ DisableSni bool `proxy:"disable-sni,omitempty"`
+ MaxUdpRelayPacketSize int `proxy:"max-udp-relay-packet-size,omitempty"`
+
+ FastOpen bool `proxy:"fast-open,omitempty"`
+ MaxOpenStreams int `proxy:"max-open-streams,omitempty"`
+ CWND int `proxy:"cwnd,omitempty"`
+ SkipCertVerify bool `proxy:"skip-cert-verify,omitempty"`
+ Fingerprint string `proxy:"fingerprint,omitempty"`
+ CustomCA string `proxy:"ca,omitempty"`
+ CustomCAString string `proxy:"ca-str,omitempty"`
+ ReceiveWindowConn int `proxy:"recv-window-conn,omitempty"`
+ ReceiveWindow int `proxy:"recv-window,omitempty"`
+ DisableMTUDiscovery bool `proxy:"disable-mtu-discovery,omitempty"`
+ MaxDatagramFrameSize int `proxy:"max-datagram-frame-size,omitempty"`
+ SNI string `proxy:"sni,omitempty"`
+
+ UDPOverStream bool `proxy:"udp-over-stream,omitempty"`
+ UDPOverStreamVersion int `proxy:"udp-over-stream-version,omitempty"`
+}
+
+// DialContext implements C.ProxyAdapter
+func (t *Tuic) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ return t.DialContextWithDialer(ctx, dialer.NewDialer(t.Base.DialOptions(opts...)...), metadata)
+}
+
+// DialContextWithDialer implements C.ProxyAdapter
+func (t *Tuic) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (C.Conn, error) {
+ conn, err := t.client.DialContextWithDialer(ctx, metadata, dialer, t.dialWithDialer)
+ if err != nil {
+ return nil, err
+ }
+ return NewConn(conn, t), err
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (t *Tuic) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
+ return t.ListenPacketWithDialer(ctx, dialer.NewDialer(t.Base.DialOptions(opts...)...), metadata)
+}
+
+// ListenPacketWithDialer implements C.ProxyAdapter
+func (t *Tuic) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ if t.option.UDPOverStream {
+ uotDestination := uot.RequestDestination(uint8(t.option.UDPOverStreamVersion))
+ uotMetadata := *metadata
+ uotMetadata.Host = uotDestination.Fqdn
+ uotMetadata.DstPort = uotDestination.Port
+ c, err := t.DialContextWithDialer(ctx, dialer, &uotMetadata)
+ if err != nil {
+ return nil, err
+ }
+
+ // tuic uos use stream-oriented udp with a special address, so we need a net.UDPAddr
+ if !metadata.Resolved() {
+ ip, err := resolver.ResolveIP(ctx, metadata.Host)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+
+ destination := M.SocksaddrFromNet(metadata.UDPAddr())
+ if t.option.UDPOverStreamVersion == uot.LegacyVersion {
+ return newPacketConn(uot.NewConn(c, uot.Request{Destination: destination}), t), nil
+ } else {
+ return newPacketConn(uot.NewLazyConn(c, uot.Request{Destination: destination}), t), nil
+ }
+ }
+ pc, err := t.client.ListenPacketWithDialer(ctx, metadata, dialer, t.dialWithDialer)
+ if err != nil {
+ return nil, err
+ }
+ return newPacketConn(pc, t), nil
+}
+
+// SupportWithDialer implements C.ProxyAdapter
+func (t *Tuic) SupportWithDialer() C.NetWork {
+ return C.ALLNet
+}
+
+func (t *Tuic) dialWithDialer(ctx context.Context, dialer C.Dialer) (transport *quic.Transport, addr net.Addr, err error) {
+ if len(t.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(t.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, nil, err
+ }
+ }
+ udpAddr, err := resolveUDPAddrWithPrefer(ctx, "udp", t.addr, t.prefer)
+ if err != nil {
+ return nil, nil, err
+ }
+ addr = udpAddr
+ var pc net.PacketConn
+ pc, err = dialer.ListenPacket(ctx, "udp", "", udpAddr.AddrPort())
+ if err != nil {
+ return nil, nil, err
+ }
+ transport = &quic.Transport{Conn: pc}
+ transport.SetCreatedConn(true) // auto close conn
+ transport.SetSingleUse(true) // auto close transport
+ return
+}
+
+func NewTuic(option TuicOption) (*Tuic, error) {
+ addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port))
+ serverName := option.Server
+ tlsConfig := &tls.Config{
+ ServerName: serverName,
+ InsecureSkipVerify: option.SkipCertVerify,
+ MinVersion: tls.VersionTLS13,
+ }
+ if option.SNI != "" {
+ tlsConfig.ServerName = option.SNI
+ }
+
+ var err error
+ tlsConfig, err = ca.GetTLSConfig(tlsConfig, option.Fingerprint, option.CustomCA, option.CustomCAString)
+ if err != nil {
+ return nil, err
+ }
+
+ if option.ALPN != nil { // structure's Decode will ensure value not nil when input has value even it was set an empty array
+ tlsConfig.NextProtos = option.ALPN
+ } else {
+ tlsConfig.NextProtos = []string{"h3"}
+ }
+
+ if option.RequestTimeout == 0 {
+ option.RequestTimeout = 8000
+ }
+
+ if option.HeartbeatInterval <= 0 {
+ option.HeartbeatInterval = 10000
+ }
+
+ udpRelayMode := tuic.QUIC
+ if option.UdpRelayMode != "quic" {
+ udpRelayMode = tuic.NATIVE
+ }
+
+ if option.MaxUdpRelayPacketSize == 0 {
+ option.MaxUdpRelayPacketSize = 1252
+ }
+
+ if option.MaxOpenStreams == 0 {
+ option.MaxOpenStreams = 100
+ }
+
+ if option.CWND == 0 {
+ option.CWND = 32
+ }
+
+ packetOverHead := tuic.PacketOverHeadV4
+ if len(option.Token) == 0 {
+ packetOverHead = tuic.PacketOverHeadV5
+ }
+
+ if option.MaxDatagramFrameSize == 0 {
+ option.MaxDatagramFrameSize = option.MaxUdpRelayPacketSize + packetOverHead
+ }
+
+ if option.MaxDatagramFrameSize > 1400 {
+ option.MaxDatagramFrameSize = 1400
+ }
+ option.MaxUdpRelayPacketSize = option.MaxDatagramFrameSize - packetOverHead
+
+ // ensure server's incoming stream can handle correctly, increase to 1.1x
+ quicMaxOpenStreams := int64(option.MaxOpenStreams)
+ quicMaxOpenStreams = quicMaxOpenStreams + int64(math.Ceil(float64(quicMaxOpenStreams)/10.0))
+ quicConfig := &quic.Config{
+ InitialStreamReceiveWindow: uint64(option.ReceiveWindowConn),
+ MaxStreamReceiveWindow: uint64(option.ReceiveWindowConn),
+ InitialConnectionReceiveWindow: uint64(option.ReceiveWindow),
+ MaxConnectionReceiveWindow: uint64(option.ReceiveWindow),
+ MaxIncomingStreams: quicMaxOpenStreams,
+ MaxIncomingUniStreams: quicMaxOpenStreams,
+ KeepAlivePeriod: time.Duration(option.HeartbeatInterval) * time.Millisecond,
+ DisablePathMTUDiscovery: option.DisableMTUDiscovery,
+ MaxDatagramFrameSize: int64(option.MaxDatagramFrameSize),
+ EnableDatagrams: true,
+ }
+ if option.ReceiveWindowConn == 0 {
+ quicConfig.InitialStreamReceiveWindow = tuic.DefaultStreamReceiveWindow / 10
+ quicConfig.MaxStreamReceiveWindow = tuic.DefaultStreamReceiveWindow
+ }
+ if option.ReceiveWindow == 0 {
+ quicConfig.InitialConnectionReceiveWindow = tuic.DefaultConnectionReceiveWindow / 10
+ quicConfig.MaxConnectionReceiveWindow = tuic.DefaultConnectionReceiveWindow
+ }
+
+ if len(option.Ip) > 0 {
+ addr = net.JoinHostPort(option.Ip, strconv.Itoa(option.Port))
+ }
+ if option.DisableSni {
+ tlsConfig.ServerName = ""
+ tlsConfig.InsecureSkipVerify = true // tls: either ServerName or InsecureSkipVerify must be specified in the tls.Config
+ }
+
+ switch option.UDPOverStreamVersion {
+ case uot.Version, uot.LegacyVersion:
+ case 0:
+ option.UDPOverStreamVersion = uot.LegacyVersion
+ default:
+ return nil, fmt.Errorf("tuic %s unknown udp over stream protocol version: %d", addr, option.UDPOverStreamVersion)
+ }
+
+ t := &Tuic{
+ Base: &Base{
+ name: option.Name,
+ addr: addr,
+ tp: C.Tuic,
+ udp: true,
+ tfo: option.FastOpen,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ option: &option,
+ }
+
+ clientMaxOpenStreams := int64(option.MaxOpenStreams)
+
+ // to avoid tuic's "too many open streams", decrease to 0.9x
+ if clientMaxOpenStreams == 100 {
+ clientMaxOpenStreams = clientMaxOpenStreams - int64(math.Ceil(float64(clientMaxOpenStreams)/10.0))
+ }
+
+ if clientMaxOpenStreams < 1 {
+ clientMaxOpenStreams = 1
+ }
+
+ if len(option.Token) > 0 {
+ tkn := tuic.GenTKN(option.Token)
+ clientOption := &tuic.ClientOptionV4{
+ TlsConfig: tlsConfig,
+ QuicConfig: quicConfig,
+ Token: tkn,
+ UdpRelayMode: udpRelayMode,
+ CongestionController: option.CongestionController,
+ ReduceRtt: option.ReduceRtt,
+ RequestTimeout: time.Duration(option.RequestTimeout) * time.Millisecond,
+ MaxUdpRelayPacketSize: option.MaxUdpRelayPacketSize,
+ FastOpen: option.FastOpen,
+ MaxOpenStreams: clientMaxOpenStreams,
+ CWND: option.CWND,
+ }
+
+ t.client = tuic.NewPoolClientV4(clientOption)
+ } else {
+ maxUdpRelayPacketSize := option.MaxUdpRelayPacketSize
+ if maxUdpRelayPacketSize > tuic.MaxFragSizeV5 {
+ maxUdpRelayPacketSize = tuic.MaxFragSizeV5
+ }
+ clientOption := &tuic.ClientOptionV5{
+ TlsConfig: tlsConfig,
+ QuicConfig: quicConfig,
+ Uuid: uuid.FromStringOrNil(option.UUID),
+ Password: option.Password,
+ UdpRelayMode: udpRelayMode,
+ CongestionController: option.CongestionController,
+ ReduceRtt: option.ReduceRtt,
+ MaxUdpRelayPacketSize: maxUdpRelayPacketSize,
+ MaxOpenStreams: clientMaxOpenStreams,
+ CWND: option.CWND,
+ }
+
+ t.client = tuic.NewPoolClientV5(clientOption)
+ }
+
+ return t, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/util.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/util.go
new file mode 100644
index 0000000..9f0636a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/util.go
@@ -0,0 +1,164 @@
+package outbound
+
+import (
+ "bytes"
+ "context"
+ "crypto/tls"
+ "fmt"
+ "net"
+ "net/netip"
+ "regexp"
+ "strconv"
+ "sync"
+
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+var (
+ globalClientSessionCache tls.ClientSessionCache
+ once sync.Once
+)
+
+func getClientSessionCache() tls.ClientSessionCache {
+ once.Do(func() {
+ globalClientSessionCache = tls.NewLRUClientSessionCache(128)
+ })
+ return globalClientSessionCache
+}
+
+func serializesSocksAddr(metadata *C.Metadata) []byte {
+ var buf [][]byte
+ addrType := metadata.AddrType()
+ aType := uint8(addrType)
+ p := uint(metadata.DstPort)
+ port := []byte{uint8(p >> 8), uint8(p & 0xff)}
+ switch addrType {
+ case socks5.AtypDomainName:
+ lenM := uint8(len(metadata.Host))
+ host := []byte(metadata.Host)
+ buf = [][]byte{{aType, lenM}, host, port}
+ case socks5.AtypIPv4:
+ host := metadata.DstIP.AsSlice()
+ buf = [][]byte{{aType}, host, port}
+ case socks5.AtypIPv6:
+ host := metadata.DstIP.AsSlice()
+ buf = [][]byte{{aType}, host, port}
+ }
+ return bytes.Join(buf, nil)
+}
+
+func resolveUDPAddr(ctx context.Context, network, address string) (*net.UDPAddr, error) {
+ host, port, err := net.SplitHostPort(address)
+ if err != nil {
+ return nil, err
+ }
+
+ ip, err := resolver.ResolveIPWithResolver(ctx, host, resolver.ProxyServerHostResolver)
+ if err != nil {
+ return nil, err
+ }
+ return net.ResolveUDPAddr(network, net.JoinHostPort(ip.String(), port))
+}
+
+func resolveUDPAddrWithPrefer(ctx context.Context, network, address string, prefer C.DNSPrefer) (*net.UDPAddr, error) {
+ host, port, err := net.SplitHostPort(address)
+ if err != nil {
+ return nil, err
+ }
+ var ip netip.Addr
+ var fallback netip.Addr
+ switch prefer {
+ case C.IPv4Only:
+ ip, err = resolver.ResolveIPv4WithResolver(ctx, host, resolver.ProxyServerHostResolver)
+ case C.IPv6Only:
+ ip, err = resolver.ResolveIPv6WithResolver(ctx, host, resolver.ProxyServerHostResolver)
+ case C.IPv6Prefer:
+ var ips []netip.Addr
+ ips, err = resolver.LookupIPWithResolver(ctx, host, resolver.ProxyServerHostResolver)
+ if err == nil {
+ for _, addr := range ips {
+ if addr.Is6() {
+ ip = addr
+ break
+ } else {
+ if !fallback.IsValid() {
+ fallback = addr
+ }
+ }
+ }
+ }
+ default:
+ // C.IPv4Prefer, C.DualStack and other
+ var ips []netip.Addr
+ ips, err = resolver.LookupIPWithResolver(ctx, host, resolver.ProxyServerHostResolver)
+ if err == nil {
+ for _, addr := range ips {
+ if addr.Is4() {
+ ip = addr
+ break
+ } else {
+ if !fallback.IsValid() {
+ fallback = addr
+ }
+ }
+ }
+
+ }
+ }
+
+ if !ip.IsValid() && fallback.IsValid() {
+ ip = fallback
+ }
+
+ if err != nil {
+ return nil, err
+ }
+ return net.ResolveUDPAddr(network, net.JoinHostPort(ip.String(), port))
+}
+
+func safeConnClose(c net.Conn, err error) {
+ if err != nil && c != nil {
+ _ = c.Close()
+ }
+}
+
+var rateStringRegexp = regexp.MustCompile(`^(\d+)\s*([KMGT]?)([Bb])ps$`)
+
+func StringToBps(s string) uint64 {
+ if s == "" {
+ return 0
+ }
+
+ // when have not unit, use Mbps
+ if v, err := strconv.Atoi(s); err == nil {
+ return StringToBps(fmt.Sprintf("%d Mbps", v))
+ }
+
+ m := rateStringRegexp.FindStringSubmatch(s)
+ if m == nil {
+ return 0
+ }
+ var n uint64 = 1
+ switch m[2] {
+ case "T":
+ n *= 1000
+ fallthrough
+ case "G":
+ n *= 1000
+ fallthrough
+ case "M":
+ n *= 1000
+ fallthrough
+ case "K":
+ n *= 1000
+ }
+ v, _ := strconv.ParseUint(m[1], 10, 64)
+ n *= v
+ if m[3] == "b" {
+ // Bits, need to convert to bytes
+ n /= 8
+ }
+ return n
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/vless.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/vless.go
new file mode 100644
index 0000000..7905887
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/vless.go
@@ -0,0 +1,605 @@
+package outbound
+
+import (
+ "context"
+ "crypto/tls"
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "io"
+ "net"
+ "net/http"
+ "strconv"
+ "sync"
+
+ "github.com/metacubex/mihomo/common/convert"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ tlsC "github.com/metacubex/mihomo/component/tls"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/transport/gun"
+ "github.com/metacubex/mihomo/transport/socks5"
+ "github.com/metacubex/mihomo/transport/vless"
+ "github.com/metacubex/mihomo/transport/vmess"
+
+ vmessSing "github.com/metacubex/sing-vmess"
+ "github.com/metacubex/sing-vmess/packetaddr"
+ M "github.com/sagernet/sing/common/metadata"
+)
+
+const (
+ // max packet length
+ maxLength = 1024 << 3
+)
+
+type Vless struct {
+ *Base
+ client *vless.Client
+ option *VlessOption
+
+ // for gun mux
+ gunTLSConfig *tls.Config
+ gunConfig *gun.Config
+ transport *gun.TransportWrap
+
+ realityConfig *tlsC.RealityConfig
+}
+
+type VlessOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ UUID string `proxy:"uuid"`
+ Flow string `proxy:"flow,omitempty"`
+ TLS bool `proxy:"tls,omitempty"`
+ ALPN []string `proxy:"alpn,omitempty"`
+ UDP bool `proxy:"udp,omitempty"`
+ PacketAddr bool `proxy:"packet-addr,omitempty"`
+ XUDP bool `proxy:"xudp,omitempty"`
+ PacketEncoding string `proxy:"packet-encoding,omitempty"`
+ Network string `proxy:"network,omitempty"`
+ RealityOpts RealityOptions `proxy:"reality-opts,omitempty"`
+ HTTPOpts HTTPOptions `proxy:"http-opts,omitempty"`
+ HTTP2Opts HTTP2Options `proxy:"h2-opts,omitempty"`
+ GrpcOpts GrpcOptions `proxy:"grpc-opts,omitempty"`
+ WSOpts WSOptions `proxy:"ws-opts,omitempty"`
+ WSPath string `proxy:"ws-path,omitempty"`
+ WSHeaders map[string]string `proxy:"ws-headers,omitempty"`
+ SkipCertVerify bool `proxy:"skip-cert-verify,omitempty"`
+ Fingerprint string `proxy:"fingerprint,omitempty"`
+ ServerName string `proxy:"servername,omitempty"`
+ ClientFingerprint string `proxy:"client-fingerprint,omitempty"`
+}
+
+func (v *Vless) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (net.Conn, error) {
+ var err error
+
+ if tlsC.HaveGlobalFingerprint() && len(v.option.ClientFingerprint) == 0 {
+ v.option.ClientFingerprint = tlsC.GetGlobalFingerprint()
+ }
+
+ switch v.option.Network {
+ case "ws":
+ host, port, _ := net.SplitHostPort(v.addr)
+ wsOpts := &vmess.WebsocketConfig{
+ Host: host,
+ Port: port,
+ Path: v.option.WSOpts.Path,
+ MaxEarlyData: v.option.WSOpts.MaxEarlyData,
+ EarlyDataHeaderName: v.option.WSOpts.EarlyDataHeaderName,
+ V2rayHttpUpgrade: v.option.WSOpts.V2rayHttpUpgrade,
+ V2rayHttpUpgradeFastOpen: v.option.WSOpts.V2rayHttpUpgradeFastOpen,
+ ClientFingerprint: v.option.ClientFingerprint,
+ Headers: http.Header{},
+ }
+
+ if len(v.option.WSOpts.Headers) != 0 {
+ for key, value := range v.option.WSOpts.Headers {
+ wsOpts.Headers.Add(key, value)
+ }
+ }
+ if v.option.TLS {
+ wsOpts.TLS = true
+ tlsConfig := &tls.Config{
+ MinVersion: tls.VersionTLS12,
+ ServerName: host,
+ InsecureSkipVerify: v.option.SkipCertVerify,
+ NextProtos: []string{"http/1.1"},
+ }
+
+ wsOpts.TLSConfig, err = ca.GetSpecifiedFingerprintTLSConfig(tlsConfig, v.option.Fingerprint)
+ if err != nil {
+ return nil, err
+ }
+
+ if v.option.ServerName != "" {
+ wsOpts.TLSConfig.ServerName = v.option.ServerName
+ } else if host := wsOpts.Headers.Get("Host"); host != "" {
+ wsOpts.TLSConfig.ServerName = host
+ }
+ } else {
+ if host := wsOpts.Headers.Get("Host"); host == "" {
+ wsOpts.Headers.Set("Host", convert.RandHost())
+ convert.SetUserAgent(wsOpts.Headers)
+ }
+ }
+ c, err = vmess.StreamWebsocketConn(ctx, c, wsOpts)
+ case "http":
+ // readability first, so just copy default TLS logic
+ c, err = v.streamTLSConn(ctx, c, false)
+ if err != nil {
+ return nil, err
+ }
+
+ host, _, _ := net.SplitHostPort(v.addr)
+ httpOpts := &vmess.HTTPConfig{
+ Host: host,
+ Method: v.option.HTTPOpts.Method,
+ Path: v.option.HTTPOpts.Path,
+ Headers: v.option.HTTPOpts.Headers,
+ }
+
+ c = vmess.StreamHTTPConn(c, httpOpts)
+ case "h2":
+ c, err = v.streamTLSConn(ctx, c, true)
+ if err != nil {
+ return nil, err
+ }
+
+ h2Opts := &vmess.H2Config{
+ Hosts: v.option.HTTP2Opts.Host,
+ Path: v.option.HTTP2Opts.Path,
+ }
+
+ c, err = vmess.StreamH2Conn(c, h2Opts)
+ case "grpc":
+ c, err = gun.StreamGunWithConn(c, v.gunTLSConfig, v.gunConfig, v.realityConfig)
+ default:
+ // default tcp network
+ // handle TLS
+ c, err = v.streamTLSConn(ctx, c, false)
+ }
+
+ if err != nil {
+ return nil, err
+ }
+
+ return v.streamConn(c, metadata)
+}
+
+func (v *Vless) streamConn(c net.Conn, metadata *C.Metadata) (conn net.Conn, err error) {
+ if metadata.NetWork == C.UDP {
+ if v.option.PacketAddr {
+ metadata = &C.Metadata{
+ NetWork: C.UDP,
+ Host: packetaddr.SeqPacketMagicAddress,
+ DstPort: 443,
+ }
+ } else {
+ metadata = &C.Metadata{ // a clear metadata only contains ip
+ NetWork: C.UDP,
+ DstIP: metadata.DstIP,
+ DstPort: metadata.DstPort,
+ }
+ }
+ conn, err = v.client.StreamConn(c, parseVlessAddr(metadata, v.option.XUDP))
+ if v.option.PacketAddr {
+ conn = packetaddr.NewBindConn(conn)
+ }
+ } else {
+ conn, err = v.client.StreamConn(c, parseVlessAddr(metadata, false))
+ }
+ if err != nil {
+ conn = nil
+ }
+ return
+}
+
+func (v *Vless) streamTLSConn(ctx context.Context, conn net.Conn, isH2 bool) (net.Conn, error) {
+ if v.option.TLS {
+ host, _, _ := net.SplitHostPort(v.addr)
+
+ tlsOpts := vmess.TLSConfig{
+ Host: host,
+ SkipCertVerify: v.option.SkipCertVerify,
+ FingerPrint: v.option.Fingerprint,
+ ClientFingerprint: v.option.ClientFingerprint,
+ Reality: v.realityConfig,
+ NextProtos: v.option.ALPN,
+ }
+
+ if isH2 {
+ tlsOpts.NextProtos = []string{"h2"}
+ }
+
+ if v.option.ServerName != "" {
+ tlsOpts.Host = v.option.ServerName
+ }
+
+ return vmess.StreamTLSConn(ctx, conn, &tlsOpts)
+ }
+
+ return conn, nil
+}
+
+// DialContext implements C.ProxyAdapter
+func (v *Vless) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ // gun transport
+ if v.transport != nil && len(opts) == 0 {
+ c, err := gun.StreamGunWithTransport(v.transport, v.gunConfig)
+ if err != nil {
+ return nil, err
+ }
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = v.client.StreamConn(c, parseVlessAddr(metadata, v.option.XUDP))
+ if err != nil {
+ return nil, err
+ }
+
+ return NewConn(c, v), nil
+ }
+ return v.DialContextWithDialer(ctx, dialer.NewDialer(v.Base.DialOptions(opts...)...), metadata)
+}
+
+// DialContextWithDialer implements C.ProxyAdapter
+func (v *Vless) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error) {
+ if len(v.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(v.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := dialer.DialContext(ctx, "tcp", v.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %s", v.addr, err.Error())
+ }
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = v.StreamConnContext(ctx, c, metadata)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %s", v.addr, err.Error())
+ }
+ return NewConn(c, v), err
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (v *Vless) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
+ // vless use stream-oriented udp with a special address, so we need a net.UDPAddr
+ if !metadata.Resolved() {
+ ip, err := resolver.ResolveIP(ctx, metadata.Host)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+ var c net.Conn
+ // gun transport
+ if v.transport != nil && len(opts) == 0 {
+ c, err = gun.StreamGunWithTransport(v.transport, v.gunConfig)
+ if err != nil {
+ return nil, err
+ }
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = v.streamConn(c, metadata)
+ if err != nil {
+ return nil, fmt.Errorf("new vless client error: %v", err)
+ }
+
+ return v.ListenPacketOnStreamConn(ctx, c, metadata)
+ }
+ return v.ListenPacketWithDialer(ctx, dialer.NewDialer(v.Base.DialOptions(opts...)...), metadata)
+}
+
+// ListenPacketWithDialer implements C.ProxyAdapter
+func (v *Vless) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ if len(v.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(v.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ // vless use stream-oriented udp with a special address, so we need a net.UDPAddr
+ if !metadata.Resolved() {
+ ip, err := resolver.ResolveIP(ctx, metadata.Host)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+
+ c, err := dialer.DialContext(ctx, "tcp", v.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %s", v.addr, err.Error())
+ }
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = v.StreamConnContext(ctx, c, metadata)
+ if err != nil {
+ return nil, fmt.Errorf("new vless client error: %v", err)
+ }
+
+ return v.ListenPacketOnStreamConn(ctx, c, metadata)
+}
+
+// SupportWithDialer implements C.ProxyAdapter
+func (v *Vless) SupportWithDialer() C.NetWork {
+ return C.ALLNet
+}
+
+// ListenPacketOnStreamConn implements C.ProxyAdapter
+func (v *Vless) ListenPacketOnStreamConn(ctx context.Context, c net.Conn, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ // vless use stream-oriented udp with a special address, so we need a net.UDPAddr
+ if !metadata.Resolved() {
+ ip, err := resolver.ResolveIP(ctx, metadata.Host)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+
+ if v.option.XUDP {
+ var globalID [8]byte
+ if metadata.SourceValid() {
+ globalID = utils.GlobalID(metadata.SourceAddress())
+ }
+ return newPacketConn(N.NewThreadSafePacketConn(
+ vmessSing.NewXUDPConn(c,
+ globalID,
+ M.SocksaddrFromNet(metadata.UDPAddr())),
+ ), v), nil
+ } else if v.option.PacketAddr {
+ return newPacketConn(N.NewThreadSafePacketConn(
+ packetaddr.NewConn(&vlessPacketConn{
+ Conn: c, rAddr: metadata.UDPAddr(),
+ }, M.SocksaddrFromNet(metadata.UDPAddr())),
+ ), v), nil
+ }
+ return newPacketConn(N.NewThreadSafePacketConn(&vlessPacketConn{Conn: c, rAddr: metadata.UDPAddr()}), v), nil
+}
+
+// SupportUOT implements C.ProxyAdapter
+func (v *Vless) SupportUOT() bool {
+ return true
+}
+
+func parseVlessAddr(metadata *C.Metadata, xudp bool) *vless.DstAddr {
+ var addrType byte
+ var addr []byte
+ switch metadata.AddrType() {
+ case socks5.AtypIPv4:
+ addrType = vless.AtypIPv4
+ addr = make([]byte, net.IPv4len)
+ copy(addr[:], metadata.DstIP.AsSlice())
+ case socks5.AtypIPv6:
+ addrType = vless.AtypIPv6
+ addr = make([]byte, net.IPv6len)
+ copy(addr[:], metadata.DstIP.AsSlice())
+ case socks5.AtypDomainName:
+ addrType = vless.AtypDomainName
+ addr = make([]byte, len(metadata.Host)+1)
+ addr[0] = byte(len(metadata.Host))
+ copy(addr[1:], metadata.Host)
+ }
+
+ return &vless.DstAddr{
+ UDP: metadata.NetWork == C.UDP,
+ AddrType: addrType,
+ Addr: addr,
+ Port: metadata.DstPort,
+ Mux: metadata.NetWork == C.UDP && xudp,
+ }
+}
+
+type vlessPacketConn struct {
+ net.Conn
+ rAddr net.Addr
+ remain int
+ mux sync.Mutex
+ cache [2]byte
+}
+
+func (c *vlessPacketConn) writePacket(payload []byte) (int, error) {
+ binary.BigEndian.PutUint16(c.cache[:], uint16(len(payload)))
+
+ if _, err := c.Conn.Write(c.cache[:]); err != nil {
+ return 0, err
+ }
+
+ return c.Conn.Write(payload)
+}
+
+func (c *vlessPacketConn) WriteTo(b []byte, addr net.Addr) (int, error) {
+ total := len(b)
+ if total == 0 {
+ return 0, nil
+ }
+
+ if total <= maxLength {
+ return c.writePacket(b)
+ }
+
+ offset := 0
+
+ for offset < total {
+ cursor := offset + maxLength
+ if cursor > total {
+ cursor = total
+ }
+
+ n, err := c.writePacket(b[offset:cursor])
+ if err != nil {
+ return offset + n, err
+ }
+
+ offset = cursor
+ if offset == total {
+ break
+ }
+ }
+
+ return total, nil
+}
+
+func (c *vlessPacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ c.mux.Lock()
+ defer c.mux.Unlock()
+
+ if c.remain > 0 {
+ length := len(b)
+ if c.remain < length {
+ length = c.remain
+ }
+
+ n, err := c.Conn.Read(b[:length])
+ if err != nil {
+ return 0, c.rAddr, err
+ }
+
+ c.remain -= n
+ return n, c.rAddr, nil
+ }
+
+ if _, err := c.Conn.Read(b[:2]); err != nil {
+ return 0, c.rAddr, err
+ }
+
+ total := int(binary.BigEndian.Uint16(b[:2]))
+ if total == 0 {
+ return 0, c.rAddr, nil
+ }
+
+ length := len(b)
+ if length > total {
+ length = total
+ }
+
+ if _, err := io.ReadFull(c.Conn, b[:length]); err != nil {
+ return 0, c.rAddr, errors.New("read packet error")
+ }
+
+ c.remain = total - length
+
+ return length, c.rAddr, nil
+}
+
+func NewVless(option VlessOption) (*Vless, error) {
+ var addons *vless.Addons
+ if option.Network != "ws" && len(option.Flow) >= 16 {
+ option.Flow = option.Flow[:16]
+ if option.Flow != vless.XRV {
+ return nil, fmt.Errorf("unsupported xtls flow type: %s", option.Flow)
+ }
+
+ log.Warnln("To use %s, ensure your server is upgrade to Xray-core v1.8.0+", vless.XRV)
+ addons = &vless.Addons{
+ Flow: option.Flow,
+ }
+ }
+
+ switch option.PacketEncoding {
+ case "packetaddr", "packet":
+ option.PacketAddr = true
+ option.XUDP = false
+ default: // https://github.com/XTLS/Xray-core/pull/1567#issuecomment-1407305458
+ if !option.PacketAddr {
+ option.XUDP = true
+ }
+ }
+ if option.XUDP {
+ option.PacketAddr = false
+ }
+
+ client, err := vless.NewClient(option.UUID, addons)
+ if err != nil {
+ return nil, err
+ }
+
+ v := &Vless{
+ Base: &Base{
+ name: option.Name,
+ addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)),
+ tp: C.Vless,
+ udp: option.UDP,
+ xudp: option.XUDP,
+ tfo: option.TFO,
+ mpTcp: option.MPTCP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ client: client,
+ option: &option,
+ }
+
+ v.realityConfig, err = v.option.RealityOpts.Parse()
+ if err != nil {
+ return nil, err
+ }
+
+ switch option.Network {
+ case "h2":
+ if len(option.HTTP2Opts.Host) == 0 {
+ option.HTTP2Opts.Host = append(option.HTTP2Opts.Host, "www.example.com")
+ }
+ case "grpc":
+ dialFn := func(network, addr string) (net.Conn, error) {
+ var err error
+ var cDialer C.Dialer = dialer.NewDialer(v.Base.DialOptions()...)
+ if len(v.option.DialerProxy) > 0 {
+ cDialer, err = proxydialer.NewByName(v.option.DialerProxy, cDialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := cDialer.DialContext(context.Background(), "tcp", v.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %s", v.addr, err.Error())
+ }
+ return c, nil
+ }
+
+ gunConfig := &gun.Config{
+ ServiceName: v.option.GrpcOpts.GrpcServiceName,
+ Host: v.option.ServerName,
+ ClientFingerprint: v.option.ClientFingerprint,
+ }
+ if option.ServerName == "" {
+ gunConfig.Host = v.addr
+ }
+ var tlsConfig *tls.Config
+ if option.TLS {
+ tlsConfig = ca.GetGlobalTLSConfig(&tls.Config{
+ InsecureSkipVerify: v.option.SkipCertVerify,
+ ServerName: v.option.ServerName,
+ })
+ if option.ServerName == "" {
+ host, _, _ := net.SplitHostPort(v.addr)
+ tlsConfig.ServerName = host
+ }
+ }
+
+ v.gunTLSConfig = tlsConfig
+ v.gunConfig = gunConfig
+
+ v.transport = gun.NewHTTP2Client(dialFn, tlsConfig, v.option.ClientFingerprint, v.realityConfig)
+ }
+
+ return v, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/vmess.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/vmess.go
new file mode 100644
index 0000000..8797374
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/vmess.go
@@ -0,0 +1,533 @@
+package outbound
+
+import (
+ "context"
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "net"
+ "net/http"
+ "strconv"
+ "strings"
+ "sync"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ tlsC "github.com/metacubex/mihomo/component/tls"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/ntp"
+ "github.com/metacubex/mihomo/transport/gun"
+ mihomoVMess "github.com/metacubex/mihomo/transport/vmess"
+
+ vmess "github.com/metacubex/sing-vmess"
+ "github.com/metacubex/sing-vmess/packetaddr"
+ M "github.com/sagernet/sing/common/metadata"
+)
+
+var ErrUDPRemoteAddrMismatch = errors.New("udp packet dropped due to mismatched remote address")
+
+type Vmess struct {
+ *Base
+ client *vmess.Client
+ option *VmessOption
+
+ // for gun mux
+ gunTLSConfig *tls.Config
+ gunConfig *gun.Config
+ transport *gun.TransportWrap
+
+ realityConfig *tlsC.RealityConfig
+}
+
+type VmessOption struct {
+ BasicOption
+ Name string `proxy:"name"`
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ UUID string `proxy:"uuid"`
+ AlterID int `proxy:"alterId"`
+ Cipher string `proxy:"cipher"`
+ UDP bool `proxy:"udp,omitempty"`
+ Network string `proxy:"network,omitempty"`
+ TLS bool `proxy:"tls,omitempty"`
+ ALPN []string `proxy:"alpn,omitempty"`
+ SkipCertVerify bool `proxy:"skip-cert-verify,omitempty"`
+ Fingerprint string `proxy:"fingerprint,omitempty"`
+ ServerName string `proxy:"servername,omitempty"`
+ RealityOpts RealityOptions `proxy:"reality-opts,omitempty"`
+ HTTPOpts HTTPOptions `proxy:"http-opts,omitempty"`
+ HTTP2Opts HTTP2Options `proxy:"h2-opts,omitempty"`
+ GrpcOpts GrpcOptions `proxy:"grpc-opts,omitempty"`
+ WSOpts WSOptions `proxy:"ws-opts,omitempty"`
+ PacketAddr bool `proxy:"packet-addr,omitempty"`
+ XUDP bool `proxy:"xudp,omitempty"`
+ PacketEncoding string `proxy:"packet-encoding,omitempty"`
+ GlobalPadding bool `proxy:"global-padding,omitempty"`
+ AuthenticatedLength bool `proxy:"authenticated-length,omitempty"`
+ ClientFingerprint string `proxy:"client-fingerprint,omitempty"`
+}
+
+type HTTPOptions struct {
+ Method string `proxy:"method,omitempty"`
+ Path []string `proxy:"path,omitempty"`
+ Headers map[string][]string `proxy:"headers,omitempty"`
+}
+
+type HTTP2Options struct {
+ Host []string `proxy:"host,omitempty"`
+ Path string `proxy:"path,omitempty"`
+}
+
+type GrpcOptions struct {
+ GrpcServiceName string `proxy:"grpc-service-name,omitempty"`
+}
+
+type WSOptions struct {
+ Path string `proxy:"path,omitempty"`
+ Headers map[string]string `proxy:"headers,omitempty"`
+ MaxEarlyData int `proxy:"max-early-data,omitempty"`
+ EarlyDataHeaderName string `proxy:"early-data-header-name,omitempty"`
+ V2rayHttpUpgrade bool `proxy:"v2ray-http-upgrade,omitempty"`
+ V2rayHttpUpgradeFastOpen bool `proxy:"v2ray-http-upgrade-fast-open,omitempty"`
+}
+
+// StreamConnContext implements C.ProxyAdapter
+func (v *Vmess) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (net.Conn, error) {
+ var err error
+
+ if tlsC.HaveGlobalFingerprint() && (len(v.option.ClientFingerprint) == 0) {
+ v.option.ClientFingerprint = tlsC.GetGlobalFingerprint()
+ }
+
+ switch v.option.Network {
+ case "ws":
+ host, port, _ := net.SplitHostPort(v.addr)
+ wsOpts := &mihomoVMess.WebsocketConfig{
+ Host: host,
+ Port: port,
+ Path: v.option.WSOpts.Path,
+ MaxEarlyData: v.option.WSOpts.MaxEarlyData,
+ EarlyDataHeaderName: v.option.WSOpts.EarlyDataHeaderName,
+ V2rayHttpUpgrade: v.option.WSOpts.V2rayHttpUpgrade,
+ V2rayHttpUpgradeFastOpen: v.option.WSOpts.V2rayHttpUpgradeFastOpen,
+ ClientFingerprint: v.option.ClientFingerprint,
+ Headers: http.Header{},
+ }
+
+ if len(v.option.WSOpts.Headers) != 0 {
+ for key, value := range v.option.WSOpts.Headers {
+ wsOpts.Headers.Add(key, value)
+ }
+ }
+
+ if v.option.TLS {
+ wsOpts.TLS = true
+ tlsConfig := &tls.Config{
+ ServerName: host,
+ InsecureSkipVerify: v.option.SkipCertVerify,
+ NextProtos: []string{"http/1.1"},
+ }
+
+ wsOpts.TLSConfig, err = ca.GetSpecifiedFingerprintTLSConfig(tlsConfig, v.option.Fingerprint)
+ if err != nil {
+ return nil, err
+ }
+
+ if v.option.ServerName != "" {
+ wsOpts.TLSConfig.ServerName = v.option.ServerName
+ } else if host := wsOpts.Headers.Get("Host"); host != "" {
+ wsOpts.TLSConfig.ServerName = host
+ }
+ }
+ c, err = mihomoVMess.StreamWebsocketConn(ctx, c, wsOpts)
+ case "http":
+ // readability first, so just copy default TLS logic
+ if v.option.TLS {
+ host, _, _ := net.SplitHostPort(v.addr)
+ tlsOpts := &mihomoVMess.TLSConfig{
+ Host: host,
+ SkipCertVerify: v.option.SkipCertVerify,
+ ClientFingerprint: v.option.ClientFingerprint,
+ Reality: v.realityConfig,
+ NextProtos: v.option.ALPN,
+ }
+
+ if v.option.ServerName != "" {
+ tlsOpts.Host = v.option.ServerName
+ }
+ c, err = mihomoVMess.StreamTLSConn(ctx, c, tlsOpts)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ host, _, _ := net.SplitHostPort(v.addr)
+ httpOpts := &mihomoVMess.HTTPConfig{
+ Host: host,
+ Method: v.option.HTTPOpts.Method,
+ Path: v.option.HTTPOpts.Path,
+ Headers: v.option.HTTPOpts.Headers,
+ }
+
+ c = mihomoVMess.StreamHTTPConn(c, httpOpts)
+ case "h2":
+ host, _, _ := net.SplitHostPort(v.addr)
+ tlsOpts := mihomoVMess.TLSConfig{
+ Host: host,
+ SkipCertVerify: v.option.SkipCertVerify,
+ FingerPrint: v.option.Fingerprint,
+ NextProtos: []string{"h2"},
+ ClientFingerprint: v.option.ClientFingerprint,
+ Reality: v.realityConfig,
+ }
+
+ if v.option.ServerName != "" {
+ tlsOpts.Host = v.option.ServerName
+ }
+
+ c, err = mihomoVMess.StreamTLSConn(ctx, c, &tlsOpts)
+ if err != nil {
+ return nil, err
+ }
+
+ h2Opts := &mihomoVMess.H2Config{
+ Hosts: v.option.HTTP2Opts.Host,
+ Path: v.option.HTTP2Opts.Path,
+ }
+
+ c, err = mihomoVMess.StreamH2Conn(c, h2Opts)
+ case "grpc":
+ c, err = gun.StreamGunWithConn(c, v.gunTLSConfig, v.gunConfig, v.realityConfig)
+ default:
+ // handle TLS
+ if v.option.TLS {
+ host, _, _ := net.SplitHostPort(v.addr)
+ tlsOpts := &mihomoVMess.TLSConfig{
+ Host: host,
+ SkipCertVerify: v.option.SkipCertVerify,
+ FingerPrint: v.option.Fingerprint,
+ ClientFingerprint: v.option.ClientFingerprint,
+ Reality: v.realityConfig,
+ NextProtos: v.option.ALPN,
+ }
+
+ if v.option.ServerName != "" {
+ tlsOpts.Host = v.option.ServerName
+ }
+
+ c, err = mihomoVMess.StreamTLSConn(ctx, c, tlsOpts)
+ }
+ }
+
+ if err != nil {
+ return nil, err
+ }
+ return v.streamConn(c, metadata)
+}
+
+func (v *Vmess) streamConn(c net.Conn, metadata *C.Metadata) (conn net.Conn, err error) {
+ if metadata.NetWork == C.UDP {
+ if v.option.XUDP {
+ var globalID [8]byte
+ if metadata.SourceValid() {
+ globalID = utils.GlobalID(metadata.SourceAddress())
+ }
+ if N.NeedHandshake(c) {
+ conn = v.client.DialEarlyXUDPPacketConn(c,
+ globalID,
+ M.SocksaddrFromNet(metadata.UDPAddr()))
+ } else {
+ conn, err = v.client.DialXUDPPacketConn(c,
+ globalID,
+ M.SocksaddrFromNet(metadata.UDPAddr()))
+ }
+ } else if v.option.PacketAddr {
+ if N.NeedHandshake(c) {
+ conn = v.client.DialEarlyPacketConn(c,
+ M.ParseSocksaddrHostPort(packetaddr.SeqPacketMagicAddress, 443))
+ } else {
+ conn, err = v.client.DialPacketConn(c,
+ M.ParseSocksaddrHostPort(packetaddr.SeqPacketMagicAddress, 443))
+ }
+ conn = packetaddr.NewBindConn(conn)
+ } else {
+ if N.NeedHandshake(c) {
+ conn = v.client.DialEarlyPacketConn(c,
+ M.SocksaddrFromNet(metadata.UDPAddr()))
+ } else {
+ conn, err = v.client.DialPacketConn(c,
+ M.SocksaddrFromNet(metadata.UDPAddr()))
+ }
+ }
+ } else {
+ if N.NeedHandshake(c) {
+ conn = v.client.DialEarlyConn(c,
+ M.ParseSocksaddrHostPort(metadata.String(), metadata.DstPort))
+ } else {
+ conn, err = v.client.DialConn(c,
+ M.ParseSocksaddrHostPort(metadata.String(), metadata.DstPort))
+ }
+ }
+ if err != nil {
+ conn = nil
+ }
+ return
+}
+
+// DialContext implements C.ProxyAdapter
+func (v *Vmess) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ // gun transport
+ if v.transport != nil && len(opts) == 0 {
+ c, err := gun.StreamGunWithTransport(v.transport, v.gunConfig)
+ if err != nil {
+ return nil, err
+ }
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = v.client.DialConn(c, M.ParseSocksaddrHostPort(metadata.String(), metadata.DstPort))
+ if err != nil {
+ return nil, err
+ }
+
+ return NewConn(c, v), nil
+ }
+ return v.DialContextWithDialer(ctx, dialer.NewDialer(v.Base.DialOptions(opts...)...), metadata)
+}
+
+// DialContextWithDialer implements C.ProxyAdapter
+func (v *Vmess) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.Conn, err error) {
+ if len(v.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(v.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := dialer.DialContext(ctx, "tcp", v.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %s", v.addr, err.Error())
+ }
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = v.StreamConnContext(ctx, c, metadata)
+ return NewConn(c, v), err
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (v *Vmess) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
+ // vmess use stream-oriented udp with a special address, so we need a net.UDPAddr
+ if !metadata.Resolved() {
+ ip, err := resolver.ResolveIP(ctx, metadata.Host)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+ var c net.Conn
+ // gun transport
+ if v.transport != nil && len(opts) == 0 {
+ c, err = gun.StreamGunWithTransport(v.transport, v.gunConfig)
+ if err != nil {
+ return nil, err
+ }
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = v.streamConn(c, metadata)
+ if err != nil {
+ return nil, fmt.Errorf("new vmess client error: %v", err)
+ }
+ return v.ListenPacketOnStreamConn(ctx, c, metadata)
+ }
+ return v.ListenPacketWithDialer(ctx, dialer.NewDialer(v.Base.DialOptions(opts...)...), metadata)
+}
+
+// ListenPacketWithDialer implements C.ProxyAdapter
+func (v *Vmess) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ if len(v.option.DialerProxy) > 0 {
+ dialer, err = proxydialer.NewByName(v.option.DialerProxy, dialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ // vmess use stream-oriented udp with a special address, so we need a net.UDPAddr
+ if !metadata.Resolved() {
+ ip, err := resolver.ResolveIP(ctx, metadata.Host)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+
+ c, err := dialer.DialContext(ctx, "tcp", v.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %s", v.addr, err.Error())
+ }
+ defer func(c net.Conn) {
+ safeConnClose(c, err)
+ }(c)
+
+ c, err = v.StreamConnContext(ctx, c, metadata)
+ if err != nil {
+ return nil, fmt.Errorf("new vmess client error: %v", err)
+ }
+ return v.ListenPacketOnStreamConn(ctx, c, metadata)
+}
+
+// SupportWithDialer implements C.ProxyAdapter
+func (v *Vmess) SupportWithDialer() C.NetWork {
+ return C.ALLNet
+}
+
+// ListenPacketOnStreamConn implements C.ProxyAdapter
+func (v *Vmess) ListenPacketOnStreamConn(ctx context.Context, c net.Conn, metadata *C.Metadata) (_ C.PacketConn, err error) {
+ // vmess use stream-oriented udp with a special address, so we need a net.UDPAddr
+ if !metadata.Resolved() {
+ ip, err := resolver.ResolveIP(ctx, metadata.Host)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+
+ if pc, ok := c.(net.PacketConn); ok {
+ return newPacketConn(N.NewThreadSafePacketConn(pc), v), nil
+ }
+ return newPacketConn(&vmessPacketConn{Conn: c, rAddr: metadata.UDPAddr()}, v), nil
+}
+
+// SupportUOT implements C.ProxyAdapter
+func (v *Vmess) SupportUOT() bool {
+ return true
+}
+
+func NewVmess(option VmessOption) (*Vmess, error) {
+ security := strings.ToLower(option.Cipher)
+ var options []vmess.ClientOption
+ if option.GlobalPadding {
+ options = append(options, vmess.ClientWithGlobalPadding())
+ }
+ if option.AuthenticatedLength {
+ options = append(options, vmess.ClientWithAuthenticatedLength())
+ }
+ options = append(options, vmess.ClientWithTimeFunc(ntp.Now))
+ client, err := vmess.NewClient(option.UUID, security, option.AlterID, options...)
+ if err != nil {
+ return nil, err
+ }
+
+ switch option.PacketEncoding {
+ case "packetaddr", "packet":
+ option.PacketAddr = true
+ case "xudp":
+ option.XUDP = true
+ }
+ if option.XUDP {
+ option.PacketAddr = false
+ }
+
+ v := &Vmess{
+ Base: &Base{
+ name: option.Name,
+ addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)),
+ tp: C.Vmess,
+ udp: option.UDP,
+ xudp: option.XUDP,
+ tfo: option.TFO,
+ mpTcp: option.MPTCP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ client: client,
+ option: &option,
+ }
+
+ switch option.Network {
+ case "h2":
+ if len(option.HTTP2Opts.Host) == 0 {
+ option.HTTP2Opts.Host = append(option.HTTP2Opts.Host, "www.example.com")
+ }
+ case "grpc":
+ dialFn := func(network, addr string) (net.Conn, error) {
+ var err error
+ var cDialer C.Dialer = dialer.NewDialer(v.Base.DialOptions()...)
+ if len(v.option.DialerProxy) > 0 {
+ cDialer, err = proxydialer.NewByName(v.option.DialerProxy, cDialer)
+ if err != nil {
+ return nil, err
+ }
+ }
+ c, err := cDialer.DialContext(context.Background(), "tcp", v.addr)
+ if err != nil {
+ return nil, fmt.Errorf("%s connect error: %s", v.addr, err.Error())
+ }
+ return c, nil
+ }
+
+ gunConfig := &gun.Config{
+ ServiceName: v.option.GrpcOpts.GrpcServiceName,
+ Host: v.option.ServerName,
+ ClientFingerprint: v.option.ClientFingerprint,
+ }
+ if option.ServerName == "" {
+ gunConfig.Host = v.addr
+ }
+ var tlsConfig *tls.Config
+ if option.TLS {
+ tlsConfig = ca.GetGlobalTLSConfig(&tls.Config{
+ InsecureSkipVerify: v.option.SkipCertVerify,
+ ServerName: v.option.ServerName,
+ })
+ if option.ServerName == "" {
+ host, _, _ := net.SplitHostPort(v.addr)
+ tlsConfig.ServerName = host
+ }
+ }
+
+ v.gunTLSConfig = tlsConfig
+ v.gunConfig = gunConfig
+
+ v.transport = gun.NewHTTP2Client(dialFn, tlsConfig, v.option.ClientFingerprint, v.realityConfig)
+ }
+
+ v.realityConfig, err = v.option.RealityOpts.Parse()
+ if err != nil {
+ return nil, err
+ }
+
+ return v, nil
+}
+
+type vmessPacketConn struct {
+ net.Conn
+ rAddr net.Addr
+ access sync.Mutex
+}
+
+// WriteTo implments C.PacketConn.WriteTo
+// Since VMess doesn't support full cone NAT by design, we verify if addr matches uc.rAddr, and drop the packet if not.
+func (uc *vmessPacketConn) WriteTo(b []byte, addr net.Addr) (int, error) {
+ allowedAddr := uc.rAddr
+ destAddr := addr
+ if allowedAddr.String() != destAddr.String() {
+ return 0, ErrUDPRemoteAddrMismatch
+ }
+ uc.access.Lock()
+ defer uc.access.Unlock()
+ return uc.Conn.Write(b)
+}
+
+func (uc *vmessPacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ n, err := uc.Conn.Read(b)
+ return n, uc.rAddr, err
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/wireguard.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/wireguard.go
new file mode 100644
index 0000000..03145c3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/wireguard.go
@@ -0,0 +1,698 @@
+package outbound
+
+import (
+ "context"
+ "encoding/base64"
+ "encoding/hex"
+ "errors"
+ "fmt"
+ "net"
+ "net/netip"
+ "runtime"
+ "strconv"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ CN "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ "github.com/metacubex/mihomo/component/slowdown"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/dns"
+ "github.com/metacubex/mihomo/log"
+
+ amnezia "github.com/metacubex/amneziawg-go/device"
+ wireguard "github.com/metacubex/sing-wireguard"
+ "github.com/metacubex/wireguard-go/device"
+
+ "github.com/sagernet/sing/common/debug"
+ E "github.com/sagernet/sing/common/exceptions"
+ M "github.com/sagernet/sing/common/metadata"
+)
+
+type wireguardGoDevice interface {
+ Close()
+ IpcSet(uapiConf string) error
+}
+
+type WireGuard struct {
+ *Base
+ bind *wireguard.ClientBind
+ device wireguardGoDevice
+ tunDevice wireguard.Device
+ dialer proxydialer.SingDialer
+ resolver resolver.Resolver
+ refP *refProxyAdapter
+
+ initOk atomic.Bool
+ initMutex sync.Mutex
+ initErr error
+ option WireGuardOption
+ connectAddr M.Socksaddr
+ localPrefixes []netip.Prefix
+
+ serverAddrMap map[M.Socksaddr]netip.AddrPort
+ serverAddrTime atomic.TypedValue[time.Time]
+ serverAddrMutex sync.Mutex
+
+ closeCh chan struct{} // for test
+}
+
+type WireGuardOption struct {
+ BasicOption
+ WireGuardPeerOption
+ Name string `proxy:"name"`
+ Ip string `proxy:"ip,omitempty"`
+ Ipv6 string `proxy:"ipv6,omitempty"`
+ PrivateKey string `proxy:"private-key"`
+ Workers int `proxy:"workers,omitempty"`
+ MTU int `proxy:"mtu,omitempty"`
+ UDP bool `proxy:"udp,omitempty"`
+ PersistentKeepalive int `proxy:"persistent-keepalive,omitempty"`
+
+ AmneziaWGOption *AmneziaWGOption `proxy:"amnezia-wg-option,omitempty"`
+
+ Peers []WireGuardPeerOption `proxy:"peers,omitempty"`
+
+ RemoteDnsResolve bool `proxy:"remote-dns-resolve,omitempty"`
+ Dns []string `proxy:"dns,omitempty"`
+
+ RefreshServerIPInterval int `proxy:"refresh-server-ip-interval,omitempty"`
+}
+
+type WireGuardPeerOption struct {
+ Server string `proxy:"server"`
+ Port int `proxy:"port"`
+ PublicKey string `proxy:"public-key,omitempty"`
+ PreSharedKey string `proxy:"pre-shared-key,omitempty"`
+ Reserved []uint8 `proxy:"reserved,omitempty"`
+ AllowedIPs []string `proxy:"allowed-ips,omitempty"`
+}
+
+type AmneziaWGOption struct {
+ JC int `proxy:"jc"`
+ JMin int `proxy:"jmin"`
+ JMax int `proxy:"jmax"`
+ S1 int `proxy:"s1"`
+ S2 int `proxy:"s2"`
+ H1 uint32 `proxy:"h1"`
+ H2 uint32 `proxy:"h2"`
+ H3 uint32 `proxy:"h3"`
+ H4 uint32 `proxy:"h4"`
+}
+
+type wgSingErrorHandler struct {
+ name string
+}
+
+var _ E.Handler = (*wgSingErrorHandler)(nil)
+
+func (w wgSingErrorHandler) NewError(ctx context.Context, err error) {
+ if E.IsClosedOrCanceled(err) {
+ log.SingLogger.Debug(fmt.Sprintf("[WG](%s) connection closed: %s", w.name, err))
+ return
+ }
+ log.SingLogger.Error(fmt.Sprintf("[WG](%s) %s", w.name, err))
+}
+
+type wgNetDialer struct {
+ tunDevice wireguard.Device
+}
+
+var _ dialer.NetDialer = (*wgNetDialer)(nil)
+
+func (d wgNetDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
+ return d.tunDevice.DialContext(ctx, network, M.ParseSocksaddr(address).Unwrap())
+}
+
+func (option WireGuardPeerOption) Addr() M.Socksaddr {
+ return M.ParseSocksaddrHostPort(option.Server, uint16(option.Port))
+}
+
+func (option WireGuardOption) Prefixes() ([]netip.Prefix, error) {
+ localPrefixes := make([]netip.Prefix, 0, 2)
+ if len(option.Ip) > 0 {
+ if !strings.Contains(option.Ip, "/") {
+ option.Ip = option.Ip + "/32"
+ }
+ if prefix, err := netip.ParsePrefix(option.Ip); err == nil {
+ localPrefixes = append(localPrefixes, prefix)
+ } else {
+ return nil, E.Cause(err, "ip address parse error")
+ }
+ }
+ if len(option.Ipv6) > 0 {
+ if !strings.Contains(option.Ipv6, "/") {
+ option.Ipv6 = option.Ipv6 + "/128"
+ }
+ if prefix, err := netip.ParsePrefix(option.Ipv6); err == nil {
+ localPrefixes = append(localPrefixes, prefix)
+ } else {
+ return nil, E.Cause(err, "ipv6 address parse error")
+ }
+ }
+ if len(localPrefixes) == 0 {
+ return nil, E.New("missing local address")
+ }
+ return localPrefixes, nil
+}
+
+func NewWireGuard(option WireGuardOption) (*WireGuard, error) {
+ outbound := &WireGuard{
+ Base: &Base{
+ name: option.Name,
+ addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)),
+ tp: C.WireGuard,
+ udp: option.UDP,
+ iface: option.Interface,
+ rmark: option.RoutingMark,
+ prefer: C.NewDNSPrefer(option.IPVersion),
+ },
+ dialer: proxydialer.NewSlowDownSingDialer(proxydialer.NewByNameSingDialer(option.DialerProxy, dialer.NewDialer()), slowdown.New()),
+ }
+ runtime.SetFinalizer(outbound, closeWireGuard)
+
+ var reserved [3]uint8
+ if len(option.Reserved) > 0 {
+ if len(option.Reserved) != 3 {
+ return nil, E.New("invalid reserved value, required 3 bytes, got ", len(option.Reserved))
+ }
+ copy(reserved[:], option.Reserved)
+ }
+ var isConnect bool
+ if len(option.Peers) < 2 {
+ isConnect = true
+ if len(option.Peers) == 1 {
+ outbound.connectAddr = option.Peers[0].Addr()
+ } else {
+ outbound.connectAddr = option.Addr()
+ }
+ }
+ outbound.bind = wireguard.NewClientBind(context.Background(), wgSingErrorHandler{outbound.Name()}, outbound.dialer, isConnect, outbound.connectAddr.AddrPort(), reserved)
+
+ var err error
+ outbound.localPrefixes, err = option.Prefixes()
+ if err != nil {
+ return nil, err
+ }
+
+ {
+ bytes, err := base64.StdEncoding.DecodeString(option.PrivateKey)
+ if err != nil {
+ return nil, E.Cause(err, "decode private key")
+ }
+ option.PrivateKey = hex.EncodeToString(bytes)
+ }
+
+ if len(option.Peers) > 0 {
+ for i := range option.Peers {
+ peer := &option.Peers[i] // we need modify option here
+ bytes, err := base64.StdEncoding.DecodeString(peer.PublicKey)
+ if err != nil {
+ return nil, E.Cause(err, "decode public key for peer ", i)
+ }
+ peer.PublicKey = hex.EncodeToString(bytes)
+
+ if peer.PreSharedKey != "" {
+ bytes, err := base64.StdEncoding.DecodeString(peer.PreSharedKey)
+ if err != nil {
+ return nil, E.Cause(err, "decode pre shared key for peer ", i)
+ }
+ peer.PreSharedKey = hex.EncodeToString(bytes)
+ }
+
+ if len(peer.AllowedIPs) == 0 {
+ return nil, E.New("missing allowed_ips for peer ", i)
+ }
+
+ if len(peer.Reserved) > 0 {
+ if len(peer.Reserved) != 3 {
+ return nil, E.New("invalid reserved value for peer ", i, ", required 3 bytes, got ", len(peer.Reserved))
+ }
+ }
+ }
+ } else {
+ {
+ bytes, err := base64.StdEncoding.DecodeString(option.PublicKey)
+ if err != nil {
+ return nil, E.Cause(err, "decode peer public key")
+ }
+ option.PublicKey = hex.EncodeToString(bytes)
+ }
+ if option.PreSharedKey != "" {
+ bytes, err := base64.StdEncoding.DecodeString(option.PreSharedKey)
+ if err != nil {
+ return nil, E.Cause(err, "decode pre shared key")
+ }
+ option.PreSharedKey = hex.EncodeToString(bytes)
+ }
+ }
+ outbound.option = option
+
+ mtu := option.MTU
+ if mtu == 0 {
+ mtu = 1408
+ }
+ if len(outbound.localPrefixes) == 0 {
+ return nil, E.New("missing local address")
+ }
+ outbound.tunDevice, err = wireguard.NewStackDevice(outbound.localPrefixes, uint32(mtu))
+ if err != nil {
+ return nil, E.Cause(err, "create WireGuard device")
+ }
+ logger := &device.Logger{
+ Verbosef: func(format string, args ...interface{}) {
+ log.SingLogger.Debug(fmt.Sprintf("[WG](%s) %s", option.Name, fmt.Sprintf(format, args...)))
+ },
+ Errorf: func(format string, args ...interface{}) {
+ log.SingLogger.Error(fmt.Sprintf("[WG](%s) %s", option.Name, fmt.Sprintf(format, args...)))
+ },
+ }
+ if option.AmneziaWGOption != nil {
+ outbound.bind.SetParseReserved(false) // AmneziaWG don't need parse reserved
+ outbound.device = amnezia.NewDevice(outbound.tunDevice, outbound.bind, logger, option.Workers)
+ } else {
+ outbound.device = device.NewDevice(outbound.tunDevice, outbound.bind, logger, option.Workers)
+ }
+
+ var has6 bool
+ for _, address := range outbound.localPrefixes {
+ if !address.Addr().Unmap().Is4() {
+ has6 = true
+ break
+ }
+ }
+
+ refP := &refProxyAdapter{}
+ outbound.refP = refP
+ if option.RemoteDnsResolve && len(option.Dns) > 0 {
+ nss, err := dns.ParseNameServer(option.Dns)
+ if err != nil {
+ return nil, err
+ }
+ for i := range nss {
+ nss[i].ProxyAdapter = refP
+ }
+ outbound.resolver = dns.NewResolver(dns.Config{
+ Main: nss,
+ IPv6: has6,
+ })
+ }
+
+ return outbound, nil
+}
+
+func (w *WireGuard) resolve(ctx context.Context, address M.Socksaddr) (netip.AddrPort, error) {
+ if address.Addr.IsValid() {
+ return address.AddrPort(), nil
+ }
+ udpAddr, err := resolveUDPAddrWithPrefer(ctx, "udp", address.String(), w.prefer)
+ if err != nil {
+ return netip.AddrPort{}, err
+ }
+ // net.ResolveUDPAddr maybe return 4in6 address, so unmap at here
+ addrPort := udpAddr.AddrPort()
+ return netip.AddrPortFrom(addrPort.Addr().Unmap(), addrPort.Port()), nil
+}
+
+func (w *WireGuard) init(ctx context.Context) error {
+ err := w.init0(ctx)
+ if err != nil {
+ return err
+ }
+ w.updateServerAddr(ctx)
+ return nil
+}
+
+func (w *WireGuard) init0(ctx context.Context) error {
+ if w.initOk.Load() {
+ return nil
+ }
+ w.initMutex.Lock()
+ defer w.initMutex.Unlock()
+ // double check like sync.Once
+ if w.initOk.Load() {
+ return nil
+ }
+ if w.initErr != nil {
+ return w.initErr
+ }
+
+ w.bind.ResetReservedForEndpoint()
+ w.serverAddrMap = make(map[M.Socksaddr]netip.AddrPort)
+ ipcConf, err := w.genIpcConf(ctx, false)
+ if err != nil {
+ // !!! do not set initErr here !!!
+ // let us can retry domain resolve in next time
+ return err
+ }
+
+ if debug.Enabled {
+ log.SingLogger.Trace(fmt.Sprintf("[WG](%s) created wireguard ipc conf: \n %s", w.option.Name, ipcConf))
+ }
+ err = w.device.IpcSet(ipcConf)
+ if err != nil {
+ w.initErr = E.Cause(err, "setup wireguard")
+ return w.initErr
+ }
+ w.serverAddrTime.Store(time.Now())
+
+ err = w.tunDevice.Start()
+ if err != nil {
+ w.initErr = err
+ return w.initErr
+ }
+
+ w.initOk.Store(true)
+ return nil
+}
+
+func (w *WireGuard) updateServerAddr(ctx context.Context) {
+ if w.option.RefreshServerIPInterval != 0 && time.Since(w.serverAddrTime.Load()) > time.Second*time.Duration(w.option.RefreshServerIPInterval) {
+ if w.serverAddrMutex.TryLock() {
+ defer w.serverAddrMutex.Unlock()
+ ipcConf, err := w.genIpcConf(ctx, true)
+ if err != nil {
+ log.Warnln("[WG](%s)UpdateServerAddr failed to generate wireguard ipc conf: %s", w.option.Name, err)
+ return
+ }
+ err = w.device.IpcSet(ipcConf)
+ if err != nil {
+ log.Warnln("[WG](%s)UpdateServerAddr failed to update wireguard ipc conf: %s", w.option.Name, err)
+ return
+ }
+ w.serverAddrTime.Store(time.Now())
+ }
+ }
+}
+
+func (w *WireGuard) genIpcConf(ctx context.Context, updateOnly bool) (string, error) {
+ ipcConf := ""
+ if !updateOnly {
+ ipcConf += "private_key=" + w.option.PrivateKey + "\n"
+ if w.option.AmneziaWGOption != nil {
+ ipcConf += "jc=" + strconv.Itoa(w.option.AmneziaWGOption.JC) + "\n"
+ ipcConf += "jmin=" + strconv.Itoa(w.option.AmneziaWGOption.JMin) + "\n"
+ ipcConf += "jmax=" + strconv.Itoa(w.option.AmneziaWGOption.JMax) + "\n"
+ ipcConf += "s1=" + strconv.Itoa(w.option.AmneziaWGOption.S1) + "\n"
+ ipcConf += "s2=" + strconv.Itoa(w.option.AmneziaWGOption.S2) + "\n"
+ ipcConf += "h1=" + strconv.FormatUint(uint64(w.option.AmneziaWGOption.H1), 10) + "\n"
+ ipcConf += "h2=" + strconv.FormatUint(uint64(w.option.AmneziaWGOption.H2), 10) + "\n"
+ ipcConf += "h3=" + strconv.FormatUint(uint64(w.option.AmneziaWGOption.H3), 10) + "\n"
+ ipcConf += "h4=" + strconv.FormatUint(uint64(w.option.AmneziaWGOption.H4), 10) + "\n"
+ }
+ }
+ if len(w.option.Peers) > 0 {
+ for i, peer := range w.option.Peers {
+ peerAddr := peer.Addr()
+ destination, err := w.resolve(ctx, peerAddr)
+ if err != nil {
+ return "", E.Cause(err, "resolve endpoint domain for peer ", i)
+ }
+ if w.serverAddrMap[peerAddr] != destination {
+ w.serverAddrMap[peerAddr] = destination
+ } else if updateOnly {
+ continue
+ }
+
+ if len(w.option.Peers) == 1 { // must call SetConnectAddr if isConnect == true
+ w.bind.SetConnectAddr(destination)
+ }
+ ipcConf += "public_key=" + peer.PublicKey + "\n"
+ if updateOnly {
+ ipcConf += "update_only=true\n"
+ }
+ ipcConf += "endpoint=" + destination.String() + "\n"
+ if len(peer.Reserved) > 0 {
+ var reserved [3]uint8
+ copy(reserved[:], w.option.Reserved)
+ w.bind.SetReservedForEndpoint(destination, reserved)
+ }
+ if updateOnly {
+ continue
+ }
+ if peer.PreSharedKey != "" {
+ ipcConf += "preshared_key=" + peer.PreSharedKey + "\n"
+ }
+ for _, allowedIP := range peer.AllowedIPs {
+ ipcConf += "allowed_ip=" + allowedIP + "\n"
+ }
+ if w.option.PersistentKeepalive != 0 {
+ ipcConf += fmt.Sprintf("persistent_keepalive_interval=%d\n", w.option.PersistentKeepalive)
+ }
+ }
+ } else {
+ destination, err := w.resolve(ctx, w.connectAddr)
+ if err != nil {
+ return "", E.Cause(err, "resolve endpoint domain")
+ }
+ if w.serverAddrMap[w.connectAddr] != destination {
+ w.serverAddrMap[w.connectAddr] = destination
+ } else if updateOnly {
+ return "", nil
+ }
+ w.bind.SetConnectAddr(destination) // must call SetConnectAddr if isConnect == true
+ ipcConf += "public_key=" + w.option.PublicKey + "\n"
+ if updateOnly {
+ ipcConf += "update_only=true\n"
+ }
+ ipcConf += "endpoint=" + destination.String() + "\n"
+ if updateOnly {
+ return ipcConf, nil
+ }
+ if w.option.PreSharedKey != "" {
+ ipcConf += "preshared_key=" + w.option.PreSharedKey + "\n"
+ }
+ var has4, has6 bool
+ for _, address := range w.localPrefixes {
+ if address.Addr().Is4() {
+ has4 = true
+ } else {
+ has6 = true
+ }
+ }
+ if has4 {
+ ipcConf += "allowed_ip=0.0.0.0/0\n"
+ }
+ if has6 {
+ ipcConf += "allowed_ip=::/0\n"
+ }
+
+ if w.option.PersistentKeepalive != 0 {
+ ipcConf += fmt.Sprintf("persistent_keepalive_interval=%d\n", w.option.PersistentKeepalive)
+ }
+ }
+ return ipcConf, nil
+}
+
+func closeWireGuard(w *WireGuard) {
+ if w.device != nil {
+ w.device.Close()
+ }
+ if w.closeCh != nil {
+ close(w.closeCh)
+ }
+}
+
+func (w *WireGuard) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
+ options := w.Base.DialOptions(opts...)
+ w.dialer.SetDialer(dialer.NewDialer(options...))
+ var conn net.Conn
+ if err = w.init(ctx); err != nil {
+ return nil, err
+ }
+ if !metadata.Resolved() || w.resolver != nil {
+ r := resolver.DefaultResolver
+ if w.resolver != nil {
+ w.refP.SetProxyAdapter(w)
+ defer w.refP.ClearProxyAdapter()
+ r = w.resolver
+ }
+ options = append(options, dialer.WithResolver(r))
+ options = append(options, dialer.WithNetDialer(wgNetDialer{tunDevice: w.tunDevice}))
+ conn, err = dialer.NewDialer(options...).DialContext(ctx, "tcp", metadata.RemoteAddress())
+ } else {
+ conn, err = w.tunDevice.DialContext(ctx, "tcp", M.SocksaddrFrom(metadata.DstIP, metadata.DstPort).Unwrap())
+ }
+ if err != nil {
+ return nil, err
+ }
+ if conn == nil {
+ return nil, E.New("conn is nil")
+ }
+ return NewConn(CN.NewRefConn(conn, w), w), nil
+}
+
+func (w *WireGuard) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
+ options := w.Base.DialOptions(opts...)
+ w.dialer.SetDialer(dialer.NewDialer(options...))
+ var pc net.PacketConn
+ if err = w.init(ctx); err != nil {
+ return nil, err
+ }
+ if (!metadata.Resolved() || w.resolver != nil) && metadata.Host != "" {
+ r := resolver.DefaultResolver
+ if w.resolver != nil {
+ w.refP.SetProxyAdapter(w)
+ defer w.refP.ClearProxyAdapter()
+ r = w.resolver
+ }
+ ip, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ metadata.DstIP = ip
+ }
+ pc, err = w.tunDevice.ListenPacket(ctx, M.SocksaddrFrom(metadata.DstIP, metadata.DstPort).Unwrap())
+ if err != nil {
+ return nil, err
+ }
+ if pc == nil {
+ return nil, E.New("packetConn is nil")
+ }
+ return newPacketConn(CN.NewRefPacketConn(pc, w), w), nil
+}
+
+// IsL3Protocol implements C.ProxyAdapter
+func (w *WireGuard) IsL3Protocol(metadata *C.Metadata) bool {
+ return true
+}
+
+type refProxyAdapter struct {
+ proxyAdapter C.ProxyAdapter
+ count int
+ mutex sync.Mutex
+}
+
+func (r *refProxyAdapter) SetProxyAdapter(proxyAdapter C.ProxyAdapter) {
+ r.mutex.Lock()
+ defer r.mutex.Unlock()
+ r.proxyAdapter = proxyAdapter
+ r.count++
+}
+
+func (r *refProxyAdapter) ClearProxyAdapter() {
+ r.mutex.Lock()
+ defer r.mutex.Unlock()
+ r.count--
+ if r.count == 0 {
+ r.proxyAdapter = nil
+ }
+}
+
+func (r *refProxyAdapter) Name() string {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.Name()
+ }
+ return ""
+}
+
+func (r *refProxyAdapter) Type() C.AdapterType {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.Type()
+ }
+ return C.AdapterType(0)
+}
+
+func (r *refProxyAdapter) Addr() string {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.Addr()
+ }
+ return ""
+}
+
+func (r *refProxyAdapter) SupportUDP() bool {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.SupportUDP()
+ }
+ return false
+}
+
+func (r *refProxyAdapter) SupportXUDP() bool {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.SupportXUDP()
+ }
+ return false
+}
+
+func (r *refProxyAdapter) SupportTFO() bool {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.SupportTFO()
+ }
+ return false
+}
+
+func (r *refProxyAdapter) MarshalJSON() ([]byte, error) {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.MarshalJSON()
+ }
+ return nil, C.ErrNotSupport
+}
+
+func (r *refProxyAdapter) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Metadata) (net.Conn, error) {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.StreamConnContext(ctx, c, metadata)
+ }
+ return nil, C.ErrNotSupport
+}
+
+func (r *refProxyAdapter) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.DialContext(ctx, metadata, opts...)
+ }
+ return nil, C.ErrNotSupport
+}
+
+func (r *refProxyAdapter) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.ListenPacketContext(ctx, metadata, opts...)
+ }
+ return nil, C.ErrNotSupport
+}
+
+func (r *refProxyAdapter) SupportUOT() bool {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.SupportUOT()
+ }
+ return false
+}
+
+func (r *refProxyAdapter) SupportWithDialer() C.NetWork {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.SupportWithDialer()
+ }
+ return C.InvalidNet
+}
+
+func (r *refProxyAdapter) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (C.Conn, error) {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.DialContextWithDialer(ctx, dialer, metadata)
+ }
+ return nil, C.ErrNotSupport
+}
+
+func (r *refProxyAdapter) ListenPacketWithDialer(ctx context.Context, dialer C.Dialer, metadata *C.Metadata) (C.PacketConn, error) {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.ListenPacketWithDialer(ctx, dialer, metadata)
+ }
+ return nil, C.ErrNotSupport
+}
+
+func (r *refProxyAdapter) IsL3Protocol(metadata *C.Metadata) bool {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.IsL3Protocol(metadata)
+ }
+ return false
+}
+
+func (r *refProxyAdapter) Unwrap(metadata *C.Metadata, touch bool) C.Proxy {
+ if r.proxyAdapter != nil {
+ return r.proxyAdapter.Unwrap(metadata, touch)
+ }
+ return nil
+}
+
+var _ C.ProxyAdapter = (*refProxyAdapter)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/wireguard_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/wireguard_test.go
new file mode 100644
index 0000000..2248bb7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outbound/wireguard_test.go
@@ -0,0 +1,45 @@
+//go:build with_gvisor
+
+package outbound
+
+import (
+ "context"
+ "runtime"
+ "testing"
+ "time"
+)
+
+func TestWireGuardGC(t *testing.T) {
+ option := WireGuardOption{}
+ option.Server = "162.159.192.1"
+ option.Port = 2408
+ option.PrivateKey = "iOx7749AdqH3IqluG7+0YbGKd0m1mcEXAfGRzpy9rG8="
+ option.PublicKey = "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo="
+ option.Ip = "172.16.0.2"
+ option.Ipv6 = "2606:4700:110:8d29:be92:3a6a:f4:c437"
+ option.Reserved = []uint8{51, 69, 125}
+ wg, err := NewWireGuard(option)
+ if err != nil {
+ t.Error(err)
+ }
+ closeCh := make(chan struct{})
+ wg.closeCh = closeCh
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
+ defer cancel()
+ err = wg.init(ctx)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ // must do a small sleep before test GC
+ // because it maybe deadlocks if w.device.Close call too fast after w.device.Start
+ time.Sleep(10 * time.Millisecond)
+ wg = nil
+ runtime.GC()
+ select {
+ case <-closeCh:
+ return
+ case <-ctx.Done():
+ t.Error("timeout not GC")
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/fallback.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/fallback.go
new file mode 100644
index 0000000..9387f7d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/fallback.go
@@ -0,0 +1,177 @@
+package outboundgroup
+
+import (
+ "context"
+ "encoding/json"
+ "errors"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter/outbound"
+ "github.com/metacubex/mihomo/common/callback"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/dialer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+)
+
+type Fallback struct {
+ *GroupBase
+ disableUDP bool
+ testUrl string
+ selected string
+ expectedStatus string
+ Hidden bool
+ Icon string
+}
+
+func (f *Fallback) Now() string {
+ proxy := f.findAliveProxy(false)
+ return proxy.Name()
+}
+
+// DialContext implements C.ProxyAdapter
+func (f *Fallback) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ proxy := f.findAliveProxy(true)
+ c, err := proxy.DialContext(ctx, metadata, f.Base.DialOptions(opts...)...)
+ if err == nil {
+ c.AppendToChains(f)
+ } else {
+ f.onDialFailed(proxy.Type(), err)
+ }
+
+ if N.NeedHandshake(c) {
+ c = callback.NewFirstWriteCallBackConn(c, func(err error) {
+ if err == nil {
+ f.onDialSuccess()
+ } else {
+ f.onDialFailed(proxy.Type(), err)
+ }
+ })
+ }
+
+ return c, err
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (f *Fallback) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ proxy := f.findAliveProxy(true)
+ pc, err := proxy.ListenPacketContext(ctx, metadata, f.Base.DialOptions(opts...)...)
+ if err == nil {
+ pc.AppendToChains(f)
+ }
+
+ return pc, err
+}
+
+// SupportUDP implements C.ProxyAdapter
+func (f *Fallback) SupportUDP() bool {
+ if f.disableUDP {
+ return false
+ }
+
+ proxy := f.findAliveProxy(false)
+ return proxy.SupportUDP()
+}
+
+// IsL3Protocol implements C.ProxyAdapter
+func (f *Fallback) IsL3Protocol(metadata *C.Metadata) bool {
+ return f.findAliveProxy(false).IsL3Protocol(metadata)
+}
+
+// MarshalJSON implements C.ProxyAdapter
+func (f *Fallback) MarshalJSON() ([]byte, error) {
+ all := []string{}
+ for _, proxy := range f.GetProxies(false) {
+ all = append(all, proxy.Name())
+ }
+ return json.Marshal(map[string]any{
+ "type": f.Type().String(),
+ "now": f.Now(),
+ "all": all,
+ "testUrl": f.testUrl,
+ "expectedStatus": f.expectedStatus,
+ "fixed": f.selected,
+ "hidden": f.Hidden,
+ "icon": f.Icon,
+ })
+}
+
+// Unwrap implements C.ProxyAdapter
+func (f *Fallback) Unwrap(metadata *C.Metadata, touch bool) C.Proxy {
+ proxy := f.findAliveProxy(touch)
+ return proxy
+}
+
+func (f *Fallback) findAliveProxy(touch bool) C.Proxy {
+ proxies := f.GetProxies(touch)
+ for _, proxy := range proxies {
+ if len(f.selected) == 0 {
+ if proxy.AliveForTestUrl(f.testUrl) {
+ return proxy
+ }
+ } else {
+ if proxy.Name() == f.selected {
+ if proxy.AliveForTestUrl(f.testUrl) {
+ return proxy
+ } else {
+ f.selected = ""
+ }
+ }
+ }
+ }
+
+ return proxies[0]
+}
+
+func (f *Fallback) Set(name string) error {
+ var p C.Proxy
+ for _, proxy := range f.GetProxies(false) {
+ if proxy.Name() == name {
+ p = proxy
+ break
+ }
+ }
+
+ if p == nil {
+ return errors.New("proxy not exist")
+ }
+
+ f.selected = name
+ if !p.AliveForTestUrl(f.testUrl) {
+ ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*time.Duration(5000))
+ defer cancel()
+ expectedStatus, _ := utils.NewUnsignedRanges[uint16](f.expectedStatus)
+ _, _ = p.URLTest(ctx, f.testUrl, expectedStatus)
+ }
+
+ return nil
+}
+
+func (f *Fallback) ForceSet(name string) {
+ f.selected = name
+}
+
+func NewFallback(option *GroupCommonOption, providers []provider.ProxyProvider) *Fallback {
+ return &Fallback{
+ GroupBase: NewGroupBase(GroupBaseOption{
+ outbound.BaseOption{
+ Name: option.Name,
+ Type: C.Fallback,
+ Interface: option.Interface,
+ RoutingMark: option.RoutingMark,
+ },
+ option.Filter,
+ option.ExcludeFilter,
+ option.ExcludeType,
+ option.TestTimeout,
+ option.MaxFailedTimes,
+ providers,
+ }),
+ disableUDP: option.DisableUDP,
+ testUrl: option.URL,
+ expectedStatus: option.ExpectedStatus,
+ Hidden: option.Hidden,
+ Icon: option.Icon,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/groupbase.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/groupbase.go
new file mode 100644
index 0000000..69fbb61
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/groupbase.go
@@ -0,0 +1,295 @@
+package outboundgroup
+
+import (
+ "context"
+ "fmt"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter/outbound"
+ "github.com/metacubex/mihomo/common/atomic"
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+ types "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/tunnel"
+
+ "github.com/dlclark/regexp2"
+)
+
+type GroupBase struct {
+ *outbound.Base
+ filterRegs []*regexp2.Regexp
+ excludeFilterReg *regexp2.Regexp
+ excludeTypeArray []string
+ providers []provider.ProxyProvider
+ failedTestMux sync.Mutex
+ failedTimes int
+ failedTime time.Time
+ failedTesting atomic.Bool
+ proxies [][]C.Proxy
+ versions []atomic.Uint32
+ TestTimeout int
+ maxFailedTimes int
+}
+
+type GroupBaseOption struct {
+ outbound.BaseOption
+ filter string
+ excludeFilter string
+ excludeType string
+ TestTimeout int
+ maxFailedTimes int
+ providers []provider.ProxyProvider
+}
+
+func NewGroupBase(opt GroupBaseOption) *GroupBase {
+ var excludeFilterReg *regexp2.Regexp
+ if opt.excludeFilter != "" {
+ excludeFilterReg = regexp2.MustCompile(opt.excludeFilter, regexp2.None)
+ }
+ var excludeTypeArray []string
+ if opt.excludeType != "" {
+ excludeTypeArray = strings.Split(opt.excludeType, "|")
+ }
+
+ var filterRegs []*regexp2.Regexp
+ if opt.filter != "" {
+ for _, filter := range strings.Split(opt.filter, "`") {
+ filterReg := regexp2.MustCompile(filter, regexp2.None)
+ filterRegs = append(filterRegs, filterReg)
+ }
+ }
+
+ gb := &GroupBase{
+ Base: outbound.NewBase(opt.BaseOption),
+ filterRegs: filterRegs,
+ excludeFilterReg: excludeFilterReg,
+ excludeTypeArray: excludeTypeArray,
+ providers: opt.providers,
+ failedTesting: atomic.NewBool(false),
+ TestTimeout: opt.TestTimeout,
+ maxFailedTimes: opt.maxFailedTimes,
+ }
+
+ if gb.TestTimeout == 0 {
+ gb.TestTimeout = 5000
+ }
+ if gb.maxFailedTimes == 0 {
+ gb.maxFailedTimes = 5
+ }
+
+ gb.proxies = make([][]C.Proxy, len(opt.providers))
+ gb.versions = make([]atomic.Uint32, len(opt.providers))
+
+ return gb
+}
+
+func (gb *GroupBase) Touch() {
+ for _, pd := range gb.providers {
+ pd.Touch()
+ }
+}
+
+func (gb *GroupBase) GetProxies(touch bool) []C.Proxy {
+ var proxies []C.Proxy
+ if len(gb.filterRegs) == 0 {
+ for _, pd := range gb.providers {
+ if touch {
+ pd.Touch()
+ }
+ proxies = append(proxies, pd.Proxies()...)
+ }
+ } else {
+ for i, pd := range gb.providers {
+ if touch {
+ pd.Touch()
+ }
+
+ if pd.VehicleType() == types.Compatible {
+ gb.versions[i].Store(pd.Version())
+ gb.proxies[i] = pd.Proxies()
+ continue
+ }
+
+ version := gb.versions[i].Load()
+ if version != pd.Version() && gb.versions[i].CompareAndSwap(version, pd.Version()) {
+ var (
+ proxies []C.Proxy
+ newProxies []C.Proxy
+ )
+
+ proxies = pd.Proxies()
+ proxiesSet := map[string]struct{}{}
+ for _, filterReg := range gb.filterRegs {
+ for _, p := range proxies {
+ name := p.Name()
+ if mat, _ := filterReg.MatchString(name); mat {
+ if _, ok := proxiesSet[name]; !ok {
+ proxiesSet[name] = struct{}{}
+ newProxies = append(newProxies, p)
+ }
+ }
+ }
+ }
+
+ gb.proxies[i] = newProxies
+ }
+ }
+
+ for _, p := range gb.proxies {
+ proxies = append(proxies, p...)
+ }
+ }
+
+ if len(gb.providers) > 1 && len(gb.filterRegs) > 1 {
+ var newProxies []C.Proxy
+ proxiesSet := map[string]struct{}{}
+ for _, filterReg := range gb.filterRegs {
+ for _, p := range proxies {
+ name := p.Name()
+ if mat, _ := filterReg.MatchString(name); mat {
+ if _, ok := proxiesSet[name]; !ok {
+ proxiesSet[name] = struct{}{}
+ newProxies = append(newProxies, p)
+ }
+ }
+ }
+ }
+ for _, p := range proxies { // add not matched proxies at the end
+ name := p.Name()
+ if _, ok := proxiesSet[name]; !ok {
+ proxiesSet[name] = struct{}{}
+ newProxies = append(newProxies, p)
+ }
+ }
+ proxies = newProxies
+ }
+ if gb.excludeTypeArray != nil {
+ var newProxies []C.Proxy
+ for _, p := range proxies {
+ mType := p.Type().String()
+ flag := false
+ for i := range gb.excludeTypeArray {
+ if strings.EqualFold(mType, gb.excludeTypeArray[i]) {
+ flag = true
+ break
+ }
+
+ }
+ if flag {
+ continue
+ }
+ newProxies = append(newProxies, p)
+ }
+ proxies = newProxies
+ }
+
+ if gb.excludeFilterReg != nil {
+ var newProxies []C.Proxy
+ for _, p := range proxies {
+ name := p.Name()
+ if mat, _ := gb.excludeFilterReg.MatchString(name); mat {
+ continue
+ }
+ newProxies = append(newProxies, p)
+ }
+ proxies = newProxies
+ }
+
+ if len(proxies) == 0 {
+ return append(proxies, tunnel.Proxies()["COMPATIBLE"])
+ }
+
+ return proxies
+}
+
+func (gb *GroupBase) URLTest(ctx context.Context, url string, expectedStatus utils.IntRanges[uint16]) (map[string]uint16, error) {
+ var wg sync.WaitGroup
+ var lock sync.Mutex
+ mp := map[string]uint16{}
+ proxies := gb.GetProxies(false)
+ for _, proxy := range proxies {
+ proxy := proxy
+ wg.Add(1)
+ go func() {
+ delay, err := proxy.URLTest(ctx, url, expectedStatus)
+ if err == nil {
+ lock.Lock()
+ mp[proxy.Name()] = delay
+ lock.Unlock()
+ }
+
+ wg.Done()
+ }()
+ }
+ wg.Wait()
+
+ if len(mp) == 0 {
+ return mp, fmt.Errorf("get delay: all proxies timeout")
+ } else {
+ return mp, nil
+ }
+}
+
+func (gb *GroupBase) onDialFailed(adapterType C.AdapterType, err error) {
+ if adapterType == C.Direct || adapterType == C.Compatible || adapterType == C.Reject || adapterType == C.Pass || adapterType == C.RejectDrop {
+ return
+ }
+
+ if strings.Contains(err.Error(), "connection refused") {
+ go gb.healthCheck()
+ return
+ }
+
+ go func() {
+ gb.failedTestMux.Lock()
+ defer gb.failedTestMux.Unlock()
+
+ gb.failedTimes++
+ if gb.failedTimes == 1 {
+ log.Debugln("ProxyGroup: %s first failed", gb.Name())
+ gb.failedTime = time.Now()
+ } else {
+ if time.Since(gb.failedTime) > time.Duration(gb.TestTimeout)*time.Millisecond {
+ gb.failedTimes = 0
+ return
+ }
+
+ log.Debugln("ProxyGroup: %s failed count: %d", gb.Name(), gb.failedTimes)
+ if gb.failedTimes >= gb.maxFailedTimes {
+ log.Warnln("because %s failed multiple times, active health check", gb.Name())
+ gb.healthCheck()
+ }
+ }
+ }()
+}
+
+func (gb *GroupBase) healthCheck() {
+ if gb.failedTesting.Load() {
+ return
+ }
+
+ gb.failedTesting.Store(true)
+ wg := sync.WaitGroup{}
+ for _, proxyProvider := range gb.providers {
+ wg.Add(1)
+ proxyProvider := proxyProvider
+ go func() {
+ defer wg.Done()
+ proxyProvider.HealthCheck()
+ }()
+ }
+
+ wg.Wait()
+ gb.failedTesting.Store(false)
+ gb.failedTimes = 0
+}
+
+func (gb *GroupBase) onDialSuccess() {
+ if !gb.failedTesting.Load() {
+ gb.failedTimes = 0
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/loadbalance.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/loadbalance.go
new file mode 100644
index 0000000..048cc34
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/loadbalance.go
@@ -0,0 +1,278 @@
+package outboundgroup
+
+import (
+ "context"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "net"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter/outbound"
+ "github.com/metacubex/mihomo/common/callback"
+ "github.com/metacubex/mihomo/common/lru"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/dialer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+
+ "golang.org/x/net/publicsuffix"
+)
+
+type strategyFn = func(proxies []C.Proxy, metadata *C.Metadata, touch bool) C.Proxy
+
+type LoadBalance struct {
+ *GroupBase
+ disableUDP bool
+ strategyFn strategyFn
+ testUrl string
+ expectedStatus string
+ Hidden bool
+ Icon string
+}
+
+var errStrategy = errors.New("unsupported strategy")
+
+func parseStrategy(config map[string]any) string {
+ if strategy, ok := config["strategy"].(string); ok {
+ return strategy
+ }
+ return "consistent-hashing"
+}
+
+func getKey(metadata *C.Metadata) string {
+ if metadata == nil {
+ return ""
+ }
+
+ if metadata.Host != "" {
+ // ip host
+ if ip := net.ParseIP(metadata.Host); ip != nil {
+ return metadata.Host
+ }
+
+ if etld, err := publicsuffix.EffectiveTLDPlusOne(metadata.Host); err == nil {
+ return etld
+ }
+ }
+
+ if !metadata.DstIP.IsValid() {
+ return ""
+ }
+
+ return metadata.DstIP.String()
+}
+
+func getKeyWithSrcAndDst(metadata *C.Metadata) string {
+ dst := getKey(metadata)
+ src := ""
+ if metadata != nil {
+ src = metadata.SrcIP.String()
+ }
+
+ return fmt.Sprintf("%s%s", src, dst)
+}
+
+func jumpHash(key uint64, buckets int32) int32 {
+ var b, j int64
+
+ for j < int64(buckets) {
+ b = j
+ key = key*2862933555777941757 + 1
+ j = int64(float64(b+1) * (float64(int64(1)<<31) / float64((key>>33)+1)))
+ }
+
+ return int32(b)
+}
+
+// DialContext implements C.ProxyAdapter
+func (lb *LoadBalance) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (c C.Conn, err error) {
+ proxy := lb.Unwrap(metadata, true)
+ c, err = proxy.DialContext(ctx, metadata, lb.Base.DialOptions(opts...)...)
+
+ if err == nil {
+ c.AppendToChains(lb)
+ } else {
+ lb.onDialFailed(proxy.Type(), err)
+ }
+
+ if N.NeedHandshake(c) {
+ c = callback.NewFirstWriteCallBackConn(c, func(err error) {
+ if err == nil {
+ lb.onDialSuccess()
+ } else {
+ lb.onDialFailed(proxy.Type(), err)
+ }
+ })
+ }
+
+ return
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (lb *LoadBalance) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (pc C.PacketConn, err error) {
+ defer func() {
+ if err == nil {
+ pc.AppendToChains(lb)
+ }
+ }()
+
+ proxy := lb.Unwrap(metadata, true)
+ return proxy.ListenPacketContext(ctx, metadata, lb.Base.DialOptions(opts...)...)
+}
+
+// SupportUDP implements C.ProxyAdapter
+func (lb *LoadBalance) SupportUDP() bool {
+ return !lb.disableUDP
+}
+
+// IsL3Protocol implements C.ProxyAdapter
+func (lb *LoadBalance) IsL3Protocol(metadata *C.Metadata) bool {
+ return lb.Unwrap(metadata, false).IsL3Protocol(metadata)
+}
+
+func strategyRoundRobin(url string) strategyFn {
+ idx := 0
+ idxMutex := sync.Mutex{}
+ return func(proxies []C.Proxy, metadata *C.Metadata, touch bool) C.Proxy {
+ idxMutex.Lock()
+ defer idxMutex.Unlock()
+
+ i := 0
+ length := len(proxies)
+
+ if touch {
+ defer func() {
+ idx = (idx + i) % length
+ }()
+ }
+
+ for ; i < length; i++ {
+ id := (idx + i) % length
+ proxy := proxies[id]
+ if proxy.AliveForTestUrl(url) {
+ i++
+ return proxy
+ }
+ }
+
+ return proxies[0]
+ }
+}
+
+func strategyConsistentHashing(url string) strategyFn {
+ maxRetry := 5
+ return func(proxies []C.Proxy, metadata *C.Metadata, touch bool) C.Proxy {
+ key := utils.MapHash(getKey(metadata))
+ buckets := int32(len(proxies))
+ for i := 0; i < maxRetry; i, key = i+1, key+1 {
+ idx := jumpHash(key, buckets)
+ proxy := proxies[idx]
+ if proxy.AliveForTestUrl(url) {
+ return proxy
+ }
+ }
+
+ // when availability is poor, traverse the entire list to get the available nodes
+ for _, proxy := range proxies {
+ if proxy.AliveForTestUrl(url) {
+ return proxy
+ }
+ }
+
+ return proxies[0]
+ }
+}
+
+func strategyStickySessions(url string) strategyFn {
+ ttl := time.Minute * 10
+ maxRetry := 5
+ lruCache := lru.New[uint64, int](
+ lru.WithAge[uint64, int](int64(ttl.Seconds())),
+ lru.WithSize[uint64, int](1000))
+ return func(proxies []C.Proxy, metadata *C.Metadata, touch bool) C.Proxy {
+ key := utils.MapHash(getKeyWithSrcAndDst(metadata))
+ length := len(proxies)
+ idx, has := lruCache.Get(key)
+ if !has {
+ idx = int(jumpHash(key+uint64(time.Now().UnixNano()), int32(length)))
+ }
+
+ nowIdx := idx
+ for i := 1; i < maxRetry; i++ {
+ proxy := proxies[nowIdx]
+ if proxy.AliveForTestUrl(url) {
+ if !has || nowIdx != idx {
+ lruCache.Set(key, nowIdx)
+ }
+
+ return proxy
+ } else {
+ nowIdx = int(jumpHash(key+uint64(time.Now().UnixNano()), int32(length)))
+ }
+ }
+
+ lruCache.Set(key, 0)
+ return proxies[0]
+ }
+}
+
+// Unwrap implements C.ProxyAdapter
+func (lb *LoadBalance) Unwrap(metadata *C.Metadata, touch bool) C.Proxy {
+ proxies := lb.GetProxies(touch)
+ return lb.strategyFn(proxies, metadata, touch)
+}
+
+// MarshalJSON implements C.ProxyAdapter
+func (lb *LoadBalance) MarshalJSON() ([]byte, error) {
+ var all []string
+ for _, proxy := range lb.GetProxies(false) {
+ all = append(all, proxy.Name())
+ }
+ return json.Marshal(map[string]any{
+ "type": lb.Type().String(),
+ "all": all,
+ "testUrl": lb.testUrl,
+ "expectedStatus": lb.expectedStatus,
+ "hidden": lb.Hidden,
+ "icon": lb.Icon,
+ })
+}
+
+func NewLoadBalance(option *GroupCommonOption, providers []provider.ProxyProvider, strategy string) (lb *LoadBalance, err error) {
+ var strategyFn strategyFn
+ switch strategy {
+ case "consistent-hashing":
+ strategyFn = strategyConsistentHashing(option.URL)
+ case "round-robin":
+ strategyFn = strategyRoundRobin(option.URL)
+ case "sticky-sessions":
+ strategyFn = strategyStickySessions(option.URL)
+ default:
+ return nil, fmt.Errorf("%w: %s", errStrategy, strategy)
+ }
+ return &LoadBalance{
+ GroupBase: NewGroupBase(GroupBaseOption{
+ outbound.BaseOption{
+ Name: option.Name,
+ Type: C.LoadBalance,
+ Interface: option.Interface,
+ RoutingMark: option.RoutingMark,
+ },
+ option.Filter,
+ option.ExcludeFilter,
+ option.ExcludeType,
+ option.TestTimeout,
+ option.MaxFailedTimes,
+ providers,
+ }),
+ strategyFn: strategyFn,
+ disableUDP: option.DisableUDP,
+ testUrl: option.URL,
+ expectedStatus: option.ExpectedStatus,
+ Hidden: option.Hidden,
+ Icon: option.Icon,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/parser.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/parser.go
new file mode 100644
index 0000000..b073c4b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/parser.go
@@ -0,0 +1,223 @@
+package outboundgroup
+
+import (
+ "errors"
+ "fmt"
+ "strings"
+
+ "github.com/dlclark/regexp2"
+
+ "github.com/metacubex/mihomo/adapter/outbound"
+ "github.com/metacubex/mihomo/adapter/provider"
+ "github.com/metacubex/mihomo/common/structure"
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+ types "github.com/metacubex/mihomo/constant/provider"
+)
+
+var (
+ errFormat = errors.New("format error")
+ errType = errors.New("unsupported type")
+ errMissProxy = errors.New("`use` or `proxies` missing")
+ errDuplicateProvider = errors.New("duplicate provider name")
+)
+
+type GroupCommonOption struct {
+ outbound.BasicOption
+ Name string `group:"name"`
+ Type string `group:"type"`
+ Proxies []string `group:"proxies,omitempty"`
+ Use []string `group:"use,omitempty"`
+ URL string `group:"url,omitempty"`
+ Interval int `group:"interval,omitempty"`
+ TestTimeout int `group:"timeout,omitempty"`
+ MaxFailedTimes int `group:"max-failed-times,omitempty"`
+ Lazy bool `group:"lazy,omitempty"`
+ DisableUDP bool `group:"disable-udp,omitempty"`
+ Filter string `group:"filter,omitempty"`
+ ExcludeFilter string `group:"exclude-filter,omitempty"`
+ ExcludeType string `group:"exclude-type,omitempty"`
+ ExpectedStatus string `group:"expected-status,omitempty"`
+ IncludeAll bool `group:"include-all,omitempty"`
+ IncludeAllProxies bool `group:"include-all-proxies,omitempty"`
+ IncludeAllProviders bool `group:"include-all-providers,omitempty"`
+ Hidden bool `group:"hidden,omitempty"`
+ Icon string `group:"icon,omitempty"`
+}
+
+func ParseProxyGroup(config map[string]any, proxyMap map[string]C.Proxy, providersMap map[string]types.ProxyProvider, AllProxies []string, AllProviders []string) (C.ProxyAdapter, error) {
+ decoder := structure.NewDecoder(structure.Option{TagName: "group", WeaklyTypedInput: true})
+
+ groupOption := &GroupCommonOption{
+ Lazy: true,
+ }
+ if err := decoder.Decode(config, groupOption); err != nil {
+ return nil, errFormat
+ }
+
+ if groupOption.Type == "" || groupOption.Name == "" {
+ return nil, errFormat
+ }
+
+ groupName := groupOption.Name
+
+ providers := []types.ProxyProvider{}
+
+ if groupOption.IncludeAll {
+ groupOption.IncludeAllProviders = true
+ groupOption.IncludeAllProxies = true
+ }
+
+ if groupOption.IncludeAllProviders {
+ groupOption.Use = AllProviders
+ }
+ if groupOption.IncludeAllProxies {
+ if groupOption.Filter != "" {
+ var filterRegs []*regexp2.Regexp
+ for _, filter := range strings.Split(groupOption.Filter, "`") {
+ filterReg := regexp2.MustCompile(filter, regexp2.None)
+ filterRegs = append(filterRegs, filterReg)
+ }
+ for _, p := range AllProxies {
+ for _, filterReg := range filterRegs {
+ if mat, _ := filterReg.MatchString(p); mat {
+ groupOption.Proxies = append(groupOption.Proxies, p)
+ }
+ }
+ }
+ } else {
+ groupOption.Proxies = append(groupOption.Proxies, AllProxies...)
+ }
+ if len(groupOption.Proxies) == 0 && len(groupOption.Use) == 0 {
+ groupOption.Proxies = []string{"COMPATIBLE"}
+ }
+ }
+
+ if len(groupOption.Proxies) == 0 && len(groupOption.Use) == 0 {
+ return nil, fmt.Errorf("%s: %w", groupName, errMissProxy)
+ }
+
+ expectedStatus, err := utils.NewUnsignedRanges[uint16](groupOption.ExpectedStatus)
+ if err != nil {
+ return nil, fmt.Errorf("%s: %w", groupName, err)
+ }
+
+ status := strings.TrimSpace(groupOption.ExpectedStatus)
+ if status == "" {
+ status = "*"
+ }
+ groupOption.ExpectedStatus = status
+
+ if len(groupOption.Use) != 0 {
+ PDs, err := getProviders(providersMap, groupOption.Use)
+ if err != nil {
+ return nil, fmt.Errorf("%s: %w", groupName, err)
+ }
+
+ // if test URL is empty, use the first health check URL of providers
+ if groupOption.URL == "" {
+ for _, pd := range PDs {
+ if pd.HealthCheckURL() != "" {
+ groupOption.URL = pd.HealthCheckURL()
+ break
+ }
+ }
+ if groupOption.URL == "" {
+ groupOption.URL = C.DefaultTestURL
+ }
+ } else {
+ addTestUrlToProviders(PDs, groupOption.URL, expectedStatus, groupOption.Filter, uint(groupOption.Interval))
+ }
+ providers = append(providers, PDs...)
+ }
+
+ if len(groupOption.Proxies) != 0 {
+ ps, err := getProxies(proxyMap, groupOption.Proxies)
+ if err != nil {
+ return nil, fmt.Errorf("%s: %w", groupName, err)
+ }
+
+ if _, ok := providersMap[groupName]; ok {
+ return nil, fmt.Errorf("%s: %w", groupName, errDuplicateProvider)
+ }
+
+ if groupOption.URL == "" {
+ groupOption.URL = C.DefaultTestURL
+ }
+
+ // select don't need auto health check
+ if groupOption.Type != "select" && groupOption.Type != "relay" {
+ if groupOption.Interval == 0 {
+ groupOption.Interval = 300
+ }
+ }
+
+ hc := provider.NewHealthCheck(ps, groupOption.URL, uint(groupOption.TestTimeout), uint(groupOption.Interval), groupOption.Lazy, expectedStatus)
+
+ pd, err := provider.NewCompatibleProvider(groupName, ps, hc)
+ if err != nil {
+ return nil, fmt.Errorf("%s: %w", groupName, err)
+ }
+
+ providers = append([]types.ProxyProvider{pd}, providers...)
+ providersMap[groupName] = pd
+ }
+
+ var group C.ProxyAdapter
+ switch groupOption.Type {
+ case "url-test":
+ opts := parseURLTestOption(config)
+ group = NewURLTest(groupOption, providers, opts...)
+ case "select":
+ group = NewSelector(groupOption, providers)
+ case "fallback":
+ group = NewFallback(groupOption, providers)
+ case "load-balance":
+ strategy := parseStrategy(config)
+ return NewLoadBalance(groupOption, providers, strategy)
+ case "relay":
+ group = NewRelay(groupOption, providers)
+ default:
+ return nil, fmt.Errorf("%w: %s", errType, groupOption.Type)
+ }
+
+ return group, nil
+}
+
+func getProxies(mapping map[string]C.Proxy, list []string) ([]C.Proxy, error) {
+ var ps []C.Proxy
+ for _, name := range list {
+ p, ok := mapping[name]
+ if !ok {
+ return nil, fmt.Errorf("'%s' not found", name)
+ }
+ ps = append(ps, p)
+ }
+ return ps, nil
+}
+
+func getProviders(mapping map[string]types.ProxyProvider, list []string) ([]types.ProxyProvider, error) {
+ var ps []types.ProxyProvider
+ for _, name := range list {
+ p, ok := mapping[name]
+ if !ok {
+ return nil, fmt.Errorf("'%s' not found", name)
+ }
+
+ if p.VehicleType() == types.Compatible {
+ return nil, fmt.Errorf("proxy group %s can't contains in `use`", name)
+ }
+ ps = append(ps, p)
+ }
+ return ps, nil
+}
+
+func addTestUrlToProviders(providers []types.ProxyProvider, url string, expectedStatus utils.IntRanges[uint16], filter string, interval uint) {
+ if len(providers) == 0 || len(url) == 0 {
+ return
+ }
+
+ for _, pd := range providers {
+ pd.RegisterHealthCheckTask(url, expectedStatus, filter, interval)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/patch_android.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/patch_android.go
new file mode 100644
index 0000000..c656681
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/patch_android.go
@@ -0,0 +1,64 @@
+//go:build android && cmfa
+
+package outboundgroup
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+)
+
+type ProxyGroup interface {
+ C.ProxyAdapter
+
+ Providers() []provider.ProxyProvider
+ Proxies() []C.Proxy
+ Now() string
+}
+
+func (f *Fallback) Providers() []provider.ProxyProvider {
+ return f.providers
+}
+
+func (lb *LoadBalance) Providers() []provider.ProxyProvider {
+ return lb.providers
+}
+
+func (f *Fallback) Proxies() []C.Proxy {
+ return f.GetProxies(false)
+}
+
+func (lb *LoadBalance) Proxies() []C.Proxy {
+ return lb.GetProxies(false)
+}
+
+func (lb *LoadBalance) Now() string {
+ return ""
+}
+
+func (r *Relay) Providers() []provider.ProxyProvider {
+ return r.providers
+}
+
+func (r *Relay) Proxies() []C.Proxy {
+ return r.GetProxies(false)
+}
+
+func (r *Relay) Now() string {
+ return ""
+}
+
+func (s *Selector) Providers() []provider.ProxyProvider {
+ return s.providers
+}
+
+func (s *Selector) Proxies() []C.Proxy {
+ return s.GetProxies(false)
+}
+
+func (u *URLTest) Providers() []provider.ProxyProvider {
+ return u.providers
+}
+
+func (u *URLTest) Proxies() []C.Proxy {
+ return u.GetProxies(false)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/relay.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/relay.go
new file mode 100644
index 0000000..29aa9c6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/relay.go
@@ -0,0 +1,172 @@
+package outboundgroup
+
+import (
+ "context"
+ "encoding/json"
+
+ "github.com/metacubex/mihomo/adapter/outbound"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/log"
+)
+
+type Relay struct {
+ *GroupBase
+ Hidden bool
+ Icon string
+}
+
+// DialContext implements C.ProxyAdapter
+func (r *Relay) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ proxies, chainProxies := r.proxies(metadata, true)
+
+ switch len(proxies) {
+ case 0:
+ return outbound.NewDirect().DialContext(ctx, metadata, r.Base.DialOptions(opts...)...)
+ case 1:
+ return proxies[0].DialContext(ctx, metadata, r.Base.DialOptions(opts...)...)
+ }
+ var d C.Dialer
+ d = dialer.NewDialer(r.Base.DialOptions(opts...)...)
+ for _, proxy := range proxies[:len(proxies)-1] {
+ d = proxydialer.New(proxy, d, false)
+ }
+ last := proxies[len(proxies)-1]
+ conn, err := last.DialContextWithDialer(ctx, d, metadata)
+ if err != nil {
+ return nil, err
+ }
+
+ for i := len(chainProxies) - 2; i >= 0; i-- {
+ conn.AppendToChains(chainProxies[i])
+ }
+
+ conn.AppendToChains(r)
+
+ return conn, nil
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (r *Relay) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
+ proxies, chainProxies := r.proxies(metadata, true)
+
+ switch len(proxies) {
+ case 0:
+ return outbound.NewDirect().ListenPacketContext(ctx, metadata, r.Base.DialOptions(opts...)...)
+ case 1:
+ return proxies[0].ListenPacketContext(ctx, metadata, r.Base.DialOptions(opts...)...)
+ }
+
+ var d C.Dialer
+ d = dialer.NewDialer(r.Base.DialOptions(opts...)...)
+ for _, proxy := range proxies[:len(proxies)-1] {
+ d = proxydialer.New(proxy, d, false)
+ }
+ last := proxies[len(proxies)-1]
+ pc, err := last.ListenPacketWithDialer(ctx, d, metadata)
+ if err != nil {
+ return nil, err
+ }
+
+ for i := len(chainProxies) - 2; i >= 0; i-- {
+ pc.AppendToChains(chainProxies[i])
+ }
+
+ pc.AppendToChains(r)
+
+ return pc, nil
+}
+
+// SupportUDP implements C.ProxyAdapter
+func (r *Relay) SupportUDP() bool {
+ proxies, _ := r.proxies(nil, false)
+ if len(proxies) == 0 { // C.Direct
+ return true
+ }
+ for i := len(proxies) - 1; i >= 0; i-- {
+ proxy := proxies[i]
+ if !proxy.SupportUDP() {
+ return false
+ }
+ if proxy.SupportUOT() {
+ return true
+ }
+ switch proxy.SupportWithDialer() {
+ case C.ALLNet:
+ case C.UDP:
+ default: // C.TCP and C.InvalidNet
+ return false
+ }
+ }
+ return true
+}
+
+// MarshalJSON implements C.ProxyAdapter
+func (r *Relay) MarshalJSON() ([]byte, error) {
+ all := []string{}
+ for _, proxy := range r.GetProxies(false) {
+ all = append(all, proxy.Name())
+ }
+ return json.Marshal(map[string]any{
+ "type": r.Type().String(),
+ "all": all,
+ "hidden": r.Hidden,
+ "icon": r.Icon,
+ })
+}
+
+func (r *Relay) proxies(metadata *C.Metadata, touch bool) ([]C.Proxy, []C.Proxy) {
+ rawProxies := r.GetProxies(touch)
+
+ var proxies []C.Proxy
+ var chainProxies []C.Proxy
+ var targetProxies []C.Proxy
+
+ for n, proxy := range rawProxies {
+ proxies = append(proxies, proxy)
+ chainProxies = append(chainProxies, proxy)
+ subproxy := proxy.Unwrap(metadata, touch)
+ for subproxy != nil {
+ chainProxies = append(chainProxies, subproxy)
+ proxies[n] = subproxy
+ subproxy = subproxy.Unwrap(metadata, touch)
+ }
+ }
+
+ for _, proxy := range proxies {
+ if proxy.Type() != C.Direct && proxy.Type() != C.Compatible {
+ targetProxies = append(targetProxies, proxy)
+ }
+ }
+
+ return targetProxies, chainProxies
+}
+
+func (r *Relay) Addr() string {
+ proxies, _ := r.proxies(nil, false)
+ return proxies[len(proxies)-1].Addr()
+}
+
+func NewRelay(option *GroupCommonOption, providers []provider.ProxyProvider) *Relay {
+ log.Warnln("The group [%s] with relay type is deprecated, please using dialer-proxy instead", option.Name)
+ return &Relay{
+ GroupBase: NewGroupBase(GroupBaseOption{
+ outbound.BaseOption{
+ Name: option.Name,
+ Type: C.Relay,
+ Interface: option.Interface,
+ RoutingMark: option.RoutingMark,
+ },
+ "",
+ "",
+ "",
+ 5000,
+ 5,
+ providers,
+ }),
+ Hidden: option.Hidden,
+ Icon: option.Icon,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/selector.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/selector.go
new file mode 100644
index 0000000..20eca70
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/selector.go
@@ -0,0 +1,126 @@
+package outboundgroup
+
+import (
+ "context"
+ "encoding/json"
+ "errors"
+
+ "github.com/metacubex/mihomo/adapter/outbound"
+ "github.com/metacubex/mihomo/component/dialer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+)
+
+type Selector struct {
+ *GroupBase
+ disableUDP bool
+ selected string
+ Hidden bool
+ Icon string
+}
+
+// DialContext implements C.ProxyAdapter
+func (s *Selector) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
+ c, err := s.selectedProxy(true).DialContext(ctx, metadata, s.Base.DialOptions(opts...)...)
+ if err == nil {
+ c.AppendToChains(s)
+ }
+ return c, err
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (s *Selector) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ pc, err := s.selectedProxy(true).ListenPacketContext(ctx, metadata, s.Base.DialOptions(opts...)...)
+ if err == nil {
+ pc.AppendToChains(s)
+ }
+ return pc, err
+}
+
+// SupportUDP implements C.ProxyAdapter
+func (s *Selector) SupportUDP() bool {
+ if s.disableUDP {
+ return false
+ }
+
+ return s.selectedProxy(false).SupportUDP()
+}
+
+// IsL3Protocol implements C.ProxyAdapter
+func (s *Selector) IsL3Protocol(metadata *C.Metadata) bool {
+ return s.selectedProxy(false).IsL3Protocol(metadata)
+}
+
+// MarshalJSON implements C.ProxyAdapter
+func (s *Selector) MarshalJSON() ([]byte, error) {
+ all := []string{}
+ for _, proxy := range s.GetProxies(false) {
+ all = append(all, proxy.Name())
+ }
+
+ return json.Marshal(map[string]any{
+ "type": s.Type().String(),
+ "now": s.Now(),
+ "all": all,
+ "hidden": s.Hidden,
+ "icon": s.Icon,
+ })
+}
+
+func (s *Selector) Now() string {
+ return s.selectedProxy(false).Name()
+}
+
+func (s *Selector) Set(name string) error {
+ for _, proxy := range s.GetProxies(false) {
+ if proxy.Name() == name {
+ s.selected = name
+ return nil
+ }
+ }
+
+ return errors.New("proxy not exist")
+}
+
+func (s *Selector) ForceSet(name string) {
+ s.selected = name
+}
+
+// Unwrap implements C.ProxyAdapter
+func (s *Selector) Unwrap(metadata *C.Metadata, touch bool) C.Proxy {
+ return s.selectedProxy(touch)
+}
+
+func (s *Selector) selectedProxy(touch bool) C.Proxy {
+ proxies := s.GetProxies(touch)
+ for _, proxy := range proxies {
+ if proxy.Name() == s.selected {
+ return proxy
+ }
+ }
+
+ return proxies[0]
+}
+
+func NewSelector(option *GroupCommonOption, providers []provider.ProxyProvider) *Selector {
+ return &Selector{
+ GroupBase: NewGroupBase(GroupBaseOption{
+ outbound.BaseOption{
+ Name: option.Name,
+ Type: C.Selector,
+ Interface: option.Interface,
+ RoutingMark: option.RoutingMark,
+ },
+ option.Filter,
+ option.ExcludeFilter,
+ option.ExcludeType,
+ option.TestTimeout,
+ option.MaxFailedTimes,
+ providers,
+ }),
+ selected: "COMPATIBLE",
+ disableUDP: option.DisableUDP,
+ Hidden: option.Hidden,
+ Icon: option.Icon,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/urltest.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/urltest.go
new file mode 100644
index 0000000..5da44f3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/urltest.go
@@ -0,0 +1,255 @@
+package outboundgroup
+
+import (
+ "context"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter/outbound"
+ "github.com/metacubex/mihomo/common/callback"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/singledo"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/dialer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+)
+
+type urlTestOption func(*URLTest)
+
+func urlTestWithTolerance(tolerance uint16) urlTestOption {
+ return func(u *URLTest) {
+ u.tolerance = tolerance
+ }
+}
+
+type URLTest struct {
+ *GroupBase
+ selected string
+ testUrl string
+ expectedStatus string
+ tolerance uint16
+ disableUDP bool
+ Hidden bool
+ Icon string
+ fastNode C.Proxy
+ fastSingle *singledo.Single[C.Proxy]
+}
+
+func (u *URLTest) Now() string {
+ return u.fast(false).Name()
+}
+
+func (u *URLTest) Set(name string) error {
+ var p C.Proxy
+ for _, proxy := range u.GetProxies(false) {
+ if proxy.Name() == name {
+ p = proxy
+ break
+ }
+ }
+ if p == nil {
+ return errors.New("proxy not exist")
+ }
+ u.selected = name
+ u.fast(false)
+ return nil
+}
+
+func (u *URLTest) ForceSet(name string) {
+ u.selected = name
+}
+
+// DialContext implements C.ProxyAdapter
+func (u *URLTest) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (c C.Conn, err error) {
+ proxy := u.fast(true)
+ c, err = proxy.DialContext(ctx, metadata, u.Base.DialOptions(opts...)...)
+ if err == nil {
+ c.AppendToChains(u)
+ } else {
+ u.onDialFailed(proxy.Type(), err)
+ }
+
+ if N.NeedHandshake(c) {
+ c = callback.NewFirstWriteCallBackConn(c, func(err error) {
+ if err == nil {
+ u.onDialSuccess()
+ } else {
+ u.onDialFailed(proxy.Type(), err)
+ }
+ })
+ }
+
+ return c, err
+}
+
+// ListenPacketContext implements C.ProxyAdapter
+func (u *URLTest) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
+ pc, err := u.fast(true).ListenPacketContext(ctx, metadata, u.Base.DialOptions(opts...)...)
+ if err == nil {
+ pc.AppendToChains(u)
+ }
+
+ return pc, err
+}
+
+// Unwrap implements C.ProxyAdapter
+func (u *URLTest) Unwrap(metadata *C.Metadata, touch bool) C.Proxy {
+ return u.fast(touch)
+}
+
+func (u *URLTest) fast(touch bool) C.Proxy {
+
+ proxies := u.GetProxies(touch)
+ if u.selected != "" {
+ for _, proxy := range proxies {
+ if !proxy.AliveForTestUrl(u.testUrl) {
+ continue
+ }
+ if proxy.Name() == u.selected {
+ u.fastNode = proxy
+ return proxy
+ }
+ }
+ }
+
+ elm, _, shared := u.fastSingle.Do(func() (C.Proxy, error) {
+ fast := proxies[0]
+ minDelay := fast.LastDelayForTestUrl(u.testUrl)
+ fastNotExist := true
+
+ for _, proxy := range proxies[1:] {
+ if u.fastNode != nil && proxy.Name() == u.fastNode.Name() {
+ fastNotExist = false
+ }
+
+ if !proxy.AliveForTestUrl(u.testUrl) {
+ continue
+ }
+
+ delay := proxy.LastDelayForTestUrl(u.testUrl)
+ if delay < minDelay {
+ fast = proxy
+ minDelay = delay
+ }
+
+ }
+ // tolerance
+ if u.fastNode == nil || fastNotExist || !u.fastNode.AliveForTestUrl(u.testUrl) || u.fastNode.LastDelayForTestUrl(u.testUrl) > fast.LastDelayForTestUrl(u.testUrl)+u.tolerance {
+ u.fastNode = fast
+ }
+ return u.fastNode, nil
+ })
+ if shared && touch { // a shared fastSingle.Do() may cause providers untouched, so we touch them again
+ u.Touch()
+ }
+
+ return elm
+}
+
+// SupportUDP implements C.ProxyAdapter
+func (u *URLTest) SupportUDP() bool {
+ if u.disableUDP {
+ return false
+ }
+ return u.fast(false).SupportUDP()
+}
+
+// IsL3Protocol implements C.ProxyAdapter
+func (u *URLTest) IsL3Protocol(metadata *C.Metadata) bool {
+ return u.fast(false).IsL3Protocol(metadata)
+}
+
+// MarshalJSON implements C.ProxyAdapter
+func (u *URLTest) MarshalJSON() ([]byte, error) {
+ all := []string{}
+ for _, proxy := range u.GetProxies(false) {
+ all = append(all, proxy.Name())
+ }
+ return json.Marshal(map[string]any{
+ "type": u.Type().String(),
+ "now": u.Now(),
+ "all": all,
+ "testUrl": u.testUrl,
+ "expectedStatus": u.expectedStatus,
+ "fixed": u.selected,
+ "hidden": u.Hidden,
+ "icon": u.Icon,
+ })
+}
+
+func (u *URLTest) URLTest(ctx context.Context, url string, expectedStatus utils.IntRanges[uint16]) (map[string]uint16, error) {
+ var wg sync.WaitGroup
+ var lock sync.Mutex
+ mp := map[string]uint16{}
+ proxies := u.GetProxies(false)
+ for _, proxy := range proxies {
+ proxy := proxy
+ wg.Add(1)
+ go func() {
+ delay, err := proxy.URLTest(ctx, u.testUrl, expectedStatus)
+ if err == nil {
+ lock.Lock()
+ mp[proxy.Name()] = delay
+ lock.Unlock()
+ }
+
+ wg.Done()
+ }()
+ }
+ wg.Wait()
+
+ if len(mp) == 0 {
+ return mp, fmt.Errorf("get delay: all proxies timeout")
+ } else {
+ return mp, nil
+ }
+}
+
+func parseURLTestOption(config map[string]any) []urlTestOption {
+ opts := []urlTestOption{}
+
+ // tolerance
+ if elm, ok := config["tolerance"]; ok {
+ if tolerance, ok := elm.(int); ok {
+ opts = append(opts, urlTestWithTolerance(uint16(tolerance)))
+ }
+ }
+
+ return opts
+}
+
+func NewURLTest(option *GroupCommonOption, providers []provider.ProxyProvider, options ...urlTestOption) *URLTest {
+ urlTest := &URLTest{
+ GroupBase: NewGroupBase(GroupBaseOption{
+ outbound.BaseOption{
+ Name: option.Name,
+ Type: C.URLTest,
+ Interface: option.Interface,
+ RoutingMark: option.RoutingMark,
+ },
+
+ option.Filter,
+ option.ExcludeFilter,
+ option.ExcludeType,
+ option.TestTimeout,
+ option.MaxFailedTimes,
+ providers,
+ }),
+ fastSingle: singledo.NewSingle[C.Proxy](time.Second * 10),
+ disableUDP: option.DisableUDP,
+ testUrl: option.URL,
+ expectedStatus: option.ExpectedStatus,
+ Hidden: option.Hidden,
+ Icon: option.Icon,
+ }
+
+ for _, option := range options {
+ option(urlTest)
+ }
+
+ return urlTest
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/util.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/util.go
new file mode 100644
index 0000000..66b2510
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/outboundgroup/util.go
@@ -0,0 +1,10 @@
+package outboundgroup
+
+type SelectAble interface {
+ Set(string) error
+ ForceSet(name string)
+}
+
+var _ SelectAble = (*Fallback)(nil)
+var _ SelectAble = (*URLTest)(nil)
+var _ SelectAble = (*Selector)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/parser.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/parser.go
new file mode 100644
index 0000000..c64ee13
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/parser.go
@@ -0,0 +1,167 @@
+package adapter
+
+import (
+ "fmt"
+
+ tlsC "github.com/metacubex/mihomo/component/tls"
+
+ "github.com/metacubex/mihomo/adapter/outbound"
+ "github.com/metacubex/mihomo/common/structure"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+func ParseProxy(mapping map[string]any) (C.Proxy, error) {
+ decoder := structure.NewDecoder(structure.Option{TagName: "proxy", WeaklyTypedInput: true, KeyReplacer: structure.DefaultKeyReplacer})
+ proxyType, existType := mapping["type"].(string)
+ if !existType {
+ return nil, fmt.Errorf("missing type")
+ }
+
+ var (
+ proxy C.ProxyAdapter
+ err error
+ )
+ switch proxyType {
+ case "ss":
+ ssOption := &outbound.ShadowSocksOption{ClientFingerprint: tlsC.GetGlobalFingerprint()}
+ err = decoder.Decode(mapping, ssOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewShadowSocks(*ssOption)
+ case "ssr":
+ ssrOption := &outbound.ShadowSocksROption{}
+ err = decoder.Decode(mapping, ssrOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewShadowSocksR(*ssrOption)
+ case "socks5":
+ socksOption := &outbound.Socks5Option{}
+ err = decoder.Decode(mapping, socksOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewSocks5(*socksOption)
+ case "http":
+ httpOption := &outbound.HttpOption{}
+ err = decoder.Decode(mapping, httpOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewHttp(*httpOption)
+ case "vmess":
+ vmessOption := &outbound.VmessOption{
+ HTTPOpts: outbound.HTTPOptions{
+ Method: "GET",
+ Path: []string{"/"},
+ },
+ ClientFingerprint: tlsC.GetGlobalFingerprint(),
+ }
+
+ err = decoder.Decode(mapping, vmessOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewVmess(*vmessOption)
+ case "vless":
+ vlessOption := &outbound.VlessOption{ClientFingerprint: tlsC.GetGlobalFingerprint()}
+ err = decoder.Decode(mapping, vlessOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewVless(*vlessOption)
+ case "snell":
+ snellOption := &outbound.SnellOption{}
+ err = decoder.Decode(mapping, snellOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewSnell(*snellOption)
+ case "trojan":
+ trojanOption := &outbound.TrojanOption{ClientFingerprint: tlsC.GetGlobalFingerprint()}
+ err = decoder.Decode(mapping, trojanOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewTrojan(*trojanOption)
+ case "hysteria":
+ hyOption := &outbound.HysteriaOption{}
+ err = decoder.Decode(mapping, hyOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewHysteria(*hyOption)
+ case "hysteria2":
+ hyOption := &outbound.Hysteria2Option{}
+ err = decoder.Decode(mapping, hyOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewHysteria2(*hyOption)
+ case "wireguard":
+ wgOption := &outbound.WireGuardOption{}
+ err = decoder.Decode(mapping, wgOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewWireGuard(*wgOption)
+ case "tuic":
+ tuicOption := &outbound.TuicOption{}
+ err = decoder.Decode(mapping, tuicOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewTuic(*tuicOption)
+ case "direct":
+ directOption := &outbound.DirectOption{}
+ err = decoder.Decode(mapping, directOption)
+ if err != nil {
+ break
+ }
+ proxy = outbound.NewDirectWithOption(*directOption)
+ case "dns":
+ dnsOptions := &outbound.DnsOption{}
+ err = decoder.Decode(mapping, dnsOptions)
+ if err != nil {
+ break
+ }
+ proxy = outbound.NewDnsWithOption(*dnsOptions)
+ case "reject":
+ rejectOption := &outbound.RejectOption{}
+ err = decoder.Decode(mapping, rejectOption)
+ if err != nil {
+ break
+ }
+ proxy = outbound.NewRejectWithOption(*rejectOption)
+ case "ssh":
+ sshOption := &outbound.SshOption{}
+ err = decoder.Decode(mapping, sshOption)
+ if err != nil {
+ break
+ }
+ proxy, err = outbound.NewSsh(*sshOption)
+ default:
+ return nil, fmt.Errorf("unsupport proxy type: %s", proxyType)
+ }
+
+ if err != nil {
+ return nil, err
+ }
+
+ if muxMapping, muxExist := mapping["smux"].(map[string]any); muxExist {
+ muxOption := &outbound.SingMuxOption{}
+ err = decoder.Decode(muxMapping, muxOption)
+ if err != nil {
+ return nil, err
+ }
+ if muxOption.Enabled {
+ proxy, err = outbound.NewSingMux(*muxOption, proxy, proxy.(outbound.ProxyBase))
+ if err != nil {
+ return nil, err
+ }
+ }
+ }
+
+ return NewProxy(proxy), nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/healthcheck.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/healthcheck.go
new file mode 100644
index 0000000..8737ff9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/healthcheck.go
@@ -0,0 +1,235 @@
+package provider
+
+import (
+ "context"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ "github.com/metacubex/mihomo/common/batch"
+ "github.com/metacubex/mihomo/common/singledo"
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/dlclark/regexp2"
+)
+
+type HealthCheckOption struct {
+ URL string
+ Interval uint
+}
+
+type extraOption struct {
+ expectedStatus utils.IntRanges[uint16]
+ filters map[string]struct{}
+}
+
+type HealthCheck struct {
+ ctx context.Context
+ ctxCancel context.CancelFunc
+ url string
+ extra map[string]*extraOption
+ mu sync.Mutex
+ started atomic.Bool
+ proxies []C.Proxy
+ interval time.Duration
+ lazy bool
+ expectedStatus utils.IntRanges[uint16]
+ lastTouch atomic.TypedValue[time.Time]
+ singleDo *singledo.Single[struct{}]
+ timeout time.Duration
+}
+
+func (hc *HealthCheck) process() {
+ if hc.started.Load() {
+ log.Warnln("Skip start health check timer due to it's started")
+ return
+ }
+
+ ticker := time.NewTicker(hc.interval)
+ hc.start()
+ for {
+ select {
+ case <-ticker.C:
+ lastTouch := hc.lastTouch.Load()
+ since := time.Since(lastTouch)
+ if !hc.lazy || since < hc.interval {
+ hc.check()
+ } else {
+ log.Debugln("Skip once health check because we are lazy")
+ }
+ case <-hc.ctx.Done():
+ ticker.Stop()
+ hc.stop()
+ return
+ }
+ }
+}
+
+func (hc *HealthCheck) setProxy(proxies []C.Proxy) {
+ hc.proxies = proxies
+}
+
+func (hc *HealthCheck) registerHealthCheckTask(url string, expectedStatus utils.IntRanges[uint16], filter string, interval uint) {
+ url = strings.TrimSpace(url)
+ if len(url) == 0 || url == hc.url {
+ log.Debugln("ignore invalid health check url: %s", url)
+ return
+ }
+
+ hc.mu.Lock()
+ defer hc.mu.Unlock()
+
+ // if the provider has not set up health checks, then modify it to be the same as the group's interval
+ if hc.interval == 0 {
+ hc.interval = time.Duration(interval) * time.Second
+ }
+
+ if hc.extra == nil {
+ hc.extra = make(map[string]*extraOption)
+ }
+
+ // prioritize the use of previously registered configurations, especially those from provider
+ if _, ok := hc.extra[url]; ok {
+ // provider default health check does not set filter
+ if url != hc.url && len(filter) != 0 {
+ splitAndAddFiltersToExtra(filter, hc.extra[url])
+ }
+
+ log.Debugln("health check url: %s exists", url)
+ return
+ }
+
+ option := &extraOption{filters: map[string]struct{}{}, expectedStatus: expectedStatus}
+ splitAndAddFiltersToExtra(filter, option)
+ hc.extra[url] = option
+
+ if hc.auto() && !hc.started.Load() {
+ go hc.process()
+ }
+}
+
+func splitAndAddFiltersToExtra(filter string, option *extraOption) {
+ filter = strings.TrimSpace(filter)
+ if len(filter) != 0 {
+ for _, regex := range strings.Split(filter, "`") {
+ regex = strings.TrimSpace(regex)
+ if len(regex) != 0 {
+ option.filters[regex] = struct{}{}
+ }
+ }
+ }
+}
+
+func (hc *HealthCheck) auto() bool {
+ return hc.interval != 0
+}
+
+func (hc *HealthCheck) touch() {
+ hc.lastTouch.Store(time.Now())
+}
+
+func (hc *HealthCheck) start() {
+ hc.started.Store(true)
+}
+
+func (hc *HealthCheck) stop() {
+ hc.started.Store(false)
+}
+
+func (hc *HealthCheck) check() {
+ if len(hc.proxies) == 0 {
+ return
+ }
+
+ _, _, _ = hc.singleDo.Do(func() (struct{}, error) {
+ id := utils.NewUUIDV4().String()
+ log.Debugln("Start New Health Checking {%s}", id)
+ b, _ := batch.New[bool](hc.ctx, batch.WithConcurrencyNum[bool](10))
+
+ // execute default health check
+ option := &extraOption{filters: nil, expectedStatus: hc.expectedStatus}
+ hc.execute(b, hc.url, id, option)
+
+ // execute extra health check
+ if len(hc.extra) != 0 {
+ for url, option := range hc.extra {
+ hc.execute(b, url, id, option)
+ }
+ }
+ b.Wait()
+ log.Debugln("Finish A Health Checking {%s}", id)
+ return struct{}{}, nil
+ })
+}
+
+func (hc *HealthCheck) execute(b *batch.Batch[bool], url, uid string, option *extraOption) {
+ url = strings.TrimSpace(url)
+ if len(url) == 0 {
+ log.Debugln("Health Check has been skipped due to testUrl is empty, {%s}", uid)
+ return
+ }
+
+ var filterReg *regexp2.Regexp
+ var expectedStatus utils.IntRanges[uint16]
+ if option != nil {
+ expectedStatus = option.expectedStatus
+ if len(option.filters) != 0 {
+ filters := make([]string, 0, len(option.filters))
+ for filter := range option.filters {
+ filters = append(filters, filter)
+ }
+
+ filterReg = regexp2.MustCompile(strings.Join(filters, "|"), regexp2.None)
+ }
+ }
+
+ for _, proxy := range hc.proxies {
+ // skip proxies that do not require health check
+ if filterReg != nil {
+ if match, _ := filterReg.MatchString(proxy.Name()); !match {
+ continue
+ }
+ }
+
+ p := proxy
+ b.Go(p.Name(), func() (bool, error) {
+ ctx, cancel := context.WithTimeout(hc.ctx, hc.timeout)
+ defer cancel()
+ log.Debugln("Health Checking, proxy: %s, url: %s, id: {%s}", p.Name(), url, uid)
+ _, _ = p.URLTest(ctx, url, expectedStatus)
+ log.Debugln("Health Checked, proxy: %s, url: %s, alive: %t, delay: %d ms uid: {%s}", p.Name(), url, p.AliveForTestUrl(url), p.LastDelayForTestUrl(url), uid)
+ return false, nil
+ })
+ }
+}
+
+func (hc *HealthCheck) close() {
+ hc.ctxCancel()
+}
+
+func NewHealthCheck(proxies []C.Proxy, url string, timeout uint, interval uint, lazy bool, expectedStatus utils.IntRanges[uint16]) *HealthCheck {
+ if url == "" {
+ expectedStatus = nil
+ interval = 0
+ }
+ if timeout == 0 {
+ timeout = 5000
+ }
+ ctx, cancel := context.WithCancel(context.Background())
+
+ return &HealthCheck{
+ ctx: ctx,
+ ctxCancel: cancel,
+ proxies: proxies,
+ url: url,
+ timeout: time.Duration(timeout) * time.Millisecond,
+ extra: map[string]*extraOption{},
+ interval: time.Duration(interval) * time.Second,
+ lazy: lazy,
+ expectedStatus: expectedStatus,
+ singleDo: singledo.NewSingle[struct{}](time.Second),
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/parser.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/parser.go
new file mode 100644
index 0000000..b0db5db
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/parser.go
@@ -0,0 +1,127 @@
+package provider
+
+import (
+ "encoding"
+ "errors"
+ "fmt"
+ "time"
+
+ "github.com/metacubex/mihomo/common/structure"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/resource"
+ C "github.com/metacubex/mihomo/constant"
+ types "github.com/metacubex/mihomo/constant/provider"
+
+ "github.com/dlclark/regexp2"
+)
+
+var (
+ errVehicleType = errors.New("unsupport vehicle type")
+ errSubPath = errors.New("path is not subpath of home directory")
+)
+
+type healthCheckSchema struct {
+ Enable bool `provider:"enable"`
+ URL string `provider:"url"`
+ Interval int `provider:"interval"`
+ TestTimeout int `provider:"timeout,omitempty"`
+ Lazy bool `provider:"lazy,omitempty"`
+ ExpectedStatus string `provider:"expected-status,omitempty"`
+}
+
+type OverrideProxyNameSchema struct {
+ // matching expression for regex replacement
+ Pattern *regexp2.Regexp `provider:"pattern"`
+ // the new content after regex matching
+ Target string `provider:"target"`
+}
+
+var _ encoding.TextUnmarshaler = (*regexp2.Regexp)(nil) // ensure *regexp2.Regexp can decode direct by structure package
+
+type OverrideSchema struct {
+ TFO *bool `provider:"tfo,omitempty"`
+ MPTcp *bool `provider:"mptcp,omitempty"`
+ UDP *bool `provider:"udp,omitempty"`
+ UDPOverTCP *bool `provider:"udp-over-tcp,omitempty"`
+ Up *string `provider:"up,omitempty"`
+ Down *string `provider:"down,omitempty"`
+ DialerProxy *string `provider:"dialer-proxy,omitempty"`
+ SkipCertVerify *bool `provider:"skip-cert-verify,omitempty"`
+ Interface *string `provider:"interface-name,omitempty"`
+ RoutingMark *int `provider:"routing-mark,omitempty"`
+ IPVersion *string `provider:"ip-version,omitempty"`
+ AdditionalPrefix *string `provider:"additional-prefix,omitempty"`
+ AdditionalSuffix *string `provider:"additional-suffix,omitempty"`
+
+ ProxyName []OverrideProxyNameSchema `provider:"proxy-name,omitempty"`
+}
+
+type proxyProviderSchema struct {
+ Type string `provider:"type"`
+ Path string `provider:"path,omitempty"`
+ URL string `provider:"url,omitempty"`
+ Proxy string `provider:"proxy,omitempty"`
+ Interval int `provider:"interval,omitempty"`
+ Filter string `provider:"filter,omitempty"`
+ ExcludeFilter string `provider:"exclude-filter,omitempty"`
+ ExcludeType string `provider:"exclude-type,omitempty"`
+ DialerProxy string `provider:"dialer-proxy,omitempty"`
+
+ HealthCheck healthCheckSchema `provider:"health-check,omitempty"`
+ Override OverrideSchema `provider:"override,omitempty"`
+ Header map[string][]string `provider:"header,omitempty"`
+}
+
+func ParseProxyProvider(name string, mapping map[string]any) (types.ProxyProvider, error) {
+ decoder := structure.NewDecoder(structure.Option{TagName: "provider", WeaklyTypedInput: true})
+
+ schema := &proxyProviderSchema{
+ HealthCheck: healthCheckSchema{
+ Lazy: true,
+ },
+ }
+ if err := decoder.Decode(mapping, schema); err != nil {
+ return nil, err
+ }
+
+ expectedStatus, err := utils.NewUnsignedRanges[uint16](schema.HealthCheck.ExpectedStatus)
+ if err != nil {
+ return nil, err
+ }
+
+ var hcInterval uint
+ if schema.HealthCheck.Enable {
+ if schema.HealthCheck.Interval == 0 {
+ schema.HealthCheck.Interval = 300
+ }
+ hcInterval = uint(schema.HealthCheck.Interval)
+ }
+ hc := NewHealthCheck([]C.Proxy{}, schema.HealthCheck.URL, uint(schema.HealthCheck.TestTimeout), hcInterval, schema.HealthCheck.Lazy, expectedStatus)
+
+ var vehicle types.Vehicle
+ switch schema.Type {
+ case "file":
+ path := C.Path.Resolve(schema.Path)
+ vehicle = resource.NewFileVehicle(path)
+ case "http":
+ path := C.Path.GetPathByHash("proxies", schema.URL)
+ if schema.Path != "" {
+ path = C.Path.Resolve(schema.Path)
+ if !C.Path.IsSafePath(path) {
+ return nil, fmt.Errorf("%w: %s", errSubPath, path)
+ }
+ }
+ vehicle = resource.NewHTTPVehicle(schema.URL, path, schema.Proxy, schema.Header, resource.DefaultHttpTimeout)
+ default:
+ return nil, fmt.Errorf("%w: %s", errVehicleType, schema.Type)
+ }
+
+ interval := time.Duration(uint(schema.Interval)) * time.Second
+ filter := schema.Filter
+ excludeFilter := schema.ExcludeFilter
+ excludeType := schema.ExcludeType
+ dialerProxy := schema.DialerProxy
+ override := schema.Override
+
+ return NewProxySetProvider(name, interval, filter, excludeFilter, excludeType, dialerProxy, override, vehicle, hc)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/provider.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/provider.go
new file mode 100644
index 0000000..79a752a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/provider.go
@@ -0,0 +1,436 @@
+package provider
+
+import (
+ "context"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "net/http"
+ "reflect"
+ "runtime"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter"
+ "github.com/metacubex/mihomo/common/convert"
+ "github.com/metacubex/mihomo/common/utils"
+ mihomoHttp "github.com/metacubex/mihomo/component/http"
+ "github.com/metacubex/mihomo/component/resource"
+ C "github.com/metacubex/mihomo/constant"
+ types "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/tunnel/statistic"
+
+ "github.com/dlclark/regexp2"
+ "gopkg.in/yaml.v3"
+)
+
+const (
+ ReservedName = "default"
+)
+
+type ProxySchema struct {
+ Proxies []map[string]any `yaml:"proxies"`
+}
+
+// ProxySetProvider for auto gc
+type ProxySetProvider struct {
+ *proxySetProvider
+}
+
+type proxySetProvider struct {
+ *resource.Fetcher[[]C.Proxy]
+ proxies []C.Proxy
+ healthCheck *HealthCheck
+ version uint32
+ subscriptionInfo *SubscriptionInfo
+}
+
+func (pp *proxySetProvider) MarshalJSON() ([]byte, error) {
+ return json.Marshal(map[string]any{
+ "name": pp.Name(),
+ "type": pp.Type().String(),
+ "vehicleType": pp.VehicleType().String(),
+ "proxies": pp.Proxies(),
+ "testUrl": pp.healthCheck.url,
+ "expectedStatus": pp.healthCheck.expectedStatus.String(),
+ "updatedAt": pp.UpdatedAt(),
+ "subscriptionInfo": pp.subscriptionInfo,
+ })
+}
+
+func (pp *proxySetProvider) Version() uint32 {
+ return pp.version
+}
+
+func (pp *proxySetProvider) Name() string {
+ return pp.Fetcher.Name()
+}
+
+func (pp *proxySetProvider) HealthCheck() {
+ pp.healthCheck.check()
+}
+
+func (pp *proxySetProvider) Update() error {
+ _, _, err := pp.Fetcher.Update()
+ return err
+}
+
+func (pp *proxySetProvider) Initial() error {
+ _, err := pp.Fetcher.Initial()
+ if err != nil {
+ return err
+ }
+ pp.getSubscriptionInfo()
+ pp.closeAllConnections()
+ return nil
+}
+
+func (pp *proxySetProvider) Type() types.ProviderType {
+ return types.Proxy
+}
+
+func (pp *proxySetProvider) Proxies() []C.Proxy {
+ return pp.proxies
+}
+
+func (pp *proxySetProvider) Count() int {
+ return len(pp.proxies)
+}
+
+func (pp *proxySetProvider) Touch() {
+ pp.healthCheck.touch()
+}
+
+func (pp *proxySetProvider) HealthCheckURL() string {
+ return pp.healthCheck.url
+}
+
+func (pp *proxySetProvider) RegisterHealthCheckTask(url string, expectedStatus utils.IntRanges[uint16], filter string, interval uint) {
+ pp.healthCheck.registerHealthCheckTask(url, expectedStatus, filter, interval)
+}
+
+func (pp *proxySetProvider) setProxies(proxies []C.Proxy) {
+ pp.proxies = proxies
+ pp.healthCheck.setProxy(proxies)
+ if pp.healthCheck.auto() {
+ go pp.healthCheck.check()
+ }
+}
+
+func (pp *proxySetProvider) getSubscriptionInfo() {
+ if pp.VehicleType() != types.HTTP {
+ return
+ }
+ go func() {
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second*90)
+ defer cancel()
+ resp, err := mihomoHttp.HttpRequestWithProxy(ctx, pp.Vehicle().Url(),
+ http.MethodGet, nil, nil, pp.Vehicle().Proxy())
+ if err != nil {
+ return
+ }
+ defer resp.Body.Close()
+
+ userInfoStr := strings.TrimSpace(resp.Header.Get("subscription-userinfo"))
+ if userInfoStr == "" {
+ resp2, err := mihomoHttp.HttpRequestWithProxy(ctx, pp.Vehicle().Url(),
+ http.MethodGet, http.Header{"User-Agent": {"Quantumultx"}}, nil, pp.Vehicle().Proxy())
+ if err != nil {
+ return
+ }
+ defer resp2.Body.Close()
+ userInfoStr = strings.TrimSpace(resp2.Header.Get("subscription-userinfo"))
+ if userInfoStr == "" {
+ return
+ }
+ }
+ pp.subscriptionInfo = NewSubscriptionInfo(userInfoStr)
+ }()
+}
+
+func (pp *proxySetProvider) closeAllConnections() {
+ statistic.DefaultManager.Range(func(c statistic.Tracker) bool {
+ for _, chain := range c.Chains() {
+ if chain == pp.Name() {
+ _ = c.Close()
+ break
+ }
+ }
+ return true
+ })
+}
+
+func (pp *proxySetProvider) Close() error {
+ pp.healthCheck.close()
+ return pp.Fetcher.Close()
+}
+
+func NewProxySetProvider(name string, interval time.Duration, filter string, excludeFilter string, excludeType string, dialerProxy string, override OverrideSchema, vehicle types.Vehicle, hc *HealthCheck) (*ProxySetProvider, error) {
+ excludeFilterReg, err := regexp2.Compile(excludeFilter, regexp2.None)
+ if err != nil {
+ return nil, fmt.Errorf("invalid excludeFilter regex: %w", err)
+ }
+ var excludeTypeArray []string
+ if excludeType != "" {
+ excludeTypeArray = strings.Split(excludeType, "|")
+ }
+
+ var filterRegs []*regexp2.Regexp
+ for _, filter := range strings.Split(filter, "`") {
+ filterReg, err := regexp2.Compile(filter, regexp2.None)
+ if err != nil {
+ return nil, fmt.Errorf("invalid filter regex: %w", err)
+ }
+ filterRegs = append(filterRegs, filterReg)
+ }
+
+ if hc.auto() {
+ go hc.process()
+ }
+
+ pd := &proxySetProvider{
+ proxies: []C.Proxy{},
+ healthCheck: hc,
+ }
+
+ fetcher := resource.NewFetcher[[]C.Proxy](name, interval, vehicle, proxiesParseAndFilter(filter, excludeFilter, excludeTypeArray, filterRegs, excludeFilterReg, dialerProxy, override), proxiesOnUpdate(pd))
+ pd.Fetcher = fetcher
+ wrapper := &ProxySetProvider{pd}
+ runtime.SetFinalizer(wrapper, (*ProxySetProvider).Close)
+ return wrapper, nil
+}
+
+func (pp *ProxySetProvider) Close() error {
+ runtime.SetFinalizer(pp, nil)
+ return pp.proxySetProvider.Close()
+}
+
+// CompatibleProvider for auto gc
+type CompatibleProvider struct {
+ *compatibleProvider
+}
+
+type compatibleProvider struct {
+ name string
+ healthCheck *HealthCheck
+ proxies []C.Proxy
+ version uint32
+}
+
+func (cp *compatibleProvider) MarshalJSON() ([]byte, error) {
+ return json.Marshal(map[string]any{
+ "name": cp.Name(),
+ "type": cp.Type().String(),
+ "vehicleType": cp.VehicleType().String(),
+ "proxies": cp.Proxies(),
+ "testUrl": cp.healthCheck.url,
+ "expectedStatus": cp.healthCheck.expectedStatus.String(),
+ })
+}
+
+func (cp *compatibleProvider) Version() uint32 {
+ return cp.version
+}
+
+func (cp *compatibleProvider) Name() string {
+ return cp.name
+}
+
+func (cp *compatibleProvider) HealthCheck() {
+ cp.healthCheck.check()
+}
+
+func (cp *compatibleProvider) Update() error {
+ return nil
+}
+
+func (cp *compatibleProvider) Initial() error {
+ if cp.healthCheck.interval != 0 && cp.healthCheck.url != "" {
+ cp.HealthCheck()
+ }
+ return nil
+}
+
+func (cp *compatibleProvider) VehicleType() types.VehicleType {
+ return types.Compatible
+}
+
+func (cp *compatibleProvider) Type() types.ProviderType {
+ return types.Proxy
+}
+
+func (cp *compatibleProvider) Proxies() []C.Proxy {
+ return cp.proxies
+}
+
+func (cp *compatibleProvider) Count() int {
+ return len(cp.proxies)
+}
+
+func (cp *compatibleProvider) Touch() {
+ cp.healthCheck.touch()
+}
+
+func (cp *compatibleProvider) HealthCheckURL() string {
+ return cp.healthCheck.url
+}
+
+func (cp *compatibleProvider) RegisterHealthCheckTask(url string, expectedStatus utils.IntRanges[uint16], filter string, interval uint) {
+ cp.healthCheck.registerHealthCheckTask(url, expectedStatus, filter, interval)
+}
+
+func (cp *compatibleProvider) Close() error {
+ cp.healthCheck.close()
+ return nil
+}
+
+func NewCompatibleProvider(name string, proxies []C.Proxy, hc *HealthCheck) (*CompatibleProvider, error) {
+ if len(proxies) == 0 {
+ return nil, errors.New("provider need one proxy at least")
+ }
+
+ if hc.auto() {
+ go hc.process()
+ }
+
+ pd := &compatibleProvider{
+ name: name,
+ proxies: proxies,
+ healthCheck: hc,
+ }
+
+ wrapper := &CompatibleProvider{pd}
+ runtime.SetFinalizer(wrapper, (*CompatibleProvider).Close)
+ return wrapper, nil
+}
+
+func (cp *CompatibleProvider) Close() error {
+ runtime.SetFinalizer(cp, nil)
+ return cp.compatibleProvider.Close()
+}
+
+func proxiesOnUpdate(pd *proxySetProvider) func([]C.Proxy) {
+ return func(elm []C.Proxy) {
+ pd.setProxies(elm)
+ pd.version += 1
+ pd.getSubscriptionInfo()
+ }
+}
+
+func proxiesParseAndFilter(filter string, excludeFilter string, excludeTypeArray []string, filterRegs []*regexp2.Regexp, excludeFilterReg *regexp2.Regexp, dialerProxy string, override OverrideSchema) resource.Parser[[]C.Proxy] {
+ return func(buf []byte) ([]C.Proxy, error) {
+ schema := &ProxySchema{}
+
+ if err := yaml.Unmarshal(buf, schema); err != nil {
+ proxies, err1 := convert.ConvertsV2Ray(buf)
+ if err1 != nil {
+ return nil, fmt.Errorf("%w, %w", err, err1)
+ }
+ schema.Proxies = proxies
+ }
+
+ if schema.Proxies == nil {
+ return nil, errors.New("file must have a `proxies` field")
+ }
+
+ proxies := []C.Proxy{}
+ proxiesSet := map[string]struct{}{}
+ for _, filterReg := range filterRegs {
+ for idx, mapping := range schema.Proxies {
+ if nil != excludeTypeArray && len(excludeTypeArray) > 0 {
+ mType, ok := mapping["type"]
+ if !ok {
+ continue
+ }
+ pType, ok := mType.(string)
+ if !ok {
+ continue
+ }
+ flag := false
+ for i := range excludeTypeArray {
+ if strings.EqualFold(pType, excludeTypeArray[i]) {
+ flag = true
+ break
+ }
+
+ }
+ if flag {
+ continue
+ }
+
+ }
+ mName, ok := mapping["name"]
+ if !ok {
+ continue
+ }
+ name, ok := mName.(string)
+ if !ok {
+ continue
+ }
+ if len(excludeFilter) > 0 {
+ if mat, _ := excludeFilterReg.MatchString(name); mat {
+ continue
+ }
+ }
+ if len(filter) > 0 {
+ if mat, _ := filterReg.MatchString(name); !mat {
+ continue
+ }
+ }
+ if _, ok := proxiesSet[name]; ok {
+ continue
+ }
+
+ if len(dialerProxy) > 0 {
+ mapping["dialer-proxy"] = dialerProxy
+ }
+
+ val := reflect.ValueOf(override)
+ for i := 0; i < val.NumField(); i++ {
+ field := val.Field(i)
+ if field.IsNil() {
+ continue
+ }
+ fieldName := strings.Split(val.Type().Field(i).Tag.Get("provider"), ",")[0]
+ switch fieldName {
+ case "additional-prefix":
+ name := mapping["name"].(string)
+ mapping["name"] = *field.Interface().(*string) + name
+ case "additional-suffix":
+ name := mapping["name"].(string)
+ mapping["name"] = name + *field.Interface().(*string)
+ case "proxy-name":
+ // Iterate through all naming replacement rules and perform the replacements.
+ for _, expr := range override.ProxyName {
+ name := mapping["name"].(string)
+ newName, err := expr.Pattern.Replace(name, expr.Target, 0, -1)
+ if err != nil {
+ return nil, fmt.Errorf("proxy name replace error: %w", err)
+ }
+ mapping["name"] = newName
+ }
+ default:
+ mapping[fieldName] = field.Elem().Interface()
+ }
+ }
+
+ proxy, err := adapter.ParseProxy(mapping)
+ if err != nil {
+ return nil, fmt.Errorf("proxy %d error: %w", idx, err)
+ }
+
+ proxiesSet[name] = struct{}{}
+ proxies = append(proxies, proxy)
+ }
+ }
+
+ if len(proxies) == 0 {
+ if len(filter) > 0 {
+ return nil, errors.New("doesn't match any proxy, please check your filter")
+ }
+ return nil, errors.New("file doesn't have any proxy")
+ }
+
+ return proxies, nil
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/subscription_info.go b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/subscription_info.go
new file mode 100644
index 0000000..b72c7b6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/adapter/provider/subscription_info.go
@@ -0,0 +1,60 @@
+package provider
+
+import (
+ "fmt"
+ "strconv"
+ "strings"
+
+ "github.com/metacubex/mihomo/log"
+)
+
+type SubscriptionInfo struct {
+ Upload int64
+ Download int64
+ Total int64
+ Expire int64
+}
+
+func NewSubscriptionInfo(userinfo string) (si *SubscriptionInfo) {
+ userinfo = strings.ToLower(userinfo)
+ userinfo = strings.ReplaceAll(userinfo, " ", "")
+ si = new(SubscriptionInfo)
+
+ for _, field := range strings.Split(userinfo, ";") {
+ name, value, ok := strings.Cut(field, "=")
+ if !ok {
+ continue
+ }
+
+ intValue, err := parseValue(value)
+ if err != nil {
+ log.Warnln("[Provider] get subscription-userinfo: %e", err)
+ continue
+ }
+
+ switch name {
+ case "upload":
+ si.Upload = intValue
+ case "download":
+ si.Download = intValue
+ case "total":
+ si.Total = intValue
+ case "expire":
+ si.Expire = intValue
+ }
+ }
+
+ return si
+}
+
+func parseValue(value string) (int64, error) {
+ if intValue, err := strconv.ParseInt(value, 10, 64); err == nil {
+ return intValue, nil
+ }
+
+ if floatValue, err := strconv.ParseFloat(value, 64); err == nil {
+ return int64(floatValue), nil
+ }
+
+ return 0, fmt.Errorf("failed to parse value '%s'", value)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/android_tz.go b/Android-kotlin-Code/core/src/foss/golang/clash/android_tz.go
new file mode 100644
index 0000000..82fc38e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/android_tz.go
@@ -0,0 +1,21 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// kanged from https://github.com/golang/mobile/blob/c713f31d574bb632a93f169b2cc99c9e753fef0e/app/android.go#L89
+
+package main
+
+// #include
+import "C"
+import "time"
+
+func init() {
+ var currentT C.time_t
+ var currentTM C.struct_tm
+ C.time(¤tT)
+ C.localtime_r(¤tT, ¤tTM)
+ tzOffset := int(currentTM.tm_gmtoff)
+ tz := C.GoString(currentTM.tm_zone)
+ time.Local = time.FixedZone(tz, tzOffset)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/check_amd64.sh b/Android-kotlin-Code/core/src/foss/golang/clash/check_amd64.sh
new file mode 100644
index 0000000..068296d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/check_amd64.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+flags=$(grep '^flags\b' = a.b2.Len() {
+ d = 1
+ } else {
+ d = a.b2.Len() / a.b1.Len()
+ }
+ a.p = min(a.p+d, a.c)
+
+ a.replace(ent)
+ ent.setMRU(a.t2)
+ case ent.ll == a.b2:
+ // Case III
+ // Cache Miss in t1 and t2
+
+ // Adaptation
+ var d int
+ if a.b2.Len() >= a.b1.Len() {
+ d = 1
+ } else {
+ d = a.b1.Len() / a.b2.Len()
+ }
+ a.p = max(a.p-d, 0)
+
+ a.replace(ent)
+ ent.setMRU(a.t2)
+ case ent.ll == nil && a.t1.Len()+a.b1.Len() == a.c:
+ // Case IV A
+ if a.t1.Len() < a.c {
+ a.delLRU(a.b1)
+ a.replace(ent)
+ } else {
+ a.delLRU(a.t1)
+ }
+ ent.setMRU(a.t1)
+ case ent.ll == nil && a.t1.Len()+a.b1.Len() < a.c:
+ // Case IV B
+ if a.t1.Len()+a.t2.Len()+a.b1.Len()+a.b2.Len() >= a.c {
+ if a.t1.Len()+a.t2.Len()+a.b1.Len()+a.b2.Len() == 2*a.c {
+ a.delLRU(a.b2)
+ }
+ a.replace(ent)
+ }
+ ent.setMRU(a.t1)
+ case ent.ll == nil:
+ // Case IV, not A nor B
+ ent.setMRU(a.t1)
+ }
+}
+
+func (a *ARC[K, V]) delLRU(list *list.List[*entry[K, V]]) {
+ lru := list.Back()
+ list.Remove(lru)
+ a.len--
+ delete(a.cache, lru.Value.key)
+}
+
+func (a *ARC[K, V]) replace(ent *entry[K, V]) {
+ if a.t1.Len() > 0 && ((a.t1.Len() > a.p) || (ent.ll == a.b2 && a.t1.Len() == a.p)) {
+ lru := a.t1.Back().Value
+ lru.value = lo.Empty[V]()
+ lru.ghost = true
+ a.len--
+ lru.setMRU(a.b1)
+ } else {
+ lru := a.t2.Back().Value
+ lru.value = lo.Empty[V]()
+ lru.ghost = true
+ a.len--
+ lru.setMRU(a.b2)
+ }
+}
+
+func min(a, b int) int {
+ if a < b {
+ return a
+ }
+ return b
+}
+
+func max(a int, b int) int {
+ if a < b {
+ return b
+ }
+ return a
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/arc/arc_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/arc/arc_test.go
new file mode 100644
index 0000000..a9d8a0c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/arc/arc_test.go
@@ -0,0 +1,105 @@
+package arc
+
+import (
+ "testing"
+)
+
+func TestInsertion(t *testing.T) {
+ cache := New[string, string](WithSize[string, string](3))
+ if got, want := cache.Len(), 0; got != want {
+ t.Errorf("empty cache.Len(): got %d want %d", cache.Len(), want)
+ }
+
+ const (
+ k1 = "Hello"
+ k2 = "Hallo"
+ k3 = "Ciao"
+ k4 = "Salut"
+
+ v1 = "World"
+ v2 = "Worlds"
+ v3 = "Welt"
+ )
+
+ // Insert the first value
+ cache.Set(k1, v1)
+ if got, want := cache.Len(), 1; got != want {
+ t.Errorf("insertion of key #%d: cache.Len(): got %d want %d", want, cache.Len(), want)
+ }
+ if got, ok := cache.Get(k1); !ok || got != v1 {
+ t.Errorf("cache.Get(%v): got (%v,%t) want (%v,true)", k1, got, ok, v1)
+ }
+
+ // Replace existing value for a given key
+ cache.Set(k1, v2)
+ if got, want := cache.Len(), 1; got != want {
+ t.Errorf("re-insertion: cache.Len(): got %d want %d", cache.Len(), want)
+ }
+ if got, ok := cache.Get(k1); !ok || got != v2 {
+ t.Errorf("re-insertion: cache.Get(%v): got (%v,%t) want (%v,true)", k1, got, ok, v2)
+ }
+
+ // Add a second different key
+ cache.Set(k2, v3)
+ if got, want := cache.Len(), 2; got != want {
+ t.Errorf("insertion of key #%d: cache.Len(): got %d want %d", want, cache.Len(), want)
+ }
+ if got, ok := cache.Get(k1); !ok || got != v2 {
+ t.Errorf("cache.Get(%v): got (%v,%t) want (%v,true)", k1, got, ok, v2)
+ }
+ if got, ok := cache.Get(k2); !ok || got != v3 {
+ t.Errorf("cache.Get(%v): got (%v,%t) want (%v,true)", k2, got, ok, v3)
+ }
+
+ // Fill cache
+ cache.Set(k3, v1)
+ if got, want := cache.Len(), 3; got != want {
+ t.Errorf("insertion of key #%d: cache.Len(): got %d want %d", want, cache.Len(), want)
+ }
+
+ // Exceed size, this should not exceed size:
+ cache.Set(k4, v1)
+ if got, want := cache.Len(), 3; got != want {
+ t.Errorf("insertion of key out of size: cache.Len(): got %d want %d", cache.Len(), want)
+ }
+}
+
+func TestEviction(t *testing.T) {
+ size := 3
+ cache := New[string, string](WithSize[string, string](size))
+ if got, want := cache.Len(), 0; got != want {
+ t.Errorf("empty cache.Len(): got %d want %d", cache.Len(), want)
+ }
+
+ tests := []struct {
+ k, v string
+ }{
+ {"k1", "v1"},
+ {"k2", "v2"},
+ {"k3", "v3"},
+ {"k4", "v4"},
+ }
+ for i, tt := range tests[:size] {
+ cache.Set(tt.k, tt.v)
+ if got, want := cache.Len(), i+1; got != want {
+ t.Errorf("insertion of key #%d: cache.Len(): got %d want %d", want, cache.Len(), want)
+ }
+ }
+
+ // Exceed size and check we don't outgrow it:
+ cache.Set(tests[size].k, tests[size].v)
+ if got := cache.Len(); got != size {
+ t.Errorf("insertion of overflow key #%d: cache.Len(): got %d want %d", 4, cache.Len(), size)
+ }
+
+ // Check that LRU got evicted:
+ if got, ok := cache.Get(tests[0].k); ok || got != "" {
+ t.Errorf("cache.Get(%v): got (%v,%t) want (,true)", tests[0].k, got, ok)
+ }
+
+ for _, tt := range tests[1:] {
+ if got, ok := cache.Get(tt.k); !ok || got != tt.v {
+ t.Errorf("cache.Get(%v): got (%v,%t) want (%v,true)", tt.k, got, ok, tt.v)
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/arc/entry.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/arc/entry.go
new file mode 100644
index 0000000..679cbc1
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/arc/entry.go
@@ -0,0 +1,32 @@
+package arc
+
+import (
+ list "github.com/bahlo/generic-list-go"
+)
+
+type entry[K comparable, V any] struct {
+ key K
+ value V
+ ll *list.List[*entry[K, V]]
+ el *list.Element[*entry[K, V]]
+ ghost bool
+ expires int64
+}
+
+func (e *entry[K, V]) setLRU(list *list.List[*entry[K, V]]) {
+ e.detach()
+ e.ll = list
+ e.el = e.ll.PushBack(e)
+}
+
+func (e *entry[K, V]) setMRU(list *list.List[*entry[K, V]]) {
+ e.detach()
+ e.ll = list
+ e.el = e.ll.PushFront(e)
+}
+
+func (e *entry[K, V]) detach() {
+ if e.ll != nil {
+ e.ll.Remove(e.el)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/atomic/type.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/atomic/type.go
new file mode 100644
index 0000000..71695c6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/atomic/type.go
@@ -0,0 +1,198 @@
+package atomic
+
+import (
+ "encoding/json"
+ "fmt"
+ "strconv"
+ "sync/atomic"
+)
+
+type Bool struct {
+ atomic.Bool
+}
+
+func NewBool(val bool) (i Bool) {
+ i.Store(val)
+ return
+}
+
+func (i *Bool) MarshalJSON() ([]byte, error) {
+ return json.Marshal(i.Load())
+}
+
+func (i *Bool) UnmarshalJSON(b []byte) error {
+ var v bool
+ if err := json.Unmarshal(b, &v); err != nil {
+ return err
+ }
+ i.Store(v)
+ return nil
+}
+
+func (i *Bool) String() string {
+ v := i.Load()
+ return strconv.FormatBool(v)
+}
+
+type Pointer[T any] struct {
+ atomic.Pointer[T]
+}
+
+func NewPointer[T any](v *T) (p Pointer[T]) {
+ if v != nil {
+ p.Store(v)
+ }
+ return
+}
+
+func (p *Pointer[T]) MarshalJSON() ([]byte, error) {
+ return json.Marshal(p.Load())
+}
+
+func (p *Pointer[T]) UnmarshalJSON(b []byte) error {
+ var v *T
+ if err := json.Unmarshal(b, &v); err != nil {
+ return err
+ }
+ p.Store(v)
+ return nil
+}
+
+func (p *Pointer[T]) String() string {
+ return fmt.Sprint(p.Load())
+}
+
+type Int32 struct {
+ atomic.Int32
+}
+
+func NewInt32(val int32) (i Int32) {
+ i.Store(val)
+ return
+}
+
+func (i *Int32) MarshalJSON() ([]byte, error) {
+ return json.Marshal(i.Load())
+}
+
+func (i *Int32) UnmarshalJSON(b []byte) error {
+ var v int32
+ if err := json.Unmarshal(b, &v); err != nil {
+ return err
+ }
+ i.Store(v)
+ return nil
+}
+
+func (i *Int32) String() string {
+ v := i.Load()
+ return strconv.FormatInt(int64(v), 10)
+}
+
+type Int64 struct {
+ atomic.Int64
+}
+
+func NewInt64(val int64) (i Int64) {
+ i.Store(val)
+ return
+}
+
+func (i *Int64) MarshalJSON() ([]byte, error) {
+ return json.Marshal(i.Load())
+}
+
+func (i *Int64) UnmarshalJSON(b []byte) error {
+ var v int64
+ if err := json.Unmarshal(b, &v); err != nil {
+ return err
+ }
+ i.Store(v)
+ return nil
+}
+
+func (i *Int64) String() string {
+ v := i.Load()
+ return strconv.FormatInt(int64(v), 10)
+}
+
+type Uint32 struct {
+ atomic.Uint32
+}
+
+func NewUint32(val uint32) (i Uint32) {
+ i.Store(val)
+ return
+}
+
+func (i *Uint32) MarshalJSON() ([]byte, error) {
+ return json.Marshal(i.Load())
+}
+
+func (i *Uint32) UnmarshalJSON(b []byte) error {
+ var v uint32
+ if err := json.Unmarshal(b, &v); err != nil {
+ return err
+ }
+ i.Store(v)
+ return nil
+}
+
+func (i *Uint32) String() string {
+ v := i.Load()
+ return strconv.FormatUint(uint64(v), 10)
+}
+
+type Uint64 struct {
+ atomic.Uint64
+}
+
+func NewUint64(val uint64) (i Uint64) {
+ i.Store(val)
+ return
+}
+
+func (i *Uint64) MarshalJSON() ([]byte, error) {
+ return json.Marshal(i.Load())
+}
+
+func (i *Uint64) UnmarshalJSON(b []byte) error {
+ var v uint64
+ if err := json.Unmarshal(b, &v); err != nil {
+ return err
+ }
+ i.Store(v)
+ return nil
+}
+
+func (i *Uint64) String() string {
+ v := i.Load()
+ return strconv.FormatUint(uint64(v), 10)
+}
+
+type Uintptr struct {
+ atomic.Uintptr
+}
+
+func NewUintptr(val uintptr) (i Uintptr) {
+ i.Store(val)
+ return
+}
+
+func (i *Uintptr) MarshalJSON() ([]byte, error) {
+ return json.Marshal(i.Load())
+}
+
+func (i *Uintptr) UnmarshalJSON(b []byte) error {
+ var v uintptr
+ if err := json.Unmarshal(b, &v); err != nil {
+ return err
+ }
+ i.Store(v)
+ return nil
+}
+
+func (i *Uintptr) String() string {
+ v := i.Load()
+ return strconv.FormatUint(uint64(v), 10)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/atomic/value.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/atomic/value.go
new file mode 100644
index 0000000..82d4007
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/atomic/value.go
@@ -0,0 +1,75 @@
+package atomic
+
+import (
+ "encoding/json"
+ "sync/atomic"
+)
+
+func DefaultValue[T any]() T {
+ var defaultValue T
+ return defaultValue
+}
+
+type TypedValue[T any] struct {
+ _ noCopy
+ value atomic.Value
+}
+
+// tValue is a struct with determined type to resolve atomic.Value usages with interface types
+// https://github.com/golang/go/issues/22550
+//
+// The intention to have an atomic value store for errors. However, running this code panics:
+// panic: sync/atomic: store of inconsistently typed value into Value
+// This is because atomic.Value requires that the underlying concrete type be the same (which is a reasonable expectation for its implementation).
+// When going through the atomic.Value.Store method call, the fact that both these are of the error interface is lost.
+type tValue[T any] struct {
+ value T
+}
+
+func (t *TypedValue[T]) Load() T {
+ value := t.value.Load()
+ if value == nil {
+ return DefaultValue[T]()
+ }
+ return value.(tValue[T]).value
+}
+
+func (t *TypedValue[T]) Store(value T) {
+ t.value.Store(tValue[T]{value})
+}
+
+func (t *TypedValue[T]) Swap(new T) T {
+ old := t.value.Swap(tValue[T]{new})
+ if old == nil {
+ return DefaultValue[T]()
+ }
+ return old.(tValue[T]).value
+}
+
+func (t *TypedValue[T]) CompareAndSwap(old, new T) bool {
+ return t.value.CompareAndSwap(tValue[T]{old}, tValue[T]{new})
+}
+
+func (t *TypedValue[T]) MarshalJSON() ([]byte, error) {
+ return json.Marshal(t.Load())
+}
+
+func (t *TypedValue[T]) UnmarshalJSON(b []byte) error {
+ var v T
+ if err := json.Unmarshal(b, &v); err != nil {
+ return err
+ }
+ t.Store(v)
+ return nil
+}
+
+func NewTypedValue[T any](t T) (v TypedValue[T]) {
+ v.Store(t)
+ return
+}
+
+type noCopy struct{}
+
+// Lock is a no-op used by -copylocks checker from `go vet`.
+func (*noCopy) Lock() {}
+func (*noCopy) Unlock() {}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/batch/batch.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/batch/batch.go
new file mode 100644
index 0000000..5a6360e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/batch/batch.go
@@ -0,0 +1,105 @@
+package batch
+
+import (
+ "context"
+ "sync"
+)
+
+type Option[T any] func(b *Batch[T])
+
+type Result[T any] struct {
+ Value T
+ Err error
+}
+
+type Error struct {
+ Key string
+ Err error
+}
+
+func WithConcurrencyNum[T any](n int) Option[T] {
+ return func(b *Batch[T]) {
+ q := make(chan struct{}, n)
+ for i := 0; i < n; i++ {
+ q <- struct{}{}
+ }
+ b.queue = q
+ }
+}
+
+// Batch similar to errgroup, but can control the maximum number of concurrent
+type Batch[T any] struct {
+ result map[string]Result[T]
+ queue chan struct{}
+ wg sync.WaitGroup
+ mux sync.Mutex
+ err *Error
+ once sync.Once
+ cancel func()
+}
+
+func (b *Batch[T]) Go(key string, fn func() (T, error)) {
+ b.wg.Add(1)
+ go func() {
+ defer b.wg.Done()
+ if b.queue != nil {
+ <-b.queue
+ defer func() {
+ b.queue <- struct{}{}
+ }()
+ }
+
+ value, err := fn()
+ if err != nil {
+ b.once.Do(func() {
+ b.err = &Error{key, err}
+ if b.cancel != nil {
+ b.cancel()
+ }
+ })
+ }
+
+ ret := Result[T]{value, err}
+ b.mux.Lock()
+ defer b.mux.Unlock()
+ b.result[key] = ret
+ }()
+}
+
+func (b *Batch[T]) Wait() *Error {
+ b.wg.Wait()
+ if b.cancel != nil {
+ b.cancel()
+ }
+ return b.err
+}
+
+func (b *Batch[T]) WaitAndGetResult() (map[string]Result[T], *Error) {
+ err := b.Wait()
+ return b.Result(), err
+}
+
+func (b *Batch[T]) Result() map[string]Result[T] {
+ b.mux.Lock()
+ defer b.mux.Unlock()
+ copyM := map[string]Result[T]{}
+ for k, v := range b.result {
+ copyM[k] = v
+ }
+ return copyM
+}
+
+func New[T any](ctx context.Context, opts ...Option[T]) (*Batch[T], context.Context) {
+ ctx, cancel := context.WithCancel(ctx)
+
+ b := &Batch[T]{
+ result: map[string]Result[T]{},
+ }
+
+ for _, o := range opts {
+ o(b)
+ }
+
+ b.cancel = cancel
+ return b, ctx
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/batch/batch_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/batch/batch_test.go
new file mode 100644
index 0000000..73350fd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/batch/batch_test.go
@@ -0,0 +1,83 @@
+package batch
+
+import (
+ "context"
+ "errors"
+ "strconv"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestBatch(t *testing.T) {
+ b, _ := New[string](context.Background())
+
+ now := time.Now()
+ b.Go("foo", func() (string, error) {
+ time.Sleep(time.Millisecond * 100)
+ return "foo", nil
+ })
+ b.Go("bar", func() (string, error) {
+ time.Sleep(time.Millisecond * 150)
+ return "bar", nil
+ })
+ result, err := b.WaitAndGetResult()
+
+ assert.Nil(t, err)
+
+ duration := time.Since(now)
+ assert.Less(t, duration, time.Millisecond*200)
+ assert.Equal(t, 2, len(result))
+
+ for k, v := range result {
+ assert.NoError(t, v.Err)
+ assert.Equal(t, k, v.Value)
+ }
+}
+
+func TestBatchWithConcurrencyNum(t *testing.T) {
+ b, _ := New[string](
+ context.Background(),
+ WithConcurrencyNum[string](3),
+ )
+
+ now := time.Now()
+ for i := 0; i < 7; i++ {
+ idx := i
+ b.Go(strconv.Itoa(idx), func() (string, error) {
+ time.Sleep(time.Millisecond * 100)
+ return strconv.Itoa(idx), nil
+ })
+ }
+ result, _ := b.WaitAndGetResult()
+ duration := time.Since(now)
+ assert.Greater(t, duration, time.Millisecond*260)
+ assert.Equal(t, 7, len(result))
+
+ for k, v := range result {
+ assert.NoError(t, v.Err)
+ assert.Equal(t, k, v.Value)
+ }
+}
+
+func TestBatchContext(t *testing.T) {
+ b, ctx := New[string](context.Background())
+
+ b.Go("error", func() (string, error) {
+ time.Sleep(time.Millisecond * 100)
+ return "", errors.New("test error")
+ })
+
+ b.Go("ctx", func() (string, error) {
+ <-ctx.Done()
+ return "", ctx.Err()
+ })
+
+ result, err := b.WaitAndGetResult()
+
+ assert.NotNil(t, err)
+ assert.Equal(t, "error", err.Key)
+
+ assert.Equal(t, ctx.Err(), result["ctx"].Err)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/buf/sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/buf/sing.go
new file mode 100644
index 0000000..0907a95
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/buf/sing.go
@@ -0,0 +1,21 @@
+package buf
+
+import (
+ "github.com/sagernet/sing/common"
+ "github.com/sagernet/sing/common/buf"
+)
+
+const BufferSize = buf.BufferSize
+
+type Buffer = buf.Buffer
+
+var New = buf.New
+var NewPacket = buf.NewPacket
+var NewSize = buf.NewSize
+var With = buf.With
+var As = buf.As
+
+var (
+ Must = common.Must
+ Error = common.Error
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/callback/callback.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/callback/callback.go
new file mode 100644
index 0000000..9ae0f94
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/callback/callback.go
@@ -0,0 +1,55 @@
+package callback
+
+import (
+ "github.com/metacubex/mihomo/common/buf"
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type firstWriteCallBackConn struct {
+ C.Conn
+ callback func(error)
+ written bool
+}
+
+func (c *firstWriteCallBackConn) Write(b []byte) (n int, err error) {
+ defer func() {
+ if !c.written {
+ c.written = true
+ c.callback(err)
+ }
+ }()
+ return c.Conn.Write(b)
+}
+
+func (c *firstWriteCallBackConn) WriteBuffer(buffer *buf.Buffer) (err error) {
+ defer func() {
+ if !c.written {
+ c.written = true
+ c.callback(err)
+ }
+ }()
+ return c.Conn.WriteBuffer(buffer)
+}
+
+func (c *firstWriteCallBackConn) Upstream() any {
+ return c.Conn
+}
+
+func (c *firstWriteCallBackConn) WriterReplaceable() bool {
+ return c.written
+}
+
+func (c *firstWriteCallBackConn) ReaderReplaceable() bool {
+ return true
+}
+
+var _ N.ExtendedConn = (*firstWriteCallBackConn)(nil)
+
+func NewFirstWriteCallBackConn(c C.Conn, callback func(error)) C.Conn {
+ return &firstWriteCallBackConn{
+ Conn: c,
+ callback: callback,
+ written: false,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/callback/close_callback.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/callback/close_callback.go
new file mode 100644
index 0000000..630ee5d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/callback/close_callback.go
@@ -0,0 +1,61 @@
+package callback
+
+import (
+ "sync"
+
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type closeCallbackConn struct {
+ C.Conn
+ closeFunc func()
+ closeOnce sync.Once
+}
+
+func (w *closeCallbackConn) Close() error {
+ w.closeOnce.Do(w.closeFunc)
+ return w.Conn.Close()
+}
+
+func (w *closeCallbackConn) ReaderReplaceable() bool {
+ return true
+}
+
+func (w *closeCallbackConn) WriterReplaceable() bool {
+ return true
+}
+
+func (w *closeCallbackConn) Upstream() any {
+ return w.Conn
+}
+
+func NewCloseCallbackConn(conn C.Conn, callback func()) C.Conn {
+ return &closeCallbackConn{Conn: conn, closeFunc: callback}
+}
+
+type closeCallbackPacketConn struct {
+ C.PacketConn
+ closeFunc func()
+ closeOnce sync.Once
+}
+
+func (w *closeCallbackPacketConn) Close() error {
+ w.closeOnce.Do(w.closeFunc)
+ return w.PacketConn.Close()
+}
+
+func (w *closeCallbackPacketConn) ReaderReplaceable() bool {
+ return true
+}
+
+func (w *closeCallbackPacketConn) WriterReplaceable() bool {
+ return true
+}
+
+func (w *closeCallbackPacketConn) Upstream() any {
+ return w.PacketConn
+}
+
+func NewCloseCallbackPacketConn(conn C.PacketConn, callback func()) C.PacketConn {
+ return &closeCallbackPacketConn{PacketConn: conn, closeFunc: callback}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd.go
new file mode 100644
index 0000000..e015dd2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd.go
@@ -0,0 +1,36 @@
+package cmd
+
+import (
+ "fmt"
+ "os/exec"
+ "strings"
+)
+
+func ExecCmd(cmdStr string) (string, error) {
+ args := splitArgs(cmdStr)
+
+ var cmd *exec.Cmd
+ if len(args) == 1 {
+ cmd = exec.Command(args[0])
+ } else {
+ cmd = exec.Command(args[0], args[1:]...)
+
+ }
+ prepareBackgroundCommand(cmd)
+ out, err := cmd.CombinedOutput()
+ if err != nil {
+ return "", fmt.Errorf("%v, %s", err, string(out))
+ }
+ return string(out), nil
+}
+
+func splitArgs(cmd string) []string {
+ args := strings.Split(cmd, " ")
+
+ // use in pipeline
+ if len(args) > 2 && strings.ContainsAny(cmd, "|") {
+ suffix := strings.Join(args[2:], " ")
+ args = append(args[:2], suffix)
+ }
+ return args
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd_other.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd_other.go
new file mode 100644
index 0000000..c6bc4ac
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd_other.go
@@ -0,0 +1,11 @@
+//go:build !windows
+
+package cmd
+
+import (
+ "os/exec"
+)
+
+func prepareBackgroundCommand(cmd *exec.Cmd) {
+
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd_test.go
new file mode 100644
index 0000000..b124a22
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd_test.go
@@ -0,0 +1,40 @@
+package cmd
+
+import (
+ "runtime"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestSplitArgs(t *testing.T) {
+ args := splitArgs("ls")
+ args1 := splitArgs("ls -la")
+ args2 := splitArgs("bash -c ls")
+ args3 := splitArgs("bash -c ls -lahF | grep 'cmd'")
+
+ assert.Equal(t, 1, len(args))
+ assert.Equal(t, 2, len(args1))
+ assert.Equal(t, 3, len(args2))
+ assert.Equal(t, 3, len(args3))
+}
+
+func TestExecCmd(t *testing.T) {
+ if runtime.GOOS == "windows" {
+ _, err := ExecCmd("cmd -c 'dir'")
+ assert.Nil(t, err)
+ return
+ }
+
+ _, err := ExecCmd("ls")
+ _, err1 := ExecCmd("ls -la")
+ _, err2 := ExecCmd("bash -c ls")
+ _, err3 := ExecCmd("bash -c ls -la")
+ _, err4 := ExecCmd("bash -c ls -la | grep 'cmd'")
+
+ assert.Nil(t, err)
+ assert.Nil(t, err1)
+ assert.Nil(t, err2)
+ assert.Nil(t, err3)
+ assert.Nil(t, err4)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd_windows.go
new file mode 100644
index 0000000..5d7fd9d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/cmd/cmd_windows.go
@@ -0,0 +1,12 @@
+//go:build windows
+
+package cmd
+
+import (
+ "os/exec"
+ "syscall"
+)
+
+func prepareBackgroundCommand(cmd *exec.Cmd) {
+ cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/base64.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/base64.go
new file mode 100644
index 0000000..21d818f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/base64.go
@@ -0,0 +1,45 @@
+package convert
+
+import (
+ "encoding/base64"
+ "strings"
+)
+
+var (
+ encRaw = base64.RawStdEncoding
+ enc = base64.StdEncoding
+)
+
+// DecodeBase64 try to decode content from the given bytes,
+// which can be in base64.RawStdEncoding, base64.StdEncoding or just plaintext.
+func DecodeBase64(buf []byte) []byte {
+ result, err := tryDecodeBase64(buf)
+ if err != nil {
+ return buf
+ }
+ return result
+}
+
+func tryDecodeBase64(buf []byte) ([]byte, error) {
+ dBuf := make([]byte, encRaw.DecodedLen(len(buf)))
+ n, err := encRaw.Decode(dBuf, buf)
+ if err != nil {
+ n, err = enc.Decode(dBuf, buf)
+ if err != nil {
+ return nil, err
+ }
+ }
+ return dBuf[:n], nil
+}
+
+func urlSafe(data string) string {
+ return strings.NewReplacer("+", "-", "/", "_").Replace(data)
+}
+
+func decodeUrlSafe(data string) string {
+ dcBuf, err := base64.RawURLEncoding.DecodeString(data)
+ if err != nil {
+ return ""
+ }
+ return string(dcBuf)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/converter.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/converter.go
new file mode 100644
index 0000000..19886d2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/converter.go
@@ -0,0 +1,534 @@
+package convert
+
+import (
+ "bytes"
+ "encoding/base64"
+ "encoding/json"
+ "fmt"
+ "net/url"
+ "strconv"
+ "strings"
+
+ "github.com/metacubex/mihomo/log"
+)
+
+// ConvertsV2Ray convert V2Ray subscribe proxies data to mihomo proxies config
+func ConvertsV2Ray(buf []byte) ([]map[string]any, error) {
+ data := DecodeBase64(buf)
+
+ arr := strings.Split(string(data), "\n")
+
+ proxies := make([]map[string]any, 0, len(arr))
+ names := make(map[string]int, 200)
+
+ for _, line := range arr {
+ line = strings.TrimRight(line, " \r")
+ if line == "" {
+ continue
+ }
+
+ scheme, body, found := strings.Cut(line, "://")
+ if !found {
+ continue
+ }
+
+ scheme = strings.ToLower(scheme)
+ switch scheme {
+ case "hysteria":
+ urlHysteria, err := url.Parse(line)
+ if err != nil {
+ continue
+ }
+
+ query := urlHysteria.Query()
+ name := uniqueName(names, urlHysteria.Fragment)
+ hysteria := make(map[string]any, 20)
+
+ hysteria["name"] = name
+ hysteria["type"] = scheme
+ hysteria["server"] = urlHysteria.Hostname()
+ hysteria["port"] = urlHysteria.Port()
+ hysteria["sni"] = query.Get("peer")
+ hysteria["obfs"] = query.Get("obfs")
+ if alpn := query.Get("alpn"); alpn != "" {
+ hysteria["alpn"] = strings.Split(alpn, ",")
+ }
+ hysteria["auth_str"] = query.Get("auth")
+ hysteria["protocol"] = query.Get("protocol")
+ up := query.Get("up")
+ down := query.Get("down")
+ if up == "" {
+ up = query.Get("upmbps")
+ }
+ if down == "" {
+ down = query.Get("downmbps")
+ }
+ hysteria["down"] = down
+ hysteria["up"] = up
+ hysteria["skip-cert-verify"], _ = strconv.ParseBool(query.Get("insecure"))
+
+ proxies = append(proxies, hysteria)
+
+ case "hysteria2", "hy2":
+ urlHysteria2, err := url.Parse(line)
+ if err != nil {
+ continue
+ }
+
+ query := urlHysteria2.Query()
+ name := uniqueName(names, urlHysteria2.Fragment)
+ hysteria2 := make(map[string]any, 20)
+
+ hysteria2["name"] = name
+ hysteria2["type"] = "hysteria2"
+ hysteria2["server"] = urlHysteria2.Hostname()
+ if port := urlHysteria2.Port(); port != "" {
+ hysteria2["port"] = port
+ } else {
+ hysteria2["port"] = "443"
+ }
+ hysteria2["obfs"] = query.Get("obfs")
+ hysteria2["obfs-password"] = query.Get("obfs-password")
+ hysteria2["sni"] = query.Get("sni")
+ hysteria2["skip-cert-verify"], _ = strconv.ParseBool(query.Get("insecure"))
+ if alpn := query.Get("alpn"); alpn != "" {
+ hysteria2["alpn"] = strings.Split(alpn, ",")
+ }
+ if auth := urlHysteria2.User.String(); auth != "" {
+ hysteria2["password"] = auth
+ }
+ hysteria2["fingerprint"] = query.Get("pinSHA256")
+ hysteria2["down"] = query.Get("down")
+ hysteria2["up"] = query.Get("up")
+
+ proxies = append(proxies, hysteria2)
+
+ case "tuic":
+ // A temporary unofficial TUIC share link standard
+ // Modified from https://github.com/daeuniverse/dae/discussions/182
+ // Changes:
+ // 1. Support TUICv4, just replace uuid:password with token
+ // 2. Remove `allow_insecure` field
+ urlTUIC, err := url.Parse(line)
+ if err != nil {
+ continue
+ }
+ query := urlTUIC.Query()
+
+ tuic := make(map[string]any, 20)
+ tuic["name"] = uniqueName(names, urlTUIC.Fragment)
+ tuic["type"] = scheme
+ tuic["server"] = urlTUIC.Hostname()
+ tuic["port"] = urlTUIC.Port()
+ tuic["udp"] = true
+ password, v5 := urlTUIC.User.Password()
+ if v5 {
+ tuic["uuid"] = urlTUIC.User.Username()
+ tuic["password"] = password
+ } else {
+ tuic["token"] = urlTUIC.User.Username()
+ }
+ if cc := query.Get("congestion_control"); cc != "" {
+ tuic["congestion-controller"] = cc
+ }
+ if alpn := query.Get("alpn"); alpn != "" {
+ tuic["alpn"] = strings.Split(alpn, ",")
+ }
+ if sni := query.Get("sni"); sni != "" {
+ tuic["sni"] = sni
+ }
+ if query.Get("disable_sni") == "1" {
+ tuic["disable-sni"] = true
+ }
+ if udpRelayMode := query.Get("udp_relay_mode"); udpRelayMode != "" {
+ tuic["udp-relay-mode"] = udpRelayMode
+ }
+
+ proxies = append(proxies, tuic)
+
+ case "trojan":
+ urlTrojan, err := url.Parse(line)
+ if err != nil {
+ continue
+ }
+
+ query := urlTrojan.Query()
+
+ name := uniqueName(names, urlTrojan.Fragment)
+ trojan := make(map[string]any, 20)
+
+ trojan["name"] = name
+ trojan["type"] = scheme
+ trojan["server"] = urlTrojan.Hostname()
+ trojan["port"] = urlTrojan.Port()
+ trojan["password"] = urlTrojan.User.Username()
+ trojan["udp"] = true
+ trojan["skip-cert-verify"], _ = strconv.ParseBool(query.Get("allowInsecure"))
+
+ if sni := query.Get("sni"); sni != "" {
+ trojan["sni"] = sni
+ }
+ if alpn := query.Get("alpn"); alpn != "" {
+ trojan["alpn"] = strings.Split(alpn, ",")
+ }
+
+ network := strings.ToLower(query.Get("type"))
+ if network != "" {
+ trojan["network"] = network
+ }
+
+ switch network {
+ case "ws":
+ headers := make(map[string]any)
+ wsOpts := make(map[string]any)
+
+ headers["User-Agent"] = RandUserAgent()
+
+ wsOpts["path"] = query.Get("path")
+ wsOpts["headers"] = headers
+
+ trojan["ws-opts"] = wsOpts
+
+ case "grpc":
+ grpcOpts := make(map[string]any)
+ grpcOpts["grpc-service-name"] = query.Get("serviceName")
+ trojan["grpc-opts"] = grpcOpts
+ }
+
+ if fingerprint := query.Get("fp"); fingerprint == "" {
+ trojan["client-fingerprint"] = "chrome"
+ } else {
+ trojan["client-fingerprint"] = fingerprint
+ }
+
+ proxies = append(proxies, trojan)
+
+ case "vless":
+ urlVLess, err := url.Parse(line)
+ if err != nil {
+ continue
+ }
+ query := urlVLess.Query()
+ vless := make(map[string]any, 20)
+ err = handleVShareLink(names, urlVLess, scheme, vless)
+ if err != nil {
+ log.Warnln("error:%s line:%s", err.Error(), line)
+ continue
+ }
+ if flow := query.Get("flow"); flow != "" {
+ vless["flow"] = strings.ToLower(flow)
+ }
+ proxies = append(proxies, vless)
+
+ case "vmess":
+ // V2RayN-styled share link
+ // https://github.com/2dust/v2rayN/wiki/%E5%88%86%E4%BA%AB%E9%93%BE%E6%8E%A5%E6%A0%BC%E5%BC%8F%E8%AF%B4%E6%98%8E(ver-2)
+ dcBuf, err := tryDecodeBase64([]byte(body))
+ if err != nil {
+ // Xray VMessAEAD share link
+ urlVMess, err := url.Parse(line)
+ if err != nil {
+ continue
+ }
+ query := urlVMess.Query()
+ vmess := make(map[string]any, 20)
+ err = handleVShareLink(names, urlVMess, scheme, vmess)
+ if err != nil {
+ log.Warnln("error:%s line:%s", err.Error(), line)
+ continue
+ }
+ vmess["alterId"] = 0
+ vmess["cipher"] = "auto"
+ if encryption := query.Get("encryption"); encryption != "" {
+ vmess["cipher"] = encryption
+ }
+ proxies = append(proxies, vmess)
+ continue
+ }
+
+ jsonDc := json.NewDecoder(bytes.NewReader(dcBuf))
+ values := make(map[string]any, 20)
+
+ if jsonDc.Decode(&values) != nil {
+ continue
+ }
+ tempName, ok := values["ps"].(string)
+ if !ok {
+ continue
+ }
+ name := uniqueName(names, tempName)
+ vmess := make(map[string]any, 20)
+
+ vmess["name"] = name
+ vmess["type"] = scheme
+ vmess["server"] = values["add"]
+ vmess["port"] = values["port"]
+ vmess["uuid"] = values["id"]
+ if alterId, ok := values["aid"]; ok {
+ vmess["alterId"] = alterId
+ } else {
+ vmess["alterId"] = 0
+ }
+ vmess["udp"] = true
+ vmess["xudp"] = true
+ vmess["tls"] = false
+ vmess["skip-cert-verify"] = false
+
+ vmess["cipher"] = "auto"
+ if cipher, ok := values["scy"]; ok && cipher != "" {
+ vmess["cipher"] = cipher
+ }
+
+ if sni, ok := values["sni"]; ok && sni != "" {
+ vmess["servername"] = sni
+ }
+
+ network, _ := values["net"].(string)
+ network = strings.ToLower(network)
+ if values["type"] == "http" {
+ network = "http"
+ } else if network == "http" {
+ network = "h2"
+ }
+ vmess["network"] = network
+
+ tls, ok := values["tls"].(string)
+ if ok {
+ tls = strings.ToLower(tls)
+ if strings.HasSuffix(tls, "tls") {
+ vmess["tls"] = true
+ }
+ if alpn, ok := values["alpn"].(string); ok {
+ vmess["alpn"] = strings.Split(alpn, ",")
+ }
+ }
+
+ switch network {
+ case "http":
+ headers := make(map[string]any)
+ httpOpts := make(map[string]any)
+ if host, ok := values["host"]; ok && host != "" {
+ headers["Host"] = []string{host.(string)}
+ }
+ httpOpts["path"] = []string{"/"}
+ if path, ok := values["path"]; ok && path != "" {
+ httpOpts["path"] = []string{path.(string)}
+ }
+ httpOpts["headers"] = headers
+
+ vmess["http-opts"] = httpOpts
+
+ case "h2":
+ headers := make(map[string]any)
+ h2Opts := make(map[string]any)
+ if host, ok := values["host"]; ok && host != "" {
+ headers["Host"] = []string{host.(string)}
+ }
+
+ h2Opts["path"] = values["path"]
+ h2Opts["headers"] = headers
+
+ vmess["h2-opts"] = h2Opts
+
+ case "ws", "httpupgrade":
+ headers := make(map[string]any)
+ wsOpts := make(map[string]any)
+ wsOpts["path"] = "/"
+ if host, ok := values["host"]; ok && host != "" {
+ headers["Host"] = host.(string)
+ }
+ if path, ok := values["path"]; ok && path != "" {
+ path := path.(string)
+ pathURL, err := url.Parse(path)
+ if err == nil {
+ query := pathURL.Query()
+ if earlyData := query.Get("ed"); earlyData != "" {
+ med, err := strconv.Atoi(earlyData)
+ if err == nil {
+ switch network {
+ case "ws":
+ wsOpts["max-early-data"] = med
+ wsOpts["early-data-header-name"] = "Sec-WebSocket-Protocol"
+ case "httpupgrade":
+ wsOpts["v2ray-http-upgrade-fast-open"] = true
+ }
+ query.Del("ed")
+ pathURL.RawQuery = query.Encode()
+ path = pathURL.String()
+ }
+ }
+ if earlyDataHeader := query.Get("eh"); earlyDataHeader != "" {
+ wsOpts["early-data-header-name"] = earlyDataHeader
+ }
+ }
+ wsOpts["path"] = path
+ }
+ wsOpts["headers"] = headers
+ vmess["ws-opts"] = wsOpts
+
+ case "grpc":
+ grpcOpts := make(map[string]any)
+ grpcOpts["grpc-service-name"] = values["path"]
+ vmess["grpc-opts"] = grpcOpts
+ }
+
+ proxies = append(proxies, vmess)
+
+ case "ss":
+ urlSS, err := url.Parse(line)
+ if err != nil {
+ continue
+ }
+
+ name := uniqueName(names, urlSS.Fragment)
+ port := urlSS.Port()
+
+ if port == "" {
+ dcBuf, err := encRaw.DecodeString(urlSS.Host)
+ if err != nil {
+ continue
+ }
+
+ urlSS, err = url.Parse("ss://" + string(dcBuf))
+ if err != nil {
+ continue
+ }
+ }
+
+ var (
+ cipherRaw = urlSS.User.Username()
+ cipher string
+ password string
+ )
+ cipher = cipherRaw
+ if password, found = urlSS.User.Password(); !found {
+ dcBuf, err := base64.RawURLEncoding.DecodeString(cipherRaw)
+ if err != nil {
+ dcBuf, _ = enc.DecodeString(cipherRaw)
+ }
+ cipher, password, found = strings.Cut(string(dcBuf), ":")
+ if !found {
+ continue
+ }
+ err = VerifyMethod(cipher, password)
+ if err != nil {
+ dcBuf, _ = encRaw.DecodeString(cipherRaw)
+ cipher, password, found = strings.Cut(string(dcBuf), ":")
+ }
+ }
+
+ ss := make(map[string]any, 10)
+
+ ss["name"] = name
+ ss["type"] = scheme
+ ss["server"] = urlSS.Hostname()
+ ss["port"] = urlSS.Port()
+ ss["cipher"] = cipher
+ ss["password"] = password
+ query := urlSS.Query()
+ ss["udp"] = true
+ if query.Get("udp-over-tcp") == "true" || query.Get("uot") == "1" {
+ ss["udp-over-tcp"] = true
+ }
+ plugin := query.Get("plugin")
+ if strings.Contains(plugin, ";") {
+ pluginInfo, _ := url.ParseQuery("pluginName=" + strings.ReplaceAll(plugin, ";", "&"))
+ pluginName := pluginInfo.Get("pluginName")
+ if strings.Contains(pluginName, "obfs") {
+ ss["plugin"] = "obfs"
+ ss["plugin-opts"] = map[string]any{
+ "mode": pluginInfo.Get("obfs"),
+ "host": pluginInfo.Get("obfs-host"),
+ }
+ } else if strings.Contains(pluginName, "v2ray-plugin") {
+ ss["plugin"] = "v2ray-plugin"
+ ss["plugin-opts"] = map[string]any{
+ "mode": pluginInfo.Get("mode"),
+ "host": pluginInfo.Get("host"),
+ "path": pluginInfo.Get("path"),
+ "tls": strings.Contains(plugin, "tls"),
+ }
+ }
+ }
+
+ proxies = append(proxies, ss)
+
+ case "ssr":
+ dcBuf, err := encRaw.DecodeString(body)
+ if err != nil {
+ continue
+ }
+
+ // ssr://host:port:protocol:method:obfs:urlsafebase64pass/?obfsparam=urlsafebase64&protoparam=&remarks=urlsafebase64&group=urlsafebase64&udpport=0&uot=1
+
+ before, after, ok := strings.Cut(string(dcBuf), "/?")
+ if !ok {
+ continue
+ }
+
+ beforeArr := strings.Split(before, ":")
+
+ if len(beforeArr) != 6 {
+ continue
+ }
+
+ host := beforeArr[0]
+ port := beforeArr[1]
+ protocol := beforeArr[2]
+ method := beforeArr[3]
+ obfs := beforeArr[4]
+ password := decodeUrlSafe(urlSafe(beforeArr[5]))
+
+ query, err := url.ParseQuery(urlSafe(after))
+ if err != nil {
+ continue
+ }
+
+ remarks := decodeUrlSafe(query.Get("remarks"))
+ name := uniqueName(names, remarks)
+
+ obfsParam := decodeUrlSafe(query.Get("obfsparam"))
+ protocolParam := query.Get("protoparam")
+
+ ssr := make(map[string]any, 20)
+
+ ssr["name"] = name
+ ssr["type"] = scheme
+ ssr["server"] = host
+ ssr["port"] = port
+ ssr["cipher"] = method
+ ssr["password"] = password
+ ssr["obfs"] = obfs
+ ssr["protocol"] = protocol
+ ssr["udp"] = true
+
+ if obfsParam != "" {
+ ssr["obfs-param"] = obfsParam
+ }
+
+ if protocolParam != "" {
+ ssr["protocol-param"] = protocolParam
+ }
+
+ proxies = append(proxies, ssr)
+ }
+ }
+
+ if len(proxies) == 0 {
+ return nil, fmt.Errorf("convert v2ray subscribe error: format invalid")
+ }
+
+ return proxies, nil
+}
+
+func uniqueName(names map[string]int, name string) string {
+ if index, ok := names[name]; ok {
+ index++
+ names[name] = index
+ name = fmt.Sprintf("%s-%02d", name, index)
+ } else {
+ index = 0
+ names[name] = index
+ }
+ return name
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/converter_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/converter_test.go
new file mode 100644
index 0000000..83b41c4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/converter_test.go
@@ -0,0 +1,35 @@
+package convert
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+// https://v2.hysteria.network/zh/docs/developers/URI-Scheme/
+func TestConvertsV2Ray_normal(t *testing.T) {
+ hy2test := "hysteria2://letmein@example.com:8443/?insecure=1&obfs=salamander&obfs-password=gawrgura&pinSHA256=deadbeef&sni=real.example.com&up=114&down=514&alpn=h3,h4#hy2test"
+
+ expected := []map[string]interface{}{
+ {
+ "name": "hy2test",
+ "type": "hysteria2",
+ "server": "example.com",
+ "port": "8443",
+ "sni": "real.example.com",
+ "obfs": "salamander",
+ "obfs-password": "gawrgura",
+ "alpn": []string{"h3", "h4"},
+ "password": "letmein",
+ "up": "114",
+ "down": "514",
+ "skip-cert-verify": true,
+ "fingerprint": "deadbeef",
+ },
+ }
+
+ proxies, err := ConvertsV2Ray([]byte(hy2test))
+
+ assert.Nil(t, err)
+ assert.Equal(t, expected, proxies)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/util.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/util.go
new file mode 100644
index 0000000..ab00637
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/util.go
@@ -0,0 +1,323 @@
+package convert
+
+import (
+ "encoding/base64"
+ "net/http"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/common/utils"
+
+ "github.com/metacubex/randv2"
+ "github.com/metacubex/sing-shadowsocks/shadowimpl"
+)
+
+var hostsSuffix = []string{
+ "-cdn.aliyuncs.com",
+ ".alicdn.com",
+ ".pan.baidu.com",
+ ".tbcache.com",
+ ".aliyuncdn.com",
+ ".vod.miguvideo.com",
+ ".cibntv.net",
+ ".myqcloud.com",
+ ".smtcdns.com",
+ ".alikunlun.com",
+ ".smtcdns.net",
+ ".apcdns.net",
+ ".cdn-go.cn",
+ ".cdntip.com",
+ ".cdntips.com",
+ ".alidayu.com",
+ ".alidns.com",
+ ".cdngslb.com",
+ ".mxhichina.com",
+ ".alibabadns.com",
+}
+
+var userAgents = []string{
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; Moto C Build/NRD90M.059) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-G532M Build/MMB29T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1.1; SM-J120M Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; Moto G (5) Build/NPPS25.137-93-14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-G570M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0; CAM-L03 Build/HUAWEICAM-L03) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3",
+ "Mozilla/5.0 (Linux; Android 8.0.0; FIG-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36",
+ "Mozilla/5.0 (X11; Datanyze; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1.1; SM-J111M Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-J700M Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36",
+ "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Slackware/Chrome/12.0.742.100 Safari/534.30",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
+ "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 8.0.0; WAS-LX3 Build/HUAWEIWAS-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.1805 Safari/537.36 MVisionPlayer/1.0.0.0",
+ "Mozilla/5.0 (Linux; Android 7.0; TRT-LX3 Build/HUAWEITRT-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0; vivo 1610 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.124 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 4.4.2; de-de; SAMSUNG GT-I9195 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 8.0.0; ANE-LX3 Build/HUAWEIANE-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (X11; U; Linux i586; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.65 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-G610M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-J500M Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0; vivo 1606 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.124 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-G610M Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.1; vivo 1716 Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-G570M Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0; MYA-L22 Build/HUAWEIMYA-L22) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1; A1601 Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; TRT-LX2 Build/HUAWEITRT-LX2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/59.0.3071.125 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.649.0 Safari/534.17",
+ "Mozilla/5.0 (Linux; Android 6.0; CAM-L21 Build/HUAWEICAM-L21; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24",
+ "Mozilla/5.0 (Linux; Android 7.1.2; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 4.4.2; SM-G7102 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1; HUAWEI CUN-L22 Build/HUAWEICUN-L22; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1.1; A37fw Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-J730GM Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-G610F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.1.2; Redmi Note 5A Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; Redmi Note 4 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36",
+ "Mozilla/5.0 (Unknown; Linux) AppleWebKit/538.1 (KHTML, like Gecko) Chrome/v1.0.0 Safari/538.1",
+ "Mozilla/5.0 (Linux; Android 7.0; BLL-L22 Build/HUAWEIBLL-L22) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.91 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-J710F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-G532M Build/MMB29T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.91 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.1.1; CPH1723 Build/N6F26Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 8.0.0; FIG-LX3 Build/HUAWEIFIG-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.649.0 Safari/534.17",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.65 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.1; Mi A1 Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36 MVisionPlayer/1.0.0.0",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1; A37f Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; CPH1607 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; vivo 1603 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-G532M Build/MMB29T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; Redmi 4A Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.116 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-G532G Build/MMB29T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.83 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0; vivo 1713 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.124 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
+}
+
+var (
+ hostsLen = len(hostsSuffix)
+ uaLen = len(userAgents)
+)
+
+func RandHost() string {
+ base := strings.ToLower(base64.RawURLEncoding.EncodeToString(utils.NewUUIDV4().Bytes()))
+ base = strings.ReplaceAll(base, "-", "")
+ base = strings.ReplaceAll(base, "_", "")
+ buf := []byte(base)
+ prefix := string(buf[:3]) + "---"
+ prefix += string(buf[6:8]) + "-"
+ prefix += string(buf[len(buf)-8:])
+
+ return prefix + hostsSuffix[randv2.IntN(hostsLen)]
+}
+
+func RandUserAgent() string {
+ return userAgents[randv2.IntN(uaLen)]
+}
+
+func SetUserAgent(header http.Header) {
+ if header.Get("User-Agent") != "" {
+ return
+ }
+ userAgent := RandUserAgent()
+ header.Set("User-Agent", userAgent)
+}
+
+func VerifyMethod(cipher, password string) (err error) {
+ _, err = shadowimpl.FetchMethod(cipher, password, time.Now)
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/v.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/v.go
new file mode 100644
index 0000000..4102ab7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/convert/v.go
@@ -0,0 +1,136 @@
+package convert
+
+import (
+ "errors"
+ "fmt"
+ "net/url"
+ "strconv"
+ "strings"
+)
+
+func handleVShareLink(names map[string]int, url *url.URL, scheme string, proxy map[string]any) error {
+ // Xray VMessAEAD / VLESS share link standard
+ // https://github.com/XTLS/Xray-core/discussions/716
+ query := url.Query()
+ proxy["name"] = uniqueName(names, url.Fragment)
+ if url.Hostname() == "" {
+ return errors.New("url.Hostname() is empty")
+ }
+ if url.Port() == "" {
+ return errors.New("url.Port() is empty")
+ }
+ proxy["type"] = scheme
+ proxy["server"] = url.Hostname()
+ proxy["port"] = url.Port()
+ proxy["uuid"] = url.User.Username()
+ proxy["udp"] = true
+ tls := strings.ToLower(query.Get("security"))
+ if strings.HasSuffix(tls, "tls") || tls == "reality" {
+ proxy["tls"] = true
+ if fingerprint := query.Get("fp"); fingerprint == "" {
+ proxy["client-fingerprint"] = "chrome"
+ } else {
+ proxy["client-fingerprint"] = fingerprint
+ }
+ if alpn := query.Get("alpn"); alpn != "" {
+ proxy["alpn"] = strings.Split(alpn, ",")
+ }
+ }
+ if sni := query.Get("sni"); sni != "" {
+ proxy["servername"] = sni
+ }
+ if realityPublicKey := query.Get("pbk"); realityPublicKey != "" {
+ proxy["reality-opts"] = map[string]any{
+ "public-key": realityPublicKey,
+ "short-id": query.Get("sid"),
+ }
+ }
+
+ switch query.Get("packetEncoding") {
+ case "none":
+ case "packet":
+ proxy["packet-addr"] = true
+ default:
+ proxy["xudp"] = true
+ }
+
+ network := strings.ToLower(query.Get("type"))
+ if network == "" {
+ network = "tcp"
+ }
+ fakeType := strings.ToLower(query.Get("headerType"))
+ if fakeType == "http" {
+ network = "http"
+ } else if network == "http" {
+ network = "h2"
+ }
+ proxy["network"] = network
+ switch network {
+ case "tcp":
+ if fakeType != "none" {
+ headers := make(map[string]any)
+ httpOpts := make(map[string]any)
+ httpOpts["path"] = []string{"/"}
+
+ if host := query.Get("host"); host != "" {
+ headers["Host"] = []string{host}
+ }
+
+ if method := query.Get("method"); method != "" {
+ httpOpts["method"] = method
+ }
+
+ if path := query.Get("path"); path != "" {
+ httpOpts["path"] = []string{path}
+ }
+ httpOpts["headers"] = headers
+ proxy["http-opts"] = httpOpts
+ }
+
+ case "http":
+ headers := make(map[string]any)
+ h2Opts := make(map[string]any)
+ h2Opts["path"] = []string{"/"}
+ if path := query.Get("path"); path != "" {
+ h2Opts["path"] = []string{path}
+ }
+ if host := query.Get("host"); host != "" {
+ h2Opts["host"] = []string{host}
+ }
+ h2Opts["headers"] = headers
+ proxy["h2-opts"] = h2Opts
+
+ case "ws", "httpupgrade":
+ headers := make(map[string]any)
+ wsOpts := make(map[string]any)
+ headers["User-Agent"] = RandUserAgent()
+ headers["Host"] = query.Get("host")
+ wsOpts["path"] = query.Get("path")
+ wsOpts["headers"] = headers
+
+ if earlyData := query.Get("ed"); earlyData != "" {
+ med, err := strconv.Atoi(earlyData)
+ if err != nil {
+ return fmt.Errorf("bad WebSocket max early data size: %v", err)
+ }
+ switch network {
+ case "ws":
+ wsOpts["max-early-data"] = med
+ wsOpts["early-data-header-name"] = "Sec-WebSocket-Protocol"
+ case "httpupgrade":
+ wsOpts["v2ray-http-upgrade-fast-open"] = true
+ }
+ }
+ if earlyDataHeader := query.Get("eh"); earlyDataHeader != "" {
+ wsOpts["early-data-header-name"] = earlyDataHeader
+ }
+
+ proxy["ws-opts"] = wsOpts
+
+ case "grpc":
+ grpcOpts := make(map[string]any)
+ grpcOpts["grpc-service-name"] = query.Get("serviceName")
+ proxy["grpc-opts"] = grpcOpts
+ }
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/lru/lrucache.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/lru/lrucache.go
new file mode 100644
index 0000000..4afe8e0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/lru/lrucache.go
@@ -0,0 +1,291 @@
+package lru
+
+// Modified by https://github.com/die-net/lrucache
+
+import (
+ "sync"
+ "time"
+
+ list "github.com/bahlo/generic-list-go"
+ "github.com/samber/lo"
+)
+
+// Option is part of Functional Options Pattern
+type Option[K comparable, V any] func(*LruCache[K, V])
+
+// EvictCallback is used to get a callback when a cache entry is evicted
+type EvictCallback[K comparable, V any] func(key K, value V)
+
+// WithEvict set the evict callback
+func WithEvict[K comparable, V any](cb EvictCallback[K, V]) Option[K, V] {
+ return func(l *LruCache[K, V]) {
+ l.onEvict = cb
+ }
+}
+
+// WithUpdateAgeOnGet update expires when Get element
+func WithUpdateAgeOnGet[K comparable, V any]() Option[K, V] {
+ return func(l *LruCache[K, V]) {
+ l.updateAgeOnGet = true
+ }
+}
+
+// WithAge defined element max age (second)
+func WithAge[K comparable, V any](maxAge int64) Option[K, V] {
+ return func(l *LruCache[K, V]) {
+ l.maxAge = maxAge
+ }
+}
+
+// WithSize defined max length of LruCache
+func WithSize[K comparable, V any](maxSize int) Option[K, V] {
+ return func(l *LruCache[K, V]) {
+ l.maxSize = maxSize
+ }
+}
+
+// WithStale decide whether Stale return is enabled.
+// If this feature is enabled, element will not get Evicted according to `WithAge`.
+func WithStale[K comparable, V any](stale bool) Option[K, V] {
+ return func(l *LruCache[K, V]) {
+ l.staleReturn = stale
+ }
+}
+
+// LruCache is a thread-safe, in-memory lru-cache that evicts the
+// least recently used entries from memory when (if set) the entries are
+// older than maxAge (in seconds). Use the New constructor to create one.
+type LruCache[K comparable, V any] struct {
+ maxAge int64
+ maxSize int
+ mu sync.Mutex
+ cache map[K]*list.Element[*entry[K, V]]
+ lru *list.List[*entry[K, V]] // Front is least-recent
+ updateAgeOnGet bool
+ staleReturn bool
+ onEvict EvictCallback[K, V]
+}
+
+// New creates an LruCache
+func New[K comparable, V any](options ...Option[K, V]) *LruCache[K, V] {
+ lc := &LruCache[K, V]{}
+ lc.Clear()
+
+ for _, option := range options {
+ option(lc)
+ }
+
+ return lc
+}
+
+func (c *LruCache[K, V]) Clear() {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+
+ c.lru = list.New[*entry[K, V]]()
+ c.cache = make(map[K]*list.Element[*entry[K, V]])
+}
+
+// Get returns any representation of a cached response and a bool
+// set to true if the key was found.
+func (c *LruCache[K, V]) Get(key K) (V, bool) {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+
+ el := c.get(key)
+ if el == nil {
+ return lo.Empty[V](), false
+ }
+ value := el.value
+
+ return value, true
+}
+
+func (c *LruCache[K, V]) GetOrStore(key K, constructor func() V) (V, bool) {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+
+ el := c.get(key)
+ if el == nil {
+ value := constructor()
+ c.set(key, value)
+ return value, false
+ }
+ value := el.value
+
+ return value, true
+}
+
+// GetWithExpire returns any representation of a cached response,
+// a time.Time Give expected expires,
+// and a bool set to true if the key was found.
+// This method will NOT check the maxAge of element and will NOT update the expires.
+func (c *LruCache[K, V]) GetWithExpire(key K) (V, time.Time, bool) {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+
+ el := c.get(key)
+ if el == nil {
+ return lo.Empty[V](), time.Time{}, false
+ }
+
+ return el.value, time.Unix(el.expires, 0), true
+}
+
+// Exist returns if key exist in cache but not put item to the head of linked list
+func (c *LruCache[K, V]) Exist(key K) bool {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+
+ _, ok := c.cache[key]
+ return ok
+}
+
+// Set stores any representation of a response for a given key.
+func (c *LruCache[K, V]) Set(key K, value V) {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+
+ c.set(key, value)
+}
+
+func (c *LruCache[K, V]) set(key K, value V) {
+ expires := int64(0)
+ if c.maxAge > 0 {
+ expires = time.Now().Unix() + c.maxAge
+ }
+ c.setWithExpire(key, value, time.Unix(expires, 0))
+}
+
+// SetWithExpire stores any representation of a response for a given key and given expires.
+// The expires time will round to second.
+func (c *LruCache[K, V]) SetWithExpire(key K, value V, expires time.Time) {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+
+ c.setWithExpire(key, value, expires)
+}
+
+func (c *LruCache[K, V]) setWithExpire(key K, value V, expires time.Time) {
+ if le, ok := c.cache[key]; ok {
+ c.lru.MoveToBack(le)
+ e := le.Value
+ e.value = value
+ e.expires = expires.Unix()
+ } else {
+ e := &entry[K, V]{key: key, value: value, expires: expires.Unix()}
+ c.cache[key] = c.lru.PushBack(e)
+
+ if c.maxSize > 0 {
+ if elLen := c.lru.Len(); elLen > c.maxSize {
+ c.deleteElement(c.lru.Front())
+ }
+ }
+ }
+
+ c.maybeDeleteOldest()
+}
+
+// CloneTo clone and overwrite elements to another LruCache
+func (c *LruCache[K, V]) CloneTo(n *LruCache[K, V]) {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+
+ n.mu.Lock()
+ defer n.mu.Unlock()
+
+ n.lru = list.New[*entry[K, V]]()
+ n.cache = make(map[K]*list.Element[*entry[K, V]])
+
+ for e := c.lru.Front(); e != nil; e = e.Next() {
+ elm := e.Value
+ n.cache[elm.key] = n.lru.PushBack(elm)
+ }
+}
+
+func (c *LruCache[K, V]) get(key K) *entry[K, V] {
+ le, ok := c.cache[key]
+ if !ok {
+ return nil
+ }
+
+ if !c.staleReturn && c.maxAge > 0 && le.Value.expires <= time.Now().Unix() {
+ c.deleteElement(le)
+ c.maybeDeleteOldest()
+
+ return nil
+ }
+
+ c.lru.MoveToBack(le)
+ el := le.Value
+ if c.maxAge > 0 && c.updateAgeOnGet {
+ el.expires = time.Now().Unix() + c.maxAge
+ }
+ return el
+}
+
+// Delete removes the value associated with a key.
+func (c *LruCache[K, V]) Delete(key K) {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+
+ c.delete(key)
+}
+
+func (c *LruCache[K, V]) delete(key K) {
+ if le, ok := c.cache[key]; ok {
+ c.deleteElement(le)
+ }
+}
+
+func (c *LruCache[K, V]) maybeDeleteOldest() {
+ if !c.staleReturn && c.maxAge > 0 {
+ now := time.Now().Unix()
+ for le := c.lru.Front(); le != nil && le.Value.expires <= now; le = c.lru.Front() {
+ c.deleteElement(le)
+ }
+ }
+}
+
+func (c *LruCache[K, V]) deleteElement(le *list.Element[*entry[K, V]]) {
+ c.lru.Remove(le)
+ e := le.Value
+ delete(c.cache, e.key)
+ if c.onEvict != nil {
+ c.onEvict(e.key, e.value)
+ }
+}
+
+// Compute either sets the computed new value for the key or deletes
+// the value for the key. When the delete result of the valueFn function
+// is set to true, the value will be deleted, if it exists. When delete
+// is set to false, the value is updated to the newValue.
+// The ok result indicates whether value was computed and stored, thus, is
+// present in the map. The actual result contains the new value in cases where
+// the value was computed and stored.
+func (c *LruCache[K, V]) Compute(
+ key K,
+ valueFn func(oldValue V, loaded bool) (newValue V, delete bool),
+) (actual V, ok bool) {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+
+ if el := c.get(key); el != nil {
+ actual, ok = el.value, true
+ }
+ if newValue, del := valueFn(actual, ok); del {
+ if ok { // data not in cache, so needn't delete
+ c.delete(key)
+ }
+ return lo.Empty[V](), false
+ } else {
+ c.set(key, newValue)
+ return newValue, true
+ }
+}
+
+type entry[K comparable, V any] struct {
+ key K
+ value V
+ expires int64
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/lru/lrucache_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/lru/lrucache_test.go
new file mode 100644
index 0000000..340b3da
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/lru/lrucache_test.go
@@ -0,0 +1,184 @@
+package lru
+
+import (
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+)
+
+var entries = []struct {
+ key string
+ value string
+}{
+ {"1", "one"},
+ {"2", "two"},
+ {"3", "three"},
+ {"4", "four"},
+ {"5", "five"},
+}
+
+func TestLRUCache(t *testing.T) {
+ c := New[string, string]()
+
+ for _, e := range entries {
+ c.Set(e.key, e.value)
+ }
+
+ c.Delete("missing")
+ _, ok := c.Get("missing")
+ assert.False(t, ok)
+
+ for _, e := range entries {
+ value, ok := c.Get(e.key)
+ if assert.True(t, ok) {
+ assert.Equal(t, e.value, value)
+ }
+ }
+
+ for _, e := range entries {
+ c.Delete(e.key)
+
+ _, ok := c.Get(e.key)
+ assert.False(t, ok)
+ }
+}
+
+func TestLRUMaxAge(t *testing.T) {
+ c := New[string, string](WithAge[string, string](86400))
+
+ now := time.Now().Unix()
+ expected := now + 86400
+
+ // Add one expired entry
+ c.Set("foo", "bar")
+ c.lru.Back().Value.expires = now
+
+ // Reset
+ c.Set("foo", "bar")
+ e := c.lru.Back().Value
+ assert.True(t, e.expires >= now)
+ c.lru.Back().Value.expires = now
+
+ // Set a few and verify expiration times
+ for _, s := range entries {
+ c.Set(s.key, s.value)
+ e := c.lru.Back().Value
+ assert.True(t, e.expires >= expected && e.expires <= expected+10)
+ }
+
+ // Make sure we can get them all
+ for _, s := range entries {
+ _, ok := c.Get(s.key)
+ assert.True(t, ok)
+ }
+
+ // Expire all entries
+ for _, s := range entries {
+ le, ok := c.cache[s.key]
+ if assert.True(t, ok) {
+ le.Value.expires = now
+ }
+ }
+
+ // Get one expired entry, which should clear all expired entries
+ _, ok := c.Get("3")
+ assert.False(t, ok)
+ assert.Equal(t, c.lru.Len(), 0)
+}
+
+func TestLRUpdateOnGet(t *testing.T) {
+ c := New[string, string](WithAge[string, string](86400), WithUpdateAgeOnGet[string, string]())
+
+ now := time.Now().Unix()
+ expires := now + 86400/2
+
+ // Add one expired entry
+ c.Set("foo", "bar")
+ c.lru.Back().Value.expires = expires
+
+ _, ok := c.Get("foo")
+ assert.True(t, ok)
+ assert.True(t, c.lru.Back().Value.expires > expires)
+}
+
+func TestMaxSize(t *testing.T) {
+ c := New[string, string](WithSize[string, string](2))
+ // Add one expired entry
+ c.Set("foo", "bar")
+ _, ok := c.Get("foo")
+ assert.True(t, ok)
+
+ c.Set("bar", "foo")
+ c.Set("baz", "foo")
+
+ _, ok = c.Get("foo")
+ assert.False(t, ok)
+}
+
+func TestExist(t *testing.T) {
+ c := New[int, int](WithSize[int, int](1))
+ c.Set(1, 2)
+ assert.True(t, c.Exist(1))
+ c.Set(2, 3)
+ assert.False(t, c.Exist(1))
+}
+
+func TestEvict(t *testing.T) {
+ temp := 0
+ evict := func(key int, value int) {
+ temp = key + value
+ }
+
+ c := New[int, int](WithEvict[int, int](evict), WithSize[int, int](1))
+ c.Set(1, 2)
+ c.Set(2, 3)
+
+ assert.Equal(t, temp, 3)
+}
+
+func TestSetWithExpire(t *testing.T) {
+ c := New[int, *struct{}](WithAge[int, *struct{}](1))
+ now := time.Now().Unix()
+
+ tenSecBefore := time.Unix(now-10, 0)
+ c.SetWithExpire(1, &struct{}{}, tenSecBefore)
+
+ // res is expected not to exist, and expires should be empty time.Time
+ res, expires, exist := c.GetWithExpire(1)
+
+ assert.True(t, nil == res)
+ assert.Equal(t, time.Time{}, expires)
+ assert.Equal(t, false, exist)
+}
+
+func TestStale(t *testing.T) {
+ c := New[int, int](WithAge[int, int](1), WithStale[int, int](true))
+ now := time.Now().Unix()
+
+ tenSecBefore := time.Unix(now-10, 0)
+ c.SetWithExpire(1, 2, tenSecBefore)
+
+ res, expires, exist := c.GetWithExpire(1)
+ assert.Equal(t, 2, res)
+ assert.Equal(t, tenSecBefore, expires)
+ assert.Equal(t, true, exist)
+}
+
+func TestCloneTo(t *testing.T) {
+ o := New[string, int](WithSize[string, int](10))
+ o.Set("1", 1)
+ o.Set("2", 2)
+
+ n := New[string, int](WithSize[string, int](2))
+ n.Set("3", 3)
+ n.Set("4", 4)
+
+ o.CloneTo(n)
+
+ assert.False(t, n.Exist("3"))
+ assert.True(t, n.Exist("1"))
+
+ n.Set("5", 5)
+ assert.False(t, n.Exist("1"))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/murmur3/murmur.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/murmur3/murmur.go
new file mode 100644
index 0000000..f447029
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/murmur3/murmur.go
@@ -0,0 +1,50 @@
+package murmur3
+
+type bmixer interface {
+ bmix(p []byte) (tail []byte)
+ Size() (n int)
+ reset()
+}
+
+type digest struct {
+ clen int // Digested input cumulative length.
+ tail []byte // 0 to Size()-1 bytes view of `buf'.
+ buf [16]byte // Expected (but not required) to be Size() large.
+ seed uint32 // Seed for initializing the hash.
+ bmixer
+}
+
+func (d *digest) BlockSize() int { return 1 }
+
+func (d *digest) Write(p []byte) (n int, err error) {
+ n = len(p)
+ d.clen += n
+
+ if len(d.tail) > 0 {
+ // Stick back pending bytes.
+ nfree := d.Size() - len(d.tail) // nfree ∈ [1, d.Size()-1].
+ if nfree < len(p) {
+ // One full block can be formed.
+ block := append(d.tail, p[:nfree]...)
+ p = p[nfree:]
+ _ = d.bmix(block) // No tail.
+ } else {
+ // Tail's buf is large enough to prevent reallocs.
+ p = append(d.tail, p...)
+ }
+ }
+
+ d.tail = d.bmix(p)
+
+ // Keep own copy of the 0 to Size()-1 pending bytes.
+ nn := copy(d.buf[:], d.tail)
+ d.tail = d.buf[:nn]
+
+ return n, nil
+}
+
+func (d *digest) Reset() {
+ d.clen = 0
+ d.tail = nil
+ d.bmixer.reset()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/murmur3/murmur32.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/murmur3/murmur32.go
new file mode 100644
index 0000000..e52b793
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/murmur3/murmur32.go
@@ -0,0 +1,144 @@
+package murmur3
+
+// https://github.com/spaolacci/murmur3/blob/master/murmur32.go
+
+import (
+ "hash"
+ "math/bits"
+ "unsafe"
+)
+
+// Make sure interfaces are correctly implemented.
+var (
+ _ hash.Hash32 = new(digest32)
+ _ bmixer = new(digest32)
+)
+
+const (
+ c1_32 uint32 = 0xcc9e2d51
+ c2_32 uint32 = 0x1b873593
+)
+
+// digest32 represents a partial evaluation of a 32 bites hash.
+type digest32 struct {
+ digest
+ h1 uint32 // Unfinalized running hash.
+}
+
+// New32 returns new 32-bit hasher
+func New32() hash.Hash32 { return New32WithSeed(0) }
+
+// New32WithSeed returns new 32-bit hasher set with explicit seed value
+func New32WithSeed(seed uint32) hash.Hash32 {
+ d := new(digest32)
+ d.seed = seed
+ d.bmixer = d
+ d.Reset()
+ return d
+}
+
+func (d *digest32) Size() int { return 4 }
+
+func (d *digest32) reset() { d.h1 = d.seed }
+
+func (d *digest32) Sum(b []byte) []byte {
+ h := d.Sum32()
+ return append(b, byte(h>>24), byte(h>>16), byte(h>>8), byte(h))
+}
+
+// Digest as many blocks as possible.
+func (d *digest32) bmix(p []byte) (tail []byte) {
+ h1 := d.h1
+
+ nblocks := len(p) / 4
+ for i := 0; i < nblocks; i++ {
+ k1 := *(*uint32)(unsafe.Pointer(&p[i*4]))
+
+ k1 *= c1_32
+ k1 = bits.RotateLeft32(k1, 15)
+ k1 *= c2_32
+
+ h1 ^= k1
+ h1 = bits.RotateLeft32(h1, 13)
+ h1 = h1*4 + h1 + 0xe6546b64
+ }
+ d.h1 = h1
+ return p[nblocks*d.Size():]
+}
+
+func (d *digest32) Sum32() (h1 uint32) {
+ h1 = d.h1
+
+ var k1 uint32
+ switch len(d.tail) & 3 {
+ case 3:
+ k1 ^= uint32(d.tail[2]) << 16
+ fallthrough
+ case 2:
+ k1 ^= uint32(d.tail[1]) << 8
+ fallthrough
+ case 1:
+ k1 ^= uint32(d.tail[0])
+ k1 *= c1_32
+ k1 = bits.RotateLeft32(k1, 15)
+ k1 *= c2_32
+ h1 ^= k1
+ }
+
+ h1 ^= uint32(d.clen)
+
+ h1 ^= h1 >> 16
+ h1 *= 0x85ebca6b
+ h1 ^= h1 >> 13
+ h1 *= 0xc2b2ae35
+ h1 ^= h1 >> 16
+
+ return h1
+}
+
+func Sum32(data []byte) uint32 { return Sum32WithSeed(data, 0) }
+
+func Sum32WithSeed(data []byte, seed uint32) uint32 {
+ h1 := seed
+
+ nblocks := len(data) / 4
+ for i := 0; i < nblocks; i++ {
+ k1 := *(*uint32)(unsafe.Pointer(&data[i*4]))
+
+ k1 *= c1_32
+ k1 = bits.RotateLeft32(k1, 15)
+ k1 *= c2_32
+
+ h1 ^= k1
+ h1 = bits.RotateLeft32(h1, 13)
+ h1 = h1*4 + h1 + 0xe6546b64
+ }
+
+ tail := data[nblocks*4:]
+
+ var k1 uint32
+ switch len(tail) & 3 {
+ case 3:
+ k1 ^= uint32(tail[2]) << 16
+ fallthrough
+ case 2:
+ k1 ^= uint32(tail[1]) << 8
+ fallthrough
+ case 1:
+ k1 ^= uint32(tail[0])
+ k1 *= c1_32
+ k1 = bits.RotateLeft32(k1, 15)
+ k1 *= c2_32
+ h1 ^= k1
+ }
+
+ h1 ^= uint32(len(data))
+
+ h1 ^= h1 >> 16
+ h1 *= 0x85ebca6b
+ h1 ^= h1 >> 13
+ h1 *= 0xc2b2ae35
+ h1 ^= h1 >> 16
+
+ return h1
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/addr.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/addr.go
new file mode 100644
index 0000000..4efaefc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/addr.go
@@ -0,0 +1,36 @@
+package net
+
+import (
+ "net"
+)
+
+type CustomAddr interface {
+ net.Addr
+ RawAddr() net.Addr
+}
+
+type customAddr struct {
+ networkStr string
+ addrStr string
+ rawAddr net.Addr
+}
+
+func (a customAddr) Network() string {
+ return a.networkStr
+}
+
+func (a customAddr) String() string {
+ return a.addrStr
+}
+
+func (a customAddr) RawAddr() net.Addr {
+ return a.rawAddr
+}
+
+func NewCustomAddr(networkStr string, addrStr string, rawAddr net.Addr) CustomAddr {
+ return customAddr{
+ networkStr: networkStr,
+ addrStr: addrStr,
+ rawAddr: rawAddr,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/bind.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/bind.go
new file mode 100644
index 0000000..231c24c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/bind.go
@@ -0,0 +1,45 @@
+package net
+
+import "net"
+
+type bindPacketConn struct {
+ EnhancePacketConn
+ rAddr net.Addr
+}
+
+func (c *bindPacketConn) Read(b []byte) (n int, err error) {
+ n, _, err = c.EnhancePacketConn.ReadFrom(b)
+ return n, err
+}
+
+func (c *bindPacketConn) WaitRead() (data []byte, put func(), err error) {
+ data, put, _, err = c.EnhancePacketConn.WaitReadFrom()
+ return
+}
+
+func (c *bindPacketConn) Write(b []byte) (n int, err error) {
+ return c.EnhancePacketConn.WriteTo(b, c.rAddr)
+}
+
+func (c *bindPacketConn) RemoteAddr() net.Addr {
+ return c.rAddr
+}
+
+func (c *bindPacketConn) LocalAddr() net.Addr {
+ if c.EnhancePacketConn.LocalAddr() == nil {
+ return &net.UDPAddr{IP: net.IPv4zero, Port: 0}
+ } else {
+ return c.EnhancePacketConn.LocalAddr()
+ }
+}
+
+func (c *bindPacketConn) Upstream() any {
+ return c.EnhancePacketConn
+}
+
+func NewBindPacketConn(pc net.PacketConn, rAddr net.Addr) net.Conn {
+ return &bindPacketConn{
+ EnhancePacketConn: NewEnhancePacketConn(pc),
+ rAddr: rAddr,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/bufconn.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/bufconn.go
new file mode 100644
index 0000000..b7e98e0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/bufconn.go
@@ -0,0 +1,106 @@
+package net
+
+import (
+ "bufio"
+ "net"
+
+ "github.com/metacubex/mihomo/common/buf"
+)
+
+var _ ExtendedConn = (*BufferedConn)(nil)
+
+type BufferedConn struct {
+ r *bufio.Reader
+ ExtendedConn
+ peeked bool
+}
+
+func NewBufferedConn(c net.Conn) *BufferedConn {
+ if bc, ok := c.(*BufferedConn); ok {
+ return bc
+ }
+ return &BufferedConn{bufio.NewReader(c), NewExtendedConn(c), false}
+}
+
+func WarpConnWithBioReader(c net.Conn, br *bufio.Reader) net.Conn {
+ if br != nil && br.Buffered() > 0 {
+ if bc, ok := c.(*BufferedConn); ok && bc.r == br {
+ return bc
+ }
+ return &BufferedConn{br, NewExtendedConn(c), true}
+ }
+ return c
+}
+
+// Reader returns the internal bufio.Reader.
+func (c *BufferedConn) Reader() *bufio.Reader {
+ return c.r
+}
+
+func (c *BufferedConn) ResetPeeked() {
+ c.peeked = false
+}
+
+func (c *BufferedConn) Peeked() bool {
+ return c.peeked
+}
+
+// Peek returns the next n bytes without advancing the reader.
+func (c *BufferedConn) Peek(n int) ([]byte, error) {
+ c.peeked = true
+ return c.r.Peek(n)
+}
+
+func (c *BufferedConn) Discard(n int) (discarded int, err error) {
+ return c.r.Discard(n)
+}
+
+func (c *BufferedConn) Read(p []byte) (int, error) {
+ return c.r.Read(p)
+}
+
+func (c *BufferedConn) ReadByte() (byte, error) {
+ return c.r.ReadByte()
+}
+
+func (c *BufferedConn) UnreadByte() error {
+ return c.r.UnreadByte()
+}
+
+func (c *BufferedConn) Buffered() int {
+ return c.r.Buffered()
+}
+
+func (c *BufferedConn) ReadBuffer(buffer *buf.Buffer) (err error) {
+ if c.r != nil && c.r.Buffered() > 0 {
+ _, err = buffer.ReadOnceFrom(c.r)
+ return
+ }
+ return c.ExtendedConn.ReadBuffer(buffer)
+}
+
+func (c *BufferedConn) ReadCached() *buf.Buffer { // call in sing/common/bufio.Copy
+ if c.r != nil && c.r.Buffered() > 0 {
+ length := c.r.Buffered()
+ b, _ := c.r.Peek(length)
+ _, _ = c.r.Discard(length)
+ return buf.As(b)
+ }
+ c.r = nil // drop bufio.Reader to let gc can clean up its internal buf
+ return nil
+}
+
+func (c *BufferedConn) Upstream() any {
+ return c.ExtendedConn
+}
+
+func (c *BufferedConn) ReaderReplaceable() bool {
+ if c.r != nil && c.r.Buffered() > 0 {
+ return false
+ }
+ return true
+}
+
+func (c *BufferedConn) WriterReplaceable() bool {
+ return true
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/bufconn_unsafe.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/bufconn_unsafe.go
new file mode 100644
index 0000000..349321d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/bufconn_unsafe.go
@@ -0,0 +1,34 @@
+package net
+
+import (
+ "io"
+ "unsafe"
+)
+
+// bufioReader copy from stdlib bufio/bufio.go
+// This structure has remained unchanged from go1.5 to go1.21.
+type bufioReader struct {
+ buf []byte
+ rd io.Reader // reader provided by the client
+ r, w int // buf read and write positions
+ err error
+ lastByte int // last byte read for UnreadByte; -1 means invalid
+ lastRuneSize int // size of last rune read for UnreadRune; -1 means invalid
+}
+
+func (c *BufferedConn) AppendData(buf []byte) (ok bool) {
+ b := (*bufioReader)(unsafe.Pointer(c.r))
+ pos := len(b.buf) - b.w - len(buf)
+ if pos >= -b.r { // len(b.buf)-(b.w - b.r) >= len(buf)
+ if pos < 0 { // len(b.buf)-b.w < len(buf)
+ // Slide existing data to beginning.
+ copy(b.buf, b.buf[b.r:b.w])
+ b.w -= b.r
+ b.r = 0
+ }
+
+ b.w += copy(b.buf[b.w:], buf)
+ return true
+ }
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/cached.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/cached.go
new file mode 100644
index 0000000..fb605b7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/cached.go
@@ -0,0 +1,49 @@
+package net
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/common/buf"
+)
+
+var _ ExtendedConn = (*CachedConn)(nil)
+
+type CachedConn struct {
+ ExtendedConn
+ data []byte
+}
+
+func NewCachedConn(c net.Conn, data []byte) *CachedConn {
+ return &CachedConn{NewExtendedConn(c), data}
+}
+
+func (c *CachedConn) Read(b []byte) (n int, err error) {
+ if len(c.data) > 0 {
+ n = copy(b, c.data)
+ c.data = c.data[n:]
+ return
+ }
+ return c.ExtendedConn.Read(b)
+}
+
+func (c *CachedConn) ReadCached() *buf.Buffer { // call in sing/common/bufio.Copy
+ if len(c.data) > 0 {
+ return buf.As(c.data)
+ }
+ return nil
+}
+
+func (c *CachedConn) Upstream() any {
+ return c.ExtendedConn
+}
+
+func (c *CachedConn) ReaderReplaceable() bool {
+ if len(c.data) > 0 {
+ return false
+ }
+ return true
+}
+
+func (c *CachedConn) WriterReplaceable() bool {
+ return true
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/context.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/context.go
new file mode 100644
index 0000000..917028d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/context.go
@@ -0,0 +1,31 @@
+package net
+
+import (
+ "context"
+ "net"
+)
+
+// SetupContextForConn is a helper function that starts connection I/O interrupter goroutine.
+func SetupContextForConn(ctx context.Context, conn net.Conn) (done func(*error)) {
+ var (
+ quit = make(chan struct{})
+ interrupt = make(chan error, 1)
+ )
+ go func() {
+ select {
+ case <-quit:
+ interrupt <- nil
+ case <-ctx.Done():
+ // Close the connection, discarding the error
+ _ = conn.Close()
+ interrupt <- ctx.Err()
+ }
+ }()
+ return func(inputErr *error) {
+ close(quit)
+ if ctxErr := <-interrupt; ctxErr != nil && inputErr != nil {
+ // Return context error to user.
+ inputErr = &ctxErr
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/conn.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/conn.go
new file mode 100644
index 0000000..fdf9334
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/conn.go
@@ -0,0 +1,154 @@
+package deadline
+
+import (
+ "net"
+ "os"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+
+ "github.com/sagernet/sing/common/buf"
+ "github.com/sagernet/sing/common/bufio"
+ "github.com/sagernet/sing/common/network"
+)
+
+type connReadResult struct {
+ buffer []byte
+ err error
+}
+
+type Conn struct {
+ network.ExtendedConn
+ deadline atomic.TypedValue[time.Time]
+ pipeDeadline pipeDeadline
+ disablePipe atomic.Bool
+ inRead atomic.Bool
+ resultCh chan *connReadResult
+}
+
+func IsConn(conn any) bool {
+ _, ok := conn.(*Conn)
+ return ok
+}
+
+func NewConn(conn net.Conn) *Conn {
+ c := &Conn{
+ ExtendedConn: bufio.NewExtendedConn(conn),
+ pipeDeadline: makePipeDeadline(),
+ resultCh: make(chan *connReadResult, 1),
+ }
+ c.resultCh <- nil
+ return c
+}
+
+func (c *Conn) Read(p []byte) (n int, err error) {
+ select {
+ case result := <-c.resultCh:
+ if result != nil {
+ n = copy(p, result.buffer)
+ err = result.err
+ if n >= len(result.buffer) {
+ c.resultCh <- nil // finish cache read
+ } else {
+ result.buffer = result.buffer[n:]
+ c.resultCh <- result // push back for next call
+ }
+ return
+ } else {
+ c.resultCh <- nil
+ break
+ }
+ case <-c.pipeDeadline.wait():
+ return 0, os.ErrDeadlineExceeded
+ }
+
+ if c.disablePipe.Load() {
+ return c.ExtendedConn.Read(p)
+ } else if c.deadline.Load().IsZero() {
+ c.inRead.Store(true)
+ defer c.inRead.Store(false)
+ return c.ExtendedConn.Read(p)
+ }
+
+ <-c.resultCh
+ go c.pipeRead(len(p))
+
+ return c.Read(p)
+}
+
+func (c *Conn) pipeRead(size int) {
+ buffer := make([]byte, size)
+ n, err := c.ExtendedConn.Read(buffer)
+ buffer = buffer[:n]
+ c.resultCh <- &connReadResult{
+ buffer: buffer,
+ err: err,
+ }
+}
+
+func (c *Conn) ReadBuffer(buffer *buf.Buffer) (err error) {
+ select {
+ case result := <-c.resultCh:
+ if result != nil {
+ n, _ := buffer.Write(result.buffer)
+ err = result.err
+
+ if n >= len(result.buffer) {
+ c.resultCh <- nil // finish cache read
+ } else {
+ result.buffer = result.buffer[n:]
+ c.resultCh <- result // push back for next call
+ }
+ return
+ } else {
+ c.resultCh <- nil
+ break
+ }
+ case <-c.pipeDeadline.wait():
+ return os.ErrDeadlineExceeded
+ }
+
+ if c.disablePipe.Load() {
+ return c.ExtendedConn.ReadBuffer(buffer)
+ } else if c.deadline.Load().IsZero() {
+ c.inRead.Store(true)
+ defer c.inRead.Store(false)
+ return c.ExtendedConn.ReadBuffer(buffer)
+ }
+
+ <-c.resultCh
+ go c.pipeRead(buffer.FreeLen())
+
+ return c.ReadBuffer(buffer)
+}
+
+func (c *Conn) SetReadDeadline(t time.Time) error {
+ if c.disablePipe.Load() {
+ return c.ExtendedConn.SetReadDeadline(t)
+ } else if c.inRead.Load() {
+ c.disablePipe.Store(true)
+ return c.ExtendedConn.SetReadDeadline(t)
+ }
+ c.deadline.Store(t)
+ c.pipeDeadline.set(t)
+ return nil
+}
+
+func (c *Conn) ReaderReplaceable() bool {
+ select {
+ case result := <-c.resultCh:
+ c.resultCh <- result
+ if result != nil {
+ return false // cache reading
+ } else {
+ break
+ }
+ default:
+ return false // pipe reading
+ }
+ return c.disablePipe.Load() || c.deadline.Load().IsZero()
+}
+
+func (c *Conn) Upstream() any {
+ return c.ExtendedConn
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/packet.go
new file mode 100644
index 0000000..6704319
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/packet.go
@@ -0,0 +1,154 @@
+package deadline
+
+import (
+ "net"
+ "os"
+ "runtime"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ "github.com/metacubex/mihomo/common/net/packet"
+)
+
+type readResult struct {
+ data []byte
+ addr net.Addr
+ err error
+}
+
+type NetPacketConn struct {
+ net.PacketConn
+ deadline atomic.TypedValue[time.Time]
+ pipeDeadline pipeDeadline
+ disablePipe atomic.Bool
+ inRead atomic.Bool
+ resultCh chan any
+}
+
+func NewNetPacketConn(pc net.PacketConn) net.PacketConn {
+ npc := &NetPacketConn{
+ PacketConn: pc,
+ pipeDeadline: makePipeDeadline(),
+ resultCh: make(chan any, 1),
+ }
+ npc.resultCh <- nil
+ if enhancePC, isEnhance := pc.(packet.EnhancePacketConn); isEnhance {
+ epc := &EnhancePacketConn{
+ NetPacketConn: npc,
+ enhancePacketConn: enhancePacketConn{
+ netPacketConn: npc,
+ enhancePacketConn: enhancePC,
+ },
+ }
+ if singPC, isSingPC := pc.(packet.SingPacketConn); isSingPC {
+ return &EnhanceSingPacketConn{
+ EnhancePacketConn: epc,
+ singPacketConn: singPacketConn{
+ netPacketConn: npc,
+ singPacketConn: singPC,
+ },
+ }
+ }
+ return epc
+ }
+ if singPC, isSingPC := pc.(packet.SingPacketConn); isSingPC {
+ return &SingPacketConn{
+ NetPacketConn: npc,
+ singPacketConn: singPacketConn{
+ netPacketConn: npc,
+ singPacketConn: singPC,
+ },
+ }
+ }
+ return npc
+}
+
+func (c *NetPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
+FOR:
+ for {
+ select {
+ case result := <-c.resultCh:
+ if result != nil {
+ if result, ok := result.(*readResult); ok {
+ n = copy(p, result.data)
+ addr = result.addr
+ err = result.err
+ c.resultCh <- nil // finish cache read
+ return
+ }
+ c.resultCh <- result // another type of read
+ runtime.Gosched() // allowing other goroutines to run
+ continue FOR
+ } else {
+ c.resultCh <- nil
+ break FOR
+ }
+ case <-c.pipeDeadline.wait():
+ return 0, nil, os.ErrDeadlineExceeded
+ }
+ }
+
+ if c.disablePipe.Load() {
+ return c.PacketConn.ReadFrom(p)
+ } else if c.deadline.Load().IsZero() {
+ c.inRead.Store(true)
+ defer c.inRead.Store(false)
+ n, addr, err = c.PacketConn.ReadFrom(p)
+ return
+ }
+
+ <-c.resultCh
+ go c.pipeReadFrom(len(p))
+
+ return c.ReadFrom(p)
+}
+
+func (c *NetPacketConn) pipeReadFrom(size int) {
+ buffer := make([]byte, size)
+ n, addr, err := c.PacketConn.ReadFrom(buffer)
+ buffer = buffer[:n]
+ result := &readResult{}
+ result.data = buffer
+ result.addr = addr
+ result.err = err
+ c.resultCh <- result
+}
+
+func (c *NetPacketConn) SetReadDeadline(t time.Time) error {
+ if c.disablePipe.Load() {
+ return c.PacketConn.SetReadDeadline(t)
+ } else if c.inRead.Load() {
+ c.disablePipe.Store(true)
+ return c.PacketConn.SetReadDeadline(t)
+ }
+ c.deadline.Store(t)
+ c.pipeDeadline.set(t)
+ return nil
+}
+
+func (c *NetPacketConn) ReaderReplaceable() bool {
+ select {
+ case result := <-c.resultCh:
+ c.resultCh <- result
+ if result != nil {
+ return false // cache reading
+ } else {
+ break
+ }
+ default:
+ return false // pipe reading
+ }
+ return c.disablePipe.Load() || c.deadline.Load().IsZero()
+}
+
+func (c *NetPacketConn) WriterReplaceable() bool {
+ return true
+}
+
+func (c *NetPacketConn) Upstream() any {
+ return c.PacketConn
+}
+
+func (c *NetPacketConn) NeedAdditionalReadDeadline() bool {
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/packet_enhance.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/packet_enhance.go
new file mode 100644
index 0000000..3e314fb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/packet_enhance.go
@@ -0,0 +1,83 @@
+package deadline
+
+import (
+ "net"
+ "os"
+ "runtime"
+
+ "github.com/metacubex/mihomo/common/net/packet"
+)
+
+type EnhancePacketConn struct {
+ *NetPacketConn
+ enhancePacketConn
+}
+
+var _ packet.EnhancePacketConn = (*EnhancePacketConn)(nil)
+
+func NewEnhancePacketConn(pc packet.EnhancePacketConn) packet.EnhancePacketConn {
+ return NewNetPacketConn(pc).(packet.EnhancePacketConn)
+}
+
+type enhanceReadResult struct {
+ data []byte
+ put func()
+ addr net.Addr
+ err error
+}
+
+type enhancePacketConn struct {
+ netPacketConn *NetPacketConn
+ enhancePacketConn packet.EnhancePacketConn
+}
+
+func (c *enhancePacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+FOR:
+ for {
+ select {
+ case result := <-c.netPacketConn.resultCh:
+ if result != nil {
+ if result, ok := result.(*enhanceReadResult); ok {
+ data = result.data
+ put = result.put
+ addr = result.addr
+ err = result.err
+ c.netPacketConn.resultCh <- nil // finish cache read
+ return
+ }
+ c.netPacketConn.resultCh <- result // another type of read
+ runtime.Gosched() // allowing other goroutines to run
+ continue FOR
+ } else {
+ c.netPacketConn.resultCh <- nil
+ break FOR
+ }
+ case <-c.netPacketConn.pipeDeadline.wait():
+ return nil, nil, nil, os.ErrDeadlineExceeded
+ }
+ }
+
+ if c.netPacketConn.disablePipe.Load() {
+ return c.enhancePacketConn.WaitReadFrom()
+ } else if c.netPacketConn.deadline.Load().IsZero() {
+ c.netPacketConn.inRead.Store(true)
+ defer c.netPacketConn.inRead.Store(false)
+ data, put, addr, err = c.enhancePacketConn.WaitReadFrom()
+ return
+ }
+
+ <-c.netPacketConn.resultCh
+ go c.pipeWaitReadFrom()
+
+ return c.WaitReadFrom()
+}
+
+func (c *enhancePacketConn) pipeWaitReadFrom() {
+ data, put, addr, err := c.enhancePacketConn.WaitReadFrom()
+ result := &enhanceReadResult{}
+ result.data = data
+ result.put = put
+ result.addr = addr
+ result.err = err
+ c.netPacketConn.resultCh <- result
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/packet_sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/packet_sing.go
new file mode 100644
index 0000000..d54748b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/packet_sing.go
@@ -0,0 +1,179 @@
+package deadline
+
+import (
+ "os"
+ "runtime"
+
+ "github.com/metacubex/mihomo/common/net/packet"
+
+ "github.com/sagernet/sing/common/buf"
+ "github.com/sagernet/sing/common/bufio"
+ M "github.com/sagernet/sing/common/metadata"
+ N "github.com/sagernet/sing/common/network"
+)
+
+type SingPacketConn struct {
+ *NetPacketConn
+ singPacketConn
+}
+
+var _ packet.SingPacketConn = (*SingPacketConn)(nil)
+
+func NewSingPacketConn(pc packet.SingPacketConn) packet.SingPacketConn {
+ return NewNetPacketConn(pc).(packet.SingPacketConn)
+}
+
+type EnhanceSingPacketConn struct {
+ *EnhancePacketConn
+ singPacketConn
+}
+
+func NewEnhanceSingPacketConn(pc packet.EnhanceSingPacketConn) packet.EnhanceSingPacketConn {
+ return NewNetPacketConn(pc).(packet.EnhanceSingPacketConn)
+}
+
+var _ packet.EnhanceSingPacketConn = (*EnhanceSingPacketConn)(nil)
+
+type singReadResult struct {
+ buffer *buf.Buffer
+ destination M.Socksaddr
+ err error
+}
+
+type singPacketConn struct {
+ netPacketConn *NetPacketConn
+ singPacketConn packet.SingPacketConn
+}
+
+func (c *singPacketConn) ReadPacket(buffer *buf.Buffer) (destination M.Socksaddr, err error) {
+FOR:
+ for {
+ select {
+ case result := <-c.netPacketConn.resultCh:
+ if result != nil {
+ if result, ok := result.(*singReadResult); ok {
+ destination = result.destination
+ err = result.err
+ n, _ := buffer.Write(result.buffer.Bytes())
+ result.buffer.Advance(n)
+ if result.buffer.IsEmpty() {
+ result.buffer.Release()
+ }
+ c.netPacketConn.resultCh <- nil // finish cache read
+ return
+ }
+ c.netPacketConn.resultCh <- result // another type of read
+ runtime.Gosched() // allowing other goroutines to run
+ continue FOR
+ } else {
+ c.netPacketConn.resultCh <- nil
+ break FOR
+ }
+ case <-c.netPacketConn.pipeDeadline.wait():
+ return M.Socksaddr{}, os.ErrDeadlineExceeded
+ }
+ }
+
+ if c.netPacketConn.disablePipe.Load() {
+ return c.singPacketConn.ReadPacket(buffer)
+ } else if c.netPacketConn.deadline.Load().IsZero() {
+ c.netPacketConn.inRead.Store(true)
+ defer c.netPacketConn.inRead.Store(false)
+ destination, err = c.singPacketConn.ReadPacket(buffer)
+ return
+ }
+
+ <-c.netPacketConn.resultCh
+ go c.pipeReadPacket(buffer.FreeLen())
+
+ return c.ReadPacket(buffer)
+}
+
+func (c *singPacketConn) pipeReadPacket(pLen int) {
+ buffer := buf.NewSize(pLen)
+ destination, err := c.singPacketConn.ReadPacket(buffer)
+ result := &singReadResult{}
+ result.destination = destination
+ result.err = err
+ c.netPacketConn.resultCh <- result
+}
+
+func (c *singPacketConn) WritePacket(buffer *buf.Buffer, destination M.Socksaddr) error {
+ return c.singPacketConn.WritePacket(buffer, destination)
+}
+
+func (c *singPacketConn) CreateReadWaiter() (N.PacketReadWaiter, bool) {
+ prw, isReadWaiter := bufio.CreatePacketReadWaiter(c.singPacketConn)
+ if isReadWaiter {
+ return &singPacketReadWaiter{
+ netPacketConn: c.netPacketConn,
+ packetReadWaiter: prw,
+ }, true
+ }
+ return nil, false
+}
+
+var _ N.PacketReadWaiter = (*singPacketReadWaiter)(nil)
+
+type singPacketReadWaiter struct {
+ netPacketConn *NetPacketConn
+ packetReadWaiter N.PacketReadWaiter
+}
+
+type singWaitReadResult singReadResult
+
+func (c *singPacketReadWaiter) InitializeReadWaiter(options N.ReadWaitOptions) (needCopy bool) {
+ return c.packetReadWaiter.InitializeReadWaiter(options)
+}
+
+func (c *singPacketReadWaiter) WaitReadPacket() (buffer *buf.Buffer, destination M.Socksaddr, err error) {
+FOR:
+ for {
+ select {
+ case result := <-c.netPacketConn.resultCh:
+ if result != nil {
+ if result, ok := result.(*singWaitReadResult); ok {
+ buffer = result.buffer
+ destination = result.destination
+ err = result.err
+ c.netPacketConn.resultCh <- nil // finish cache read
+ return
+ }
+ c.netPacketConn.resultCh <- result // another type of read
+ runtime.Gosched() // allowing other goroutines to run
+ continue FOR
+ } else {
+ c.netPacketConn.resultCh <- nil
+ break FOR
+ }
+ case <-c.netPacketConn.pipeDeadline.wait():
+ return nil, M.Socksaddr{}, os.ErrDeadlineExceeded
+ }
+ }
+
+ if c.netPacketConn.disablePipe.Load() {
+ return c.packetReadWaiter.WaitReadPacket()
+ } else if c.netPacketConn.deadline.Load().IsZero() {
+ c.netPacketConn.inRead.Store(true)
+ defer c.netPacketConn.inRead.Store(false)
+ return c.packetReadWaiter.WaitReadPacket()
+ }
+
+ <-c.netPacketConn.resultCh
+ go c.pipeWaitReadPacket()
+
+ return c.WaitReadPacket()
+}
+
+func (c *singPacketReadWaiter) pipeWaitReadPacket() {
+ buffer, destination, err := c.packetReadWaiter.WaitReadPacket()
+ result := &singWaitReadResult{}
+ result.buffer = buffer
+ result.destination = destination
+ result.err = err
+ c.netPacketConn.resultCh <- result
+}
+
+func (c *singPacketReadWaiter) Upstream() any {
+ return c.packetReadWaiter
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/pipe.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/pipe.go
new file mode 100644
index 0000000..2cccfb4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/pipe.go
@@ -0,0 +1,84 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package deadline
+
+import (
+ "sync"
+ "time"
+)
+
+// pipeDeadline is an abstraction for handling timeouts.
+type pipeDeadline struct {
+ mu sync.Mutex // Guards timer and cancel
+ timer *time.Timer
+ cancel chan struct{} // Must be non-nil
+}
+
+func makePipeDeadline() pipeDeadline {
+ return pipeDeadline{cancel: make(chan struct{})}
+}
+
+// set sets the point in time when the deadline will time out.
+// A timeout event is signaled by closing the channel returned by waiter.
+// Once a timeout has occurred, the deadline can be refreshed by specifying a
+// t value in the future.
+//
+// A zero value for t prevents timeout.
+func (d *pipeDeadline) set(t time.Time) {
+ d.mu.Lock()
+ defer d.mu.Unlock()
+
+ if d.timer != nil && !d.timer.Stop() {
+ <-d.cancel // Wait for the timer callback to finish and close cancel
+ }
+ d.timer = nil
+
+ // Time is zero, then there is no deadline.
+ closed := isClosedChan(d.cancel)
+ if t.IsZero() {
+ if closed {
+ d.cancel = make(chan struct{})
+ }
+ return
+ }
+
+ // Time in the future, setup a timer to cancel in the future.
+ if dur := time.Until(t); dur > 0 {
+ if closed {
+ d.cancel = make(chan struct{})
+ }
+ d.timer = time.AfterFunc(dur, func() {
+ close(d.cancel)
+ })
+ return
+ }
+
+ // Time in the past, so close immediately.
+ if !closed {
+ close(d.cancel)
+ }
+}
+
+// wait returns a channel that is closed when the deadline is exceeded.
+func (d *pipeDeadline) wait() chan struct{} {
+ d.mu.Lock()
+ defer d.mu.Unlock()
+ return d.cancel
+}
+
+func isClosedChan(c <-chan struct{}) bool {
+ select {
+ case <-c:
+ return true
+ default:
+ return false
+ }
+}
+
+func makeFilledChan() chan struct{} {
+ ch := make(chan struct{}, 1)
+ ch <- struct{}{}
+ return ch
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/pipe_sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/pipe_sing.go
new file mode 100644
index 0000000..0f6d378
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/deadline/pipe_sing.go
@@ -0,0 +1,222 @@
+package deadline
+
+import (
+ "io"
+ "net"
+ "os"
+ "sync"
+ "time"
+
+ "github.com/sagernet/sing/common/buf"
+ N "github.com/sagernet/sing/common/network"
+)
+
+type pipeAddr struct{}
+
+func (pipeAddr) Network() string { return "pipe" }
+func (pipeAddr) String() string { return "pipe" }
+
+type pipe struct {
+ wrMu sync.Mutex // Serialize Write operations
+
+ // Used by local Read to interact with remote Write.
+ // Successful receive on rdRx is always followed by send on rdTx.
+ rdRx <-chan []byte
+ rdTx chan<- int
+
+ // Used by local Write to interact with remote Read.
+ // Successful send on wrTx is always followed by receive on wrRx.
+ wrTx chan<- []byte
+ wrRx <-chan int
+
+ once sync.Once // Protects closing localDone
+ localDone chan struct{}
+ remoteDone <-chan struct{}
+
+ readDeadline pipeDeadline
+ writeDeadline pipeDeadline
+
+ readWaitOptions N.ReadWaitOptions
+}
+
+// Pipe creates a synchronous, in-memory, full duplex
+// network connection; both ends implement the Conn interface.
+// Reads on one end are matched with writes on the other,
+// copying data directly between the two; there is no internal
+// buffering.
+func Pipe() (net.Conn, net.Conn) {
+ cb1 := make(chan []byte)
+ cb2 := make(chan []byte)
+ cn1 := make(chan int)
+ cn2 := make(chan int)
+ done1 := make(chan struct{})
+ done2 := make(chan struct{})
+
+ p1 := &pipe{
+ rdRx: cb1, rdTx: cn1,
+ wrTx: cb2, wrRx: cn2,
+ localDone: done1, remoteDone: done2,
+ readDeadline: makePipeDeadline(),
+ writeDeadline: makePipeDeadline(),
+ }
+ p2 := &pipe{
+ rdRx: cb2, rdTx: cn2,
+ wrTx: cb1, wrRx: cn1,
+ localDone: done2, remoteDone: done1,
+ readDeadline: makePipeDeadline(),
+ writeDeadline: makePipeDeadline(),
+ }
+ return p1, p2
+}
+
+func (*pipe) LocalAddr() net.Addr { return pipeAddr{} }
+func (*pipe) RemoteAddr() net.Addr { return pipeAddr{} }
+
+func (p *pipe) Read(b []byte) (int, error) {
+ n, err := p.read(b)
+ if err != nil && err != io.EOF && err != io.ErrClosedPipe {
+ err = &net.OpError{Op: "read", Net: "pipe", Err: err}
+ }
+ return n, err
+}
+
+func (p *pipe) read(b []byte) (n int, err error) {
+ switch {
+ case isClosedChan(p.localDone):
+ return 0, io.ErrClosedPipe
+ case isClosedChan(p.remoteDone):
+ return 0, io.EOF
+ case isClosedChan(p.readDeadline.wait()):
+ return 0, os.ErrDeadlineExceeded
+ }
+
+ select {
+ case bw := <-p.rdRx:
+ nr := copy(b, bw)
+ p.rdTx <- nr
+ return nr, nil
+ case <-p.localDone:
+ return 0, io.ErrClosedPipe
+ case <-p.remoteDone:
+ return 0, io.EOF
+ case <-p.readDeadline.wait():
+ return 0, os.ErrDeadlineExceeded
+ }
+}
+
+func (p *pipe) Write(b []byte) (int, error) {
+ n, err := p.write(b)
+ if err != nil && err != io.ErrClosedPipe {
+ err = &net.OpError{Op: "write", Net: "pipe", Err: err}
+ }
+ return n, err
+}
+
+func (p *pipe) write(b []byte) (n int, err error) {
+ switch {
+ case isClosedChan(p.localDone):
+ return 0, io.ErrClosedPipe
+ case isClosedChan(p.remoteDone):
+ return 0, io.ErrClosedPipe
+ case isClosedChan(p.writeDeadline.wait()):
+ return 0, os.ErrDeadlineExceeded
+ }
+
+ p.wrMu.Lock() // Ensure entirety of b is written together
+ defer p.wrMu.Unlock()
+ for once := true; once || len(b) > 0; once = false {
+ select {
+ case p.wrTx <- b:
+ nw := <-p.wrRx
+ b = b[nw:]
+ n += nw
+ case <-p.localDone:
+ return n, io.ErrClosedPipe
+ case <-p.remoteDone:
+ return n, io.ErrClosedPipe
+ case <-p.writeDeadline.wait():
+ return n, os.ErrDeadlineExceeded
+ }
+ }
+ return n, nil
+}
+
+func (p *pipe) SetDeadline(t time.Time) error {
+ if isClosedChan(p.localDone) || isClosedChan(p.remoteDone) {
+ return io.ErrClosedPipe
+ }
+ p.readDeadline.set(t)
+ p.writeDeadline.set(t)
+ return nil
+}
+
+func (p *pipe) SetReadDeadline(t time.Time) error {
+ if isClosedChan(p.localDone) || isClosedChan(p.remoteDone) {
+ return io.ErrClosedPipe
+ }
+ p.readDeadline.set(t)
+ return nil
+}
+
+func (p *pipe) SetWriteDeadline(t time.Time) error {
+ if isClosedChan(p.localDone) || isClosedChan(p.remoteDone) {
+ return io.ErrClosedPipe
+ }
+ p.writeDeadline.set(t)
+ return nil
+}
+
+func (p *pipe) Close() error {
+ p.once.Do(func() { close(p.localDone) })
+ return nil
+}
+
+var _ N.ReadWaiter = (*pipe)(nil)
+
+func (p *pipe) InitializeReadWaiter(options N.ReadWaitOptions) (needCopy bool) {
+ p.readWaitOptions = options
+ return false
+}
+
+func (p *pipe) WaitReadBuffer() (buffer *buf.Buffer, err error) {
+ buffer, err = p.waitReadBuffer()
+ if err != nil && err != io.EOF && err != io.ErrClosedPipe {
+ err = &net.OpError{Op: "read", Net: "pipe", Err: err}
+ }
+ return
+}
+
+func (p *pipe) waitReadBuffer() (buffer *buf.Buffer, err error) {
+ switch {
+ case isClosedChan(p.localDone):
+ return nil, io.ErrClosedPipe
+ case isClosedChan(p.remoteDone):
+ return nil, io.EOF
+ case isClosedChan(p.readDeadline.wait()):
+ return nil, os.ErrDeadlineExceeded
+ }
+ select {
+ case bw := <-p.rdRx:
+ buffer = p.readWaitOptions.NewBuffer()
+ var nr int
+ nr, err = buffer.Write(bw)
+ if err != nil {
+ buffer.Release()
+ return
+ }
+ p.readWaitOptions.PostReturn(buffer)
+ p.rdTx <- nr
+ return
+ case <-p.localDone:
+ return nil, io.ErrClosedPipe
+ case <-p.remoteDone:
+ return nil, io.EOF
+ case <-p.readDeadline.wait():
+ return nil, os.ErrDeadlineExceeded
+ }
+}
+
+func IsPipe(conn any) bool {
+ _, ok := conn.(*pipe)
+ return ok
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/earlyconn.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/earlyconn.go
new file mode 100644
index 0000000..82d392e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/earlyconn.go
@@ -0,0 +1,65 @@
+package net
+
+import (
+ "net"
+ "sync"
+
+ "github.com/metacubex/mihomo/common/buf"
+ "github.com/metacubex/mihomo/common/once"
+)
+
+type earlyConn struct {
+ ExtendedConn // only expose standard N.ExtendedConn function to outside
+ resFunc func() error
+ resOnce sync.Once
+ resErr error
+}
+
+func (conn *earlyConn) Response() error {
+ conn.resOnce.Do(func() {
+ conn.resErr = conn.resFunc()
+ })
+ return conn.resErr
+}
+
+func (conn *earlyConn) Read(b []byte) (n int, err error) {
+ err = conn.Response()
+ if err != nil {
+ return 0, err
+ }
+ return conn.ExtendedConn.Read(b)
+}
+
+func (conn *earlyConn) ReadBuffer(buffer *buf.Buffer) (err error) {
+ err = conn.Response()
+ if err != nil {
+ return err
+ }
+ return conn.ExtendedConn.ReadBuffer(buffer)
+}
+
+func (conn *earlyConn) Upstream() any {
+ return conn.ExtendedConn
+}
+
+func (conn *earlyConn) Success() bool {
+ return once.Done(&conn.resOnce) && conn.resErr == nil
+}
+
+func (conn *earlyConn) ReaderReplaceable() bool {
+ return conn.Success()
+}
+
+func (conn *earlyConn) ReaderPossiblyReplaceable() bool {
+ return !conn.Success()
+}
+
+func (conn *earlyConn) WriterReplaceable() bool {
+ return true
+}
+
+var _ ExtendedConn = (*earlyConn)(nil)
+
+func NewEarlyConn(c net.Conn, f func() error) net.Conn {
+ return &earlyConn{ExtendedConn: NewExtendedConn(c), resFunc: f}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/io.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/io.go
new file mode 100644
index 0000000..5bb4f00
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/io.go
@@ -0,0 +1,11 @@
+package net
+
+import "io"
+
+type ReadOnlyReader struct {
+ io.Reader
+}
+
+type WriteOnlyWriter struct {
+ io.Writer
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet.go
new file mode 100644
index 0000000..fd03b4f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet.go
@@ -0,0 +1,18 @@
+package net
+
+import (
+ "github.com/metacubex/mihomo/common/net/deadline"
+ "github.com/metacubex/mihomo/common/net/packet"
+)
+
+type EnhancePacketConn = packet.EnhancePacketConn
+type WaitReadFrom = packet.WaitReadFrom
+
+var NewEnhancePacketConn = packet.NewEnhancePacketConn
+var NewThreadSafePacketConn = packet.NewThreadSafePacketConn
+var NewRefPacketConn = packet.NewRefPacketConn
+
+var NewDeadlineNetPacketConn = deadline.NewNetPacketConn
+var NewDeadlineEnhancePacketConn = deadline.NewEnhancePacketConn
+var NewDeadlineSingPacketConn = deadline.NewSingPacketConn
+var NewDeadlineEnhanceSingPacketConn = deadline.NewEnhanceSingPacketConn
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet.go
new file mode 100644
index 0000000..0cdbcca
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet.go
@@ -0,0 +1,77 @@
+package packet
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+type WaitReadFrom interface {
+ WaitReadFrom() (data []byte, put func(), addr net.Addr, err error)
+}
+
+type EnhancePacketConn interface {
+ net.PacketConn
+ WaitReadFrom
+}
+
+func NewEnhancePacketConn(pc net.PacketConn) EnhancePacketConn {
+ if udpConn, isUDPConn := pc.(*net.UDPConn); isUDPConn {
+ return &enhanceUDPConn{UDPConn: udpConn}
+ }
+ if enhancePC, isEnhancePC := pc.(EnhancePacketConn); isEnhancePC {
+ return enhancePC
+ }
+ if singPC, isSingPC := pc.(SingPacketConn); isSingPC {
+ return newEnhanceSingPacketConn(singPC)
+ }
+ return &enhancePacketConn{PacketConn: pc}
+}
+
+type enhancePacketConn struct {
+ net.PacketConn
+}
+
+func (c *enhancePacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ return waitReadFrom(c.PacketConn)
+}
+
+func (c *enhancePacketConn) Upstream() any {
+ return c.PacketConn
+}
+
+func (c *enhancePacketConn) WriterReplaceable() bool {
+ return true
+}
+
+func (c *enhancePacketConn) ReaderReplaceable() bool {
+ return true
+}
+
+func (c *enhanceUDPConn) Upstream() any {
+ return c.UDPConn
+}
+
+func (c *enhanceUDPConn) WriterReplaceable() bool {
+ return true
+}
+
+func (c *enhanceUDPConn) ReaderReplaceable() bool {
+ return true
+}
+
+func waitReadFrom(pc net.PacketConn) (data []byte, put func(), addr net.Addr, err error) {
+ readBuf := pool.Get(pool.UDPBufferSize)
+ put = func() {
+ _ = pool.Put(readBuf)
+ }
+ var readN int
+ readN, addr, err = pc.ReadFrom(readBuf)
+ if readN > 0 {
+ data = readBuf[:readN]
+ } else {
+ put()
+ put = nil
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet_posix.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet_posix.go
new file mode 100644
index 0000000..2073e35
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet_posix.go
@@ -0,0 +1,65 @@
+//go:build !windows
+
+package packet
+
+import (
+ "net"
+ "strconv"
+ "syscall"
+
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+type enhanceUDPConn struct {
+ *net.UDPConn
+ rawConn syscall.RawConn
+}
+
+func (c *enhanceUDPConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ if c.rawConn == nil {
+ c.rawConn, _ = c.UDPConn.SyscallConn()
+ }
+ var readErr error
+ err = c.rawConn.Read(func(fd uintptr) (done bool) {
+ readBuf := pool.Get(pool.UDPBufferSize)
+ put = func() {
+ _ = pool.Put(readBuf)
+ }
+ var readFrom syscall.Sockaddr
+ var readN int
+ readN, _, _, readFrom, readErr = syscall.Recvmsg(int(fd), readBuf, nil, 0)
+ if readN > 0 {
+ data = readBuf[:readN]
+ } else {
+ put()
+ put = nil
+ data = nil
+ }
+ if readErr == syscall.EAGAIN {
+ return false
+ }
+ if readFrom != nil {
+ switch from := readFrom.(type) {
+ case *syscall.SockaddrInet4:
+ ip := from.Addr // copy from.Addr; ip escapes, so this line allocates 4 bytes
+ addr = &net.UDPAddr{IP: ip[:], Port: from.Port}
+ case *syscall.SockaddrInet6:
+ ip := from.Addr // copy from.Addr; ip escapes, so this line allocates 16 bytes
+ addr = &net.UDPAddr{IP: ip[:], Port: from.Port, Zone: strconv.FormatInt(int64(from.ZoneId), 10)}
+ }
+ }
+ // udp should not convert readN == 0 to io.EOF
+ //if readN == 0 {
+ // readErr = io.EOF
+ //}
+ return true
+ })
+ if err != nil {
+ return
+ }
+ if readErr != nil {
+ err = readErr
+ return
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet_sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet_sing.go
new file mode 100644
index 0000000..6e25eb4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet_sing.go
@@ -0,0 +1,77 @@
+package packet
+
+import (
+ "net"
+
+ "github.com/sagernet/sing/common/buf"
+ "github.com/sagernet/sing/common/bufio"
+ M "github.com/sagernet/sing/common/metadata"
+ N "github.com/sagernet/sing/common/network"
+)
+
+type SingPacketConn = N.NetPacketConn
+
+type EnhanceSingPacketConn interface {
+ SingPacketConn
+ EnhancePacketConn
+}
+
+type enhanceSingPacketConn struct {
+ SingPacketConn
+ packetReadWaiter N.PacketReadWaiter
+}
+
+func (c *enhanceSingPacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ var buff *buf.Buffer
+ var dest M.Socksaddr
+ rwOptions := N.ReadWaitOptions{}
+ if c.packetReadWaiter != nil {
+ c.packetReadWaiter.InitializeReadWaiter(rwOptions)
+ buff, dest, err = c.packetReadWaiter.WaitReadPacket()
+ } else {
+ buff = rwOptions.NewPacketBuffer()
+ dest, err = c.SingPacketConn.ReadPacket(buff)
+ if buff != nil {
+ rwOptions.PostReturn(buff)
+ }
+ }
+ if dest.IsFqdn() {
+ addr = dest
+ } else {
+ addr = dest.UDPAddr()
+ }
+ if err != nil {
+ buff.Release()
+ return
+ }
+ if buff == nil {
+ return
+ }
+ if buff.IsEmpty() {
+ buff.Release()
+ return
+ }
+ data = buff.Bytes()
+ put = buff.Release
+ return
+}
+
+func (c *enhanceSingPacketConn) Upstream() any {
+ return c.SingPacketConn
+}
+
+func (c *enhanceSingPacketConn) WriterReplaceable() bool {
+ return true
+}
+
+func (c *enhanceSingPacketConn) ReaderReplaceable() bool {
+ return true
+}
+
+func newEnhanceSingPacketConn(conn SingPacketConn) *enhanceSingPacketConn {
+ epc := &enhanceSingPacketConn{SingPacketConn: conn}
+ if readWaiter, isReadWaiter := bufio.CreatePacketReadWaiter(conn); isReadWaiter {
+ epc.packetReadWaiter = readWaiter
+ }
+ return epc
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet_windows.go
new file mode 100644
index 0000000..3c467c6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/packet_windows.go
@@ -0,0 +1,75 @@
+//go:build windows
+
+package packet
+
+import (
+ "net"
+ "strconv"
+ "syscall"
+
+ "github.com/metacubex/mihomo/common/pool"
+
+ "golang.org/x/sys/windows"
+)
+
+type enhanceUDPConn struct {
+ *net.UDPConn
+ rawConn syscall.RawConn
+}
+
+func (c *enhanceUDPConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ if c.rawConn == nil {
+ c.rawConn, _ = c.UDPConn.SyscallConn()
+ }
+ var readErr error
+ hasData := false
+ err = c.rawConn.Read(func(fd uintptr) (done bool) {
+ if !hasData {
+ hasData = true
+ // golang's internal/poll.FD.RawRead will Use a zero-byte read as a way to get notified when this
+ // socket is readable if we return false. So the `recvfrom` syscall will not block the system thread.
+ return false
+ }
+ readBuf := pool.Get(pool.UDPBufferSize)
+ put = func() {
+ _ = pool.Put(readBuf)
+ }
+ var readFrom windows.Sockaddr
+ var readN int
+ readN, readFrom, readErr = windows.Recvfrom(windows.Handle(fd), readBuf, 0)
+ if readN > 0 {
+ data = readBuf[:readN]
+ } else {
+ put()
+ put = nil
+ data = nil
+ }
+ if readErr == windows.WSAEWOULDBLOCK {
+ return false
+ }
+ if readFrom != nil {
+ switch from := readFrom.(type) {
+ case *windows.SockaddrInet4:
+ ip := from.Addr // copy from.Addr; ip escapes, so this line allocates 4 bytes
+ addr = &net.UDPAddr{IP: ip[:], Port: from.Port}
+ case *windows.SockaddrInet6:
+ ip := from.Addr // copy from.Addr; ip escapes, so this line allocates 16 bytes
+ addr = &net.UDPAddr{IP: ip[:], Port: from.Port, Zone: strconv.FormatInt(int64(from.ZoneId), 10)}
+ }
+ }
+ // udp should not convert readN == 0 to io.EOF
+ //if readN == 0 {
+ // readErr = io.EOF
+ //}
+ hasData = false
+ return true
+ })
+ if err != nil {
+ return
+ }
+ if readErr != nil {
+ err = readErr
+ return
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/ref.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/ref.go
new file mode 100644
index 0000000..a562b2e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/ref.go
@@ -0,0 +1,75 @@
+package packet
+
+import (
+ "net"
+ "runtime"
+ "time"
+)
+
+type refPacketConn struct {
+ pc EnhancePacketConn
+ ref any
+}
+
+func (c *refPacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ defer runtime.KeepAlive(c.ref)
+ return c.pc.WaitReadFrom()
+}
+
+func (c *refPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
+ defer runtime.KeepAlive(c.ref)
+ return c.pc.ReadFrom(p)
+}
+
+func (c *refPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
+ defer runtime.KeepAlive(c.ref)
+ return c.pc.WriteTo(p, addr)
+}
+
+func (c *refPacketConn) Close() error {
+ defer runtime.KeepAlive(c.ref)
+ return c.pc.Close()
+}
+
+func (c *refPacketConn) LocalAddr() net.Addr {
+ defer runtime.KeepAlive(c.ref)
+ return c.pc.LocalAddr()
+}
+
+func (c *refPacketConn) SetDeadline(t time.Time) error {
+ defer runtime.KeepAlive(c.ref)
+ return c.pc.SetDeadline(t)
+}
+
+func (c *refPacketConn) SetReadDeadline(t time.Time) error {
+ defer runtime.KeepAlive(c.ref)
+ return c.pc.SetReadDeadline(t)
+}
+
+func (c *refPacketConn) SetWriteDeadline(t time.Time) error {
+ defer runtime.KeepAlive(c.ref)
+ return c.pc.SetWriteDeadline(t)
+}
+
+func (c *refPacketConn) Upstream() any {
+ return c.pc
+}
+
+func (c *refPacketConn) ReaderReplaceable() bool { // Relay() will handle reference
+ return true
+}
+
+func (c *refPacketConn) WriterReplaceable() bool { // Relay() will handle reference
+ return true
+}
+
+func NewRefPacketConn(pc net.PacketConn, ref any) EnhancePacketConn {
+ rPC := &refPacketConn{pc: NewEnhancePacketConn(pc), ref: ref}
+ if singPC, isSingPC := pc.(SingPacketConn); isSingPC {
+ return &refSingPacketConn{
+ refPacketConn: rPC,
+ singPacketConn: singPC,
+ }
+ }
+ return rPC
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/ref_sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/ref_sing.go
new file mode 100644
index 0000000..2ca955f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/ref_sing.go
@@ -0,0 +1,26 @@
+package packet
+
+import (
+ "runtime"
+
+ "github.com/sagernet/sing/common/buf"
+ M "github.com/sagernet/sing/common/metadata"
+ N "github.com/sagernet/sing/common/network"
+)
+
+type refSingPacketConn struct {
+ *refPacketConn
+ singPacketConn SingPacketConn
+}
+
+var _ N.NetPacketConn = (*refSingPacketConn)(nil)
+
+func (c *refSingPacketConn) WritePacket(buffer *buf.Buffer, destination M.Socksaddr) error {
+ defer runtime.KeepAlive(c.ref)
+ return c.singPacketConn.WritePacket(buffer, destination)
+}
+
+func (c *refSingPacketConn) ReadPacket(buffer *buf.Buffer) (destination M.Socksaddr, err error) {
+ defer runtime.KeepAlive(c.ref)
+ return c.singPacketConn.ReadPacket(buffer)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/thread.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/thread.go
new file mode 100644
index 0000000..14d6423
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/thread.go
@@ -0,0 +1,36 @@
+package packet
+
+import (
+ "net"
+ "sync"
+)
+
+type threadSafePacketConn struct {
+ EnhancePacketConn
+ access sync.Mutex
+}
+
+func (c *threadSafePacketConn) WriteTo(b []byte, addr net.Addr) (int, error) {
+ c.access.Lock()
+ defer c.access.Unlock()
+ return c.EnhancePacketConn.WriteTo(b, addr)
+}
+
+func (c *threadSafePacketConn) Upstream() any {
+ return c.EnhancePacketConn
+}
+
+func (c *threadSafePacketConn) ReaderReplaceable() bool {
+ return true
+}
+
+func NewThreadSafePacketConn(pc net.PacketConn) EnhancePacketConn {
+ tsPC := &threadSafePacketConn{EnhancePacketConn: NewEnhancePacketConn(pc)}
+ if singPC, isSingPC := pc.(SingPacketConn); isSingPC {
+ return &threadSafeSingPacketConn{
+ threadSafePacketConn: tsPC,
+ singPacketConn: singPC,
+ }
+ }
+ return tsPC
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/thread_sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/thread_sing.go
new file mode 100644
index 0000000..0869a51
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/packet/thread_sing.go
@@ -0,0 +1,24 @@
+package packet
+
+import (
+ "github.com/sagernet/sing/common/buf"
+ M "github.com/sagernet/sing/common/metadata"
+ N "github.com/sagernet/sing/common/network"
+)
+
+type threadSafeSingPacketConn struct {
+ *threadSafePacketConn
+ singPacketConn SingPacketConn
+}
+
+var _ N.NetPacketConn = (*threadSafeSingPacketConn)(nil)
+
+func (c *threadSafeSingPacketConn) WritePacket(buffer *buf.Buffer, destination M.Socksaddr) error {
+ c.access.Lock()
+ defer c.access.Unlock()
+ return c.singPacketConn.WritePacket(buffer, destination)
+}
+
+func (c *threadSafeSingPacketConn) ReadPacket(buffer *buf.Buffer) (destination M.Socksaddr, err error) {
+ return c.singPacketConn.ReadPacket(buffer)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/refconn.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/refconn.go
new file mode 100644
index 0000000..6d0dde9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/refconn.go
@@ -0,0 +1,82 @@
+package net
+
+import (
+ "net"
+ "runtime"
+ "time"
+
+ "github.com/metacubex/mihomo/common/buf"
+)
+
+type refConn struct {
+ conn ExtendedConn
+ ref any
+}
+
+func (c *refConn) Read(b []byte) (n int, err error) {
+ defer runtime.KeepAlive(c.ref)
+ return c.conn.Read(b)
+}
+
+func (c *refConn) Write(b []byte) (n int, err error) {
+ defer runtime.KeepAlive(c.ref)
+ return c.conn.Write(b)
+}
+
+func (c *refConn) Close() error {
+ defer runtime.KeepAlive(c.ref)
+ return c.conn.Close()
+}
+
+func (c *refConn) LocalAddr() net.Addr {
+ defer runtime.KeepAlive(c.ref)
+ return c.conn.LocalAddr()
+}
+
+func (c *refConn) RemoteAddr() net.Addr {
+ defer runtime.KeepAlive(c.ref)
+ return c.conn.RemoteAddr()
+}
+
+func (c *refConn) SetDeadline(t time.Time) error {
+ defer runtime.KeepAlive(c.ref)
+ return c.conn.SetDeadline(t)
+}
+
+func (c *refConn) SetReadDeadline(t time.Time) error {
+ defer runtime.KeepAlive(c.ref)
+ return c.conn.SetReadDeadline(t)
+}
+
+func (c *refConn) SetWriteDeadline(t time.Time) error {
+ defer runtime.KeepAlive(c.ref)
+ return c.conn.SetWriteDeadline(t)
+}
+
+func (c *refConn) Upstream() any {
+ return c.conn
+}
+
+func (c *refConn) ReadBuffer(buffer *buf.Buffer) error {
+ defer runtime.KeepAlive(c.ref)
+ return c.conn.ReadBuffer(buffer)
+}
+
+func (c *refConn) WriteBuffer(buffer *buf.Buffer) error {
+ defer runtime.KeepAlive(c.ref)
+ return c.conn.WriteBuffer(buffer)
+}
+
+func (c *refConn) ReaderReplaceable() bool { // Relay() will handle reference
+ return true
+}
+
+func (c *refConn) WriterReplaceable() bool { // Relay() will handle reference
+ return true
+}
+
+var _ ExtendedConn = (*refConn)(nil)
+
+func NewRefConn(conn net.Conn, ref any) net.Conn {
+ return &refConn{conn: NewExtendedConn(conn), ref: ref}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/relay.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/relay.go
new file mode 100644
index 0000000..f2a1b14
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/relay.go
@@ -0,0 +1,24 @@
+package net
+
+//import (
+// "io"
+// "net"
+// "time"
+//)
+//
+//// Relay copies between left and right bidirectionally.
+//func Relay(leftConn, rightConn net.Conn) {
+// ch := make(chan error)
+//
+// go func() {
+// // Wrapping to avoid using *net.TCPConn.(ReadFrom)
+// // See also https://github.com/metacubex/mihomo/pull/1209
+// _, err := io.Copy(WriteOnlyWriter{Writer: leftConn}, ReadOnlyReader{Reader: rightConn})
+// leftConn.SetReadDeadline(time.Now())
+// ch <- err
+// }()
+//
+// _, _ = io.Copy(WriteOnlyWriter{Writer: rightConn}, ReadOnlyReader{Reader: leftConn})
+// rightConn.SetReadDeadline(time.Now())
+// <-ch
+//}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/sing.go
new file mode 100644
index 0000000..d726f44
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/sing.go
@@ -0,0 +1,51 @@
+package net
+
+import (
+ "context"
+ "net"
+ "runtime"
+
+ "github.com/metacubex/mihomo/common/net/deadline"
+
+ "github.com/sagernet/sing/common"
+ "github.com/sagernet/sing/common/bufio"
+ "github.com/sagernet/sing/common/network"
+)
+
+var NewExtendedConn = bufio.NewExtendedConn
+var NewExtendedWriter = bufio.NewExtendedWriter
+var NewExtendedReader = bufio.NewExtendedReader
+
+type ExtendedConn = network.ExtendedConn
+type ExtendedWriter = network.ExtendedWriter
+type ExtendedReader = network.ExtendedReader
+
+var WriteBuffer = bufio.WriteBuffer
+
+func NewDeadlineConn(conn net.Conn) ExtendedConn {
+ if deadline.IsPipe(conn) || deadline.IsPipe(network.UnwrapReader(conn)) {
+ return NewExtendedConn(conn) // pipe always have correctly deadline implement
+ }
+ if deadline.IsConn(conn) || deadline.IsConn(network.UnwrapReader(conn)) {
+ return NewExtendedConn(conn) // was a *deadline.Conn
+ }
+ return deadline.NewConn(conn)
+}
+
+func NeedHandshake(conn any) bool {
+ if earlyConn, isEarlyConn := common.Cast[network.EarlyConn](conn); isEarlyConn && earlyConn.NeedHandshake() {
+ return true
+ }
+ return false
+}
+
+type CountFunc = network.CountFunc
+
+var Pipe = deadline.Pipe
+
+// Relay copies between left and right bidirectionally.
+func Relay(leftConn, rightConn net.Conn) {
+ defer runtime.KeepAlive(leftConn)
+ defer runtime.KeepAlive(rightConn)
+ _ = bufio.CopyConn(context.TODO(), leftConn, rightConn)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/tcpip.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/tcpip.go
new file mode 100644
index 0000000..a84e7e4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/tcpip.go
@@ -0,0 +1,46 @@
+package net
+
+import (
+ "fmt"
+ "net"
+ "strings"
+)
+
+func SplitNetworkType(s string) (string, string, error) {
+ var (
+ shecme string
+ hostPort string
+ )
+ result := strings.Split(s, "://")
+ if len(result) == 2 {
+ shecme = result[0]
+ hostPort = result[1]
+ } else if len(result) == 1 {
+ hostPort = result[0]
+ } else {
+ return "", "", fmt.Errorf("tcp/udp style error")
+ }
+
+ if len(shecme) == 0 {
+ shecme = "udp"
+ }
+
+ if shecme != "tcp" && shecme != "udp" {
+ return "", "", fmt.Errorf("scheme should be tcp:// or udp://")
+ } else {
+ return shecme, hostPort, nil
+ }
+}
+
+func SplitHostPort(s string) (host, port string, hasPort bool, err error) {
+ temp := s
+ hasPort = true
+
+ if !strings.Contains(s, ":") && !strings.Contains(s, "]:") {
+ temp += ":0"
+ hasPort = false
+ }
+
+ host, port, err = net.SplitHostPort(temp)
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/tls.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/tls.go
new file mode 100644
index 0000000..b286550
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/tls.go
@@ -0,0 +1,58 @@
+package net
+
+import (
+ "crypto/rand"
+ "crypto/rsa"
+ "crypto/tls"
+ "crypto/x509"
+ "encoding/pem"
+ "fmt"
+ "math/big"
+)
+
+type Path interface {
+ Resolve(path string) string
+}
+
+func ParseCert(certificate, privateKey string, path Path) (tls.Certificate, error) {
+ if certificate == "" && privateKey == "" {
+ return newRandomTLSKeyPair()
+ }
+ cert, painTextErr := tls.X509KeyPair([]byte(certificate), []byte(privateKey))
+ if painTextErr == nil {
+ return cert, nil
+ }
+
+ certificate = path.Resolve(certificate)
+ privateKey = path.Resolve(privateKey)
+ cert, loadErr := tls.LoadX509KeyPair(certificate, privateKey)
+ if loadErr != nil {
+ return tls.Certificate{}, fmt.Errorf("parse certificate failed, maybe format error:%s, or path error: %s", painTextErr.Error(), loadErr.Error())
+ }
+ return cert, nil
+}
+
+func newRandomTLSKeyPair() (tls.Certificate, error) {
+ key, err := rsa.GenerateKey(rand.Reader, 2048)
+ if err != nil {
+ return tls.Certificate{}, err
+ }
+ template := x509.Certificate{SerialNumber: big.NewInt(1)}
+ certDER, err := x509.CreateCertificate(
+ rand.Reader,
+ &template,
+ &template,
+ &key.PublicKey,
+ key)
+ if err != nil {
+ return tls.Certificate{}, err
+ }
+ keyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(key)})
+ certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER})
+
+ tlsCert, err := tls.X509KeyPair(certPEM, keyPEM)
+ if err != nil {
+ return tls.Certificate{}, err
+ }
+ return tlsCert, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/net/websocket.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/websocket.go
new file mode 100644
index 0000000..b002310
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/net/websocket.go
@@ -0,0 +1,131 @@
+package net
+
+import (
+ "encoding/binary"
+ "math/bits"
+)
+
+// kanged from https://github.com/nhooyr/websocket/blob/master/frame.go
+// License: MIT
+
+// MaskWebSocket applies the WebSocket masking algorithm to p
+// with the given key.
+// See https://tools.ietf.org/html/rfc6455#section-5.3
+//
+// The returned value is the correctly rotated key to
+// to continue to mask/unmask the message.
+//
+// It is optimized for LittleEndian and expects the key
+// to be in little endian.
+//
+// See https://github.com/golang/go/issues/31586
+func MaskWebSocket(key uint32, b []byte) uint32 {
+ if len(b) >= 8 {
+ key64 := uint64(key)<<32 | uint64(key)
+
+ // At some point in the future we can clean these unrolled loops up.
+ // See https://github.com/golang/go/issues/31586#issuecomment-487436401
+
+ // Then we xor until b is less than 128 bytes.
+ for len(b) >= 128 {
+ v := binary.LittleEndian.Uint64(b)
+ binary.LittleEndian.PutUint64(b, v^key64)
+ v = binary.LittleEndian.Uint64(b[8:16])
+ binary.LittleEndian.PutUint64(b[8:16], v^key64)
+ v = binary.LittleEndian.Uint64(b[16:24])
+ binary.LittleEndian.PutUint64(b[16:24], v^key64)
+ v = binary.LittleEndian.Uint64(b[24:32])
+ binary.LittleEndian.PutUint64(b[24:32], v^key64)
+ v = binary.LittleEndian.Uint64(b[32:40])
+ binary.LittleEndian.PutUint64(b[32:40], v^key64)
+ v = binary.LittleEndian.Uint64(b[40:48])
+ binary.LittleEndian.PutUint64(b[40:48], v^key64)
+ v = binary.LittleEndian.Uint64(b[48:56])
+ binary.LittleEndian.PutUint64(b[48:56], v^key64)
+ v = binary.LittleEndian.Uint64(b[56:64])
+ binary.LittleEndian.PutUint64(b[56:64], v^key64)
+ v = binary.LittleEndian.Uint64(b[64:72])
+ binary.LittleEndian.PutUint64(b[64:72], v^key64)
+ v = binary.LittleEndian.Uint64(b[72:80])
+ binary.LittleEndian.PutUint64(b[72:80], v^key64)
+ v = binary.LittleEndian.Uint64(b[80:88])
+ binary.LittleEndian.PutUint64(b[80:88], v^key64)
+ v = binary.LittleEndian.Uint64(b[88:96])
+ binary.LittleEndian.PutUint64(b[88:96], v^key64)
+ v = binary.LittleEndian.Uint64(b[96:104])
+ binary.LittleEndian.PutUint64(b[96:104], v^key64)
+ v = binary.LittleEndian.Uint64(b[104:112])
+ binary.LittleEndian.PutUint64(b[104:112], v^key64)
+ v = binary.LittleEndian.Uint64(b[112:120])
+ binary.LittleEndian.PutUint64(b[112:120], v^key64)
+ v = binary.LittleEndian.Uint64(b[120:128])
+ binary.LittleEndian.PutUint64(b[120:128], v^key64)
+ b = b[128:]
+ }
+
+ // Then we xor until b is less than 64 bytes.
+ for len(b) >= 64 {
+ v := binary.LittleEndian.Uint64(b)
+ binary.LittleEndian.PutUint64(b, v^key64)
+ v = binary.LittleEndian.Uint64(b[8:16])
+ binary.LittleEndian.PutUint64(b[8:16], v^key64)
+ v = binary.LittleEndian.Uint64(b[16:24])
+ binary.LittleEndian.PutUint64(b[16:24], v^key64)
+ v = binary.LittleEndian.Uint64(b[24:32])
+ binary.LittleEndian.PutUint64(b[24:32], v^key64)
+ v = binary.LittleEndian.Uint64(b[32:40])
+ binary.LittleEndian.PutUint64(b[32:40], v^key64)
+ v = binary.LittleEndian.Uint64(b[40:48])
+ binary.LittleEndian.PutUint64(b[40:48], v^key64)
+ v = binary.LittleEndian.Uint64(b[48:56])
+ binary.LittleEndian.PutUint64(b[48:56], v^key64)
+ v = binary.LittleEndian.Uint64(b[56:64])
+ binary.LittleEndian.PutUint64(b[56:64], v^key64)
+ b = b[64:]
+ }
+
+ // Then we xor until b is less than 32 bytes.
+ for len(b) >= 32 {
+ v := binary.LittleEndian.Uint64(b)
+ binary.LittleEndian.PutUint64(b, v^key64)
+ v = binary.LittleEndian.Uint64(b[8:16])
+ binary.LittleEndian.PutUint64(b[8:16], v^key64)
+ v = binary.LittleEndian.Uint64(b[16:24])
+ binary.LittleEndian.PutUint64(b[16:24], v^key64)
+ v = binary.LittleEndian.Uint64(b[24:32])
+ binary.LittleEndian.PutUint64(b[24:32], v^key64)
+ b = b[32:]
+ }
+
+ // Then we xor until b is less than 16 bytes.
+ for len(b) >= 16 {
+ v := binary.LittleEndian.Uint64(b)
+ binary.LittleEndian.PutUint64(b, v^key64)
+ v = binary.LittleEndian.Uint64(b[8:16])
+ binary.LittleEndian.PutUint64(b[8:16], v^key64)
+ b = b[16:]
+ }
+
+ // Then we xor until b is less than 8 bytes.
+ for len(b) >= 8 {
+ v := binary.LittleEndian.Uint64(b)
+ binary.LittleEndian.PutUint64(b, v^key64)
+ b = b[8:]
+ }
+ }
+
+ // Then we xor until b is less than 4 bytes.
+ for len(b) >= 4 {
+ v := binary.LittleEndian.Uint32(b)
+ binary.LittleEndian.PutUint32(b, v^key)
+ b = b[4:]
+ }
+
+ // xor remaining bytes.
+ for i := range b {
+ b[i] ^= byte(key)
+ key = bits.RotateLeft32(key, -8)
+ }
+
+ return key
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/nnip/netip.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/nnip/netip.go
new file mode 100644
index 0000000..b987bb4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/nnip/netip.go
@@ -0,0 +1,73 @@
+package nnip
+
+import (
+ "encoding/binary"
+ "net"
+ "net/netip"
+)
+
+// IpToAddr converts the net.IP to netip.Addr.
+// If slice's length is not 4 or 16, IpToAddr returns netip.Addr{}
+func IpToAddr(slice net.IP) netip.Addr {
+ ip := slice
+ if len(ip) != 4 {
+ if ip = slice.To4(); ip == nil {
+ ip = slice
+ }
+ }
+
+ if addr, ok := netip.AddrFromSlice(ip); ok {
+ return addr
+ }
+ return netip.Addr{}
+}
+
+// UnMasked returns p's last IP address.
+// If p is invalid, UnMasked returns netip.Addr{}
+func UnMasked(p netip.Prefix) netip.Addr {
+ if !p.IsValid() {
+ return netip.Addr{}
+ }
+
+ buf := p.Addr().As16()
+
+ hi := binary.BigEndian.Uint64(buf[:8])
+ lo := binary.BigEndian.Uint64(buf[8:])
+
+ bits := p.Bits()
+ if bits <= 32 {
+ bits += 96
+ }
+
+ hi = hi | ^uint64(0)>>bits
+ lo = lo | ^(^uint64(0) << (128 - bits))
+
+ binary.BigEndian.PutUint64(buf[:8], hi)
+ binary.BigEndian.PutUint64(buf[8:], lo)
+
+ addr := netip.AddrFrom16(buf)
+ if p.Addr().Is4() {
+ return addr.Unmap()
+ }
+ return addr
+}
+
+// PrefixCompare returns an integer comparing two prefixes.
+// The result will be 0 if p == p2, -1 if p < p2, and +1 if p > p2.
+// modify from https://github.com/golang/go/issues/61642#issuecomment-1848587909
+func PrefixCompare(p, p2 netip.Prefix) int {
+ // compare by validity, address family and prefix base address
+ if c := p.Masked().Addr().Compare(p2.Masked().Addr()); c != 0 {
+ return c
+ }
+ // compare by prefix length
+ f1, f2 := p.Bits(), p2.Bits()
+ if f1 < f2 {
+ return -1
+ }
+ if f1 > f2 {
+ return 1
+ }
+ // compare by prefix address
+ return p.Addr().Compare(p2.Addr())
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/iterable.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/iterable.go
new file mode 100644
index 0000000..c78b49a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/iterable.go
@@ -0,0 +1,3 @@
+package observable
+
+type Iterable[T any] <-chan T
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/observable.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/observable.go
new file mode 100644
index 0000000..62b2e15
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/observable.go
@@ -0,0 +1,65 @@
+package observable
+
+import (
+ "errors"
+ "sync"
+)
+
+type Observable[T any] struct {
+ iterable Iterable[T]
+ listener map[Subscription[T]]*Subscriber[T]
+ mux sync.Mutex
+ done bool
+}
+
+func (o *Observable[T]) process() {
+ for item := range o.iterable {
+ o.mux.Lock()
+ for _, sub := range o.listener {
+ sub.Emit(item)
+ }
+ o.mux.Unlock()
+ }
+ o.close()
+}
+
+func (o *Observable[T]) close() {
+ o.mux.Lock()
+ defer o.mux.Unlock()
+
+ o.done = true
+ for _, sub := range o.listener {
+ sub.Close()
+ }
+}
+
+func (o *Observable[T]) Subscribe() (Subscription[T], error) {
+ o.mux.Lock()
+ defer o.mux.Unlock()
+ if o.done {
+ return nil, errors.New("observable is closed")
+ }
+ subscriber := newSubscriber[T]()
+ o.listener[subscriber.Out()] = subscriber
+ return subscriber.Out(), nil
+}
+
+func (o *Observable[T]) UnSubscribe(sub Subscription[T]) {
+ o.mux.Lock()
+ defer o.mux.Unlock()
+ subscriber, exist := o.listener[sub]
+ if !exist {
+ return
+ }
+ delete(o.listener, sub)
+ subscriber.Close()
+}
+
+func NewObservable[T any](iter Iterable[T]) *Observable[T] {
+ observable := &Observable[T]{
+ iterable: iter,
+ listener: map[Subscription[T]]*Subscriber[T]{},
+ }
+ go observable.process()
+ return observable
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/observable_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/observable_test.go
new file mode 100644
index 0000000..d263cb9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/observable_test.go
@@ -0,0 +1,147 @@
+package observable
+
+import (
+ "sync"
+ "testing"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func iterator[T any](item []T) chan T {
+ ch := make(chan T)
+ go func() {
+ time.Sleep(100 * time.Millisecond)
+ for _, elm := range item {
+ ch <- elm
+ }
+ close(ch)
+ }()
+ return ch
+}
+
+func TestObservable(t *testing.T) {
+ iter := iterator[int]([]int{1, 2, 3, 4, 5})
+ src := NewObservable[int](iter)
+ data, err := src.Subscribe()
+ assert.Nil(t, err)
+ count := 0
+ for range data {
+ count++
+ }
+ assert.Equal(t, count, 5)
+}
+
+func TestObservable_MultiSubscribe(t *testing.T) {
+ iter := iterator[int]([]int{1, 2, 3, 4, 5})
+ src := NewObservable[int](iter)
+ ch1, _ := src.Subscribe()
+ ch2, _ := src.Subscribe()
+ count := atomic.NewInt32(0)
+
+ var wg sync.WaitGroup
+ wg.Add(2)
+ waitCh := func(ch <-chan int) {
+ for range ch {
+ count.Add(1)
+ }
+ wg.Done()
+ }
+ go waitCh(ch1)
+ go waitCh(ch2)
+ wg.Wait()
+ assert.Equal(t, int32(10), count.Load())
+}
+
+func TestObservable_UnSubscribe(t *testing.T) {
+ iter := iterator[int]([]int{1, 2, 3, 4, 5})
+ src := NewObservable[int](iter)
+ data, err := src.Subscribe()
+ assert.Nil(t, err)
+ src.UnSubscribe(data)
+ _, open := <-data
+ assert.False(t, open)
+}
+
+func TestObservable_SubscribeClosedSource(t *testing.T) {
+ iter := iterator[int]([]int{1})
+ src := NewObservable[int](iter)
+ data, _ := src.Subscribe()
+ <-data
+
+ _, closed := src.Subscribe()
+ assert.NotNil(t, closed)
+}
+
+func TestObservable_UnSubscribeWithNotExistSubscription(t *testing.T) {
+ sub := Subscription[int](make(chan int))
+ iter := iterator[int]([]int{1})
+ src := NewObservable[int](iter)
+ src.UnSubscribe(sub)
+}
+
+func TestObservable_SubscribeGoroutineLeak(t *testing.T) {
+ iter := iterator[int]([]int{1, 2, 3, 4, 5})
+ src := NewObservable[int](iter)
+ max := 100
+
+ var list []Subscription[int]
+ for i := 0; i < max; i++ {
+ ch, _ := src.Subscribe()
+ list = append(list, ch)
+ }
+
+ var wg sync.WaitGroup
+ wg.Add(max)
+ waitCh := func(ch <-chan int) {
+ for range ch {
+ }
+ wg.Done()
+ }
+
+ for _, ch := range list {
+ go waitCh(ch)
+ }
+ wg.Wait()
+
+ for _, sub := range list {
+ _, more := <-sub
+ assert.False(t, more)
+ }
+
+ _, more := <-list[0]
+ assert.False(t, more)
+}
+
+func Benchmark_Observable_1000(b *testing.B) {
+ ch := make(chan int)
+ o := NewObservable[int](ch)
+ num := 1000
+
+ subs := []Subscription[int]{}
+ for i := 0; i < num; i++ {
+ sub, _ := o.Subscribe()
+ subs = append(subs, sub)
+ }
+
+ wg := sync.WaitGroup{}
+ wg.Add(num)
+
+ b.ResetTimer()
+ for _, sub := range subs {
+ go func(s Subscription[int]) {
+ for range s {
+ }
+ wg.Done()
+ }(sub)
+ }
+
+ for i := 0; i < b.N; i++ {
+ ch <- i
+ }
+
+ close(ch)
+ wg.Wait()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/subscriber.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/subscriber.go
new file mode 100644
index 0000000..b7df4ca
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/observable/subscriber.go
@@ -0,0 +1,33 @@
+package observable
+
+import (
+ "sync"
+)
+
+type Subscription[T any] <-chan T
+
+type Subscriber[T any] struct {
+ buffer chan T
+ once sync.Once
+}
+
+func (s *Subscriber[T]) Emit(item T) {
+ s.buffer <- item
+}
+
+func (s *Subscriber[T]) Out() Subscription[T] {
+ return s.buffer
+}
+
+func (s *Subscriber[T]) Close() {
+ s.once.Do(func() {
+ close(s.buffer)
+ })
+}
+
+func newSubscriber[T any]() *Subscriber[T] {
+ sub := &Subscriber[T]{
+ buffer: make(chan T, 200),
+ }
+ return sub
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/once/once_go120.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/once/once_go120.go
new file mode 100644
index 0000000..51578a2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/once/once_go120.go
@@ -0,0 +1,26 @@
+//go:build !go1.22
+
+package once
+
+import (
+ "sync"
+ "sync/atomic"
+ "unsafe"
+)
+
+type Once struct {
+ done uint32
+ m sync.Mutex
+}
+
+func Done(once *sync.Once) bool {
+ // atomic visit sync.Once.done
+ return atomic.LoadUint32((*uint32)(unsafe.Pointer(once))) == 1
+}
+
+func Reset(once *sync.Once) {
+ o := (*Once)(unsafe.Pointer(once))
+ o.m.Lock()
+ defer o.m.Unlock()
+ atomic.StoreUint32(&o.done, 0)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/once/once_go122.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/once/once_go122.go
new file mode 100644
index 0000000..5ff8461
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/once/once_go122.go
@@ -0,0 +1,26 @@
+//go:build go1.22
+
+package once
+
+import (
+ "sync"
+ "sync/atomic"
+ "unsafe"
+)
+
+type Once struct {
+ done atomic.Uint32
+ m sync.Mutex
+}
+
+func Done(once *sync.Once) bool {
+ // atomic visit sync.Once.done
+ return (*atomic.Uint32)(unsafe.Pointer(once)).Load() == 1
+}
+
+func Reset(once *sync.Once) {
+ o := (*Once)(unsafe.Pointer(once))
+ o.m.Lock()
+ defer o.m.Unlock()
+ o.done.Store(0)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/picker/picker.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/picker/picker.go
new file mode 100644
index 0000000..3a7688c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/picker/picker.go
@@ -0,0 +1,92 @@
+package picker
+
+import (
+ "context"
+ "sync"
+ "time"
+)
+
+// Picker provides synchronization, and Context cancelation
+// for groups of goroutines working on subtasks of a common task.
+// Inspired by errGroup
+type Picker[T any] struct {
+ ctx context.Context
+ cancel func()
+
+ wg sync.WaitGroup
+
+ once sync.Once
+ errOnce sync.Once
+ result T
+ err error
+}
+
+func newPicker[T any](ctx context.Context, cancel func()) *Picker[T] {
+ return &Picker[T]{
+ ctx: ctx,
+ cancel: cancel,
+ }
+}
+
+// WithContext returns a new Picker and an associated Context derived from ctx.
+// and cancel when first element return.
+func WithContext[T any](ctx context.Context) (*Picker[T], context.Context) {
+ ctx, cancel := context.WithCancel(ctx)
+ return newPicker[T](ctx, cancel), ctx
+}
+
+// WithTimeout returns a new Picker and an associated Context derived from ctx with timeout.
+func WithTimeout[T any](ctx context.Context, timeout time.Duration) (*Picker[T], context.Context) {
+ ctx, cancel := context.WithTimeout(ctx, timeout)
+ return newPicker[T](ctx, cancel), ctx
+}
+
+// Wait blocks until all function calls from the Go method have returned,
+// then returns the first nil error result (if any) from them.
+func (p *Picker[T]) Wait() T {
+ p.wg.Wait()
+ if p.cancel != nil {
+ p.cancel()
+ p.cancel = nil
+ }
+ return p.result
+}
+
+// Error return the first error (if all success return nil)
+func (p *Picker[T]) Error() error {
+ return p.err
+}
+
+// Go calls the given function in a new goroutine.
+// The first call to return a nil error cancels the group; its result will be returned by Wait.
+func (p *Picker[T]) Go(f func() (T, error)) {
+ p.wg.Add(1)
+
+ go func() {
+ defer p.wg.Done()
+
+ if ret, err := f(); err == nil {
+ p.once.Do(func() {
+ p.result = ret
+ if p.cancel != nil {
+ p.cancel()
+ p.cancel = nil
+ }
+ })
+ } else {
+ p.errOnce.Do(func() {
+ p.err = err
+ })
+ }
+ }()
+}
+
+// Close cancels the picker context and releases resources associated with it.
+// If Wait has been called, then there is no need to call Close.
+func (p *Picker[T]) Close() error {
+ if p.cancel != nil {
+ p.cancel()
+ p.cancel = nil
+ }
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/picker/picker_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/picker/picker_test.go
new file mode 100644
index 0000000..4c1c9eb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/picker/picker_test.go
@@ -0,0 +1,41 @@
+package picker
+
+import (
+ "context"
+ "testing"
+ "time"
+
+ "github.com/samber/lo"
+ "github.com/stretchr/testify/assert"
+)
+
+func sleepAndSend[T any](ctx context.Context, delay int, input T) func() (T, error) {
+ return func() (T, error) {
+ timer := time.NewTimer(time.Millisecond * time.Duration(delay))
+ select {
+ case <-timer.C:
+ return input, nil
+ case <-ctx.Done():
+ return lo.Empty[T](), ctx.Err()
+ }
+ }
+}
+
+func TestPicker_Basic(t *testing.T) {
+ picker, ctx := WithContext[int](context.Background())
+ picker.Go(sleepAndSend(ctx, 30, 2))
+ picker.Go(sleepAndSend(ctx, 20, 1))
+
+ number := picker.Wait()
+ assert.NotNil(t, number)
+ assert.Equal(t, number, 1)
+}
+
+func TestPicker_Timeout(t *testing.T) {
+ picker, ctx := WithTimeout[int](context.Background(), time.Millisecond*5)
+ picker.Go(sleepAndSend(ctx, 20, 1))
+
+ number := picker.Wait()
+ assert.Equal(t, number, lo.Empty[int]())
+ assert.NotNil(t, picker.Error())
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/pool/alloc.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/pool/alloc.go
new file mode 100644
index 0000000..80927a2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/pool/alloc.go
@@ -0,0 +1,139 @@
+package pool
+
+// Inspired by https://github.com/xtaci/smux/blob/master/alloc.go
+
+import (
+ "errors"
+ "math/bits"
+ "sync"
+)
+
+var defaultAllocator = NewAllocator()
+
+// Allocator for incoming frames, optimized to prevent overwriting after zeroing
+type Allocator struct {
+ buffers [11]sync.Pool
+}
+
+// NewAllocator initiates a []byte allocator for frames less than 65536 bytes,
+// the waste(memory fragmentation) of space allocation is guaranteed to be
+// no more than 50%.
+func NewAllocator() *Allocator {
+ return &Allocator{
+ buffers: [...]sync.Pool{ // 64B -> 64K
+ {New: func() any { return new([1 << 6]byte) }},
+ {New: func() any { return new([1 << 7]byte) }},
+ {New: func() any { return new([1 << 8]byte) }},
+ {New: func() any { return new([1 << 9]byte) }},
+ {New: func() any { return new([1 << 10]byte) }},
+ {New: func() any { return new([1 << 11]byte) }},
+ {New: func() any { return new([1 << 12]byte) }},
+ {New: func() any { return new([1 << 13]byte) }},
+ {New: func() any { return new([1 << 14]byte) }},
+ {New: func() any { return new([1 << 15]byte) }},
+ {New: func() any { return new([1 << 16]byte) }},
+ },
+ }
+}
+
+// Get a []byte from pool with most appropriate cap
+func (alloc *Allocator) Get(size int) []byte {
+ switch {
+ case size < 0:
+ panic("alloc.Get: len out of range")
+ case size == 0:
+ return nil
+ case size > 65536:
+ return make([]byte, size)
+ default:
+ var index uint16
+ if size > 64 {
+ index = msb(size)
+ if size != 1< 65536 {
+ return nil
+ }
+
+ bits := msb(cap(buf))
+ if cap(buf) != 1<= 0 {
+ stack = stack[line+1:]
+ }
+ return &panicError{value: v, stack: stack}
+}
+
+// call is an in-flight or completed singleflight.Do call
+type call[T any] struct {
+ wg sync.WaitGroup
+
+ // These fields are written once before the WaitGroup is done
+ // and are only read after the WaitGroup is done.
+ val T
+ err error
+
+ // These fields are read and written with the singleflight
+ // mutex held before the WaitGroup is done, and are read but
+ // not written after the WaitGroup is done.
+ dups int
+ chans []chan<- Result[T]
+}
+
+// Group represents a class of work and forms a namespace in
+// which units of work can be executed with duplicate suppression.
+type Group[T any] struct {
+ mu sync.Mutex // protects m
+ m map[string]*call[T] // lazily initialized
+
+ StoreResult bool
+}
+
+// Result holds the results of Do, so they can be passed
+// on a channel.
+type Result[T any] struct {
+ Val T
+ Err error
+ Shared bool
+}
+
+// Do executes and returns the results of the given function, making
+// sure that only one execution is in-flight for a given key at a
+// time. If a duplicate comes in, the duplicate caller waits for the
+// original to complete and receives the same results.
+// The return value shared indicates whether v was given to multiple callers.
+func (g *Group[T]) Do(key string, fn func() (T, error)) (v T, err error, shared bool) {
+ g.mu.Lock()
+ if g.m == nil {
+ g.m = make(map[string]*call[T])
+ }
+ if c, ok := g.m[key]; ok {
+ c.dups++
+ g.mu.Unlock()
+ c.wg.Wait()
+
+ if e, ok := c.err.(*panicError); ok {
+ panic(e)
+ } else if c.err == errGoexit {
+ runtime.Goexit()
+ }
+ return c.val, c.err, true
+ }
+ c := new(call[T])
+ c.wg.Add(1)
+ g.m[key] = c
+ g.mu.Unlock()
+
+ g.doCall(c, key, fn)
+ return c.val, c.err, c.dups > 0
+}
+
+// DoChan is like Do but returns a channel that will receive the
+// results when they are ready.
+//
+// The returned channel will not be closed.
+func (g *Group[T]) DoChan(key string, fn func() (T, error)) <-chan Result[T] {
+ ch := make(chan Result[T], 1)
+ g.mu.Lock()
+ if g.m == nil {
+ g.m = make(map[string]*call[T])
+ }
+ if c, ok := g.m[key]; ok {
+ c.dups++
+ c.chans = append(c.chans, ch)
+ g.mu.Unlock()
+ return ch
+ }
+ c := &call[T]{chans: []chan<- Result[T]{ch}}
+ c.wg.Add(1)
+ g.m[key] = c
+ g.mu.Unlock()
+
+ go g.doCall(c, key, fn)
+
+ return ch
+}
+
+// doCall handles the single call for a key.
+func (g *Group[T]) doCall(c *call[T], key string, fn func() (T, error)) {
+ normalReturn := false
+ recovered := false
+
+ // use double-defer to distinguish panic from runtime.Goexit,
+ // more details see https://golang.org/cl/134395
+ defer func() {
+ // the given function invoked runtime.Goexit
+ if !normalReturn && !recovered {
+ c.err = errGoexit
+ }
+
+ g.mu.Lock()
+ defer g.mu.Unlock()
+ c.wg.Done()
+ if g.m[key] == c && !g.StoreResult {
+ delete(g.m, key)
+ }
+
+ if e, ok := c.err.(*panicError); ok {
+ // In order to prevent the waiting channels from being blocked forever,
+ // needs to ensure that this panic cannot be recovered.
+ if len(c.chans) > 0 {
+ go panic(e)
+ select {} // Keep this goroutine around so that it will appear in the crash dump.
+ } else {
+ panic(e)
+ }
+ } else if c.err == errGoexit {
+ // Already in the process of goexit, no need to call again
+ } else {
+ // Normal return
+ for _, ch := range c.chans {
+ ch <- Result[T]{c.val, c.err, c.dups > 0}
+ }
+ }
+ }()
+
+ func() {
+ defer func() {
+ if !normalReturn {
+ // Ideally, we would wait to take a stack trace until we've determined
+ // whether this is a panic or a runtime.Goexit.
+ //
+ // Unfortunately, the only way we can distinguish the two is to see
+ // whether the recover stopped the goroutine from terminating, and by
+ // the time we know that, the part of the stack trace relevant to the
+ // panic has been discarded.
+ if r := recover(); r != nil {
+ c.err = newPanicError(r)
+ }
+ }
+ }()
+
+ c.val, c.err = fn()
+ normalReturn = true
+ }()
+
+ if !normalReturn {
+ recovered = true
+ }
+}
+
+// Forget tells the singleflight to forget about a key. Future calls
+// to Do for this key will call the function rather than waiting for
+// an earlier call to complete.
+func (g *Group[T]) Forget(key string) {
+ g.mu.Lock()
+ delete(g.m, key)
+ g.mu.Unlock()
+}
+
+func (g *Group[T]) Reset() {
+ g.mu.Lock()
+ g.m = nil
+ g.mu.Unlock()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/sockopt/reuseaddr_linux.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/sockopt/reuseaddr_linux.go
new file mode 100644
index 0000000..a1d19bf
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/sockopt/reuseaddr_linux.go
@@ -0,0 +1,19 @@
+package sockopt
+
+import (
+ "net"
+ "syscall"
+)
+
+func UDPReuseaddr(c *net.UDPConn) (err error) {
+ rc, err := c.SyscallConn()
+ if err != nil {
+ return
+ }
+
+ rc.Control(func(fd uintptr) {
+ err = syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1)
+ })
+
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/sockopt/reuseaddr_other.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/sockopt/reuseaddr_other.go
new file mode 100644
index 0000000..04fc8ed
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/sockopt/reuseaddr_other.go
@@ -0,0 +1,11 @@
+//go:build !linux
+
+package sockopt
+
+import (
+ "net"
+)
+
+func UDPReuseaddr(c *net.UDPConn) (err error) {
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/structure/structure.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/structure/structure.go
new file mode 100644
index 0000000..99c980b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/structure/structure.go
@@ -0,0 +1,584 @@
+package structure
+
+// references: https://github.com/mitchellh/mapstructure
+
+import (
+ "encoding"
+ "encoding/base64"
+ "fmt"
+ "reflect"
+ "strconv"
+ "strings"
+)
+
+// Option is the configuration that is used to create a new decoder
+type Option struct {
+ TagName string
+ WeaklyTypedInput bool
+ KeyReplacer *strings.Replacer
+}
+
+var DefaultKeyReplacer = strings.NewReplacer("_", "-")
+
+// Decoder is the core of structure
+type Decoder struct {
+ option *Option
+}
+
+// NewDecoder return a Decoder by Option
+func NewDecoder(option Option) *Decoder {
+ if option.TagName == "" {
+ option.TagName = "structure"
+ }
+ return &Decoder{option: &option}
+}
+
+// Decode transform a map[string]any to a struct
+func (d *Decoder) Decode(src map[string]any, dst any) error {
+ if reflect.TypeOf(dst).Kind() != reflect.Ptr {
+ return fmt.Errorf("decode must recive a ptr struct")
+ }
+ t := reflect.TypeOf(dst).Elem()
+ v := reflect.ValueOf(dst).Elem()
+ for idx := 0; idx < v.NumField(); idx++ {
+ field := t.Field(idx)
+ if field.Anonymous {
+ if err := d.decodeStruct(field.Name, src, v.Field(idx)); err != nil {
+ return err
+ }
+ continue
+ }
+
+ tag := field.Tag.Get(d.option.TagName)
+ key, omitKey, found := strings.Cut(tag, ",")
+ omitempty := found && omitKey == "omitempty"
+
+ value, ok := src[key]
+ if !ok {
+ if d.option.KeyReplacer != nil {
+ key = d.option.KeyReplacer.Replace(key)
+ }
+
+ for _strKey := range src {
+ strKey := _strKey
+ if d.option.KeyReplacer != nil {
+ strKey = d.option.KeyReplacer.Replace(strKey)
+ }
+ if strings.EqualFold(key, strKey) {
+ value = src[_strKey]
+ ok = true
+ break
+ }
+ }
+ }
+ if !ok || value == nil {
+ if omitempty {
+ continue
+ }
+ return fmt.Errorf("key '%s' missing", key)
+ }
+
+ err := d.decode(key, value, v.Field(idx))
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func (d *Decoder) decode(name string, data any, val reflect.Value) error {
+ for {
+ kind := val.Kind()
+ if kind == reflect.Pointer && val.IsNil() {
+ val.Set(reflect.New(val.Type().Elem()))
+ }
+ if ok, err := d.decodeTextUnmarshaller(name, data, val); ok {
+ return err
+ }
+ switch {
+ case isInt(kind):
+ return d.decodeInt(name, data, val)
+ case isUint(kind):
+ return d.decodeUint(name, data, val)
+ case isFloat(kind):
+ return d.decodeFloat(name, data, val)
+ }
+ switch kind {
+ case reflect.Pointer:
+ val = val.Elem()
+ continue
+ case reflect.String:
+ return d.decodeString(name, data, val)
+ case reflect.Bool:
+ return d.decodeBool(name, data, val)
+ case reflect.Slice:
+ return d.decodeSlice(name, data, val)
+ case reflect.Map:
+ return d.decodeMap(name, data, val)
+ case reflect.Interface:
+ return d.setInterface(name, data, val)
+ case reflect.Struct:
+ return d.decodeStruct(name, data, val)
+ default:
+ return fmt.Errorf("type %s not support", val.Kind().String())
+ }
+ }
+}
+
+func isInt(kind reflect.Kind) bool {
+ switch kind {
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ return true
+ default:
+ return false
+ }
+}
+
+func isUint(kind reflect.Kind) bool {
+ switch kind {
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+ return true
+ default:
+ return false
+ }
+}
+
+func isFloat(kind reflect.Kind) bool {
+ switch kind {
+ case reflect.Float32, reflect.Float64:
+ return true
+ default:
+ return false
+ }
+}
+
+func (d *Decoder) decodeInt(name string, data any, val reflect.Value) (err error) {
+ dataVal := reflect.ValueOf(data)
+ kind := dataVal.Kind()
+ switch {
+ case isInt(kind):
+ val.SetInt(dataVal.Int())
+ case isUint(kind) && d.option.WeaklyTypedInput:
+ val.SetInt(int64(dataVal.Uint()))
+ case isFloat(kind) && d.option.WeaklyTypedInput:
+ val.SetInt(int64(dataVal.Float()))
+ case kind == reflect.String && d.option.WeaklyTypedInput:
+ var i int64
+ i, err = strconv.ParseInt(dataVal.String(), 0, val.Type().Bits())
+ if err == nil {
+ val.SetInt(i)
+ } else {
+ err = fmt.Errorf("cannot parse '%s' as int: %s", name, err)
+ }
+ default:
+ err = fmt.Errorf(
+ "'%s' expected type '%s', got unconvertible type '%s'",
+ name, val.Type(), dataVal.Type(),
+ )
+ }
+ return err
+}
+
+func (d *Decoder) decodeUint(name string, data any, val reflect.Value) (err error) {
+ dataVal := reflect.ValueOf(data)
+ kind := dataVal.Kind()
+ switch {
+ case isUint(kind):
+ val.SetUint(dataVal.Uint())
+ case isInt(kind) && d.option.WeaklyTypedInput:
+ val.SetUint(uint64(dataVal.Int()))
+ case isFloat(kind) && d.option.WeaklyTypedInput:
+ val.SetUint(uint64(dataVal.Float()))
+ case kind == reflect.String && d.option.WeaklyTypedInput:
+ var i uint64
+ i, err = strconv.ParseUint(dataVal.String(), 0, val.Type().Bits())
+ if err == nil {
+ val.SetUint(i)
+ } else {
+ err = fmt.Errorf("cannot parse '%s' as int: %s", name, err)
+ }
+ default:
+ err = fmt.Errorf(
+ "'%s' expected type '%s', got unconvertible type '%s'",
+ name, val.Type(), dataVal.Type(),
+ )
+ }
+ return err
+}
+
+func (d *Decoder) decodeFloat(name string, data any, val reflect.Value) (err error) {
+ dataVal := reflect.ValueOf(data)
+ kind := dataVal.Kind()
+ switch {
+ case isFloat(kind):
+ val.SetFloat(dataVal.Float())
+ case isUint(kind):
+ val.SetFloat(float64(dataVal.Uint()))
+ case isInt(kind) && d.option.WeaklyTypedInput:
+ val.SetFloat(float64(dataVal.Int()))
+ case kind == reflect.String && d.option.WeaklyTypedInput:
+ var i float64
+ i, err = strconv.ParseFloat(dataVal.String(), val.Type().Bits())
+ if err == nil {
+ val.SetFloat(i)
+ } else {
+ err = fmt.Errorf("cannot parse '%s' as int: %s", name, err)
+ }
+ default:
+ err = fmt.Errorf(
+ "'%s' expected type '%s', got unconvertible type '%s'",
+ name, val.Type(), dataVal.Type(),
+ )
+ }
+ return err
+}
+
+func (d *Decoder) decodeString(name string, data any, val reflect.Value) (err error) {
+ dataVal := reflect.ValueOf(data)
+ kind := dataVal.Kind()
+ switch {
+ case kind == reflect.String:
+ val.SetString(dataVal.String())
+ case isInt(kind) && d.option.WeaklyTypedInput:
+ val.SetString(strconv.FormatInt(dataVal.Int(), 10))
+ case isUint(kind) && d.option.WeaklyTypedInput:
+ val.SetString(strconv.FormatUint(dataVal.Uint(), 10))
+ case isFloat(kind) && d.option.WeaklyTypedInput:
+ val.SetString(strconv.FormatFloat(dataVal.Float(), 'E', -1, dataVal.Type().Bits()))
+ default:
+ err = fmt.Errorf(
+ "'%s' expected type '%s', got unconvertible type '%s'",
+ name, val.Type(), dataVal.Type(),
+ )
+ }
+ return err
+}
+
+func (d *Decoder) decodeBool(name string, data any, val reflect.Value) (err error) {
+ dataVal := reflect.ValueOf(data)
+ kind := dataVal.Kind()
+ switch {
+ case kind == reflect.Bool:
+ val.SetBool(dataVal.Bool())
+ case isInt(kind) && d.option.WeaklyTypedInput:
+ val.SetBool(dataVal.Int() != 0)
+ case isUint(kind) && d.option.WeaklyTypedInput:
+ val.SetString(strconv.FormatUint(dataVal.Uint(), 10))
+ default:
+ err = fmt.Errorf(
+ "'%s' expected type '%s', got unconvertible type '%s'",
+ name, val.Type(), dataVal.Type(),
+ )
+ }
+ return err
+}
+
+func (d *Decoder) decodeSlice(name string, data any, val reflect.Value) error {
+ dataVal := reflect.Indirect(reflect.ValueOf(data))
+ valType := val.Type()
+ valElemType := valType.Elem()
+
+ if dataVal.Kind() == reflect.String && valElemType.Kind() == reflect.Uint8 { // from encoding/json
+ s := []byte(dataVal.String())
+ b := make([]byte, base64.StdEncoding.DecodedLen(len(s)))
+ n, err := base64.StdEncoding.Decode(b, s)
+ if err != nil {
+ return fmt.Errorf("try decode '%s' by base64 error: %w", name, err)
+ }
+ val.SetBytes(b[:n])
+ return nil
+ }
+
+ if dataVal.Kind() != reflect.Slice {
+ return fmt.Errorf("'%s' is not a slice", name)
+ }
+
+ valSlice := val
+ // make a new slice with cap(val)==cap(dataVal)
+ // the caller can determine whether the original configuration contains this item by judging whether the value is nil.
+ valSlice = reflect.MakeSlice(valType, 0, dataVal.Len())
+ for i := 0; i < dataVal.Len(); i++ {
+ currentData := dataVal.Index(i).Interface()
+ for valSlice.Len() <= i {
+ valSlice = reflect.Append(valSlice, reflect.Zero(valElemType))
+ }
+ fieldName := fmt.Sprintf("%s[%d]", name, i)
+ if currentData == nil {
+ // in weakly type mode, null will convert to zero value
+ if d.option.WeaklyTypedInput {
+ continue
+ }
+ // in non-weakly type mode, null will convert to nil if element's zero value is nil, otherwise return an error
+ if elemKind := valElemType.Kind(); elemKind == reflect.Map || elemKind == reflect.Slice {
+ continue
+ }
+ return fmt.Errorf("'%s' can not be null", fieldName)
+ }
+ currentField := valSlice.Index(i)
+ if err := d.decode(fieldName, currentData, currentField); err != nil {
+ return err
+ }
+ }
+
+ val.Set(valSlice)
+ return nil
+}
+
+func (d *Decoder) decodeMap(name string, data any, val reflect.Value) error {
+ valType := val.Type()
+ valKeyType := valType.Key()
+ valElemType := valType.Elem()
+
+ valMap := val
+
+ if valMap.IsNil() {
+ mapType := reflect.MapOf(valKeyType, valElemType)
+ valMap = reflect.MakeMap(mapType)
+ }
+
+ dataVal := reflect.Indirect(reflect.ValueOf(data))
+ if dataVal.Kind() != reflect.Map {
+ return fmt.Errorf("'%s' expected a map, got '%s'", name, dataVal.Kind())
+ }
+
+ return d.decodeMapFromMap(name, dataVal, val, valMap)
+}
+
+func (d *Decoder) decodeMapFromMap(name string, dataVal reflect.Value, val reflect.Value, valMap reflect.Value) error {
+ valType := val.Type()
+ valKeyType := valType.Key()
+ valElemType := valType.Elem()
+
+ errors := make([]string, 0)
+
+ if dataVal.Len() == 0 {
+ if dataVal.IsNil() {
+ if !val.IsNil() {
+ val.Set(dataVal)
+ }
+ } else {
+ val.Set(valMap)
+ }
+
+ return nil
+ }
+
+ for _, k := range dataVal.MapKeys() {
+ fieldName := fmt.Sprintf("%s[%s]", name, k)
+
+ currentKey := reflect.Indirect(reflect.New(valKeyType))
+ if err := d.decode(fieldName, k.Interface(), currentKey); err != nil {
+ errors = append(errors, err.Error())
+ continue
+ }
+
+ v := dataVal.MapIndex(k).Interface()
+ if v == nil {
+ errors = append(errors, fmt.Sprintf("filed %s invalid", fieldName))
+ continue
+ }
+
+ currentVal := reflect.Indirect(reflect.New(valElemType))
+ if err := d.decode(fieldName, v, currentVal); err != nil {
+ errors = append(errors, err.Error())
+ continue
+ }
+
+ valMap.SetMapIndex(currentKey, currentVal)
+ }
+
+ val.Set(valMap)
+
+ if len(errors) > 0 {
+ return fmt.Errorf(strings.Join(errors, ","))
+ }
+
+ return nil
+}
+
+func (d *Decoder) decodeStruct(name string, data any, val reflect.Value) error {
+ dataVal := reflect.Indirect(reflect.ValueOf(data))
+
+ // If the type of the value to write to and the data match directly,
+ // then we just set it directly instead of recursing into the structure.
+ if dataVal.Type() == val.Type() {
+ val.Set(dataVal)
+ return nil
+ }
+
+ dataValKind := dataVal.Kind()
+ switch dataValKind {
+ case reflect.Map:
+ return d.decodeStructFromMap(name, dataVal, val)
+ default:
+ return fmt.Errorf("'%s' expected a map, got '%s'", name, dataVal.Kind())
+ }
+}
+
+func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) error {
+ dataValType := dataVal.Type()
+ if kind := dataValType.Key().Kind(); kind != reflect.String && kind != reflect.Interface {
+ return fmt.Errorf(
+ "'%s' needs a map with string keys, has '%s' keys",
+ name, dataValType.Key().Kind())
+ }
+
+ dataValKeys := make(map[reflect.Value]struct{})
+ dataValKeysUnused := make(map[any]struct{})
+ for _, dataValKey := range dataVal.MapKeys() {
+ dataValKeys[dataValKey] = struct{}{}
+ dataValKeysUnused[dataValKey.Interface()] = struct{}{}
+ }
+
+ errors := make([]string, 0)
+
+ // This slice will keep track of all the structs we'll be decoding.
+ // There can be more than one struct if there are embedded structs
+ // that are squashed.
+ structs := make([]reflect.Value, 1, 5)
+ structs[0] = val
+
+ // Compile the list of all the fields that we're going to be decoding
+ // from all the structs.
+ type field struct {
+ field reflect.StructField
+ val reflect.Value
+ }
+ var fields []field
+ for len(structs) > 0 {
+ structVal := structs[0]
+ structs = structs[1:]
+
+ structType := structVal.Type()
+
+ for i := 0; i < structType.NumField(); i++ {
+ fieldType := structType.Field(i)
+ fieldKind := fieldType.Type.Kind()
+
+ // If "squash" is specified in the tag, we squash the field down.
+ squash := false
+ tagParts := strings.Split(fieldType.Tag.Get(d.option.TagName), ",")
+ for _, tag := range tagParts[1:] {
+ if tag == "squash" {
+ squash = true
+ break
+ }
+ }
+
+ if squash {
+ if fieldKind != reflect.Struct {
+ errors = append(errors,
+ fmt.Errorf("%s: unsupported type for squash: %s", fieldType.Name, fieldKind).Error())
+ } else {
+ structs = append(structs, structVal.FieldByName(fieldType.Name))
+ }
+ continue
+ }
+
+ // Normal struct field, store it away
+ fields = append(fields, field{fieldType, structVal.Field(i)})
+ }
+ }
+
+ // for fieldType, field := range fields {
+ for _, f := range fields {
+ field, fieldValue := f.field, f.val
+ fieldName := field.Name
+
+ tagValue := field.Tag.Get(d.option.TagName)
+ tagValue = strings.SplitN(tagValue, ",", 2)[0]
+ if tagValue != "" {
+ fieldName = tagValue
+ }
+
+ rawMapKey := reflect.ValueOf(fieldName)
+ rawMapVal := dataVal.MapIndex(rawMapKey)
+ if !rawMapVal.IsValid() {
+ // Do a slower search by iterating over each key and
+ // doing case-insensitive search.
+ if d.option.KeyReplacer != nil {
+ fieldName = d.option.KeyReplacer.Replace(fieldName)
+ }
+ for dataValKey := range dataValKeys {
+ mK, ok := dataValKey.Interface().(string)
+ if !ok {
+ // Not a string key
+ continue
+ }
+ if d.option.KeyReplacer != nil {
+ mK = d.option.KeyReplacer.Replace(mK)
+ }
+
+ if strings.EqualFold(mK, fieldName) {
+ rawMapKey = dataValKey
+ rawMapVal = dataVal.MapIndex(dataValKey)
+ break
+ }
+ }
+
+ if !rawMapVal.IsValid() {
+ // There was no matching key in the map for the value in
+ // the struct. Just ignore.
+ continue
+ }
+ }
+
+ // Delete the key we're using from the unused map so we stop tracking
+ delete(dataValKeysUnused, rawMapKey.Interface())
+
+ if !fieldValue.IsValid() {
+ // This should never happen
+ panic("field is not valid")
+ }
+
+ // If we can't set the field, then it is unexported or something,
+ // and we just continue onwards.
+ if !fieldValue.CanSet() {
+ continue
+ }
+
+ // If the name is empty string, then we're at the root, and we
+ // don't dot-join the fields.
+ if name != "" {
+ fieldName = fmt.Sprintf("%s.%s", name, fieldName)
+ }
+
+ if err := d.decode(fieldName, rawMapVal.Interface(), fieldValue); err != nil {
+ errors = append(errors, err.Error())
+ }
+ }
+
+ if len(errors) > 0 {
+ return fmt.Errorf(strings.Join(errors, ","))
+ }
+
+ return nil
+}
+
+func (d *Decoder) setInterface(name string, data any, val reflect.Value) (err error) {
+ dataVal := reflect.ValueOf(data)
+ val.Set(dataVal)
+ return nil
+}
+
+func (d *Decoder) decodeTextUnmarshaller(name string, data any, val reflect.Value) (bool, error) {
+ if !val.CanAddr() {
+ return false, nil
+ }
+ valAddr := val.Addr()
+ if !valAddr.CanInterface() {
+ return false, nil
+ }
+ unmarshaller, ok := valAddr.Interface().(encoding.TextUnmarshaler)
+ if !ok {
+ return false, nil
+ }
+ var str string
+ if err := d.decodeString(name, data, reflect.Indirect(reflect.ValueOf(&str))); err != nil {
+ return false, err
+ }
+ if err := unmarshaller.UnmarshalText([]byte(str)); err != nil {
+ return true, fmt.Errorf("cannot parse '%s' as %s: %s", name, val.Type(), err)
+ }
+ return true, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/structure/structure_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/structure/structure_test.go
new file mode 100644
index 0000000..e5fe693
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/structure/structure_test.go
@@ -0,0 +1,269 @@
+package structure
+
+import (
+ "strconv"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+var (
+ decoder = NewDecoder(Option{TagName: "test"})
+ weakTypeDecoder = NewDecoder(Option{TagName: "test", WeaklyTypedInput: true})
+)
+
+type Baz struct {
+ Foo int `test:"foo"`
+ Bar string `test:"bar"`
+}
+
+type BazSlice struct {
+ Foo int `test:"foo"`
+ Bar []string `test:"bar"`
+}
+
+type BazOptional struct {
+ Foo int `test:"foo,omitempty"`
+ Bar string `test:"bar,omitempty"`
+}
+
+func TestStructure_Basic(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": 1,
+ "bar": "test",
+ "extra": false,
+ }
+
+ goal := &Baz{
+ Foo: 1,
+ Bar: "test",
+ }
+
+ s := &Baz{}
+ err := decoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.Equal(t, goal, s)
+}
+
+func TestStructure_Slice(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": 1,
+ "bar": []string{"one", "two"},
+ }
+
+ goal := &BazSlice{
+ Foo: 1,
+ Bar: []string{"one", "two"},
+ }
+
+ s := &BazSlice{}
+ err := decoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.Equal(t, goal, s)
+}
+
+func TestStructure_Optional(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": 1,
+ }
+
+ goal := &BazOptional{
+ Foo: 1,
+ }
+
+ s := &BazOptional{}
+ err := decoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.Equal(t, goal, s)
+}
+
+func TestStructure_MissingKey(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": 1,
+ }
+
+ s := &Baz{}
+ err := decoder.Decode(rawMap, s)
+ assert.NotNilf(t, err, "should throw error: %#v", s)
+}
+
+func TestStructure_ParamError(t *testing.T) {
+ rawMap := map[string]any{}
+ s := Baz{}
+ err := decoder.Decode(rawMap, s)
+ assert.NotNilf(t, err, "should throw error: %#v", s)
+}
+
+func TestStructure_SliceTypeError(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": 1,
+ "bar": []int{1, 2},
+ }
+
+ s := &BazSlice{}
+ err := decoder.Decode(rawMap, s)
+ assert.NotNilf(t, err, "should throw error: %#v", s)
+}
+
+func TestStructure_WeakType(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": "1",
+ "bar": []int{1},
+ }
+
+ goal := &BazSlice{
+ Foo: 1,
+ Bar: []string{"1"},
+ }
+
+ s := &BazSlice{}
+ err := weakTypeDecoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.Equal(t, goal, s)
+}
+
+func TestStructure_Nest(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": 1,
+ }
+
+ goal := BazOptional{
+ Foo: 1,
+ }
+
+ s := &struct {
+ BazOptional
+ }{}
+ err := decoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.Equal(t, s.BazOptional, goal)
+}
+
+func TestStructure_SliceNilValue(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": 1,
+ "bar": []any{"bar", nil},
+ }
+
+ goal := &BazSlice{
+ Foo: 1,
+ Bar: []string{"bar", ""},
+ }
+
+ s := &BazSlice{}
+ err := weakTypeDecoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.Equal(t, goal.Bar, s.Bar)
+
+ s = &BazSlice{}
+ err = decoder.Decode(rawMap, s)
+ assert.NotNil(t, err)
+}
+
+func TestStructure_SliceNilValueComplex(t *testing.T) {
+ rawMap := map[string]any{
+ "bar": []any{map[string]any{"bar": "foo"}, nil},
+ }
+
+ s := &struct {
+ Bar []map[string]any `test:"bar"`
+ }{}
+
+ err := decoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.Nil(t, s.Bar[1])
+
+ ss := &struct {
+ Bar []Baz `test:"bar"`
+ }{}
+
+ err = decoder.Decode(rawMap, ss)
+ assert.NotNil(t, err)
+}
+
+func TestStructure_SliceCap(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": []string{},
+ }
+
+ s := &struct {
+ Foo []string `test:"foo,omitempty"`
+ Bar []string `test:"bar,omitempty"`
+ }{}
+
+ err := decoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.NotNil(t, s.Foo) // structure's Decode will ensure value not nil when input has value even it was set an empty array
+ assert.Nil(t, s.Bar)
+}
+
+func TestStructure_Base64(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": "AQID",
+ }
+
+ s := &struct {
+ Foo []byte `test:"foo"`
+ }{}
+
+ err := decoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.Equal(t, []byte{1, 2, 3}, s.Foo)
+}
+
+func TestStructure_Pointer(t *testing.T) {
+ rawMap := map[string]any{
+ "foo": "foo",
+ }
+
+ s := &struct {
+ Foo *string `test:"foo,omitempty"`
+ Bar *string `test:"bar,omitempty"`
+ }{}
+
+ err := decoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.NotNil(t, s.Foo)
+ assert.Equal(t, "foo", *s.Foo)
+ assert.Nil(t, s.Bar)
+}
+
+type num struct {
+ a int
+}
+
+func (n *num) UnmarshalText(text []byte) (err error) {
+ n.a, err = strconv.Atoi(string(text))
+ return
+}
+
+func TestStructure_TextUnmarshaller(t *testing.T) {
+ rawMap := map[string]any{
+ "num": "255",
+ "num_p": "127",
+ }
+
+ s := &struct {
+ Num num `test:"num"`
+ NumP *num `test:"num_p"`
+ }{}
+
+ err := decoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.Equal(t, 255, s.Num.a)
+ assert.NotNil(t, s.NumP)
+ assert.Equal(t, s.NumP.a, 127)
+
+ // test WeaklyTypedInput
+ rawMap["num"] = 256
+ err = decoder.Decode(rawMap, s)
+ assert.NotNilf(t, err, "should throw error: %#v", s)
+ err = weakTypeDecoder.Decode(rawMap, s)
+ assert.Nil(t, err)
+ assert.Equal(t, 256, s.Num.a)
+
+ // test invalid input
+ rawMap["num_p"] = "abc"
+ err = decoder.Decode(rawMap, s)
+ assert.NotNilf(t, err, "should throw error: %#v", s)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/callback.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/callback.go
new file mode 100644
index 0000000..ad734c0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/callback.go
@@ -0,0 +1,50 @@
+package utils
+
+import (
+ "io"
+ "sync"
+
+ list "github.com/bahlo/generic-list-go"
+)
+
+type Callback[T any] struct {
+ list list.List[func(T)]
+ mutex sync.RWMutex
+}
+
+func NewCallback[T any]() *Callback[T] {
+ return &Callback[T]{}
+}
+
+func (c *Callback[T]) Register(item func(T)) io.Closer {
+ c.mutex.Lock()
+ defer c.mutex.Unlock()
+ element := c.list.PushBack(item)
+ return &callbackCloser[T]{
+ element: element,
+ callback: c,
+ }
+}
+
+func (c *Callback[T]) Emit(item T) {
+ c.mutex.RLock()
+ defer c.mutex.RUnlock()
+ for element := c.list.Front(); element != nil; element = element.Next() {
+ go element.Value(item)
+ }
+}
+
+type callbackCloser[T any] struct {
+ element *list.Element[func(T)]
+ callback *Callback[T]
+ once sync.Once
+}
+
+func (c *callbackCloser[T]) Close() error {
+ c.once.Do(func() {
+ c.callback.mutex.Lock()
+ defer c.callback.mutex.Unlock()
+ c.callback.list.Remove(c.element)
+ })
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/global_id.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/global_id.go
new file mode 100644
index 0000000..68b4613
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/global_id.go
@@ -0,0 +1,17 @@
+package utils
+
+import (
+ "hash/maphash"
+ "unsafe"
+)
+
+var globalSeed = maphash.MakeSeed()
+
+func GlobalID(material string) (id [8]byte) {
+ *(*uint64)(unsafe.Pointer(&id[0])) = maphash.String(globalSeed, material)
+ return
+}
+
+func MapHash(material string) uint64 {
+ return maphash.String(globalSeed, material)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/hash.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/hash.go
new file mode 100644
index 0000000..6957e2c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/hash.go
@@ -0,0 +1,62 @@
+package utils
+
+import (
+ "crypto/md5"
+ "encoding/hex"
+ "errors"
+)
+
+// HashType warps hash array inside struct
+// someday can change to other hash algorithm simply
+type HashType struct {
+ md5 [md5.Size]byte // MD5
+}
+
+func MakeHash(data []byte) HashType {
+ return HashType{md5.Sum(data)}
+}
+
+func (h HashType) Equal(hash HashType) bool {
+ return h.md5 == hash.md5
+}
+
+func (h HashType) Bytes() []byte {
+ return h.md5[:]
+}
+
+func (h HashType) String() string {
+ return hex.EncodeToString(h.Bytes())
+}
+
+func (h HashType) MarshalText() ([]byte, error) {
+ return []byte(h.String()), nil
+}
+
+func (h *HashType) UnmarshalText(data []byte) error {
+ if hex.DecodedLen(len(data)) != md5.Size {
+ return errors.New("invalid hash length")
+ }
+ _, err := hex.Decode(h.md5[:], data)
+ return err
+}
+
+func (h HashType) MarshalBinary() ([]byte, error) {
+ return h.md5[:], nil
+}
+
+func (h *HashType) UnmarshalBinary(data []byte) error {
+ if len(data) != md5.Size {
+ return errors.New("invalid hash length")
+ }
+ copy(h.md5[:], data)
+ return nil
+}
+
+func (h HashType) Len() int {
+ return len(h.md5)
+}
+
+func (h HashType) IsValid() bool {
+ var zero HashType
+ return h != zero
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/manipulation.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/manipulation.go
new file mode 100644
index 0000000..6c98a72
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/manipulation.go
@@ -0,0 +1,8 @@
+package utils
+
+import "github.com/samber/lo"
+
+func EmptyOr[T comparable](v T, def T) T {
+ ret, _ := lo.Coalesce(v, def)
+ return ret
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/must.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/must.go
new file mode 100644
index 0000000..2dd5ff5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/must.go
@@ -0,0 +1,8 @@
+package utils
+
+func MustOK[T any](result T, ok bool) T {
+ if ok {
+ return result
+ }
+ panic("operation failed")
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/range.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/range.go
new file mode 100644
index 0000000..7b4a235
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/range.go
@@ -0,0 +1,44 @@
+package utils
+
+import (
+ "golang.org/x/exp/constraints"
+)
+
+type Range[T constraints.Ordered] struct {
+ start T
+ end T
+}
+
+func NewRange[T constraints.Ordered](start, end T) Range[T] {
+ if start > end {
+ return Range[T]{
+ start: end,
+ end: start,
+ }
+ }
+
+ return Range[T]{
+ start: start,
+ end: end,
+ }
+}
+
+func (r Range[T]) Contains(t T) bool {
+ return t >= r.start && t <= r.end
+}
+
+func (r Range[T]) LeftContains(t T) bool {
+ return t >= r.start && t < r.end
+}
+
+func (r Range[T]) RightContains(t T) bool {
+ return t > r.start && t <= r.end
+}
+
+func (r Range[T]) Start() T {
+ return r.start
+}
+
+func (r Range[T]) End() T {
+ return r.end
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/ranges.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/ranges.go
new file mode 100644
index 0000000..c71f84c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/ranges.go
@@ -0,0 +1,148 @@
+package utils
+
+import (
+ "errors"
+ "fmt"
+ "strconv"
+ "strings"
+
+ "golang.org/x/exp/constraints"
+)
+
+type IntRanges[T constraints.Integer] []Range[T]
+
+var errIntRanges = errors.New("intRanges error")
+
+func newIntRanges[T constraints.Integer](expected string, parseFn func(string) (T, error)) (IntRanges[T], error) {
+ // example: 200 or 200/302 or 200-400 or 200/204/401-429/501-503
+ expected = strings.TrimSpace(expected)
+ if len(expected) == 0 || expected == "*" {
+ return nil, nil
+ }
+
+ // support: 200,302 or 200,204,401-429,501-503
+ expected = strings.ReplaceAll(expected, ",", "/")
+ list := strings.Split(expected, "/")
+ if len(list) > 28 {
+ return nil, fmt.Errorf("%w, too many ranges to use, maximum support 28 ranges", errIntRanges)
+ }
+
+ return newIntRangesFromList[T](list, parseFn)
+}
+
+func newIntRangesFromList[T constraints.Integer](list []string, parseFn func(string) (T, error)) (IntRanges[T], error) {
+ var ranges IntRanges[T]
+ for _, s := range list {
+ if s == "" {
+ continue
+ }
+
+ status := strings.Split(s, "-")
+ statusLen := len(status)
+ if statusLen > 2 {
+ return nil, errIntRanges
+ }
+
+ start, err := parseFn(strings.Trim(status[0], "[ ]"))
+ if err != nil {
+ return nil, errIntRanges
+ }
+
+ switch statusLen {
+ case 1: // Port range
+ ranges = append(ranges, NewRange(T(start), T(start)))
+ case 2: // Single port
+ end, err := parseFn(strings.Trim(status[1], "[ ]"))
+ if err != nil {
+ return nil, errIntRanges
+ }
+
+ ranges = append(ranges, NewRange(T(start), T(end)))
+ }
+ }
+
+ return ranges, nil
+}
+
+func parseUnsigned[T constraints.Unsigned](s string) (T, error) {
+ if val, err := strconv.ParseUint(s, 10, 64); err == nil {
+ return T(val), nil
+ } else {
+ return 0, err
+ }
+}
+
+func NewUnsignedRanges[T constraints.Unsigned](expected string) (IntRanges[T], error) {
+ return newIntRanges(expected, parseUnsigned[T])
+}
+
+func NewUnsignedRangesFromList[T constraints.Unsigned](list []string) (IntRanges[T], error) {
+ return newIntRangesFromList(list, parseUnsigned[T])
+}
+
+func parseSigned[T constraints.Signed](s string) (T, error) {
+ if val, err := strconv.ParseInt(s, 10, 64); err == nil {
+ return T(val), nil
+ } else {
+ return 0, err
+ }
+}
+
+func NewSignedRanges[T constraints.Signed](expected string) (IntRanges[T], error) {
+ return newIntRanges(expected, parseSigned[T])
+}
+
+func NewSignedRangesFromList[T constraints.Signed](list []string) (IntRanges[T], error) {
+ return newIntRangesFromList(list, parseSigned[T])
+}
+
+func (ranges IntRanges[T]) Check(status T) bool {
+ if len(ranges) == 0 {
+ return true
+ }
+
+ for _, segment := range ranges {
+ if segment.Contains(status) {
+ return true
+ }
+ }
+
+ return false
+}
+
+func (ranges IntRanges[T]) String() string {
+ if len(ranges) == 0 {
+ return "*"
+ }
+
+ terms := make([]string, len(ranges))
+ for i, r := range ranges {
+ start := r.Start()
+ end := r.End()
+
+ var term string
+ if start == end {
+ term = strconv.Itoa(int(start))
+ } else {
+ term = strconv.Itoa(int(start)) + "-" + strconv.Itoa(int(end))
+ }
+
+ terms[i] = term
+ }
+
+ return strings.Join(terms, "/")
+}
+
+func (ranges IntRanges[T]) Range(f func(t T) bool) {
+ if len(ranges) == 0 {
+ return
+ }
+
+ for _, r := range ranges {
+ for i := r.Start(); i <= r.End(); i++ {
+ if !f(i) {
+ return
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/slice.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/slice.go
new file mode 100644
index 0000000..1b0fa49
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/slice.go
@@ -0,0 +1,34 @@
+package utils
+
+import (
+ "errors"
+ "fmt"
+ "reflect"
+)
+
+func Filter[T comparable](tSlice []T, filter func(t T) bool) []T {
+ result := make([]T, 0)
+ for _, t := range tSlice {
+ if filter(t) {
+ result = append(result, t)
+ }
+ }
+ return result
+}
+
+func ToStringSlice(value any) ([]string, error) {
+ strArr := make([]string, 0)
+ switch reflect.TypeOf(value).Kind() {
+ case reflect.Slice, reflect.Array:
+ origin := reflect.ValueOf(value)
+ for i := 0; i < origin.Len(); i++ {
+ item := fmt.Sprintf("%v", origin.Index(i))
+ strArr = append(strArr, item)
+ }
+ case reflect.String:
+ strArr = append(strArr, fmt.Sprintf("%v", value))
+ default:
+ return nil, errors.New("value format error, must be string or array")
+ }
+ return strArr, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/string_unsafe.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/string_unsafe.go
new file mode 100644
index 0000000..e427d29
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/string_unsafe.go
@@ -0,0 +1,21 @@
+package utils
+
+import "unsafe"
+
+// ImmutableBytesFromString is equivalent to []byte(s), except that it uses the
+// same memory backing s instead of making a heap-allocated copy. This is only
+// valid if the returned slice is never mutated.
+func ImmutableBytesFromString(s string) []byte {
+ b := unsafe.StringData(s)
+ return unsafe.Slice(b, len(s))
+}
+
+// StringFromImmutableBytes is equivalent to string(bs), except that it uses
+// the same memory backing bs instead of making a heap-allocated copy. This is
+// only valid if bs is never mutated after StringFromImmutableBytes returns.
+func StringFromImmutableBytes(bs []byte) string {
+ if len(bs) == 0 {
+ return ""
+ }
+ return unsafe.String(&bs[0], len(bs))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/strings.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/strings.go
new file mode 100644
index 0000000..5d5ae59
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/strings.go
@@ -0,0 +1,9 @@
+package utils
+
+func Reverse(s string) string {
+ a := []rune(s)
+ for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 {
+ a[i], a[j] = a[j], a[i]
+ }
+ return string(a)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/uuid.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/uuid.go
new file mode 100644
index 0000000..d9a8b78
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/uuid.go
@@ -0,0 +1,71 @@
+package utils
+
+import (
+ "github.com/gofrs/uuid/v5"
+ "github.com/metacubex/randv2"
+)
+
+type unsafeRandReader struct{}
+
+func (r unsafeRandReader) Read(p []byte) (n int, err error) {
+ // modify from https://github.com/golang/go/blob/587c3847da81aa7cfc3b3db2677c8586c94df13a/src/runtime/rand.go#L70-L89
+ // Inspired by wyrand.
+ n = len(p)
+ v := randv2.Uint64()
+ for len(p) > 0 {
+ v ^= 0xa0761d6478bd642f
+ v *= 0xe7037ed1a0b428db
+ size := 8
+ if len(p) < 8 {
+ size = len(p)
+ }
+ for i := 0; i < size; i++ {
+ p[i] ^= byte(v >> (8 * i))
+ }
+ p = p[size:]
+ v = v>>32 | v<<32
+ }
+
+ return
+}
+
+var UnsafeRandReader = unsafeRandReader{}
+
+var UnsafeUUIDGenerator = uuid.NewGenWithOptions(uuid.WithRandomReader(UnsafeRandReader))
+
+func NewUUIDV1() uuid.UUID {
+ u, _ := UnsafeUUIDGenerator.NewV1() // unsafeRandReader wouldn't cause error, so ignore err is safe
+ return u
+}
+
+func NewUUIDV3(ns uuid.UUID, name string) uuid.UUID {
+ return UnsafeUUIDGenerator.NewV3(ns, name)
+}
+
+func NewUUIDV4() uuid.UUID {
+ u, _ := UnsafeUUIDGenerator.NewV4() // unsafeRandReader wouldn't cause error, so ignore err is safe
+ return u
+}
+
+func NewUUIDV5(ns uuid.UUID, name string) uuid.UUID {
+ return UnsafeUUIDGenerator.NewV5(ns, name)
+}
+
+func NewUUIDV6() uuid.UUID {
+ u, _ := UnsafeUUIDGenerator.NewV6() // unsafeRandReader wouldn't cause error, so ignore err is safe
+ return u
+}
+
+func NewUUIDV7() uuid.UUID {
+ u, _ := UnsafeUUIDGenerator.NewV7() // unsafeRandReader wouldn't cause error, so ignore err is safe
+ return u
+}
+
+// UUIDMap https://github.com/XTLS/Xray-core/issues/158#issue-783294090
+func UUIDMap(str string) (uuid.UUID, error) {
+ u, err := uuid.FromString(str)
+ if err != nil {
+ return NewUUIDV5(uuid.Nil, str), nil
+ }
+ return u, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/uuid_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/uuid_test.go
new file mode 100644
index 0000000..3e0507d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/common/utils/uuid_test.go
@@ -0,0 +1,74 @@
+package utils
+
+import (
+ "github.com/gofrs/uuid/v5"
+ "reflect"
+ "testing"
+)
+
+func TestUUIDMap(t *testing.T) {
+ type args struct {
+ str string
+ }
+
+ tests := []struct {
+ name string
+ args args
+ want uuid.UUID
+ wantErr bool
+ }{
+ {
+ name: "uuid-test-1",
+ args: args{
+ str: "82410302-039e-41b6-98b0-d964084b4170",
+ },
+ want: uuid.FromStringOrNil("82410302-039e-41b6-98b0-d964084b4170"),
+ wantErr: false,
+ },
+ {
+ name: "uuid-test-2",
+ args: args{
+ str: "88c502e6-d7eb-4c8e-8259-94cb13d83c77",
+ },
+ want: uuid.FromStringOrNil("88c502e6-d7eb-4c8e-8259-94cb13d83c77"),
+ wantErr: false,
+ },
+ {
+ name: "uuid-map-1",
+ args: args{
+ str: "123456",
+ },
+ want: uuid.FromStringOrNil("f8598425-92f2-5508-a071-4fc67f9040ac"),
+ wantErr: false,
+ },
+ // GENERATED BY 'xray uuid -i'
+ {
+ name: "uuid-map-2",
+ args: args{
+ str: "a9dk23bz0",
+ },
+ want: uuid.FromStringOrNil("c91481b6-fc0f-5d9e-b166-5ddf07b9c3c5"),
+ wantErr: false,
+ },
+ {
+ name: "uuid-map-2",
+ args: args{
+ str: "中文123",
+ },
+ want: uuid.FromStringOrNil("145c544c-2229-59e5-8dbb-3f33b7610d26"),
+ wantErr: false,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ got, err := UUIDMap(tt.args.str)
+ if (err != nil) != tt.wantErr {
+ t.Errorf("UUIDMap() error = %v, wantErr %v", err, tt.wantErr)
+ return
+ }
+ if !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("UUIDMap() got = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/auth/auth.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/auth/auth.go
new file mode 100644
index 0000000..176b21d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/auth/auth.go
@@ -0,0 +1,43 @@
+package auth
+
+type Authenticator interface {
+ Verify(user string, pass string) bool
+ Users() []string
+}
+
+type AuthStore interface {
+ Authenticator() Authenticator
+ SetAuthenticator(Authenticator)
+}
+
+type AuthUser struct {
+ User string
+ Pass string
+}
+
+type inMemoryAuthenticator struct {
+ storage map[string]string
+ usernames []string
+}
+
+func (au *inMemoryAuthenticator) Verify(user string, pass string) bool {
+ realPass, ok := au.storage[user]
+ return ok && realPass == pass
+}
+
+func (au *inMemoryAuthenticator) Users() []string { return au.usernames }
+
+func NewAuthenticator(users []AuthUser) Authenticator {
+ if len(users) == 0 {
+ return nil
+ }
+ au := &inMemoryAuthenticator{
+ storage: make(map[string]string),
+ usernames: make([]string, 0, len(users)),
+ }
+ for _, user := range users {
+ au.storage[user.User] = user.Pass
+ au.usernames = append(au.usernames, user.User)
+ }
+ return au
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/ca/ca-certificates.crt b/Android-kotlin-Code/core/src/foss/golang/clash/component/ca/ca-certificates.crt
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/ca/config.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/ca/config.go
new file mode 100644
index 0000000..9d002db
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/ca/config.go
@@ -0,0 +1,156 @@
+package ca
+
+import (
+ "bytes"
+ "crypto/sha256"
+ "crypto/tls"
+ "crypto/x509"
+ _ "embed"
+ "encoding/hex"
+ "errors"
+ "fmt"
+ "os"
+ "strconv"
+ "strings"
+ "sync"
+
+ C "github.com/metacubex/mihomo/constant"
+)
+
+var trustCerts []*x509.Certificate
+var globalCertPool *x509.CertPool
+var mutex sync.RWMutex
+var errNotMatch = errors.New("certificate fingerprints do not match")
+
+//go:embed ca-certificates.crt
+var _CaCertificates []byte
+var DisableEmbedCa, _ = strconv.ParseBool(os.Getenv("DISABLE_EMBED_CA"))
+var DisableSystemCa, _ = strconv.ParseBool(os.Getenv("DISABLE_SYSTEM_CA"))
+
+func AddCertificate(certificate string) error {
+ mutex.Lock()
+ defer mutex.Unlock()
+ if certificate == "" {
+ return fmt.Errorf("certificate is empty")
+ }
+ if cert, err := x509.ParseCertificate([]byte(certificate)); err == nil {
+ trustCerts = append(trustCerts, cert)
+ return nil
+ } else {
+ return fmt.Errorf("add certificate failed")
+ }
+}
+
+func initializeCertPool() {
+ var err error
+ if DisableSystemCa {
+ globalCertPool = x509.NewCertPool()
+ } else {
+ globalCertPool, err = x509.SystemCertPool()
+ if err != nil {
+ globalCertPool = x509.NewCertPool()
+ }
+ }
+ for _, cert := range trustCerts {
+ globalCertPool.AddCert(cert)
+ }
+ if !DisableEmbedCa {
+ globalCertPool.AppendCertsFromPEM(_CaCertificates)
+ }
+}
+
+func ResetCertificate() {
+ mutex.Lock()
+ defer mutex.Unlock()
+ trustCerts = nil
+ initializeCertPool()
+}
+
+func getCertPool() *x509.CertPool {
+ if globalCertPool == nil {
+ mutex.Lock()
+ defer mutex.Unlock()
+ if globalCertPool != nil {
+ return globalCertPool
+ }
+ initializeCertPool()
+ }
+ return globalCertPool
+}
+
+func verifyFingerprint(fingerprint *[32]byte) func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error {
+ return func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error {
+ // ssl pining
+ for i := range rawCerts {
+ rawCert := rawCerts[i]
+ cert, err := x509.ParseCertificate(rawCert)
+ if err == nil {
+ hash := sha256.Sum256(cert.Raw)
+ if bytes.Equal(fingerprint[:], hash[:]) {
+ return nil
+ }
+ }
+ }
+ return errNotMatch
+ }
+}
+
+func convertFingerprint(fingerprint string) (*[32]byte, error) {
+ fingerprint = strings.TrimSpace(strings.Replace(fingerprint, ":", "", -1))
+ fpByte, err := hex.DecodeString(fingerprint)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(fpByte) != 32 {
+ return nil, fmt.Errorf("fingerprint string length error,need sha256 fingerprint")
+ }
+ return (*[32]byte)(fpByte), nil
+}
+
+// GetTLSConfig specified fingerprint, customCA and customCAString
+func GetTLSConfig(tlsConfig *tls.Config, fingerprint string, customCA string, customCAString string) (*tls.Config, error) {
+ if tlsConfig == nil {
+ tlsConfig = &tls.Config{}
+ }
+ var certificate []byte
+ var err error
+ if len(customCA) > 0 {
+ certificate, err = os.ReadFile(C.Path.Resolve(customCA))
+ if err != nil {
+ return nil, fmt.Errorf("load ca error: %w", err)
+ }
+ } else if customCAString != "" {
+ certificate = []byte(customCAString)
+ }
+ if len(certificate) > 0 {
+ certPool := x509.NewCertPool()
+ if !certPool.AppendCertsFromPEM(certificate) {
+ return nil, fmt.Errorf("failed to parse certificate:\n\n %s", certificate)
+ }
+ tlsConfig.RootCAs = certPool
+ } else {
+ tlsConfig.RootCAs = getCertPool()
+ }
+ if len(fingerprint) > 0 {
+ var fingerprintBytes *[32]byte
+ fingerprintBytes, err = convertFingerprint(fingerprint)
+ if err != nil {
+ return nil, err
+ }
+ tlsConfig = GetGlobalTLSConfig(tlsConfig)
+ tlsConfig.VerifyPeerCertificate = verifyFingerprint(fingerprintBytes)
+ tlsConfig.InsecureSkipVerify = true
+ }
+ return tlsConfig, nil
+}
+
+// GetSpecifiedFingerprintTLSConfig specified fingerprint
+func GetSpecifiedFingerprintTLSConfig(tlsConfig *tls.Config, fingerprint string) (*tls.Config, error) {
+ return GetTLSConfig(tlsConfig, fingerprint, "", "")
+}
+
+func GetGlobalTLSConfig(tlsConfig *tls.Config) *tls.Config {
+ tlsConfig, _ = GetTLSConfig(tlsConfig, "", "", "")
+ return tlsConfig
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/ca/fix_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/ca/fix_windows.go
new file mode 100644
index 0000000..4251179
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/ca/fix_windows.go
@@ -0,0 +1,14 @@
+package ca
+
+import (
+ "github.com/metacubex/mihomo/constant/features"
+)
+
+func init() {
+ // crypto/x509: certificate validation in Windows fails to validate IP in SAN
+ // https://github.com/golang/go/issues/37176
+ // As far as I can tell this is still the case on most older versions of Windows (but seems to be fixed in 10)
+ if features.WindowsMajorVersion < 10 && len(_CaCertificates) > 0 {
+ DisableSystemCa = true
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/cidr/ipcidr_set.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/cidr/ipcidr_set.go
new file mode 100644
index 0000000..4bde967
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/cidr/ipcidr_set.go
@@ -0,0 +1,90 @@
+package cidr
+
+import (
+ "fmt"
+ "net/netip"
+ "unsafe"
+
+ "go4.org/netipx"
+)
+
+type IpCidrSet struct {
+ // must same with netipx.IPSet
+ rr []netipx.IPRange
+}
+
+func NewIpCidrSet() *IpCidrSet {
+ return &IpCidrSet{}
+}
+
+func (set *IpCidrSet) AddIpCidrForString(ipCidr string) error {
+ prefix, err := netip.ParsePrefix(ipCidr)
+ if err != nil {
+ return err
+ }
+ return set.AddIpCidr(prefix)
+}
+
+func (set *IpCidrSet) AddIpCidr(ipCidr netip.Prefix) (err error) {
+ if r := netipx.RangeOfPrefix(ipCidr); r.IsValid() {
+ set.rr = append(set.rr, r)
+ } else {
+ err = fmt.Errorf("not valid ipcidr range: %s", ipCidr)
+ }
+ return
+}
+
+func (set *IpCidrSet) IsContainForString(ipString string) bool {
+ ip, err := netip.ParseAddr(ipString)
+ if err != nil {
+ return false
+ }
+ return set.IsContain(ip)
+}
+
+func (set *IpCidrSet) IsContain(ip netip.Addr) bool {
+ return set.ToIPSet().Contains(ip.WithZone(""))
+}
+
+// MatchIp implements C.IpMatcher
+func (set *IpCidrSet) MatchIp(ip netip.Addr) bool {
+ if set.IsEmpty() {
+ return false
+ }
+ return set.IsContain(ip)
+}
+
+func (set *IpCidrSet) Merge() error {
+ var b netipx.IPSetBuilder
+ b.AddSet(set.ToIPSet())
+ i, err := b.IPSet()
+ if err != nil {
+ return err
+ }
+ set.fromIPSet(i)
+ return nil
+}
+
+func (set *IpCidrSet) IsEmpty() bool {
+ return set == nil || len(set.rr) == 0
+}
+
+func (set *IpCidrSet) Foreach(f func(prefix netip.Prefix) bool) {
+ for _, r := range set.rr {
+ for _, prefix := range r.Prefixes() {
+ if !f(prefix) {
+ return
+ }
+ }
+ }
+}
+
+// ToIPSet not safe convert to *netipx.IPSet
+// be careful, must be used after Merge
+func (set *IpCidrSet) ToIPSet() *netipx.IPSet {
+ return (*netipx.IPSet)(unsafe.Pointer(set))
+}
+
+func (set *IpCidrSet) fromIPSet(i *netipx.IPSet) {
+ *set = *(*IpCidrSet)(unsafe.Pointer(i))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/cidr/ipcidr_set_bin.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/cidr/ipcidr_set_bin.go
new file mode 100644
index 0000000..f6a0348
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/cidr/ipcidr_set_bin.go
@@ -0,0 +1,77 @@
+package cidr
+
+import (
+ "encoding/binary"
+ "errors"
+ "io"
+ "net/netip"
+
+ "go4.org/netipx"
+)
+
+func (ss *IpCidrSet) WriteBin(w io.Writer) (err error) {
+ // version
+ _, err = w.Write([]byte{1})
+ if err != nil {
+ return err
+ }
+
+ // rr
+ err = binary.Write(w, binary.BigEndian, int64(len(ss.rr)))
+ if err != nil {
+ return err
+ }
+ for _, r := range ss.rr {
+ err = binary.Write(w, binary.BigEndian, r.From().As16())
+ if err != nil {
+ return err
+ }
+ err = binary.Write(w, binary.BigEndian, r.To().As16())
+ if err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
+func ReadIpCidrSet(r io.Reader) (ss *IpCidrSet, err error) {
+ // version
+ version := make([]byte, 1)
+ _, err = io.ReadFull(r, version)
+ if err != nil {
+ return nil, err
+ }
+ if version[0] != 1 {
+ return nil, errors.New("version is invalid")
+ }
+
+ ss = NewIpCidrSet()
+ var length int64
+
+ // rr
+ err = binary.Read(r, binary.BigEndian, &length)
+ if err != nil {
+ return nil, err
+ }
+ if length < 1 {
+ return nil, errors.New("length is invalid")
+ }
+ ss.rr = make([]netipx.IPRange, length)
+ for i := int64(0); i < length; i++ {
+ var a16 [16]byte
+ err = binary.Read(r, binary.BigEndian, &a16)
+ if err != nil {
+ return nil, err
+ }
+ from := netip.AddrFrom16(a16).Unmap()
+ err = binary.Read(r, binary.BigEndian, &a16)
+ if err != nil {
+ return nil, err
+ }
+ to := netip.AddrFrom16(a16).Unmap()
+ ss.rr[i] = netipx.IPRangeFrom(from, to)
+ }
+
+ return ss, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/cidr/ipcidr_set_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/cidr/ipcidr_set_test.go
new file mode 100644
index 0000000..b229aa2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/cidr/ipcidr_set_test.go
@@ -0,0 +1,107 @@
+package cidr
+
+import (
+ "testing"
+)
+
+func TestIpv4(t *testing.T) {
+ tests := []struct {
+ name string
+ ipCidr string
+ ip string
+ expected bool
+ }{
+ {
+ name: "Test Case 1",
+ ipCidr: "149.154.160.0/20",
+ ip: "149.154.160.0",
+ expected: true,
+ },
+ {
+ name: "Test Case 2",
+ ipCidr: "192.168.0.0/16",
+ ip: "10.0.0.1",
+ expected: false,
+ },
+ }
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ set := &IpCidrSet{}
+ set.AddIpCidrForString(test.ipCidr)
+
+ result := set.IsContainForString(test.ip)
+ if result != test.expected {
+ t.Errorf("Expected result: %v, got: %v", test.expected, result)
+ }
+ })
+ }
+}
+
+func TestIpv6(t *testing.T) {
+ tests := []struct {
+ name string
+ ipCidr string
+ ip string
+ expected bool
+ }{
+ {
+ name: "Test Case 1",
+ ipCidr: "2409:8000::/20",
+ ip: "2409:8087:1e03:21::27",
+ expected: true,
+ },
+ {
+ name: "Test Case 2",
+ ipCidr: "240e::/16",
+ ip: "240e:964:ea02:100:1800::71",
+ expected: true,
+ },
+ }
+ // Add more test cases as needed
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ set := &IpCidrSet{}
+ set.AddIpCidrForString(test.ipCidr)
+
+ result := set.IsContainForString(test.ip)
+ if result != test.expected {
+ t.Errorf("Expected result: %v, got: %v", test.expected, result)
+ }
+ })
+ }
+}
+
+func TestMerge(t *testing.T) {
+ tests := []struct {
+ name string
+ ipCidr1 string
+ ipCidr2 string
+ ipCidr3 string
+ expectedLen int
+ }{
+ {
+ name: "Test Case 1",
+ ipCidr1: "2409:8000::/20",
+ ipCidr2: "2409:8000::/21",
+ ipCidr3: "2409:8000::/48",
+ expectedLen: 1,
+ },
+ }
+
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ set := &IpCidrSet{}
+ set.AddIpCidrForString(test.ipCidr1)
+ set.AddIpCidrForString(test.ipCidr2)
+ set.Merge()
+
+ rangesLen := len(set.rr)
+
+ if rangesLen != test.expectedLen {
+ t.Errorf("Expected len: %v, got: %v", test.expectedLen, rangesLen)
+ }
+ })
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dhcp/conn.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dhcp/conn.go
new file mode 100644
index 0000000..61c801b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dhcp/conn.go
@@ -0,0 +1,29 @@
+package dhcp
+
+import (
+ "context"
+ "net"
+ "net/netip"
+ "runtime"
+
+ "github.com/metacubex/mihomo/component/dialer"
+)
+
+func ListenDHCPClient(ctx context.Context, ifaceName string) (net.PacketConn, error) {
+ listenAddr := "0.0.0.0:68"
+ if runtime.GOOS == "linux" || runtime.GOOS == "android" {
+ listenAddr = "255.255.255.255:68"
+ }
+
+ options := []dialer.Option{
+ dialer.WithInterface(ifaceName),
+ dialer.WithAddrReuse(true),
+ }
+
+ // fallback bind on windows, because syscall bind can not receive broadcast
+ if runtime.GOOS == "windows" {
+ options = append(options, dialer.WithFallbackBind(true))
+ }
+
+ return dialer.ListenPacket(ctx, "udp4", listenAddr, netip.AddrPortFrom(netip.AddrFrom4([4]byte{255, 255, 255, 255}), 67), options...)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dhcp/dhcp.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dhcp/dhcp.go
new file mode 100644
index 0000000..04ad2ed
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dhcp/dhcp.go
@@ -0,0 +1,98 @@
+package dhcp
+
+import (
+ "context"
+ "errors"
+ "net"
+ "net/netip"
+
+ "github.com/metacubex/mihomo/common/nnip"
+ "github.com/metacubex/mihomo/component/iface"
+
+ "github.com/insomniacslk/dhcp/dhcpv4"
+)
+
+var (
+ ErrNotResponding = errors.New("DHCP not responding")
+ ErrNotFound = errors.New("DNS option not found")
+)
+
+func ResolveDNSFromDHCP(context context.Context, ifaceName string) ([]netip.Addr, error) {
+ conn, err := ListenDHCPClient(context, ifaceName)
+ if err != nil {
+ return nil, err
+ }
+ defer func() {
+ _ = conn.Close()
+ }()
+
+ result := make(chan []netip.Addr, 1)
+
+ ifaceObj, err := iface.ResolveInterface(ifaceName)
+ if err != nil {
+ return nil, err
+ }
+
+ discovery, err := dhcpv4.NewDiscovery(ifaceObj.HardwareAddr, dhcpv4.WithBroadcast(true), dhcpv4.WithRequestedOptions(dhcpv4.OptionDomainNameServer))
+ if err != nil {
+ return nil, err
+ }
+
+ go receiveOffer(conn, discovery.TransactionID, result)
+
+ _, err = conn.WriteTo(discovery.ToBytes(), &net.UDPAddr{IP: net.IPv4bcast, Port: 67})
+ if err != nil {
+ return nil, err
+ }
+
+ select {
+ case r, ok := <-result:
+ if !ok {
+ return nil, ErrNotFound
+ }
+ return r, nil
+ case <-context.Done():
+ return nil, ErrNotResponding
+ }
+}
+
+func receiveOffer(conn net.PacketConn, id dhcpv4.TransactionID, result chan<- []netip.Addr) {
+ defer close(result)
+
+ buf := make([]byte, dhcpv4.MaxMessageSize)
+
+ for {
+ n, _, err := conn.ReadFrom(buf)
+ if err != nil {
+ return
+ }
+
+ pkt, err := dhcpv4.FromBytes(buf[:n])
+ if err != nil {
+ continue
+ }
+
+ if pkt.MessageType() != dhcpv4.MessageTypeOffer {
+ continue
+ }
+
+ if pkt.TransactionID != id {
+ continue
+ }
+
+ dns := pkt.DNS()
+ l := len(dns)
+ if l == 0 {
+ return
+ }
+
+ dnsAddr := make([]netip.Addr, l)
+ for i := 0; i < l; i++ {
+ dnsAddr[i] = nnip.IpToAddr(dns[i])
+ }
+
+ result <- dnsAddr
+
+ return
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind.go
new file mode 100644
index 0000000..de6aacd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind.go
@@ -0,0 +1,102 @@
+package dialer
+
+import (
+ "net"
+ "net/netip"
+ "strconv"
+ "strings"
+
+ "github.com/metacubex/mihomo/component/iface"
+)
+
+func LookupLocalAddrFromIfaceName(ifaceName string, network string, destination netip.Addr, port int) (net.Addr, error) {
+ ifaceObj, err := iface.ResolveInterface(ifaceName)
+ if err != nil {
+ return nil, err
+ }
+ destination = destination.Unmap()
+
+ var addr netip.Prefix
+ switch network {
+ case "udp4", "tcp4":
+ addr, err = ifaceObj.PickIPv4Addr(destination)
+ case "tcp6", "udp6":
+ addr, err = ifaceObj.PickIPv6Addr(destination)
+ default:
+ if destination.IsValid() {
+ if destination.Is4() {
+ addr, err = ifaceObj.PickIPv4Addr(destination)
+ } else {
+ addr, err = ifaceObj.PickIPv6Addr(destination)
+ }
+ } else {
+ addr, err = ifaceObj.PickIPv4Addr(destination)
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+
+ if strings.HasPrefix(network, "tcp") {
+ return &net.TCPAddr{
+ IP: addr.Addr().AsSlice(),
+ Port: port,
+ }, nil
+ } else if strings.HasPrefix(network, "udp") {
+ return &net.UDPAddr{
+ IP: addr.Addr().AsSlice(),
+ Port: port,
+ }, nil
+ }
+
+ return nil, iface.ErrAddrNotFound
+}
+
+func fallbackBindIfaceToDialer(ifaceName string, dialer *net.Dialer, network string, destination netip.Addr) error {
+ if !destination.IsGlobalUnicast() {
+ return nil
+ }
+
+ local := uint64(0)
+ if dialer.LocalAddr != nil {
+ _, port, err := net.SplitHostPort(dialer.LocalAddr.String())
+ if err == nil {
+ local, _ = strconv.ParseUint(port, 10, 16)
+ }
+ }
+
+ addr, err := LookupLocalAddrFromIfaceName(ifaceName, network, destination, int(local))
+ if err != nil {
+ return err
+ }
+
+ dialer.LocalAddr = addr
+
+ return nil
+}
+
+func fallbackBindIfaceToListenConfig(ifaceName string, _ *net.ListenConfig, network, address string, rAddrPort netip.AddrPort) (string, error) {
+ _, port, err := net.SplitHostPort(address)
+ if err != nil {
+ port = "0"
+ }
+
+ local, _ := strconv.ParseUint(port, 10, 16)
+
+ addr, err := LookupLocalAddrFromIfaceName(ifaceName, network, netip.Addr{}, int(local))
+ if err != nil {
+ return "", err
+ }
+
+ return addr.String(), nil
+}
+
+func fallbackParseNetwork(network string, addr netip.Addr) string {
+ // fix fallbackBindIfaceToListenConfig() force bind to an ipv4 address
+ if !strings.HasSuffix(network, "4") &&
+ !strings.HasSuffix(network, "6") &&
+ addr.Unmap().Is6() {
+ network += "6"
+ }
+ return network
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_darwin.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_darwin.go
new file mode 100644
index 0000000..fdea24b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_darwin.go
@@ -0,0 +1,61 @@
+package dialer
+
+import (
+ "context"
+ "net"
+ "net/netip"
+ "syscall"
+
+ "github.com/metacubex/mihomo/component/iface"
+
+ "golang.org/x/sys/unix"
+)
+
+func bindControl(ifaceIdx int) controlFn {
+ return func(ctx context.Context, network, address string, c syscall.RawConn) (err error) {
+ addrPort, err := netip.ParseAddrPort(address)
+ if err == nil && !addrPort.Addr().IsGlobalUnicast() {
+ return
+ }
+
+ var innerErr error
+ err = c.Control(func(fd uintptr) {
+ switch network {
+ case "tcp4", "udp4":
+ innerErr = unix.SetsockoptInt(int(fd), unix.IPPROTO_IP, unix.IP_BOUND_IF, ifaceIdx)
+ case "tcp6", "udp6":
+ innerErr = unix.SetsockoptInt(int(fd), unix.IPPROTO_IPV6, unix.IPV6_BOUND_IF, ifaceIdx)
+ }
+ })
+
+ if innerErr != nil {
+ err = innerErr
+ }
+
+ return
+ }
+}
+
+func bindIfaceToDialer(ifaceName string, dialer *net.Dialer, _ string, _ netip.Addr) error {
+ ifaceObj, err := iface.ResolveInterface(ifaceName)
+ if err != nil {
+ return err
+ }
+
+ addControlToDialer(dialer, bindControl(ifaceObj.Index))
+ return nil
+}
+
+func bindIfaceToListenConfig(ifaceName string, lc *net.ListenConfig, _, address string, rAddrPort netip.AddrPort) (string, error) {
+ ifaceObj, err := iface.ResolveInterface(ifaceName)
+ if err != nil {
+ return "", err
+ }
+
+ addControlToListenConfig(lc, bindControl(ifaceObj.Index))
+ return address, nil
+}
+
+func ParseNetwork(network string, addr netip.Addr) string {
+ return network
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_linux.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_linux.go
new file mode 100644
index 0000000..79cf735
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_linux.go
@@ -0,0 +1,46 @@
+package dialer
+
+import (
+ "context"
+ "net"
+ "net/netip"
+ "syscall"
+
+ "golang.org/x/sys/unix"
+)
+
+func bindControl(ifaceName string) controlFn {
+ return func(ctx context.Context, network, address string, c syscall.RawConn) (err error) {
+ addrPort, err := netip.ParseAddrPort(address)
+ if err == nil && !addrPort.Addr().IsGlobalUnicast() {
+ return
+ }
+
+ var innerErr error
+ err = c.Control(func(fd uintptr) {
+ innerErr = unix.BindToDevice(int(fd), ifaceName)
+ })
+
+ if innerErr != nil {
+ err = innerErr
+ }
+
+ return
+ }
+}
+
+func bindIfaceToDialer(ifaceName string, dialer *net.Dialer, _ string, _ netip.Addr) error {
+ addControlToDialer(dialer, bindControl(ifaceName))
+
+ return nil
+}
+
+func bindIfaceToListenConfig(ifaceName string, lc *net.ListenConfig, _, address string, rAddrPort netip.AddrPort) (string, error) {
+ addControlToListenConfig(lc, bindControl(ifaceName))
+
+ return address, nil
+}
+
+func ParseNetwork(network string, addr netip.Addr) string {
+ return network
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_others.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_others.go
new file mode 100644
index 0000000..b7db962
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_others.go
@@ -0,0 +1,20 @@
+//go:build !linux && !darwin && !windows
+
+package dialer
+
+import (
+ "net"
+ "net/netip"
+)
+
+func bindIfaceToDialer(ifaceName string, dialer *net.Dialer, network string, destination netip.Addr) error {
+ return fallbackBindIfaceToDialer(ifaceName, dialer, network, destination)
+}
+
+func bindIfaceToListenConfig(ifaceName string, lc *net.ListenConfig, network, address string, rAddrPort netip.AddrPort) (string, error) {
+ return fallbackBindIfaceToListenConfig(ifaceName, lc, network, address, rAddrPort)
+}
+
+func ParseNetwork(network string, addr netip.Addr) string {
+ return fallbackParseNetwork(network, addr)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_windows.go
new file mode 100644
index 0000000..98a076d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/bind_windows.go
@@ -0,0 +1,101 @@
+package dialer
+
+import (
+ "context"
+ "encoding/binary"
+ "fmt"
+ "net"
+ "net/netip"
+ "syscall"
+ "unsafe"
+
+ "github.com/metacubex/mihomo/component/iface"
+)
+
+const (
+ IP_UNICAST_IF = 31
+ IPV6_UNICAST_IF = 31
+)
+
+func bind4(handle syscall.Handle, ifaceIdx int) error {
+ var bytes [4]byte
+ binary.BigEndian.PutUint32(bytes[:], uint32(ifaceIdx))
+ idx := *(*uint32)(unsafe.Pointer(&bytes[0]))
+ err := syscall.SetsockoptInt(handle, syscall.IPPROTO_IP, IP_UNICAST_IF, int(idx))
+ if err != nil {
+ err = fmt.Errorf("bind4: %w", err)
+ }
+ return err
+}
+
+func bind6(handle syscall.Handle, ifaceIdx int) error {
+ err := syscall.SetsockoptInt(handle, syscall.IPPROTO_IPV6, IPV6_UNICAST_IF, ifaceIdx)
+ if err != nil {
+ err = fmt.Errorf("bind6: %w", err)
+ }
+ return err
+}
+
+func bindControl(ifaceIdx int, rAddrPort netip.AddrPort) controlFn {
+ return func(ctx context.Context, network, address string, c syscall.RawConn) (err error) {
+ addrPort, err := netip.ParseAddrPort(address)
+ if err == nil && !addrPort.Addr().IsGlobalUnicast() {
+ return
+ }
+
+ var innerErr error
+ err = c.Control(func(fd uintptr) {
+ handle := syscall.Handle(fd)
+ bind6err := bind6(handle, ifaceIdx)
+ bind4err := bind4(handle, ifaceIdx)
+ switch network {
+ case "ip6", "tcp6":
+ innerErr = bind6err
+ case "ip4", "tcp4", "udp4":
+ innerErr = bind4err
+ case "udp6":
+ // golang will set network to udp6 when listenUDP on wildcard ip (eg: ":0", "")
+ if (!addrPort.Addr().IsValid() || addrPort.Addr().IsUnspecified()) && bind6err != nil && rAddrPort.Addr().Unmap().Is4() {
+ // try bind ipv6, if failed, ignore. it's a workaround for windows disable interface ipv6
+ if bind4err != nil {
+ innerErr = fmt.Errorf("%w (%s)", bind6err, bind4err)
+ } else {
+ innerErr = nil
+ }
+ } else {
+ innerErr = bind6err
+ }
+ }
+ })
+
+ if innerErr != nil {
+ err = innerErr
+ }
+
+ return
+ }
+}
+
+func bindIfaceToDialer(ifaceName string, dialer *net.Dialer, _ string, destination netip.Addr) error {
+ ifaceObj, err := iface.ResolveInterface(ifaceName)
+ if err != nil {
+ return err
+ }
+
+ addControlToDialer(dialer, bindControl(ifaceObj.Index, netip.AddrPortFrom(destination, 0)))
+ return nil
+}
+
+func bindIfaceToListenConfig(ifaceName string, lc *net.ListenConfig, _, address string, rAddrPort netip.AddrPort) (string, error) {
+ ifaceObj, err := iface.ResolveInterface(ifaceName)
+ if err != nil {
+ return "", err
+ }
+
+ addControlToListenConfig(lc, bindControl(ifaceObj.Index, rAddrPort))
+ return address, nil
+}
+
+func ParseNetwork(network string, addr netip.Addr) string {
+ return network
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/control.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/control.go
new file mode 100644
index 0000000..18ed84e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/control.go
@@ -0,0 +1,39 @@
+package dialer
+
+import (
+ "context"
+ "net"
+ "syscall"
+)
+
+type controlFn = func(ctx context.Context, network, address string, c syscall.RawConn) error
+
+func addControlToListenConfig(lc *net.ListenConfig, fn controlFn) {
+ llc := *lc
+ lc.Control = func(network, address string, c syscall.RawConn) (err error) {
+ switch {
+ case llc.Control != nil:
+ if err = llc.Control(network, address, c); err != nil {
+ return
+ }
+ }
+ return fn(context.Background(), network, address, c)
+ }
+}
+
+func addControlToDialer(d *net.Dialer, fn controlFn) {
+ ld := *d
+ d.ControlContext = func(ctx context.Context, network, address string, c syscall.RawConn) (err error) {
+ switch {
+ case ld.ControlContext != nil:
+ if err = ld.ControlContext(ctx, network, address, c); err != nil {
+ return
+ }
+ case ld.Control != nil:
+ if err = ld.Control(network, address, c); err != nil {
+ return
+ }
+ }
+ return fn(ctx, network, address, c)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/dialer.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/dialer.go
new file mode 100644
index 0000000..4fd051e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/dialer.go
@@ -0,0 +1,405 @@
+package dialer
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "net"
+ "net/netip"
+ "os"
+ "strconv"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/component/keepalive"
+ "github.com/metacubex/mihomo/component/resolver"
+ "github.com/metacubex/mihomo/log"
+)
+
+const (
+ DefaultTCPTimeout = 5 * time.Second
+ DefaultUDPTimeout = DefaultTCPTimeout
+)
+
+type dialFunc func(ctx context.Context, network string, ips []netip.Addr, port string, opt *option) (net.Conn, error)
+
+var (
+ dialMux sync.Mutex
+ IP4PEnable bool
+ actualSingleStackDialContext = serialSingleStackDialContext
+ actualDualStackDialContext = serialDualStackDialContext
+ tcpConcurrent = false
+ fallbackTimeout = 300 * time.Millisecond
+)
+
+func applyOptions(options ...Option) *option {
+ opt := &option{
+ interfaceName: DefaultInterface.Load(),
+ routingMark: int(DefaultRoutingMark.Load()),
+ }
+
+ for _, o := range DefaultOptions {
+ o(opt)
+ }
+
+ for _, o := range options {
+ o(opt)
+ }
+
+ return opt
+}
+
+func DialContext(ctx context.Context, network, address string, options ...Option) (net.Conn, error) {
+ opt := applyOptions(options...)
+
+ if opt.network == 4 || opt.network == 6 {
+ if strings.Contains(network, "tcp") {
+ network = "tcp"
+ } else {
+ network = "udp"
+ }
+
+ network = fmt.Sprintf("%s%d", network, opt.network)
+ }
+
+ ips, port, err := parseAddr(ctx, network, address, opt.resolver)
+ if err != nil {
+ return nil, err
+ }
+
+ switch network {
+ case "tcp4", "tcp6", "udp4", "udp6":
+ return actualSingleStackDialContext(ctx, network, ips, port, opt)
+ case "tcp", "udp":
+ return actualDualStackDialContext(ctx, network, ips, port, opt)
+ default:
+ return nil, ErrorInvalidedNetworkStack
+ }
+}
+
+func ListenPacket(ctx context.Context, network, address string, rAddrPort netip.AddrPort, options ...Option) (net.PacketConn, error) {
+ cfg := applyOptions(options...)
+
+ lc := &net.ListenConfig{}
+ if cfg.addrReuse {
+ addrReuseToListenConfig(lc)
+ }
+ if DefaultSocketHook != nil { // ignore interfaceName, routingMark when DefaultSocketHook not null (in CMFA)
+ socketHookToListenConfig(lc)
+ } else {
+ if cfg.interfaceName != "" {
+ bind := bindIfaceToListenConfig
+ if cfg.fallbackBind {
+ bind = fallbackBindIfaceToListenConfig
+ }
+ addr, err := bind(cfg.interfaceName, lc, network, address, rAddrPort)
+ if err != nil {
+ return nil, err
+ }
+ address = addr
+ }
+ if cfg.routingMark != 0 {
+ bindMarkToListenConfig(cfg.routingMark, lc, network, address)
+ }
+ }
+
+ return lc.ListenPacket(ctx, network, address)
+}
+
+func SetTcpConcurrent(concurrent bool) {
+ dialMux.Lock()
+ defer dialMux.Unlock()
+ tcpConcurrent = concurrent
+ if concurrent {
+ actualSingleStackDialContext = concurrentSingleStackDialContext
+ actualDualStackDialContext = concurrentDualStackDialContext
+ } else {
+ actualSingleStackDialContext = serialSingleStackDialContext
+ actualDualStackDialContext = serialDualStackDialContext
+ }
+}
+
+func GetTcpConcurrent() bool {
+ dialMux.Lock()
+ defer dialMux.Unlock()
+ return tcpConcurrent
+}
+
+func dialContext(ctx context.Context, network string, destination netip.Addr, port string, opt *option) (net.Conn, error) {
+ var address string
+ if IP4PEnable {
+ destination, port = lookupIP4P(destination, port)
+ }
+ address = net.JoinHostPort(destination.String(), port)
+
+ netDialer := opt.netDialer
+ switch netDialer.(type) {
+ case nil:
+ netDialer = &net.Dialer{}
+ case *net.Dialer:
+ _netDialer := *netDialer.(*net.Dialer)
+ netDialer = &_netDialer // make a copy
+ default:
+ return netDialer.DialContext(ctx, network, address)
+ }
+
+ dialer := netDialer.(*net.Dialer)
+ keepalive.SetNetDialer(dialer)
+ if opt.mpTcp {
+ setMultiPathTCP(dialer)
+ }
+
+ if DefaultSocketHook != nil { // ignore interfaceName, routingMark and tfo when DefaultSocketHook not null (in CMFA)
+ socketHookToToDialer(dialer)
+ } else {
+ if opt.interfaceName != "" {
+ bind := bindIfaceToDialer
+ if opt.fallbackBind {
+ bind = fallbackBindIfaceToDialer
+ }
+ if err := bind(opt.interfaceName, dialer, network, destination); err != nil {
+ return nil, err
+ }
+ }
+ if opt.routingMark != 0 {
+ bindMarkToDialer(opt.routingMark, dialer, network, destination)
+ }
+ if opt.tfo && !DisableTFO {
+ return dialTFO(ctx, *dialer, network, address)
+ }
+ }
+
+ return dialer.DialContext(ctx, network, address)
+}
+
+func serialSingleStackDialContext(ctx context.Context, network string, ips []netip.Addr, port string, opt *option) (net.Conn, error) {
+ return serialDialContext(ctx, network, ips, port, opt)
+}
+
+func serialDualStackDialContext(ctx context.Context, network string, ips []netip.Addr, port string, opt *option) (net.Conn, error) {
+ return dualStackDialContext(ctx, serialDialContext, network, ips, port, opt)
+}
+
+func concurrentSingleStackDialContext(ctx context.Context, network string, ips []netip.Addr, port string, opt *option) (net.Conn, error) {
+ return parallelDialContext(ctx, network, ips, port, opt)
+}
+
+func concurrentDualStackDialContext(ctx context.Context, network string, ips []netip.Addr, port string, opt *option) (net.Conn, error) {
+ if opt.prefer != 4 && opt.prefer != 6 {
+ return parallelDialContext(ctx, network, ips, port, opt)
+ }
+ return dualStackDialContext(ctx, parallelDialContext, network, ips, port, opt)
+}
+
+func dualStackDialContext(ctx context.Context, dialFn dialFunc, network string, ips []netip.Addr, port string, opt *option) (net.Conn, error) {
+ ipv4s, ipv6s := resolver.SortationAddr(ips)
+ if len(ipv4s) == 0 && len(ipv6s) == 0 {
+ return nil, ErrorNoIpAddress
+ }
+
+ preferIPVersion := opt.prefer
+ fallbackTicker := time.NewTicker(fallbackTimeout)
+ defer fallbackTicker.Stop()
+
+ results := make(chan dialResult)
+ returned := make(chan struct{})
+ defer close(returned)
+
+ var wg sync.WaitGroup
+
+ racer := func(ips []netip.Addr, isPrimary bool) {
+ defer wg.Done()
+ result := dialResult{isPrimary: isPrimary}
+ defer func() {
+ select {
+ case results <- result:
+ case <-returned:
+ if result.Conn != nil && result.error == nil {
+ _ = result.Conn.Close()
+ }
+ }
+ }()
+ result.Conn, result.error = dialFn(ctx, network, ips, port, opt)
+ }
+
+ if len(ipv4s) != 0 {
+ wg.Add(1)
+ go racer(ipv4s, preferIPVersion != 6)
+ }
+
+ if len(ipv6s) != 0 {
+ wg.Add(1)
+ go racer(ipv6s, preferIPVersion != 4)
+ }
+
+ go func() {
+ wg.Wait()
+ close(results)
+ }()
+
+ var fallback dialResult
+ var errs []error
+
+loop:
+ for {
+ select {
+ case <-fallbackTicker.C:
+ if fallback.error == nil && fallback.Conn != nil {
+ return fallback.Conn, nil
+ }
+ case res, ok := <-results:
+ if !ok {
+ break loop
+ }
+ if res.error == nil {
+ if res.isPrimary {
+ return res.Conn, nil
+ }
+ fallback = res
+ } else {
+ if res.isPrimary {
+ errs = append([]error{fmt.Errorf("connect failed: %w", res.error)}, errs...)
+ } else {
+ errs = append(errs, fmt.Errorf("connect failed: %w", res.error))
+ }
+ }
+ }
+ }
+
+ if fallback.error == nil && fallback.Conn != nil {
+ return fallback.Conn, nil
+ }
+ return nil, errors.Join(errs...)
+}
+
+func parallelDialContext(ctx context.Context, network string, ips []netip.Addr, port string, opt *option) (net.Conn, error) {
+ if len(ips) == 0 {
+ return nil, ErrorNoIpAddress
+ }
+ results := make(chan dialResult)
+ returned := make(chan struct{})
+ defer close(returned)
+ racer := func(ctx context.Context, ip netip.Addr) {
+ result := dialResult{isPrimary: true, ip: ip}
+ defer func() {
+ select {
+ case results <- result:
+ case <-returned:
+ if result.Conn != nil && result.error == nil {
+ _ = result.Conn.Close()
+ }
+ }
+ }()
+ result.Conn, result.error = dialContext(ctx, network, ip, port, opt)
+ }
+
+ for _, ip := range ips {
+ go racer(ctx, ip)
+ }
+ var errs []error
+ for i := 0; i < len(ips); i++ {
+ res := <-results
+ if res.error == nil {
+ return res.Conn, nil
+ }
+ errs = append(errs, res.error)
+ }
+
+ if len(errs) > 0 {
+ return nil, errors.Join(errs...)
+ }
+ return nil, os.ErrDeadlineExceeded
+}
+
+func serialDialContext(ctx context.Context, network string, ips []netip.Addr, port string, opt *option) (net.Conn, error) {
+ if len(ips) == 0 {
+ return nil, ErrorNoIpAddress
+ }
+ var errs []error
+ for _, ip := range ips {
+ if conn, err := dialContext(ctx, network, ip, port, opt); err == nil {
+ return conn, nil
+ } else {
+ errs = append(errs, err)
+ }
+ }
+ return nil, errors.Join(errs...)
+}
+
+type dialResult struct {
+ ip netip.Addr
+ net.Conn
+ error
+ isPrimary bool
+}
+
+func parseAddr(ctx context.Context, network, address string, preferResolver resolver.Resolver) ([]netip.Addr, string, error) {
+ host, port, err := net.SplitHostPort(address)
+ if err != nil {
+ return nil, "-1", err
+ }
+
+ if preferResolver == nil {
+ preferResolver = resolver.ProxyServerHostResolver
+ }
+
+ var ips []netip.Addr
+ switch network {
+ case "tcp4", "udp4":
+ ips, err = resolver.LookupIPv4WithResolver(ctx, host, preferResolver)
+ case "tcp6", "udp6":
+ ips, err = resolver.LookupIPv6WithResolver(ctx, host, preferResolver)
+ default:
+ ips, err = resolver.LookupIPWithResolver(ctx, host, preferResolver)
+ }
+ if err != nil {
+ return nil, "-1", fmt.Errorf("dns resolve failed: %w", err)
+ }
+ for i, ip := range ips {
+ if ip.Is4In6() {
+ ips[i] = ip.Unmap()
+ }
+ }
+ return ips, port, nil
+}
+
+type Dialer struct {
+ Opt option
+}
+
+func (d Dialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
+ return DialContext(ctx, network, address, WithOption(d.Opt))
+}
+
+func (d Dialer) ListenPacket(ctx context.Context, network, address string, rAddrPort netip.AddrPort) (net.PacketConn, error) {
+ opt := d.Opt // make a copy
+ if rAddrPort.Addr().Unmap().IsLoopback() {
+ // avoid "The requested address is not valid in its context."
+ WithInterface("")(&opt)
+ }
+ return ListenPacket(ctx, ParseNetwork(network, rAddrPort.Addr()), address, rAddrPort, WithOption(opt))
+}
+
+func NewDialer(options ...Option) Dialer {
+ opt := applyOptions(options...)
+ return Dialer{Opt: *opt}
+}
+
+func GetIP4PEnable(enableIP4PConvert bool) {
+ IP4PEnable = enableIP4PConvert
+}
+
+// kanged from https://github.com/heiher/frp/blob/ip4p/client/ip4p.go
+
+func lookupIP4P(addr netip.Addr, port string) (netip.Addr, string) {
+ ip := addr.AsSlice()
+ if ip[0] == 0x20 && ip[1] == 0x01 &&
+ ip[2] == 0x00 && ip[3] == 0x00 {
+ addr = netip.AddrFrom4([4]byte{ip[12], ip[13], ip[14], ip[15]})
+ port = strconv.Itoa(int(ip[10])<<8 + int(ip[11]))
+ log.Debugln("Convert IP4P address %s to %s", ip, net.JoinHostPort(addr.String(), port))
+ return addr, port
+ }
+ return addr, port
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/error.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/error.go
new file mode 100644
index 0000000..035baa0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/error.go
@@ -0,0 +1,10 @@
+package dialer
+
+import (
+ "errors"
+)
+
+var (
+ ErrorNoIpAddress = errors.New("no ip address")
+ ErrorInvalidedNetworkStack = errors.New("invalided network stack")
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mark_linux.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mark_linux.go
new file mode 100644
index 0000000..996c3de
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mark_linux.go
@@ -0,0 +1,37 @@
+//go:build linux
+
+package dialer
+
+import (
+ "context"
+ "net"
+ "net/netip"
+ "syscall"
+)
+
+func bindMarkToDialer(mark int, dialer *net.Dialer, _ string, _ netip.Addr) {
+ addControlToDialer(dialer, bindMarkToControl(mark))
+}
+
+func bindMarkToListenConfig(mark int, lc *net.ListenConfig, _, _ string) {
+ addControlToListenConfig(lc, bindMarkToControl(mark))
+}
+
+func bindMarkToControl(mark int) controlFn {
+ return func(ctx context.Context, network, address string, c syscall.RawConn) (err error) {
+
+ addrPort, err := netip.ParseAddrPort(address)
+ if err == nil && !addrPort.Addr().IsGlobalUnicast() {
+ return
+ }
+
+ var innerErr error
+ err = c.Control(func(fd uintptr) {
+ innerErr = syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_MARK, mark)
+ })
+ if innerErr != nil {
+ err = innerErr
+ }
+ return
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mark_nonlinux.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mark_nonlinux.go
new file mode 100644
index 0000000..64e5878
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mark_nonlinux.go
@@ -0,0 +1,27 @@
+//go:build !linux
+
+package dialer
+
+import (
+ "net"
+ "net/netip"
+ "sync"
+
+ "github.com/metacubex/mihomo/log"
+)
+
+var printMarkWarnOnce sync.Once
+
+func printMarkWarn() {
+ printMarkWarnOnce.Do(func() {
+ log.Warnln("Routing mark on socket is not supported on current platform")
+ })
+}
+
+func bindMarkToDialer(mark int, dialer *net.Dialer, _ string, _ netip.Addr) {
+ printMarkWarn()
+}
+
+func bindMarkToListenConfig(mark int, lc *net.ListenConfig, _, _ string) {
+ printMarkWarn()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mptcp_go120.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mptcp_go120.go
new file mode 100644
index 0000000..6e56467
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mptcp_go120.go
@@ -0,0 +1,12 @@
+//go:build !go1.21
+
+package dialer
+
+import (
+ "net"
+)
+
+const multipathTCPAvailable = false
+
+func setMultiPathTCP(dialer *net.Dialer) {
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mptcp_go121.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mptcp_go121.go
new file mode 100644
index 0000000..360826c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/mptcp_go121.go
@@ -0,0 +1,11 @@
+//go:build go1.21
+
+package dialer
+
+import "net"
+
+const multipathTCPAvailable = true
+
+func setMultiPathTCP(dialer *net.Dialer) {
+ dialer.SetMultipathTCP(true)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/options.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/options.go
new file mode 100644
index 0000000..c0c2189
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/options.go
@@ -0,0 +1,110 @@
+package dialer
+
+import (
+ "context"
+ "net"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ "github.com/metacubex/mihomo/component/resolver"
+)
+
+var (
+ DefaultOptions []Option
+ DefaultInterface = atomic.NewTypedValue[string]("")
+ DefaultRoutingMark = atomic.NewInt32(0)
+)
+
+type NetDialer interface {
+ DialContext(ctx context.Context, network, address string) (net.Conn, error)
+}
+
+type option struct {
+ interfaceName string
+ fallbackBind bool
+ addrReuse bool
+ routingMark int
+ network int
+ prefer int
+ tfo bool
+ mpTcp bool
+ resolver resolver.Resolver
+ netDialer NetDialer
+}
+
+type Option func(opt *option)
+
+func WithInterface(name string) Option {
+ return func(opt *option) {
+ opt.interfaceName = name
+ }
+}
+
+func WithFallbackBind(fallback bool) Option {
+ return func(opt *option) {
+ opt.fallbackBind = fallback
+ }
+}
+
+func WithAddrReuse(reuse bool) Option {
+ return func(opt *option) {
+ opt.addrReuse = reuse
+ }
+}
+
+func WithRoutingMark(mark int) Option {
+ return func(opt *option) {
+ opt.routingMark = mark
+ }
+}
+
+func WithResolver(r resolver.Resolver) Option {
+ return func(opt *option) {
+ opt.resolver = r
+ }
+}
+
+func WithPreferIPv4() Option {
+ return func(opt *option) {
+ opt.prefer = 4
+ }
+}
+
+func WithPreferIPv6() Option {
+ return func(opt *option) {
+ opt.prefer = 6
+ }
+}
+
+func WithOnlySingleStack(isIPv4 bool) Option {
+ return func(opt *option) {
+ if isIPv4 {
+ opt.network = 4
+ } else {
+ opt.network = 6
+ }
+ }
+}
+
+func WithTFO(tfo bool) Option {
+ return func(opt *option) {
+ opt.tfo = tfo
+ }
+}
+
+func WithMPTCP(mpTcp bool) Option {
+ return func(opt *option) {
+ opt.mpTcp = mpTcp
+ }
+}
+
+func WithNetDialer(netDialer NetDialer) Option {
+ return func(opt *option) {
+ opt.netDialer = netDialer
+ }
+}
+
+func WithOption(o option) Option {
+ return func(opt *option) {
+ *opt = o
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/reuse_others.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/reuse_others.go
new file mode 100644
index 0000000..db67a09
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/reuse_others.go
@@ -0,0 +1,9 @@
+//go:build !darwin && !dragonfly && !freebsd && !linux && !netbsd && !openbsd && !solaris && !windows
+
+package dialer
+
+import (
+ "net"
+)
+
+func addrReuseToListenConfig(*net.ListenConfig) {}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/reuse_unix.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/reuse_unix.go
new file mode 100644
index 0000000..a0cf738
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/reuse_unix.go
@@ -0,0 +1,20 @@
+//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
+
+package dialer
+
+import (
+ "context"
+ "net"
+ "syscall"
+
+ "golang.org/x/sys/unix"
+)
+
+func addrReuseToListenConfig(lc *net.ListenConfig) {
+ addControlToListenConfig(lc, func(ctx context.Context, network, address string, c syscall.RawConn) error {
+ return c.Control(func(fd uintptr) {
+ unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_REUSEADDR, 1)
+ unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_REUSEPORT, 1)
+ })
+ })
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/reuse_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/reuse_windows.go
new file mode 100644
index 0000000..b8d0d80
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/reuse_windows.go
@@ -0,0 +1,17 @@
+package dialer
+
+import (
+ "context"
+ "net"
+ "syscall"
+
+ "golang.org/x/sys/windows"
+)
+
+func addrReuseToListenConfig(lc *net.ListenConfig) {
+ addControlToListenConfig(lc, func(ctx context.Context, network, address string, c syscall.RawConn) error {
+ return c.Control(func(fd uintptr) {
+ windows.SetsockoptInt(windows.Handle(fd), windows.SOL_SOCKET, windows.SO_REUSEADDR, 1)
+ })
+ })
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/socket_hook.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/socket_hook.go
new file mode 100644
index 0000000..f860552
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/socket_hook.go
@@ -0,0 +1,27 @@
+package dialer
+
+import (
+ "context"
+ "net"
+ "syscall"
+)
+
+// SocketControl
+// never change type traits because it's used in CMFA
+type SocketControl func(network, address string, conn syscall.RawConn) error
+
+// DefaultSocketHook
+// never change type traits because it's used in CMFA
+var DefaultSocketHook SocketControl
+
+func socketHookToToDialer(dialer *net.Dialer) {
+ addControlToDialer(dialer, func(ctx context.Context, network, address string, c syscall.RawConn) error {
+ return DefaultSocketHook(network, address, c)
+ })
+}
+
+func socketHookToListenConfig(lc *net.ListenConfig) {
+ addControlToListenConfig(lc, func(ctx context.Context, network, address string, c syscall.RawConn) error {
+ return DefaultSocketHook(network, address, c)
+ })
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/tfo.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/tfo.go
new file mode 100644
index 0000000..76fe94d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/tfo.go
@@ -0,0 +1,139 @@
+package dialer
+
+import (
+ "context"
+ "io"
+ "net"
+ "time"
+
+ "github.com/metacubex/tfo-go"
+)
+
+var DisableTFO = false
+
+type tfoConn struct {
+ net.Conn
+ closed bool
+ dialed chan bool
+ cancel context.CancelFunc
+ ctx context.Context
+ dialFn func(ctx context.Context, earlyData []byte) (net.Conn, error)
+}
+
+func (c *tfoConn) Dial(earlyData []byte) (err error) {
+ conn, err := c.dialFn(c.ctx, earlyData)
+ if err != nil {
+ return
+ }
+ c.Conn = conn
+ c.dialed <- true
+ return err
+}
+
+func (c *tfoConn) Read(b []byte) (n int, err error) {
+ if c.closed {
+ return 0, io.ErrClosedPipe
+ }
+ if c.Conn == nil {
+ select {
+ case <-c.ctx.Done():
+ return 0, io.ErrUnexpectedEOF
+ case <-c.dialed:
+ }
+ }
+ return c.Conn.Read(b)
+}
+
+func (c *tfoConn) Write(b []byte) (n int, err error) {
+ if c.closed {
+ return 0, io.ErrClosedPipe
+ }
+ if c.Conn == nil {
+ if err := c.Dial(b); err != nil {
+ return 0, err
+ }
+ return len(b), nil
+ }
+
+ return c.Conn.Write(b)
+}
+
+func (c *tfoConn) Close() error {
+ c.closed = true
+ c.cancel()
+ if c.Conn == nil {
+ return nil
+ }
+ return c.Conn.Close()
+}
+
+func (c *tfoConn) LocalAddr() net.Addr {
+ if c.Conn == nil {
+ return &net.TCPAddr{}
+ }
+ return c.Conn.LocalAddr()
+}
+
+func (c *tfoConn) RemoteAddr() net.Addr {
+ if c.Conn == nil {
+ return &net.TCPAddr{}
+ }
+ return c.Conn.RemoteAddr()
+}
+
+func (c *tfoConn) SetDeadline(t time.Time) error {
+ if err := c.SetReadDeadline(t); err != nil {
+ return err
+ }
+ return c.SetWriteDeadline(t)
+}
+
+func (c *tfoConn) SetReadDeadline(t time.Time) error {
+ if c.Conn == nil {
+ return nil
+ }
+ return c.Conn.SetReadDeadline(t)
+}
+
+func (c *tfoConn) SetWriteDeadline(t time.Time) error {
+ if c.Conn == nil {
+ return nil
+ }
+ return c.Conn.SetWriteDeadline(t)
+}
+
+func (c *tfoConn) Upstream() any {
+ if c.Conn == nil { // ensure return a nil interface not an interface with nil value
+ return nil
+ }
+ return c.Conn
+}
+
+func (c *tfoConn) NeedAdditionalReadDeadline() bool {
+ return c.Conn == nil
+}
+
+func (c *tfoConn) NeedHandshake() bool {
+ return c.Conn == nil
+}
+
+func (c *tfoConn) ReaderReplaceable() bool {
+ return c.Conn != nil
+}
+
+func (c *tfoConn) WriterReplaceable() bool {
+ return c.Conn != nil
+}
+
+func dialTFO(ctx context.Context, netDialer net.Dialer, network, address string) (net.Conn, error) {
+ ctx, cancel := context.WithTimeout(context.Background(), DefaultTCPTimeout)
+ dialer := tfo.Dialer{Dialer: netDialer, DisableTFO: false}
+ return &tfoConn{
+ dialed: make(chan bool, 1),
+ cancel: cancel,
+ ctx: ctx,
+ dialFn: func(ctx context.Context, earlyData []byte) (net.Conn, error) {
+ return dialer.DialContext(ctx, network, address, earlyData)
+ },
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/tfo_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/tfo_windows.go
new file mode 100644
index 0000000..6326611
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/dialer/tfo_windows.go
@@ -0,0 +1,11 @@
+package dialer
+
+import "github.com/metacubex/mihomo/constant/features"
+
+func init() {
+ // According to MSDN, this option is available since Windows 10, 1607
+ // https://msdn.microsoft.com/en-us/library/windows/desktop/ms738596(v=vs.85).aspx
+ if features.WindowsMajorVersion < 10 || (features.WindowsMajorVersion == 10 && features.WindowsBuildNumber < 14393) {
+ DisableTFO = true
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/cachefile.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/cachefile.go
new file mode 100644
index 0000000..92d0972
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/cachefile.go
@@ -0,0 +1,55 @@
+package fakeip
+
+import (
+ "net/netip"
+
+ "github.com/metacubex/mihomo/component/profile/cachefile"
+)
+
+type cachefileStore struct {
+ cache *cachefile.FakeIpStore
+}
+
+// GetByHost implements store.GetByHost
+func (c *cachefileStore) GetByHost(host string) (netip.Addr, bool) {
+ return c.cache.GetByHost(host)
+}
+
+// PutByHost implements store.PutByHost
+func (c *cachefileStore) PutByHost(host string, ip netip.Addr) {
+ c.cache.PutByHost(host, ip)
+}
+
+// GetByIP implements store.GetByIP
+func (c *cachefileStore) GetByIP(ip netip.Addr) (string, bool) {
+ return c.cache.GetByIP(ip)
+}
+
+// PutByIP implements store.PutByIP
+func (c *cachefileStore) PutByIP(ip netip.Addr, host string) {
+ c.cache.PutByIP(ip, host)
+}
+
+// DelByIP implements store.DelByIP
+func (c *cachefileStore) DelByIP(ip netip.Addr) {
+ c.cache.DelByIP(ip)
+}
+
+// Exist implements store.Exist
+func (c *cachefileStore) Exist(ip netip.Addr) bool {
+ _, exist := c.GetByIP(ip)
+ return exist
+}
+
+// CloneTo implements store.CloneTo
+// already persistence
+func (c *cachefileStore) CloneTo(store store) {}
+
+// FlushFakeIP implements store.FlushFakeIP
+func (c *cachefileStore) FlushFakeIP() error {
+ return c.cache.FlushFakeIP()
+}
+
+func newCachefileStore(cache *cachefile.CacheFile) *cachefileStore {
+ return &cachefileStore{cache.FakeIpStore()}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/memory.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/memory.go
new file mode 100644
index 0000000..0a8492f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/memory.go
@@ -0,0 +1,80 @@
+package fakeip
+
+import (
+ "net/netip"
+
+ "github.com/metacubex/mihomo/common/lru"
+)
+
+type memoryStore struct {
+ cacheIP *lru.LruCache[string, netip.Addr]
+ cacheHost *lru.LruCache[netip.Addr, string]
+}
+
+// GetByHost implements store.GetByHost
+func (m *memoryStore) GetByHost(host string) (netip.Addr, bool) {
+ if ip, exist := m.cacheIP.Get(host); exist {
+ // ensure ip --> host on head of linked list
+ m.cacheHost.Get(ip)
+ return ip, true
+ }
+
+ return netip.Addr{}, false
+}
+
+// PutByHost implements store.PutByHost
+func (m *memoryStore) PutByHost(host string, ip netip.Addr) {
+ m.cacheIP.Set(host, ip)
+}
+
+// GetByIP implements store.GetByIP
+func (m *memoryStore) GetByIP(ip netip.Addr) (string, bool) {
+ if host, exist := m.cacheHost.Get(ip); exist {
+ // ensure host --> ip on head of linked list
+ m.cacheIP.Get(host)
+ return host, true
+ }
+
+ return "", false
+}
+
+// PutByIP implements store.PutByIP
+func (m *memoryStore) PutByIP(ip netip.Addr, host string) {
+ m.cacheHost.Set(ip, host)
+}
+
+// DelByIP implements store.DelByIP
+func (m *memoryStore) DelByIP(ip netip.Addr) {
+ if host, exist := m.cacheHost.Get(ip); exist {
+ m.cacheIP.Delete(host)
+ }
+ m.cacheHost.Delete(ip)
+}
+
+// Exist implements store.Exist
+func (m *memoryStore) Exist(ip netip.Addr) bool {
+ return m.cacheHost.Exist(ip)
+}
+
+// CloneTo implements store.CloneTo
+// only for memoryStore to memoryStore
+func (m *memoryStore) CloneTo(store store) {
+ if ms, ok := store.(*memoryStore); ok {
+ m.cacheIP.CloneTo(ms.cacheIP)
+ m.cacheHost.CloneTo(ms.cacheHost)
+ }
+}
+
+// FlushFakeIP implements store.FlushFakeIP
+func (m *memoryStore) FlushFakeIP() error {
+ m.cacheIP.Clear()
+ m.cacheHost.Clear()
+ return nil
+}
+
+func newMemoryStore(size int) *memoryStore {
+ return &memoryStore{
+ cacheIP: lru.New[string, netip.Addr](lru.WithSize[string, netip.Addr](size)),
+ cacheHost: lru.New[netip.Addr, string](lru.WithSize[netip.Addr, string](size)),
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/pool.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/pool.go
new file mode 100644
index 0000000..41b848b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/pool.go
@@ -0,0 +1,212 @@
+package fakeip
+
+import (
+ "errors"
+ "net/netip"
+ "strings"
+ "sync"
+
+ "github.com/metacubex/mihomo/common/nnip"
+ "github.com/metacubex/mihomo/component/profile/cachefile"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+const (
+ offsetKey = "key-offset-fake-ip"
+ cycleKey = "key-cycle-fake-ip"
+)
+
+type store interface {
+ GetByHost(host string) (netip.Addr, bool)
+ PutByHost(host string, ip netip.Addr)
+ GetByIP(ip netip.Addr) (string, bool)
+ PutByIP(ip netip.Addr, host string)
+ DelByIP(ip netip.Addr)
+ Exist(ip netip.Addr) bool
+ CloneTo(store)
+ FlushFakeIP() error
+}
+
+// Pool is an implementation about fake ip generator without storage
+type Pool struct {
+ gateway netip.Addr
+ first netip.Addr
+ last netip.Addr
+ offset netip.Addr
+ cycle bool
+ mux sync.Mutex
+ host []C.DomainMatcher
+ mode C.FilterMode
+ ipnet netip.Prefix
+ store store
+}
+
+// Lookup return a fake ip with host
+func (p *Pool) Lookup(host string) netip.Addr {
+ p.mux.Lock()
+ defer p.mux.Unlock()
+
+ // RFC4343: DNS Case Insensitive, we SHOULD return result with all cases.
+ host = strings.ToLower(host)
+ if ip, exist := p.store.GetByHost(host); exist {
+ return ip
+ }
+
+ ip := p.get(host)
+ p.store.PutByHost(host, ip)
+ return ip
+}
+
+// LookBack return host with the fake ip
+func (p *Pool) LookBack(ip netip.Addr) (string, bool) {
+ p.mux.Lock()
+ defer p.mux.Unlock()
+
+ return p.store.GetByIP(ip)
+}
+
+// ShouldSkipped return if domain should be skipped
+func (p *Pool) ShouldSkipped(domain string) bool {
+ should := p.shouldSkipped(domain)
+ if p.mode == C.FilterWhiteList {
+ return !should
+ }
+ return should
+}
+
+func (p *Pool) shouldSkipped(domain string) bool {
+ for _, matcher := range p.host {
+ if matcher.MatchDomain(domain) {
+ return true
+ }
+ }
+ return false
+}
+
+// Exist returns if given ip exists in fake-ip pool
+func (p *Pool) Exist(ip netip.Addr) bool {
+ p.mux.Lock()
+ defer p.mux.Unlock()
+
+ return p.store.Exist(ip)
+}
+
+// Gateway return gateway ip
+func (p *Pool) Gateway() netip.Addr {
+ return p.gateway
+}
+
+// Broadcast return the last ip
+func (p *Pool) Broadcast() netip.Addr {
+ return p.last
+}
+
+// IPNet return raw ipnet
+func (p *Pool) IPNet() netip.Prefix {
+ return p.ipnet
+}
+
+// CloneFrom clone cache from old pool
+func (p *Pool) CloneFrom(o *Pool) {
+ o.store.CloneTo(p.store)
+}
+
+func (p *Pool) get(host string) netip.Addr {
+ p.offset = p.offset.Next()
+
+ if !p.offset.Less(p.last) {
+ p.cycle = true
+ p.offset = p.first
+ }
+
+ if p.cycle || p.store.Exist(p.offset) {
+ p.store.DelByIP(p.offset)
+ }
+
+ p.store.PutByIP(p.offset, host)
+ return p.offset
+}
+
+func (p *Pool) FlushFakeIP() error {
+ err := p.store.FlushFakeIP()
+ if err == nil {
+ p.cycle = false
+ p.offset = p.first.Prev()
+ }
+ return err
+}
+
+func (p *Pool) StoreState() {
+ if s, ok := p.store.(*cachefileStore); ok {
+ s.PutByHost(offsetKey, p.offset)
+ if p.cycle {
+ s.PutByHost(cycleKey, p.offset)
+ }
+ }
+}
+
+func (p *Pool) restoreState() {
+ if s, ok := p.store.(*cachefileStore); ok {
+ if _, exist := s.GetByHost(cycleKey); exist {
+ p.cycle = true
+ }
+
+ if offset, exist := s.GetByHost(offsetKey); exist {
+ if p.ipnet.Contains(offset) {
+ p.offset = offset
+ } else {
+ _ = p.FlushFakeIP()
+ }
+ } else if s.Exist(p.first) {
+ _ = p.FlushFakeIP()
+ }
+ }
+}
+
+type Options struct {
+ IPNet netip.Prefix
+ Host []C.DomainMatcher
+ Mode C.FilterMode
+
+ // Size sets the maximum number of entries in memory
+ // and does not work if Persistence is true
+ Size int
+
+ // Persistence will save the data to disk.
+ // Size will not work and record will be fully stored.
+ Persistence bool
+}
+
+// New return Pool instance
+func New(options Options) (*Pool, error) {
+ var (
+ hostAddr = options.IPNet.Masked().Addr()
+ gateway = hostAddr.Next()
+ first = gateway.Next().Next().Next() // default start with 198.18.0.4
+ last = nnip.UnMasked(options.IPNet)
+ )
+
+ if !options.IPNet.IsValid() || !first.IsValid() || !first.Less(last) {
+ return nil, errors.New("ipnet don't have valid ip")
+ }
+
+ pool := &Pool{
+ gateway: gateway,
+ first: first,
+ last: last,
+ offset: first.Prev(),
+ cycle: false,
+ host: options.Host,
+ mode: options.Mode,
+ ipnet: options.IPNet,
+ }
+ if options.Persistence {
+ pool.store = newCachefileStore(cachefile.Cache())
+ } else {
+ pool.store = newMemoryStore(options.Size)
+ }
+
+ pool.restoreState()
+
+ return pool, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/pool_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/pool_test.go
new file mode 100644
index 0000000..be78b87
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/fakeip/pool_test.go
@@ -0,0 +1,326 @@
+package fakeip
+
+import (
+ "fmt"
+ "net/netip"
+ "os"
+ "testing"
+ "time"
+
+ "github.com/metacubex/mihomo/component/profile/cachefile"
+ "github.com/metacubex/mihomo/component/trie"
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/metacubex/bbolt"
+ "github.com/stretchr/testify/assert"
+)
+
+func createPools(options Options) ([]*Pool, string, error) {
+ pool, err := New(options)
+ if err != nil {
+ return nil, "", err
+ }
+ filePool, tempfile, err := createCachefileStore(options)
+ if err != nil {
+ return nil, "", err
+ }
+
+ return []*Pool{pool, filePool}, tempfile, nil
+}
+
+func createCachefileStore(options Options) (*Pool, string, error) {
+ pool, err := New(options)
+ if err != nil {
+ return nil, "", err
+ }
+ f, err := os.CreateTemp("", "mihomo")
+ if err != nil {
+ return nil, "", err
+ }
+
+ db, err := bbolt.Open(f.Name(), 0o666, &bbolt.Options{Timeout: time.Second})
+ if err != nil {
+ return nil, "", err
+ }
+
+ pool.store = newCachefileStore(&cachefile.CacheFile{DB: db})
+ return pool, f.Name(), nil
+}
+
+func TestPool_Basic(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.0/28")
+ pools, tempfile, err := createPools(Options{
+ IPNet: ipnet,
+ Size: 10,
+ })
+ assert.Nil(t, err)
+ defer os.Remove(tempfile)
+
+ for _, pool := range pools {
+ first := pool.Lookup("foo.com")
+ last := pool.Lookup("bar.com")
+ bar, exist := pool.LookBack(last)
+
+ assert.Equal(t, first, netip.AddrFrom4([4]byte{192, 168, 0, 4}))
+ assert.Equal(t, pool.Lookup("foo.com"), netip.AddrFrom4([4]byte{192, 168, 0, 4}))
+ assert.Equal(t, last, netip.AddrFrom4([4]byte{192, 168, 0, 5}))
+ assert.True(t, exist)
+ assert.Equal(t, bar, "bar.com")
+ assert.Equal(t, pool.Gateway(), netip.AddrFrom4([4]byte{192, 168, 0, 1}))
+ assert.Equal(t, pool.Broadcast(), netip.AddrFrom4([4]byte{192, 168, 0, 15}))
+ assert.Equal(t, pool.IPNet().String(), ipnet.String())
+ assert.True(t, pool.Exist(netip.AddrFrom4([4]byte{192, 168, 0, 5})))
+ assert.False(t, pool.Exist(netip.AddrFrom4([4]byte{192, 168, 0, 6})))
+ assert.False(t, pool.Exist(netip.MustParseAddr("::1")))
+ }
+}
+
+func TestPool_BasicV6(t *testing.T) {
+ ipnet := netip.MustParsePrefix("2001:4860:4860::8888/118")
+ pools, tempfile, err := createPools(Options{
+ IPNet: ipnet,
+ Size: 10,
+ })
+ assert.Nil(t, err)
+ defer os.Remove(tempfile)
+
+ for _, pool := range pools {
+ first := pool.Lookup("foo.com")
+ last := pool.Lookup("bar.com")
+ bar, exist := pool.LookBack(last)
+
+ assert.Equal(t, first, netip.MustParseAddr("2001:4860:4860:0000:0000:0000:0000:8804"))
+ assert.Equal(t, pool.Lookup("foo.com"), netip.MustParseAddr("2001:4860:4860:0000:0000:0000:0000:8804"))
+ assert.Equal(t, last, netip.MustParseAddr("2001:4860:4860:0000:0000:0000:0000:8805"))
+ assert.True(t, exist)
+ assert.Equal(t, bar, "bar.com")
+ assert.Equal(t, pool.Gateway(), netip.MustParseAddr("2001:4860:4860:0000:0000:0000:0000:8801"))
+ assert.Equal(t, pool.Broadcast(), netip.MustParseAddr("2001:4860:4860:0000:0000:0000:0000:8bff"))
+ assert.Equal(t, pool.IPNet().String(), ipnet.String())
+ assert.True(t, pool.Exist(netip.MustParseAddr("2001:4860:4860:0000:0000:0000:0000:8805")))
+ assert.False(t, pool.Exist(netip.MustParseAddr("2001:4860:4860:0000:0000:0000:0000:8806")))
+ assert.False(t, pool.Exist(netip.MustParseAddr("127.0.0.1")))
+ }
+}
+
+func TestPool_Case_Insensitive(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.1/29")
+ pools, tempfile, err := createPools(Options{
+ IPNet: ipnet,
+ Size: 10,
+ })
+ assert.Nil(t, err)
+ defer os.Remove(tempfile)
+
+ for _, pool := range pools {
+ first := pool.Lookup("foo.com")
+ last := pool.Lookup("Foo.Com")
+ foo, exist := pool.LookBack(last)
+
+ assert.Equal(t, first, pool.Lookup("Foo.Com"))
+ assert.Equal(t, pool.Lookup("fOo.cOM"), first)
+ assert.True(t, exist)
+ assert.Equal(t, foo, "foo.com")
+ }
+}
+
+func TestPool_CycleUsed(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.16/28")
+ pools, tempfile, err := createPools(Options{
+ IPNet: ipnet,
+ Size: 10,
+ })
+ assert.Nil(t, err)
+ defer os.Remove(tempfile)
+
+ for _, pool := range pools {
+ foo := pool.Lookup("foo.com")
+ bar := pool.Lookup("bar.com")
+ for i := 0; i < 9; i++ {
+ pool.Lookup(fmt.Sprintf("%d.com", i))
+ }
+ baz := pool.Lookup("baz.com")
+ next := pool.Lookup("foo.com")
+ assert.Equal(t, foo, baz)
+ assert.Equal(t, next, bar)
+ }
+}
+
+func TestPool_Skip(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.1/29")
+ tree := trie.New[struct{}]()
+ assert.NoError(t, tree.Insert("example.com", struct{}{}))
+ assert.False(t, tree.IsEmpty())
+ pools, tempfile, err := createPools(Options{
+ IPNet: ipnet,
+ Size: 10,
+ Host: []C.DomainMatcher{tree.NewDomainSet()},
+ })
+ assert.Nil(t, err)
+ defer os.Remove(tempfile)
+
+ for _, pool := range pools {
+ assert.True(t, pool.ShouldSkipped("example.com"))
+ assert.False(t, pool.ShouldSkipped("foo.com"))
+ assert.False(t, pool.shouldSkipped("baz.com"))
+ }
+}
+
+func TestPool_SkipWhiteList(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.1/29")
+ tree := trie.New[struct{}]()
+ assert.NoError(t, tree.Insert("example.com", struct{}{}))
+ assert.False(t, tree.IsEmpty())
+ pools, tempfile, err := createPools(Options{
+ IPNet: ipnet,
+ Size: 10,
+ Host: []C.DomainMatcher{tree.NewDomainSet()},
+ Mode: C.FilterWhiteList,
+ })
+ assert.Nil(t, err)
+ defer os.Remove(tempfile)
+
+ for _, pool := range pools {
+ assert.False(t, pool.ShouldSkipped("example.com"))
+ assert.True(t, pool.ShouldSkipped("foo.com"))
+ assert.True(t, pool.ShouldSkipped("baz.com"))
+ }
+}
+
+func TestPool_MaxCacheSize(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.1/24")
+ pool, _ := New(Options{
+ IPNet: ipnet,
+ Size: 2,
+ })
+
+ first := pool.Lookup("foo.com")
+ pool.Lookup("bar.com")
+ pool.Lookup("baz.com")
+ next := pool.Lookup("foo.com")
+
+ assert.NotEqual(t, first, next)
+}
+
+func TestPool_DoubleMapping(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.1/24")
+ pool, _ := New(Options{
+ IPNet: ipnet,
+ Size: 2,
+ })
+
+ // fill cache
+ fooIP := pool.Lookup("foo.com")
+ bazIP := pool.Lookup("baz.com")
+
+ // make foo.com hot
+ pool.Lookup("foo.com")
+
+ // should drop baz.com
+ barIP := pool.Lookup("bar.com")
+
+ _, fooExist := pool.LookBack(fooIP)
+ _, bazExist := pool.LookBack(bazIP)
+ _, barExist := pool.LookBack(barIP)
+
+ newBazIP := pool.Lookup("baz.com")
+
+ assert.True(t, fooExist)
+ assert.False(t, bazExist)
+ assert.True(t, barExist)
+
+ assert.NotEqual(t, bazIP, newBazIP)
+}
+
+func TestPool_Clone(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.1/24")
+ pool, _ := New(Options{
+ IPNet: ipnet,
+ Size: 2,
+ })
+
+ first := pool.Lookup("foo.com")
+ last := pool.Lookup("bar.com")
+ assert.Equal(t, first, netip.AddrFrom4([4]byte{192, 168, 0, 4}))
+ assert.Equal(t, last, netip.AddrFrom4([4]byte{192, 168, 0, 5}))
+
+ newPool, _ := New(Options{
+ IPNet: ipnet,
+ Size: 2,
+ })
+ newPool.CloneFrom(pool)
+ _, firstExist := newPool.LookBack(first)
+ _, lastExist := newPool.LookBack(last)
+ assert.True(t, firstExist)
+ assert.True(t, lastExist)
+}
+
+func TestPool_Error(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.1/31")
+ _, err := New(Options{
+ IPNet: ipnet,
+ Size: 10,
+ })
+
+ assert.Error(t, err)
+}
+
+func TestPool_FlushFileCache(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.1/28")
+ pools, tempfile, err := createPools(Options{
+ IPNet: ipnet,
+ Size: 10,
+ })
+ assert.Nil(t, err)
+ defer os.Remove(tempfile)
+
+ for _, pool := range pools {
+ foo := pool.Lookup("foo.com")
+ bar := pool.Lookup("baz.com")
+ bax := pool.Lookup("baz.com")
+ fox := pool.Lookup("foo.com")
+
+ err = pool.FlushFakeIP()
+ assert.Nil(t, err)
+
+ next := pool.Lookup("baz.com")
+ baz := pool.Lookup("foo.com")
+ nero := pool.Lookup("foo.com")
+
+ assert.Equal(t, foo, fox)
+ assert.Equal(t, foo, next)
+ assert.NotEqual(t, foo, baz)
+ assert.Equal(t, bar, bax)
+ assert.Equal(t, bar, baz)
+ assert.NotEqual(t, bar, next)
+ assert.Equal(t, baz, nero)
+ }
+}
+
+func TestPool_FlushMemoryCache(t *testing.T) {
+ ipnet := netip.MustParsePrefix("192.168.0.1/28")
+ pool, _ := New(Options{
+ IPNet: ipnet,
+ Size: 10,
+ })
+
+ foo := pool.Lookup("foo.com")
+ bar := pool.Lookup("baz.com")
+ bax := pool.Lookup("baz.com")
+ fox := pool.Lookup("foo.com")
+
+ err := pool.FlushFakeIP()
+ assert.Nil(t, err)
+
+ next := pool.Lookup("baz.com")
+ baz := pool.Lookup("foo.com")
+ nero := pool.Lookup("foo.com")
+
+ assert.Equal(t, foo, fox)
+ assert.Equal(t, foo, next)
+ assert.NotEqual(t, foo, baz)
+ assert.Equal(t, bar, bax)
+ assert.Equal(t, bar, baz)
+ assert.NotEqual(t, bar, next)
+ assert.Equal(t, baz, nero)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/attr.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/attr.go
new file mode 100644
index 0000000..2fd41ad
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/attr.go
@@ -0,0 +1,59 @@
+package geodata
+
+import (
+ "strings"
+
+ "github.com/metacubex/mihomo/component/geodata/router"
+)
+
+type AttributeList struct {
+ matcher []BooleanMatcher
+}
+
+func (al *AttributeList) Match(domain *router.Domain) bool {
+ for _, matcher := range al.matcher {
+ if !matcher.Match(domain) {
+ return false
+ }
+ }
+ return true
+}
+
+func (al *AttributeList) IsEmpty() bool {
+ return len(al.matcher) == 0
+}
+
+func (al *AttributeList) String() string {
+ matcher := make([]string, len(al.matcher))
+ for i, match := range al.matcher {
+ matcher[i] = string(match)
+ }
+ return strings.Join(matcher, ",")
+}
+
+func parseAttrs(attrs []string) *AttributeList {
+ al := new(AttributeList)
+ for _, attr := range attrs {
+ trimmedAttr := strings.ToLower(strings.TrimSpace(attr))
+ if len(trimmedAttr) == 0 {
+ continue
+ }
+ al.matcher = append(al.matcher, BooleanMatcher(trimmedAttr))
+ }
+ return al
+}
+
+type AttributeMatcher interface {
+ Match(*router.Domain) bool
+}
+
+type BooleanMatcher string
+
+func (m BooleanMatcher) Match(domain *router.Domain) bool {
+ for _, attr := range domain.Attribute {
+ if strings.EqualFold(attr.GetKey(), string(m)) {
+ return true
+ }
+ }
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/geodata.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/geodata.go
new file mode 100644
index 0000000..a6ef146
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/geodata.go
@@ -0,0 +1,44 @@
+package geodata
+
+import (
+ "fmt"
+
+ "github.com/metacubex/mihomo/component/geodata/router"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type loader struct {
+ LoaderImplementation
+}
+
+func (l *loader) LoadGeoSite(list string) ([]*router.Domain, error) {
+ return l.LoadSiteByPath(C.GeositeName, list)
+}
+
+func (l *loader) LoadGeoIP(country string) ([]*router.CIDR, error) {
+ return l.LoadIPByPath(C.GeoipName, country)
+}
+
+var loaders map[string]func() LoaderImplementation
+
+func RegisterGeoDataLoaderImplementationCreator(name string, loader func() LoaderImplementation) {
+ if loaders == nil {
+ loaders = map[string]func() LoaderImplementation{}
+ }
+ loaders[name] = loader
+}
+
+func getGeoDataLoaderImplementation(name string) (LoaderImplementation, error) {
+ if geoLoader, ok := loaders[name]; ok {
+ return geoLoader(), nil
+ }
+ return nil, fmt.Errorf("unable to locate GeoData loader %s", name)
+}
+
+func GetGeoDataLoader(name string) (Loader, error) {
+ loadImpl, err := getGeoDataLoaderImplementation(name)
+ if err == nil {
+ return &loader{loadImpl}, nil
+ }
+ return nil, err
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/geodataproto.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/geodataproto.go
new file mode 100644
index 0000000..0f1ce4d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/geodataproto.go
@@ -0,0 +1,18 @@
+package geodata
+
+import (
+ "github.com/metacubex/mihomo/component/geodata/router"
+)
+
+type LoaderImplementation interface {
+ LoadSiteByPath(filename, list string) ([]*router.Domain, error)
+ LoadSiteByBytes(geositeBytes []byte, list string) ([]*router.Domain, error)
+ LoadIPByPath(filename, country string) ([]*router.CIDR, error)
+ LoadIPByBytes(geoipBytes []byte, country string) ([]*router.CIDR, error)
+}
+
+type Loader interface {
+ LoaderImplementation
+ LoadGeoSite(list string) ([]*router.Domain, error)
+ LoadGeoIP(country string) ([]*router.CIDR, error)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/init.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/init.go
new file mode 100644
index 0000000..08ec1b9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/init.go
@@ -0,0 +1,204 @@
+package geodata
+
+import (
+ "context"
+ "fmt"
+ "io"
+ "net/http"
+ "os"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ mihomoHttp "github.com/metacubex/mihomo/component/http"
+ "github.com/metacubex/mihomo/component/mmdb"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+var (
+ initGeoSite bool
+ initGeoIP int
+ initASN bool
+
+ initGeoSiteMutex sync.Mutex
+ initGeoIPMutex sync.Mutex
+ initASNMutex sync.Mutex
+
+ geoIpEnable atomic.Bool
+ geoSiteEnable atomic.Bool
+ asnEnable atomic.Bool
+
+ geoIpUrl string
+ mmdbUrl string
+ geoSiteUrl string
+ asnUrl string
+)
+
+func GeoIpUrl() string {
+ return geoIpUrl
+}
+
+func SetGeoIpUrl(url string) {
+ geoIpUrl = url
+}
+
+func MmdbUrl() string {
+ return mmdbUrl
+}
+
+func SetMmdbUrl(url string) {
+ mmdbUrl = url
+}
+
+func GeoSiteUrl() string {
+ return geoSiteUrl
+}
+
+func SetGeoSiteUrl(url string) {
+ geoSiteUrl = url
+}
+
+func ASNUrl() string {
+ return asnUrl
+}
+
+func SetASNUrl(url string) {
+ asnUrl = url
+}
+
+func downloadToPath(url string, path string) (err error) {
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second*90)
+ defer cancel()
+ resp, err := mihomoHttp.HttpRequest(ctx, url, http.MethodGet, nil, nil)
+ if err != nil {
+ return
+ }
+ defer resp.Body.Close()
+
+ f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, 0o644)
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+ _, err = io.Copy(f, resp.Body)
+
+ return err
+}
+
+func InitGeoSite() error {
+ geoSiteEnable.Store(true)
+ initGeoSiteMutex.Lock()
+ defer initGeoSiteMutex.Unlock()
+ if _, err := os.Stat(C.Path.GeoSite()); os.IsNotExist(err) {
+ log.Infoln("Can't find GeoSite.dat, start download")
+ if err := downloadToPath(GeoSiteUrl(), C.Path.GeoSite()); err != nil {
+ return fmt.Errorf("can't download GeoSite.dat: %s", err.Error())
+ }
+ log.Infoln("Download GeoSite.dat finish")
+ initGeoSite = false
+ }
+ if !initGeoSite {
+ if err := Verify(C.GeositeName); err != nil {
+ log.Warnln("GeoSite.dat invalid, remove and download: %s", err)
+ if err := os.Remove(C.Path.GeoSite()); err != nil {
+ return fmt.Errorf("can't remove invalid GeoSite.dat: %s", err.Error())
+ }
+ if err := downloadToPath(GeoSiteUrl(), C.Path.GeoSite()); err != nil {
+ return fmt.Errorf("can't download GeoSite.dat: %s", err.Error())
+ }
+ }
+ initGeoSite = true
+ }
+ return nil
+}
+
+func InitGeoIP() error {
+ geoIpEnable.Store(true)
+ initGeoIPMutex.Lock()
+ defer initGeoIPMutex.Unlock()
+ if GeodataMode() {
+ if _, err := os.Stat(C.Path.GeoIP()); os.IsNotExist(err) {
+ log.Infoln("Can't find GeoIP.dat, start download")
+ if err := downloadToPath(GeoIpUrl(), C.Path.GeoIP()); err != nil {
+ return fmt.Errorf("can't download GeoIP.dat: %s", err.Error())
+ }
+ log.Infoln("Download GeoIP.dat finish")
+ initGeoIP = 0
+ }
+
+ if initGeoIP != 1 {
+ if err := Verify(C.GeoipName); err != nil {
+ log.Warnln("GeoIP.dat invalid, remove and download: %s", err)
+ if err := os.Remove(C.Path.GeoIP()); err != nil {
+ return fmt.Errorf("can't remove invalid GeoIP.dat: %s", err.Error())
+ }
+ if err := downloadToPath(GeoIpUrl(), C.Path.GeoIP()); err != nil {
+ return fmt.Errorf("can't download GeoIP.dat: %s", err.Error())
+ }
+ }
+ initGeoIP = 1
+ }
+ return nil
+ }
+
+ if _, err := os.Stat(C.Path.MMDB()); os.IsNotExist(err) {
+ log.Infoln("Can't find MMDB, start download")
+ if err := downloadToPath(MmdbUrl(), C.Path.MMDB()); err != nil {
+ return fmt.Errorf("can't download MMDB: %s", err.Error())
+ }
+ }
+
+ if initGeoIP != 2 {
+ if !mmdb.Verify(C.Path.MMDB()) {
+ log.Warnln("MMDB invalid, remove and download")
+ if err := os.Remove(C.Path.MMDB()); err != nil {
+ return fmt.Errorf("can't remove invalid MMDB: %s", err.Error())
+ }
+ if err := downloadToPath(MmdbUrl(), C.Path.MMDB()); err != nil {
+ return fmt.Errorf("can't download MMDB: %s", err.Error())
+ }
+ }
+ initGeoIP = 2
+ }
+ return nil
+}
+
+func InitASN() error {
+ asnEnable.Store(true)
+ initASNMutex.Lock()
+ defer initASNMutex.Unlock()
+ if _, err := os.Stat(C.Path.ASN()); os.IsNotExist(err) {
+ log.Infoln("Can't find ASN.mmdb, start download")
+ if err := downloadToPath(ASNUrl(), C.Path.ASN()); err != nil {
+ return fmt.Errorf("can't download ASN.mmdb: %s", err.Error())
+ }
+ log.Infoln("Download ASN.mmdb finish")
+ initASN = false
+ }
+ if !initASN {
+ if !mmdb.Verify(C.Path.ASN()) {
+ log.Warnln("ASN invalid, remove and download")
+ if err := os.Remove(C.Path.ASN()); err != nil {
+ return fmt.Errorf("can't remove invalid ASN: %s", err.Error())
+ }
+ if err := downloadToPath(ASNUrl(), C.Path.ASN()); err != nil {
+ return fmt.Errorf("can't download ASN: %s", err.Error())
+ }
+ }
+ initASN = true
+ }
+ return nil
+}
+
+func GeoIpEnable() bool {
+ return geoIpEnable.Load()
+}
+
+func GeoSiteEnable() bool {
+ return geoSiteEnable.Load()
+}
+
+func ASNEnable() bool {
+ return asnEnable.Load()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/memconservative/cache.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/memconservative/cache.go
new file mode 100644
index 0000000..ef76a42
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/memconservative/cache.go
@@ -0,0 +1,142 @@
+package memconservative
+
+import (
+ "fmt"
+ "os"
+ "strings"
+
+ "github.com/metacubex/mihomo/component/geodata/router"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ "google.golang.org/protobuf/proto"
+)
+
+type GeoIPCache map[string]*router.GeoIP
+
+func (g GeoIPCache) Has(key string) bool {
+ return !(g.Get(key) == nil)
+}
+
+func (g GeoIPCache) Get(key string) *router.GeoIP {
+ if g == nil {
+ return nil
+ }
+ return g[key]
+}
+
+func (g GeoIPCache) Set(key string, value *router.GeoIP) {
+ if g == nil {
+ g = make(map[string]*router.GeoIP)
+ }
+ g[key] = value
+}
+
+func (g GeoIPCache) Unmarshal(filename, code string) (*router.GeoIP, error) {
+ asset := C.Path.GetAssetLocation(filename)
+ idx := strings.ToLower(asset + ":" + code)
+ if g.Has(idx) {
+ return g.Get(idx), nil
+ }
+
+ geoipBytes, err := Decode(asset, code)
+ switch err {
+ case nil:
+ var geoip router.GeoIP
+ if err := proto.Unmarshal(geoipBytes, &geoip); err != nil {
+ return nil, err
+ }
+ g.Set(idx, &geoip)
+ return &geoip, nil
+
+ case errCodeNotFound:
+ return nil, fmt.Errorf("country code %s%s%s", code, " not found in ", filename)
+
+ case errFailedToReadBytes, errFailedToReadExpectedLenBytes,
+ errInvalidGeodataFile, errInvalidGeodataVarintLength:
+ log.Warnln("failed to decode geoip file: %s%s", filename, ", fallback to the original ReadFile method")
+ geoipBytes, err = os.ReadFile(asset)
+ if err != nil {
+ return nil, err
+ }
+ var geoipList router.GeoIPList
+ if err := proto.Unmarshal(geoipBytes, &geoipList); err != nil {
+ return nil, err
+ }
+ for _, geoip := range geoipList.GetEntry() {
+ if strings.EqualFold(code, geoip.GetCountryCode()) {
+ g.Set(idx, geoip)
+ return geoip, nil
+ }
+ }
+
+ default:
+ return nil, err
+ }
+
+ return nil, fmt.Errorf("country code %s%s%s", code, " not found in ", filename)
+}
+
+type GeoSiteCache map[string]*router.GeoSite
+
+func (g GeoSiteCache) Has(key string) bool {
+ return !(g.Get(key) == nil)
+}
+
+func (g GeoSiteCache) Get(key string) *router.GeoSite {
+ if g == nil {
+ return nil
+ }
+ return g[key]
+}
+
+func (g GeoSiteCache) Set(key string, value *router.GeoSite) {
+ if g == nil {
+ g = make(map[string]*router.GeoSite)
+ }
+ g[key] = value
+}
+
+func (g GeoSiteCache) Unmarshal(filename, code string) (*router.GeoSite, error) {
+ asset := C.Path.GetAssetLocation(filename)
+ idx := strings.ToLower(asset + ":" + code)
+ if g.Has(idx) {
+ return g.Get(idx), nil
+ }
+
+ geositeBytes, err := Decode(asset, code)
+ switch err {
+ case nil:
+ var geosite router.GeoSite
+ if err := proto.Unmarshal(geositeBytes, &geosite); err != nil {
+ return nil, err
+ }
+ g.Set(idx, &geosite)
+ return &geosite, nil
+
+ case errCodeNotFound:
+ return nil, fmt.Errorf("list %s%s%s", code, " not found in ", filename)
+
+ case errFailedToReadBytes, errFailedToReadExpectedLenBytes,
+ errInvalidGeodataFile, errInvalidGeodataVarintLength:
+ log.Warnln("failed to decode geosite file: %s%s", filename, ", fallback to the original ReadFile method")
+ geositeBytes, err = os.ReadFile(asset)
+ if err != nil {
+ return nil, err
+ }
+ var geositeList router.GeoSiteList
+ if err := proto.Unmarshal(geositeBytes, &geositeList); err != nil {
+ return nil, err
+ }
+ for _, geosite := range geositeList.GetEntry() {
+ if strings.EqualFold(code, geosite.GetCountryCode()) {
+ g.Set(idx, geosite)
+ return geosite, nil
+ }
+ }
+
+ default:
+ return nil, err
+ }
+
+ return nil, fmt.Errorf("list %s%s%s", code, " not found in ", filename)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/memconservative/decode.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/memconservative/decode.go
new file mode 100644
index 0000000..7eb8640
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/memconservative/decode.go
@@ -0,0 +1,107 @@
+package memconservative
+
+import (
+ "errors"
+ "fmt"
+ "io"
+ "os"
+ "strings"
+
+ "google.golang.org/protobuf/encoding/protowire"
+)
+
+var (
+ errFailedToReadBytes = errors.New("failed to read bytes")
+ errFailedToReadExpectedLenBytes = errors.New("failed to read expected length of bytes")
+ errInvalidGeodataFile = errors.New("invalid geodata file")
+ errInvalidGeodataVarintLength = errors.New("invalid geodata varint length")
+ errCodeNotFound = errors.New("code not found")
+)
+
+func emitBytes(f io.ReadSeeker, code string) ([]byte, error) {
+ count := 1
+ isInner := false
+ tempContainer := make([]byte, 0, 5)
+
+ var result []byte
+ var advancedN uint64 = 1
+ var geoDataVarintLength, codeVarintLength, varintLenByteLen uint64 = 0, 0, 0
+
+Loop:
+ for {
+ container := make([]byte, advancedN)
+ bytesRead, err := f.Read(container)
+ if err == io.EOF {
+ return nil, errCodeNotFound
+ }
+ if err != nil {
+ return nil, errFailedToReadBytes
+ }
+ if bytesRead != len(container) {
+ return nil, errFailedToReadExpectedLenBytes
+ }
+
+ switch count {
+ case 1, 3: // data type ((field_number << 3) | wire_type)
+ if container[0] != 10 { // byte `0A` equals to `10` in decimal
+ return nil, errInvalidGeodataFile
+ }
+ advancedN = 1
+ count++
+ case 2, 4: // data length
+ tempContainer = append(tempContainer, container...)
+ if container[0] > 127 { // max one-byte-length byte `7F`(0FFF FFFF) equals to `127` in decimal
+ advancedN = 1
+ goto Loop
+ }
+ lenVarint, n := protowire.ConsumeVarint(tempContainer)
+ if n < 0 {
+ return nil, errInvalidGeodataVarintLength
+ }
+ tempContainer = nil
+ if !isInner {
+ isInner = true
+ geoDataVarintLength = lenVarint
+ advancedN = 1
+ } else {
+ isInner = false
+ codeVarintLength = lenVarint
+ varintLenByteLen = uint64(n)
+ advancedN = codeVarintLength
+ }
+ count++
+ case 5: // data value
+ if strings.EqualFold(string(container), code) {
+ count++
+ offset := -(1 + int64(varintLenByteLen) + int64(codeVarintLength))
+ _, _ = f.Seek(offset, 1) // back to the start of GeoIP or GeoSite varint
+ advancedN = geoDataVarintLength // the number of bytes to be read in next round
+ } else {
+ count = 1
+ offset := int64(geoDataVarintLength) - int64(codeVarintLength) - int64(varintLenByteLen) - 1
+ _, _ = f.Seek(offset, 1) // skip the unmatched GeoIP or GeoSite varint
+ advancedN = 1 // the next round will be the start of another GeoIPList or GeoSiteList
+ }
+ case 6: // matched GeoIP or GeoSite varint
+ result = container
+ break Loop
+ }
+ }
+ return result, nil
+}
+
+func Decode(filename, code string) ([]byte, error) {
+ f, err := os.Open(filename)
+ if err != nil {
+ return nil, fmt.Errorf("failed to open file: %s, base error: %s", filename, err.Error())
+ }
+ defer func(f *os.File) {
+ _ = f.Close()
+ }(f)
+
+ geoBytes, err := emitBytes(f, code)
+ if err != nil {
+ return nil, err
+ }
+ return geoBytes, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/memconservative/memc.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/memconservative/memc.go
new file mode 100644
index 0000000..30d89f1
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/memconservative/memc.go
@@ -0,0 +1,49 @@
+package memconservative
+
+import (
+ "errors"
+ "fmt"
+ "runtime"
+
+ "github.com/metacubex/mihomo/component/geodata"
+ "github.com/metacubex/mihomo/component/geodata/router"
+)
+
+type memConservativeLoader struct {
+ geoipcache GeoIPCache
+ geositecache GeoSiteCache
+}
+
+func (m *memConservativeLoader) LoadIPByPath(filename, country string) ([]*router.CIDR, error) {
+ defer runtime.GC()
+ geoip, err := m.geoipcache.Unmarshal(filename, country)
+ if err != nil {
+ return nil, fmt.Errorf("failed to decode geodata file: %s, base error: %s", filename, err.Error())
+ }
+ return geoip.Cidr, nil
+}
+
+func (m *memConservativeLoader) LoadIPByBytes(geoipBytes []byte, country string) ([]*router.CIDR, error) {
+ return nil, errors.New("memConservative do not support LoadIPByBytes")
+}
+
+func (m *memConservativeLoader) LoadSiteByPath(filename, list string) ([]*router.Domain, error) {
+ defer runtime.GC()
+ geosite, err := m.geositecache.Unmarshal(filename, list)
+ if err != nil {
+ return nil, fmt.Errorf("failed to decode geodata file: %s, base error: %s", filename, err.Error())
+ }
+ return geosite.Domain, nil
+}
+
+func (m *memConservativeLoader) LoadSiteByBytes(geositeBytes []byte, list string) ([]*router.Domain, error) {
+ return nil, errors.New("memConservative do not support LoadSiteByBytes")
+}
+
+func newMemConservativeLoader() geodata.LoaderImplementation {
+ return &memConservativeLoader{make(map[string]*router.GeoIP), make(map[string]*router.GeoSite)}
+}
+
+func init() {
+ geodata.RegisterGeoDataLoaderImplementationCreator("memconservative", newMemConservativeLoader)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/package_info.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/package_info.go
new file mode 100644
index 0000000..4644ccc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/package_info.go
@@ -0,0 +1,4 @@
+// Modified from: https://github.com/v2fly/v2ray-core/tree/master/infra/conf/geodata
+// License: MIT
+
+package geodata
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/router/condition.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/router/condition.go
new file mode 100644
index 0000000..fb47e4a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/router/condition.go
@@ -0,0 +1,189 @@
+package router
+
+import (
+ "fmt"
+ "net/netip"
+ "strings"
+
+ "github.com/metacubex/mihomo/component/cidr"
+ "github.com/metacubex/mihomo/component/geodata/strmatcher"
+ "github.com/metacubex/mihomo/component/trie"
+)
+
+var matcherTypeMap = map[Domain_Type]strmatcher.Type{
+ Domain_Plain: strmatcher.Substr,
+ Domain_Regex: strmatcher.Regex,
+ Domain_Domain: strmatcher.Domain,
+ Domain_Full: strmatcher.Full,
+}
+
+func domainToMatcher(domain *Domain) (strmatcher.Matcher, error) {
+ matcherType, f := matcherTypeMap[domain.Type]
+ if !f {
+ return nil, fmt.Errorf("unsupported domain type %v", domain.Type)
+ }
+
+ matcher, err := matcherType.New(domain.Value)
+ if err != nil {
+ return nil, fmt.Errorf("failed to create domain matcher, base error: %s", err.Error())
+ }
+
+ return matcher, nil
+}
+
+type DomainMatcher interface {
+ ApplyDomain(string) bool
+ Count() int
+}
+
+type succinctDomainMatcher struct {
+ set *trie.DomainSet
+ otherMatchers []strmatcher.Matcher
+ count int
+}
+
+func (m *succinctDomainMatcher) ApplyDomain(domain string) bool {
+ isMatched := m.set.Has(domain)
+ if !isMatched {
+ for _, matcher := range m.otherMatchers {
+ isMatched = matcher.Match(domain)
+ if isMatched {
+ break
+ }
+ }
+ }
+ return isMatched
+}
+
+func (m *succinctDomainMatcher) Count() int {
+ return m.count
+}
+
+func NewSuccinctMatcherGroup(domains []*Domain) (DomainMatcher, error) {
+ t := trie.New[struct{}]()
+ m := &succinctDomainMatcher{
+ count: len(domains),
+ }
+ for _, d := range domains {
+ switch d.Type {
+ case Domain_Plain, Domain_Regex:
+ matcher, err := matcherTypeMap[d.Type].New(d.Value)
+ if err != nil {
+ return nil, err
+ }
+ m.otherMatchers = append(m.otherMatchers, matcher)
+
+ case Domain_Domain:
+ err := t.Insert("+."+d.Value, struct{}{})
+ if err != nil {
+ return nil, err
+ }
+
+ case Domain_Full:
+ err := t.Insert(d.Value, struct{}{})
+ if err != nil {
+ return nil, err
+ }
+ }
+ }
+ m.set = t.NewDomainSet()
+ return m, nil
+}
+
+type v2rayDomainMatcher struct {
+ matchers strmatcher.IndexMatcher
+ count int
+}
+
+func NewMphMatcherGroup(domains []*Domain) (DomainMatcher, error) {
+ g := strmatcher.NewMphMatcherGroup()
+ for _, d := range domains {
+ matcherType, f := matcherTypeMap[d.Type]
+ if !f {
+ return nil, fmt.Errorf("unsupported domain type %v", d.Type)
+ }
+ _, err := g.AddPattern(d.Value, matcherType)
+ if err != nil {
+ return nil, err
+ }
+ }
+ g.Build()
+ return &v2rayDomainMatcher{
+ matchers: g,
+ count: len(domains),
+ }, nil
+}
+
+func (m *v2rayDomainMatcher) ApplyDomain(domain string) bool {
+ return len(m.matchers.Match(strings.ToLower(domain))) > 0
+}
+
+func (m *v2rayDomainMatcher) Count() int {
+ return m.count
+}
+
+type notDomainMatcher struct {
+ DomainMatcher
+}
+
+func (m notDomainMatcher) ApplyDomain(domain string) bool {
+ return !m.DomainMatcher.ApplyDomain(domain)
+}
+
+func NewNotDomainMatcherGroup(matcher DomainMatcher) DomainMatcher {
+ return notDomainMatcher{matcher}
+}
+
+type IPMatcher interface {
+ Match(ip netip.Addr) bool
+ Count() int
+}
+
+type geoIPMatcher struct {
+ cidrSet *cidr.IpCidrSet
+ count int
+}
+
+// Match returns true if the given ip is included by the GeoIP.
+func (m *geoIPMatcher) Match(ip netip.Addr) bool {
+ return m.cidrSet.IsContain(ip)
+}
+
+func (m *geoIPMatcher) Count() int {
+ return m.count
+}
+
+func NewGeoIPMatcher(cidrList []*CIDR) (IPMatcher, error) {
+ m := &geoIPMatcher{
+ cidrSet: cidr.NewIpCidrSet(),
+ count: len(cidrList),
+ }
+ for _, cidr := range cidrList {
+ addr, ok := netip.AddrFromSlice(cidr.Ip)
+ if !ok {
+ return nil, fmt.Errorf("error when loading GeoIP: invalid IP: %s", cidr.Ip)
+ }
+ err := m.cidrSet.AddIpCidr(netip.PrefixFrom(addr, int(cidr.Prefix)))
+ if err != nil {
+ return nil, fmt.Errorf("error when loading GeoIP: %w", err)
+ }
+ }
+ err := m.cidrSet.Merge()
+ if err != nil {
+ return nil, err
+ }
+
+ return m, nil
+}
+
+type notIPMatcher struct {
+ IPMatcher
+}
+
+func (m notIPMatcher) Match(ip netip.Addr) bool {
+ return !m.IPMatcher.Match(ip)
+}
+
+func NewNotIpMatcherGroup(matcher IPMatcher) IPMatcher {
+ return notIPMatcher{matcher}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/router/config.pb.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/router/config.pb.go
new file mode 100644
index 0000000..59d90c7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/router/config.pb.go
@@ -0,0 +1,725 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.0
+// protoc v3.19.1
+// source: component/geodata/router/config.proto
+
+package router
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// Type of domain value.
+type Domain_Type int32
+
+const (
+ // The value is used as is.
+ Domain_Plain Domain_Type = 0
+ // The value is used as a regular expression.
+ Domain_Regex Domain_Type = 1
+ // The value is a root domain.
+ Domain_Domain Domain_Type = 2
+ // The value is a domain.
+ Domain_Full Domain_Type = 3
+)
+
+// Enum value maps for Domain_Type.
+var (
+ Domain_Type_name = map[int32]string{
+ 0: "Plain",
+ 1: "Regex",
+ 2: "Domain",
+ 3: "Full",
+ }
+ Domain_Type_value = map[string]int32{
+ "Plain": 0,
+ "Regex": 1,
+ "Domain": 2,
+ "Full": 3,
+ }
+)
+
+func (x Domain_Type) Enum() *Domain_Type {
+ p := new(Domain_Type)
+ *p = x
+ return p
+}
+
+func (x Domain_Type) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (Domain_Type) Descriptor() protoreflect.EnumDescriptor {
+ return file_component_geodata_router_config_proto_enumTypes[0].Descriptor()
+}
+
+func (Domain_Type) Type() protoreflect.EnumType {
+ return &file_component_geodata_router_config_proto_enumTypes[0]
+}
+
+func (x Domain_Type) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Domain_Type.Descriptor instead.
+func (Domain_Type) EnumDescriptor() ([]byte, []int) {
+ return file_component_geodata_router_config_proto_rawDescGZIP(), []int{0, 0}
+}
+
+// Domain for routing decision.
+type Domain struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // Domain matching type.
+ Type Domain_Type `protobuf:"varint,1,opt,name=type,proto3,enum=mihomo.component.geodata.router.Domain_Type" json:"type,omitempty"`
+ // Domain value.
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ // Attributes of this domain. May be used for filtering.
+ Attribute []*Domain_Attribute `protobuf:"bytes,3,rep,name=attribute,proto3" json:"attribute,omitempty"`
+}
+
+func (x *Domain) Reset() {
+ *x = Domain{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_component_geodata_router_config_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Domain) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Domain) ProtoMessage() {}
+
+func (x *Domain) ProtoReflect() protoreflect.Message {
+ mi := &file_component_geodata_router_config_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Domain.ProtoReflect.Descriptor instead.
+func (*Domain) Descriptor() ([]byte, []int) {
+ return file_component_geodata_router_config_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Domain) GetType() Domain_Type {
+ if x != nil {
+ return x.Type
+ }
+ return Domain_Plain
+}
+
+func (x *Domain) GetValue() string {
+ if x != nil {
+ return x.Value
+ }
+ return ""
+}
+
+func (x *Domain) GetAttribute() []*Domain_Attribute {
+ if x != nil {
+ return x.Attribute
+ }
+ return nil
+}
+
+// IP for routing decision, in CIDR form.
+type CIDR struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // IP address, should be either 4 or 16 bytes.
+ Ip []byte `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"`
+ // Number of leading ones in the network mask.
+ Prefix uint32 `protobuf:"varint,2,opt,name=prefix,proto3" json:"prefix,omitempty"`
+}
+
+func (x *CIDR) Reset() {
+ *x = CIDR{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_component_geodata_router_config_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *CIDR) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CIDR) ProtoMessage() {}
+
+func (x *CIDR) ProtoReflect() protoreflect.Message {
+ mi := &file_component_geodata_router_config_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CIDR.ProtoReflect.Descriptor instead.
+func (*CIDR) Descriptor() ([]byte, []int) {
+ return file_component_geodata_router_config_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *CIDR) GetIp() []byte {
+ if x != nil {
+ return x.Ip
+ }
+ return nil
+}
+
+func (x *CIDR) GetPrefix() uint32 {
+ if x != nil {
+ return x.Prefix
+ }
+ return 0
+}
+
+type GeoIP struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CountryCode string `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
+ Cidr []*CIDR `protobuf:"bytes,2,rep,name=cidr,proto3" json:"cidr,omitempty"`
+ ReverseMatch bool `protobuf:"varint,3,opt,name=reverse_match,json=reverseMatch,proto3" json:"reverse_match,omitempty"`
+}
+
+func (x *GeoIP) Reset() {
+ *x = GeoIP{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_component_geodata_router_config_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GeoIP) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GeoIP) ProtoMessage() {}
+
+func (x *GeoIP) ProtoReflect() protoreflect.Message {
+ mi := &file_component_geodata_router_config_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GeoIP.ProtoReflect.Descriptor instead.
+func (*GeoIP) Descriptor() ([]byte, []int) {
+ return file_component_geodata_router_config_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *GeoIP) GetCountryCode() string {
+ if x != nil {
+ return x.CountryCode
+ }
+ return ""
+}
+
+func (x *GeoIP) GetCidr() []*CIDR {
+ if x != nil {
+ return x.Cidr
+ }
+ return nil
+}
+
+func (x *GeoIP) GetReverseMatch() bool {
+ if x != nil {
+ return x.ReverseMatch
+ }
+ return false
+}
+
+type GeoIPList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Entry []*GeoIP `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
+}
+
+func (x *GeoIPList) Reset() {
+ *x = GeoIPList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_component_geodata_router_config_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GeoIPList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GeoIPList) ProtoMessage() {}
+
+func (x *GeoIPList) ProtoReflect() protoreflect.Message {
+ mi := &file_component_geodata_router_config_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GeoIPList.ProtoReflect.Descriptor instead.
+func (*GeoIPList) Descriptor() ([]byte, []int) {
+ return file_component_geodata_router_config_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *GeoIPList) GetEntry() []*GeoIP {
+ if x != nil {
+ return x.Entry
+ }
+ return nil
+}
+
+type GeoSite struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ CountryCode string `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"`
+ Domain []*Domain `protobuf:"bytes,2,rep,name=domain,proto3" json:"domain,omitempty"`
+}
+
+func (x *GeoSite) Reset() {
+ *x = GeoSite{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_component_geodata_router_config_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GeoSite) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GeoSite) ProtoMessage() {}
+
+func (x *GeoSite) ProtoReflect() protoreflect.Message {
+ mi := &file_component_geodata_router_config_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GeoSite.ProtoReflect.Descriptor instead.
+func (*GeoSite) Descriptor() ([]byte, []int) {
+ return file_component_geodata_router_config_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *GeoSite) GetCountryCode() string {
+ if x != nil {
+ return x.CountryCode
+ }
+ return ""
+}
+
+func (x *GeoSite) GetDomain() []*Domain {
+ if x != nil {
+ return x.Domain
+ }
+ return nil
+}
+
+type GeoSiteList struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Entry []*GeoSite `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
+}
+
+func (x *GeoSiteList) Reset() {
+ *x = GeoSiteList{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_component_geodata_router_config_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GeoSiteList) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GeoSiteList) ProtoMessage() {}
+
+func (x *GeoSiteList) ProtoReflect() protoreflect.Message {
+ mi := &file_component_geodata_router_config_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GeoSiteList.ProtoReflect.Descriptor instead.
+func (*GeoSiteList) Descriptor() ([]byte, []int) {
+ return file_component_geodata_router_config_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *GeoSiteList) GetEntry() []*GeoSite {
+ if x != nil {
+ return x.Entry
+ }
+ return nil
+}
+
+type Domain_Attribute struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ // Types that are assignable to TypedValue:
+ // *Domain_Attribute_BoolValue
+ // *Domain_Attribute_IntValue
+ TypedValue isDomain_Attribute_TypedValue `protobuf_oneof:"typed_value"`
+}
+
+func (x *Domain_Attribute) Reset() {
+ *x = Domain_Attribute{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_component_geodata_router_config_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Domain_Attribute) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Domain_Attribute) ProtoMessage() {}
+
+func (x *Domain_Attribute) ProtoReflect() protoreflect.Message {
+ mi := &file_component_geodata_router_config_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Domain_Attribute.ProtoReflect.Descriptor instead.
+func (*Domain_Attribute) Descriptor() ([]byte, []int) {
+ return file_component_geodata_router_config_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *Domain_Attribute) GetKey() string {
+ if x != nil {
+ return x.Key
+ }
+ return ""
+}
+
+func (m *Domain_Attribute) GetTypedValue() isDomain_Attribute_TypedValue {
+ if m != nil {
+ return m.TypedValue
+ }
+ return nil
+}
+
+func (x *Domain_Attribute) GetBoolValue() bool {
+ if x, ok := x.GetTypedValue().(*Domain_Attribute_BoolValue); ok {
+ return x.BoolValue
+ }
+ return false
+}
+
+func (x *Domain_Attribute) GetIntValue() int64 {
+ if x, ok := x.GetTypedValue().(*Domain_Attribute_IntValue); ok {
+ return x.IntValue
+ }
+ return 0
+}
+
+type isDomain_Attribute_TypedValue interface {
+ isDomain_Attribute_TypedValue()
+}
+
+type Domain_Attribute_BoolValue struct {
+ BoolValue bool `protobuf:"varint,2,opt,name=bool_value,json=boolValue,proto3,oneof"`
+}
+
+type Domain_Attribute_IntValue struct {
+ IntValue int64 `protobuf:"varint,3,opt,name=int_value,json=intValue,proto3,oneof"`
+}
+
+func (*Domain_Attribute_BoolValue) isDomain_Attribute_TypedValue() {}
+
+func (*Domain_Attribute_IntValue) isDomain_Attribute_TypedValue() {}
+
+var File_component_geodata_router_config_proto protoreflect.FileDescriptor
+
+var file_component_geodata_router_config_proto_rawDesc = []byte{
+ 0x0a, 0x25, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x65, 0x6f, 0x64,
+ 0x61, 0x74, 0x61, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+ 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x6f, 0x64, 0x61, 0x74, 0x61,
+ 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x22, 0xd1, 0x02, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61,
+ 0x69, 0x6e, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x2b, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65,
+ 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65,
+ 0x72, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
+ 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4e, 0x0a, 0x09, 0x61, 0x74, 0x74,
+ 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63,
+ 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x67,
+ 0x65, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6f,
+ 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09,
+ 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x1a, 0x6c, 0x0a, 0x09, 0x41, 0x74, 0x74,
+ 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c,
+ 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09,
+ 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74,
+ 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08,
+ 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x74, 0x79, 0x70, 0x65,
+ 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12,
+ 0x09, 0x0a, 0x05, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x65,
+ 0x67, 0x65, 0x78, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x10,
+ 0x02, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x03, 0x22, 0x2e, 0x0a, 0x04, 0x43,
+ 0x49, 0x44, 0x52, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
+ 0x02, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0d, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x89, 0x01, 0x0a, 0x05,
+ 0x47, 0x65, 0x6f, 0x49, 0x50, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79,
+ 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x72,
+ 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x6f, 0x64, 0x61, 0x74, 0x61,
+ 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x49, 0x44, 0x52, 0x52, 0x04, 0x63, 0x69,
+ 0x64, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x6d, 0x61,
+ 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x65, 0x72,
+ 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x48, 0x0a, 0x09, 0x47, 0x65, 0x6f, 0x49, 0x50,
+ 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x70,
+ 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x6f,
+ 0x75, 0x74, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72,
+ 0x79, 0x22, 0x6c, 0x0a, 0x07, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12,
+ 0x3e, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e,
+ 0x74, 0x2e, 0x67, 0x65, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
+ 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22,
+ 0x4c, 0x0a, 0x0b, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3d,
+ 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e,
+ 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e,
+ 0x67, 0x65, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x47,
+ 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x7c, 0x0a,
+ 0x22, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
+ 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x6f, 0x75,
+ 0x74, 0x65, 0x72, 0x50, 0x01, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x2f, 0x44, 0x72, 0x65, 0x61, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x2f, 0x63, 0x6c, 0x61, 0x73,
+ 0x68, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x65, 0x6f, 0x64,
+ 0x61, 0x74, 0x61, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0xaa, 0x02, 0x1e, 0x43, 0x6c, 0x61,
+ 0x73, 0x68, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x6f,
+ 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_component_geodata_router_config_proto_rawDescOnce sync.Once
+ file_component_geodata_router_config_proto_rawDescData = file_component_geodata_router_config_proto_rawDesc
+)
+
+func file_component_geodata_router_config_proto_rawDescGZIP() []byte {
+ file_component_geodata_router_config_proto_rawDescOnce.Do(func() {
+ file_component_geodata_router_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_component_geodata_router_config_proto_rawDescData)
+ })
+ return file_component_geodata_router_config_proto_rawDescData
+}
+
+var file_component_geodata_router_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_component_geodata_router_config_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
+var file_component_geodata_router_config_proto_goTypes = []interface{}{
+ (Domain_Type)(0), // 0: mihomo.component.geodata.router.Domain.Type
+ (*Domain)(nil), // 1: mihomo.component.geodata.router.Domain
+ (*CIDR)(nil), // 2: mihomo.component.geodata.router.CIDR
+ (*GeoIP)(nil), // 3: mihomo.component.geodata.router.GeoIP
+ (*GeoIPList)(nil), // 4: mihomo.component.geodata.router.GeoIPList
+ (*GeoSite)(nil), // 5: mihomo.component.geodata.router.GeoSite
+ (*GeoSiteList)(nil), // 6: mihomo.component.geodata.router.GeoSiteList
+ (*Domain_Attribute)(nil), // 7: mihomo.component.geodata.router.Domain.Attribute
+}
+var file_component_geodata_router_config_proto_depIdxs = []int32{
+ 0, // 0: mihomo.component.geodata.router.Domain.type:type_name -> mihomo.component.geodata.router.Domain.Type
+ 7, // 1: mihomo.component.geodata.router.Domain.attribute:type_name -> mihomo.component.geodata.router.Domain.Attribute
+ 2, // 2: mihomo.component.geodata.router.GeoIP.cidr:type_name -> mihomo.component.geodata.router.CIDR
+ 3, // 3: mihomo.component.geodata.router.GeoIPList.entry:type_name -> mihomo.component.geodata.router.GeoIP
+ 1, // 4: mihomo.component.geodata.router.GeoSite.domain:type_name -> mihomo.component.geodata.router.Domain
+ 5, // 5: mihomo.component.geodata.router.GeoSiteList.entry:type_name -> mihomo.component.geodata.router.GeoSite
+ 6, // [6:6] is the sub-list for method output_type
+ 6, // [6:6] is the sub-list for method input_type
+ 6, // [6:6] is the sub-list for extension type_name
+ 6, // [6:6] is the sub-list for extension extendee
+ 0, // [0:6] is the sub-list for field type_name
+}
+
+func init() { file_component_geodata_router_config_proto_init() }
+func file_component_geodata_router_config_proto_init() {
+ if File_component_geodata_router_config_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_component_geodata_router_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Domain); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_component_geodata_router_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*CIDR); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_component_geodata_router_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GeoIP); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_component_geodata_router_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GeoIPList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_component_geodata_router_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GeoSite); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_component_geodata_router_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GeoSiteList); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_component_geodata_router_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Domain_Attribute); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_component_geodata_router_config_proto_msgTypes[6].OneofWrappers = []interface{}{
+ (*Domain_Attribute_BoolValue)(nil),
+ (*Domain_Attribute_IntValue)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_component_geodata_router_config_proto_rawDesc,
+ NumEnums: 1,
+ NumMessages: 7,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_component_geodata_router_config_proto_goTypes,
+ DependencyIndexes: file_component_geodata_router_config_proto_depIdxs,
+ EnumInfos: file_component_geodata_router_config_proto_enumTypes,
+ MessageInfos: file_component_geodata_router_config_proto_msgTypes,
+ }.Build()
+ File_component_geodata_router_config_proto = out.File
+ file_component_geodata_router_config_proto_rawDesc = nil
+ file_component_geodata_router_config_proto_goTypes = nil
+ file_component_geodata_router_config_proto_depIdxs = nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/router/config.proto b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/router/config.proto
new file mode 100644
index 0000000..9879574
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/router/config.proto
@@ -0,0 +1,68 @@
+syntax = "proto3";
+
+package mihomo.component.geodata.router;
+option csharp_namespace = "Mihomo.Component.Geodata.Router";
+option go_package = "github.com/metacubex/mihomo/component/geodata/router";
+option java_package = "com.mihomo.component.geodata.router";
+option java_multiple_files = true;
+
+// Domain for routing decision.
+message Domain {
+ // Type of domain value.
+ enum Type {
+ // The value is used as is.
+ Plain = 0;
+ // The value is used as a regular expression.
+ Regex = 1;
+ // The value is a root domain.
+ Domain = 2;
+ // The value is a domain.
+ Full = 3;
+ }
+
+ // Domain matching type.
+ Type type = 1;
+
+ // Domain value.
+ string value = 2;
+
+ message Attribute {
+ string key = 1;
+
+ oneof typed_value {
+ bool bool_value = 2;
+ int64 int_value = 3;
+ }
+ }
+
+ // Attributes of this domain. May be used for filtering.
+ repeated Attribute attribute = 3;
+}
+
+// IP for routing decision, in CIDR form.
+message CIDR {
+ // IP address, should be either 4 or 16 bytes.
+ bytes ip = 1;
+
+ // Number of leading ones in the network mask.
+ uint32 prefix = 2;
+}
+
+message GeoIP {
+ string country_code = 1;
+ repeated CIDR cidr = 2;
+ bool reverse_match = 3;
+}
+
+message GeoIPList {
+ repeated GeoIP entry = 1;
+}
+
+message GeoSite {
+ string country_code = 1;
+ repeated Domain domain = 2;
+}
+
+message GeoSiteList {
+ repeated GeoSite entry = 1;
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/standard/standard.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/standard/standard.go
new file mode 100644
index 0000000..bfaae5e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/standard/standard.go
@@ -0,0 +1,92 @@
+package standard
+
+import (
+ "fmt"
+ "io"
+ "os"
+ "strings"
+
+ "github.com/metacubex/mihomo/component/geodata"
+ "github.com/metacubex/mihomo/component/geodata/router"
+ C "github.com/metacubex/mihomo/constant"
+
+ "google.golang.org/protobuf/proto"
+)
+
+func ReadFile(path string) ([]byte, error) {
+ reader, err := os.Open(path)
+ if err != nil {
+ return nil, err
+ }
+ defer func(reader *os.File) {
+ _ = reader.Close()
+ }(reader)
+
+ return io.ReadAll(reader)
+}
+
+func ReadAsset(file string) ([]byte, error) {
+ return ReadFile(C.Path.GetAssetLocation(file))
+}
+
+func loadIP(geoipBytes []byte, country string) ([]*router.CIDR, error) {
+ var geoipList router.GeoIPList
+ if err := proto.Unmarshal(geoipBytes, &geoipList); err != nil {
+ return nil, err
+ }
+
+ for _, geoip := range geoipList.Entry {
+ if strings.EqualFold(geoip.CountryCode, country) {
+ return geoip.Cidr, nil
+ }
+ }
+
+ return nil, fmt.Errorf("country %s not found", country)
+}
+
+func loadSite(geositeBytes []byte, list string) ([]*router.Domain, error) {
+ var geositeList router.GeoSiteList
+ if err := proto.Unmarshal(geositeBytes, &geositeList); err != nil {
+ return nil, err
+ }
+
+ for _, site := range geositeList.Entry {
+ if strings.EqualFold(site.CountryCode, list) {
+ return site.Domain, nil
+ }
+ }
+
+ return nil, fmt.Errorf("list %s not found", list)
+}
+
+type standardLoader struct{}
+
+func (d standardLoader) LoadSiteByPath(filename, list string) ([]*router.Domain, error) {
+ geositeBytes, err := ReadAsset(filename)
+ if err != nil {
+ return nil, fmt.Errorf("failed to open file: %s, base error: %s", filename, err.Error())
+ }
+ return loadSite(geositeBytes, list)
+}
+
+func (d standardLoader) LoadSiteByBytes(geositeBytes []byte, list string) ([]*router.Domain, error) {
+ return loadSite(geositeBytes, list)
+}
+
+func (d standardLoader) LoadIPByPath(filename, country string) ([]*router.CIDR, error) {
+ geoipBytes, err := ReadAsset(filename)
+ if err != nil {
+ return nil, fmt.Errorf("failed to open file: %s, base error: %s", filename, err.Error())
+ }
+ return loadIP(geoipBytes, country)
+}
+
+func (d standardLoader) LoadIPByBytes(geoipBytes []byte, country string) ([]*router.CIDR, error) {
+ return loadIP(geoipBytes, country)
+}
+
+func init() {
+ geodata.RegisterGeoDataLoaderImplementationCreator("standard", func() geodata.LoaderImplementation {
+ return standardLoader{}
+ })
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/ac_automaton_matcher.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/ac_automaton_matcher.go
new file mode 100644
index 0000000..fd02d51
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/ac_automaton_matcher.go
@@ -0,0 +1,241 @@
+package strmatcher
+
+import (
+ list "github.com/bahlo/generic-list-go"
+)
+
+const validCharCount = 53
+
+type MatchType struct {
+ matchType Type
+ exist bool
+}
+
+const (
+ TrieEdge bool = true
+ FailEdge bool = false
+)
+
+type Edge struct {
+ edgeType bool
+ nextNode int
+}
+
+type ACAutomaton struct {
+ trie [][validCharCount]Edge
+ fail []int
+ exists []MatchType
+ count int
+}
+
+func newNode() [validCharCount]Edge {
+ var s [validCharCount]Edge
+ for i := range s {
+ s[i] = Edge{
+ edgeType: FailEdge,
+ nextNode: 0,
+ }
+ }
+ return s
+}
+
+var char2Index = [...]int{
+ 'A': 0,
+ 'a': 0,
+ 'B': 1,
+ 'b': 1,
+ 'C': 2,
+ 'c': 2,
+ 'D': 3,
+ 'd': 3,
+ 'E': 4,
+ 'e': 4,
+ 'F': 5,
+ 'f': 5,
+ 'G': 6,
+ 'g': 6,
+ 'H': 7,
+ 'h': 7,
+ 'I': 8,
+ 'i': 8,
+ 'J': 9,
+ 'j': 9,
+ 'K': 10,
+ 'k': 10,
+ 'L': 11,
+ 'l': 11,
+ 'M': 12,
+ 'm': 12,
+ 'N': 13,
+ 'n': 13,
+ 'O': 14,
+ 'o': 14,
+ 'P': 15,
+ 'p': 15,
+ 'Q': 16,
+ 'q': 16,
+ 'R': 17,
+ 'r': 17,
+ 'S': 18,
+ 's': 18,
+ 'T': 19,
+ 't': 19,
+ 'U': 20,
+ 'u': 20,
+ 'V': 21,
+ 'v': 21,
+ 'W': 22,
+ 'w': 22,
+ 'X': 23,
+ 'x': 23,
+ 'Y': 24,
+ 'y': 24,
+ 'Z': 25,
+ 'z': 25,
+ '!': 26,
+ '$': 27,
+ '&': 28,
+ '\'': 29,
+ '(': 30,
+ ')': 31,
+ '*': 32,
+ '+': 33,
+ ',': 34,
+ ';': 35,
+ '=': 36,
+ ':': 37,
+ '%': 38,
+ '-': 39,
+ '.': 40,
+ '_': 41,
+ '~': 42,
+ '0': 43,
+ '1': 44,
+ '2': 45,
+ '3': 46,
+ '4': 47,
+ '5': 48,
+ '6': 49,
+ '7': 50,
+ '8': 51,
+ '9': 52,
+}
+
+func NewACAutomaton() *ACAutomaton {
+ ac := new(ACAutomaton)
+ ac.trie = append(ac.trie, newNode())
+ ac.fail = append(ac.fail, 0)
+ ac.exists = append(ac.exists, MatchType{
+ matchType: Full,
+ exist: false,
+ })
+ return ac
+}
+
+func (ac *ACAutomaton) Add(domain string, t Type) {
+ node := 0
+ for i := len(domain) - 1; i >= 0; i-- {
+ idx := char2Index[domain[i]]
+ if ac.trie[node][idx].nextNode == 0 {
+ ac.count++
+ if len(ac.trie) < ac.count+1 {
+ ac.trie = append(ac.trie, newNode())
+ ac.fail = append(ac.fail, 0)
+ ac.exists = append(ac.exists, MatchType{
+ matchType: Full,
+ exist: false,
+ })
+ }
+ ac.trie[node][idx] = Edge{
+ edgeType: TrieEdge,
+ nextNode: ac.count,
+ }
+ }
+ node = ac.trie[node][idx].nextNode
+ }
+ ac.exists[node] = MatchType{
+ matchType: t,
+ exist: true,
+ }
+ switch t {
+ case Domain:
+ ac.exists[node] = MatchType{
+ matchType: Full,
+ exist: true,
+ }
+ idx := char2Index['.']
+ if ac.trie[node][idx].nextNode == 0 {
+ ac.count++
+ if len(ac.trie) < ac.count+1 {
+ ac.trie = append(ac.trie, newNode())
+ ac.fail = append(ac.fail, 0)
+ ac.exists = append(ac.exists, MatchType{
+ matchType: Full,
+ exist: false,
+ })
+ }
+ ac.trie[node][idx] = Edge{
+ edgeType: TrieEdge,
+ nextNode: ac.count,
+ }
+ }
+ node = ac.trie[node][idx].nextNode
+ ac.exists[node] = MatchType{
+ matchType: t,
+ exist: true,
+ }
+ default:
+ break
+ }
+}
+
+func (ac *ACAutomaton) Build() {
+ queue := list.New[Edge]()
+ for i := 0; i < validCharCount; i++ {
+ if ac.trie[0][i].nextNode != 0 {
+ queue.PushBack(ac.trie[0][i])
+ }
+ }
+ for {
+ front := queue.Front()
+ if front == nil {
+ break
+ } else {
+ node := front.Value.nextNode
+ queue.Remove(front)
+ for i := 0; i < validCharCount; i++ {
+ if ac.trie[node][i].nextNode != 0 {
+ ac.fail[ac.trie[node][i].nextNode] = ac.trie[ac.fail[node]][i].nextNode
+ queue.PushBack(ac.trie[node][i])
+ } else {
+ ac.trie[node][i] = Edge{
+ edgeType: FailEdge,
+ nextNode: ac.trie[ac.fail[node]][i].nextNode,
+ }
+ }
+ }
+ }
+ }
+}
+
+func (ac *ACAutomaton) Match(s string) bool {
+ node := 0
+ fullMatch := true
+ // 1. the match string is all through trie edge. FULL MATCH or DOMAIN
+ // 2. the match string is through a fail edge. NOT FULL MATCH
+ // 2.1 Through a fail edge, but there exists a valid node. SUBSTR
+ for i := len(s) - 1; i >= 0; i-- {
+ idx := char2Index[s[i]]
+ fullMatch = fullMatch && ac.trie[node][idx].edgeType
+ node = ac.trie[node][idx].nextNode
+ switch ac.exists[node].matchType {
+ case Substr:
+ return true
+ case Domain:
+ if fullMatch {
+ return true
+ }
+ }
+ }
+ return fullMatch && ac.exists[node].exist
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/matchers.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/matchers.go
new file mode 100644
index 0000000..b5ab09c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/matchers.go
@@ -0,0 +1,52 @@
+package strmatcher
+
+import (
+ "regexp"
+ "strings"
+)
+
+type fullMatcher string
+
+func (m fullMatcher) Match(s string) bool {
+ return string(m) == s
+}
+
+func (m fullMatcher) String() string {
+ return "full:" + string(m)
+}
+
+type substrMatcher string
+
+func (m substrMatcher) Match(s string) bool {
+ return strings.Contains(s, string(m))
+}
+
+func (m substrMatcher) String() string {
+ return "keyword:" + string(m)
+}
+
+type domainMatcher string
+
+func (m domainMatcher) Match(s string) bool {
+ pattern := string(m)
+ if !strings.HasSuffix(s, pattern) {
+ return false
+ }
+ return len(s) == len(pattern) || s[len(s)-len(pattern)-1] == '.'
+}
+
+func (m domainMatcher) String() string {
+ return "domain:" + string(m)
+}
+
+type regexMatcher struct {
+ pattern *regexp.Regexp
+}
+
+func (m *regexMatcher) Match(s string) bool {
+ return m.pattern.MatchString(s)
+}
+
+func (m *regexMatcher) String() string {
+ return "regexp:" + m.pattern.String()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/mph_matcher.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/mph_matcher.go
new file mode 100644
index 0000000..7c1b406
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/mph_matcher.go
@@ -0,0 +1,296 @@
+package strmatcher
+
+import (
+ "math/bits"
+ "regexp"
+ "sort"
+ "strings"
+ "unsafe"
+)
+
+// PrimeRK is the prime base used in Rabin-Karp algorithm.
+const PrimeRK = 16777619
+
+// calculate the rolling murmurHash of given string
+func RollingHash(s string) uint32 {
+ h := uint32(0)
+ for i := len(s) - 1; i >= 0; i-- {
+ h = h*PrimeRK + uint32(s[i])
+ }
+ return h
+}
+
+// A MphMatcherGroup is divided into three parts:
+// 1. `full` and `domain` patterns are matched by Rabin-Karp algorithm and minimal perfect hash table;
+// 2. `substr` patterns are matched by ac automaton;
+// 3. `regex` patterns are matched with the regex library.
+type MphMatcherGroup struct {
+ ac *ACAutomaton
+ otherMatchers []matcherEntry
+ rules []string
+ level0 []uint32
+ level0Mask int
+ level1 []uint32
+ level1Mask int
+ count uint32
+ ruleMap *map[string]uint32
+}
+
+func (g *MphMatcherGroup) AddFullOrDomainPattern(pattern string, t Type) {
+ h := RollingHash(pattern)
+ switch t {
+ case Domain:
+ (*g.ruleMap)["."+pattern] = h*PrimeRK + uint32('.')
+ fallthrough
+ case Full:
+ (*g.ruleMap)[pattern] = h
+ default:
+ }
+}
+
+func NewMphMatcherGroup() *MphMatcherGroup {
+ return &MphMatcherGroup{
+ ac: nil,
+ otherMatchers: nil,
+ rules: nil,
+ level0: nil,
+ level0Mask: 0,
+ level1: nil,
+ level1Mask: 0,
+ count: 1,
+ ruleMap: &map[string]uint32{},
+ }
+}
+
+// AddPattern adds a pattern to MphMatcherGroup
+func (g *MphMatcherGroup) AddPattern(pattern string, t Type) (uint32, error) {
+ switch t {
+ case Substr:
+ if g.ac == nil {
+ g.ac = NewACAutomaton()
+ }
+ g.ac.Add(pattern, t)
+ case Full, Domain:
+ pattern = strings.ToLower(pattern)
+ g.AddFullOrDomainPattern(pattern, t)
+ case Regex:
+ r, err := regexp.Compile(pattern)
+ if err != nil {
+ return 0, err
+ }
+ g.otherMatchers = append(g.otherMatchers, matcherEntry{
+ m: ®exMatcher{pattern: r},
+ id: g.count,
+ })
+ default:
+ panic("Unknown type")
+ }
+ return g.count, nil
+}
+
+// Build builds a minimal perfect hash table and ac automaton from insert rules
+func (g *MphMatcherGroup) Build() {
+ if g.ac != nil {
+ g.ac.Build()
+ }
+ keyLen := len(*g.ruleMap)
+ if keyLen == 0 {
+ keyLen = 1
+ (*g.ruleMap)["empty___"] = RollingHash("empty___")
+ }
+ g.level0 = make([]uint32, nextPow2(keyLen/4))
+ g.level0Mask = len(g.level0) - 1
+ g.level1 = make([]uint32, nextPow2(keyLen))
+ g.level1Mask = len(g.level1) - 1
+ sparseBuckets := make([][]int, len(g.level0))
+ var ruleIdx int
+ for rule, hash := range *g.ruleMap {
+ n := int(hash) & g.level0Mask
+ g.rules = append(g.rules, rule)
+ sparseBuckets[n] = append(sparseBuckets[n], ruleIdx)
+ ruleIdx++
+ }
+ g.ruleMap = nil
+ var buckets []indexBucket
+ for n, vals := range sparseBuckets {
+ if len(vals) > 0 {
+ buckets = append(buckets, indexBucket{n, vals})
+ }
+ }
+ sort.Sort(bySize(buckets))
+
+ occ := make([]bool, len(g.level1))
+ var tmpOcc []int
+ for _, bucket := range buckets {
+ seed := uint32(0)
+ for {
+ findSeed := true
+ tmpOcc = tmpOcc[:0]
+ for _, i := range bucket.vals {
+ n := int(strhashFallback(unsafe.Pointer(&g.rules[i]), uintptr(seed))) & g.level1Mask
+ if occ[n] {
+ for _, n := range tmpOcc {
+ occ[n] = false
+ }
+ seed++
+ findSeed = false
+ break
+ }
+ occ[n] = true
+ tmpOcc = append(tmpOcc, n)
+ g.level1[n] = uint32(i)
+ }
+ if findSeed {
+ g.level0[bucket.n] = seed
+ break
+ }
+ }
+ }
+}
+
+func nextPow2(v int) int {
+ if v <= 1 {
+ return 1
+ }
+ const MaxUInt = ^uint(0)
+ n := (MaxUInt >> bits.LeadingZeros(uint(v))) + 1
+ return int(n)
+}
+
+// Lookup searches for s in t and returns its index and whether it was found.
+func (g *MphMatcherGroup) Lookup(h uint32, s string) bool {
+ i0 := int(h) & g.level0Mask
+ seed := g.level0[i0]
+ i1 := int(strhashFallback(unsafe.Pointer(&s), uintptr(seed))) & g.level1Mask
+ n := g.level1[i1]
+ return s == g.rules[int(n)]
+}
+
+// Match implements IndexMatcher.Match.
+func (g *MphMatcherGroup) Match(pattern string) []uint32 {
+ result := []uint32{}
+ hash := uint32(0)
+ for i := len(pattern) - 1; i >= 0; i-- {
+ hash = hash*PrimeRK + uint32(pattern[i])
+ if pattern[i] == '.' {
+ if g.Lookup(hash, pattern[i:]) {
+ result = append(result, 1)
+ return result
+ }
+ }
+ }
+ if g.Lookup(hash, pattern) {
+ result = append(result, 1)
+ return result
+ }
+ if g.ac != nil && g.ac.Match(pattern) {
+ result = append(result, 1)
+ return result
+ }
+ for _, e := range g.otherMatchers {
+ if e.m.Match(pattern) {
+ result = append(result, e.id)
+ return result
+ }
+ }
+ return nil
+}
+
+type indexBucket struct {
+ n int
+ vals []int
+}
+
+type bySize []indexBucket
+
+func (s bySize) Len() int { return len(s) }
+func (s bySize) Less(i, j int) bool { return len(s[i].vals) > len(s[j].vals) }
+func (s bySize) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
+
+type stringStruct struct {
+ str unsafe.Pointer
+ len int
+}
+
+func strhashFallback(a unsafe.Pointer, h uintptr) uintptr {
+ x := (*stringStruct)(a)
+ return memhashFallback(x.str, h, uintptr(x.len))
+}
+
+const (
+ // Constants for multiplication: four random odd 64-bit numbers.
+ m1 = 16877499708836156737
+ m2 = 2820277070424839065
+ m3 = 9497967016996688599
+ m4 = 15839092249703872147
+)
+
+var hashkey = [4]uintptr{1, 1, 1, 1}
+
+func memhashFallback(p unsafe.Pointer, seed, s uintptr) uintptr {
+ h := uint64(seed + s*hashkey[0])
+tail:
+ switch {
+ case s == 0:
+ case s < 4:
+ h ^= uint64(*(*byte)(p))
+ h ^= uint64(*(*byte)(unsafe.Add(p, s>>1))) << 8
+ h ^= uint64(*(*byte)(unsafe.Add(p, s-1))) << 16
+ h = bits.RotateLeft64(h*m1, 31) * m2
+ case s <= 8:
+ h ^= uint64(readUnaligned32(p))
+ h ^= uint64(readUnaligned32(unsafe.Add(p, s-4))) << 32
+ h = bits.RotateLeft64(h*m1, 31) * m2
+ case s <= 16:
+ h ^= readUnaligned64(p)
+ h = bits.RotateLeft64(h*m1, 31) * m2
+ h ^= readUnaligned64(unsafe.Add(p, s-8))
+ h = bits.RotateLeft64(h*m1, 31) * m2
+ case s <= 32:
+ h ^= readUnaligned64(p)
+ h = bits.RotateLeft64(h*m1, 31) * m2
+ h ^= readUnaligned64(unsafe.Add(p, 8))
+ h = bits.RotateLeft64(h*m1, 31) * m2
+ h ^= readUnaligned64(unsafe.Add(p, s-16))
+ h = bits.RotateLeft64(h*m1, 31) * m2
+ h ^= readUnaligned64(unsafe.Add(p, s-8))
+ h = bits.RotateLeft64(h*m1, 31) * m2
+ default:
+ v1 := h
+ v2 := uint64(seed * hashkey[1])
+ v3 := uint64(seed * hashkey[2])
+ v4 := uint64(seed * hashkey[3])
+ for s >= 32 {
+ v1 ^= readUnaligned64(p)
+ v1 = bits.RotateLeft64(v1*m1, 31) * m2
+ p = unsafe.Add(p, 8)
+ v2 ^= readUnaligned64(p)
+ v2 = bits.RotateLeft64(v2*m2, 31) * m3
+ p = unsafe.Add(p, 8)
+ v3 ^= readUnaligned64(p)
+ v3 = bits.RotateLeft64(v3*m3, 31) * m4
+ p = unsafe.Add(p, 8)
+ v4 ^= readUnaligned64(p)
+ v4 = bits.RotateLeft64(v4*m4, 31) * m1
+ p = unsafe.Add(p, 8)
+ s -= 32
+ }
+ h = v1 ^ v2 ^ v3 ^ v4
+ goto tail
+ }
+
+ h ^= h >> 29
+ h *= m3
+ h ^= h >> 32
+ return uintptr(h)
+}
+
+func readUnaligned32(p unsafe.Pointer) uint32 {
+ q := (*[4]byte)(p)
+ return uint32(q[0]) | uint32(q[1])<<8 | uint32(q[2])<<16 | uint32(q[3])<<24
+}
+
+func readUnaligned64(p unsafe.Pointer) uint64 {
+ q := (*[8]byte)(p)
+ return uint64(q[0]) | uint64(q[1])<<8 | uint64(q[2])<<16 | uint64(q[3])<<24 | uint64(q[4])<<32 | uint64(q[5])<<40 | uint64(q[6])<<48 | uint64(q[7])<<56
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/package_info.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/package_info.go
new file mode 100644
index 0000000..8d6e169
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/package_info.go
@@ -0,0 +1,4 @@
+// Modified from: https://github.com/v2fly/v2ray-core/tree/master/common/strmatcher
+// License: MIT
+
+package strmatcher
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/strmatcher.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/strmatcher.go
new file mode 100644
index 0000000..6bdb8b9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/strmatcher/strmatcher.go
@@ -0,0 +1,60 @@
+package strmatcher
+
+import (
+ "regexp"
+)
+
+// Matcher is the interface to determine a string matches a pattern.
+type Matcher interface {
+ // Match returns true if the given string matches a predefined pattern.
+ Match(string) bool
+ String() string
+}
+
+// Type is the type of the matcher.
+type Type byte
+
+const (
+ // Full is the type of matcher that the input string must exactly equal to the pattern.
+ Full Type = iota
+ // Substr is the type of matcher that the input string must contain the pattern as a sub-string.
+ Substr
+ // Domain is the type of matcher that the input string must be a sub-domain or itself of the pattern.
+ Domain
+ // Regex is the type of matcher that the input string must matches the regular-expression pattern.
+ Regex
+)
+
+// New creates a new Matcher based on the given pattern.
+func (t Type) New(pattern string) (Matcher, error) {
+ // 1. regex matching is case-sensitive
+ switch t {
+ case Full:
+ return fullMatcher(pattern), nil
+ case Substr:
+ return substrMatcher(pattern), nil
+ case Domain:
+ return domainMatcher(pattern), nil
+ case Regex:
+ r, err := regexp.Compile(pattern)
+ if err != nil {
+ return nil, err
+ }
+ return ®exMatcher{
+ pattern: r,
+ }, nil
+ default:
+ panic("Unknown type")
+ }
+}
+
+// IndexMatcher is the interface for matching with a group of matchers.
+type IndexMatcher interface {
+ // Match returns the index of a matcher that matches the input. It returns empty array if no such matcher exists.
+ Match(input string) []uint32
+}
+
+type matcherEntry struct {
+ m Matcher
+ id uint32
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/utils.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/utils.go
new file mode 100644
index 0000000..4796624
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/geodata/utils.go
@@ -0,0 +1,203 @@
+package geodata
+
+import (
+ "errors"
+ "fmt"
+ "strings"
+
+ "github.com/metacubex/mihomo/common/singleflight"
+ "github.com/metacubex/mihomo/component/geodata/router"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+var (
+ geoMode bool
+ geoLoaderName = "memconservative"
+ geoSiteMatcher = "succinct"
+)
+
+// geoLoaderName = "standard"
+
+func GeodataMode() bool {
+ return geoMode
+}
+
+func LoaderName() string {
+ return geoLoaderName
+}
+
+func SiteMatcherName() string {
+ return geoSiteMatcher
+}
+
+func SetGeodataMode(newGeodataMode bool) {
+ geoMode = newGeodataMode
+}
+
+func SetLoader(newLoader string) {
+ if newLoader == "memc" {
+ newLoader = "memconservative"
+ }
+ geoLoaderName = newLoader
+}
+
+func SetSiteMatcher(newMatcher string) {
+ switch newMatcher {
+ case "mph", "hybrid":
+ geoSiteMatcher = "mph"
+ default:
+ geoSiteMatcher = "succinct"
+ }
+}
+
+func Verify(name string) error {
+ switch name {
+ case C.GeositeName:
+ _, err := LoadGeoSiteMatcher("CN")
+ return err
+ case C.GeoipName:
+ _, err := LoadGeoIPMatcher("CN")
+ return err
+ default:
+ return fmt.Errorf("not support name")
+ }
+}
+
+var loadGeoSiteMatcherListSF = singleflight.Group[[]*router.Domain]{StoreResult: true}
+var loadGeoSiteMatcherSF = singleflight.Group[router.DomainMatcher]{StoreResult: true}
+
+func LoadGeoSiteMatcher(countryCode string) (router.DomainMatcher, error) {
+ if countryCode == "" {
+ return nil, fmt.Errorf("country code could not be empty")
+ }
+
+ not := false
+ if countryCode[0] == '!' {
+ not = true
+ countryCode = countryCode[1:]
+ }
+ countryCode = strings.ToLower(countryCode)
+
+ parts := strings.Split(countryCode, "@")
+ if len(parts) == 0 {
+ return nil, errors.New("empty rule")
+ }
+ listName := strings.TrimSpace(parts[0])
+ attrVal := parts[1:]
+ attrs := parseAttrs(attrVal)
+
+ if listName == "" {
+ return nil, fmt.Errorf("empty listname in rule: %s", countryCode)
+ }
+
+ matcherName := listName
+ if !attrs.IsEmpty() {
+ matcherName += "@" + attrs.String()
+ }
+ matcher, err, shared := loadGeoSiteMatcherSF.Do(matcherName, func() (router.DomainMatcher, error) {
+ log.Infoln("Load GeoSite rule: %s", matcherName)
+ domains, err, shared := loadGeoSiteMatcherListSF.Do(listName, func() ([]*router.Domain, error) {
+ geoLoader, err := GetGeoDataLoader(geoLoaderName)
+ if err != nil {
+ return nil, err
+ }
+ return geoLoader.LoadGeoSite(listName)
+ })
+ if err != nil {
+ if !shared {
+ loadGeoSiteMatcherListSF.Forget(listName) // don't store the error result
+ }
+ return nil, err
+ }
+
+ if attrs.IsEmpty() {
+ if strings.Contains(countryCode, "@") {
+ log.Warnln("empty attribute list: %s", countryCode)
+ }
+ } else {
+ filteredDomains := make([]*router.Domain, 0, len(domains))
+ hasAttrMatched := false
+ for _, domain := range domains {
+ if attrs.Match(domain) {
+ hasAttrMatched = true
+ filteredDomains = append(filteredDomains, domain)
+ }
+ }
+ if !hasAttrMatched {
+ log.Warnln("attribute match no rule: geosite: %s", countryCode)
+ }
+ domains = filteredDomains
+ }
+
+ /**
+ linear: linear algorithm
+ matcher, err := router.NewDomainMatcher(domains)
+ mph:minimal perfect hash algorithm
+ */
+ if geoSiteMatcher == "mph" {
+ return router.NewMphMatcherGroup(domains)
+ } else {
+ return router.NewSuccinctMatcherGroup(domains)
+ }
+ })
+ if err != nil {
+ if !shared {
+ loadGeoSiteMatcherSF.Forget(matcherName) // don't store the error result
+ }
+ return nil, err
+ }
+ if not {
+ matcher = router.NewNotDomainMatcherGroup(matcher)
+ }
+
+ return matcher, nil
+}
+
+var loadGeoIPMatcherSF = singleflight.Group[router.IPMatcher]{StoreResult: true}
+
+func LoadGeoIPMatcher(country string) (router.IPMatcher, error) {
+ if len(country) == 0 {
+ return nil, fmt.Errorf("country code could not be empty")
+ }
+
+ not := false
+ if country[0] == '!' {
+ not = true
+ country = country[1:]
+ }
+ country = strings.ToLower(country)
+
+ matcher, err, shared := loadGeoIPMatcherSF.Do(country, func() (router.IPMatcher, error) {
+ log.Infoln("Load GeoIP rule: %s", country)
+ geoLoader, err := GetGeoDataLoader(geoLoaderName)
+ if err != nil {
+ return nil, err
+ }
+ cidrList, err := geoLoader.LoadGeoIP(country)
+ if err != nil {
+ return nil, err
+ }
+ return router.NewGeoIPMatcher(cidrList)
+ })
+ if err != nil {
+ if !shared {
+ loadGeoIPMatcherSF.Forget(country) // don't store the error result
+ log.Warnln("Load GeoIP rule: %s", country)
+ }
+ return nil, err
+ }
+ if not {
+ matcher = router.NewNotIpMatcherGroup(matcher)
+ }
+ return matcher, nil
+}
+
+func ClearGeoSiteCache() {
+ loadGeoSiteMatcherListSF.Reset()
+ loadGeoSiteMatcherSF.Reset()
+}
+
+func ClearGeoIPCache() {
+ loadGeoIPMatcherSF.Reset()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/http/http.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/http/http.go
new file mode 100644
index 0000000..63ea5be
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/http/http.go
@@ -0,0 +1,83 @@
+package http
+
+import (
+ "context"
+ "crypto/tls"
+ "io"
+ "net"
+ "net/http"
+ URL "net/url"
+ "runtime"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/listener/inner"
+)
+
+var (
+ ua string
+)
+
+func UA() string {
+ return ua
+}
+
+func SetUA(UA string) {
+ ua = UA
+}
+
+func HttpRequest(ctx context.Context, url, method string, header map[string][]string, body io.Reader) (*http.Response, error) {
+ return HttpRequestWithProxy(ctx, url, method, header, body, "")
+}
+
+func HttpRequestWithProxy(ctx context.Context, url, method string, header map[string][]string, body io.Reader, specialProxy string) (*http.Response, error) {
+ method = strings.ToUpper(method)
+ urlRes, err := URL.Parse(url)
+ if err != nil {
+ return nil, err
+ }
+
+ req, err := http.NewRequest(method, urlRes.String(), body)
+ for k, v := range header {
+ for _, v := range v {
+ req.Header.Add(k, v)
+ }
+ }
+
+ if _, ok := header["User-Agent"]; !ok {
+ req.Header.Set("User-Agent", UA())
+ }
+
+ if err != nil {
+ return nil, err
+ }
+
+ if user := urlRes.User; user != nil {
+ password, _ := user.Password()
+ req.SetBasicAuth(user.Username(), password)
+ }
+
+ req = req.WithContext(ctx)
+
+ transport := &http.Transport{
+ // from http.DefaultTransport
+ DisableKeepAlives: runtime.GOOS == "android",
+ MaxIdleConns: 100,
+ IdleConnTimeout: 30 * time.Second,
+ TLSHandshakeTimeout: 10 * time.Second,
+ ExpectContinueTimeout: 1 * time.Second,
+ DialContext: func(ctx context.Context, network, address string) (net.Conn, error) {
+ if conn, err := inner.HandleTcp(address, specialProxy); err == nil {
+ return conn, nil
+ } else {
+ return dialer.DialContext(ctx, network, address)
+ }
+ },
+ TLSClientConfig: ca.GetGlobalTLSConfig(&tls.Config{}),
+ }
+
+ client := http.Client{Transport: transport}
+ return client.Do(req)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/iface/iface.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/iface/iface.go
new file mode 100644
index 0000000..272ee73
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/iface/iface.go
@@ -0,0 +1,148 @@
+package iface
+
+import (
+ "errors"
+ "net"
+ "net/netip"
+ "time"
+
+ "github.com/metacubex/mihomo/common/singledo"
+)
+
+type Interface struct {
+ Index int
+ MTU int
+ Name string
+ Addresses []netip.Prefix
+ HardwareAddr net.HardwareAddr
+}
+
+var (
+ ErrIfaceNotFound = errors.New("interface not found")
+ ErrAddrNotFound = errors.New("addr not found")
+)
+
+var interfaces = singledo.NewSingle[map[string]*Interface](time.Second * 20)
+
+func Interfaces() (map[string]*Interface, error) {
+ value, err, _ := interfaces.Do(func() (map[string]*Interface, error) {
+ ifaces, err := net.Interfaces()
+ if err != nil {
+ return nil, err
+ }
+
+ r := map[string]*Interface{}
+
+ for _, iface := range ifaces {
+ addrs, err := iface.Addrs()
+ if err != nil {
+ continue
+ }
+
+ ipNets := make([]netip.Prefix, 0, len(addrs))
+ for _, addr := range addrs {
+ var pf netip.Prefix
+ switch ipNet := addr.(type) {
+ case *net.IPNet:
+ ip, _ := netip.AddrFromSlice(ipNet.IP)
+ ones, bits := ipNet.Mask.Size()
+ if bits == 32 {
+ ip = ip.Unmap()
+ }
+ pf = netip.PrefixFrom(ip, ones)
+ case *net.IPAddr:
+ ip, _ := netip.AddrFromSlice(ipNet.IP)
+ ip = ip.Unmap()
+ pf = netip.PrefixFrom(ip, ip.BitLen())
+ }
+ if pf.IsValid() {
+ ipNets = append(ipNets, pf)
+ }
+ }
+
+ r[iface.Name] = &Interface{
+ Index: iface.Index,
+ MTU: iface.MTU,
+ Name: iface.Name,
+ Addresses: ipNets,
+ HardwareAddr: iface.HardwareAddr,
+ }
+ }
+
+ return r, nil
+ })
+ return value, err
+}
+
+func ResolveInterface(name string) (*Interface, error) {
+ ifaces, err := Interfaces()
+ if err != nil {
+ return nil, err
+ }
+
+ iface, ok := ifaces[name]
+ if !ok {
+ return nil, ErrIfaceNotFound
+ }
+
+ return iface, nil
+}
+
+func IsLocalIp(ip netip.Addr) (bool, error) {
+ ifaces, err := Interfaces()
+ if err != nil {
+ return false, err
+ }
+ for _, iface := range ifaces {
+ for _, addr := range iface.Addresses {
+ if addr.Contains(ip) {
+ return true, nil
+ }
+ }
+ }
+ return false, nil
+}
+
+func FlushCache() {
+ interfaces.Reset()
+}
+
+func (iface *Interface) PickIPv4Addr(destination netip.Addr) (netip.Prefix, error) {
+ return iface.pickIPAddr(destination, func(addr netip.Prefix) bool {
+ return addr.Addr().Is4()
+ })
+}
+
+func (iface *Interface) PickIPv6Addr(destination netip.Addr) (netip.Prefix, error) {
+ return iface.pickIPAddr(destination, func(addr netip.Prefix) bool {
+ return addr.Addr().Is6()
+ })
+}
+
+func (iface *Interface) pickIPAddr(destination netip.Addr, accept func(addr netip.Prefix) bool) (netip.Prefix, error) {
+ var fallback netip.Prefix
+
+ for _, addr := range iface.Addresses {
+ if !accept(addr) {
+ continue
+ }
+
+ if !fallback.IsValid() && !addr.Addr().IsLinkLocalUnicast() {
+ fallback = addr
+
+ if !destination.IsValid() {
+ break
+ }
+ }
+
+ if destination.IsValid() && addr.Contains(destination) {
+ return addr, nil
+ }
+ }
+
+ if !fallback.IsValid() {
+ return netip.Prefix{}, ErrAddrNotFound
+ }
+
+ return fallback, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive.go
new file mode 100644
index 0000000..9b24c45
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive.go
@@ -0,0 +1,65 @@
+package keepalive
+
+import (
+ "net"
+ "runtime"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ "github.com/metacubex/mihomo/common/utils"
+)
+
+var (
+ keepAliveIdle = atomic.NewTypedValue[time.Duration](0 * time.Second)
+ keepAliveInterval = atomic.NewTypedValue[time.Duration](0 * time.Second)
+ disableKeepAlive = atomic.NewBool(false)
+
+ SetDisableKeepAliveCallback = utils.NewCallback[bool]()
+)
+
+func SetKeepAliveIdle(t time.Duration) {
+ keepAliveIdle.Store(t)
+}
+
+func SetKeepAliveInterval(t time.Duration) {
+ keepAliveInterval.Store(t)
+}
+
+func KeepAliveIdle() time.Duration {
+ return keepAliveIdle.Load()
+}
+
+func KeepAliveInterval() time.Duration {
+ return keepAliveInterval.Load()
+}
+
+func SetDisableKeepAlive(disable bool) {
+ if runtime.GOOS == "android" {
+ setDisableKeepAlive(false)
+ } else {
+ setDisableKeepAlive(disable)
+ }
+}
+
+func setDisableKeepAlive(disable bool) {
+ disableKeepAlive.Store(disable)
+ SetDisableKeepAliveCallback.Emit(disable)
+}
+
+func DisableKeepAlive() bool {
+ return disableKeepAlive.Load()
+}
+
+func SetNetDialer(dialer *net.Dialer) {
+ setNetDialer(dialer)
+}
+
+func SetNetListenConfig(lc *net.ListenConfig) {
+ setNetListenConfig(lc)
+}
+
+func TCPKeepAlive(c net.Conn) {
+ if tcp, ok := c.(*net.TCPConn); ok && tcp != nil {
+ tcpKeepAlive(tcp)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go122.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go122.go
new file mode 100644
index 0000000..5d88827
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go122.go
@@ -0,0 +1,30 @@
+//go:build !go1.23
+
+package keepalive
+
+import "net"
+
+func tcpKeepAlive(tcp *net.TCPConn) {
+ if DisableKeepAlive() {
+ _ = tcp.SetKeepAlive(false)
+ } else {
+ _ = tcp.SetKeepAlive(true)
+ _ = tcp.SetKeepAlivePeriod(KeepAliveInterval())
+ }
+}
+
+func setNetDialer(dialer *net.Dialer) {
+ if DisableKeepAlive() {
+ dialer.KeepAlive = -1 // If negative, keep-alive probes are disabled.
+ } else {
+ dialer.KeepAlive = KeepAliveInterval()
+ }
+}
+
+func setNetListenConfig(lc *net.ListenConfig) {
+ if DisableKeepAlive() {
+ lc.KeepAlive = -1 // If negative, keep-alive probes are disabled.
+ } else {
+ lc.KeepAlive = KeepAliveInterval()
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go123.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go123.go
new file mode 100644
index 0000000..4c08118
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go123.go
@@ -0,0 +1,45 @@
+//go:build go1.23
+
+package keepalive
+
+import "net"
+
+func keepAliveConfig() net.KeepAliveConfig {
+ config := net.KeepAliveConfig{
+ Enable: true,
+ Idle: KeepAliveIdle(),
+ Interval: KeepAliveInterval(),
+ }
+ if !SupportTCPKeepAliveCount() {
+ // it's recommended to set both Idle and Interval to non-negative values in conjunction with a -1
+ // for Count on those old Windows if you intend to customize the TCP keep-alive settings.
+ config.Count = -1
+ }
+ return config
+}
+
+func tcpKeepAlive(tcp *net.TCPConn) {
+ if DisableKeepAlive() {
+ _ = tcp.SetKeepAlive(false)
+ } else {
+ _ = tcp.SetKeepAliveConfig(keepAliveConfig())
+ }
+}
+
+func setNetDialer(dialer *net.Dialer) {
+ if DisableKeepAlive() {
+ dialer.KeepAlive = -1 // If negative, keep-alive probes are disabled.
+ dialer.KeepAliveConfig.Enable = false
+ } else {
+ dialer.KeepAliveConfig = keepAliveConfig()
+ }
+}
+
+func setNetListenConfig(lc *net.ListenConfig) {
+ if DisableKeepAlive() {
+ lc.KeepAlive = -1 // If negative, keep-alive probes are disabled.
+ lc.KeepAliveConfig.Enable = false
+ } else {
+ lc.KeepAliveConfig = keepAliveConfig()
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go123_unix.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go123_unix.go
new file mode 100644
index 0000000..8033cc6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go123_unix.go
@@ -0,0 +1,15 @@
+//go:build go1.23 && unix
+
+package keepalive
+
+func SupportTCPKeepAliveIdle() bool {
+ return true
+}
+
+func SupportTCPKeepAliveInterval() bool {
+ return true
+}
+
+func SupportTCPKeepAliveCount() bool {
+ return true
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go123_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go123_windows.go
new file mode 100644
index 0000000..2462e80
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/keepalive/tcp_keepalive_go123_windows.go
@@ -0,0 +1,63 @@
+//go:build go1.23 && windows
+
+// copy and modify from golang1.23's internal/syscall/windows/version_windows.go
+
+package keepalive
+
+import (
+ "errors"
+ "sync"
+ "syscall"
+
+ "github.com/metacubex/mihomo/constant/features"
+
+ "golang.org/x/sys/windows"
+)
+
+var (
+ supportTCPKeepAliveIdle bool
+ supportTCPKeepAliveInterval bool
+ supportTCPKeepAliveCount bool
+)
+
+var initTCPKeepAlive = sync.OnceFunc(func() {
+ s, err := windows.WSASocket(syscall.AF_INET, syscall.SOCK_STREAM, syscall.IPPROTO_TCP, nil, 0, windows.WSA_FLAG_NO_HANDLE_INHERIT)
+ if err != nil {
+ // Fallback to checking the Windows version.
+ major, build := features.WindowsMajorVersion, features.WindowsBuildNumber
+ supportTCPKeepAliveIdle = major >= 10 && build >= 16299
+ supportTCPKeepAliveInterval = major >= 10 && build >= 16299
+ supportTCPKeepAliveCount = major >= 10 && build >= 15063
+ return
+ }
+ defer windows.Closesocket(s)
+ var optSupported = func(opt int) bool {
+ err := windows.SetsockoptInt(s, syscall.IPPROTO_TCP, opt, 1)
+ return !errors.Is(err, syscall.WSAENOPROTOOPT)
+ }
+ supportTCPKeepAliveIdle = optSupported(windows.TCP_KEEPIDLE)
+ supportTCPKeepAliveInterval = optSupported(windows.TCP_KEEPINTVL)
+ supportTCPKeepAliveCount = optSupported(windows.TCP_KEEPCNT)
+})
+
+// SupportTCPKeepAliveIdle indicates whether TCP_KEEPIDLE is supported.
+// The minimal requirement is Windows 10.0.16299.
+func SupportTCPKeepAliveIdle() bool {
+ initTCPKeepAlive()
+ return supportTCPKeepAliveIdle
+}
+
+// SupportTCPKeepAliveInterval indicates whether TCP_KEEPINTVL is supported.
+// The minimal requirement is Windows 10.0.16299.
+func SupportTCPKeepAliveInterval() bool {
+ initTCPKeepAlive()
+ return supportTCPKeepAliveInterval
+}
+
+// SupportTCPKeepAliveCount indicates whether TCP_KEEPCNT is supported.
+// supports TCP_KEEPCNT.
+// The minimal requirement is Windows 10.0.15063.
+func SupportTCPKeepAliveCount() bool {
+ initTCPKeepAlive()
+ return supportTCPKeepAliveCount
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/loopback/detector.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/loopback/detector.go
new file mode 100644
index 0000000..8ec96a9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/loopback/detector.go
@@ -0,0 +1,89 @@
+package loopback
+
+import (
+ "errors"
+ "fmt"
+ "net/netip"
+
+ "github.com/metacubex/mihomo/common/callback"
+ "github.com/metacubex/mihomo/component/iface"
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/puzpuzpuz/xsync/v3"
+)
+
+var ErrReject = errors.New("reject loopback connection")
+
+type Detector struct {
+ connMap *xsync.MapOf[netip.AddrPort, struct{}]
+ packetConnMap *xsync.MapOf[uint16, struct{}]
+}
+
+func NewDetector() *Detector {
+ return &Detector{
+ connMap: xsync.NewMapOf[netip.AddrPort, struct{}](),
+ packetConnMap: xsync.NewMapOf[uint16, struct{}](),
+ }
+}
+
+func (l *Detector) NewConn(conn C.Conn) C.Conn {
+ metadata := C.Metadata{}
+ if metadata.SetRemoteAddr(conn.LocalAddr()) != nil {
+ return conn
+ }
+ connAddr := metadata.AddrPort()
+ if !connAddr.IsValid() {
+ return conn
+ }
+ l.connMap.Store(connAddr, struct{}{})
+ return callback.NewCloseCallbackConn(conn, func() {
+ l.connMap.Delete(connAddr)
+ })
+}
+
+func (l *Detector) NewPacketConn(conn C.PacketConn) C.PacketConn {
+ metadata := C.Metadata{}
+ if metadata.SetRemoteAddr(conn.LocalAddr()) != nil {
+ return conn
+ }
+ connAddr := metadata.AddrPort()
+ if !connAddr.IsValid() {
+ return conn
+ }
+ port := connAddr.Port()
+ l.packetConnMap.Store(port, struct{}{})
+ return callback.NewCloseCallbackPacketConn(conn, func() {
+ l.packetConnMap.Delete(port)
+ })
+}
+
+func (l *Detector) CheckConn(metadata *C.Metadata) error {
+ connAddr := metadata.SourceAddrPort()
+ if !connAddr.IsValid() {
+ return nil
+ }
+ if _, ok := l.connMap.Load(connAddr); ok {
+ return fmt.Errorf("%w to: %s", ErrReject, metadata.RemoteAddress())
+ }
+ return nil
+}
+
+func (l *Detector) CheckPacketConn(metadata *C.Metadata) error {
+ connAddr := metadata.SourceAddrPort()
+ if !connAddr.IsValid() {
+ return nil
+ }
+
+ isLocalIp, err := iface.IsLocalIp(connAddr.Addr())
+ if err != nil {
+ return err
+ }
+ if !isLocalIp && !connAddr.Addr().IsLoopback() {
+ return nil
+ }
+
+ if _, ok := l.packetConnMap.Load(connAddr.Port()); ok {
+ return fmt.Errorf("%w to: %s", ErrReject, metadata.RemoteAddress())
+ }
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/mmdb/mmdb.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/mmdb/mmdb.go
new file mode 100644
index 0000000..81644b0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/mmdb/mmdb.go
@@ -0,0 +1,96 @@
+package mmdb
+
+import (
+ "sync"
+
+ mihomoOnce "github.com/metacubex/mihomo/common/once"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/oschwald/maxminddb-golang"
+)
+
+type databaseType = uint8
+
+const (
+ typeMaxmind databaseType = iota
+ typeSing
+ typeMetaV0
+)
+
+var (
+ ipReader IPReader
+ asnReader ASNReader
+ ipOnce sync.Once
+ asnOnce sync.Once
+)
+
+func LoadFromBytes(buffer []byte) {
+ ipOnce.Do(func() {
+ mmdb, err := maxminddb.FromBytes(buffer)
+ if err != nil {
+ log.Fatalln("Can't load mmdb: %s", err.Error())
+ }
+ ipReader = IPReader{Reader: mmdb}
+ switch mmdb.Metadata.DatabaseType {
+ case "sing-geoip":
+ ipReader.databaseType = typeSing
+ case "Meta-geoip0":
+ ipReader.databaseType = typeMetaV0
+ default:
+ ipReader.databaseType = typeMaxmind
+ }
+ })
+}
+
+func Verify(path string) bool {
+ instance, err := maxminddb.Open(path)
+ if err == nil {
+ instance.Close()
+ }
+ return err == nil
+}
+
+func IPInstance() IPReader {
+ ipOnce.Do(func() {
+ mmdbPath := C.Path.MMDB()
+ log.Infoln("Load MMDB file: %s", mmdbPath)
+ mmdb, err := maxminddb.Open(mmdbPath)
+ if err != nil {
+ log.Fatalln("Can't load MMDB: %s", err.Error())
+ }
+ ipReader = IPReader{Reader: mmdb}
+ switch mmdb.Metadata.DatabaseType {
+ case "sing-geoip":
+ ipReader.databaseType = typeSing
+ case "Meta-geoip0":
+ ipReader.databaseType = typeMetaV0
+ default:
+ ipReader.databaseType = typeMaxmind
+ }
+ })
+
+ return ipReader
+}
+
+func ASNInstance() ASNReader {
+ asnOnce.Do(func() {
+ ASNPath := C.Path.ASN()
+ log.Infoln("Load ASN file: %s", ASNPath)
+ asn, err := maxminddb.Open(ASNPath)
+ if err != nil {
+ log.Fatalln("Can't load ASN: %s", err.Error())
+ }
+ asnReader = ASNReader{Reader: asn}
+ })
+
+ return asnReader
+}
+
+func ReloadIP() {
+ mihomoOnce.Reset(&ipOnce)
+}
+
+func ReloadASN() {
+ mihomoOnce.Reset(&asnOnce)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/mmdb/reader.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/mmdb/reader.go
new file mode 100644
index 0000000..e76e993
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/mmdb/reader.go
@@ -0,0 +1,73 @@
+package mmdb
+
+import (
+ "fmt"
+ "net"
+ "strings"
+
+ "github.com/oschwald/maxminddb-golang"
+)
+
+type geoip2Country struct {
+ Country struct {
+ IsoCode string `maxminddb:"iso_code"`
+ } `maxminddb:"country"`
+}
+
+type IPReader struct {
+ *maxminddb.Reader
+ databaseType
+}
+
+type ASNReader struct {
+ *maxminddb.Reader
+}
+
+type ASNResult struct {
+ AutonomousSystemNumber uint32 `maxminddb:"autonomous_system_number"`
+ AutonomousSystemOrganization string `maxminddb:"autonomous_system_organization"`
+}
+
+func (r IPReader) LookupCode(ipAddress net.IP) []string {
+ switch r.databaseType {
+ case typeMaxmind:
+ var country geoip2Country
+ _ = r.Lookup(ipAddress, &country)
+ if country.Country.IsoCode == "" {
+ return []string{}
+ }
+ return []string{strings.ToLower(country.Country.IsoCode)}
+
+ case typeSing:
+ var code string
+ _ = r.Lookup(ipAddress, &code)
+ if code == "" {
+ return []string{}
+ }
+ return []string{code}
+
+ case typeMetaV0:
+ var record any
+ _ = r.Lookup(ipAddress, &record)
+ switch record := record.(type) {
+ case string:
+ return []string{record}
+ case []any: // lookup returned type of slice is []any
+ result := make([]string, 0, len(record))
+ for _, item := range record {
+ result = append(result, item.(string))
+ }
+ return result
+ }
+ return []string{}
+
+ default:
+ panic(fmt.Sprint("unknown geoip database type:", r.databaseType))
+ }
+}
+
+func (r ASNReader) LookupASN(ip net.IP) ASNResult {
+ var result ASNResult
+ r.Lookup(ip, &result)
+ return result
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/nat/proxy.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/nat/proxy.go
new file mode 100644
index 0000000..66af3be
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/nat/proxy.go
@@ -0,0 +1,26 @@
+package nat
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type writeBackProxy struct {
+ wb atomic.TypedValue[C.WriteBack]
+}
+
+func (w *writeBackProxy) WriteBack(b []byte, addr net.Addr) (n int, err error) {
+ return w.wb.Load().WriteBack(b, addr)
+}
+
+func (w *writeBackProxy) UpdateWriteBack(wb C.WriteBack) {
+ w.wb.Store(wb)
+}
+
+func NewWriteBackProxy(wb C.WriteBack) C.WriteBackProxy {
+ w := &writeBackProxy{}
+ w.UpdateWriteBack(wb)
+ return w
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/nat/table.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/nat/table.go
new file mode 100644
index 0000000..66241fb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/nat/table.go
@@ -0,0 +1,104 @@
+package nat
+
+import (
+ "net"
+ "sync"
+
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/puzpuzpuz/xsync/v3"
+)
+
+type Table struct {
+ mapping *xsync.MapOf[string, *entry]
+}
+
+type entry struct {
+ PacketSender C.PacketSender
+ LocalUDPConnMap *xsync.MapOf[string, *net.UDPConn]
+ LocalLockMap *xsync.MapOf[string, *sync.Cond]
+}
+
+func (t *Table) GetOrCreate(key string, maker func() C.PacketSender) (C.PacketSender, bool) {
+ item, loaded := t.mapping.LoadOrCompute(key, func() *entry {
+ return &entry{
+ PacketSender: maker(),
+ LocalUDPConnMap: xsync.NewMapOf[string, *net.UDPConn](),
+ LocalLockMap: xsync.NewMapOf[string, *sync.Cond](),
+ }
+ })
+ return item.PacketSender, loaded
+}
+
+func (t *Table) Delete(key string) {
+ t.mapping.Delete(key)
+}
+
+func (t *Table) GetForLocalConn(lAddr, rAddr string) *net.UDPConn {
+ entry, exist := t.getEntry(lAddr)
+ if !exist {
+ return nil
+ }
+ item, exist := entry.LocalUDPConnMap.Load(rAddr)
+ if !exist {
+ return nil
+ }
+ return item
+}
+
+func (t *Table) AddForLocalConn(lAddr, rAddr string, conn *net.UDPConn) bool {
+ entry, exist := t.getEntry(lAddr)
+ if !exist {
+ return false
+ }
+ entry.LocalUDPConnMap.Store(rAddr, conn)
+ return true
+}
+
+func (t *Table) RangeForLocalConn(lAddr string, f func(key string, value *net.UDPConn) bool) {
+ entry, exist := t.getEntry(lAddr)
+ if !exist {
+ return
+ }
+ entry.LocalUDPConnMap.Range(f)
+}
+
+func (t *Table) GetOrCreateLockForLocalConn(lAddr, key string) (*sync.Cond, bool) {
+ entry, loaded := t.getEntry(lAddr)
+ if !loaded {
+ return nil, false
+ }
+ item, loaded := entry.LocalLockMap.LoadOrCompute(key, makeLock)
+ return item, loaded
+}
+
+func (t *Table) DeleteForLocalConn(lAddr, key string) {
+ entry, loaded := t.getEntry(lAddr)
+ if !loaded {
+ return
+ }
+ entry.LocalUDPConnMap.Delete(key)
+}
+
+func (t *Table) DeleteLockForLocalConn(lAddr, key string) {
+ entry, loaded := t.getEntry(lAddr)
+ if !loaded {
+ return
+ }
+ entry.LocalLockMap.Delete(key)
+}
+
+func (t *Table) getEntry(key string) (*entry, bool) {
+ return t.mapping.Load(key)
+}
+
+func makeLock() *sync.Cond {
+ return sync.NewCond(&sync.Mutex{})
+}
+
+// New return *Cache
+func New() *Table {
+ return &Table{
+ mapping: xsync.NewMapOf[string, *entry](),
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/pool/pool.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/pool/pool.go
new file mode 100644
index 0000000..f817376
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/pool/pool.go
@@ -0,0 +1,114 @@
+package pool
+
+import (
+ "context"
+ "runtime"
+ "time"
+)
+
+type Factory[T any] func(context.Context) (T, error)
+
+type entry[T any] struct {
+ elm T
+ time time.Time
+}
+
+type Option[T any] func(*pool[T])
+
+// WithEvict set the evict callback
+func WithEvict[T any](cb func(T)) Option[T] {
+ return func(p *pool[T]) {
+ p.evict = cb
+ }
+}
+
+// WithAge defined element max age (millisecond)
+func WithAge[T any](maxAge int64) Option[T] {
+ return func(p *pool[T]) {
+ p.maxAge = maxAge
+ }
+}
+
+// WithSize defined max size of Pool
+func WithSize[T any](maxSize int) Option[T] {
+ return func(p *pool[T]) {
+ p.ch = make(chan *entry[T], maxSize)
+ }
+}
+
+// Pool is for GC, see New for detail
+type Pool[T any] struct {
+ *pool[T]
+}
+
+type pool[T any] struct {
+ ch chan *entry[T]
+ factory Factory[T]
+ evict func(T)
+ maxAge int64
+}
+
+func (p *pool[T]) GetContext(ctx context.Context) (T, error) {
+ now := time.Now()
+ for {
+ select {
+ case item := <-p.ch:
+ elm := item
+ if p.maxAge != 0 && now.Sub(item.time).Milliseconds() > p.maxAge {
+ if p.evict != nil {
+ p.evict(elm.elm)
+ }
+ continue
+ }
+
+ return elm.elm, nil
+ default:
+ return p.factory(ctx)
+ }
+ }
+}
+
+func (p *pool[T]) Get() (T, error) {
+ return p.GetContext(context.Background())
+}
+
+func (p *pool[T]) Put(item T) {
+ e := &entry[T]{
+ elm: item,
+ time: time.Now(),
+ }
+
+ select {
+ case p.ch <- e:
+ return
+ default:
+ // pool is full
+ if p.evict != nil {
+ p.evict(item)
+ }
+ return
+ }
+}
+
+func recycle[T any](p *Pool[T]) {
+ for item := range p.pool.ch {
+ if p.pool.evict != nil {
+ p.pool.evict(item.elm)
+ }
+ }
+}
+
+func New[T any](factory Factory[T], options ...Option[T]) *Pool[T] {
+ p := &pool[T]{
+ ch: make(chan *entry[T], 10),
+ factory: factory,
+ }
+
+ for _, option := range options {
+ option(p)
+ }
+
+ P := &Pool[T]{p}
+ runtime.SetFinalizer(P, recycle[T])
+ return P
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/pool/pool_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/pool/pool_test.go
new file mode 100644
index 0000000..752aaac
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/pool/pool_test.go
@@ -0,0 +1,73 @@
+package pool
+
+import (
+ "context"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func lg() Factory[int] {
+ initial := -1
+ return func(context.Context) (int, error) {
+ initial++
+ return initial, nil
+ }
+}
+
+func TestPool_Basic(t *testing.T) {
+ g := lg()
+ pool := New[int](g)
+
+ elm, _ := pool.Get()
+ assert.Equal(t, 0, elm)
+ pool.Put(elm)
+ elm, _ = pool.Get()
+ assert.Equal(t, 0, elm)
+ elm, _ = pool.Get()
+ assert.Equal(t, 1, elm)
+}
+
+func TestPool_MaxSize(t *testing.T) {
+ g := lg()
+ size := 5
+ pool := New[int](g, WithSize[int](size))
+
+ var items []int
+
+ for i := 0; i < size; i++ {
+ item, _ := pool.Get()
+ items = append(items, item)
+ }
+
+ extra, _ := pool.Get()
+ assert.Equal(t, size, extra)
+
+ for _, item := range items {
+ pool.Put(item)
+ }
+
+ pool.Put(extra)
+
+ for _, item := range items {
+ elm, _ := pool.Get()
+ assert.Equal(t, item, elm)
+ }
+}
+
+func TestPool_MaxAge(t *testing.T) {
+ g := lg()
+ pool := New[int](g, WithAge[int](20))
+
+ elm, _ := pool.Get()
+ pool.Put(elm)
+
+ elm, _ = pool.Get()
+ assert.Equal(t, 0, elm)
+ pool.Put(elm)
+
+ time.Sleep(time.Millisecond * 22)
+ elm, _ = pool.Get()
+ assert.Equal(t, 1, elm)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/power/event.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/power/event.go
new file mode 100644
index 0000000..f59c2ad
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/power/event.go
@@ -0,0 +1,22 @@
+package power
+
+type Type uint8
+
+const (
+ SUSPEND Type = iota
+ RESUME
+ RESUMEAUTOMATIC // Because the user is not present, most applications should do nothing.
+)
+
+func (t Type) String() string {
+ switch t {
+ case SUSPEND:
+ return "SUSPEND"
+ case RESUME:
+ return "RESUME"
+ case RESUMEAUTOMATIC:
+ return "RESUMEAUTOMATIC"
+ default:
+ return ""
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/power/event_other.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/power/event_other.go
new file mode 100644
index 0000000..3a41d9e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/power/event_other.go
@@ -0,0 +1,9 @@
+//go:build !windows
+
+package power
+
+import "errors"
+
+func NewEventListener(cb func(Type)) (func(), error) {
+ return nil, errors.New("not support on this platform")
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/power/event_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/power/event_windows.go
new file mode 100644
index 0000000..a9489df
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/power/event_windows.go
@@ -0,0 +1,82 @@
+package power
+
+// modify from https://github.com/golang/go/blob/b634f6fdcbebee23b7da709a243f3db217b64776/src/runtime/os_windows.go#L257
+
+import (
+ "runtime"
+ "unsafe"
+
+ "golang.org/x/sys/windows"
+)
+
+var (
+ libPowrProf = windows.NewLazySystemDLL("powrprof.dll")
+ powerRegisterSuspendResumeNotification = libPowrProf.NewProc("PowerRegisterSuspendResumeNotification")
+ powerUnregisterSuspendResumeNotification = libPowrProf.NewProc("PowerUnregisterSuspendResumeNotification")
+)
+
+func NewEventListener(cb func(Type)) (func(), error) {
+ if err := powerRegisterSuspendResumeNotification.Find(); err != nil {
+ return nil, err // Running on Windows 7, where we don't need it anyway.
+ }
+ if err := powerUnregisterSuspendResumeNotification.Find(); err != nil {
+ return nil, err // Running on Windows 7, where we don't need it anyway.
+ }
+
+ // Defines the type of event
+ const (
+ PBT_APMSUSPEND uint32 = 4
+ PBT_APMRESUMESUSPEND uint32 = 7
+ PBT_APMRESUMEAUTOMATIC uint32 = 18
+ )
+
+ const (
+ _DEVICE_NOTIFY_CALLBACK = 2
+ )
+ type _DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS struct {
+ callback uintptr
+ context uintptr
+ }
+
+ var fn interface{} = func(context uintptr, changeType uint32, setting uintptr) uintptr {
+ switch changeType {
+ case PBT_APMSUSPEND:
+ cb(SUSPEND)
+ case PBT_APMRESUMESUSPEND:
+ cb(RESUME)
+ case PBT_APMRESUMEAUTOMATIC:
+ cb(RESUMEAUTOMATIC)
+ }
+ return 0
+ }
+
+ params := _DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS{
+ callback: windows.NewCallback(fn),
+ }
+ handle := uintptr(0)
+
+ // DWORD PowerRegisterSuspendResumeNotification(
+ // [in] DWORD Flags,
+ // [in] HANDLE Recipient,
+ // [out] PHPOWERNOTIFY RegistrationHandle
+ //);
+ _, _, err := powerRegisterSuspendResumeNotification.Call(
+ _DEVICE_NOTIFY_CALLBACK,
+ uintptr(unsafe.Pointer(¶ms)),
+ uintptr(unsafe.Pointer(&handle)),
+ )
+ if err != nil {
+ return nil, err
+ }
+
+ return func() {
+ // DWORD PowerUnregisterSuspendResumeNotification(
+ // [in, out] HPOWERNOTIFY RegistrationHandle
+ //);
+ _, _, _ = powerUnregisterSuspendResumeNotification.Call(
+ handle,
+ )
+ runtime.KeepAlive(params)
+ runtime.KeepAlive(handle)
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/process/find_process_mode.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/find_process_mode.go
new file mode 100644
index 0000000..06618ce
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/find_process_mode.go
@@ -0,0 +1,57 @@
+package process
+
+import (
+ "encoding/json"
+ "errors"
+ "strings"
+)
+
+const (
+ FindProcessAlways = "always"
+ FindProcessStrict = "strict"
+ FindProcessOff = "off"
+)
+
+var (
+ validModes = map[string]struct{}{
+ FindProcessAlways: {},
+ FindProcessOff: {},
+ FindProcessStrict: {},
+ }
+)
+
+type FindProcessMode string
+
+func (m FindProcessMode) Always() bool {
+ return m == FindProcessAlways
+}
+
+func (m FindProcessMode) Off() bool {
+ return m == FindProcessOff
+}
+
+func (m *FindProcessMode) UnmarshalYAML(unmarshal func(any) error) error {
+ var tp string
+ if err := unmarshal(&tp); err != nil {
+ return err
+ }
+ return m.Set(tp)
+}
+
+func (m *FindProcessMode) UnmarshalJSON(data []byte) error {
+ var tp string
+ if err := json.Unmarshal(data, &tp); err != nil {
+ return err
+ }
+ return m.Set(tp)
+}
+
+func (m *FindProcessMode) Set(value string) error {
+ mode := strings.ToLower(value)
+ _, exist := validModes[mode]
+ if !exist {
+ return errors.New("invalid find process mode")
+ }
+ *m = FindProcessMode(mode)
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process.go
new file mode 100644
index 0000000..464f5a7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process.go
@@ -0,0 +1,38 @@
+package process
+
+import (
+ "errors"
+ "net/netip"
+
+ C "github.com/metacubex/mihomo/constant"
+)
+
+var (
+ ErrInvalidNetwork = errors.New("invalid network")
+ ErrPlatformNotSupport = errors.New("not support on this platform")
+ ErrNotFound = errors.New("process not found")
+)
+
+const (
+ TCP = "tcp"
+ UDP = "udp"
+)
+
+func FindProcessName(network string, srcIP netip.Addr, srcPort int) (uint32, string, error) {
+ return findProcessName(network, srcIP, srcPort)
+}
+
+// PackageNameResolver
+// never change type traits because it's used in CMFA
+type PackageNameResolver func(metadata *C.Metadata) (string, error)
+
+// DefaultPackageNameResolver
+// never change type traits because it's used in CMFA
+var DefaultPackageNameResolver PackageNameResolver
+
+func FindPackageName(metadata *C.Metadata) (string, error) {
+ if resolver := DefaultPackageNameResolver; resolver != nil {
+ return resolver(metadata)
+ }
+ return "", ErrPlatformNotSupport
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_darwin.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_darwin.go
new file mode 100644
index 0000000..c02771e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_darwin.go
@@ -0,0 +1,130 @@
+package process
+
+import (
+ "encoding/binary"
+ "net/netip"
+ "strconv"
+ "strings"
+ "syscall"
+ "unsafe"
+
+ "golang.org/x/sys/unix"
+)
+
+const (
+ procpidpathinfo = 0xb
+ procpidpathinfosize = 1024
+ proccallnumpidinfo = 0x2
+)
+
+var structSize = func() int {
+ value, _ := syscall.Sysctl("kern.osrelease")
+ major, _, _ := strings.Cut(value, ".")
+ n, _ := strconv.ParseInt(major, 10, 64)
+ switch true {
+ case n >= 22:
+ return 408
+ default:
+ // from darwin-xnu/bsd/netinet/in_pcblist.c:get_pcblist_n
+ // size/offset are round up (aligned) to 8 bytes in darwin
+ // rup8(sizeof(xinpcb_n)) + rup8(sizeof(xsocket_n)) +
+ // 2 * rup8(sizeof(xsockbuf_n)) + rup8(sizeof(xsockstat_n))
+ return 384
+ }
+}()
+
+func findProcessName(network string, ip netip.Addr, port int) (uint32, string, error) {
+ var spath string
+ switch network {
+ case TCP:
+ spath = "net.inet.tcp.pcblist_n"
+ case UDP:
+ spath = "net.inet.udp.pcblist_n"
+ default:
+ return 0, "", ErrInvalidNetwork
+ }
+
+ isIPv4 := ip.Is4()
+
+ value, err := unix.SysctlRaw(spath)
+ if err != nil {
+ return 0, "", err
+ }
+
+ buf := value
+ itemSize := structSize
+ if network == TCP {
+ // rup8(sizeof(xtcpcb_n))
+ itemSize += 208
+ }
+
+ var fallbackUDPProcess string
+ // skip the first xinpgen(24 bytes) block
+ for i := 24; i+itemSize <= len(buf); i += itemSize {
+ // offset of xinpcb_n and xsocket_n
+ inp, so := i, i+104
+
+ srcPort := binary.BigEndian.Uint16(buf[inp+18 : inp+20])
+ if uint16(port) != srcPort {
+ continue
+ }
+
+ // xinpcb_n.inp_vflag
+ flag := buf[inp+44]
+
+ var (
+ srcIP netip.Addr
+ srcIsIPv4 bool
+ )
+ switch {
+ case flag&0x1 > 0 && isIPv4:
+ // ipv4
+ srcIP, _ = netip.AddrFromSlice(buf[inp+76 : inp+80])
+ srcIsIPv4 = true
+ case flag&0x2 > 0 && !isIPv4:
+ // ipv6
+ srcIP, _ = netip.AddrFromSlice(buf[inp+64 : inp+80])
+ default:
+ continue
+ }
+
+ if ip == srcIP {
+ // xsocket_n.so_last_pid
+ pid := readNativeUint32(buf[so+68 : so+72])
+ pp, err := getExecPathFromPID(pid)
+ return 0, pp, err
+ }
+
+ // udp packet connection may be not equal with srcIP
+ if network == UDP && srcIP.IsUnspecified() && isIPv4 == srcIsIPv4 {
+ fallbackUDPProcess, _ = getExecPathFromPID(readNativeUint32(buf[so+68 : so+72]))
+ }
+ }
+
+ if network == UDP && fallbackUDPProcess != "" {
+ return 0, fallbackUDPProcess, nil
+ }
+
+ return 0, "", ErrNotFound
+}
+
+func getExecPathFromPID(pid uint32) (string, error) {
+ buf := make([]byte, procpidpathinfosize)
+ _, _, errno := syscall.Syscall6(
+ syscall.SYS_PROC_INFO,
+ proccallnumpidinfo,
+ uintptr(pid),
+ procpidpathinfo,
+ 0,
+ uintptr(unsafe.Pointer(&buf[0])),
+ procpidpathinfosize)
+ if errno != 0 {
+ return "", errno
+ }
+
+ return unix.ByteSliceToString(buf), nil
+}
+
+func readNativeUint32(b []byte) uint32 {
+ return *(*uint32)(unsafe.Pointer(&b[0]))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_freebsd_amd64.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_freebsd_amd64.go
new file mode 100644
index 0000000..1884afc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_freebsd_amd64.go
@@ -0,0 +1,235 @@
+package process
+
+import (
+ "encoding/binary"
+ "fmt"
+ "net/netip"
+ "strconv"
+ "strings"
+ "sync"
+ "syscall"
+ "unsafe"
+
+ "github.com/metacubex/mihomo/common/nnip"
+ "github.com/metacubex/mihomo/log"
+)
+
+// store process name for when dealing with multiple PROCESS-NAME rules
+var (
+ defaultSearcher *searcher
+
+ once sync.Once
+)
+
+func findProcessName(network string, ip netip.Addr, srcPort int) (uint32, string, error) {
+ once.Do(func() {
+ if err := initSearcher(); err != nil {
+ log.Errorln("Initialize PROCESS-NAME failed: %s", err.Error())
+ log.Warnln("All PROCESS-NAME rules will be skipped")
+ return
+ }
+ })
+
+ if defaultSearcher == nil {
+ return 0, "", ErrPlatformNotSupport
+ }
+
+ var spath string
+ isTCP := network == TCP
+ switch network {
+ case TCP:
+ spath = "net.inet.tcp.pcblist"
+ case UDP:
+ spath = "net.inet.udp.pcblist"
+ default:
+ return 0, "", ErrInvalidNetwork
+ }
+
+ value, err := syscall.Sysctl(spath)
+ if err != nil {
+ return 0, "", err
+ }
+
+ buf := []byte(value)
+ pid, err := defaultSearcher.Search(buf, ip, uint16(srcPort), isTCP)
+ if err != nil {
+ return 0, "", err
+ }
+
+ pp, err := getExecPathFromPID(pid)
+ return 0, pp, err
+}
+
+func getExecPathFromPID(pid uint32) (string, error) {
+ buf := make([]byte, 2048)
+ size := uint64(len(buf))
+ // CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, pid
+ mib := [4]uint32{1, 14, 12, pid}
+
+ _, _, errno := syscall.Syscall6(
+ syscall.SYS___SYSCTL,
+ uintptr(unsafe.Pointer(&mib[0])),
+ uintptr(len(mib)),
+ uintptr(unsafe.Pointer(&buf[0])),
+ uintptr(unsafe.Pointer(&size)),
+ 0,
+ 0)
+ if errno != 0 || size == 0 {
+ return "", errno
+ }
+
+ return string(buf[:size-1]), nil
+}
+
+func readNativeUint32(b []byte) uint32 {
+ return *(*uint32)(unsafe.Pointer(&b[0]))
+}
+
+type searcher struct {
+ // sizeof(struct xinpgen)
+ headSize int
+ // sizeof(struct xtcpcb)
+ tcpItemSize int
+ // sizeof(struct xinpcb)
+ udpItemSize int
+ udpInpOffset int
+ port int
+ ip int
+ vflag int
+ socket int
+
+ // sizeof(struct xfile)
+ fileItemSize int
+ data int
+ pid int
+}
+
+func (s *searcher) Search(buf []byte, ip netip.Addr, port uint16, isTCP bool) (uint32, error) {
+ var itemSize int
+ var inpOffset int
+
+ if isTCP {
+ // struct xtcpcb
+ itemSize = s.tcpItemSize
+ inpOffset = 8
+ } else {
+ // struct xinpcb
+ itemSize = s.udpItemSize
+ inpOffset = s.udpInpOffset
+ }
+
+ isIPv4 := ip.Is4()
+ // skip the first xinpgen block
+ for i := s.headSize; i+itemSize <= len(buf); i += itemSize {
+ inp := i + inpOffset
+
+ srcPort := binary.BigEndian.Uint16(buf[inp+s.port : inp+s.port+2])
+
+ if port != srcPort {
+ continue
+ }
+
+ // xinpcb.inp_vflag
+ flag := buf[inp+s.vflag]
+
+ var srcIP netip.Addr
+ switch {
+ case flag&0x1 > 0 && isIPv4:
+ // ipv4
+ srcIP = nnip.IpToAddr(buf[inp+s.ip : inp+s.ip+4])
+ case flag&0x2 > 0 && !isIPv4:
+ // ipv6
+ srcIP = nnip.IpToAddr(buf[inp+s.ip-12 : inp+s.ip+4])
+ default:
+ continue
+ }
+
+ if ip != srcIP {
+ continue
+ }
+
+ // xsocket.xso_so, interpreted as big endian anyway since it's only used for comparison
+ socket := binary.BigEndian.Uint64(buf[inp+s.socket : inp+s.socket+8])
+ return s.searchSocketPid(socket)
+ }
+ return 0, ErrNotFound
+}
+
+func (s *searcher) searchSocketPid(socket uint64) (uint32, error) {
+ value, err := syscall.Sysctl("kern.file")
+ if err != nil {
+ return 0, err
+ }
+
+ buf := []byte(value)
+
+ // struct xfile
+ itemSize := s.fileItemSize
+ for i := 0; i+itemSize <= len(buf); i += itemSize {
+ // xfile.xf_data
+ data := binary.BigEndian.Uint64(buf[i+s.data : i+s.data+8])
+ if data == socket {
+ // xfile.xf_pid
+ pid := readNativeUint32(buf[i+s.pid : i+s.pid+4])
+ return pid, nil
+ }
+ }
+ return 0, ErrNotFound
+}
+
+func newSearcher(major int) *searcher {
+ var s *searcher
+ switch major {
+ case 11:
+ s = &searcher{
+ headSize: 32,
+ tcpItemSize: 1304,
+ udpItemSize: 632,
+ port: 198,
+ ip: 228,
+ vflag: 116,
+ socket: 88,
+ fileItemSize: 80,
+ data: 56,
+ pid: 8,
+ udpInpOffset: 8,
+ }
+ case 12:
+ fallthrough
+ case 13:
+ s = &searcher{
+ headSize: 64,
+ tcpItemSize: 744,
+ udpItemSize: 400,
+ port: 254,
+ ip: 284,
+ vflag: 392,
+ socket: 16,
+ fileItemSize: 128,
+ data: 56,
+ pid: 8,
+ }
+ }
+ return s
+}
+
+func initSearcher() error {
+ osRelease, err := syscall.Sysctl("kern.osrelease")
+ if err != nil {
+ return err
+ }
+
+ dot := strings.Index(osRelease, ".")
+ if dot != -1 {
+ osRelease = osRelease[:dot]
+ }
+ major, err := strconv.Atoi(osRelease)
+ if err != nil {
+ return err
+ }
+ defaultSearcher = newSearcher(major)
+ if defaultSearcher == nil {
+ return fmt.Errorf("unsupported freebsd version %d", major)
+ }
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_linux.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_linux.go
new file mode 100644
index 0000000..3ce45ae
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_linux.go
@@ -0,0 +1,200 @@
+package process
+
+import (
+ "bytes"
+ "encoding/binary"
+ "fmt"
+ "net/netip"
+ "os"
+ "path"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "syscall"
+ "unicode"
+ "unsafe"
+
+ "github.com/mdlayher/netlink"
+ "golang.org/x/sys/unix"
+)
+
+const (
+ SOCK_DIAG_BY_FAMILY = 20
+ inetDiagRequestSize = int(unsafe.Sizeof(inetDiagRequest{}))
+ inetDiagResponseSize = int(unsafe.Sizeof(inetDiagResponse{}))
+)
+
+type inetDiagRequest struct {
+ Family byte
+ Protocol byte
+ Ext byte
+ Pad byte
+ States uint32
+
+ SrcPort [2]byte
+ DstPort [2]byte
+ Src [16]byte
+ Dst [16]byte
+ If uint32
+ Cookie [2]uint32
+}
+
+type inetDiagResponse struct {
+ Family byte
+ State byte
+ Timer byte
+ ReTrans byte
+
+ SrcPort [2]byte
+ DstPort [2]byte
+ Src [16]byte
+ Dst [16]byte
+ If uint32
+ Cookie [2]uint32
+
+ Expires uint32
+ RQueue uint32
+ WQueue uint32
+ UID uint32
+ INode uint32
+}
+
+func findProcessName(network string, ip netip.Addr, srcPort int) (uint32, string, error) {
+ uid, inode, err := resolveSocketByNetlink(network, ip, srcPort)
+ if err != nil {
+ return 0, "", err
+ }
+ pp, err := resolveProcessNameByProcSearch(inode, uid)
+ return uid, pp, err
+}
+
+func resolveSocketByNetlink(network string, ip netip.Addr, srcPort int) (uint32, uint32, error) {
+ request := &inetDiagRequest{
+ States: 0xffffffff,
+ Cookie: [2]uint32{0xffffffff, 0xffffffff},
+ }
+
+ if ip.Is4() {
+ request.Family = unix.AF_INET
+ } else {
+ request.Family = unix.AF_INET6
+ }
+
+ if strings.HasPrefix(network, "tcp") {
+ request.Protocol = unix.IPPROTO_TCP
+ } else if strings.HasPrefix(network, "udp") {
+ request.Protocol = unix.IPPROTO_UDP
+ } else {
+ return 0, 0, ErrInvalidNetwork
+ }
+
+ copy(request.Src[:], ip.AsSlice())
+
+ binary.BigEndian.PutUint16(request.SrcPort[:], uint16(srcPort))
+
+ conn, err := netlink.Dial(unix.NETLINK_INET_DIAG, nil)
+ if err != nil {
+ return 0, 0, err
+ }
+ defer conn.Close()
+
+ message := netlink.Message{
+ Header: netlink.Header{
+ Type: SOCK_DIAG_BY_FAMILY,
+ Flags: netlink.Request | netlink.Dump,
+ },
+ Data: (*(*[inetDiagRequestSize]byte)(unsafe.Pointer(request)))[:],
+ }
+
+ messages, err := conn.Execute(message)
+ if err != nil {
+ return 0, 0, err
+ }
+
+ for _, msg := range messages {
+ if len(msg.Data) < inetDiagResponseSize {
+ continue
+ }
+
+ response := (*inetDiagResponse)(unsafe.Pointer(&msg.Data[0]))
+
+ return response.UID, response.INode, nil
+ }
+
+ return 0, 0, ErrNotFound
+}
+
+func resolveProcessNameByProcSearch(inode, uid uint32) (string, error) {
+ files, err := os.ReadDir("/proc")
+ if err != nil {
+ return "", err
+ }
+
+ buffer := make([]byte, unix.PathMax)
+ socket := fmt.Appendf(nil, "socket:[%d]", inode)
+
+ for _, f := range files {
+ if !f.IsDir() || !isPid(f.Name()) {
+ continue
+ }
+
+ info, err := f.Info()
+ if err != nil {
+ return "", err
+ }
+ if info.Sys().(*syscall.Stat_t).Uid != uid {
+ continue
+ }
+
+ processPath := filepath.Join("/proc", f.Name())
+ fdPath := filepath.Join(processPath, "fd")
+
+ fds, err := os.ReadDir(fdPath)
+ if err != nil {
+ continue
+ }
+
+ for _, fd := range fds {
+ n, err := unix.Readlink(filepath.Join(fdPath, fd.Name()), buffer)
+ if err != nil {
+ continue
+ }
+
+ if runtime.GOOS == "android" {
+ if bytes.Equal(buffer[:n], socket) {
+ cmdline, err := os.ReadFile(path.Join(processPath, "cmdline"))
+ if err != nil {
+ return "", err
+ }
+
+ return splitCmdline(cmdline), nil
+ }
+ } else {
+ if bytes.Equal(buffer[:n], socket) {
+ return os.Readlink(filepath.Join(processPath, "exe"))
+ }
+ }
+ }
+ }
+
+ return "", fmt.Errorf("process of uid(%d),inode(%d) not found", uid, inode)
+}
+
+func splitCmdline(cmdline []byte) string {
+ cmdline = bytes.Trim(cmdline, " ")
+
+ idx := bytes.IndexFunc(cmdline, func(r rune) bool {
+ return unicode.IsControl(r) || unicode.IsSpace(r)
+ })
+
+ if idx == -1 {
+ return filepath.Base(string(cmdline))
+ }
+ return filepath.Base(string(cmdline[:idx]))
+}
+
+func isPid(s string) bool {
+ return strings.IndexFunc(s, func(r rune) bool {
+ return !unicode.IsDigit(r)
+ }) == -1
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_other.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_other.go
new file mode 100644
index 0000000..eea6e5f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_other.go
@@ -0,0 +1,13 @@
+//go:build !darwin && !linux && !windows && (!freebsd || !amd64)
+
+package process
+
+import "net/netip"
+
+func findProcessName(network string, ip netip.Addr, srcPort int) (uint32, string, error) {
+ return 0, "", ErrPlatformNotSupport
+}
+
+func resolveSocketByNetlink(network string, ip netip.Addr, srcPort int) (uint32, uint32, error) {
+ return 0, 0, ErrPlatformNotSupport
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_windows.go
new file mode 100644
index 0000000..f8cd00d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/process/process_windows.go
@@ -0,0 +1,229 @@
+package process
+
+import (
+ "fmt"
+ "net/netip"
+ "sync"
+ "syscall"
+ "unsafe"
+
+ "github.com/metacubex/mihomo/common/nnip"
+ "github.com/metacubex/mihomo/log"
+
+ "golang.org/x/sys/windows"
+)
+
+const (
+ tcpTableFunc = "GetExtendedTcpTable"
+ tcpTablePidConn = 4
+ udpTableFunc = "GetExtendedUdpTable"
+ udpTablePid = 1
+ queryProcNameFunc = "QueryFullProcessImageNameW"
+)
+
+var (
+ getExTCPTable uintptr
+ getExUDPTable uintptr
+ queryProcName uintptr
+
+ once sync.Once
+)
+
+func resolveSocketByNetlink(network string, ip netip.Addr, srcPort int) (uint32, uint32, error) {
+ return 0, 0, ErrPlatformNotSupport
+}
+
+func initWin32API() error {
+ h, err := windows.LoadLibrary("iphlpapi.dll")
+ if err != nil {
+ return fmt.Errorf("LoadLibrary iphlpapi.dll failed: %s", err.Error())
+ }
+
+ getExTCPTable, err = windows.GetProcAddress(h, tcpTableFunc)
+ if err != nil {
+ return fmt.Errorf("GetProcAddress of %s failed: %s", tcpTableFunc, err.Error())
+ }
+
+ getExUDPTable, err = windows.GetProcAddress(h, udpTableFunc)
+ if err != nil {
+ return fmt.Errorf("GetProcAddress of %s failed: %s", udpTableFunc, err.Error())
+ }
+
+ h, err = windows.LoadLibrary("kernel32.dll")
+ if err != nil {
+ return fmt.Errorf("LoadLibrary kernel32.dll failed: %s", err.Error())
+ }
+
+ queryProcName, err = windows.GetProcAddress(h, queryProcNameFunc)
+ if err != nil {
+ return fmt.Errorf("GetProcAddress of %s failed: %s", queryProcNameFunc, err.Error())
+ }
+
+ return nil
+}
+
+func findProcessName(network string, ip netip.Addr, srcPort int) (uint32, string, error) {
+ once.Do(func() {
+ err := initWin32API()
+ if err != nil {
+ log.Errorln("Initialize PROCESS-NAME failed: %s", err.Error())
+ log.Warnln("All PROCESS-NAMES rules will be skipped")
+ return
+ }
+ })
+ family := windows.AF_INET
+ if ip.Is6() {
+ family = windows.AF_INET6
+ }
+
+ var class int
+ var fn uintptr
+ switch network {
+ case TCP:
+ fn = getExTCPTable
+ class = tcpTablePidConn
+ case UDP:
+ fn = getExUDPTable
+ class = udpTablePid
+ default:
+ return 0, "", ErrInvalidNetwork
+ }
+
+ buf, err := getTransportTable(fn, family, class)
+ if err != nil {
+ return 0, "", err
+ }
+
+ s := newSearcher(family == windows.AF_INET, network == TCP)
+
+ pid, err := s.Search(buf, ip, uint16(srcPort))
+ if err != nil {
+ return 0, "", err
+ }
+ pp, err := getExecPathFromPID(pid)
+ return 0, pp, err
+}
+
+type searcher struct {
+ itemSize int
+ port int
+ ip int
+ ipSize int
+ pid int
+ tcpState int
+}
+
+func (s *searcher) Search(b []byte, ip netip.Addr, port uint16) (uint32, error) {
+ n := int(readNativeUint32(b[:4]))
+ itemSize := s.itemSize
+ for i := 0; i < n; i++ {
+ row := b[4+itemSize*i : 4+itemSize*(i+1)]
+
+ if s.tcpState >= 0 {
+ tcpState := readNativeUint32(row[s.tcpState : s.tcpState+4])
+ // MIB_TCP_STATE_ESTAB, only check established connections for TCP
+ if tcpState != 5 {
+ continue
+ }
+ }
+
+ // according to MSDN, only the lower 16 bits of dwLocalPort are used and the port number is in network endian.
+ // this field can be illustrated as follows depends on different machine endianess:
+ // little endian: [ MSB LSB 0 0 ] interpret as native uint32 is ((LSB<<8)|MSB)
+ // big endian: [ 0 0 MSB LSB ] interpret as native uint32 is ((MSB<<8)|LSB)
+ // so we need an syscall.Ntohs on the lower 16 bits after read the port as native uint32
+ srcPort := syscall.Ntohs(uint16(readNativeUint32(row[s.port : s.port+4])))
+ if srcPort != port {
+ continue
+ }
+
+ srcIP := nnip.IpToAddr(row[s.ip : s.ip+s.ipSize])
+ // windows binds an unbound udp socket to 0.0.0.0/[::] while first sendto
+ if ip != srcIP && (!srcIP.IsUnspecified() || s.tcpState != -1) {
+ continue
+ }
+
+ pid := readNativeUint32(row[s.pid : s.pid+4])
+ return pid, nil
+ }
+ return 0, ErrNotFound
+}
+
+func newSearcher(isV4, isTCP bool) *searcher {
+ var itemSize, port, ip, ipSize, pid int
+ tcpState := -1
+ switch {
+ case isV4 && isTCP:
+ // struct MIB_TCPROW_OWNER_PID
+ itemSize, port, ip, ipSize, pid, tcpState = 24, 8, 4, 4, 20, 0
+ case isV4 && !isTCP:
+ // struct MIB_UDPROW_OWNER_PID
+ itemSize, port, ip, ipSize, pid = 12, 4, 0, 4, 8
+ case !isV4 && isTCP:
+ // struct MIB_TCP6ROW_OWNER_PID
+ itemSize, port, ip, ipSize, pid, tcpState = 56, 20, 0, 16, 52, 48
+ case !isV4 && !isTCP:
+ // struct MIB_UDP6ROW_OWNER_PID
+ itemSize, port, ip, ipSize, pid = 28, 20, 0, 16, 24
+ }
+
+ return &searcher{
+ itemSize: itemSize,
+ port: port,
+ ip: ip,
+ ipSize: ipSize,
+ pid: pid,
+ tcpState: tcpState,
+ }
+}
+
+func getTransportTable(fn uintptr, family int, class int) ([]byte, error) {
+ for size, buf := uint32(8), make([]byte, 8); ; {
+ ptr := unsafe.Pointer(&buf[0])
+ err, _, _ := syscall.SyscallN(fn, uintptr(ptr), uintptr(unsafe.Pointer(&size)), 0, uintptr(family), uintptr(class), 0)
+
+ switch err {
+ case 0:
+ return buf, nil
+ case uintptr(syscall.ERROR_INSUFFICIENT_BUFFER):
+ buf = make([]byte, size)
+ default:
+ return nil, fmt.Errorf("syscall error: %d", err)
+ }
+ }
+}
+
+func readNativeUint32(b []byte) uint32 {
+ return *(*uint32)(unsafe.Pointer(&b[0]))
+}
+
+func getExecPathFromPID(pid uint32) (string, error) {
+ // kernel process starts with a colon in order to distinguish with normal processes
+ switch pid {
+ case 0:
+ // reserved pid for system idle process
+ return ":System Idle Process", nil
+ case 4:
+ // reserved pid for windows kernel image
+ return ":System", nil
+ }
+ h, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, pid)
+ if err != nil {
+ return "", err
+ }
+ defer windows.CloseHandle(h)
+
+ buf := make([]uint16, syscall.MAX_LONG_PATH)
+ size := uint32(len(buf))
+ r1, _, err := syscall.SyscallN(
+ queryProcName,
+ uintptr(h),
+ uintptr(0),
+ uintptr(unsafe.Pointer(&buf[0])),
+ uintptr(unsafe.Pointer(&size)),
+ )
+ if r1 == 0 {
+ return "", err
+ }
+ return syscall.UTF16ToString(buf[:size]), nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/cachefile/cache.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/cachefile/cache.go
new file mode 100644
index 0000000..f5101f5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/cachefile/cache.go
@@ -0,0 +1,103 @@
+package cachefile
+
+import (
+ "os"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/component/profile"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/metacubex/bbolt"
+)
+
+var (
+ initOnce sync.Once
+ fileMode os.FileMode = 0o666
+ defaultCache *CacheFile
+
+ bucketSelected = []byte("selected")
+ bucketFakeip = []byte("fakeip")
+ bucketETag = []byte("etag")
+)
+
+// CacheFile store and update the cache file
+type CacheFile struct {
+ DB *bbolt.DB
+}
+
+func (c *CacheFile) SetSelected(group, selected string) {
+ if !profile.StoreSelected.Load() {
+ return
+ } else if c.DB == nil {
+ return
+ }
+
+ err := c.DB.Batch(func(t *bbolt.Tx) error {
+ bucket, err := t.CreateBucketIfNotExists(bucketSelected)
+ if err != nil {
+ return err
+ }
+ return bucket.Put([]byte(group), []byte(selected))
+ })
+ if err != nil {
+ log.Warnln("[CacheFile] write cache to %s failed: %s", c.DB.Path(), err.Error())
+ return
+ }
+}
+
+func (c *CacheFile) SelectedMap() map[string]string {
+ if !profile.StoreSelected.Load() {
+ return nil
+ } else if c.DB == nil {
+ return nil
+ }
+
+ mapping := map[string]string{}
+ c.DB.View(func(t *bbolt.Tx) error {
+ bucket := t.Bucket(bucketSelected)
+ if bucket == nil {
+ return nil
+ }
+
+ c := bucket.Cursor()
+ for k, v := c.First(); k != nil; k, v = c.Next() {
+ mapping[string(k)] = string(v)
+ }
+ return nil
+ })
+ return mapping
+}
+
+func (c *CacheFile) Close() error {
+ return c.DB.Close()
+}
+
+func initCache() {
+ options := bbolt.Options{Timeout: time.Second}
+ db, err := bbolt.Open(C.Path.Cache(), fileMode, &options)
+ switch err {
+ case bbolt.ErrInvalid, bbolt.ErrChecksum, bbolt.ErrVersionMismatch:
+ if err = os.Remove(C.Path.Cache()); err != nil {
+ log.Warnln("[CacheFile] remove invalid cache file error: %s", err.Error())
+ break
+ }
+ log.Infoln("[CacheFile] remove invalid cache file and create new one")
+ db, err = bbolt.Open(C.Path.Cache(), fileMode, &options)
+ }
+ if err != nil {
+ log.Warnln("[CacheFile] can't open cache file: %s", err.Error())
+ }
+
+ defaultCache = &CacheFile{
+ DB: db,
+ }
+}
+
+// Cache return singleton of CacheFile
+func Cache() *CacheFile {
+ initOnce.Do(initCache)
+
+ return defaultCache
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/cachefile/etag.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/cachefile/etag.go
new file mode 100644
index 0000000..028fe50
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/cachefile/etag.go
@@ -0,0 +1,58 @@
+package cachefile
+
+import (
+ "time"
+
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/metacubex/bbolt"
+ "github.com/vmihailenco/msgpack/v5"
+)
+
+type EtagWithHash struct {
+ Hash utils.HashType
+ ETag string
+ Time time.Time
+}
+
+func (c *CacheFile) SetETagWithHash(url string, etagWithHash EtagWithHash) {
+ if c.DB == nil {
+ return
+ }
+
+ data, err := msgpack.Marshal(etagWithHash)
+ if err != nil {
+ return // maybe panic is better
+ }
+
+ err = c.DB.Batch(func(t *bbolt.Tx) error {
+ bucket, err := t.CreateBucketIfNotExists(bucketETag)
+ if err != nil {
+ return err
+ }
+
+ return bucket.Put([]byte(url), data)
+ })
+ if err != nil {
+ log.Warnln("[CacheFile] write cache to %s failed: %s", c.DB.Path(), err.Error())
+ return
+ }
+}
+func (c *CacheFile) GetETagWithHash(key string) (etagWithHash EtagWithHash) {
+ if c.DB == nil {
+ return
+ }
+ c.DB.View(func(t *bbolt.Tx) error {
+ if bucket := t.Bucket(bucketETag); bucket != nil {
+ if v := bucket.Get([]byte(key)); v != nil {
+ if err := msgpack.Unmarshal(v, &etagWithHash); err != nil {
+ return err
+ }
+ }
+ }
+ return nil
+ })
+
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/cachefile/fakeip.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/cachefile/fakeip.go
new file mode 100644
index 0000000..20a09f9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/cachefile/fakeip.go
@@ -0,0 +1,115 @@
+package cachefile
+
+import (
+ "net/netip"
+
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/metacubex/bbolt"
+)
+
+type FakeIpStore struct {
+ *CacheFile
+}
+
+func (c *CacheFile) FakeIpStore() *FakeIpStore {
+ return &FakeIpStore{c}
+}
+
+func (c *FakeIpStore) GetByHost(host string) (ip netip.Addr, exist bool) {
+ if c.DB == nil {
+ return
+ }
+ c.DB.View(func(t *bbolt.Tx) error {
+ if bucket := t.Bucket(bucketFakeip); bucket != nil {
+ if v := bucket.Get([]byte(host)); v != nil {
+ ip, exist = netip.AddrFromSlice(v)
+ }
+ }
+ return nil
+ })
+ return
+}
+
+func (c *FakeIpStore) PutByHost(host string, ip netip.Addr) {
+ if c.DB == nil {
+ return
+ }
+ err := c.DB.Batch(func(t *bbolt.Tx) error {
+ bucket, err := t.CreateBucketIfNotExists(bucketFakeip)
+ if err != nil {
+ return err
+ }
+ return bucket.Put([]byte(host), ip.AsSlice())
+ })
+ if err != nil {
+ log.Warnln("[CacheFile] write cache to %s failed: %s", c.DB.Path(), err.Error())
+ }
+}
+
+func (c *FakeIpStore) GetByIP(ip netip.Addr) (host string, exist bool) {
+ if c.DB == nil {
+ return
+ }
+ c.DB.View(func(t *bbolt.Tx) error {
+ if bucket := t.Bucket(bucketFakeip); bucket != nil {
+ if v := bucket.Get(ip.AsSlice()); v != nil {
+ host, exist = string(v), true
+ }
+ }
+ return nil
+ })
+ return
+}
+
+func (c *FakeIpStore) PutByIP(ip netip.Addr, host string) {
+ if c.DB == nil {
+ return
+ }
+ err := c.DB.Batch(func(t *bbolt.Tx) error {
+ bucket, err := t.CreateBucketIfNotExists(bucketFakeip)
+ if err != nil {
+ return err
+ }
+ return bucket.Put(ip.AsSlice(), []byte(host))
+ })
+ if err != nil {
+ log.Warnln("[CacheFile] write cache to %s failed: %s", c.DB.Path(), err.Error())
+ }
+}
+
+func (c *FakeIpStore) DelByIP(ip netip.Addr) {
+ if c.DB == nil {
+ return
+ }
+
+ addr := ip.AsSlice()
+ err := c.DB.Batch(func(t *bbolt.Tx) error {
+ bucket, err := t.CreateBucketIfNotExists(bucketFakeip)
+ if err != nil {
+ return err
+ }
+ host := bucket.Get(addr)
+ err = bucket.Delete(addr)
+ if len(host) > 0 {
+ if err = bucket.Delete(host); err != nil {
+ return err
+ }
+ }
+ return err
+ })
+ if err != nil {
+ log.Warnln("[CacheFile] write cache to %s failed: %s", c.DB.Path(), err.Error())
+ }
+}
+
+func (c *FakeIpStore) FlushFakeIP() error {
+ err := c.DB.Batch(func(t *bbolt.Tx) error {
+ bucket := t.Bucket(bucketFakeip)
+ if bucket == nil {
+ return nil
+ }
+ return t.DeleteBucket(bucketFakeip)
+ })
+ return err
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/profile.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/profile.go
new file mode 100644
index 0000000..36db8cc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/profile/profile.go
@@ -0,0 +1,8 @@
+package profile
+
+import (
+ "github.com/metacubex/mihomo/common/atomic"
+)
+
+// StoreSelected is a global switch for storing selected proxy to cache
+var StoreSelected = atomic.NewBool(true)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/proxydialer.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/proxydialer.go
new file mode 100644
index 0000000..71a658b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/proxydialer.go
@@ -0,0 +1,93 @@
+package proxydialer
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "net"
+ "net/netip"
+ "strings"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/tunnel"
+ "github.com/metacubex/mihomo/tunnel/statistic"
+)
+
+type proxyDialer struct {
+ proxy C.ProxyAdapter
+ dialer C.Dialer
+ statistic bool
+}
+
+func New(proxy C.ProxyAdapter, dialer C.Dialer, statistic bool) C.Dialer {
+ return proxyDialer{proxy: proxy, dialer: dialer, statistic: statistic}
+}
+
+func NewByName(proxyName string, dialer C.Dialer) (C.Dialer, error) {
+ proxies := tunnel.Proxies()
+ if proxy, ok := proxies[proxyName]; ok {
+ return New(proxy, dialer, true), nil
+ }
+ return nil, fmt.Errorf("proxyName[%s] not found", proxyName)
+}
+
+func (p proxyDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
+ currentMeta := &C.Metadata{Type: C.INNER}
+ if err := currentMeta.SetRemoteAddress(address); err != nil {
+ return nil, err
+ }
+ if strings.Contains(network, "udp") { // using in wireguard outbound
+ if !currentMeta.Resolved() {
+ ip, err := resolver.ResolveIP(ctx, currentMeta.Host)
+ if err != nil {
+ return nil, errors.New("can't resolve ip")
+ }
+ currentMeta.DstIP = ip
+ }
+ pc, err := p.listenPacket(ctx, currentMeta)
+ if err != nil {
+ return nil, err
+ }
+ return N.NewBindPacketConn(pc, currentMeta.UDPAddr()), nil
+ }
+ var conn C.Conn
+ var err error
+ if d, ok := p.dialer.(dialer.Dialer); ok { // first using old function to let mux work
+ conn, err = p.proxy.DialContext(ctx, currentMeta, dialer.WithOption(d.Opt))
+ } else {
+ conn, err = p.proxy.DialContextWithDialer(ctx, p.dialer, currentMeta)
+ }
+ if err != nil {
+ return nil, err
+ }
+ if p.statistic {
+ conn = statistic.NewTCPTracker(conn, statistic.DefaultManager, currentMeta, nil, 0, 0, false)
+ }
+ return conn, err
+}
+
+func (p proxyDialer) ListenPacket(ctx context.Context, network, address string, rAddrPort netip.AddrPort) (net.PacketConn, error) {
+ currentMeta := &C.Metadata{Type: C.INNER, DstIP: rAddrPort.Addr(), DstPort: rAddrPort.Port()}
+ return p.listenPacket(ctx, currentMeta)
+}
+
+func (p proxyDialer) listenPacket(ctx context.Context, currentMeta *C.Metadata) (C.PacketConn, error) {
+ var pc C.PacketConn
+ var err error
+ currentMeta.NetWork = C.UDP
+ if d, ok := p.dialer.(dialer.Dialer); ok { // first using old function to let mux work
+ pc, err = p.proxy.ListenPacketContext(ctx, currentMeta, dialer.WithOption(d.Opt))
+ } else {
+ pc, err = p.proxy.ListenPacketWithDialer(ctx, p.dialer, currentMeta)
+ }
+ if err != nil {
+ return nil, err
+ }
+ if p.statistic {
+ pc = statistic.NewUDPTracker(pc, statistic.DefaultManager, currentMeta, nil, 0, 0, false)
+ }
+ return pc, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/sing.go
new file mode 100644
index 0000000..71180c0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/sing.go
@@ -0,0 +1,82 @@
+package proxydialer
+
+import (
+ "context"
+ "net"
+
+ C "github.com/metacubex/mihomo/constant"
+
+ M "github.com/sagernet/sing/common/metadata"
+ N "github.com/sagernet/sing/common/network"
+)
+
+type SingDialer interface {
+ N.Dialer
+ SetDialer(dialer C.Dialer)
+}
+
+type singDialer proxyDialer
+
+var _ N.Dialer = (*singDialer)(nil)
+
+func (d *singDialer) DialContext(ctx context.Context, network string, destination M.Socksaddr) (net.Conn, error) {
+ return (*proxyDialer)(d).DialContext(ctx, network, destination.String())
+}
+
+func (d *singDialer) ListenPacket(ctx context.Context, destination M.Socksaddr) (net.PacketConn, error) {
+ return (*proxyDialer)(d).ListenPacket(ctx, "udp", "", destination.AddrPort())
+}
+
+func (d *singDialer) SetDialer(dialer C.Dialer) {
+ (*proxyDialer)(d).dialer = dialer
+}
+
+func NewSingDialer(proxy C.ProxyAdapter, dialer C.Dialer, statistic bool) SingDialer {
+ return (*singDialer)(&proxyDialer{
+ proxy: proxy,
+ dialer: dialer,
+ statistic: statistic,
+ })
+}
+
+type byNameSingDialer struct {
+ dialer C.Dialer
+ proxyName string
+}
+
+var _ N.Dialer = (*byNameSingDialer)(nil)
+
+func (d *byNameSingDialer) DialContext(ctx context.Context, network string, destination M.Socksaddr) (net.Conn, error) {
+ var cDialer C.Dialer = d.dialer
+ if len(d.proxyName) > 0 {
+ pd, err := NewByName(d.proxyName, d.dialer)
+ if err != nil {
+ return nil, err
+ }
+ cDialer = pd
+ }
+ return cDialer.DialContext(ctx, network, destination.String())
+}
+
+func (d *byNameSingDialer) ListenPacket(ctx context.Context, destination M.Socksaddr) (net.PacketConn, error) {
+ var cDialer C.Dialer = d.dialer
+ if len(d.proxyName) > 0 {
+ pd, err := NewByName(d.proxyName, d.dialer)
+ if err != nil {
+ return nil, err
+ }
+ cDialer = pd
+ }
+ return cDialer.ListenPacket(ctx, "udp", "", destination.AddrPort())
+}
+
+func (d *byNameSingDialer) SetDialer(dialer C.Dialer) {
+ d.dialer = dialer
+}
+
+func NewByNameSingDialer(proxyName string, dialer C.Dialer) SingDialer {
+ return &byNameSingDialer{
+ dialer: dialer,
+ proxyName: proxyName,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/slowdown.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/slowdown.go
new file mode 100644
index 0000000..c62fc34
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/slowdown.go
@@ -0,0 +1,34 @@
+package proxydialer
+
+import (
+ "context"
+ "net"
+ "net/netip"
+
+ "github.com/metacubex/mihomo/component/slowdown"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type SlowDownDialer struct {
+ C.Dialer
+ Slowdown *slowdown.SlowDown
+}
+
+func (d SlowDownDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
+ return slowdown.Do(d.Slowdown, ctx, func() (net.Conn, error) {
+ return d.Dialer.DialContext(ctx, network, address)
+ })
+}
+
+func (d SlowDownDialer) ListenPacket(ctx context.Context, network, address string, rAddrPort netip.AddrPort) (net.PacketConn, error) {
+ return slowdown.Do(d.Slowdown, ctx, func() (net.PacketConn, error) {
+ return d.Dialer.ListenPacket(ctx, network, address, rAddrPort)
+ })
+}
+
+func NewSlowDownDialer(d C.Dialer, sd *slowdown.SlowDown) SlowDownDialer {
+ return SlowDownDialer{
+ Dialer: d,
+ Slowdown: sd,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/slowdown_sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/slowdown_sing.go
new file mode 100644
index 0000000..cc3a46a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/proxydialer/slowdown_sing.go
@@ -0,0 +1,33 @@
+package proxydialer
+
+import (
+ "context"
+ "net"
+
+ "github.com/metacubex/mihomo/component/slowdown"
+ M "github.com/sagernet/sing/common/metadata"
+)
+
+type SlowDownSingDialer struct {
+ SingDialer
+ Slowdown *slowdown.SlowDown
+}
+
+func (d SlowDownSingDialer) DialContext(ctx context.Context, network string, destination M.Socksaddr) (net.Conn, error) {
+ return slowdown.Do(d.Slowdown, ctx, func() (net.Conn, error) {
+ return d.SingDialer.DialContext(ctx, network, destination)
+ })
+}
+
+func (d SlowDownSingDialer) ListenPacket(ctx context.Context, destination M.Socksaddr) (net.PacketConn, error) {
+ return slowdown.Do(d.Slowdown, ctx, func() (net.PacketConn, error) {
+ return d.SingDialer.ListenPacket(ctx, destination)
+ })
+}
+
+func NewSlowDownSingDialer(d SingDialer, sd *slowdown.SlowDown) SlowDownSingDialer {
+ return SlowDownSingDialer{
+ SingDialer: d,
+ Slowdown: sd,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/enhancer.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/enhancer.go
new file mode 100644
index 0000000..f00a13b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/enhancer.go
@@ -0,0 +1,84 @@
+package resolver
+
+import "net/netip"
+
+var DefaultHostMapper Enhancer
+
+type Enhancer interface {
+ FakeIPEnabled() bool
+ MappingEnabled() bool
+ IsFakeIP(netip.Addr) bool
+ IsFakeBroadcastIP(netip.Addr) bool
+ IsExistFakeIP(netip.Addr) bool
+ FindHostByIP(netip.Addr) (string, bool)
+ FlushFakeIP() error
+ InsertHostByIP(netip.Addr, string)
+ StoreFakePoolState()
+}
+
+func FakeIPEnabled() bool {
+ if mapper := DefaultHostMapper; mapper != nil {
+ return mapper.FakeIPEnabled()
+ }
+
+ return false
+}
+
+func MappingEnabled() bool {
+ if mapper := DefaultHostMapper; mapper != nil {
+ return mapper.MappingEnabled()
+ }
+
+ return false
+}
+
+func IsFakeIP(ip netip.Addr) bool {
+ if mapper := DefaultHostMapper; mapper != nil {
+ return mapper.IsFakeIP(ip)
+ }
+
+ return false
+}
+
+func IsFakeBroadcastIP(ip netip.Addr) bool {
+ if mapper := DefaultHostMapper; mapper != nil {
+ return mapper.IsFakeBroadcastIP(ip)
+ }
+
+ return false
+}
+
+func IsExistFakeIP(ip netip.Addr) bool {
+ if mapper := DefaultHostMapper; mapper != nil {
+ return mapper.IsExistFakeIP(ip)
+ }
+
+ return false
+}
+
+func InsertHostByIP(ip netip.Addr, host string) {
+ if mapper := DefaultHostMapper; mapper != nil {
+ mapper.InsertHostByIP(ip, host)
+ }
+}
+
+func FindHostByIP(ip netip.Addr) (string, bool) {
+ if mapper := DefaultHostMapper; mapper != nil {
+ return mapper.FindHostByIP(ip)
+ }
+
+ return "", false
+}
+
+func FlushFakeIP() error {
+ if mapper := DefaultHostMapper; mapper != nil {
+ return mapper.FlushFakeIP()
+ }
+ return nil
+}
+
+func StoreFakePoolState() {
+ if mapper := DefaultHostMapper; mapper != nil {
+ mapper.StoreFakePoolState()
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/host.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/host.go
new file mode 100644
index 0000000..34da8e9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/host.go
@@ -0,0 +1,129 @@
+package resolver
+
+import (
+ "errors"
+ "net/netip"
+ "os"
+ "strconv"
+ "strings"
+ _ "unsafe"
+
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/resolver/hosts"
+ "github.com/metacubex/mihomo/component/trie"
+ "github.com/metacubex/randv2"
+)
+
+var (
+ DisableSystemHosts, _ = strconv.ParseBool(os.Getenv("DISABLE_SYSTEM_HOSTS"))
+ UseSystemHosts bool
+)
+
+type Hosts struct {
+ *trie.DomainTrie[HostValue]
+}
+
+func NewHosts(hosts *trie.DomainTrie[HostValue]) Hosts {
+ return Hosts{
+ hosts,
+ }
+}
+
+// Return the search result and whether to match the parameter `isDomain`
+func (h *Hosts) Search(domain string, isDomain bool) (*HostValue, bool) {
+ if value := h.DomainTrie.Search(domain); value != nil {
+ hostValue := value.Data()
+ for {
+ if isDomain && hostValue.IsDomain {
+ return &hostValue, true
+ } else {
+ if node := h.DomainTrie.Search(hostValue.Domain); node != nil {
+ hostValue = node.Data()
+ } else {
+ break
+ }
+ }
+ }
+ if isDomain == hostValue.IsDomain {
+ return &hostValue, true
+ }
+
+ return &hostValue, false
+ }
+
+ if !isDomain && !DisableSystemHosts && UseSystemHosts {
+ addr, _ := hosts.LookupStaticHost(domain)
+ if hostValue, err := NewHostValue(addr); err == nil {
+ return &hostValue, true
+ }
+ }
+ return nil, false
+}
+
+type HostValue struct {
+ IsDomain bool
+ IPs []netip.Addr
+ Domain string
+}
+
+func NewHostValue(value any) (HostValue, error) {
+ isDomain := true
+ ips := make([]netip.Addr, 0)
+ domain := ""
+ if valueArr, err := utils.ToStringSlice(value); err != nil {
+ return HostValue{}, err
+ } else {
+ if len(valueArr) > 1 {
+ isDomain = false
+ for _, str := range valueArr {
+ if ip, err := netip.ParseAddr(str); err == nil {
+ ips = append(ips, ip)
+ } else {
+ return HostValue{}, err
+ }
+ }
+ } else if len(valueArr) == 1 {
+ host := valueArr[0]
+ if ip, err := netip.ParseAddr(host); err == nil {
+ ips = append(ips, ip)
+ isDomain = false
+ } else {
+ domain = host
+ }
+ }
+ }
+ if isDomain {
+ return NewHostValueByDomain(domain)
+ } else {
+ return NewHostValueByIPs(ips)
+ }
+}
+
+func NewHostValueByIPs(ips []netip.Addr) (HostValue, error) {
+ if len(ips) == 0 {
+ return HostValue{}, errors.New("ip list is empty")
+ }
+ return HostValue{
+ IsDomain: false,
+ IPs: ips,
+ }, nil
+}
+
+func NewHostValueByDomain(domain string) (HostValue, error) {
+ domain = strings.Trim(domain, ".")
+ item := strings.Split(domain, ".")
+ if len(item) < 2 {
+ return HostValue{}, errors.New("invaild domain")
+ }
+ return HostValue{
+ IsDomain: true,
+ Domain: domain,
+ }, nil
+}
+
+func (hv HostValue) RandIP() (netip.Addr, error) {
+ if hv.IsDomain {
+ return netip.Addr{}, errors.New("value type is error")
+ }
+ return hv.IPs[randv2.IntN(len(hv.IPs))], nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/hosts/hosts.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/hosts/hosts.go
new file mode 100644
index 0000000..780ebb2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/hosts/hosts.go
@@ -0,0 +1,309 @@
+package hosts
+
+// this file copy and modify from golang's std net/hosts.go
+
+import (
+ "errors"
+ "io"
+ "io/fs"
+ "net/netip"
+ "os"
+ "strings"
+ "sync"
+ "time"
+)
+
+var hostsFilePath = "/etc/hosts"
+
+const cacheMaxAge = 5 * time.Second
+
+func parseLiteralIP(addr string) string {
+ ip, err := netip.ParseAddr(addr)
+ if err != nil {
+ return ""
+ }
+ return ip.String()
+}
+
+type byName struct {
+ addrs []string
+ canonicalName string
+}
+
+// hosts contains known host entries.
+var hosts struct {
+ sync.Mutex
+
+ // Key for the list of literal IP addresses must be a host
+ // name. It would be part of DNS labels, a FQDN or an absolute
+ // FQDN.
+ // For now the key is converted to lower case for convenience.
+ byName map[string]byName
+
+ // Key for the list of host names must be a literal IP address
+ // including IPv6 address with zone identifier.
+ // We don't support old-classful IP address notation.
+ byAddr map[string][]string
+
+ expire time.Time
+ path string
+ mtime time.Time
+ size int64
+}
+
+func readHosts() {
+ now := time.Now()
+ hp := hostsFilePath
+
+ if now.Before(hosts.expire) && hosts.path == hp && len(hosts.byName) > 0 {
+ return
+ }
+ mtime, size, err := stat(hp)
+ if err == nil && hosts.path == hp && hosts.mtime.Equal(mtime) && hosts.size == size {
+ hosts.expire = now.Add(cacheMaxAge)
+ return
+ }
+
+ hs := make(map[string]byName)
+ is := make(map[string][]string)
+
+ file, err := open(hp)
+ if err != nil {
+ if !errors.Is(err, fs.ErrNotExist) && !errors.Is(err, fs.ErrPermission) {
+ return
+ }
+ }
+
+ if file != nil {
+ defer file.close()
+ for line, ok := file.readLine(); ok; line, ok = file.readLine() {
+ if i := strings.IndexByte(line, '#'); i >= 0 {
+ // Discard comments.
+ line = line[0:i]
+ }
+ f := getFields(line)
+ if len(f) < 2 {
+ continue
+ }
+ addr := parseLiteralIP(f[0])
+ if addr == "" {
+ continue
+ }
+
+ var canonical string
+ for i := 1; i < len(f); i++ {
+ name := absDomainName(f[i])
+ h := []byte(f[i])
+ lowerASCIIBytes(h)
+ key := absDomainName(string(h))
+
+ if i == 1 {
+ canonical = key
+ }
+
+ is[addr] = append(is[addr], name)
+
+ if v, ok := hs[key]; ok {
+ hs[key] = byName{
+ addrs: append(v.addrs, addr),
+ canonicalName: v.canonicalName,
+ }
+ continue
+ }
+
+ hs[key] = byName{
+ addrs: []string{addr},
+ canonicalName: canonical,
+ }
+ }
+ }
+ }
+ // Update the data cache.
+ hosts.expire = now.Add(cacheMaxAge)
+ hosts.path = hp
+ hosts.byName = hs
+ hosts.byAddr = is
+ hosts.mtime = mtime
+ hosts.size = size
+}
+
+// LookupStaticHost looks up the addresses and the canonical name for the given host from /etc/hosts.
+func LookupStaticHost(host string) ([]string, string) {
+ hosts.Lock()
+ defer hosts.Unlock()
+ readHosts()
+ if len(hosts.byName) != 0 {
+ if hasUpperCase(host) {
+ lowerHost := []byte(host)
+ lowerASCIIBytes(lowerHost)
+ host = string(lowerHost)
+ }
+ if byName, ok := hosts.byName[absDomainName(host)]; ok {
+ ipsCp := make([]string, len(byName.addrs))
+ copy(ipsCp, byName.addrs)
+ return ipsCp, byName.canonicalName
+ }
+ }
+ return nil, ""
+}
+
+// LookupStaticAddr looks up the hosts for the given address from /etc/hosts.
+func LookupStaticAddr(addr string) []string {
+ hosts.Lock()
+ defer hosts.Unlock()
+ readHosts()
+ addr = parseLiteralIP(addr)
+ if addr == "" {
+ return nil
+ }
+ if len(hosts.byAddr) != 0 {
+ if hosts, ok := hosts.byAddr[addr]; ok {
+ hostsCp := make([]string, len(hosts))
+ copy(hostsCp, hosts)
+ return hostsCp
+ }
+ }
+ return nil
+}
+
+func stat(name string) (mtime time.Time, size int64, err error) {
+ st, err := os.Stat(name)
+ if err != nil {
+ return time.Time{}, 0, err
+ }
+ return st.ModTime(), st.Size(), nil
+}
+
+type file struct {
+ file *os.File
+ data []byte
+ atEOF bool
+}
+
+func (f *file) close() { f.file.Close() }
+
+func (f *file) getLineFromData() (s string, ok bool) {
+ data := f.data
+ i := 0
+ for i = 0; i < len(data); i++ {
+ if data[i] == '\n' {
+ s = string(data[0:i])
+ ok = true
+ // move data
+ i++
+ n := len(data) - i
+ copy(data[0:], data[i:])
+ f.data = data[0:n]
+ return
+ }
+ }
+ if f.atEOF && len(f.data) > 0 {
+ // EOF, return all we have
+ s = string(data)
+ f.data = f.data[0:0]
+ ok = true
+ }
+ return
+}
+
+func (f *file) readLine() (s string, ok bool) {
+ if s, ok = f.getLineFromData(); ok {
+ return
+ }
+ if len(f.data) < cap(f.data) {
+ ln := len(f.data)
+ n, err := io.ReadFull(f.file, f.data[ln:cap(f.data)])
+ if n >= 0 {
+ f.data = f.data[0 : ln+n]
+ }
+ if err == io.EOF || err == io.ErrUnexpectedEOF {
+ f.atEOF = true
+ }
+ }
+ s, ok = f.getLineFromData()
+ return
+}
+
+func (f *file) stat() (mtime time.Time, size int64, err error) {
+ st, err := f.file.Stat()
+ if err != nil {
+ return time.Time{}, 0, err
+ }
+ return st.ModTime(), st.Size(), nil
+}
+
+func open(name string) (*file, error) {
+ fd, err := os.Open(name)
+ if err != nil {
+ return nil, err
+ }
+ return &file{fd, make([]byte, 0, 64*1024), false}, nil
+}
+
+func getFields(s string) []string { return splitAtBytes(s, " \r\t\n") }
+
+// Count occurrences in s of any bytes in t.
+func countAnyByte(s string, t string) int {
+ n := 0
+ for i := 0; i < len(s); i++ {
+ if strings.IndexByte(t, s[i]) >= 0 {
+ n++
+ }
+ }
+ return n
+}
+
+// Split s at any bytes in t.
+func splitAtBytes(s string, t string) []string {
+ a := make([]string, 1+countAnyByte(s, t))
+ n := 0
+ last := 0
+ for i := 0; i < len(s); i++ {
+ if strings.IndexByte(t, s[i]) >= 0 {
+ if last < i {
+ a[n] = s[last:i]
+ n++
+ }
+ last = i + 1
+ }
+ }
+ if last < len(s) {
+ a[n] = s[last:]
+ n++
+ }
+ return a[0:n]
+}
+
+// lowerASCIIBytes makes x ASCII lowercase in-place.
+func lowerASCIIBytes(x []byte) {
+ for i, b := range x {
+ if 'A' <= b && b <= 'Z' {
+ x[i] += 'a' - 'A'
+ }
+ }
+}
+
+// hasUpperCase tells whether the given string contains at least one upper-case.
+func hasUpperCase(s string) bool {
+ for i := range s {
+ if 'A' <= s[i] && s[i] <= 'Z' {
+ return true
+ }
+ }
+ return false
+}
+
+// absDomainName returns an absolute domain name which ends with a
+// trailing dot to match pure Go reverse resolver and all other lookup
+// routines.
+// See golang.org/issue/12189.
+// But we don't want to add dots for local names from /etc/hosts.
+// It's hard to tell so we settle on the heuristic that names without dots
+// (like "localhost" or "myhost") do not get trailing dots, but any other
+// names do.
+func absDomainName(s string) string {
+ if strings.IndexByte(s, '.') != -1 && s[len(s)-1] != '.' {
+ s += "."
+ }
+ return s
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/hosts/hosts_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/hosts/hosts_windows.go
new file mode 100644
index 0000000..8ad76e0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/hosts/hosts_windows.go
@@ -0,0 +1,13 @@
+package hosts
+
+// this file copy and modify from golang's std net/hook_windows.go
+
+import (
+ "golang.org/x/sys/windows"
+)
+
+func init() {
+ if dir, err := windows.GetSystemDirectory(); err == nil {
+ hostsFilePath = dir + "/Drivers/etc/hosts"
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/local.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/local.go
new file mode 100644
index 0000000..e850511
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/local.go
@@ -0,0 +1,22 @@
+package resolver
+
+import (
+ "context"
+
+ D "github.com/miekg/dns"
+)
+
+var DefaultLocalServer LocalServer
+
+type LocalServer interface {
+ ServeMsg(ctx context.Context, msg *D.Msg) (*D.Msg, error)
+}
+
+// ServeMsg with a dns.Msg, return resolve dns.Msg
+func ServeMsg(ctx context.Context, msg *D.Msg) (*D.Msg, error) {
+ if server := DefaultLocalServer; server != nil {
+ return server.ServeMsg(ctx, msg)
+ }
+
+ return nil, ErrIPNotFound
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/relay.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/relay.go
new file mode 100644
index 0000000..818b415
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/relay.go
@@ -0,0 +1,96 @@
+package resolver
+
+import (
+ "context"
+ "encoding/binary"
+ "io"
+ "net"
+ "time"
+
+ "github.com/metacubex/mihomo/common/pool"
+
+ D "github.com/miekg/dns"
+)
+
+const DefaultDnsReadTimeout = time.Second * 10
+const DefaultDnsRelayTimeout = time.Second * 5
+
+const SafeDnsPacketSize = 2 * 1024 // safe size which is 1232 from https://dnsflagday.net/2020/, so 2048 is enough
+
+func RelayDnsConn(ctx context.Context, conn net.Conn, readTimeout time.Duration) error {
+ buff := pool.Get(pool.UDPBufferSize)
+ defer func() {
+ _ = pool.Put(buff)
+ _ = conn.Close()
+ }()
+ for {
+ if readTimeout > 0 {
+ _ = conn.SetReadDeadline(time.Now().Add(readTimeout))
+ }
+
+ length := uint16(0)
+ if err := binary.Read(conn, binary.BigEndian, &length); err != nil {
+ break
+ }
+
+ if int(length) > len(buff) {
+ break
+ }
+
+ n, err := io.ReadFull(conn, buff[:length])
+ if err != nil {
+ break
+ }
+
+ err = func() error {
+ ctx, cancel := context.WithTimeout(ctx, DefaultDnsRelayTimeout)
+ defer cancel()
+ inData := buff[:n]
+ msg, err := relayDnsPacket(ctx, inData, buff, 0)
+ if err != nil {
+ return err
+ }
+
+ err = binary.Write(conn, binary.BigEndian, uint16(len(msg)))
+ if err != nil {
+ return err
+ }
+
+ _, err = conn.Write(msg)
+ if err != nil {
+ return err
+ }
+ return nil
+ }()
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func relayDnsPacket(ctx context.Context, payload []byte, target []byte, maxSize int) ([]byte, error) {
+ msg := &D.Msg{}
+ if err := msg.Unpack(payload); err != nil {
+ return nil, err
+ }
+
+ r, err := ServeMsg(ctx, msg)
+ if err != nil {
+ m := new(D.Msg)
+ m.SetRcode(msg, D.RcodeServerFailure)
+ return m.PackBuffer(target)
+ }
+
+ r.SetRcode(msg, r.Rcode)
+ if maxSize > 0 {
+ r.Truncate(maxSize)
+ }
+ r.Compress = true
+ return r.PackBuffer(target)
+}
+
+// RelayDnsPacket will truncate udp message up to SafeDnsPacketSize
+func RelayDnsPacket(ctx context.Context, payload []byte, target []byte) ([]byte, error) {
+ return relayDnsPacket(ctx, payload, target, SafeDnsPacketSize)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/resolver.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/resolver.go
new file mode 100644
index 0000000..1eb3d64
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/resolver.go
@@ -0,0 +1,214 @@
+package resolver
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "net/netip"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/trie"
+
+ "github.com/metacubex/randv2"
+ "github.com/miekg/dns"
+)
+
+var (
+ // DefaultResolver aim to resolve ip
+ DefaultResolver Resolver
+
+ // ProxyServerHostResolver resolve ip for proxies server host, only nil when DefaultResolver is nil
+ ProxyServerHostResolver Resolver
+
+ // DirectHostResolver resolve ip for direct outbound host, only nil when DefaultResolver is nil
+ DirectHostResolver Resolver
+
+ // SystemResolver always using system dns, and was init in dns module
+ SystemResolver Resolver
+
+ // DisableIPv6 means don't resolve ipv6 host
+ // default value is true
+ DisableIPv6 = true
+
+ // DefaultHosts aim to resolve hosts
+ DefaultHosts = NewHosts(trie.New[HostValue]())
+
+ // DefaultDNSTimeout defined the default dns request timeout
+ DefaultDNSTimeout = time.Second * 5
+)
+
+var (
+ ErrIPNotFound = errors.New("couldn't find ip")
+ ErrIPVersion = errors.New("ip version error")
+ ErrIPv6Disabled = errors.New("ipv6 disabled")
+)
+
+type Resolver interface {
+ LookupIP(ctx context.Context, host string) (ips []netip.Addr, err error)
+ LookupIPv4(ctx context.Context, host string) (ips []netip.Addr, err error)
+ LookupIPv6(ctx context.Context, host string) (ips []netip.Addr, err error)
+ ExchangeContext(ctx context.Context, m *dns.Msg) (msg *dns.Msg, err error)
+ Invalid() bool
+ ClearCache()
+ ResetConnection()
+}
+
+// LookupIPv4WithResolver same as LookupIPv4, but with a resolver
+func LookupIPv4WithResolver(ctx context.Context, host string, r Resolver) ([]netip.Addr, error) {
+ if node, ok := DefaultHosts.Search(host, false); ok {
+ if addrs := utils.Filter(node.IPs, func(ip netip.Addr) bool {
+ return ip.Is4()
+ }); len(addrs) > 0 {
+ return addrs, nil
+ }
+ }
+
+ ip, err := netip.ParseAddr(host)
+ if err == nil {
+ if ip.Is4() || ip.Is4In6() {
+ return []netip.Addr{ip}, nil
+ }
+ return []netip.Addr{}, ErrIPVersion
+ }
+
+ if r != nil && r.Invalid() {
+ return r.LookupIPv4(ctx, host)
+ }
+
+ return SystemResolver.LookupIPv4(ctx, host)
+}
+
+// LookupIPv4 with a host, return ipv4 list
+func LookupIPv4(ctx context.Context, host string) ([]netip.Addr, error) {
+ return LookupIPv4WithResolver(ctx, host, DefaultResolver)
+}
+
+// ResolveIPv4WithResolver same as ResolveIPv4, but with a resolver
+func ResolveIPv4WithResolver(ctx context.Context, host string, r Resolver) (netip.Addr, error) {
+ ips, err := LookupIPv4WithResolver(ctx, host, r)
+ if err != nil {
+ return netip.Addr{}, err
+ } else if len(ips) == 0 {
+ return netip.Addr{}, fmt.Errorf("%w: %s", ErrIPNotFound, host)
+ }
+ return ips[randv2.IntN(len(ips))], nil
+}
+
+// ResolveIPv4 with a host, return ipv4
+func ResolveIPv4(ctx context.Context, host string) (netip.Addr, error) {
+ return ResolveIPv4WithResolver(ctx, host, DefaultResolver)
+}
+
+// LookupIPv6WithResolver same as LookupIPv6, but with a resolver
+func LookupIPv6WithResolver(ctx context.Context, host string, r Resolver) ([]netip.Addr, error) {
+ if DisableIPv6 {
+ return nil, ErrIPv6Disabled
+ }
+
+ if node, ok := DefaultHosts.Search(host, false); ok {
+ if addrs := utils.Filter(node.IPs, func(ip netip.Addr) bool {
+ return ip.Is6()
+ }); len(addrs) > 0 {
+ return addrs, nil
+ }
+ }
+
+ if ip, err := netip.ParseAddr(host); err == nil {
+ if strings.Contains(host, ":") {
+ return []netip.Addr{ip}, nil
+ }
+ return nil, ErrIPVersion
+ }
+
+ if r != nil && r.Invalid() {
+ return r.LookupIPv6(ctx, host)
+ }
+
+ return SystemResolver.LookupIPv6(ctx, host)
+}
+
+// LookupIPv6 with a host, return ipv6 list
+func LookupIPv6(ctx context.Context, host string) ([]netip.Addr, error) {
+ return LookupIPv6WithResolver(ctx, host, DefaultResolver)
+}
+
+// ResolveIPv6WithResolver same as ResolveIPv6, but with a resolver
+func ResolveIPv6WithResolver(ctx context.Context, host string, r Resolver) (netip.Addr, error) {
+ ips, err := LookupIPv6WithResolver(ctx, host, r)
+ if err != nil {
+ return netip.Addr{}, err
+ } else if len(ips) == 0 {
+ return netip.Addr{}, fmt.Errorf("%w: %s", ErrIPNotFound, host)
+ }
+ return ips[randv2.IntN(len(ips))], nil
+}
+
+func ResolveIPv6(ctx context.Context, host string) (netip.Addr, error) {
+ return ResolveIPv6WithResolver(ctx, host, DefaultResolver)
+}
+
+// LookupIPWithResolver same as LookupIP, but with a resolver
+func LookupIPWithResolver(ctx context.Context, host string, r Resolver) ([]netip.Addr, error) {
+ if node, ok := DefaultHosts.Search(host, false); ok {
+ return node.IPs, nil
+ }
+
+ if r != nil && r.Invalid() {
+ if DisableIPv6 {
+ return r.LookupIPv4(ctx, host)
+ }
+ return r.LookupIP(ctx, host)
+ } else if DisableIPv6 {
+ return LookupIPv4WithResolver(ctx, host, r)
+ }
+
+ if ip, err := netip.ParseAddr(host); err == nil {
+ return []netip.Addr{ip}, nil
+ }
+
+ return SystemResolver.LookupIP(ctx, host)
+}
+
+// LookupIP with a host, return ip
+func LookupIP(ctx context.Context, host string) ([]netip.Addr, error) {
+ return LookupIPWithResolver(ctx, host, DefaultResolver)
+}
+
+// ResolveIPWithResolver same as ResolveIP, but with a resolver
+func ResolveIPWithResolver(ctx context.Context, host string, r Resolver) (netip.Addr, error) {
+ ips, err := LookupIPWithResolver(ctx, host, r)
+ if err != nil {
+ return netip.Addr{}, err
+ } else if len(ips) == 0 {
+ return netip.Addr{}, fmt.Errorf("%w: %s", ErrIPNotFound, host)
+ }
+ ipv4s, ipv6s := SortationAddr(ips)
+ if len(ipv4s) > 0 {
+ return ipv4s[randv2.IntN(len(ipv4s))], nil
+ }
+ return ipv6s[randv2.IntN(len(ipv6s))], nil
+}
+
+// ResolveIP with a host, return ip and priority return TypeA
+func ResolveIP(ctx context.Context, host string) (netip.Addr, error) {
+ return ResolveIPWithResolver(ctx, host, DefaultResolver)
+}
+
+func ResetConnection() {
+ if DefaultResolver != nil {
+ go DefaultResolver.ResetConnection()
+ }
+}
+
+func SortationAddr(ips []netip.Addr) (ipv4s, ipv6s []netip.Addr) {
+ for _, v := range ips {
+ if v.Unmap().Is4() {
+ ipv4s = append(ipv4s, v)
+ } else {
+ ipv6s = append(ipv6s, v)
+ }
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/system.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/system.go
new file mode 100644
index 0000000..a134bb0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/resolver/system.go
@@ -0,0 +1,39 @@
+package resolver
+
+import "sync"
+
+var blacklist struct {
+ Map map[string]struct{}
+ Mutex sync.Mutex
+}
+
+func init() {
+ blacklist.Map = make(map[string]struct{})
+}
+
+func AddSystemDnsBlacklist(names ...string) {
+ blacklist.Mutex.Lock()
+ defer blacklist.Mutex.Unlock()
+ for _, name := range names {
+ blacklist.Map[name] = struct{}{}
+ }
+}
+
+func RemoveSystemDnsBlacklist(names ...string) {
+ blacklist.Mutex.Lock()
+ defer blacklist.Mutex.Unlock()
+ for _, name := range names {
+ delete(blacklist.Map, name)
+ }
+}
+
+func IsSystemDnsBlacklisted(names ...string) bool {
+ blacklist.Mutex.Lock()
+ defer blacklist.Mutex.Unlock()
+ for _, name := range names {
+ if _, ok := blacklist.Map[name]; ok {
+ return true
+ }
+ }
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/resource/fetcher.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/resource/fetcher.go
new file mode 100644
index 0000000..39beee8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/resource/fetcher.go
@@ -0,0 +1,214 @@
+package resource
+
+import (
+ "context"
+ "os"
+ "time"
+
+ "github.com/metacubex/mihomo/common/utils"
+ types "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/sagernet/fswatch"
+ "github.com/samber/lo"
+)
+
+type Parser[V any] func([]byte) (V, error)
+
+type Fetcher[V any] struct {
+ ctx context.Context
+ ctxCancel context.CancelFunc
+ resourceType string
+ name string
+ vehicle types.Vehicle
+ updatedAt time.Time
+ hash utils.HashType
+ parser Parser[V]
+ interval time.Duration
+ onUpdate func(V)
+ watcher *fswatch.Watcher
+}
+
+func (f *Fetcher[V]) Name() string {
+ return f.name
+}
+
+func (f *Fetcher[V]) Vehicle() types.Vehicle {
+ return f.vehicle
+}
+
+func (f *Fetcher[V]) VehicleType() types.VehicleType {
+ return f.vehicle.Type()
+}
+
+func (f *Fetcher[V]) UpdatedAt() time.Time {
+ return f.updatedAt
+}
+
+func (f *Fetcher[V]) Initial() (V, error) {
+ var (
+ buf []byte
+ contents V
+ err error
+ )
+
+ if stat, fErr := os.Stat(f.vehicle.Path()); fErr == nil {
+ // local file exists, use it first
+ buf, err = os.ReadFile(f.vehicle.Path())
+ modTime := stat.ModTime()
+ contents, _, err = f.loadBuf(buf, utils.MakeHash(buf), false)
+ f.updatedAt = modTime // reset updatedAt to file's modTime
+
+ if err == nil {
+ err = f.startPullLoop(time.Since(modTime) > f.interval)
+ if err != nil {
+ return lo.Empty[V](), err
+ }
+ return contents, nil
+ }
+ }
+
+ // parse local file error, fallback to remote
+ contents, _, err = f.Update()
+
+ if err != nil {
+ return lo.Empty[V](), err
+ }
+ err = f.startPullLoop(false)
+ if err != nil {
+ return lo.Empty[V](), err
+ }
+ return contents, nil
+}
+
+func (f *Fetcher[V]) Update() (V, bool, error) {
+ buf, hash, err := f.vehicle.Read(f.ctx, f.hash)
+ if err != nil {
+ return lo.Empty[V](), false, err
+ }
+ return f.loadBuf(buf, hash, f.vehicle.Type() != types.File)
+}
+
+func (f *Fetcher[V]) SideUpdate(buf []byte) (V, bool, error) {
+ return f.loadBuf(buf, utils.MakeHash(buf), true)
+}
+
+func (f *Fetcher[V]) loadBuf(buf []byte, hash utils.HashType, updateFile bool) (V, bool, error) {
+ now := time.Now()
+ if f.hash.Equal(hash) {
+ if updateFile {
+ _ = os.Chtimes(f.vehicle.Path(), now, now)
+ }
+ f.updatedAt = now
+ return lo.Empty[V](), true, nil
+ }
+
+ if buf == nil { // f.hash has been changed between f.vehicle.Read but should not happen (cause by concurrent)
+ return lo.Empty[V](), true, nil
+ }
+
+ contents, err := f.parser(buf)
+ if err != nil {
+ return lo.Empty[V](), false, err
+ }
+
+ if updateFile {
+ if err = f.vehicle.Write(buf); err != nil {
+ return lo.Empty[V](), false, err
+ }
+ }
+ f.updatedAt = now
+ f.hash = hash
+
+ if f.onUpdate != nil {
+ f.onUpdate(contents)
+ }
+
+ return contents, false, nil
+}
+
+func (f *Fetcher[V]) Close() error {
+ f.ctxCancel()
+ if f.watcher != nil {
+ _ = f.watcher.Close()
+ }
+ return nil
+}
+
+func (f *Fetcher[V]) pullLoop(forceUpdate bool) {
+ initialInterval := f.interval - time.Since(f.updatedAt)
+ if initialInterval > f.interval {
+ initialInterval = f.interval
+ }
+
+ if forceUpdate {
+ log.Warnln("[Provider] %s not updated for a long time, force refresh", f.Name())
+ f.updateWithLog()
+ }
+
+ timer := time.NewTimer(initialInterval)
+ defer timer.Stop()
+ for {
+ select {
+ case <-timer.C:
+ timer.Reset(f.interval)
+ f.updateWithLog()
+ case <-f.ctx.Done():
+ return
+ }
+ }
+}
+
+func (f *Fetcher[V]) startPullLoop(forceUpdate bool) (err error) {
+ // pull contents automatically
+ if f.vehicle.Type() == types.File {
+ f.watcher, err = fswatch.NewWatcher(fswatch.Options{
+ Path: []string{f.vehicle.Path()},
+ Direct: true,
+ Callback: f.updateCallback,
+ })
+ if err != nil {
+ return err
+ }
+ err = f.watcher.Start()
+ if err != nil {
+ return err
+ }
+ } else if f.interval > 0 {
+ go f.pullLoop(forceUpdate)
+ }
+ return
+}
+
+func (f *Fetcher[V]) updateCallback(path string) {
+ f.updateWithLog()
+}
+
+func (f *Fetcher[V]) updateWithLog() {
+ _, same, err := f.Update()
+ if err != nil {
+ log.Errorln("[Provider] %s pull error: %s", f.Name(), err.Error())
+ return
+ }
+
+ if same {
+ log.Debugln("[Provider] %s's content doesn't change", f.Name())
+ return
+ }
+
+ log.Infoln("[Provider] %s's content update", f.Name())
+ return
+}
+
+func NewFetcher[V any](name string, interval time.Duration, vehicle types.Vehicle, parser Parser[V], onUpdate func(V)) *Fetcher[V] {
+ ctx, cancel := context.WithCancel(context.Background())
+ return &Fetcher[V]{
+ ctx: ctx,
+ ctxCancel: cancel,
+ name: name,
+ vehicle: vehicle,
+ parser: parser,
+ onUpdate: onUpdate,
+ interval: interval,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/resource/vehicle.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/resource/vehicle.go
new file mode 100644
index 0000000..a938232
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/resource/vehicle.go
@@ -0,0 +1,166 @@
+package resource
+
+import (
+ "context"
+ "errors"
+ "io"
+ "net/http"
+ "os"
+ "path/filepath"
+ "time"
+
+ "github.com/metacubex/mihomo/common/utils"
+ mihomoHttp "github.com/metacubex/mihomo/component/http"
+ "github.com/metacubex/mihomo/component/profile/cachefile"
+ types "github.com/metacubex/mihomo/constant/provider"
+)
+
+const (
+ DefaultHttpTimeout = time.Second * 20
+
+ fileMode os.FileMode = 0o666
+ dirMode os.FileMode = 0o755
+)
+
+var (
+ etag = false
+)
+
+func ETag() bool {
+ return etag
+}
+
+func SetETag(b bool) {
+ etag = b
+}
+
+func safeWrite(path string, buf []byte) error {
+ dir := filepath.Dir(path)
+
+ if _, err := os.Stat(dir); os.IsNotExist(err) {
+ if err := os.MkdirAll(dir, dirMode); err != nil {
+ return err
+ }
+ }
+
+ return os.WriteFile(path, buf, fileMode)
+}
+
+type FileVehicle struct {
+ path string
+}
+
+func (f *FileVehicle) Type() types.VehicleType {
+ return types.File
+}
+
+func (f *FileVehicle) Path() string {
+ return f.path
+}
+
+func (f *FileVehicle) Url() string {
+ return "file://" + f.path
+}
+
+func (f *FileVehicle) Read(ctx context.Context, oldHash utils.HashType) (buf []byte, hash utils.HashType, err error) {
+ buf, err = os.ReadFile(f.path)
+ if err != nil {
+ return
+ }
+ hash = utils.MakeHash(buf)
+ return
+}
+
+func (f *FileVehicle) Proxy() string {
+ return ""
+}
+
+func (f *FileVehicle) Write(buf []byte) error {
+ return safeWrite(f.path, buf)
+}
+
+func NewFileVehicle(path string) *FileVehicle {
+ return &FileVehicle{path: path}
+}
+
+type HTTPVehicle struct {
+ url string
+ path string
+ proxy string
+ header http.Header
+ timeout time.Duration
+}
+
+func (h *HTTPVehicle) Url() string {
+ return h.url
+}
+
+func (h *HTTPVehicle) Type() types.VehicleType {
+ return types.HTTP
+}
+
+func (h *HTTPVehicle) Path() string {
+ return h.path
+}
+
+func (h *HTTPVehicle) Proxy() string {
+ return h.proxy
+}
+
+func (h *HTTPVehicle) Write(buf []byte) error {
+ return safeWrite(h.path, buf)
+}
+
+func (h *HTTPVehicle) Read(ctx context.Context, oldHash utils.HashType) (buf []byte, hash utils.HashType, err error) {
+ ctx, cancel := context.WithTimeout(ctx, h.timeout)
+ defer cancel()
+ header := h.header
+ setIfNoneMatch := false
+ if etag && oldHash.IsValid() {
+ etagWithHash := cachefile.Cache().GetETagWithHash(h.url)
+ if oldHash.Equal(etagWithHash.Hash) && etagWithHash.ETag != "" {
+ if header == nil {
+ header = http.Header{}
+ } else {
+ header = header.Clone()
+ }
+ header.Set("If-None-Match", etagWithHash.ETag)
+ setIfNoneMatch = true
+ }
+ }
+ resp, err := mihomoHttp.HttpRequestWithProxy(ctx, h.url, http.MethodGet, header, nil, h.proxy)
+ if err != nil {
+ return
+ }
+ defer resp.Body.Close()
+ if resp.StatusCode < 200 || resp.StatusCode > 299 {
+ if setIfNoneMatch && resp.StatusCode == http.StatusNotModified {
+ return nil, oldHash, nil
+ }
+ err = errors.New(resp.Status)
+ return
+ }
+ buf, err = io.ReadAll(resp.Body)
+ if err != nil {
+ return
+ }
+ hash = utils.MakeHash(buf)
+ if etag {
+ cachefile.Cache().SetETagWithHash(h.url, cachefile.EtagWithHash{
+ Hash: hash,
+ ETag: resp.Header.Get("ETag"),
+ Time: time.Now(),
+ })
+ }
+ return
+}
+
+func NewHTTPVehicle(url string, path string, proxy string, header http.Header, timeout time.Duration) *HTTPVehicle {
+ return &HTTPVehicle{
+ url: url,
+ path: path,
+ proxy: proxy,
+ header: header,
+ timeout: timeout,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/slowdown/backoff.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/slowdown/backoff.go
new file mode 100644
index 0000000..a5a7251
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/slowdown/backoff.go
@@ -0,0 +1,101 @@
+// modify from https://github.com/jpillora/backoff/blob/v1.0.0/backoff.go
+
+package slowdown
+
+import (
+ "math"
+ "math/rand"
+ "sync/atomic"
+ "time"
+)
+
+// Backoff is a time.Duration counter, starting at Min. After every call to
+// the Duration method the current timing is multiplied by Factor, but it
+// never exceeds Max.
+//
+// Backoff is not generally concurrent-safe, but the ForAttempt method can
+// be used concurrently.
+type Backoff struct {
+ attempt atomic.Uint64
+ // Factor is the multiplying factor for each increment step
+ Factor float64
+ // Jitter eases contention by randomizing backoff steps
+ Jitter bool
+ // Min and Max are the minimum and maximum values of the counter
+ Min, Max time.Duration
+}
+
+// Duration returns the duration for the current attempt before incrementing
+// the attempt counter. See ForAttempt.
+func (b *Backoff) Duration() time.Duration {
+ d := b.ForAttempt(float64(b.attempt.Add(1) - 1))
+ return d
+}
+
+const maxInt64 = float64(math.MaxInt64 - 512)
+
+// ForAttempt returns the duration for a specific attempt. This is useful if
+// you have a large number of independent Backoffs, but don't want use
+// unnecessary memory storing the Backoff parameters per Backoff. The first
+// attempt should be 0.
+//
+// ForAttempt is concurrent-safe.
+func (b *Backoff) ForAttempt(attempt float64) time.Duration {
+ // Zero-values are nonsensical, so we use
+ // them to apply defaults
+ min := b.Min
+ if min <= 0 {
+ min = 100 * time.Millisecond
+ }
+ max := b.Max
+ if max <= 0 {
+ max = 10 * time.Second
+ }
+ if min >= max {
+ // short-circuit
+ return max
+ }
+ factor := b.Factor
+ if factor <= 0 {
+ factor = 2
+ }
+ //calculate this duration
+ minf := float64(min)
+ durf := minf * math.Pow(factor, attempt)
+ if b.Jitter {
+ durf = rand.Float64()*(durf-minf) + minf
+ }
+ //ensure float64 wont overflow int64
+ if durf > maxInt64 {
+ return max
+ }
+ dur := time.Duration(durf)
+ //keep within bounds
+ if dur < min {
+ return min
+ }
+ if dur > max {
+ return max
+ }
+ return dur
+}
+
+// Reset restarts the current attempt counter at zero.
+func (b *Backoff) Reset() {
+ b.attempt.Store(0)
+}
+
+// Attempt returns the current attempt counter value.
+func (b *Backoff) Attempt() float64 {
+ return float64(b.attempt.Load())
+}
+
+// Copy returns a backoff with equals constraints as the original
+func (b *Backoff) Copy() *Backoff {
+ return &Backoff{
+ Factor: b.Factor,
+ Jitter: b.Jitter,
+ Min: b.Min,
+ Max: b.Max,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/slowdown/slowdown.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/slowdown/slowdown.go
new file mode 100644
index 0000000..eff4915
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/slowdown/slowdown.go
@@ -0,0 +1,51 @@
+package slowdown
+
+import (
+ "context"
+ "sync/atomic"
+ "time"
+)
+
+type SlowDown struct {
+ errTimes atomic.Int64
+ backoff Backoff
+}
+
+func (s *SlowDown) Wait(ctx context.Context) (err error) {
+ timer := time.NewTimer(s.backoff.Duration())
+ defer timer.Stop()
+ select {
+ case <-timer.C:
+ case <-ctx.Done():
+ err = ctx.Err()
+ }
+ return
+}
+
+func New() *SlowDown {
+ return &SlowDown{
+ backoff: Backoff{
+ Min: 10 * time.Millisecond,
+ Max: 1 * time.Second,
+ Factor: 2,
+ Jitter: true,
+ },
+ }
+}
+
+func Do[T any](s *SlowDown, ctx context.Context, fn func() (T, error)) (t T, err error) {
+ if s.errTimes.Load() > 10 {
+ err = s.Wait(ctx)
+ if err != nil {
+ return
+ }
+ }
+ t, err = fn()
+ if err != nil {
+ s.errTimes.Add(1)
+ return
+ }
+ s.errTimes.Store(0)
+ s.backoff.Reset()
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/base_sniffer.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/base_sniffer.go
new file mode 100644
index 0000000..55f51c5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/base_sniffer.go
@@ -0,0 +1,48 @@
+package sniffer
+
+import (
+ "errors"
+
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/sniffer"
+)
+
+type SnifferConfig struct {
+ OverrideDest bool
+ Ports utils.IntRanges[uint16]
+}
+
+type BaseSniffer struct {
+ ports utils.IntRanges[uint16]
+ supportNetworkType constant.NetWork
+}
+
+// Protocol implements sniffer.Sniffer
+func (*BaseSniffer) Protocol() string {
+ return "unknown"
+}
+
+// SniffData implements sniffer.Sniffer
+func (*BaseSniffer) SniffData(bytes []byte) (string, error) {
+ return "", errors.New("TODO")
+}
+
+// SupportNetwork implements sniffer.Sniffer
+func (bs *BaseSniffer) SupportNetwork() constant.NetWork {
+ return bs.supportNetworkType
+}
+
+// SupportPort implements sniffer.Sniffer
+func (bs *BaseSniffer) SupportPort(port uint16) bool {
+ return bs.ports.Check(port)
+}
+
+func NewBaseSniffer(ports utils.IntRanges[uint16], networkType constant.NetWork) *BaseSniffer {
+ return &BaseSniffer{
+ ports: ports,
+ supportNetworkType: networkType,
+ }
+}
+
+var _ sniffer.Sniffer = (*BaseSniffer)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/dispatcher.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/dispatcher.go
new file mode 100644
index 0000000..4d13ddd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/dispatcher.go
@@ -0,0 +1,247 @@
+package sniffer
+
+import (
+ "errors"
+ "net"
+ "net/netip"
+ "time"
+
+ "github.com/metacubex/mihomo/common/lru"
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/sniffer"
+ "github.com/metacubex/mihomo/log"
+)
+
+var (
+ ErrorUnsupportedSniffer = errors.New("unsupported sniffer")
+ ErrorSniffFailed = errors.New("all sniffer failed")
+ ErrNoClue = errors.New("not enough information for making a decision")
+)
+
+type Dispatcher struct {
+ enable bool
+ sniffers map[sniffer.Sniffer]SnifferConfig
+ forceDomain []C.DomainMatcher
+ skipSrcAddress []C.IpMatcher
+ skipDstAddress []C.IpMatcher
+ skipDomain []C.DomainMatcher
+ skipList *lru.LruCache[netip.AddrPort, uint8]
+ forceDnsMapping bool
+ parsePureIp bool
+}
+
+func (sd *Dispatcher) shouldOverride(metadata *C.Metadata) bool {
+ for _, matcher := range sd.skipDstAddress {
+ if matcher.MatchIp(metadata.DstIP) {
+ return false
+ }
+ }
+ for _, matcher := range sd.skipSrcAddress {
+ if matcher.MatchIp(metadata.SrcIP) {
+ return false
+ }
+ }
+ if metadata.Host == "" && sd.parsePureIp {
+ return true
+ }
+ if metadata.DNSMode == C.DNSMapping && sd.forceDnsMapping {
+ return true
+ }
+ for _, matcher := range sd.forceDomain {
+ if matcher.MatchDomain(metadata.Host) {
+ return true
+ }
+ }
+ return false
+}
+
+func (sd *Dispatcher) UDPSniff(packet C.PacketAdapter) bool {
+ metadata := packet.Metadata()
+ if sd.shouldOverride(metadata) {
+ for sniffer, config := range sd.sniffers {
+ if sniffer.SupportNetwork() == C.UDP || sniffer.SupportNetwork() == C.ALLNet {
+ inWhitelist := sniffer.SupportPort(metadata.DstPort)
+ overrideDest := config.OverrideDest
+
+ if inWhitelist {
+ host, err := sniffer.SniffData(packet.Data())
+ if err != nil {
+ continue
+ }
+
+ sd.replaceDomain(metadata, host, overrideDest)
+ return true
+ }
+ }
+ }
+ }
+
+ return false
+}
+
+// TCPSniff returns true if the connection is sniffed to have a domain
+func (sd *Dispatcher) TCPSniff(conn *N.BufferedConn, metadata *C.Metadata) bool {
+ if sd.shouldOverride(metadata) {
+ inWhitelist := false
+ overrideDest := false
+ for sniffer, config := range sd.sniffers {
+ if sniffer.SupportNetwork() == C.TCP || sniffer.SupportNetwork() == C.ALLNet {
+ inWhitelist = sniffer.SupportPort(metadata.DstPort)
+ if inWhitelist {
+ overrideDest = config.OverrideDest
+ break
+ }
+ }
+ }
+
+ if !inWhitelist {
+ return false
+ }
+
+ dst := metadata.AddrPort()
+ if count, ok := sd.skipList.Get(dst); ok && count > 5 {
+ log.Debugln("[Sniffer] Skip sniffing[%s] due to multiple failures", dst)
+ return false
+ }
+
+ host, err := sd.sniffDomain(conn, metadata)
+ if err != nil {
+ sd.cacheSniffFailed(metadata)
+ log.Debugln("[Sniffer] All sniffing sniff failed with from [%s:%d] to [%s:%d]", metadata.SrcIP, metadata.SrcPort, metadata.String(), metadata.DstPort)
+ return false
+ }
+
+ for _, matcher := range sd.skipDomain {
+ if matcher.MatchDomain(host) {
+ log.Debugln("[Sniffer] Skip sni[%s]", host)
+ return false
+ }
+ }
+
+ sd.skipList.Delete(dst)
+
+ sd.replaceDomain(metadata, host, overrideDest)
+ return true
+ }
+ return false
+}
+
+func (sd *Dispatcher) replaceDomain(metadata *C.Metadata, host string, overrideDest bool) {
+ metadata.SniffHost = host
+ if overrideDest {
+ log.Debugln("[Sniffer] Sniff %s [%s]-->[%s] success, replace domain [%s]-->[%s]",
+ metadata.NetWork,
+ metadata.SourceDetail(),
+ metadata.RemoteAddress(),
+ metadata.Host, host)
+ metadata.Host = host
+ }
+ metadata.DNSMode = C.DNSNormal
+}
+
+func (sd *Dispatcher) Enable() bool {
+ return sd != nil && sd.enable
+}
+
+func (sd *Dispatcher) sniffDomain(conn *N.BufferedConn, metadata *C.Metadata) (string, error) {
+ for s := range sd.sniffers {
+ if s.SupportNetwork() == C.TCP {
+ _ = conn.SetReadDeadline(time.Now().Add(1 * time.Second))
+ _, err := conn.Peek(1)
+ _ = conn.SetReadDeadline(time.Time{})
+ if err != nil {
+ _, ok := err.(*net.OpError)
+ if ok {
+ sd.cacheSniffFailed(metadata)
+ log.Errorln("[Sniffer] [%s] may not have any sent data, Consider adding skip", metadata.DstIP.String())
+ _ = conn.Close()
+ }
+
+ return "", err
+ }
+
+ bufferedLen := conn.Buffered()
+ bytes, err := conn.Peek(bufferedLen)
+ if err != nil {
+ log.Debugln("[Sniffer] the data length not enough")
+ continue
+ }
+
+ host, err := s.SniffData(bytes)
+ if err != nil {
+ //log.Debugln("[Sniffer] [%s] Sniff data failed %s", s.Protocol(), metadata.DstIP)
+ continue
+ }
+
+ _, err = netip.ParseAddr(host)
+ if err == nil {
+ //log.Debugln("[Sniffer] [%s] Sniff data failed %s", s.Protocol(), metadata.DstIP)
+ continue
+ }
+
+ return host, nil
+ }
+ }
+
+ return "", ErrorSniffFailed
+}
+
+func (sd *Dispatcher) cacheSniffFailed(metadata *C.Metadata) {
+ dst := metadata.AddrPort()
+ sd.skipList.Compute(dst, func(oldValue uint8, loaded bool) (newValue uint8, delete bool) {
+ if oldValue <= 5 {
+ oldValue++
+ }
+ return oldValue, false
+ })
+}
+
+type Config struct {
+ Enable bool
+ Sniffers map[sniffer.Type]SnifferConfig
+ ForceDomain []C.DomainMatcher
+ SkipSrcAddress []C.IpMatcher
+ SkipDstAddress []C.IpMatcher
+ SkipDomain []C.DomainMatcher
+ ForceDnsMapping bool
+ ParsePureIp bool
+}
+
+func NewDispatcher(snifferConfig *Config) (*Dispatcher, error) {
+ dispatcher := Dispatcher{
+ enable: snifferConfig.Enable,
+ forceDomain: snifferConfig.ForceDomain,
+ skipSrcAddress: snifferConfig.SkipSrcAddress,
+ skipDstAddress: snifferConfig.SkipDstAddress,
+ skipDomain: snifferConfig.SkipDomain,
+ skipList: lru.New(lru.WithSize[netip.AddrPort, uint8](128), lru.WithAge[netip.AddrPort, uint8](600)),
+ forceDnsMapping: snifferConfig.ForceDnsMapping,
+ parsePureIp: snifferConfig.ParsePureIp,
+ sniffers: make(map[sniffer.Sniffer]SnifferConfig, len(snifferConfig.Sniffers)),
+ }
+
+ for snifferName, config := range snifferConfig.Sniffers {
+ s, err := NewSniffer(snifferName, config)
+ if err != nil {
+ log.Errorln("Sniffer name[%s] is error", snifferName)
+ return &Dispatcher{enable: false}, err
+ }
+ dispatcher.sniffers[s] = config
+ }
+
+ return &dispatcher, nil
+}
+
+func NewSniffer(name sniffer.Type, snifferConfig SnifferConfig) (sniffer.Sniffer, error) {
+ switch name {
+ case sniffer.TLS:
+ return NewTLSSniffer(snifferConfig)
+ case sniffer.HTTP:
+ return NewHTTPSniffer(snifferConfig)
+ case sniffer.QUIC:
+ return NewQuicSniffer(snifferConfig)
+ default:
+ return nil, ErrorUnsupportedSniffer
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/http_sniffer.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/http_sniffer.go
new file mode 100644
index 0000000..76bf155
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/http_sniffer.go
@@ -0,0 +1,136 @@
+package sniffer
+
+import (
+ "bytes"
+ "errors"
+ "fmt"
+ "net"
+ "strings"
+
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/sniffer"
+)
+
+var (
+ // refer to https://pkg.go.dev/net/http@master#pkg-constants
+ methods = [...]string{"get", "post", "head", "put", "delete", "options", "connect", "patch", "trace"}
+ errNotHTTPMethod = errors.New("not an HTTP method")
+)
+
+type version byte
+
+const (
+ HTTP1 version = iota
+ HTTP2
+)
+
+type HTTPSniffer struct {
+ *BaseSniffer
+ version version
+ host string
+}
+
+var _ sniffer.Sniffer = (*HTTPSniffer)(nil)
+
+func NewHTTPSniffer(snifferConfig SnifferConfig) (*HTTPSniffer, error) {
+ ports := snifferConfig.Ports
+ if len(ports) == 0 {
+ ports = utils.IntRanges[uint16]{utils.NewRange[uint16](80, 80)}
+ }
+ return &HTTPSniffer{
+ BaseSniffer: NewBaseSniffer(ports, C.TCP),
+ }, nil
+}
+
+func (http *HTTPSniffer) Protocol() string {
+ switch http.version {
+ case HTTP1:
+ return "http1"
+ case HTTP2:
+ return "http2"
+ default:
+ return "unknown"
+ }
+}
+
+func (http *HTTPSniffer) SupportNetwork() C.NetWork {
+ return C.TCP
+}
+
+func (http *HTTPSniffer) SniffData(bytes []byte) (string, error) {
+ domain, err := SniffHTTP(bytes)
+ if err == nil {
+ return *domain, nil
+ } else {
+ return "", err
+ }
+}
+
+func beginWithHTTPMethod(b []byte) error {
+ for _, m := range &methods {
+ if len(b) >= len(m) && strings.EqualFold(string(b[:len(m)]), m) {
+ return nil
+ }
+
+ if len(b) < len(m) {
+ return ErrNoClue
+ }
+ }
+ return errNotHTTPMethod
+}
+
+func SniffHTTP(b []byte) (*string, error) {
+ if err := beginWithHTTPMethod(b); err != nil {
+ return nil, err
+ }
+
+ _ = &HTTPSniffer{
+ version: HTTP1,
+ }
+
+ headers := bytes.Split(b, []byte{'\n'})
+ for i := 1; i < len(headers); i++ {
+ header := headers[i]
+ if len(header) == 0 {
+ break
+ }
+ parts := bytes.SplitN(header, []byte{':'}, 2)
+ if len(parts) != 2 {
+ continue
+ }
+ key := strings.ToLower(string(parts[0]))
+ if key == "host" {
+ rawHost := strings.ToLower(string(bytes.TrimSpace(parts[1])))
+ host, _, err := net.SplitHostPort(rawHost)
+ if err != nil {
+ if addrError, ok := err.(*net.AddrError); ok && strings.Contains(addrError.Err, "missing port") {
+ return parseHost(rawHost)
+ } else {
+ return nil, err
+ }
+ }
+
+ if net.ParseIP(host) != nil {
+ return nil, fmt.Errorf("host is ip")
+ }
+
+ return &host, nil
+ }
+ }
+ return nil, ErrNoClue
+}
+
+func parseHost(host string) (*string, error) {
+ if strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]") {
+ if net.ParseIP(host[1:len(host)-1]) != nil {
+ return nil, fmt.Errorf("host is ip")
+ }
+ }
+
+ if net.ParseIP(host) != nil {
+ return nil, fmt.Errorf("host is ip")
+ }
+
+ return &host, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/quic_sniffer.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/quic_sniffer.go
new file mode 100644
index 0000000..0e3994f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/quic_sniffer.go
@@ -0,0 +1,287 @@
+package sniffer
+
+import (
+ "crypto"
+ "crypto/aes"
+ "crypto/cipher"
+ "encoding/binary"
+ "errors"
+ "io"
+
+ "github.com/metacubex/mihomo/common/buf"
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/metacubex/quic-go/quicvarint"
+ "golang.org/x/crypto/hkdf"
+)
+
+// Modified from https://github.com/v2fly/v2ray-core/blob/master/common/protocol/quic/sniff.go
+
+const (
+ versionDraft29 uint32 = 0xff00001d
+ version1 uint32 = 0x1
+)
+
+var (
+ quicSaltOld = []byte{0xaf, 0xbf, 0xec, 0x28, 0x99, 0x93, 0xd2, 0x4c, 0x9e, 0x97, 0x86, 0xf1, 0x9c, 0x61, 0x11, 0xe0, 0x43, 0x90, 0xa8, 0x99}
+ quicSalt = []byte{0x38, 0x76, 0x2c, 0xf7, 0xf5, 0x59, 0x34, 0xb3, 0x4d, 0x17, 0x9a, 0xe6, 0xa4, 0xc8, 0x0c, 0xad, 0xcc, 0xbb, 0x7f, 0x0a}
+ errNotQuic = errors.New("not QUIC")
+ errNotQuicInitial = errors.New("not QUIC initial packet")
+)
+
+type QuicSniffer struct {
+ *BaseSniffer
+}
+
+func NewQuicSniffer(snifferConfig SnifferConfig) (*QuicSniffer, error) {
+ ports := snifferConfig.Ports
+ if len(ports) == 0 {
+ ports = utils.IntRanges[uint16]{utils.NewRange[uint16](443, 443)}
+ }
+ return &QuicSniffer{
+ BaseSniffer: NewBaseSniffer(ports, C.UDP),
+ }, nil
+}
+
+func (quic QuicSniffer) Protocol() string {
+ return "quic"
+}
+
+func (quic QuicSniffer) SupportNetwork() C.NetWork {
+ return C.UDP
+}
+
+func (quic QuicSniffer) SniffData(b []byte) (string, error) {
+ buffer := buf.As(b)
+ typeByte, err := buffer.ReadByte()
+ if err != nil {
+ return "", errNotQuic
+ }
+ isLongHeader := typeByte&0x80 > 0
+ if !isLongHeader || typeByte&0x40 == 0 {
+ return "", errNotQuicInitial
+ }
+
+ vb, err := buffer.ReadBytes(4)
+ if err != nil {
+ return "", errNotQuic
+ }
+
+ versionNumber := binary.BigEndian.Uint32(vb)
+
+ if versionNumber != 0 && typeByte&0x40 == 0 {
+ return "", errNotQuic
+ } else if versionNumber != versionDraft29 && versionNumber != version1 {
+ return "", errNotQuic
+ }
+
+ if (typeByte&0x30)>>4 != 0x0 {
+ return "", errNotQuicInitial
+ }
+
+ var destConnID []byte
+ if l, err := buffer.ReadByte(); err != nil {
+ return "", errNotQuic
+ } else if destConnID, err = buffer.ReadBytes(int(l)); err != nil {
+ return "", errNotQuic
+ }
+
+ if l, err := buffer.ReadByte(); err != nil {
+ return "", errNotQuic
+ } else if _, err := buffer.ReadBytes(int(l)); err != nil {
+ return "", errNotQuic
+ }
+
+ tokenLen, err := quicvarint.Read(buffer)
+ if err != nil || tokenLen > uint64(len(b)) {
+ return "", errNotQuic
+ }
+
+ if _, err = buffer.ReadBytes(int(tokenLen)); err != nil {
+ return "", errNotQuic
+ }
+
+ packetLen, err := quicvarint.Read(buffer)
+ if err != nil {
+ return "", errNotQuic
+ }
+
+ hdrLen := len(b) - buffer.Len()
+
+ var salt []byte
+ if versionNumber == version1 {
+ salt = quicSalt
+ } else {
+ salt = quicSaltOld
+ }
+ initialSecret := hkdf.Extract(crypto.SHA256.New, destConnID, salt)
+ secret := hkdfExpandLabel(crypto.SHA256, initialSecret, []byte{}, "client in", crypto.SHA256.Size())
+ hpKey := hkdfExpandLabel(crypto.SHA256, secret, []byte{}, "quic hp", 16)
+ block, err := aes.NewCipher(hpKey)
+ if err != nil {
+ return "", err
+ }
+
+ cache := buf.NewPacket()
+ defer cache.Release()
+
+ mask := cache.Extend(block.BlockSize())
+ block.Encrypt(mask, b[hdrLen+4:hdrLen+4+16])
+ firstByte := b[0]
+ // Encrypt/decrypt first byte.
+ if isLongHeader {
+ // Long header: 4 bits masked
+ // High 4 bits are not protected.
+ firstByte ^= mask[0] & 0x0f
+ } else {
+ // Short header: 5 bits masked
+ // High 3 bits are not protected.
+ firstByte ^= mask[0] & 0x1f
+ }
+ packetNumberLength := int(firstByte&0x3 + 1) // max = 4 (64-bit sequence number)
+ extHdrLen := hdrLen + packetNumberLength
+
+ // copy to avoid modify origin data
+ extHdr := cache.Extend(extHdrLen)
+ copy(extHdr, b)
+ extHdr[0] = firstByte
+
+ packetNumber := extHdr[hdrLen:extHdrLen]
+ // Encrypt/decrypt packet number.
+ for i := range packetNumber {
+ packetNumber[i] ^= mask[1+i]
+ }
+
+ if packetNumber[0] != 0 && packetNumber[0] != 1 {
+ return "", errNotQuicInitial
+ }
+
+ data := b[extHdrLen : int(packetLen)+hdrLen]
+
+ key := hkdfExpandLabel(crypto.SHA256, secret, []byte{}, "quic key", 16)
+ iv := hkdfExpandLabel(crypto.SHA256, secret, []byte{}, "quic iv", 12)
+ aesCipher, err := aes.NewCipher(key)
+ if err != nil {
+ return "", err
+ }
+ aead, err := cipher.NewGCM(aesCipher)
+ if err != nil {
+ return "", err
+ }
+ // We only decrypt once, so we do not need to XOR it back.
+ // https://github.com/quic-go/qtls-go1-20/blob/e132a0e6cb45e20ac0b705454849a11d09ba5a54/cipher_suites.go#L496
+ for i, b := range packetNumber {
+ iv[len(iv)-len(packetNumber)+i] ^= b
+ }
+ dst := cache.Extend(len(data))
+ decrypted, err := aead.Open(dst[:0], iv, data, extHdr)
+ if err != nil {
+ return "", err
+ }
+ buffer = buf.As(decrypted)
+
+ cryptoLen := uint(0)
+ cryptoData := cache.Extend(buffer.Len())
+ for i := 0; !buffer.IsEmpty(); i++ {
+ frameType := byte(0x0) // Default to PADDING frame
+ for frameType == 0x0 && !buffer.IsEmpty() {
+ frameType, _ = buffer.ReadByte()
+ }
+ switch frameType {
+ case 0x00: // PADDING frame
+ case 0x01: // PING frame
+ case 0x02, 0x03: // ACK frame
+ if _, err = quicvarint.Read(buffer); err != nil { // Field: Largest Acknowledged
+ return "", io.ErrUnexpectedEOF
+ }
+ if _, err = quicvarint.Read(buffer); err != nil { // Field: ACK Delay
+ return "", io.ErrUnexpectedEOF
+ }
+ ackRangeCount, err := quicvarint.Read(buffer) // Field: ACK Range Count
+ if err != nil {
+ return "", io.ErrUnexpectedEOF
+ }
+ if _, err = quicvarint.Read(buffer); err != nil { // Field: First ACK Range
+ return "", io.ErrUnexpectedEOF
+ }
+ for i := 0; i < int(ackRangeCount); i++ { // Field: ACK Range
+ if _, err = quicvarint.Read(buffer); err != nil { // Field: ACK Range -> Gap
+ return "", io.ErrUnexpectedEOF
+ }
+ if _, err = quicvarint.Read(buffer); err != nil { // Field: ACK Range -> ACK Range Length
+ return "", io.ErrUnexpectedEOF
+ }
+ }
+ if frameType == 0x03 {
+ if _, err = quicvarint.Read(buffer); err != nil { // Field: ECN Counts -> ECT0 Count
+ return "", io.ErrUnexpectedEOF
+ }
+ if _, err = quicvarint.Read(buffer); err != nil { // Field: ECN Counts -> ECT1 Count
+ return "", io.ErrUnexpectedEOF
+ }
+ if _, err = quicvarint.Read(buffer); err != nil { //nolint:misspell // Field: ECN Counts -> ECT-CE Count
+ return "", io.ErrUnexpectedEOF
+ }
+ }
+ case 0x06: // CRYPTO frame, we will use this frame
+ offset, err := quicvarint.Read(buffer) // Field: Offset
+ if err != nil {
+ return "", io.ErrUnexpectedEOF
+ }
+ length, err := quicvarint.Read(buffer) // Field: Length
+ if err != nil || length > uint64(buffer.Len()) {
+ return "", io.ErrUnexpectedEOF
+ }
+ if cryptoLen < uint(offset+length) {
+ cryptoLen = uint(offset + length)
+ }
+ if _, err := buffer.Read(cryptoData[offset : offset+length]); err != nil { // Field: Crypto Data
+ return "", io.ErrUnexpectedEOF
+ }
+ case 0x1c: // CONNECTION_CLOSE frame, only 0x1c is permitted in initial packet
+ if _, err = quicvarint.Read(buffer); err != nil { // Field: Error Code
+ return "", io.ErrUnexpectedEOF
+ }
+ if _, err = quicvarint.Read(buffer); err != nil { // Field: Frame Type
+ return "", io.ErrUnexpectedEOF
+ }
+ length, err := quicvarint.Read(buffer) // Field: Reason Phrase Length
+ if err != nil {
+ return "", io.ErrUnexpectedEOF
+ }
+ if _, err := buffer.ReadBytes(int(length)); err != nil { // Field: Reason Phrase
+ return "", io.ErrUnexpectedEOF
+ }
+ default:
+ // Only above frame types are permitted in initial packet.
+ // See https://www.rfc-editor.org/rfc/rfc9000.html#section-17.2.2-8
+ return "", errNotQuicInitial
+ }
+ }
+
+ domain, err := ReadClientHello(cryptoData[:cryptoLen])
+ if err != nil {
+ return "", err
+ }
+
+ return *domain, nil
+}
+
+func hkdfExpandLabel(hash crypto.Hash, secret, context []byte, label string, length int) []byte {
+ b := make([]byte, 3, 3+6+len(label)+1+len(context))
+ binary.BigEndian.PutUint16(b, uint16(length))
+ b[2] = uint8(6 + len(label))
+ b = append(b, []byte("tls13 ")...)
+ b = append(b, []byte(label)...)
+ b = b[:3+6+len(label)+1]
+ b[3+6+len(label)] = uint8(len(context))
+ b = append(b, context...)
+
+ out := make([]byte, length)
+ n, err := hkdf.Expand(hash.New, secret, b).Read(out)
+ if err != nil || n != length {
+ panic("quic: HKDF-Expand-Label invocation failed unexpectedly")
+ }
+ return out
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/sniff_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/sniff_test.go
new file mode 100644
index 0000000..18cc915
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/sniff_test.go
@@ -0,0 +1,192 @@
+package sniffer
+
+import (
+ "bytes"
+ "encoding/hex"
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+func TestQuicHeaders(t *testing.T) {
+ cases := []struct {
+ input string
+ domain string
+ }{
+ {
+ input: "cd0000000108f1fb7bcc78aa5e7203a8f86400421531fe825b19541876db6c55c38890cd73149d267a084afee6087304095417a3033df6a81bbb71d8512e7a3e16df1e277cae5df3182cb214b8fe982ba3fdffbaa9ffec474547d55945f0fddbeadfb0b5243890b2fa3da45169e2bd34ec04b2e29382f48d612b28432a559757504d158e9e505407a77dd34f4b60b8d3b555ee85aacd6648686802f4de25e7216b19e54c5f78e8a5963380c742d861306db4c16e4f7fc94957aa50b9578a0b61f1e406b2ad5f0cd3cd271c4d99476409797b0c3cb3efec256118912d4b7e4fd79d9cb9016b6e5eaa4f5e57b637b217755daf8968a4092bed0ed5413f5d04904b3a61e4064f9211b2629e5b52a89c7b19f37a713e41e27743ea6dfa736dfa1bb0a4b2bc8c8dc632c6ce963493a20c550e6fdb2475213665e9a85cfc394da9cec0cf41f0c8abed3fc83be5245b2b5aa5e825d29349f721d30774ef5bf965b540f3d8d98febe20956b1fc8fa047e10e7d2f921c9c6622389e02322e80621a1cf5264e245b7276966eb02932584e3f7038bd36aa908766ad3fb98344025dec18670d6db43a1c5daac00937fce7b7c7d61ff4e6efd01a2bdee0ee183108b926393df4f3d74bbcbb015f240e7e346b7d01c41111a401225ce3b095ab4623a5836169bf9599eeca79d1d2e9b2202b5960a09211e978058d6fc0484eff3e91ce4649a5e3ba15b906d334cf66e28d9ff575406e1ae1ac2febafd72870b6f5d58fc5fb949cb1f40feb7c1d9ce5e71b",
+ domain: "www.google.com",
+ },
+ {
+ input: "c3000000011266f50524e8d0fe88cbf51e3ad71a13198235000044c82dc5d943fb34cc6d5c5e433610dc7a44f5951935c2c1d14ac641b02472340a892c4492dbfe3f8262109108fc36d96bdc1e9e46b5f1f6ef6104add2aafbfd8e79246eb3b4637541aaed7d195571724e642ab4d31c909f1db86e7d8516117ce8716bd1e3acb664c499086b0f3bc7258595420e7bb969f934457d195e832ffff4ffddf11123eeadacc48190e356c8f0f6abc381deb7e285e3b0613a795b19bddb9f002ffdf6fd70f0ff2072302b33d2421aac6540bb9f0e85c7237af0dd56225b2264d769160febab952e64bd5155f23e58c6113891143f946591032b41816aed3ac54f521f60605f86791de24c5765b664c1348cc53d5d631b4bbefe1915f2b21fefafb47badeb72d8ba1fd5c3cfeb0ba9d0112396f170e94cd33952c4fa87997b870931bf1a300e8e127f530815ff087815b4f9d004cbcd17013ac143847572a1655a5b36e054e8b9951d747c2c6ff25d7b2edb13a2a6b8074062332f2191f6830cf435a4ed9db5d9c4eb43a143bf3edf0c48f6f9435dafad4afb743a5a33990379df953ecd388e848aff0ebba9ccc052b8303c0bd1fee7e7553af1894e81b7772818bb69249540ccb8cfb47b1517abaf71c81c3bd271f1a5f1b66465f850f377c9db682b8e543c3d0c10fcd2dee263630889b7d1d521d1d27e866ea4ab5f43790d6a7f76ceefd5783678ca92cc131fa42fc4a01e2a81cad734ddf17a53e1bda8e0a21afc9e8c1118c9459b13519f5b3c3d9692c92234f01129d47ae8ec70625170847472801190b46d36f73b868f55f5a18a3cb05af6d38610e0829e4fbf13ddcc202341702e43dcf33be76ff4afe327e5783287c137aad075752940b41e7d9f5146e36d908897c6d7a9fdc343fde2d9c9d6e6a6b237669bd3e6abe0a732861a679eadfa29a876c6a646953c9361830811b012b26b31c9e7158f8de9c9a108346ddee3dd3886da6258364c1281bff8e055f6384e3a23e198b5e6b726fa7f811b3338072019d4b5fd05891770d11e3ed6ab5f7ed33db1c6220c5aa8fa1909949ac55d5435b75982e17aa80940fa574f0aba4dc340129cad491fdf1f5e05c4e83e36ad29ff38f15e1c9436c792024442f57f07583d671dd05446c84ea20b471303f6ae4e5e13f244d671e0ebe94d3d5c17d3f3f378cdd51fa8a6d2c977c78a2397dd1e251cd979803d617d45f575e5d9db0a28b3c4c25fe2af24af5bddac09786b6d6d8aa19cfbd5409bdbfed7d518ef5c863f3ee757bd9d37cddc546cc57d2e52b6ae58789f297a300f1d76c3842603eae4b1224de31a939a68875c86e697aeebf7ebc65568f43fc681bacab830ac4a2164d324e90067125bad702192d01cb3cb3d2689ae681967e86fd7ac93a25cf2e905c88ca5ad7d11962f021754cf3f61224517bd3411d5b5a83955bcea79d702466d073a6eaadc1202b3693e555b051a5b19457023a01e7f943742bb7f5f8aeba8d4e363973aebdccfb12479619cfb93e833be702a307e796dc7431a48abd9b755b392c510b98cd20ef778e2ac88d6a04f23ba8a253d7eb7c13e0c88c3a21f7e23857c58704d139703a47e0965bf2dc8810dc36894ac1f3da73c155e271c106a718b2d184e4e5637c820fe909984642960edfc9e62ac50af5dd3feee6bc560ced7bda676d4e290c9c5916fad52180bbc83d3483e95c79bac15c209936f21042dc2b6253eefdac06e7f4745044eaa0acedabf1d1c8cd9402738",
+ domain: "cloudflare-dns.com",
+ },
+ }
+ q, err := NewQuicSniffer(SnifferConfig{})
+ assert.NoError(t, err)
+
+ for _, test := range cases {
+ pkt, err := hex.DecodeString(test.input)
+ assert.NoError(t, err)
+ oriPkt := bytes.Clone(pkt)
+ domain, err := q.SniffData(pkt)
+ assert.NoError(t, err)
+ assert.Equal(t, test.domain, domain)
+ assert.Equal(t, oriPkt, pkt) // ensure input data not changed
+ }
+}
+
+func TestTLSHeaders(t *testing.T) {
+ cases := []struct {
+ input []byte
+ domain string
+ err bool
+ }{
+ {
+ input: []byte{
+ 0x16, 0x03, 0x01, 0x00, 0xc8, 0x01, 0x00, 0x00,
+ 0xc4, 0x03, 0x03, 0x1a, 0xac, 0xb2, 0xa8, 0xfe,
+ 0xb4, 0x96, 0x04, 0x5b, 0xca, 0xf7, 0xc1, 0xf4,
+ 0x2e, 0x53, 0x24, 0x6e, 0x34, 0x0c, 0x58, 0x36,
+ 0x71, 0x97, 0x59, 0xe9, 0x41, 0x66, 0xe2, 0x43,
+ 0xa0, 0x13, 0xb6, 0x00, 0x00, 0x20, 0x1a, 0x1a,
+ 0xc0, 0x2b, 0xc0, 0x2f, 0xc0, 0x2c, 0xc0, 0x30,
+ 0xcc, 0xa9, 0xcc, 0xa8, 0xcc, 0x14, 0xcc, 0x13,
+ 0xc0, 0x13, 0xc0, 0x14, 0x00, 0x9c, 0x00, 0x9d,
+ 0x00, 0x2f, 0x00, 0x35, 0x00, 0x0a, 0x01, 0x00,
+ 0x00, 0x7b, 0xba, 0xba, 0x00, 0x00, 0xff, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00,
+ 0x14, 0x00, 0x00, 0x11, 0x63, 0x2e, 0x73, 0x2d,
+ 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66,
+ 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x00, 0x17, 0x00,
+ 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0d, 0x00,
+ 0x14, 0x00, 0x12, 0x04, 0x03, 0x08, 0x04, 0x04,
+ 0x01, 0x05, 0x03, 0x08, 0x05, 0x05, 0x01, 0x08,
+ 0x06, 0x06, 0x01, 0x02, 0x01, 0x00, 0x05, 0x00,
+ 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
+ 0x00, 0x00, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0c,
+ 0x02, 0x68, 0x32, 0x08, 0x68, 0x74, 0x74, 0x70,
+ 0x2f, 0x31, 0x2e, 0x31, 0x00, 0x0b, 0x00, 0x02,
+ 0x01, 0x00, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08,
+ 0xaa, 0xaa, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x18,
+ 0xaa, 0xaa, 0x00, 0x01, 0x00,
+ },
+ domain: "c.s-microsoft.com",
+ err: false,
+ },
+ {
+ input: []byte{
+ 0x16, 0x03, 0x01, 0x00, 0xee, 0x01, 0x00, 0x00,
+ 0xea, 0x03, 0x03, 0xe7, 0x91, 0x9e, 0x93, 0xca,
+ 0x78, 0x1b, 0x3c, 0xe0, 0x65, 0x25, 0x58, 0xb5,
+ 0x93, 0xe1, 0x0f, 0x85, 0xec, 0x9a, 0x66, 0x8e,
+ 0x61, 0x82, 0x88, 0xc8, 0xfc, 0xae, 0x1e, 0xca,
+ 0xd7, 0xa5, 0x63, 0x20, 0xbd, 0x1c, 0x00, 0x00,
+ 0x8b, 0xee, 0x09, 0xe3, 0x47, 0x6a, 0x0e, 0x74,
+ 0xb0, 0xbc, 0xa3, 0x02, 0xa7, 0x35, 0xe8, 0x85,
+ 0x70, 0x7c, 0x7a, 0xf0, 0x00, 0xdf, 0x4a, 0xea,
+ 0x87, 0x01, 0x14, 0x91, 0x00, 0x20, 0xea, 0xea,
+ 0xc0, 0x2b, 0xc0, 0x2f, 0xc0, 0x2c, 0xc0, 0x30,
+ 0xcc, 0xa9, 0xcc, 0xa8, 0xcc, 0x14, 0xcc, 0x13,
+ 0xc0, 0x13, 0xc0, 0x14, 0x00, 0x9c, 0x00, 0x9d,
+ 0x00, 0x2f, 0x00, 0x35, 0x00, 0x0a, 0x01, 0x00,
+ 0x00, 0x81, 0x9a, 0x9a, 0x00, 0x00, 0xff, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+ 0x16, 0x00, 0x00, 0x13, 0x77, 0x77, 0x77, 0x30,
+ 0x37, 0x2e, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x74,
+ 0x61, 0x6c, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x00,
+ 0x17, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
+ 0x0d, 0x00, 0x14, 0x00, 0x12, 0x04, 0x03, 0x08,
+ 0x04, 0x04, 0x01, 0x05, 0x03, 0x08, 0x05, 0x05,
+ 0x01, 0x08, 0x06, 0x06, 0x01, 0x02, 0x01, 0x00,
+ 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0e,
+ 0x00, 0x0c, 0x02, 0x68, 0x32, 0x08, 0x68, 0x74,
+ 0x74, 0x70, 0x2f, 0x31, 0x2e, 0x31, 0x75, 0x50,
+ 0x00, 0x00, 0x00, 0x0b, 0x00, 0x02, 0x01, 0x00,
+ 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x9a, 0x9a,
+ 0x00, 0x1d, 0x00, 0x17, 0x00, 0x18, 0x8a, 0x8a,
+ 0x00, 0x01, 0x00,
+ },
+ domain: "www07.clicktale.net",
+ err: false,
+ },
+ {
+ input: []byte{
+ 0x16, 0x03, 0x01, 0x00, 0xe6, 0x01, 0x00, 0x00, 0xe2, 0x03, 0x03, 0x81, 0x47, 0xc1,
+ 0x66, 0xd5, 0x1b, 0xfa, 0x4b, 0xb5, 0xe0, 0x2a, 0xe1, 0xa7, 0x87, 0x13, 0x1d, 0x11, 0xaa, 0xc6,
+ 0xce, 0xfc, 0x7f, 0xab, 0x94, 0xc8, 0x62, 0xad, 0xc8, 0xab, 0x0c, 0xdd, 0xcb, 0x20, 0x6f, 0x9d,
+ 0x07, 0xf1, 0x95, 0x3e, 0x99, 0xd8, 0xf3, 0x6d, 0x97, 0xee, 0x19, 0x0b, 0x06, 0x1b, 0xf4, 0x84,
+ 0x0b, 0xb6, 0x8f, 0xcc, 0xde, 0xe2, 0xd0, 0x2d, 0x6b, 0x0c, 0x1f, 0x52, 0x53, 0x13, 0x00, 0x08,
+ 0x13, 0x02, 0x13, 0x03, 0x13, 0x01, 0x00, 0xff, 0x01, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x0c,
+ 0x00, 0x0a, 0x00, 0x00, 0x07, 0x64, 0x6f, 0x67, 0x66, 0x69, 0x73, 0x68, 0x00, 0x0b, 0x00, 0x04,
+ 0x03, 0x00, 0x01, 0x02, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x1e,
+ 0x00, 0x19, 0x00, 0x18, 0x00, 0x23, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00,
+ 0x00, 0x0d, 0x00, 0x1e, 0x00, 0x1c, 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x08, 0x07, 0x08, 0x08,
+ 0x08, 0x09, 0x08, 0x0a, 0x08, 0x0b, 0x08, 0x04, 0x08, 0x05, 0x08, 0x06, 0x04, 0x01, 0x05, 0x01,
+ 0x06, 0x01, 0x00, 0x2b, 0x00, 0x07, 0x06, 0x7f, 0x1c, 0x7f, 0x1b, 0x7f, 0x1a, 0x00, 0x2d, 0x00,
+ 0x02, 0x01, 0x01, 0x00, 0x33, 0x00, 0x26, 0x00, 0x24, 0x00, 0x1d, 0x00, 0x20, 0x2f, 0x35, 0x0c,
+ 0xb6, 0x90, 0x0a, 0xb7, 0xd5, 0xc4, 0x1b, 0x2f, 0x60, 0xaa, 0x56, 0x7b, 0x3f, 0x71, 0xc8, 0x01,
+ 0x7e, 0x86, 0xd3, 0xb7, 0x0c, 0x29, 0x1a, 0x9e, 0x5b, 0x38, 0x3f, 0x01, 0x72,
+ },
+ domain: "dogfish",
+ err: false,
+ },
+ {
+ input: []byte{
+ 0x16, 0x03, 0x01, 0x01, 0x03, 0x01, 0x00, 0x00,
+ 0xff, 0x03, 0x03, 0x3d, 0x89, 0x52, 0x9e, 0xee,
+ 0xbe, 0x17, 0x63, 0x75, 0xef, 0x29, 0xbd, 0x14,
+ 0x6a, 0x49, 0xe0, 0x2c, 0x37, 0x57, 0x71, 0x62,
+ 0x82, 0x44, 0x94, 0x8f, 0x6e, 0x94, 0x08, 0x45,
+ 0x7f, 0xdb, 0xc1, 0x00, 0x00, 0x3e, 0xc0, 0x2c,
+ 0xc0, 0x30, 0x00, 0x9f, 0xcc, 0xa9, 0xcc, 0xa8,
+ 0xcc, 0xaa, 0xc0, 0x2b, 0xc0, 0x2f, 0x00, 0x9e,
+ 0xc0, 0x24, 0xc0, 0x28, 0x00, 0x6b, 0xc0, 0x23,
+ 0xc0, 0x27, 0x00, 0x67, 0xc0, 0x0a, 0xc0, 0x14,
+ 0x00, 0x39, 0xc0, 0x09, 0xc0, 0x13, 0x00, 0x33,
+ 0x00, 0x9d, 0x00, 0x9c, 0x13, 0x02, 0x13, 0x03,
+ 0x13, 0x01, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x35,
+ 0x00, 0x2f, 0x00, 0xff, 0x01, 0x00, 0x00, 0x98,
+ 0x00, 0x00, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00,
+ 0x0b, 0x31, 0x30, 0x2e, 0x34, 0x32, 0x2e, 0x30,
+ 0x2e, 0x32, 0x34, 0x33, 0x00, 0x0b, 0x00, 0x04,
+ 0x03, 0x00, 0x01, 0x02, 0x00, 0x0a, 0x00, 0x0a,
+ 0x00, 0x08, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x19,
+ 0x00, 0x18, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0d,
+ 0x00, 0x20, 0x00, 0x1e, 0x04, 0x03, 0x05, 0x03,
+ 0x06, 0x03, 0x08, 0x04, 0x08, 0x05, 0x08, 0x06,
+ 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x02, 0x03,
+ 0x02, 0x01, 0x02, 0x02, 0x04, 0x02, 0x05, 0x02,
+ 0x06, 0x02, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17,
+ 0x00, 0x00, 0x00, 0x2b, 0x00, 0x09, 0x08, 0x7f,
+ 0x14, 0x03, 0x03, 0x03, 0x02, 0x03, 0x01, 0x00,
+ 0x2d, 0x00, 0x03, 0x02, 0x01, 0x00, 0x00, 0x28,
+ 0x00, 0x26, 0x00, 0x24, 0x00, 0x1d, 0x00, 0x20,
+ 0x13, 0x7c, 0x6e, 0x97, 0xc4, 0xfd, 0x09, 0x2e,
+ 0x70, 0x2f, 0x73, 0x5a, 0x9b, 0x57, 0x4d, 0x5f,
+ 0x2b, 0x73, 0x2c, 0xa5, 0x4a, 0x98, 0x40, 0x3d,
+ 0x75, 0x6e, 0xb4, 0x76, 0xf9, 0x48, 0x8f, 0x36,
+ },
+ domain: "10.42.0.243",
+ err: false,
+ },
+ }
+
+ for _, test := range cases {
+ input := bytes.Clone(test.input)
+ domain, err := SniffTLS(test.input)
+ if test.err {
+ if err == nil {
+ t.Errorf("Exepct error but nil in test %v", test)
+ }
+ } else {
+ if err != nil {
+ t.Errorf("Expect no error but actually %s in test %v", err.Error(), test)
+ }
+ if *domain != test.domain {
+ t.Error("expect domain ", test.domain, " but got ", domain)
+ }
+ }
+ assert.Equal(t, input, test.input)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/tls_sniffer.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/tls_sniffer.go
new file mode 100644
index 0000000..974df79
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/sniffer/tls_sniffer.go
@@ -0,0 +1,171 @@
+package sniffer
+
+import (
+ "encoding/binary"
+ "errors"
+ "strings"
+
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/sniffer"
+)
+
+var (
+ errNotTLS = errors.New("not TLS header")
+ errNotClientHello = errors.New("not client hello")
+)
+
+var _ sniffer.Sniffer = (*TLSSniffer)(nil)
+
+type TLSSniffer struct {
+ *BaseSniffer
+}
+
+func NewTLSSniffer(snifferConfig SnifferConfig) (*TLSSniffer, error) {
+ ports := snifferConfig.Ports
+ if len(ports) == 0 {
+ ports = utils.IntRanges[uint16]{utils.NewRange[uint16](443, 443)}
+ }
+ return &TLSSniffer{
+ BaseSniffer: NewBaseSniffer(ports, C.TCP),
+ }, nil
+}
+
+func (tls *TLSSniffer) Protocol() string {
+ return "tls"
+}
+
+func (tls *TLSSniffer) SupportNetwork() C.NetWork {
+ return C.TCP
+}
+
+func (tls *TLSSniffer) SniffData(bytes []byte) (string, error) {
+ domain, err := SniffTLS(bytes)
+ if err == nil {
+ return *domain, nil
+ } else {
+ return "", err
+ }
+}
+
+func IsValidTLSVersion(major, minor byte) bool {
+ return major == 3
+}
+
+// ReadClientHello returns server name (if any) from TLS client hello message.
+// https://github.com/golang/go/blob/master/src/crypto/tls/handshake_messages.go#L300
+func ReadClientHello(data []byte) (*string, error) {
+ if len(data) < 42 {
+ return nil, ErrNoClue
+ }
+ sessionIDLen := int(data[38])
+ if sessionIDLen > 32 || len(data) < 39+sessionIDLen {
+ return nil, ErrNoClue
+ }
+ data = data[39+sessionIDLen:]
+ if len(data) < 2 {
+ return nil, ErrNoClue
+ }
+ // cipherSuiteLen is the number of bytes of cipher suite numbers. Since
+ // they are uint16s, the number must be even.
+ cipherSuiteLen := int(data[0])<<8 | int(data[1])
+ if cipherSuiteLen%2 == 1 || len(data) < 2+cipherSuiteLen {
+ return nil, errNotClientHello
+ }
+ data = data[2+cipherSuiteLen:]
+ if len(data) < 1 {
+ return nil, ErrNoClue
+ }
+ compressionMethodsLen := int(data[0])
+ if len(data) < 1+compressionMethodsLen {
+ return nil, ErrNoClue
+ }
+ data = data[1+compressionMethodsLen:]
+
+ if len(data) == 0 {
+ return nil, errNotClientHello
+ }
+ if len(data) < 2 {
+ return nil, errNotClientHello
+ }
+
+ extensionsLength := int(data[0])<<8 | int(data[1])
+ data = data[2:]
+ if extensionsLength != len(data) {
+ return nil, errNotClientHello
+ }
+
+ for len(data) != 0 {
+ if len(data) < 4 {
+ return nil, errNotClientHello
+ }
+ extension := uint16(data[0])<<8 | uint16(data[1])
+ length := int(data[2])<<8 | int(data[3])
+ data = data[4:]
+ if len(data) < length {
+ return nil, errNotClientHello
+ }
+
+ if extension == 0x00 { /* extensionServerName */
+ d := data[:length]
+ if len(d) < 2 {
+ return nil, errNotClientHello
+ }
+ namesLen := int(d[0])<<8 | int(d[1])
+ d = d[2:]
+ if len(d) != namesLen {
+ return nil, errNotClientHello
+ }
+ for len(d) > 0 {
+ if len(d) < 3 {
+ return nil, errNotClientHello
+ }
+ nameType := d[0]
+ nameLen := int(d[1])<<8 | int(d[2])
+ d = d[3:]
+ if len(d) < nameLen {
+ return nil, errNotClientHello
+ }
+ if nameType == 0 {
+ serverName := string(d[:nameLen])
+ // An SNI value may not include a
+ // trailing dot. See
+ // https://tools.ietf.org/html/rfc6066#section-3.
+ if strings.HasSuffix(serverName, ".") {
+ return nil, errNotClientHello
+ }
+
+ return &serverName, nil
+ }
+
+ d = d[nameLen:]
+ }
+ }
+ data = data[length:]
+ }
+
+ return nil, errNotTLS
+}
+
+func SniffTLS(b []byte) (*string, error) {
+ if len(b) < 5 {
+ return nil, ErrNoClue
+ }
+
+ if b[0] != 0x16 /* TLS Handshake */ {
+ return nil, errNotTLS
+ }
+ if !IsValidTLSVersion(b[1], b[2]) {
+ return nil, errNotTLS
+ }
+ headerLen := int(binary.BigEndian.Uint16(b[3:5]))
+ if 5+headerLen > len(b) {
+ return nil, ErrNoClue
+ }
+
+ domain, err := ReadClientHello(b[5 : 5+headerLen])
+ if err == nil {
+ return domain, nil
+ }
+ return nil, err
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/tls/reality.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/tls/reality.go
new file mode 100644
index 0000000..ff02825
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/tls/reality.go
@@ -0,0 +1,184 @@
+package tls
+
+import (
+ "bytes"
+ "context"
+ "crypto/aes"
+ "crypto/cipher"
+ "crypto/ecdh"
+ "crypto/ed25519"
+ "crypto/hmac"
+ "crypto/sha256"
+ "crypto/sha512"
+ "crypto/tls"
+ "crypto/x509"
+ "encoding/binary"
+ "errors"
+ "net"
+ "net/http"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/ntp"
+
+ "github.com/metacubex/randv2"
+ utls "github.com/metacubex/utls"
+ "golang.org/x/crypto/chacha20poly1305"
+ "golang.org/x/crypto/hkdf"
+ "golang.org/x/net/http2"
+)
+
+const RealityMaxShortIDLen = 8
+
+type RealityConfig struct {
+ PublicKey *ecdh.PublicKey
+ ShortID [RealityMaxShortIDLen]byte
+}
+
+func GetRealityConn(ctx context.Context, conn net.Conn, ClientFingerprint string, tlsConfig *tls.Config, realityConfig *RealityConfig) (net.Conn, error) {
+ retry := 0
+ for fingerprint, exists := GetFingerprint(ClientFingerprint); exists; retry++ {
+ verifier := &realityVerifier{
+ serverName: tlsConfig.ServerName,
+ }
+ uConfig := &utls.Config{
+ ServerName: tlsConfig.ServerName,
+ InsecureSkipVerify: true,
+ SessionTicketsDisabled: true,
+ VerifyPeerCertificate: verifier.VerifyPeerCertificate,
+ }
+ clientID := utls.ClientHelloID{
+ Client: fingerprint.Client,
+ Version: fingerprint.Version,
+ Seed: fingerprint.Seed,
+ }
+ uConn := utls.UClient(conn, uConfig, clientID)
+ verifier.UConn = uConn
+ err := uConn.BuildHandshakeState()
+ if err != nil {
+ return nil, err
+ }
+
+ hello := uConn.HandshakeState.Hello
+ rawSessionID := hello.Raw[39 : 39+32] // the location of session ID
+ for i := range rawSessionID { // https://github.com/golang/go/issues/5373
+ rawSessionID[i] = 0
+ }
+
+ binary.BigEndian.PutUint64(hello.SessionId, uint64(ntp.Now().Unix()))
+
+ copy(hello.SessionId[8:], realityConfig.ShortID[:])
+ hello.SessionId[0] = 1
+ hello.SessionId[1] = 8
+ hello.SessionId[2] = 2
+
+ //log.Debugln("REALITY hello.sessionId[:16]: %v", hello.SessionId[:16])
+
+ ecdheKey := uConn.HandshakeState.State13.EcdheKey
+ if ecdheKey == nil {
+ // WTF???
+ if retry > 2 {
+ return nil, errors.New("nil ecdheKey")
+ }
+ continue // retry
+ }
+ authKey, err := ecdheKey.ECDH(realityConfig.PublicKey)
+ if err != nil {
+ return nil, err
+ }
+ if authKey == nil {
+ return nil, errors.New("nil auth_key")
+ }
+ verifier.authKey = authKey
+ _, err = hkdf.New(sha256.New, authKey, hello.Random[:20], []byte("REALITY")).Read(authKey)
+ if err != nil {
+ return nil, err
+ }
+ var aeadCipher cipher.AEAD
+ if utls.AesgcmPreferred(hello.CipherSuites) {
+ aesBlock, _ := aes.NewCipher(authKey)
+ aeadCipher, _ = cipher.NewGCM(aesBlock)
+ } else {
+ aeadCipher, _ = chacha20poly1305.New(authKey)
+ }
+ aeadCipher.Seal(hello.SessionId[:0], hello.Random[20:], hello.SessionId[:16], hello.Raw)
+ copy(hello.Raw[39:], hello.SessionId)
+ //log.Debugln("REALITY hello.sessionId: %v", hello.SessionId)
+ //log.Debugln("REALITY uConn.AuthKey: %v", authKey)
+
+ err = uConn.HandshakeContext(ctx)
+ if err != nil {
+ return nil, err
+ }
+
+ log.Debugln("REALITY Authentication: %v, AEAD: %T", verifier.verified, aeadCipher)
+
+ if !verifier.verified {
+ go realityClientFallback(uConn, uConfig.ServerName, clientID)
+ return nil, errors.New("REALITY authentication failed")
+ }
+
+ return uConn, nil
+ }
+ return nil, errors.New("unknown uTLS fingerprint")
+}
+
+func realityClientFallback(uConn net.Conn, serverName string, fingerprint utls.ClientHelloID) {
+ defer uConn.Close()
+ client := http.Client{
+ Transport: &http2.Transport{
+ DialTLSContext: func(ctx context.Context, network, addr string, config *tls.Config) (net.Conn, error) {
+ return uConn, nil
+ },
+ },
+ }
+ request, err := http.NewRequest("GET", "https://"+serverName, nil)
+ if err != nil {
+ return
+ }
+ request.Header.Set("User-Agent", fingerprint.Client)
+ request.AddCookie(&http.Cookie{Name: "padding", Value: strings.Repeat("0", randv2.IntN(32)+30)})
+ response, err := client.Do(request)
+ if err != nil {
+ return
+ }
+ //_, _ = io.Copy(io.Discard, response.Body)
+ time.Sleep(time.Duration(5+randv2.IntN(10)) * time.Second)
+ response.Body.Close()
+ client.CloseIdleConnections()
+}
+
+type realityVerifier struct {
+ *utls.UConn
+ serverName string
+ authKey []byte
+ verified bool
+}
+
+//var pOffset = utils.MustOK(reflect.TypeOf((*utls.Conn)(nil)).Elem().FieldByName("peerCertificates")).Offset
+
+func (c *realityVerifier) VerifyPeerCertificate(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error {
+ //p, _ := reflect.TypeOf(c.Conn).Elem().FieldByName("peerCertificates")
+ //certs := *(*[]*x509.Certificate)(unsafe.Add(unsafe.Pointer(c.Conn), pOffset))
+ certs := c.Conn.PeerCertificates()
+ if pub, ok := certs[0].PublicKey.(ed25519.PublicKey); ok {
+ h := hmac.New(sha512.New, c.authKey)
+ h.Write(pub)
+ if bytes.Equal(h.Sum(nil), certs[0].Signature) {
+ c.verified = true
+ return nil
+ }
+ }
+ opts := x509.VerifyOptions{
+ DNSName: c.serverName,
+ Intermediates: x509.NewCertPool(),
+ }
+ for _, cert := range certs[1:] {
+ opts.Intermediates.AddCert(cert)
+ }
+ if _, err := certs[0].Verify(opts); err != nil {
+ return err
+ }
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/tls/utls.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/tls/utls.go
new file mode 100644
index 0000000..31733e5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/tls/utls.go
@@ -0,0 +1,144 @@
+package tls
+
+import (
+ "crypto/tls"
+ "net"
+
+ "github.com/metacubex/mihomo/log"
+
+ utls "github.com/metacubex/utls"
+ "github.com/mroth/weightedrand/v2"
+)
+
+type UConn struct {
+ *utls.UConn
+}
+
+type UClientHelloID struct {
+ *utls.ClientHelloID
+}
+
+var initRandomFingerprint UClientHelloID
+var initUtlsClient string
+
+func UClient(c net.Conn, config *tls.Config, fingerprint UClientHelloID) *UConn {
+ utlsConn := utls.UClient(c, copyConfig(config), utls.ClientHelloID{
+ Client: fingerprint.Client,
+ Version: fingerprint.Version,
+ Seed: fingerprint.Seed,
+ })
+ return &UConn{UConn: utlsConn}
+}
+
+func GetFingerprint(ClientFingerprint string) (UClientHelloID, bool) {
+ if ClientFingerprint == "none" {
+ return UClientHelloID{}, false
+ }
+
+ if initRandomFingerprint.ClientHelloID == nil {
+ initRandomFingerprint, _ = RollFingerprint()
+ }
+
+ if ClientFingerprint == "random" {
+ log.Debugln("use initial random HelloID:%s", initRandomFingerprint.Client)
+ return initRandomFingerprint, true
+ }
+
+ fingerprint, ok := Fingerprints[ClientFingerprint]
+ if ok {
+ log.Debugln("use specified fingerprint:%s", fingerprint.Client)
+ return fingerprint, ok
+ } else {
+ log.Warnln("wrong ClientFingerprint:%s", ClientFingerprint)
+ return UClientHelloID{}, false
+ }
+}
+
+func RollFingerprint() (UClientHelloID, bool) {
+ chooser, _ := weightedrand.NewChooser(
+ weightedrand.NewChoice("chrome", 6),
+ weightedrand.NewChoice("safari", 3),
+ weightedrand.NewChoice("ios", 2),
+ weightedrand.NewChoice("firefox", 1),
+ )
+ initClient := chooser.Pick()
+ log.Debugln("initial random HelloID:%s", initClient)
+ fingerprint, ok := Fingerprints[initClient]
+ return fingerprint, ok
+}
+
+var Fingerprints = map[string]UClientHelloID{
+ "chrome": {&utls.HelloChrome_Auto},
+ "chrome_psk": {&utls.HelloChrome_100_PSK},
+ "chrome_psk_shuffle": {&utls.HelloChrome_106_Shuffle},
+ "chrome_padding_psk_shuffle": {&utls.HelloChrome_114_Padding_PSK_Shuf},
+ "chrome_pq": {&utls.HelloChrome_115_PQ},
+ "chrome_pq_psk": {&utls.HelloChrome_115_PQ_PSK},
+ "firefox": {&utls.HelloFirefox_Auto},
+ "safari": {&utls.HelloSafari_Auto},
+ "ios": {&utls.HelloIOS_Auto},
+ "android": {&utls.HelloAndroid_11_OkHttp},
+ "edge": {&utls.HelloEdge_Auto},
+ "360": {&utls.Hello360_Auto},
+ "qq": {&utls.HelloQQ_Auto},
+ "random": {nil},
+ "randomized": {nil},
+}
+
+func init() {
+ weights := utls.DefaultWeights
+ weights.TLSVersMax_Set_VersionTLS13 = 1
+ weights.FirstKeyShare_Set_CurveP256 = 0
+ randomized := utls.HelloRandomized
+ randomized.Seed, _ = utls.NewPRNGSeed()
+ randomized.Weights = &weights
+ Fingerprints["randomized"] = UClientHelloID{&randomized}
+}
+
+func copyConfig(c *tls.Config) *utls.Config {
+ return &utls.Config{
+ RootCAs: c.RootCAs,
+ ServerName: c.ServerName,
+ InsecureSkipVerify: c.InsecureSkipVerify,
+ VerifyPeerCertificate: c.VerifyPeerCertificate,
+ }
+}
+
+// BuildWebsocketHandshakeState it will only send http/1.1 in its ALPN.
+// Copy from https://github.com/XTLS/Xray-core/blob/main/transport/internet/tls/tls.go
+func (c *UConn) BuildWebsocketHandshakeState() error {
+ // Build the handshake state. This will apply every variable of the TLS of the
+ // fingerprint in the UConn
+ if err := c.BuildHandshakeState(); err != nil {
+ return err
+ }
+ // Iterate over extensions and check for utls.ALPNExtension
+ hasALPNExtension := false
+ for _, extension := range c.Extensions {
+ if alpn, ok := extension.(*utls.ALPNExtension); ok {
+ hasALPNExtension = true
+ alpn.AlpnProtocols = []string{"http/1.1"}
+ break
+ }
+ }
+ if !hasALPNExtension { // Append extension if doesn't exists
+ c.Extensions = append(c.Extensions, &utls.ALPNExtension{AlpnProtocols: []string{"http/1.1"}})
+ }
+ // Rebuild the client hello
+ if err := c.BuildHandshakeState(); err != nil {
+ return err
+ }
+ return nil
+}
+
+func SetGlobalUtlsClient(Client string) {
+ initUtlsClient = Client
+}
+
+func HaveGlobalFingerprint() bool {
+ return len(initUtlsClient) != 0 && initUtlsClient != "none"
+}
+
+func GetGlobalFingerprint() string {
+ return initUtlsClient
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain.go
new file mode 100644
index 0000000..574a59c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain.go
@@ -0,0 +1,180 @@
+package trie
+
+import (
+ "errors"
+ "strings"
+ "unicode"
+ "unicode/utf8"
+)
+
+const (
+ wildcard = "*"
+ dotWildcard = ""
+ complexWildcard = "+"
+ domainStep = "."
+)
+
+// ErrInvalidDomain means insert domain is invalid
+var ErrInvalidDomain = errors.New("invalid domain")
+
+// DomainTrie contains the main logic for adding and searching nodes for domain segments.
+// support wildcard domain (e.g *.google.com)
+type DomainTrie[T any] struct {
+ root *Node[T]
+}
+
+func ValidAndSplitDomain(domain string) ([]string, bool) {
+ if domain != "" && domain[len(domain)-1] == '.' {
+ return nil, false
+ }
+ if domain != "" {
+ if r, _ := utf8.DecodeRuneInString(domain); unicode.IsSpace(r) {
+ return nil, false
+ }
+ if r, _ := utf8.DecodeLastRuneInString(domain); unicode.IsSpace(r) {
+ return nil, false
+ }
+ }
+ domain = strings.ToLower(domain)
+ parts := strings.Split(domain, domainStep)
+ if len(parts) == 1 {
+ if parts[0] == "" {
+ return nil, false
+ }
+
+ return parts, true
+ }
+
+ for _, part := range parts[1:] {
+ if part == "" {
+ return nil, false
+ }
+ }
+
+ return parts, true
+}
+
+// Insert adds a node to the trie.
+// Support
+// 1. www.example.com
+// 2. *.example.com
+// 3. subdomain.*.example.com
+// 4. .example.com
+// 5. +.example.com
+func (t *DomainTrie[T]) Insert(domain string, data T) error {
+ parts, valid := ValidAndSplitDomain(domain)
+ if !valid {
+ return ErrInvalidDomain
+ }
+
+ if parts[0] == complexWildcard {
+ t.insert(parts[1:], data)
+ parts[0] = dotWildcard
+ t.insert(parts, data)
+ } else {
+ t.insert(parts, data)
+ }
+
+ return nil
+}
+
+func (t *DomainTrie[T]) insert(parts []string, data T) {
+ node := t.root
+ // reverse storage domain part to save space
+ for i := len(parts) - 1; i >= 0; i-- {
+ part := parts[i]
+ node = node.getOrNewChild(part)
+ }
+
+ node.setData(data)
+}
+
+// Search is the most important part of the Trie.
+// Priority as:
+// 1. static part
+// 2. wildcard domain
+// 2. dot wildcard domain
+func (t *DomainTrie[T]) Search(domain string) *Node[T] {
+ parts, valid := ValidAndSplitDomain(domain)
+ if !valid || parts[0] == "" {
+ return nil
+ }
+
+ n := t.search(t.root, parts)
+
+ if n.isEmpty() {
+ return nil
+ }
+
+ return n
+}
+
+func (t *DomainTrie[T]) search(node *Node[T], parts []string) *Node[T] {
+ if len(parts) == 0 {
+ return node
+ }
+
+ if c := node.getChild(parts[len(parts)-1]); c != nil {
+ if n := t.search(c, parts[:len(parts)-1]); !n.isEmpty() {
+ return n
+ }
+ }
+
+ if c := node.getChild(wildcard); c != nil {
+ if n := t.search(c, parts[:len(parts)-1]); !n.isEmpty() {
+ return n
+ }
+ }
+
+ return node.getChild(dotWildcard)
+}
+
+func (t *DomainTrie[T]) Optimize() {
+ t.root.optimize()
+}
+
+func (t *DomainTrie[T]) Foreach(fn func(domain string, data T) bool) {
+ for key, data := range t.root.getChildren() {
+ recursion([]string{key}, data, fn)
+ if !data.isEmpty() {
+ if !fn(joinDomain([]string{key}), data.data) {
+ return
+ }
+ }
+ }
+}
+
+func (t *DomainTrie[T]) IsEmpty() bool {
+ if t == nil || t.root == nil {
+ return true
+ }
+ return len(t.root.getChildren()) == 0
+}
+
+func recursion[T any](items []string, node *Node[T], fn func(domain string, data T) bool) bool {
+ for key, data := range node.getChildren() {
+ newItems := append([]string{key}, items...)
+ if !data.isEmpty() {
+ domain := joinDomain(newItems)
+ if domain[0] == domainStepByte {
+ domain = complexWildcard + domain
+ }
+ if !fn(domain, data.Data()) {
+ return false
+ }
+ }
+ if !recursion(newItems, data, fn) {
+ return false
+ }
+ }
+ return true
+}
+
+func joinDomain(items []string) string {
+ return strings.Join(items, domainStep)
+}
+
+// New returns a new, empty Trie.
+func New[T any]() *DomainTrie[T] {
+ return &DomainTrie[T]{root: newNode[T]()}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_set.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_set.go
new file mode 100644
index 0000000..3fd8041
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_set.go
@@ -0,0 +1,216 @@
+package trie
+
+// Package succinct provides several succinct data types.
+// Modify from https://github.com/openacid/succinct/blob/d4684c35d123f7528b14e03c24327231723db704/sskv.go
+
+import (
+ "sort"
+ "strings"
+
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/openacid/low/bitmap"
+)
+
+const (
+ complexWildcardByte = byte('+')
+ wildcardByte = byte('*')
+ domainStepByte = byte('.')
+)
+
+type DomainSet struct {
+ leaves, labelBitmap []uint64
+ labels []byte
+ ranks, selects []int32
+}
+
+type qElt struct{ s, e, col int }
+
+// NewDomainSet creates a new *DomainSet struct, from a DomainTrie.
+func (t *DomainTrie[T]) NewDomainSet() *DomainSet {
+ reserveDomains := make([]string, 0)
+ t.Foreach(func(domain string, data T) bool {
+ reserveDomains = append(reserveDomains, utils.Reverse(domain))
+ return true
+ })
+ // ensure that the same prefix is continuous
+ // and according to the ascending sequence of length
+ sort.Strings(reserveDomains)
+ keys := reserveDomains
+ if len(keys) == 0 {
+ return nil
+ }
+ ss := &DomainSet{}
+ lIdx := 0
+
+ queue := []qElt{{0, len(keys), 0}}
+ for i := 0; i < len(queue); i++ {
+ elt := queue[i]
+ if elt.col == len(keys[elt.s]) {
+ elt.s++
+ // a leaf node
+ setBit(&ss.leaves, i, 1)
+ }
+
+ for j := elt.s; j < elt.e; {
+
+ frm := j
+
+ for ; j < elt.e && keys[j][elt.col] == keys[frm][elt.col]; j++ {
+ }
+ queue = append(queue, qElt{frm, j, elt.col + 1})
+ ss.labels = append(ss.labels, keys[frm][elt.col])
+ setBit(&ss.labelBitmap, lIdx, 0)
+ lIdx++
+ }
+ setBit(&ss.labelBitmap, lIdx, 1)
+ lIdx++
+ }
+
+ ss.init()
+ return ss
+}
+
+// Has query for a key and return whether it presents in the DomainSet.
+func (ss *DomainSet) Has(key string) bool {
+ if ss == nil {
+ return false
+ }
+ key = utils.Reverse(key)
+ key = strings.ToLower(key)
+ // no more labels in this node
+ // skip character matching
+ // go to next level
+ nodeId, bmIdx := 0, 0
+ type wildcardCursor struct {
+ bmIdx, index int
+ }
+ stack := make([]wildcardCursor, 0)
+ for i := 0; i < len(key); i++ {
+ RESTART:
+ c := key[i]
+ for ; ; bmIdx++ {
+ if getBit(ss.labelBitmap, bmIdx) != 0 {
+ if len(stack) > 0 {
+ cursor := stack[len(stack)-1]
+ stack = stack[0 : len(stack)-1]
+ // back wildcard and find next node
+ nextNodeId := countZeros(ss.labelBitmap, ss.ranks, cursor.bmIdx+1)
+ nextBmIdx := selectIthOne(ss.labelBitmap, ss.ranks, ss.selects, nextNodeId-1) + 1
+ j := cursor.index
+ for ; j < len(key) && key[j] != domainStepByte; j++ {
+ }
+ if j == len(key) {
+ if getBit(ss.leaves, nextNodeId) != 0 {
+ return true
+ } else {
+ goto RESTART
+ }
+ }
+ for ; nextBmIdx-nextNodeId < len(ss.labels); nextBmIdx++ {
+ if ss.labels[nextBmIdx-nextNodeId] == domainStepByte {
+ bmIdx = nextBmIdx
+ nodeId = nextNodeId
+ i = j
+ goto RESTART
+ }
+ }
+ }
+ return false
+ }
+ // handle wildcard for domain
+ if ss.labels[bmIdx-nodeId] == complexWildcardByte {
+ return true
+ } else if ss.labels[bmIdx-nodeId] == wildcardByte {
+ cursor := wildcardCursor{}
+ cursor.bmIdx = bmIdx
+ cursor.index = i
+ stack = append(stack, cursor)
+ } else if ss.labels[bmIdx-nodeId] == c {
+ break
+ }
+ }
+ nodeId = countZeros(ss.labelBitmap, ss.ranks, bmIdx+1)
+ bmIdx = selectIthOne(ss.labelBitmap, ss.ranks, ss.selects, nodeId-1) + 1
+ }
+
+ return getBit(ss.leaves, nodeId) != 0
+
+}
+
+func (ss *DomainSet) keys(f func(key string) bool) {
+ var currentKey []byte
+ var traverse func(int, int) bool
+ traverse = func(nodeId, bmIdx int) bool {
+ if getBit(ss.leaves, nodeId) != 0 {
+ if !f(string(currentKey)) {
+ return false
+ }
+ }
+
+ for ; ; bmIdx++ {
+ if getBit(ss.labelBitmap, bmIdx) != 0 {
+ return true
+ }
+ nextLabel := ss.labels[bmIdx-nodeId]
+ currentKey = append(currentKey, nextLabel)
+ nextNodeId := countZeros(ss.labelBitmap, ss.ranks, bmIdx+1)
+ nextBmIdx := selectIthOne(ss.labelBitmap, ss.ranks, ss.selects, nextNodeId-1) + 1
+ if !traverse(nextNodeId, nextBmIdx) {
+ return false
+ }
+ currentKey = currentKey[:len(currentKey)-1]
+ }
+ }
+
+ traverse(0, 0)
+ return
+}
+
+func (ss *DomainSet) Foreach(f func(key string) bool) {
+ ss.keys(func(key string) bool {
+ return f(utils.Reverse(key))
+ })
+}
+
+// MatchDomain implements C.DomainMatcher
+func (ss *DomainSet) MatchDomain(domain string) bool {
+ return ss.Has(domain)
+}
+
+func setBit(bm *[]uint64, i int, v int) {
+ for i>>6 >= len(*bm) {
+ *bm = append(*bm, 0)
+ }
+ (*bm)[i>>6] |= uint64(v) << uint(i&63)
+}
+
+func getBit(bm []uint64, i int) uint64 {
+ return bm[i>>6] & (1 << uint(i&63))
+}
+
+// init builds pre-calculated cache to speed up rank() and select()
+func (ss *DomainSet) init() {
+ ss.selects, ss.ranks = bitmap.IndexSelect32R64(ss.labelBitmap)
+}
+
+// countZeros counts the number of "0" in a bitmap before the i-th bit(excluding
+// the i-th bit) on behalf of rank index.
+// E.g.:
+//
+// countZeros("010010", 4) == 3
+// // 012345
+func countZeros(bm []uint64, ranks []int32, i int) int {
+ a, _ := bitmap.Rank64(bm, ranks, int32(i))
+ return i - int(a)
+}
+
+// selectIthOne returns the index of the i-th "1" in a bitmap, on behalf of rank
+// and select indexes.
+// E.g.:
+//
+// selectIthOne("010010", 1) == 4
+// // 012345
+func selectIthOne(bm []uint64, ranks, selects []int32, i int) int {
+ a, _ := bitmap.Select32R64(bm, selects, ranks, int32(i))
+ return int(a)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_set_bin.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_set_bin.go
new file mode 100644
index 0000000..27d1580
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_set_bin.go
@@ -0,0 +1,115 @@
+package trie
+
+import (
+ "encoding/binary"
+ "errors"
+ "io"
+)
+
+func (ss *DomainSet) WriteBin(w io.Writer) (err error) {
+ // version
+ _, err = w.Write([]byte{1})
+ if err != nil {
+ return err
+ }
+
+ // leaves
+ err = binary.Write(w, binary.BigEndian, int64(len(ss.leaves)))
+ if err != nil {
+ return err
+ }
+ for _, d := range ss.leaves {
+ err = binary.Write(w, binary.BigEndian, d)
+ if err != nil {
+ return err
+ }
+ }
+
+ // labelBitmap
+ err = binary.Write(w, binary.BigEndian, int64(len(ss.labelBitmap)))
+ if err != nil {
+ return err
+ }
+ for _, d := range ss.labelBitmap {
+ err = binary.Write(w, binary.BigEndian, d)
+ if err != nil {
+ return err
+ }
+ }
+
+ // labels
+ err = binary.Write(w, binary.BigEndian, int64(len(ss.labels)))
+ if err != nil {
+ return err
+ }
+ _, err = w.Write(ss.labels)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func ReadDomainSetBin(r io.Reader) (ds *DomainSet, err error) {
+ // version
+ version := make([]byte, 1)
+ _, err = io.ReadFull(r, version)
+ if err != nil {
+ return nil, err
+ }
+ if version[0] != 1 {
+ return nil, errors.New("version is invalid")
+ }
+
+ ds = &DomainSet{}
+ var length int64
+
+ // leaves
+ err = binary.Read(r, binary.BigEndian, &length)
+ if err != nil {
+ return nil, err
+ }
+ if length < 1 {
+ return nil, errors.New("length is invalid")
+ }
+ ds.leaves = make([]uint64, length)
+ for i := int64(0); i < length; i++ {
+ err = binary.Read(r, binary.BigEndian, &ds.leaves[i])
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ // labelBitmap
+ err = binary.Read(r, binary.BigEndian, &length)
+ if err != nil {
+ return nil, err
+ }
+ if length < 1 {
+ return nil, errors.New("length is invalid")
+ }
+ ds.labelBitmap = make([]uint64, length)
+ for i := int64(0); i < length; i++ {
+ err = binary.Read(r, binary.BigEndian, &ds.labelBitmap[i])
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ // labels
+ err = binary.Read(r, binary.BigEndian, &length)
+ if err != nil {
+ return nil, err
+ }
+ if length < 1 {
+ return nil, errors.New("length is invalid")
+ }
+ ds.labels = make([]byte, length)
+ _, err = io.ReadFull(r, ds.labels)
+ if err != nil {
+ return nil, err
+ }
+
+ ds.init()
+ return ds, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_set_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_set_test.go
new file mode 100644
index 0000000..38ba162
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_set_test.go
@@ -0,0 +1,108 @@
+package trie_test
+
+import (
+ "golang.org/x/exp/slices"
+ "testing"
+
+ "github.com/metacubex/mihomo/component/trie"
+ "github.com/stretchr/testify/assert"
+)
+
+func testDump(t *testing.T, tree *trie.DomainTrie[struct{}], set *trie.DomainSet) {
+ var dataSrc []string
+ tree.Foreach(func(domain string, data struct{}) bool {
+ dataSrc = append(dataSrc, domain)
+ return true
+ })
+ slices.Sort(dataSrc)
+ var dataSet []string
+ set.Foreach(func(key string) bool {
+ dataSet = append(dataSet, key)
+ return true
+ })
+ slices.Sort(dataSet)
+ assert.Equal(t, dataSrc, dataSet)
+}
+
+func TestDomainSet(t *testing.T) {
+ tree := trie.New[struct{}]()
+ domainSet := []string{
+ "baidu.com",
+ "google.com",
+ "www.google.com",
+ "test.a.net",
+ "test.a.oc",
+ "Mijia Cloud",
+ ".qq.com",
+ "+.cn",
+ }
+
+ for _, domain := range domainSet {
+ assert.NoError(t, tree.Insert(domain, struct{}{}))
+ }
+ assert.False(t, tree.IsEmpty())
+ set := tree.NewDomainSet()
+ assert.NotNil(t, set)
+ assert.True(t, set.Has("test.cn"))
+ assert.True(t, set.Has("cn"))
+ assert.True(t, set.Has("Mijia Cloud"))
+ assert.True(t, set.Has("test.a.net"))
+ assert.True(t, set.Has("www.qq.com"))
+ assert.True(t, set.Has("google.com"))
+ assert.False(t, set.Has("qq.com"))
+ assert.False(t, set.Has("www.baidu.com"))
+ testDump(t, tree, set)
+}
+
+func TestDomainSetComplexWildcard(t *testing.T) {
+ tree := trie.New[struct{}]()
+ domainSet := []string{
+ "+.baidu.com",
+ "+.a.baidu.com",
+ "www.baidu.com",
+ "+.bb.baidu.com",
+ "test.a.net",
+ "test.a.oc",
+ "www.qq.com",
+ }
+
+ for _, domain := range domainSet {
+ assert.NoError(t, tree.Insert(domain, struct{}{}))
+ }
+ assert.False(t, tree.IsEmpty())
+ set := tree.NewDomainSet()
+ assert.NotNil(t, set)
+ assert.False(t, set.Has("google.com"))
+ assert.True(t, set.Has("www.baidu.com"))
+ assert.True(t, set.Has("test.test.baidu.com"))
+ testDump(t, tree, set)
+}
+
+func TestDomainSetWildcard(t *testing.T) {
+ tree := trie.New[struct{}]()
+ domainSet := []string{
+ "*.*.*.baidu.com",
+ "www.baidu.*",
+ "stun.*.*",
+ "*.*.qq.com",
+ "test.*.baidu.com",
+ "*.apple.com",
+ }
+
+ for _, domain := range domainSet {
+ assert.NoError(t, tree.Insert(domain, struct{}{}))
+ }
+ assert.False(t, tree.IsEmpty())
+ set := tree.NewDomainSet()
+ assert.NotNil(t, set)
+ assert.True(t, set.Has("www.baidu.com"))
+ assert.True(t, set.Has("test.test.baidu.com"))
+ assert.True(t, set.Has("test.test.qq.com"))
+ assert.True(t, set.Has("stun.ab.cd"))
+ assert.False(t, set.Has("test.baidu.com"))
+ assert.False(t, set.Has("www.google.com"))
+ assert.False(t, set.Has("a.www.google.com"))
+ assert.False(t, set.Has("test.qq.com"))
+ assert.False(t, set.Has("test.test.test.qq.com"))
+ testDump(t, tree, set)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_test.go
new file mode 100644
index 0000000..6aab72d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/domain_test.go
@@ -0,0 +1,140 @@
+package trie_test
+
+import (
+ "net/netip"
+ "testing"
+
+ "github.com/metacubex/mihomo/component/trie"
+ "github.com/stretchr/testify/assert"
+)
+
+var localIP = netip.AddrFrom4([4]byte{127, 0, 0, 1})
+
+func TestTrie_Basic(t *testing.T) {
+ tree := trie.New[netip.Addr]()
+ domains := []string{
+ "example.com",
+ "google.com",
+ "localhost",
+ }
+
+ for _, domain := range domains {
+ assert.NoError(t, tree.Insert(domain, localIP))
+ }
+
+ node := tree.Search("example.com")
+ assert.NotNil(t, node)
+ assert.True(t, node.Data() == localIP)
+ assert.NotNil(t, tree.Insert("", localIP))
+ assert.Nil(t, tree.Search(""))
+ assert.NotNil(t, tree.Search("localhost"))
+ assert.Nil(t, tree.Search("www.google.com"))
+}
+
+func TestTrie_Wildcard(t *testing.T) {
+ tree := trie.New[netip.Addr]()
+ domains := []string{
+ "*.example.com",
+ "sub.*.example.com",
+ "*.dev",
+ ".org",
+ ".example.net",
+ ".apple.*",
+ "+.foo.com",
+ "+.stun.*.*",
+ "+.stun.*.*.*",
+ "+.stun.*.*.*.*",
+ "stun.l.google.com",
+ }
+
+ for _, domain := range domains {
+ assert.NoError(t, tree.Insert(domain, localIP))
+ }
+
+ assert.NotNil(t, tree.Search("sub.example.com"))
+ assert.NotNil(t, tree.Search("sub.foo.example.com"))
+ assert.NotNil(t, tree.Search("test.org"))
+ assert.NotNil(t, tree.Search("test.example.net"))
+ assert.NotNil(t, tree.Search("test.apple.com"))
+ assert.NotNil(t, tree.Search("test.foo.com"))
+ assert.NotNil(t, tree.Search("foo.com"))
+ assert.NotNil(t, tree.Search("global.stun.website.com"))
+ assert.Nil(t, tree.Search("foo.sub.example.com"))
+ assert.Nil(t, tree.Search("foo.example.dev"))
+ assert.Nil(t, tree.Search("example.com"))
+}
+
+func TestTrie_Priority(t *testing.T) {
+ tree := trie.New[int]()
+ domains := []string{
+ ".dev",
+ "example.dev",
+ "*.example.dev",
+ "test.example.dev",
+ }
+
+ assertFn := func(domain string, data int) {
+ node := tree.Search(domain)
+ assert.NotNil(t, node)
+ assert.Equal(t, data, node.Data())
+ }
+
+ for idx, domain := range domains {
+ assert.NoError(t, tree.Insert(domain, idx+1))
+ }
+
+ assertFn("test.dev", 1)
+ assertFn("foo.bar.dev", 1)
+ assertFn("example.dev", 2)
+ assertFn("foo.example.dev", 3)
+ assertFn("test.example.dev", 4)
+}
+
+func TestTrie_Boundary(t *testing.T) {
+ tree := trie.New[netip.Addr]()
+ assert.NoError(t, tree.Insert("*.dev", localIP))
+
+ assert.NotNil(t, tree.Insert(".", localIP))
+ assert.NotNil(t, tree.Insert("..dev", localIP))
+ assert.Nil(t, tree.Search("dev"))
+}
+
+func TestTrie_WildcardBoundary(t *testing.T) {
+ tree := trie.New[netip.Addr]()
+ assert.NoError(t, tree.Insert("+.*", localIP))
+ assert.NoError(t, tree.Insert("stun.*.*.*", localIP))
+
+ assert.NotNil(t, tree.Search("example.com"))
+}
+
+func TestTrie_Foreach(t *testing.T) {
+ tree := trie.New[netip.Addr]()
+ domainList := []string{
+ "google.com",
+ "stun.*.*.*",
+ "test.*.google.com",
+ "+.baidu.com",
+ "*.baidu.com",
+ "*.*.baidu.com",
+ }
+ for _, domain := range domainList {
+ assert.NoError(t, tree.Insert(domain, localIP))
+ }
+ count := 0
+ tree.Foreach(func(domain string, data netip.Addr) bool {
+ count++
+ return true
+ })
+ assert.Equal(t, 7, count)
+}
+
+func TestTrie_Space(t *testing.T) {
+ validDomain := func(domain string) bool {
+ _, ok := trie.ValidAndSplitDomain(domain)
+ return ok
+ }
+ assert.True(t, validDomain("google.com"))
+ assert.False(t, validDomain(" google.com"))
+ assert.False(t, validDomain(" google.com "))
+ assert.True(t, validDomain("Mijia Cloud"))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/ipcidr_node.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/ipcidr_node.go
new file mode 100644
index 0000000..acaf9a8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/ipcidr_node.go
@@ -0,0 +1,44 @@
+package trie
+
+import "errors"
+
+var (
+ ErrorOverMaxValue = errors.New("the value don't over max value")
+)
+
+type IpCidrNode struct {
+ Mark bool
+ child map[uint32]*IpCidrNode
+ maxValue uint32
+}
+
+func NewIpCidrNode(mark bool, maxValue uint32) *IpCidrNode {
+ ipCidrNode := &IpCidrNode{
+ Mark: mark,
+ child: map[uint32]*IpCidrNode{},
+ maxValue: maxValue,
+ }
+
+ return ipCidrNode
+}
+
+func (n *IpCidrNode) addChild(value uint32) error {
+ if value > n.maxValue {
+ return ErrorOverMaxValue
+ }
+
+ n.child[value] = NewIpCidrNode(false, n.maxValue)
+ return nil
+}
+
+func (n *IpCidrNode) hasChild(value uint32) bool {
+ return n.getChild(value) != nil
+}
+
+func (n *IpCidrNode) getChild(value uint32) *IpCidrNode {
+ if value <= n.maxValue {
+ return n.child[value]
+ }
+
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/ipcidr_trie.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/ipcidr_trie.go
new file mode 100644
index 0000000..ee8659b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/ipcidr_trie.go
@@ -0,0 +1,249 @@
+package trie
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/log"
+)
+
+type IPV6 bool
+
+const (
+ ipv4GroupMaxValue = 0xFF
+ ipv6GroupMaxValue = 0xFFFF
+)
+
+type IpCidrTrie struct {
+ ipv4Trie *IpCidrNode
+ ipv6Trie *IpCidrNode
+}
+
+func NewIpCidrTrie() *IpCidrTrie {
+ return &IpCidrTrie{
+ ipv4Trie: NewIpCidrNode(false, ipv4GroupMaxValue),
+ ipv6Trie: NewIpCidrNode(false, ipv6GroupMaxValue),
+ }
+}
+
+func (trie *IpCidrTrie) AddIpCidr(ipCidr *net.IPNet) error {
+ subIpCidr, subCidr, isIpv4, err := ipCidrToSubIpCidr(ipCidr)
+ if err != nil {
+ return err
+ }
+
+ for _, sub := range subIpCidr {
+ addIpCidr(trie, isIpv4, sub, subCidr/8)
+ }
+
+ return nil
+}
+
+func (trie *IpCidrTrie) AddIpCidrForString(ipCidr string) error {
+ _, ipNet, err := net.ParseCIDR(ipCidr)
+ if err != nil {
+ return err
+ }
+
+ return trie.AddIpCidr(ipNet)
+}
+
+func (trie *IpCidrTrie) IsContain(ip net.IP) bool {
+ if ip == nil {
+ return false
+ }
+ isIpv4 := len(ip) == net.IPv4len
+ var groupValues []uint32
+ var ipCidrNode *IpCidrNode
+
+ if isIpv4 {
+ ipCidrNode = trie.ipv4Trie
+ for _, group := range ip {
+ groupValues = append(groupValues, uint32(group))
+ }
+ } else {
+ ipCidrNode = trie.ipv6Trie
+ for i := 0; i < len(ip); i += 2 {
+ groupValues = append(groupValues, getIpv6GroupValue(ip[i], ip[i+1]))
+ }
+ }
+
+ return search(ipCidrNode, groupValues) != nil
+}
+
+func (trie *IpCidrTrie) IsContainForString(ipString string) bool {
+ ip := net.ParseIP(ipString)
+ // deal with 4in6
+ actualIp := ip.To4()
+ if actualIp == nil {
+ actualIp = ip
+ }
+ return trie.IsContain(actualIp)
+}
+
+func ipCidrToSubIpCidr(ipNet *net.IPNet) ([]net.IP, int, bool, error) {
+ maskSize, _ := ipNet.Mask.Size()
+ var (
+ ipList []net.IP
+ newMaskSize int
+ isIpv4 bool
+ err error
+ )
+ isIpv4 = len(ipNet.IP) == net.IPv4len
+ ipList, newMaskSize, err = subIpCidr(ipNet.IP, maskSize, isIpv4)
+
+ return ipList, newMaskSize, isIpv4, err
+}
+
+func subIpCidr(ip net.IP, maskSize int, isIpv4 bool) ([]net.IP, int, error) {
+ var subIpCidrList []net.IP
+ groupSize := 8
+ if !isIpv4 {
+ groupSize = 16
+ }
+
+ if maskSize%groupSize == 0 {
+ return append(subIpCidrList, ip), maskSize, nil
+ }
+
+ lastByteMaskSize := maskSize % 8
+ lastByteMaskIndex := maskSize / 8
+ subIpCidrNum := 0xFF >> lastByteMaskSize
+ for i := 0; i <= subIpCidrNum; i++ {
+ subIpCidr := make([]byte, len(ip))
+ copy(subIpCidr, ip)
+ subIpCidr[lastByteMaskIndex] += byte(i)
+ subIpCidrList = append(subIpCidrList, subIpCidr)
+ }
+
+ newMaskSize := (lastByteMaskIndex + 1) * 8
+ if !isIpv4 {
+ newMaskSize = (lastByteMaskIndex/2 + 1) * 16
+ }
+
+ return subIpCidrList, newMaskSize, nil
+}
+
+func addIpCidr(trie *IpCidrTrie, isIpv4 bool, ip net.IP, groupSize int) {
+ if isIpv4 {
+ addIpv4Cidr(trie, ip, groupSize)
+ } else {
+ addIpv6Cidr(trie, ip, groupSize)
+ }
+}
+
+func addIpv4Cidr(trie *IpCidrTrie, ip net.IP, groupSize int) {
+ preNode := trie.ipv4Trie
+ node := preNode.getChild(uint32(ip[0]))
+ if node == nil {
+ err := preNode.addChild(uint32(ip[0]))
+ if err != nil {
+ return
+ }
+
+ node = preNode.getChild(uint32(ip[0]))
+ }
+
+ for i := 1; i < groupSize; i++ {
+ if node.Mark {
+ return
+ }
+
+ groupValue := uint32(ip[i])
+ if !node.hasChild(groupValue) {
+ err := node.addChild(groupValue)
+ if err != nil {
+ log.Errorln(err.Error())
+ }
+ }
+
+ preNode = node
+ node = node.getChild(groupValue)
+ if node == nil {
+ err := preNode.addChild(uint32(ip[i-1]))
+ if err != nil {
+ return
+ }
+
+ node = preNode.getChild(uint32(ip[i-1]))
+ }
+ }
+
+ node.Mark = true
+ cleanChild(node)
+}
+
+func addIpv6Cidr(trie *IpCidrTrie, ip net.IP, groupSize int) {
+ preNode := trie.ipv6Trie
+ node := preNode.getChild(getIpv6GroupValue(ip[0], ip[1]))
+ if node == nil {
+ err := preNode.addChild(getIpv6GroupValue(ip[0], ip[1]))
+ if err != nil {
+ return
+ }
+
+ node = preNode.getChild(getIpv6GroupValue(ip[0], ip[1]))
+ }
+
+ for i := 2; i < groupSize; i += 2 {
+ if ip[i] == 0 && ip[i+1] == 0 {
+ node.Mark = true
+ }
+
+ if node.Mark {
+ return
+ }
+
+ groupValue := getIpv6GroupValue(ip[i], ip[i+1])
+ if !node.hasChild(groupValue) {
+ err := node.addChild(groupValue)
+ if err != nil {
+ log.Errorln(err.Error())
+ }
+ }
+
+ preNode = node
+ node = node.getChild(groupValue)
+ if node == nil {
+ err := preNode.addChild(getIpv6GroupValue(ip[i-2], ip[i-1]))
+ if err != nil {
+ return
+ }
+
+ node = preNode.getChild(getIpv6GroupValue(ip[i-2], ip[i-1]))
+ }
+ }
+
+ node.Mark = true
+ cleanChild(node)
+}
+
+func getIpv6GroupValue(high, low byte) uint32 {
+ return (uint32(high) << 8) | uint32(low)
+}
+
+func cleanChild(node *IpCidrNode) {
+ for i := uint32(0); i < uint32(len(node.child)); i++ {
+ delete(node.child, i)
+ }
+}
+
+func search(root *IpCidrNode, groupValues []uint32) *IpCidrNode {
+ node := root.getChild(groupValues[0])
+ if node == nil || node.Mark {
+ return node
+ }
+
+ for _, value := range groupValues[1:] {
+ if !node.hasChild(value) {
+ return nil
+ }
+
+ node = node.getChild(value)
+
+ if node == nil || node.Mark {
+ return node
+ }
+ }
+
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/node.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/node.go
new file mode 100644
index 0000000..3aa2bc7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/node.go
@@ -0,0 +1,137 @@
+package trie
+
+import "strings"
+
+// Node is the trie's node
+type Node[T any] struct {
+ childMap map[string]*Node[T]
+ childNode *Node[T] // optimize for only one child
+ childStr string
+ inited bool
+ data T
+}
+
+func (n *Node[T]) getChild(s string) *Node[T] {
+ if n.childMap == nil {
+ if n.childNode != nil && n.childStr == s {
+ return n.childNode
+ }
+ return nil
+ }
+ return n.childMap[s]
+}
+
+func (n *Node[T]) hasChild(s string) bool {
+ return n.getChild(s) != nil
+}
+
+func (n *Node[T]) addChild(s string, child *Node[T]) {
+ if n.childMap == nil {
+ if n.childNode == nil {
+ n.childStr = s
+ n.childNode = child
+ return
+ }
+ n.childMap = map[string]*Node[T]{}
+ if n.childNode != nil {
+ n.childMap[n.childStr] = n.childNode
+ }
+ n.childStr = ""
+ n.childNode = nil
+ }
+
+ n.childMap[s] = child
+}
+
+func (n *Node[T]) getOrNewChild(s string) *Node[T] {
+ node := n.getChild(s)
+ if node == nil {
+ node = newNode[T]()
+ n.addChild(s, node)
+ }
+ return node
+}
+
+func (n *Node[T]) optimize() {
+ if len(n.childStr) > 0 {
+ n.childStr = strClone(n.childStr)
+ }
+ if n.childNode != nil {
+ n.childNode.optimize()
+ }
+ if n.childMap == nil {
+ return
+ }
+ switch len(n.childMap) {
+ case 0:
+ n.childMap = nil
+ return
+ case 1:
+ for key := range n.childMap {
+ n.childStr = key
+ n.childNode = n.childMap[key]
+ }
+ n.childMap = nil
+ n.optimize()
+ return
+ }
+ children := make(map[string]*Node[T], len(n.childMap)) // avoid map reallocate memory
+ for key := range n.childMap {
+ child := n.childMap[key]
+ if child == nil {
+ continue
+ }
+ key = strClone(key)
+ children[key] = child
+ child.optimize()
+ }
+ n.childMap = children
+}
+
+func strClone(key string) string {
+ switch key { // try to save string's memory
+ case wildcard:
+ key = wildcard
+ case dotWildcard:
+ key = dotWildcard
+ case complexWildcard:
+ key = complexWildcard
+ case domainStep:
+ key = domainStep
+ default:
+ key = strings.Clone(key)
+ }
+ return key
+}
+
+func (n *Node[T]) isEmpty() bool {
+ if n == nil || n.inited == false {
+ return true
+ }
+ return false
+}
+
+func (n *Node[T]) setData(data T) {
+ n.data = data
+ n.inited = true
+}
+
+func (n *Node[T]) getChildren() map[string]*Node[T] {
+ if n.childMap == nil {
+ if n.childNode != nil {
+ m := make(map[string]*Node[T])
+ m[n.childStr] = n.childNode
+ return m
+ }
+ } else {
+ return n.childMap
+ }
+ return nil
+}
+func (n *Node[T]) Data() T {
+ return n.data
+}
+
+func newNode[T any]() *Node[T] {
+ return &Node[T]{}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/trie_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/trie_test.go
new file mode 100644
index 0000000..a589b7c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/trie/trie_test.go
@@ -0,0 +1,115 @@
+package trie
+
+import (
+ "net"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestIpv4AddSuccess(t *testing.T) {
+ trie := NewIpCidrTrie()
+ err := trie.AddIpCidrForString("10.0.0.2/16")
+ assert.Equal(t, nil, err)
+}
+
+func TestIpv4AddFail(t *testing.T) {
+ trie := NewIpCidrTrie()
+ err := trie.AddIpCidrForString("333.00.23.2/23")
+ assert.IsType(t, new(net.ParseError), err)
+
+ err = trie.AddIpCidrForString("22.3.34.2/222")
+ assert.IsType(t, new(net.ParseError), err)
+
+ err = trie.AddIpCidrForString("2.2.2.2")
+ assert.IsType(t, new(net.ParseError), err)
+}
+
+func TestIpv4Search(t *testing.T) {
+ trie := NewIpCidrTrie()
+ // Boundary testing
+ assert.NoError(t, trie.AddIpCidrForString("149.154.160.0/20"))
+ assert.Equal(t, true, trie.IsContainForString("149.154.160.0"))
+ assert.Equal(t, true, trie.IsContainForString("149.154.175.255"))
+ assert.Equal(t, false, trie.IsContainForString("149.154.176.0"))
+ assert.Equal(t, false, trie.IsContainForString("149.154.159.255"))
+
+ assert.NoError(t, trie.AddIpCidrForString("129.2.36.0/16"))
+ assert.NoError(t, trie.AddIpCidrForString("10.2.36.0/18"))
+ assert.NoError(t, trie.AddIpCidrForString("16.2.23.0/24"))
+ assert.NoError(t, trie.AddIpCidrForString("11.2.13.2/26"))
+ assert.NoError(t, trie.AddIpCidrForString("55.5.6.3/8"))
+ assert.NoError(t, trie.AddIpCidrForString("66.23.25.4/6"))
+
+ assert.Equal(t, true, trie.IsContainForString("129.2.3.65"))
+ assert.Equal(t, false, trie.IsContainForString("15.2.3.1"))
+ assert.Equal(t, true, trie.IsContainForString("11.2.13.1"))
+ assert.Equal(t, true, trie.IsContainForString("55.0.0.0"))
+ assert.Equal(t, true, trie.IsContainForString("64.0.0.0"))
+ assert.Equal(t, false, trie.IsContainForString("128.0.0.0"))
+
+ assert.Equal(t, false, trie.IsContain(net.ParseIP("22")))
+ assert.Equal(t, false, trie.IsContain(net.ParseIP("")))
+
+}
+
+func TestIpv6AddSuccess(t *testing.T) {
+ trie := NewIpCidrTrie()
+ err := trie.AddIpCidrForString("2001:0db8:02de:0000:0000:0000:0000:0e13/32")
+ assert.Equal(t, nil, err)
+
+ err = trie.AddIpCidrForString("2001:1db8:f2de::0e13/18")
+ assert.Equal(t, nil, err)
+}
+
+func TestIpv6AddFail(t *testing.T) {
+ trie := NewIpCidrTrie()
+ err := trie.AddIpCidrForString("2001::25de::cade/23")
+ assert.IsType(t, new(net.ParseError), err)
+
+ err = trie.AddIpCidrForString("2001:0fa3:25de::cade/222")
+ assert.IsType(t, new(net.ParseError), err)
+
+ err = trie.AddIpCidrForString("2001:0fa3:25de::cade")
+ assert.IsType(t, new(net.ParseError), err)
+}
+
+func TestIpv6SearchSub(t *testing.T) {
+ trie := NewIpCidrTrie()
+ assert.NoError(t, trie.AddIpCidrForString("240e::/18"))
+
+ assert.Equal(t, true, trie.IsContainForString("240e:964:ea02:100:1800::71"))
+
+}
+
+func TestIpv6Search(t *testing.T) {
+ trie := NewIpCidrTrie()
+
+ // Boundary testing
+ assert.NoError(t, trie.AddIpCidrForString("2a0a:f280::/32"))
+ assert.Equal(t, true, trie.IsContainForString("2a0a:f280:0000:0000:0000:0000:0000:0000"))
+ assert.Equal(t, true, trie.IsContainForString("2a0a:f280:ffff:ffff:ffff:ffff:ffff:ffff"))
+ assert.Equal(t, false, trie.IsContainForString("2a0a:f279:ffff:ffff:ffff:ffff:ffff:ffff"))
+ assert.Equal(t, false, trie.IsContainForString("2a0a:f281:0000:0000:0000:0000:0000:0000"))
+
+ assert.NoError(t, trie.AddIpCidrForString("2001:b28:f23d:f001::e/128"))
+ assert.NoError(t, trie.AddIpCidrForString("2001:67c:4e8:f002::e/12"))
+ assert.NoError(t, trie.AddIpCidrForString("2001:b28:f23d:f003::e/96"))
+ assert.NoError(t, trie.AddIpCidrForString("2001:67c:4e8:f002::a/32"))
+ assert.NoError(t, trie.AddIpCidrForString("2001:67c:4e8:f004::a/60"))
+ assert.NoError(t, trie.AddIpCidrForString("2001:b28:f23f:f005::a/64"))
+ assert.Equal(t, true, trie.IsContainForString("2001:b28:f23d:f001::e"))
+ assert.Equal(t, false, trie.IsContainForString("2222::fff2"))
+ assert.Equal(t, true, trie.IsContainForString("2000::ffa0"))
+ assert.Equal(t, true, trie.IsContainForString("2001:b28:f23f:f005:5662::"))
+ assert.Equal(t, true, trie.IsContainForString("2001:67c:4e8:9666::1213"))
+
+ assert.Equal(t, false, trie.IsContain(net.ParseIP("22233:22")))
+}
+
+func TestIpv4InIpv6(t *testing.T) {
+ trie := NewIpCidrTrie()
+
+ // Boundary testing
+ assert.NoError(t, trie.AddIpCidrForString("::ffff:198.18.5.138/128"))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/update_core.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/update_core.go
new file mode 100644
index 0000000..2aab783
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/update_core.go
@@ -0,0 +1,499 @@
+package updater
+
+import (
+ "archive/zip"
+ "compress/gzip"
+ "context"
+ "fmt"
+ "io"
+ "net/http"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "sync"
+ "time"
+
+ mihomoHttp "github.com/metacubex/mihomo/component/http"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/klauspost/cpuid/v2"
+)
+
+// modify from https://github.com/AdguardTeam/AdGuardHome/blob/595484e0b3fb4c457f9bb727a6b94faa78a66c5f/internal/updater/updater.go
+// Updater is the mihomo updater.
+var (
+ goarm string
+ gomips string
+ amd64Compatible string
+
+ workDir string
+
+ // mu protects all fields below.
+ mu sync.Mutex
+
+ currentExeName string // 当前可执行文件
+ updateDir string // 更新目录
+ packageName string // 更新压缩文件
+ backupDir string // 备份目录
+ backupExeName string // 备份文件名
+ updateExeName string // 更新后的可执行文件
+
+ baseURL string = "https://github.com/MetaCubeX/mihomo/releases/download/Prerelease-Alpha/mihomo"
+ versionURL string = "https://github.com/MetaCubeX/mihomo/releases/download/Prerelease-Alpha/version.txt"
+ packageURL string
+ latestVersion string
+)
+
+func init() {
+ if runtime.GOARCH == "amd64" && cpuid.CPU.X64Level() < 3 {
+ amd64Compatible = "-compatible"
+ }
+ if !strings.HasPrefix(C.Version, "alpha") {
+ baseURL = "https://github.com/MetaCubeX/mihomo/releases/latest/download/mihomo"
+ versionURL = "https://github.com/MetaCubeX/mihomo/releases/latest/download/version.txt"
+ }
+}
+
+type updateError struct {
+ Message string
+}
+
+func (e *updateError) Error() string {
+ return fmt.Sprintf("update error: %s", e.Message)
+}
+
+// Update performs the auto-updater. It returns an error if the updater failed.
+// If firstRun is true, it assumes the configuration file doesn't exist.
+func UpdateCore(execPath string) (err error) {
+ mu.Lock()
+ defer mu.Unlock()
+
+ latestVersion, err = getLatestVersion()
+ if err != nil {
+ return err
+ }
+
+ log.Infoln("current version %s, latest version %s", C.Version, latestVersion)
+
+ if latestVersion == C.Version {
+ err := &updateError{Message: "already using latest version"}
+ return err
+ }
+
+ updateDownloadURL()
+
+ defer func() {
+ if err != nil {
+ log.Errorln("updater: failed: %v", err)
+ } else {
+ log.Infoln("updater: finished")
+ }
+ }()
+
+ workDir = filepath.Dir(execPath)
+
+ err = prepare(execPath)
+ if err != nil {
+ return fmt.Errorf("preparing: %w", err)
+ }
+
+ defer clean()
+
+ err = downloadPackageFile()
+ if err != nil {
+ return fmt.Errorf("downloading package file: %w", err)
+ }
+
+ err = unpack()
+ if err != nil {
+ return fmt.Errorf("unpacking: %w", err)
+ }
+
+ err = backup()
+ if err != nil {
+ return fmt.Errorf("backuping: %w", err)
+ }
+
+ err = replace()
+ if err != nil {
+ return fmt.Errorf("replacing: %w", err)
+ }
+
+ return nil
+}
+
+// prepare fills all necessary fields in Updater object.
+func prepare(exePath string) (err error) {
+ updateDir = filepath.Join(workDir, "meta-update")
+ currentExeName = exePath
+ _, pkgNameOnly := filepath.Split(packageURL)
+ if pkgNameOnly == "" {
+ return fmt.Errorf("invalid PackageURL: %q", packageURL)
+ }
+
+ packageName = filepath.Join(updateDir, pkgNameOnly)
+ //log.Infoln(packageName)
+ backupDir = filepath.Join(workDir, "meta-backup")
+
+ if runtime.GOOS == "windows" {
+ updateExeName = "mihomo" + "-" + runtime.GOOS + "-" + runtime.GOARCH + amd64Compatible + ".exe"
+ } else if runtime.GOOS == "android" && runtime.GOARCH == "arm64" {
+ updateExeName = "mihomo-android-arm64-v8"
+ } else {
+ updateExeName = "mihomo" + "-" + runtime.GOOS + "-" + runtime.GOARCH + amd64Compatible
+ }
+
+ log.Infoln("updateExeName: %s ", updateExeName)
+
+ backupExeName = filepath.Join(backupDir, filepath.Base(exePath))
+ updateExeName = filepath.Join(updateDir, updateExeName)
+
+ log.Infoln(
+ "updater: updating using url: %s",
+ packageURL,
+ )
+
+ currentExeName = exePath
+ _, err = os.Stat(currentExeName)
+ if err != nil {
+ return fmt.Errorf("checking %q: %w", currentExeName, err)
+ }
+
+ return nil
+}
+
+// unpack extracts the files from the downloaded archive.
+func unpack() error {
+ var err error
+ _, pkgNameOnly := filepath.Split(packageURL)
+
+ log.Infoln("updater: unpacking package")
+ if strings.HasSuffix(pkgNameOnly, ".zip") {
+ _, err = zipFileUnpack(packageName, updateDir)
+ if err != nil {
+ return fmt.Errorf(".zip unpack failed: %w", err)
+ }
+
+ } else if strings.HasSuffix(pkgNameOnly, ".gz") {
+ _, err = gzFileUnpack(packageName, updateDir)
+ if err != nil {
+ return fmt.Errorf(".gz unpack failed: %w", err)
+ }
+
+ } else {
+ return fmt.Errorf("unknown package extension")
+ }
+
+ return nil
+}
+
+// backup makes a backup of the current executable file
+func backup() (err error) {
+ log.Infoln("updater: backing up current ExecFile:%s to %s", currentExeName, backupExeName)
+ _ = os.Mkdir(backupDir, 0o755)
+
+ err = os.Rename(currentExeName, backupExeName)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// replace moves the current executable with the updated one
+func replace() error {
+ var err error
+
+ log.Infoln("replacing: %s to %s", updateExeName, currentExeName)
+ if runtime.GOOS == "windows" {
+ // rename fails with "File in use" error
+ err = copyFile(updateExeName, currentExeName)
+ } else {
+ err = os.Rename(updateExeName, currentExeName)
+ }
+ if err != nil {
+ return err
+ }
+
+ log.Infoln("updater: renamed: %s to %s", updateExeName, currentExeName)
+
+ return nil
+}
+
+// clean removes the temporary directory itself and all it's contents.
+func clean() {
+ _ = os.RemoveAll(updateDir)
+}
+
+// MaxPackageFileSize is a maximum package file length in bytes. The largest
+// package whose size is limited by this constant currently has the size of
+// approximately 32 MiB.
+const MaxPackageFileSize = 32 * 1024 * 1024
+
+// Download package file and save it to disk
+func downloadPackageFile() (err error) {
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second*90)
+ defer cancel()
+ resp, err := mihomoHttp.HttpRequest(ctx, packageURL, http.MethodGet, nil, nil)
+ if err != nil {
+ return fmt.Errorf("http request failed: %w", err)
+ }
+
+ defer func() {
+ closeErr := resp.Body.Close()
+ if closeErr != nil && err == nil {
+ err = closeErr
+ }
+ }()
+
+ var r io.Reader
+ r, err = LimitReader(resp.Body, MaxPackageFileSize)
+ if err != nil {
+ return fmt.Errorf("http request failed: %w", err)
+ }
+
+ log.Debugln("updater: reading http body")
+ // This use of ReadAll is now safe, because we limited body's Reader.
+ body, err := io.ReadAll(r)
+ if err != nil {
+ return fmt.Errorf("io.ReadAll() failed: %w", err)
+ }
+
+ log.Debugln("updateDir %s", updateDir)
+ err = os.Mkdir(updateDir, 0o755)
+ if err != nil {
+ return fmt.Errorf("mkdir error: %w", err)
+ }
+
+ log.Debugln("updater: saving package to file %s", packageName)
+ err = os.WriteFile(packageName, body, 0o644)
+ if err != nil {
+ return fmt.Errorf("os.WriteFile() failed: %w", err)
+ }
+ return nil
+}
+
+// Unpack a single .gz file to the specified directory
+// Existing files are overwritten
+// All files are created inside outDir, subdirectories are not created
+// Return the output file name
+func gzFileUnpack(gzfile, outDir string) (string, error) {
+ f, err := os.Open(gzfile)
+ if err != nil {
+ return "", fmt.Errorf("os.Open(): %w", err)
+ }
+
+ defer func() {
+ closeErr := f.Close()
+ if closeErr != nil && err == nil {
+ err = closeErr
+ }
+ }()
+
+ gzReader, err := gzip.NewReader(f)
+ if err != nil {
+ return "", fmt.Errorf("gzip.NewReader(): %w", err)
+ }
+
+ defer func() {
+ closeErr := gzReader.Close()
+ if closeErr != nil && err == nil {
+ err = closeErr
+ }
+ }()
+ // Get the original file name from the .gz file header
+ originalName := gzReader.Header.Name
+ if originalName == "" {
+ // Fallback: remove the .gz extension from the input file name if the header doesn't provide the original name
+ originalName = filepath.Base(gzfile)
+ originalName = strings.TrimSuffix(originalName, ".gz")
+ }
+
+ outputName := filepath.Join(outDir, originalName)
+
+ // Create the output file
+ wc, err := os.OpenFile(
+ outputName,
+ os.O_WRONLY|os.O_CREATE|os.O_TRUNC,
+ 0o755,
+ )
+ if err != nil {
+ return "", fmt.Errorf("os.OpenFile(%s): %w", outputName, err)
+ }
+
+ defer func() {
+ closeErr := wc.Close()
+ if closeErr != nil && err == nil {
+ err = closeErr
+ }
+ }()
+
+ // Copy the contents of the gzReader to the output file
+ _, err = io.Copy(wc, gzReader)
+ if err != nil {
+ return "", fmt.Errorf("io.Copy(): %w", err)
+ }
+
+ return outputName, nil
+}
+
+// Unpack a single file from .zip file to the specified directory
+// Existing files are overwritten
+// All files are created inside 'outDir', subdirectories are not created
+// Return the output file name
+func zipFileUnpack(zipfile, outDir string) (string, error) {
+ zrc, err := zip.OpenReader(zipfile)
+ if err != nil {
+ return "", fmt.Errorf("zip.OpenReader(): %w", err)
+ }
+
+ defer func() {
+ closeErr := zrc.Close()
+ if closeErr != nil && err == nil {
+ err = closeErr
+ }
+ }()
+ if len(zrc.File) == 0 {
+ return "", fmt.Errorf("no files in the zip archive")
+ }
+
+ // Assuming the first file in the zip archive is the target file
+ zf := zrc.File[0]
+ var rc io.ReadCloser
+ rc, err = zf.Open()
+ if err != nil {
+ return "", fmt.Errorf("zip file Open(): %w", err)
+ }
+
+ defer func() {
+ closeErr := rc.Close()
+ if closeErr != nil && err == nil {
+ err = closeErr
+ }
+ }()
+ fi := zf.FileInfo()
+ name := fi.Name()
+ outputName := filepath.Join(outDir, name)
+
+ if fi.IsDir() {
+ return "", fmt.Errorf("the target file is a directory")
+ }
+
+ var wc io.WriteCloser
+ wc, err = os.OpenFile(outputName, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, fi.Mode())
+ if err != nil {
+ return "", fmt.Errorf("os.OpenFile(): %w", err)
+ }
+
+ defer func() {
+ closeErr := wc.Close()
+ if closeErr != nil && err == nil {
+ err = closeErr
+ }
+ }()
+ _, err = io.Copy(wc, rc)
+ if err != nil {
+ return "", fmt.Errorf("io.Copy(): %w", err)
+ }
+
+ return outputName, nil
+}
+
+// Copy file on disk
+func copyFile(src, dst string) error {
+ d, e := os.ReadFile(src)
+ if e != nil {
+ return e
+ }
+ e = os.WriteFile(dst, d, 0o644)
+ if e != nil {
+ return e
+ }
+ return nil
+}
+
+func getLatestVersion() (version string, err error) {
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
+ defer cancel()
+ resp, err := mihomoHttp.HttpRequest(ctx, versionURL, http.MethodGet, nil, nil)
+ if err != nil {
+ return "", fmt.Errorf("get Latest Version fail: %w", err)
+ }
+ defer func() {
+ closeErr := resp.Body.Close()
+ if closeErr != nil && err == nil {
+ err = closeErr
+ }
+ }()
+
+ body, err := io.ReadAll(resp.Body)
+ if err != nil {
+ return "", fmt.Errorf("get Latest Version fail: %w", err)
+ }
+ content := strings.TrimRight(string(body), "\n")
+ return content, nil
+}
+
+func updateDownloadURL() {
+ var middle string
+
+ if runtime.GOARCH == "arm" && probeGoARM() {
+ //-linux-armv7-alpha-e552b54.gz
+ middle = fmt.Sprintf("-%s-%s%s-%s", runtime.GOOS, runtime.GOARCH, goarm, latestVersion)
+ } else if runtime.GOARCH == "arm64" {
+ //-linux-arm64-alpha-e552b54.gz
+ if runtime.GOOS == "android" {
+ middle = fmt.Sprintf("-%s-%s-v8-%s", runtime.GOOS, runtime.GOARCH, latestVersion)
+ } else {
+ middle = fmt.Sprintf("-%s-%s-%s", runtime.GOOS, runtime.GOARCH, latestVersion)
+ }
+ } else if isMIPS(runtime.GOARCH) && gomips != "" {
+ middle = fmt.Sprintf("-%s-%s-%s-%s", runtime.GOOS, runtime.GOARCH, gomips, latestVersion)
+ } else {
+ middle = fmt.Sprintf("-%s-%s%s-%s", runtime.GOOS, runtime.GOARCH, amd64Compatible, latestVersion)
+ }
+
+ if runtime.GOOS == "windows" {
+ middle += ".zip"
+ } else {
+ middle += ".gz"
+ }
+ packageURL = baseURL + middle
+ //log.Infoln(packageURL)
+}
+
+// isMIPS returns true if arch is any MIPS architecture.
+func isMIPS(arch string) (ok bool) {
+ switch arch {
+ case
+ "mips",
+ "mips64",
+ "mips64le",
+ "mipsle":
+ return true
+ default:
+ return false
+ }
+}
+
+// linux only
+func probeGoARM() (ok bool) {
+ cmd := exec.Command("cat", "/proc/cpuinfo")
+ output, err := cmd.Output()
+ if err != nil {
+ log.Errorln("probe goarm error:%s", err)
+ return false
+ }
+ cpuInfo := string(output)
+ if strings.Contains(cpuInfo, "vfpv3") || strings.Contains(cpuInfo, "vfpv4") {
+ goarm = "v7"
+ } else if strings.Contains(cpuInfo, "vfp") {
+ goarm = "v6"
+ } else {
+ goarm = "v5"
+ }
+ return true
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/update_geo.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/update_geo.go
new file mode 100644
index 0000000..bba0dab
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/update_geo.go
@@ -0,0 +1,282 @@
+package updater
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "os"
+ "runtime"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ "github.com/metacubex/mihomo/common/batch"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/geodata"
+ _ "github.com/metacubex/mihomo/component/geodata/standard"
+ "github.com/metacubex/mihomo/component/mmdb"
+ "github.com/metacubex/mihomo/component/resource"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/oschwald/maxminddb-golang"
+)
+
+var (
+ autoUpdate bool
+ updateInterval int
+
+ updatingGeo atomic.Bool
+)
+
+func GeoAutoUpdate() bool {
+ return autoUpdate
+}
+
+func GeoUpdateInterval() int {
+ return updateInterval
+}
+
+func SetGeoAutoUpdate(newAutoUpdate bool) {
+ autoUpdate = newAutoUpdate
+}
+
+func SetGeoUpdateInterval(newGeoUpdateInterval int) {
+ updateInterval = newGeoUpdateInterval
+}
+
+func UpdateMMDB() (err error) {
+ vehicle := resource.NewHTTPVehicle(geodata.MmdbUrl(), C.Path.MMDB(), "", nil, defaultHttpTimeout)
+ var oldHash utils.HashType
+ if buf, err := os.ReadFile(vehicle.Path()); err == nil {
+ oldHash = utils.MakeHash(buf)
+ }
+ data, hash, err := vehicle.Read(context.Background(), oldHash)
+ if err != nil {
+ return fmt.Errorf("can't download MMDB database file: %w", err)
+ }
+ if oldHash.Equal(hash) { // same hash, ignored
+ return nil
+ }
+ if len(data) == 0 {
+ return fmt.Errorf("can't download MMDB database file: no data")
+ }
+
+ instance, err := maxminddb.FromBytes(data)
+ if err != nil {
+ return fmt.Errorf("invalid MMDB database file: %s", err)
+ }
+ _ = instance.Close()
+
+ defer mmdb.ReloadIP()
+ mmdb.IPInstance().Reader.Close() // mmdb is loaded with mmap, so it needs to be closed before overwriting the file
+ if err = vehicle.Write(data); err != nil {
+ return fmt.Errorf("can't save MMDB database file: %w", err)
+ }
+ return nil
+}
+
+func UpdateASN() (err error) {
+ vehicle := resource.NewHTTPVehicle(geodata.ASNUrl(), C.Path.ASN(), "", nil, defaultHttpTimeout)
+ var oldHash utils.HashType
+ if buf, err := os.ReadFile(vehicle.Path()); err == nil {
+ oldHash = utils.MakeHash(buf)
+ }
+ data, hash, err := vehicle.Read(context.Background(), oldHash)
+ if err != nil {
+ return fmt.Errorf("can't download ASN database file: %w", err)
+ }
+ if oldHash.Equal(hash) { // same hash, ignored
+ return nil
+ }
+ if len(data) == 0 {
+ return fmt.Errorf("can't download ASN database file: no data")
+ }
+
+ instance, err := maxminddb.FromBytes(data)
+ if err != nil {
+ return fmt.Errorf("invalid ASN database file: %s", err)
+ }
+ _ = instance.Close()
+
+ defer mmdb.ReloadASN()
+ mmdb.ASNInstance().Reader.Close() // mmdb is loaded with mmap, so it needs to be closed before overwriting the file
+ if err = vehicle.Write(data); err != nil {
+ return fmt.Errorf("can't save ASN database file: %w", err)
+ }
+ return nil
+}
+
+func UpdateGeoIp() (err error) {
+ geoLoader, err := geodata.GetGeoDataLoader("standard")
+
+ vehicle := resource.NewHTTPVehicle(geodata.GeoIpUrl(), C.Path.GeoIP(), "", nil, defaultHttpTimeout)
+ var oldHash utils.HashType
+ if buf, err := os.ReadFile(vehicle.Path()); err == nil {
+ oldHash = utils.MakeHash(buf)
+ }
+ data, hash, err := vehicle.Read(context.Background(), oldHash)
+ if err != nil {
+ return fmt.Errorf("can't download GeoIP database file: %w", err)
+ }
+ if oldHash.Equal(hash) { // same hash, ignored
+ return nil
+ }
+ if len(data) == 0 {
+ return fmt.Errorf("can't download GeoIP database file: no data")
+ }
+
+ if _, err = geoLoader.LoadIPByBytes(data, "cn"); err != nil {
+ return fmt.Errorf("invalid GeoIP database file: %s", err)
+ }
+
+ defer geodata.ClearGeoIPCache()
+ if err = vehicle.Write(data); err != nil {
+ return fmt.Errorf("can't save GeoIP database file: %w", err)
+ }
+ return nil
+}
+
+func UpdateGeoSite() (err error) {
+ geoLoader, err := geodata.GetGeoDataLoader("standard")
+
+ vehicle := resource.NewHTTPVehicle(geodata.GeoSiteUrl(), C.Path.GeoSite(), "", nil, defaultHttpTimeout)
+ var oldHash utils.HashType
+ if buf, err := os.ReadFile(vehicle.Path()); err == nil {
+ oldHash = utils.MakeHash(buf)
+ }
+ data, hash, err := vehicle.Read(context.Background(), oldHash)
+ if err != nil {
+ return fmt.Errorf("can't download GeoSite database file: %w", err)
+ }
+ if oldHash.Equal(hash) { // same hash, ignored
+ return nil
+ }
+ if len(data) == 0 {
+ return fmt.Errorf("can't download GeoSite database file: no data")
+ }
+
+ if _, err = geoLoader.LoadSiteByBytes(data, "cn"); err != nil {
+ return fmt.Errorf("invalid GeoSite database file: %s", err)
+ }
+
+ defer geodata.ClearGeoSiteCache()
+ if err = vehicle.Write(data); err != nil {
+ return fmt.Errorf("can't save GeoSite database file: %w", err)
+ }
+ return nil
+}
+
+func updateGeoDatabases() error {
+ defer runtime.GC()
+
+ b, _ := batch.New[interface{}](context.Background())
+
+ if geodata.GeoIpEnable() {
+ if geodata.GeodataMode() {
+ b.Go("UpdateGeoIp", func() (_ interface{}, err error) {
+ err = UpdateGeoIp()
+ return
+ })
+ } else {
+ b.Go("UpdateMMDB", func() (_ interface{}, err error) {
+ err = UpdateMMDB()
+ return
+ })
+ }
+ }
+
+ if geodata.ASNEnable() {
+ b.Go("UpdateASN", func() (_ interface{}, err error) {
+ err = UpdateASN()
+ return
+ })
+ }
+
+ if geodata.GeoSiteEnable() {
+ b.Go("UpdateGeoSite", func() (_ interface{}, err error) {
+ err = UpdateGeoSite()
+ return
+ })
+ }
+
+ if e := b.Wait(); e != nil {
+ return e.Err
+ }
+
+ return nil
+}
+
+var ErrGetDatabaseUpdateSkip = errors.New("GEO database is updating, skip")
+
+func UpdateGeoDatabases() error {
+ log.Infoln("[GEO] Start updating GEO database")
+
+ if updatingGeo.Load() {
+ return ErrGetDatabaseUpdateSkip
+ }
+
+ updatingGeo.Store(true)
+ defer updatingGeo.Store(false)
+
+ log.Infoln("[GEO] Updating GEO database")
+
+ if err := updateGeoDatabases(); err != nil {
+ log.Errorln("[GEO] update GEO database error: %s", err.Error())
+ return err
+ }
+
+ return nil
+}
+
+func getUpdateTime() (err error, time time.Time) {
+ filesToCheck := []string{
+ C.Path.GeoIP(),
+ C.Path.MMDB(),
+ C.Path.ASN(),
+ C.Path.GeoSite(),
+ }
+
+ for _, file := range filesToCheck {
+ var fileInfo os.FileInfo
+ fileInfo, err = os.Stat(file)
+ if err == nil {
+ return nil, fileInfo.ModTime()
+ }
+ }
+
+ return
+}
+
+func RegisterGeoUpdater() {
+ if updateInterval <= 0 {
+ log.Errorln("[GEO] Invalid update interval: %d", updateInterval)
+ return
+ }
+
+ go func() {
+ ticker := time.NewTicker(time.Duration(updateInterval) * time.Hour)
+ defer ticker.Stop()
+
+ err, lastUpdate := getUpdateTime()
+ if err != nil {
+ log.Errorln("[GEO] Get GEO database update time error: %s", err.Error())
+ return
+ }
+
+ log.Infoln("[GEO] last update time %s", lastUpdate)
+ if lastUpdate.Add(time.Duration(updateInterval) * time.Hour).Before(time.Now()) {
+ log.Infoln("[GEO] Database has not been updated for %v, update now", time.Duration(updateInterval)*time.Hour)
+ if err := UpdateGeoDatabases(); err != nil {
+ log.Errorln("[GEO] Failed to update GEO database: %s", err.Error())
+ return
+ }
+ }
+
+ for range ticker.C {
+ log.Infoln("[GEO] updating database every %d hours", updateInterval)
+ if err := UpdateGeoDatabases(); err != nil {
+ log.Errorln("[GEO] Failed to update GEO database: %s", err.Error())
+ }
+ }
+ }()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/update_ui.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/update_ui.go
new file mode 100644
index 0000000..bd2a588
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/update_ui.go
@@ -0,0 +1,178 @@
+package updater
+
+import (
+ "archive/zip"
+ "fmt"
+ "io"
+ "os"
+ "path"
+ "path/filepath"
+ "strings"
+ "sync"
+
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+type UIUpdater struct {
+ externalUIURL string
+ externalUIPath string
+ autoDownloadUI bool
+
+ mutex sync.Mutex
+}
+
+var DefaultUiUpdater = &UIUpdater{}
+
+func NewUiUpdater(externalUI, externalUIURL, externalUIName string) *UIUpdater {
+ updater := &UIUpdater{}
+ // checkout externalUI exist
+ if externalUI != "" {
+ updater.autoDownloadUI = true
+ updater.externalUIPath = C.Path.Resolve(externalUI)
+ } else {
+ // default externalUI path
+ updater.externalUIPath = path.Join(C.Path.HomeDir(), "ui")
+ }
+
+ // checkout UIpath/name exist
+ if externalUIName != "" {
+ updater.autoDownloadUI = true
+ updater.externalUIPath = path.Join(updater.externalUIPath, externalUIName)
+ }
+
+ if externalUIURL != "" {
+ updater.externalUIURL = externalUIURL
+ }
+ return updater
+}
+
+func (u *UIUpdater) AutoDownloadUI() {
+ u.mutex.Lock()
+ defer u.mutex.Unlock()
+ if u.autoDownloadUI {
+ dirEntries, _ := os.ReadDir(u.externalUIPath)
+ if len(dirEntries) > 0 {
+ log.Infoln("UI already exists, skip downloading")
+ } else {
+ log.Infoln("External UI downloading ...")
+ err := u.downloadUI()
+ if err != nil {
+ log.Errorln("Error downloading UI: %s", err)
+ }
+ }
+ }
+}
+
+func (u *UIUpdater) DownloadUI() error {
+ u.mutex.Lock()
+ defer u.mutex.Unlock()
+ return u.downloadUI()
+}
+
+func (u *UIUpdater) downloadUI() error {
+ err := u.prepareUIPath()
+ if err != nil {
+ return fmt.Errorf("prepare UI path failed: %w", err)
+ }
+
+ data, err := downloadForBytes(u.externalUIURL)
+ if err != nil {
+ return fmt.Errorf("can't download file: %w", err)
+ }
+
+ saved := path.Join(C.Path.HomeDir(), "download.zip")
+ if err = saveFile(data, saved); err != nil {
+ return fmt.Errorf("can't save zip file: %w", err)
+ }
+ defer os.Remove(saved)
+
+ err = cleanup(u.externalUIPath)
+ if err != nil {
+ if !os.IsNotExist(err) {
+ return fmt.Errorf("cleanup exist file error: %w", err)
+ }
+ }
+
+ unzipFolder, err := unzip(saved, C.Path.HomeDir())
+ if err != nil {
+ return fmt.Errorf("can't extract zip file: %w", err)
+ }
+
+ err = os.Rename(unzipFolder, u.externalUIPath)
+ if err != nil {
+ return fmt.Errorf("rename UI folder failed: %w", err)
+ }
+ return nil
+}
+
+func (u *UIUpdater) prepareUIPath() error {
+ if _, err := os.Stat(u.externalUIPath); os.IsNotExist(err) {
+ log.Infoln("dir %s does not exist, creating", u.externalUIPath)
+ if err := os.MkdirAll(u.externalUIPath, os.ModePerm); err != nil {
+ log.Warnln("create dir %s error: %s", u.externalUIPath, err)
+ }
+ }
+ return nil
+}
+
+func unzip(src, dest string) (string, error) {
+ r, err := zip.OpenReader(src)
+ if err != nil {
+ return "", err
+ }
+ defer r.Close()
+ var extractedFolder string
+ for _, f := range r.File {
+ fpath := filepath.Join(dest, f.Name)
+ if !strings.HasPrefix(fpath, filepath.Clean(dest)+string(os.PathSeparator)) {
+ return "", fmt.Errorf("invalid file path: %s", fpath)
+ }
+ if f.FileInfo().IsDir() {
+ os.MkdirAll(fpath, os.ModePerm)
+ continue
+ }
+ if err = os.MkdirAll(filepath.Dir(fpath), os.ModePerm); err != nil {
+ return "", err
+ }
+ outFile, err := os.OpenFile(fpath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
+ if err != nil {
+ return "", err
+ }
+ rc, err := f.Open()
+ if err != nil {
+ return "", err
+ }
+ _, err = io.Copy(outFile, rc)
+ outFile.Close()
+ rc.Close()
+ if err != nil {
+ return "", err
+ }
+ if extractedFolder == "" {
+ extractedFolder = filepath.Dir(fpath)
+ }
+ }
+ return extractedFolder, nil
+}
+
+func cleanup(root string) error {
+ if _, err := os.Stat(root); os.IsNotExist(err) {
+ return nil
+ }
+ return filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
+ if err != nil {
+ return err
+ }
+ if info.IsDir() {
+ if err := os.RemoveAll(path); err != nil {
+ return err
+ }
+ } else {
+ if err := os.Remove(path); err != nil {
+ return err
+ }
+ }
+ return nil
+ })
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/utils.go b/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/utils.go
new file mode 100644
index 0000000..b5c694f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/component/updater/utils.go
@@ -0,0 +1,91 @@
+package updater
+
+import (
+ "context"
+ "fmt"
+ "io"
+ "net/http"
+ "os"
+ "time"
+
+ mihomoHttp "github.com/metacubex/mihomo/component/http"
+
+ "golang.org/x/exp/constraints"
+)
+
+const defaultHttpTimeout = time.Second * 90
+
+func downloadForBytes(url string) ([]byte, error) {
+ ctx, cancel := context.WithTimeout(context.Background(), defaultHttpTimeout)
+ defer cancel()
+ resp, err := mihomoHttp.HttpRequest(ctx, url, http.MethodGet, nil, nil)
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+
+ return io.ReadAll(resp.Body)
+}
+
+func saveFile(bytes []byte, path string) error {
+ return os.WriteFile(path, bytes, 0o644)
+}
+
+// LimitReachedError records the limit and the operation that caused it.
+type LimitReachedError struct {
+ Limit int64
+}
+
+// Error implements the [error] interface for *LimitReachedError.
+//
+// TODO(a.garipov): Think about error string format.
+func (lre *LimitReachedError) Error() string {
+ return fmt.Sprintf("attempted to read more than %d bytes", lre.Limit)
+}
+
+// limitedReader is a wrapper for [io.Reader] limiting the input and dealing
+// with errors package.
+type limitedReader struct {
+ r io.Reader
+ limit int64
+ n int64
+}
+
+// Read implements the [io.Reader] interface.
+func (lr *limitedReader) Read(p []byte) (n int, err error) {
+ if lr.n == 0 {
+ return 0, &LimitReachedError{
+ Limit: lr.limit,
+ }
+ }
+
+ p = p[:Min(lr.n, int64(len(p)))]
+
+ n, err = lr.r.Read(p)
+ lr.n -= int64(n)
+
+ return n, err
+}
+
+// LimitReader wraps Reader to make it's Reader stop with ErrLimitReached after
+// n bytes read.
+func LimitReader(r io.Reader, n int64) (limited io.Reader, err error) {
+ if n < 0 {
+ return nil, &updateError{Message: "limit must be non-negative"}
+ }
+
+ return &limitedReader{
+ r: r,
+ limit: n,
+ n: n,
+ }, nil
+}
+
+// Min returns the smaller of x or y.
+func Min[T constraints.Integer | ~string](x, y T) (res T) {
+ if x < y {
+ return x
+ }
+
+ return y
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/config/config.go b/Android-kotlin-Code/core/src/foss/golang/clash/config/config.go
new file mode 100644
index 0000000..ba6097b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/config/config.go
@@ -0,0 +1,1817 @@
+package config
+
+import (
+ "container/list"
+ "errors"
+ "fmt"
+ "net"
+ "net/netip"
+ "net/url"
+ "strings"
+ "time"
+ _ "unsafe"
+
+ "github.com/metacubex/mihomo/adapter"
+ "github.com/metacubex/mihomo/adapter/outbound"
+ "github.com/metacubex/mihomo/adapter/outboundgroup"
+ "github.com/metacubex/mihomo/adapter/provider"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/auth"
+ "github.com/metacubex/mihomo/component/cidr"
+ "github.com/metacubex/mihomo/component/fakeip"
+ "github.com/metacubex/mihomo/component/geodata"
+ P "github.com/metacubex/mihomo/component/process"
+ "github.com/metacubex/mihomo/component/resolver"
+ "github.com/metacubex/mihomo/component/sniffer"
+ "github.com/metacubex/mihomo/component/trie"
+ C "github.com/metacubex/mihomo/constant"
+ providerTypes "github.com/metacubex/mihomo/constant/provider"
+ snifferTypes "github.com/metacubex/mihomo/constant/sniffer"
+ "github.com/metacubex/mihomo/dns"
+ L "github.com/metacubex/mihomo/listener"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/log"
+ R "github.com/metacubex/mihomo/rules"
+ RC "github.com/metacubex/mihomo/rules/common"
+ RP "github.com/metacubex/mihomo/rules/provider"
+ T "github.com/metacubex/mihomo/tunnel"
+
+ orderedmap "github.com/wk8/go-ordered-map/v2"
+ "golang.org/x/exp/slices"
+ "gopkg.in/yaml.v3"
+)
+
+// General config
+type General struct {
+ Inbound
+ Mode T.TunnelMode `json:"mode"`
+ UnifiedDelay bool `json:"unified-delay"`
+ LogLevel log.LogLevel `json:"log-level"`
+ IPv6 bool `json:"ipv6"`
+ Interface string `json:"interface-name"`
+ RoutingMark int `json:"routing-mark"`
+ GeoXUrl GeoXUrl `json:"geox-url"`
+ GeoAutoUpdate bool `json:"geo-auto-update"`
+ GeoUpdateInterval int `json:"geo-update-interval"`
+ GeodataMode bool `json:"geodata-mode"`
+ GeodataLoader string `json:"geodata-loader"`
+ GeositeMatcher string `json:"geosite-matcher"`
+ TCPConcurrent bool `json:"tcp-concurrent"`
+ FindProcessMode P.FindProcessMode `json:"find-process-mode"`
+ Sniffing bool `json:"sniffing"`
+ GlobalClientFingerprint string `json:"global-client-fingerprint"`
+ GlobalUA string `json:"global-ua"`
+ ETagSupport bool `json:"etag-support"`
+ KeepAliveIdle int `json:"keep-alive-idle"`
+ KeepAliveInterval int `json:"keep-alive-interval"`
+ DisableKeepAlive bool `json:"disable-keep-alive"`
+}
+
+// Inbound config
+type Inbound struct {
+ Port int `json:"port"`
+ SocksPort int `json:"socks-port"`
+ RedirPort int `json:"redir-port"`
+ TProxyPort int `json:"tproxy-port"`
+ MixedPort int `json:"mixed-port"`
+ Tun LC.Tun `json:"tun"`
+ TuicServer LC.TuicServer `json:"tuic-server"`
+ ShadowSocksConfig string `json:"ss-config"`
+ VmessConfig string `json:"vmess-config"`
+ Authentication []string `json:"authentication"`
+ SkipAuthPrefixes []netip.Prefix `json:"skip-auth-prefixes"`
+ LanAllowedIPs []netip.Prefix `json:"lan-allowed-ips"`
+ LanDisAllowedIPs []netip.Prefix `json:"lan-disallowed-ips"`
+ AllowLan bool `json:"allow-lan"`
+ BindAddress string `json:"bind-address"`
+ InboundTfo bool `json:"inbound-tfo"`
+ InboundMPTCP bool `json:"inbound-mptcp"`
+}
+
+// GeoXUrl config
+type GeoXUrl struct {
+ GeoIp string `json:"geo-ip"`
+ Mmdb string `json:"mmdb"`
+ ASN string `json:"asn"`
+ GeoSite string `json:"geo-site"`
+}
+
+// Controller config
+type Controller struct {
+ ExternalController string
+ ExternalControllerTLS string
+ ExternalControllerUnix string
+ ExternalControllerPipe string
+ ExternalUI string
+ ExternalUIURL string
+ ExternalUIName string
+ ExternalDohServer string
+ Secret string
+ Cors Cors
+}
+
+type Cors struct {
+ AllowOrigins []string
+ AllowPrivateNetwork bool
+}
+
+// Experimental config
+type Experimental struct {
+ Fingerprints []string
+ QUICGoDisableGSO bool
+ QUICGoDisableECN bool
+ IP4PEnable bool
+}
+
+// IPTables config
+type IPTables struct {
+ Enable bool
+ InboundInterface string
+ Bypass []string
+ DnsRedirect bool
+}
+
+// NTP config
+type NTP struct {
+ Enable bool
+ Server string
+ Port int
+ Interval int
+ DialerProxy string
+ WriteToSystem bool
+}
+
+// DNS config
+type DNS struct {
+ Enable bool
+ PreferH3 bool
+ IPv6 bool
+ IPv6Timeout uint
+ UseSystemHosts bool
+ NameServer []dns.NameServer
+ Fallback []dns.NameServer
+ FallbackIPFilter []C.IpMatcher
+ FallbackDomainFilter []C.DomainMatcher
+ Listen string
+ EnhancedMode C.DNSMode
+ DefaultNameserver []dns.NameServer
+ CacheAlgorithm string
+ FakeIPRange *fakeip.Pool
+ Hosts *trie.DomainTrie[resolver.HostValue]
+ NameServerPolicy []dns.Policy
+ ProxyServerNameserver []dns.NameServer
+ DirectNameServer []dns.NameServer
+ DirectFollowPolicy bool
+}
+
+// Profile config
+type Profile struct {
+ StoreSelected bool
+ StoreFakeIP bool
+}
+
+// TLS config
+type TLS struct {
+ Certificate string
+ PrivateKey string
+ CustomTrustCert []string
+}
+
+// Config is mihomo config manager
+type Config struct {
+ General *General
+ Controller *Controller
+ Experimental *Experimental
+ IPTables *IPTables
+ NTP *NTP
+ DNS *DNS
+ Hosts *trie.DomainTrie[resolver.HostValue]
+ Profile *Profile
+ Rules []C.Rule
+ SubRules map[string][]C.Rule
+ Users []auth.AuthUser
+ Proxies map[string]C.Proxy
+ Listeners map[string]C.InboundListener
+ Providers map[string]providerTypes.ProxyProvider
+ RuleProviders map[string]providerTypes.RuleProvider
+ Tunnels []LC.Tunnel
+ Sniffer *sniffer.Config
+ TLS *TLS
+}
+
+type RawCors struct {
+ AllowOrigins []string `yaml:"allow-origins" json:"allow-origins"`
+ AllowPrivateNetwork bool `yaml:"allow-private-network" json:"allow-private-network"`
+}
+
+type RawDNS struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ PreferH3 bool `yaml:"prefer-h3" json:"prefer-h3"`
+ IPv6 bool `yaml:"ipv6" json:"ipv6"`
+ IPv6Timeout uint `yaml:"ipv6-timeout" json:"ipv6-timeout"`
+ UseHosts bool `yaml:"use-hosts" json:"use-hosts"`
+ UseSystemHosts bool `yaml:"use-system-hosts" json:"use-system-hosts"`
+ RespectRules bool `yaml:"respect-rules" json:"respect-rules"`
+ NameServer []string `yaml:"nameserver" json:"nameserver"`
+ Fallback []string `yaml:"fallback" json:"fallback"`
+ FallbackFilter RawFallbackFilter `yaml:"fallback-filter" json:"fallback-filter"`
+ Listen string `yaml:"listen" json:"listen"`
+ EnhancedMode C.DNSMode `yaml:"enhanced-mode" json:"enhanced-mode"`
+ FakeIPRange string `yaml:"fake-ip-range" json:"fake-ip-range"`
+ FakeIPFilter []string `yaml:"fake-ip-filter" json:"fake-ip-filter"`
+ FakeIPFilterMode C.FilterMode `yaml:"fake-ip-filter-mode" json:"fake-ip-filter-mode"`
+ DefaultNameserver []string `yaml:"default-nameserver" json:"default-nameserver"`
+ CacheAlgorithm string `yaml:"cache-algorithm" json:"cache-algorithm"`
+ NameServerPolicy *orderedmap.OrderedMap[string, any] `yaml:"nameserver-policy" json:"nameserver-policy"`
+ ProxyServerNameserver []string `yaml:"proxy-server-nameserver" json:"proxy-server-nameserver"`
+ DirectNameServer []string `yaml:"direct-nameserver" json:"direct-nameserver"`
+ DirectNameServerFollowPolicy bool `yaml:"direct-nameserver-follow-policy" json:"direct-nameserver-follow-policy"`
+}
+
+type RawFallbackFilter struct {
+ GeoIP bool `yaml:"geoip" json:"geoip"`
+ GeoIPCode string `yaml:"geoip-code" json:"geoip-code"`
+ IPCIDR []string `yaml:"ipcidr" json:"ipcidr"`
+ Domain []string `yaml:"domain" json:"domain"`
+ GeoSite []string `yaml:"geosite" json:"geosite"`
+}
+
+type RawClashForAndroid struct {
+ AppendSystemDNS bool `yaml:"append-system-dns" json:"append-system-dns"`
+ UiSubtitlePattern string `yaml:"ui-subtitle-pattern" json:"ui-subtitle-pattern"`
+}
+
+type RawNTP struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ Server string `yaml:"server" json:"server"`
+ Port int `yaml:"port" json:"port"`
+ Interval int `yaml:"interval" json:"interval"`
+ DialerProxy string `yaml:"dialer-proxy" json:"dialer-proxy"`
+ WriteToSystem bool `yaml:"write-to-system" json:"write-to-system"`
+}
+
+type RawTun struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ Device string `yaml:"device" json:"device"`
+ Stack C.TUNStack `yaml:"stack" json:"stack"`
+ DNSHijack []string `yaml:"dns-hijack" json:"dns-hijack"`
+ AutoRoute bool `yaml:"auto-route" json:"auto-route"`
+ AutoDetectInterface bool `yaml:"auto-detect-interface"`
+
+ MTU uint32 `yaml:"mtu" json:"mtu,omitempty"`
+ GSO bool `yaml:"gso" json:"gso,omitempty"`
+ GSOMaxSize uint32 `yaml:"gso-max-size" json:"gso-max-size,omitempty"`
+ //Inet4Address []netip.Prefix `yaml:"inet4-address" json:"inet4-address,omitempty"`
+ Inet6Address []netip.Prefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
+ IPRoute2TableIndex int `yaml:"iproute2-table-index" json:"iproute2-table-index,omitempty"`
+ IPRoute2RuleIndex int `yaml:"iproute2-rule-index" json:"iproute2-rule-index,omitempty"`
+ AutoRedirect bool `yaml:"auto-redirect" json:"auto-redirect,omitempty"`
+ AutoRedirectInputMark uint32 `yaml:"auto-redirect-input-mark" json:"auto-redirect-input-mark,omitempty"`
+ AutoRedirectOutputMark uint32 `yaml:"auto-redirect-output-mark" json:"auto-redirect-output-mark,omitempty"`
+ StrictRoute bool `yaml:"strict-route" json:"strict-route,omitempty"`
+ RouteAddress []netip.Prefix `yaml:"route-address" json:"route-address,omitempty"`
+ RouteAddressSet []string `yaml:"route-address-set" json:"route-address-set,omitempty"`
+ RouteExcludeAddress []netip.Prefix `yaml:"route-exclude-address" json:"route-exclude-address,omitempty"`
+ RouteExcludeAddressSet []string `yaml:"route-exclude-address-set" json:"route-exclude-address-set,omitempty"`
+ IncludeInterface []string `yaml:"include-interface" json:"include-interface,omitempty"`
+ ExcludeInterface []string `yaml:"exclude-interface" json:"exclude-interface,omitempty"`
+ IncludeUID []uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
+ IncludeUIDRange []string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
+ ExcludeUID []uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
+ ExcludeUIDRange []string `yaml:"exclude-uid-range" json:"exclude-uid-range,omitempty"`
+ IncludeAndroidUser []int `yaml:"include-android-user" json:"include-android-user,omitempty"`
+ IncludePackage []string `yaml:"include-package" json:"include-package,omitempty"`
+ ExcludePackage []string `yaml:"exclude-package" json:"exclude-package,omitempty"`
+ EndpointIndependentNat bool `yaml:"endpoint-independent-nat" json:"endpoint-independent-nat,omitempty"`
+ UDPTimeout int64 `yaml:"udp-timeout" json:"udp-timeout,omitempty"`
+ FileDescriptor int `yaml:"file-descriptor" json:"file-descriptor"`
+
+ Inet4RouteAddress []netip.Prefix `yaml:"inet4-route-address" json:"inet4-route-address,omitempty"`
+ Inet6RouteAddress []netip.Prefix `yaml:"inet6-route-address" json:"inet6-route-address,omitempty"`
+ Inet4RouteExcludeAddress []netip.Prefix `yaml:"inet4-route-exclude-address" json:"inet4-route-exclude-address,omitempty"`
+ Inet6RouteExcludeAddress []netip.Prefix `yaml:"inet6-route-exclude-address" json:"inet6-route-exclude-address,omitempty"`
+}
+
+type RawTuicServer struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ Listen string `yaml:"listen" json:"listen"`
+ Token []string `yaml:"token" json:"token"`
+ Users map[string]string `yaml:"users" json:"users,omitempty"`
+ Certificate string `yaml:"certificate" json:"certificate"`
+ PrivateKey string `yaml:"private-key" json:"private-key"`
+ CongestionController string `yaml:"congestion-controller" json:"congestion-controller,omitempty"`
+ MaxIdleTime int `yaml:"max-idle-time" json:"max-idle-time,omitempty"`
+ AuthenticationTimeout int `yaml:"authentication-timeout" json:"authentication-timeout,omitempty"`
+ ALPN []string `yaml:"alpn" json:"alpn,omitempty"`
+ MaxUdpRelayPacketSize int `yaml:"max-udp-relay-packet-size" json:"max-udp-relay-packet-size,omitempty"`
+ CWND int `yaml:"cwnd" json:"cwnd,omitempty"`
+}
+
+type RawIPTables struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ InboundInterface string `yaml:"inbound-interface" json:"inbound-interface"`
+ Bypass []string `yaml:"bypass" json:"bypass"`
+ DnsRedirect bool `yaml:"dns-redirect" json:"dns-redirect"`
+}
+
+type RawExperimental struct {
+ Fingerprints []string `yaml:"fingerprints"`
+ QUICGoDisableGSO bool `yaml:"quic-go-disable-gso"`
+ QUICGoDisableECN bool `yaml:"quic-go-disable-ecn"`
+ IP4PEnable bool `yaml:"dialer-ip4p-convert"`
+}
+
+type RawProfile struct {
+ StoreSelected bool `yaml:"store-selected" json:"store-selected"`
+ StoreFakeIP bool `yaml:"store-fake-ip" json:"store-fake-ip"`
+}
+
+type RawGeoXUrl struct {
+ GeoIp string `yaml:"geoip" json:"geoip"`
+ Mmdb string `yaml:"mmdb" json:"mmdb"`
+ ASN string `yaml:"asn" json:"asn"`
+ GeoSite string `yaml:"geosite" json:"geosite"`
+}
+
+type RawSniffer struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ OverrideDest bool `yaml:"override-destination" json:"override-destination"`
+ Sniffing []string `yaml:"sniffing" json:"sniffing"`
+ ForceDomain []string `yaml:"force-domain" json:"force-domain"`
+ SkipSrcAddress []string `yaml:"skip-src-address" json:"skip-src-address"`
+ SkipDstAddress []string `yaml:"skip-dst-address" json:"skip-dst-address"`
+ SkipDomain []string `yaml:"skip-domain" json:"skip-domain"`
+ Ports []string `yaml:"port-whitelist" json:"port-whitelist"`
+ ForceDnsMapping bool `yaml:"force-dns-mapping" json:"force-dns-mapping"`
+ ParsePureIp bool `yaml:"parse-pure-ip" json:"parse-pure-ip"`
+
+ Sniff map[string]RawSniffingConfig `yaml:"sniff" json:"sniff"`
+}
+
+type RawSniffingConfig struct {
+ Ports []string `yaml:"ports" json:"ports"`
+ OverrideDest *bool `yaml:"override-destination" json:"override-destination"`
+}
+
+type RawTLS struct {
+ Certificate string `yaml:"certificate" json:"certificate"`
+ PrivateKey string `yaml:"private-key" json:"private-key"`
+ CustomTrustCert []string `yaml:"custom-certifactes" json:"custom-certifactes"`
+}
+
+type RawConfig struct {
+ Port int `yaml:"port" json:"port"`
+ SocksPort int `yaml:"socks-port" json:"socks-port"`
+ RedirPort int `yaml:"redir-port" json:"redir-port"`
+ TProxyPort int `yaml:"tproxy-port" json:"tproxy-port"`
+ MixedPort int `yaml:"mixed-port" json:"mixed-port"`
+ ShadowSocksConfig string `yaml:"ss-config" json:"ss-config"`
+ VmessConfig string `yaml:"vmess-config" json:"vmess-config"`
+ InboundTfo bool `yaml:"inbound-tfo" json:"inbound-tfo"`
+ InboundMPTCP bool `yaml:"inbound-mptcp" json:"inbound-mptcp"`
+ Authentication []string `yaml:"authentication" json:"authentication"`
+ SkipAuthPrefixes []netip.Prefix `yaml:"skip-auth-prefixes" json:"skip-auth-prefixes"`
+ LanAllowedIPs []netip.Prefix `yaml:"lan-allowed-ips" json:"lan-allowed-ips"`
+ LanDisAllowedIPs []netip.Prefix `yaml:"lan-disallowed-ips" json:"lan-disallowed-ips"`
+ AllowLan bool `yaml:"allow-lan" json:"allow-lan"`
+ BindAddress string `yaml:"bind-address" json:"bind-address"`
+ Mode T.TunnelMode `yaml:"mode" json:"mode"`
+ UnifiedDelay bool `yaml:"unified-delay" json:"unified-delay"`
+ LogLevel log.LogLevel `yaml:"log-level" json:"log-level"`
+ IPv6 bool `yaml:"ipv6" json:"ipv6"`
+ ExternalController string `yaml:"external-controller" json:"external-controller"`
+ ExternalControllerPipe string `yaml:"external-controller-pipe" json:"external-controller-pipe"`
+ ExternalControllerUnix string `yaml:"external-controller-unix" json:"external-controller-unix"`
+ ExternalControllerTLS string `yaml:"external-controller-tls" json:"external-controller-tls"`
+ ExternalControllerCors RawCors `yaml:"external-controller-cors" json:"external-controller-cors"`
+ ExternalUI string `yaml:"external-ui" json:"external-ui"`
+ ExternalUIURL string `yaml:"external-ui-url" json:"external-ui-url"`
+ ExternalUIName string `yaml:"external-ui-name" json:"external-ui-name"`
+ ExternalDohServer string `yaml:"external-doh-server" json:"external-doh-server"`
+ Secret string `yaml:"secret" json:"secret"`
+ Interface string `yaml:"interface-name" json:"interface-name"`
+ RoutingMark int `yaml:"routing-mark" json:"routing-mark"`
+ Tunnels []LC.Tunnel `yaml:"tunnels" json:"tunnels"`
+ GeoAutoUpdate bool `yaml:"geo-auto-update" json:"geo-auto-update"`
+ GeoUpdateInterval int `yaml:"geo-update-interval" json:"geo-update-interval"`
+ GeodataMode bool `yaml:"geodata-mode" json:"geodata-mode"`
+ GeodataLoader string `yaml:"geodata-loader" json:"geodata-loader"`
+ GeositeMatcher string `yaml:"geosite-matcher" json:"geosite-matcher"`
+ TCPConcurrent bool `yaml:"tcp-concurrent" json:"tcp-concurrent"`
+ FindProcessMode P.FindProcessMode `yaml:"find-process-mode" json:"find-process-mode"`
+ GlobalClientFingerprint string `yaml:"global-client-fingerprint" json:"global-client-fingerprint"`
+ GlobalUA string `yaml:"global-ua" json:"global-ua"`
+ ETagSupport bool `yaml:"etag-support" json:"etag-support"`
+ KeepAliveIdle int `yaml:"keep-alive-idle" json:"keep-alive-idle"`
+ KeepAliveInterval int `yaml:"keep-alive-interval" json:"keep-alive-interval"`
+ DisableKeepAlive bool `yaml:"disable-keep-alive" json:"disable-keep-alive"`
+
+ ProxyProvider map[string]map[string]any `yaml:"proxy-providers" json:"proxy-providers"`
+ RuleProvider map[string]map[string]any `yaml:"rule-providers" json:"rule-providers"`
+ Proxy []map[string]any `yaml:"proxies" json:"proxies"`
+ ProxyGroup []map[string]any `yaml:"proxy-groups" json:"proxy-groups"`
+ Rule []string `yaml:"rules" json:"rule"`
+ SubRules map[string][]string `yaml:"sub-rules" json:"sub-rules"`
+ Listeners []map[string]any `yaml:"listeners" json:"listeners"`
+ Hosts map[string]any `yaml:"hosts" json:"hosts"`
+ DNS RawDNS `yaml:"dns" json:"dns"`
+ NTP RawNTP `yaml:"ntp" json:"ntp"`
+ Tun RawTun `yaml:"tun" json:"tun"`
+ TuicServer RawTuicServer `yaml:"tuic-server" json:"tuic-server"`
+ IPTables RawIPTables `yaml:"iptables" json:"iptables"`
+ Experimental RawExperimental `yaml:"experimental" json:"experimental"`
+ Profile RawProfile `yaml:"profile" json:"profile"`
+ GeoXUrl RawGeoXUrl `yaml:"geox-url" json:"geox-url"`
+ Sniffer RawSniffer `yaml:"sniffer" json:"sniffer"`
+ TLS RawTLS `yaml:"tls" json:"tls"`
+
+ ClashForAndroid RawClashForAndroid `yaml:"clash-for-android" json:"clash-for-android"`
+}
+
+var (
+ GroupsList = list.New()
+ ProxiesList = list.New()
+ ParsingProxiesCallback func(groupsList *list.List, proxiesList *list.List)
+)
+
+// Parse config
+func Parse(buf []byte) (*Config, error) {
+ rawCfg, err := UnmarshalRawConfig(buf)
+ if err != nil {
+ return nil, err
+ }
+
+ return ParseRawConfig(rawCfg)
+}
+
+func DefaultRawConfig() *RawConfig {
+ return &RawConfig{
+ AllowLan: false,
+ BindAddress: "*",
+ LanAllowedIPs: []netip.Prefix{netip.MustParsePrefix("0.0.0.0/0"), netip.MustParsePrefix("::/0")},
+ IPv6: true,
+ Mode: T.Rule,
+ GeoAutoUpdate: false,
+ GeoUpdateInterval: 24,
+ GeodataMode: geodata.GeodataMode(),
+ GeodataLoader: "memconservative",
+ UnifiedDelay: false,
+ Authentication: []string{},
+ LogLevel: log.INFO,
+ Hosts: map[string]any{},
+ Rule: []string{},
+ Proxy: []map[string]any{},
+ ProxyGroup: []map[string]any{},
+ TCPConcurrent: false,
+ FindProcessMode: P.FindProcessStrict,
+ GlobalUA: "clash.meta/" + C.Version,
+ ETagSupport: true,
+ DNS: RawDNS{
+ Enable: false,
+ IPv6: false,
+ UseHosts: true,
+ UseSystemHosts: true,
+ IPv6Timeout: 100,
+ EnhancedMode: C.DNSMapping,
+ FakeIPRange: "198.18.0.1/16",
+ FallbackFilter: RawFallbackFilter{
+ GeoIP: true,
+ GeoIPCode: "CN",
+ IPCIDR: []string{},
+ GeoSite: []string{},
+ },
+ DefaultNameserver: []string{
+ "114.114.114.114",
+ "223.5.5.5",
+ "8.8.8.8",
+ "1.0.0.1",
+ },
+ NameServer: []string{
+ "https://doh.pub/dns-query",
+ "tls://223.5.5.5:853",
+ },
+ FakeIPFilter: []string{
+ "dns.msftnsci.com",
+ "www.msftnsci.com",
+ "www.msftconnecttest.com",
+ },
+ FakeIPFilterMode: C.FilterBlackList,
+ },
+ NTP: RawNTP{
+ Enable: false,
+ WriteToSystem: false,
+ Server: "time.apple.com",
+ Port: 123,
+ Interval: 30,
+ },
+ Tun: RawTun{
+ Enable: false,
+ Device: "",
+ Stack: C.TunGvisor,
+ DNSHijack: []string{"0.0.0.0:53"}, // default hijack all dns query
+ AutoRoute: true,
+ AutoDetectInterface: true,
+ Inet6Address: []netip.Prefix{netip.MustParsePrefix("fdfe:dcba:9876::1/126")},
+ },
+ TuicServer: RawTuicServer{
+ Enable: false,
+ Token: nil,
+ Users: nil,
+ Certificate: "",
+ PrivateKey: "",
+ Listen: "",
+ CongestionController: "",
+ MaxIdleTime: 15000,
+ AuthenticationTimeout: 1000,
+ ALPN: []string{"h3"},
+ MaxUdpRelayPacketSize: 1500,
+ },
+ IPTables: RawIPTables{
+ Enable: false,
+ InboundInterface: "lo",
+ Bypass: []string{},
+ DnsRedirect: true,
+ },
+ Experimental: RawExperimental{
+ // https://github.com/quic-go/quic-go/issues/4178
+ // Quic-go currently cannot automatically fall back on platforms that do not support ecn, so this feature is turned off by default.
+ QUICGoDisableECN: true,
+ },
+ Profile: RawProfile{
+ StoreSelected: true,
+ },
+ GeoXUrl: RawGeoXUrl{
+ Mmdb: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.metadb",
+ ASN: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/GeoLite2-ASN.mmdb",
+ GeoIp: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.dat",
+ GeoSite: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat",
+ },
+ Sniffer: RawSniffer{
+ Enable: false,
+ Sniff: map[string]RawSniffingConfig{},
+ ForceDomain: []string{},
+ SkipDomain: []string{},
+ Ports: []string{},
+ ForceDnsMapping: true,
+ ParsePureIp: true,
+ OverrideDest: true,
+ },
+ ExternalUIURL: "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip",
+ ExternalControllerCors: RawCors{
+ AllowOrigins: []string{"*"},
+ AllowPrivateNetwork: true,
+ },
+ }
+}
+
+func UnmarshalRawConfig(buf []byte) (*RawConfig, error) {
+ // config with default value
+ rawCfg := DefaultRawConfig()
+
+ if err := yaml.Unmarshal(buf, rawCfg); err != nil {
+ return nil, err
+ }
+
+ return rawCfg, nil
+}
+
+func ParseRawConfig(rawCfg *RawConfig) (*Config, error) {
+ config := &Config{}
+ log.Infoln("Start initial configuration in progress") //Segment finished in xxm
+ startTime := time.Now()
+
+ general, err := parseGeneral(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.General = general
+
+ // We need to temporarily apply some configuration in general and roll back after parsing the complete configuration.
+ // The loading and downloading of geodata in the parseRules and parseRuleProviders rely on these.
+ // This implementation is very disgusting, but there is currently no better solution
+ rollback := temporaryUpdateGeneral(config.General)
+ defer rollback()
+
+ controller, err := parseController(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.Controller = controller
+
+ experimental, err := parseExperimental(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.Experimental = experimental
+
+ iptables, err := parseIPTables(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.IPTables = iptables
+
+ ntpCfg, err := parseNTP(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.NTP = ntpCfg
+
+ profile, err := parseProfile(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.Profile = profile
+
+ tlsCfg, err := parseTLS(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.TLS = tlsCfg
+
+ proxies, providers, err := parseProxies(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.Proxies = proxies
+ config.Providers = providers
+
+ listener, err := parseListeners(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.Listeners = listener
+
+ log.Infoln("Geodata Loader mode: %s", geodata.LoaderName())
+ log.Infoln("Geosite Matcher implementation: %s", geodata.SiteMatcherName())
+ ruleProviders, err := parseRuleProviders(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.RuleProviders = ruleProviders
+
+ subRules, err := parseSubRules(rawCfg, proxies, ruleProviders)
+ if err != nil {
+ return nil, err
+ }
+ config.SubRules = subRules
+
+ rules, err := parseRules(rawCfg.Rule, proxies, ruleProviders, subRules, "rules")
+ if err != nil {
+ return nil, err
+ }
+ config.Rules = rules
+
+ hosts, err := parseHosts(rawCfg)
+ if err != nil {
+ return nil, err
+ }
+ config.Hosts = hosts
+
+ dnsCfg, err := parseDNS(rawCfg, hosts, ruleProviders)
+ if err != nil {
+ return nil, err
+ }
+ config.DNS = dnsCfg
+
+ err = parseTun(rawCfg.Tun, config.General)
+ if err != nil {
+ return nil, err
+ }
+
+ err = parseTuicServer(rawCfg.TuicServer, config.General)
+ if err != nil {
+ return nil, err
+ }
+
+ config.Users = parseAuthentication(rawCfg.Authentication)
+
+ config.Tunnels = rawCfg.Tunnels
+ // verify tunnels
+ for _, t := range config.Tunnels {
+ if len(t.Proxy) > 0 {
+ if _, ok := config.Proxies[t.Proxy]; !ok {
+ return nil, fmt.Errorf("tunnel proxy %s not found", t.Proxy)
+ }
+ }
+ }
+
+ config.Sniffer, err = parseSniffer(rawCfg.Sniffer, ruleProviders)
+ if err != nil {
+ return nil, err
+ }
+
+ elapsedTime := time.Since(startTime) / time.Millisecond // duration in ms
+ log.Infoln("Initial configuration complete, total time: %dms", elapsedTime) //Segment finished in xxm
+
+ return config, nil
+}
+
+//go:linkname temporaryUpdateGeneral
+func temporaryUpdateGeneral(general *General) func()
+
+func parseGeneral(cfg *RawConfig) (*General, error) {
+ return &General{
+ Inbound: Inbound{
+ Port: cfg.Port,
+ SocksPort: cfg.SocksPort,
+ RedirPort: cfg.RedirPort,
+ TProxyPort: cfg.TProxyPort,
+ MixedPort: cfg.MixedPort,
+ ShadowSocksConfig: cfg.ShadowSocksConfig,
+ VmessConfig: cfg.VmessConfig,
+ AllowLan: cfg.AllowLan,
+ SkipAuthPrefixes: cfg.SkipAuthPrefixes,
+ LanAllowedIPs: cfg.LanAllowedIPs,
+ LanDisAllowedIPs: cfg.LanDisAllowedIPs,
+ BindAddress: cfg.BindAddress,
+ InboundTfo: cfg.InboundTfo,
+ InboundMPTCP: cfg.InboundMPTCP,
+ },
+ UnifiedDelay: cfg.UnifiedDelay,
+ Mode: cfg.Mode,
+ LogLevel: cfg.LogLevel,
+ IPv6: cfg.IPv6,
+ Interface: cfg.Interface,
+ RoutingMark: cfg.RoutingMark,
+ GeoXUrl: GeoXUrl{
+ GeoIp: cfg.GeoXUrl.GeoIp,
+ Mmdb: cfg.GeoXUrl.Mmdb,
+ ASN: cfg.GeoXUrl.ASN,
+ GeoSite: cfg.GeoXUrl.GeoSite,
+ },
+ GeoAutoUpdate: cfg.GeoAutoUpdate,
+ GeoUpdateInterval: cfg.GeoUpdateInterval,
+ GeodataMode: cfg.GeodataMode,
+ GeodataLoader: cfg.GeodataLoader,
+ GeositeMatcher: cfg.GeositeMatcher,
+ TCPConcurrent: cfg.TCPConcurrent,
+ FindProcessMode: cfg.FindProcessMode,
+ GlobalClientFingerprint: cfg.GlobalClientFingerprint,
+ GlobalUA: cfg.GlobalUA,
+ ETagSupport: cfg.ETagSupport,
+ KeepAliveIdle: cfg.KeepAliveIdle,
+ KeepAliveInterval: cfg.KeepAliveInterval,
+ DisableKeepAlive: cfg.DisableKeepAlive,
+ }, nil
+}
+
+func parseController(cfg *RawConfig) (*Controller, error) {
+ return &Controller{
+ ExternalController: cfg.ExternalController,
+ ExternalUI: cfg.ExternalUI,
+ ExternalUIURL: cfg.ExternalUIURL,
+ ExternalUIName: cfg.ExternalUIName,
+ Secret: cfg.Secret,
+ ExternalControllerPipe: cfg.ExternalControllerPipe,
+ ExternalControllerUnix: cfg.ExternalControllerUnix,
+ ExternalControllerTLS: cfg.ExternalControllerTLS,
+ ExternalDohServer: cfg.ExternalDohServer,
+ Cors: Cors{
+ AllowOrigins: cfg.ExternalControllerCors.AllowOrigins,
+ AllowPrivateNetwork: cfg.ExternalControllerCors.AllowPrivateNetwork,
+ },
+ }, nil
+}
+
+func parseExperimental(cfg *RawConfig) (*Experimental, error) {
+ return &Experimental{
+ Fingerprints: cfg.Experimental.Fingerprints,
+ QUICGoDisableGSO: cfg.Experimental.QUICGoDisableGSO,
+ QUICGoDisableECN: cfg.Experimental.QUICGoDisableECN,
+ IP4PEnable: cfg.Experimental.IP4PEnable,
+ }, nil
+}
+
+func parseIPTables(cfg *RawConfig) (*IPTables, error) {
+ return &IPTables{
+ Enable: cfg.IPTables.Enable,
+ InboundInterface: cfg.IPTables.InboundInterface,
+ Bypass: cfg.IPTables.Bypass,
+ DnsRedirect: cfg.IPTables.DnsRedirect,
+ }, nil
+}
+
+func parseNTP(cfg *RawConfig) (*NTP, error) {
+ return &NTP{
+ Enable: cfg.NTP.Enable,
+ Server: cfg.NTP.Server,
+ Port: cfg.NTP.Port,
+ Interval: cfg.NTP.Interval,
+ DialerProxy: cfg.NTP.DialerProxy,
+ WriteToSystem: cfg.NTP.WriteToSystem,
+ }, nil
+}
+
+func parseProfile(cfg *RawConfig) (*Profile, error) {
+ return &Profile{
+ StoreSelected: cfg.Profile.StoreSelected,
+ StoreFakeIP: cfg.Profile.StoreFakeIP,
+ }, nil
+}
+
+func parseTLS(cfg *RawConfig) (*TLS, error) {
+ return &TLS{
+ Certificate: cfg.TLS.Certificate,
+ PrivateKey: cfg.TLS.PrivateKey,
+ CustomTrustCert: cfg.TLS.CustomTrustCert,
+ }, nil
+}
+
+func parseProxies(cfg *RawConfig) (proxies map[string]C.Proxy, providersMap map[string]providerTypes.ProxyProvider, err error) {
+ proxies = make(map[string]C.Proxy)
+ providersMap = make(map[string]providerTypes.ProxyProvider)
+ proxiesConfig := cfg.Proxy
+ groupsConfig := cfg.ProxyGroup
+ providersConfig := cfg.ProxyProvider
+
+ var (
+ proxyList []string
+ AllProxies []string
+ hasGlobal bool
+ )
+ proxiesList := list.New()
+ groupsList := list.New()
+
+ proxies["DIRECT"] = adapter.NewProxy(outbound.NewDirect())
+ proxies["REJECT"] = adapter.NewProxy(outbound.NewReject())
+ proxies["REJECT-DROP"] = adapter.NewProxy(outbound.NewRejectDrop())
+ proxies["COMPATIBLE"] = adapter.NewProxy(outbound.NewCompatible())
+ proxies["PASS"] = adapter.NewProxy(outbound.NewPass())
+ proxyList = append(proxyList, "DIRECT", "REJECT")
+
+ // parse proxy
+ for idx, mapping := range proxiesConfig {
+ proxy, err := adapter.ParseProxy(mapping)
+ if err != nil {
+ return nil, nil, fmt.Errorf("proxy %d: %w", idx, err)
+ }
+
+ if _, exist := proxies[proxy.Name()]; exist {
+ return nil, nil, fmt.Errorf("proxy %s is the duplicate name", proxy.Name())
+ }
+ proxies[proxy.Name()] = proxy
+ proxyList = append(proxyList, proxy.Name())
+ AllProxies = append(AllProxies, proxy.Name())
+ proxiesList.PushBack(mapping)
+ }
+
+ // keep the original order of ProxyGroups in config file
+ for idx, mapping := range groupsConfig {
+ groupName, existName := mapping["name"].(string)
+ if !existName {
+ return nil, nil, fmt.Errorf("proxy group %d: missing name", idx)
+ }
+ if groupName == "GLOBAL" {
+ hasGlobal = true
+ }
+ proxyList = append(proxyList, groupName)
+ groupsList.PushBack(mapping)
+ }
+
+ // check if any loop exists and sort the ProxyGroups
+ if err := proxyGroupsDagSort(groupsConfig); err != nil {
+ return nil, nil, err
+ }
+
+ var AllProviders []string
+ // parse and initial providers
+ for name, mapping := range providersConfig {
+ if name == provider.ReservedName {
+ return nil, nil, fmt.Errorf("can not defined a provider called `%s`", provider.ReservedName)
+ }
+
+ pd, err := provider.ParseProxyProvider(name, mapping)
+ if err != nil {
+ return nil, nil, fmt.Errorf("parse proxy provider %s error: %w", name, err)
+ }
+
+ providersMap[name] = pd
+ AllProviders = append(AllProviders, name)
+ }
+
+ slices.Sort(AllProxies)
+ slices.Sort(AllProviders)
+
+ // parse proxy group
+ for idx, mapping := range groupsConfig {
+ group, err := outboundgroup.ParseProxyGroup(mapping, proxies, providersMap, AllProxies, AllProviders)
+ if err != nil {
+ return nil, nil, fmt.Errorf("proxy group[%d]: %w", idx, err)
+ }
+
+ groupName := group.Name()
+ if _, exist := proxies[groupName]; exist {
+ return nil, nil, fmt.Errorf("proxy group %s: the duplicate name", groupName)
+ }
+
+ proxies[groupName] = adapter.NewProxy(group)
+ }
+
+ var ps []C.Proxy
+ for _, v := range proxyList {
+ if proxies[v].Type() == C.Pass {
+ continue
+ }
+ ps = append(ps, proxies[v])
+ }
+ hc := provider.NewHealthCheck(ps, "", 5000, 0, true, nil)
+ pd, _ := provider.NewCompatibleProvider(provider.ReservedName, ps, hc)
+ providersMap[provider.ReservedName] = pd
+
+ if !hasGlobal {
+ global := outboundgroup.NewSelector(
+ &outboundgroup.GroupCommonOption{
+ Name: "GLOBAL",
+ },
+ []providerTypes.ProxyProvider{pd},
+ )
+ proxies["GLOBAL"] = adapter.NewProxy(global)
+ }
+ ProxiesList = proxiesList
+ GroupsList = groupsList
+ if ParsingProxiesCallback != nil {
+ // refresh tray menu
+ go ParsingProxiesCallback(GroupsList, ProxiesList)
+ }
+ return proxies, providersMap, nil
+}
+
+func parseListeners(cfg *RawConfig) (listeners map[string]C.InboundListener, err error) {
+ listeners = make(map[string]C.InboundListener)
+ for index, mapping := range cfg.Listeners {
+ listener, err := L.ParseListener(mapping)
+ if err != nil {
+ return nil, fmt.Errorf("proxy %d: %w", index, err)
+ }
+
+ if _, exist := mapping[listener.Name()]; exist {
+ return nil, fmt.Errorf("listener %s is the duplicate name", listener.Name())
+ }
+
+ listeners[listener.Name()] = listener
+
+ }
+ return
+}
+
+func parseRuleProviders(cfg *RawConfig) (ruleProviders map[string]providerTypes.RuleProvider, err error) {
+ RP.SetTunnel(T.Tunnel)
+ ruleProviders = map[string]providerTypes.RuleProvider{}
+ // parse rule provider
+ for name, mapping := range cfg.RuleProvider {
+ rp, err := RP.ParseRuleProvider(name, mapping, R.ParseRule)
+ if err != nil {
+ return nil, err
+ }
+
+ ruleProviders[name] = rp
+ }
+ return
+}
+
+func parseSubRules(cfg *RawConfig, proxies map[string]C.Proxy, ruleProviders map[string]providerTypes.RuleProvider) (subRules map[string][]C.Rule, err error) {
+ subRules = map[string][]C.Rule{}
+ for name := range cfg.SubRules {
+ subRules[name] = make([]C.Rule, 0)
+ }
+ for name, rawRules := range cfg.SubRules {
+ if len(name) == 0 {
+ return nil, fmt.Errorf("sub-rule name is empty")
+ }
+ var rules []C.Rule
+ rules, err = parseRules(rawRules, proxies, ruleProviders, subRules, fmt.Sprintf("sub-rules[%s]", name))
+ if err != nil {
+ return nil, err
+ }
+ subRules[name] = rules
+ }
+
+ if err = verifySubRule(subRules); err != nil {
+ return nil, err
+ }
+
+ return
+}
+
+func verifySubRule(subRules map[string][]C.Rule) error {
+ for name := range subRules {
+ err := verifySubRuleCircularReferences(name, subRules, []string{})
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func verifySubRuleCircularReferences(n string, subRules map[string][]C.Rule, arr []string) error {
+ isInArray := func(v string, array []string) bool {
+ for _, c := range array {
+ if v == c {
+ return true
+ }
+ }
+ return false
+ }
+
+ arr = append(arr, n)
+ for i, rule := range subRules[n] {
+ if rule.RuleType() == C.SubRules {
+ if _, ok := subRules[rule.Adapter()]; !ok {
+ return fmt.Errorf("sub-rule[%d:%s] error: [%s] not found", i, n, rule.Adapter())
+ }
+ if isInArray(rule.Adapter(), arr) {
+ arr = append(arr, rule.Adapter())
+ return fmt.Errorf("sub-rule error: circular references [%s]", strings.Join(arr, "->"))
+ }
+
+ if err := verifySubRuleCircularReferences(rule.Adapter(), subRules, arr); err != nil {
+ return err
+ }
+ }
+ }
+ return nil
+}
+
+func parseRules(rulesConfig []string, proxies map[string]C.Proxy, ruleProviders map[string]providerTypes.RuleProvider, subRules map[string][]C.Rule, format string) ([]C.Rule, error) {
+ var rules []C.Rule
+
+ // parse rules
+ for idx, line := range rulesConfig {
+ rule := trimArr(strings.Split(line, ","))
+ var (
+ payload string
+ target string
+ params []string
+ ruleName = strings.ToUpper(rule[0])
+ )
+
+ l := len(rule)
+
+ if ruleName == "NOT" || ruleName == "OR" || ruleName == "AND" || ruleName == "SUB-RULE" || ruleName == "DOMAIN-REGEX" || ruleName == "PROCESS-NAME-REGEX" || ruleName == "PROCESS-PATH-REGEX" {
+ target = rule[l-1]
+ payload = strings.Join(rule[1:l-1], ",")
+ } else {
+ if l < 2 {
+ return nil, fmt.Errorf("%s[%d] [%s] error: format invalid", format, idx, line)
+ }
+ if l < 4 {
+ rule = append(rule, make([]string, 4-l)...)
+ }
+ if ruleName == "MATCH" {
+ l = 2
+ }
+ if l >= 3 {
+ l = 3
+ payload = rule[1]
+ }
+ target = rule[l-1]
+ params = rule[l:]
+ }
+ if _, ok := proxies[target]; !ok {
+ if ruleName != "SUB-RULE" {
+ return nil, fmt.Errorf("%s[%d] [%s] error: proxy [%s] not found", format, idx, line, target)
+ } else if _, ok = subRules[target]; !ok {
+ return nil, fmt.Errorf("%s[%d] [%s] error: sub-rule [%s] not found", format, idx, line, target)
+ }
+ }
+
+ params = trimArr(params)
+ parsed, parseErr := R.ParseRule(ruleName, payload, target, params, subRules)
+ if parseErr != nil {
+ return nil, fmt.Errorf("%s[%d] [%s] error: %s", format, idx, line, parseErr.Error())
+ }
+
+ for _, name := range parsed.ProviderNames() {
+ if _, ok := ruleProviders[name]; !ok {
+ return nil, fmt.Errorf("%s[%d] [%s] error: rule set [%s] not found", format, idx, line, name)
+ }
+ }
+
+ rules = append(rules, parsed)
+ }
+
+ return rules, nil
+}
+
+func parseHosts(cfg *RawConfig) (*trie.DomainTrie[resolver.HostValue], error) {
+ tree := trie.New[resolver.HostValue]()
+
+ // add default hosts
+ hostValue, _ := resolver.NewHostValueByIPs(
+ []netip.Addr{netip.AddrFrom4([4]byte{127, 0, 0, 1})})
+ if err := tree.Insert("localhost", hostValue); err != nil {
+ log.Errorln("insert localhost to host error: %s", err.Error())
+ }
+
+ if len(cfg.Hosts) != 0 {
+ for domain, anyValue := range cfg.Hosts {
+ if str, ok := anyValue.(string); ok && str == "lan" {
+ if addrs, err := net.InterfaceAddrs(); err != nil {
+ log.Errorln("insert lan to host error: %s", err)
+ } else {
+ ips := make([]netip.Addr, 0)
+ for _, addr := range addrs {
+ if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && !ipnet.IP.IsLinkLocalUnicast() {
+ if ip, err := netip.ParseAddr(ipnet.IP.String()); err == nil {
+ ips = append(ips, ip)
+ }
+ }
+ }
+ anyValue = ips
+ }
+ }
+ value, err := resolver.NewHostValue(anyValue)
+ if err != nil {
+ return nil, fmt.Errorf("%s is not a valid value", anyValue)
+ }
+ if value.IsDomain {
+ node := tree.Search(value.Domain)
+ for node != nil && node.Data().IsDomain {
+ if node.Data().Domain == domain {
+ return nil, fmt.Errorf("%s, there is a cycle in domain name mapping", domain)
+ }
+ node = tree.Search(node.Data().Domain)
+ }
+ }
+ _ = tree.Insert(domain, value)
+ }
+ }
+ tree.Optimize()
+
+ return tree, nil
+}
+
+func hostWithDefaultPort(host string, defPort string) (string, error) {
+ hostname, port, err := net.SplitHostPort(host)
+ if err != nil {
+ if !strings.Contains(err.Error(), "missing port in address") {
+ return "", err
+ }
+ host = host + ":" + defPort
+ if hostname, port, err = net.SplitHostPort(host); err != nil {
+ return "", err
+ }
+ }
+
+ return net.JoinHostPort(hostname, port), nil
+}
+
+func parseNameServer(servers []string, respectRules bool, preferH3 bool) ([]dns.NameServer, error) {
+ var nameservers []dns.NameServer
+
+ for idx, server := range servers {
+ server = parsePureDNSServer(server)
+ u, err := url.Parse(server)
+ if err != nil {
+ return nil, fmt.Errorf("DNS NameServer[%d] format error: %s", idx, err.Error())
+ }
+
+ proxyName := u.Fragment
+
+ var addr, dnsNetType string
+ params := map[string]string{}
+ switch u.Scheme {
+ case "udp":
+ addr, err = hostWithDefaultPort(u.Host, "53")
+ dnsNetType = "" // UDP
+ case "tcp":
+ addr, err = hostWithDefaultPort(u.Host, "53")
+ dnsNetType = "tcp" // TCP
+ case "tls":
+ addr, err = hostWithDefaultPort(u.Host, "853")
+ dnsNetType = "tcp-tls" // DNS over TLS
+ case "http", "https":
+ addr, err = hostWithDefaultPort(u.Host, "443")
+ dnsNetType = "https" // DNS over HTTPS
+ if u.Scheme == "http" {
+ addr, err = hostWithDefaultPort(u.Host, "80")
+ }
+ if err == nil {
+ proxyName = ""
+ clearURL := url.URL{Scheme: u.Scheme, Host: addr, Path: u.Path, User: u.User}
+ addr = clearURL.String()
+ if len(u.Fragment) != 0 {
+ for _, s := range strings.Split(u.Fragment, "&") {
+ arr := strings.Split(s, "=")
+ if len(arr) == 0 {
+ continue
+ } else if len(arr) == 1 {
+ proxyName = arr[0]
+ } else if len(arr) == 2 {
+ params[arr[0]] = arr[1]
+ } else {
+ params[arr[0]] = strings.Join(arr[1:], "=")
+ }
+ }
+ }
+ }
+ case "quic":
+ addr, err = hostWithDefaultPort(u.Host, "853")
+ dnsNetType = "quic" // DNS over QUIC
+ case "system":
+ dnsNetType = "system" // System DNS
+ case "dhcp":
+ addr = server[len("dhcp://"):] // some special notation cannot be parsed by url
+ dnsNetType = "dhcp" // UDP from DHCP
+ if addr == "system" { // Compatible with old writing "dhcp://system"
+ dnsNetType = "system"
+ addr = ""
+ }
+ case "rcode":
+ dnsNetType = "rcode"
+ addr = u.Host
+ switch addr {
+ case "success",
+ "format_error",
+ "server_failure",
+ "name_error",
+ "not_implemented",
+ "refused":
+ default:
+ err = fmt.Errorf("unsupported RCode type: %s", addr)
+ }
+ default:
+ return nil, fmt.Errorf("DNS NameServer[%d] unsupport scheme: %s", idx, u.Scheme)
+ }
+
+ if err != nil {
+ return nil, fmt.Errorf("DNS NameServer[%d] format error: %s", idx, err.Error())
+ }
+
+ if respectRules && len(proxyName) == 0 {
+ proxyName = dns.RespectRules
+ }
+
+ nameserver := dns.NameServer{
+ Net: dnsNetType,
+ Addr: addr,
+ ProxyName: proxyName,
+ Params: params,
+ PreferH3: preferH3,
+ }
+ if slices.ContainsFunc(nameservers, nameserver.Equal) {
+ continue // skip duplicates nameserver
+ }
+
+ nameservers = append(nameservers, nameserver)
+ }
+ return nameservers, nil
+}
+
+func init() {
+ dns.ParseNameServer = func(servers []string) ([]dns.NameServer, error) { // using by wireguard
+ return parseNameServer(servers, false, false)
+ }
+}
+
+func parsePureDNSServer(server string) string {
+ addPre := func(server string) string {
+ return "udp://" + server
+ }
+
+ if server == "system" {
+ return "system://"
+ }
+
+ if ip, err := netip.ParseAddr(server); err != nil {
+ if strings.Contains(server, "://") {
+ return server
+ }
+ return addPre(server)
+ } else {
+ if ip.Is4() {
+ return addPre(server)
+ } else {
+ return addPre("[" + server + "]")
+ }
+ }
+}
+
+func parseNameServerPolicy(nsPolicy *orderedmap.OrderedMap[string, any], ruleProviders map[string]providerTypes.RuleProvider, respectRules bool, preferH3 bool) ([]dns.Policy, error) {
+ var policy []dns.Policy
+
+ for pair := nsPolicy.Oldest(); pair != nil; pair = pair.Next() {
+ k, v := pair.Key, pair.Value
+ servers, err := utils.ToStringSlice(v)
+ if err != nil {
+ return nil, err
+ }
+ nameservers, err := parseNameServer(servers, respectRules, preferH3)
+ if err != nil {
+ return nil, err
+ }
+ kLower := strings.ToLower(k)
+ if strings.Contains(kLower, ",") {
+ if strings.Contains(kLower, "geosite:") {
+ subkeys := strings.Split(k, ":")
+ subkeys = subkeys[1:]
+ subkeys = strings.Split(subkeys[0], ",")
+ for _, subkey := range subkeys {
+ newKey := "geosite:" + subkey
+ policy = append(policy, dns.Policy{Domain: newKey, NameServers: nameservers})
+ }
+ } else if strings.Contains(kLower, "rule-set:") {
+ subkeys := strings.Split(k, ":")
+ subkeys = subkeys[1:]
+ subkeys = strings.Split(subkeys[0], ",")
+ for _, subkey := range subkeys {
+ newKey := "rule-set:" + subkey
+ policy = append(policy, dns.Policy{Domain: newKey, NameServers: nameservers})
+ }
+ } else {
+ subkeys := strings.Split(k, ",")
+ for _, subkey := range subkeys {
+ policy = append(policy, dns.Policy{Domain: subkey, NameServers: nameservers})
+ }
+ }
+ } else {
+ if strings.Contains(kLower, "geosite:") {
+ policy = append(policy, dns.Policy{Domain: "geosite:" + k[8:], NameServers: nameservers})
+ } else if strings.Contains(kLower, "rule-set:") {
+ policy = append(policy, dns.Policy{Domain: "rule-set:" + k[9:], NameServers: nameservers})
+ } else {
+ policy = append(policy, dns.Policy{Domain: k, NameServers: nameservers})
+ }
+ }
+ }
+
+ for idx, p := range policy {
+ domain, nameservers := p.Domain, p.NameServers
+
+ if strings.HasPrefix(domain, "rule-set:") {
+ domainSetName := domain[9:]
+ matcher, err := parseDomainRuleSet(domainSetName, "dns.nameserver-policy", ruleProviders)
+ if err != nil {
+ return nil, err
+ }
+ policy[idx] = dns.Policy{Matcher: matcher, NameServers: nameservers}
+ } else if strings.HasPrefix(domain, "geosite:") {
+ country := domain[8:]
+ matcher, err := RC.NewGEOSITE(country, "dns.nameserver-policy")
+ if err != nil {
+ return nil, err
+ }
+ policy[idx] = dns.Policy{Matcher: matcher, NameServers: nameservers}
+ } else {
+ if _, valid := trie.ValidAndSplitDomain(domain); !valid {
+ return nil, fmt.Errorf("DNS ResoverRule invalid domain: %s", domain)
+ }
+ }
+ }
+
+ return policy, nil
+}
+
+func parseDNS(rawCfg *RawConfig, hosts *trie.DomainTrie[resolver.HostValue], ruleProviders map[string]providerTypes.RuleProvider) (*DNS, error) {
+ cfg := rawCfg.DNS
+ if cfg.Enable && len(cfg.NameServer) == 0 {
+ return nil, fmt.Errorf("if DNS configuration is turned on, NameServer cannot be empty")
+ }
+
+ if cfg.RespectRules && len(cfg.ProxyServerNameserver) == 0 {
+ return nil, fmt.Errorf("if “respect-rules” is turned on, “proxy-server-nameserver” cannot be empty")
+ }
+
+ dnsCfg := &DNS{
+ Enable: cfg.Enable,
+ Listen: cfg.Listen,
+ PreferH3: cfg.PreferH3,
+ IPv6Timeout: cfg.IPv6Timeout,
+ IPv6: cfg.IPv6,
+ UseSystemHosts: cfg.UseSystemHosts,
+ EnhancedMode: cfg.EnhancedMode,
+ }
+ var err error
+ if dnsCfg.NameServer, err = parseNameServer(cfg.NameServer, cfg.RespectRules, cfg.PreferH3); err != nil {
+ return nil, err
+ }
+
+ if dnsCfg.Fallback, err = parseNameServer(cfg.Fallback, cfg.RespectRules, cfg.PreferH3); err != nil {
+ return nil, err
+ }
+
+ if dnsCfg.NameServerPolicy, err = parseNameServerPolicy(cfg.NameServerPolicy, ruleProviders, cfg.RespectRules, cfg.PreferH3); err != nil {
+ return nil, err
+ }
+
+ if dnsCfg.ProxyServerNameserver, err = parseNameServer(cfg.ProxyServerNameserver, false, cfg.PreferH3); err != nil {
+ return nil, err
+ }
+
+ if dnsCfg.DirectNameServer, err = parseNameServer(cfg.DirectNameServer, false, cfg.PreferH3); err != nil {
+ return nil, err
+ }
+ dnsCfg.DirectFollowPolicy = cfg.DirectNameServerFollowPolicy
+
+ if len(cfg.DefaultNameserver) == 0 {
+ return nil, errors.New("default nameserver should have at least one nameserver")
+ }
+ if dnsCfg.DefaultNameserver, err = parseNameServer(cfg.DefaultNameserver, false, cfg.PreferH3); err != nil {
+ return nil, err
+ }
+ // check default nameserver is pure ip addr
+ for _, ns := range dnsCfg.DefaultNameserver {
+ if ns.Net == "system" {
+ continue
+ }
+ host, _, err := net.SplitHostPort(ns.Addr)
+ if err != nil || net.ParseIP(host) == nil {
+ u, err := url.Parse(ns.Addr)
+ if err == nil && net.ParseIP(u.Host) == nil {
+ if ip, _, err := net.SplitHostPort(u.Host); err != nil || net.ParseIP(ip) == nil {
+ return nil, errors.New("default nameserver should be pure IP")
+ }
+ }
+ }
+ }
+
+ fakeIPRange, err := netip.ParsePrefix(cfg.FakeIPRange)
+ T.SetFakeIPRange(fakeIPRange)
+ if cfg.EnhancedMode == C.DNSFakeIP {
+ if err != nil {
+ return nil, err
+ }
+
+ var fakeIPTrie *trie.DomainTrie[struct{}]
+ if len(dnsCfg.Fallback) != 0 {
+ fakeIPTrie = trie.New[struct{}]()
+ for _, fb := range dnsCfg.Fallback {
+ if net.ParseIP(fb.Addr) != nil {
+ continue
+ }
+ _ = fakeIPTrie.Insert(fb.Addr, struct{}{})
+ }
+ }
+
+ // fake ip skip host filter
+ host, err := parseDomain(cfg.FakeIPFilter, fakeIPTrie, "dns.fake-ip-filter", ruleProviders)
+ if err != nil {
+ return nil, err
+ }
+
+ pool, err := fakeip.New(fakeip.Options{
+ IPNet: fakeIPRange,
+ Size: 1000,
+ Host: host,
+ Mode: cfg.FakeIPFilterMode,
+ Persistence: rawCfg.Profile.StoreFakeIP,
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ dnsCfg.FakeIPRange = pool
+ }
+
+ if len(cfg.Fallback) != 0 {
+ if cfg.FallbackFilter.GeoIP {
+ matcher, err := RC.NewGEOIP(cfg.FallbackFilter.GeoIPCode, "dns.fallback-filter.geoip", false, true)
+ if err != nil {
+ return nil, fmt.Errorf("load GeoIP dns fallback filter error, %w", err)
+ }
+ dnsCfg.FallbackIPFilter = append(dnsCfg.FallbackIPFilter, matcher.DnsFallbackFilter())
+ }
+ if len(cfg.FallbackFilter.IPCIDR) > 0 {
+ cidrSet := cidr.NewIpCidrSet()
+ for idx, ipcidr := range cfg.FallbackFilter.IPCIDR {
+ err = cidrSet.AddIpCidrForString(ipcidr)
+ if err != nil {
+ return nil, fmt.Errorf("DNS FallbackIP[%d] format error: %w", idx, err)
+ }
+ }
+ err = cidrSet.Merge()
+ if err != nil {
+ return nil, err
+ }
+ matcher := cidrSet // dns.fallback-filter.ipcidr
+ dnsCfg.FallbackIPFilter = append(dnsCfg.FallbackIPFilter, matcher)
+ }
+ if len(cfg.FallbackFilter.Domain) > 0 {
+ domainTrie := trie.New[struct{}]()
+ for idx, domain := range cfg.FallbackFilter.Domain {
+ err = domainTrie.Insert(domain, struct{}{})
+ if err != nil {
+ return nil, fmt.Errorf("DNS FallbackDomain[%d] format error: %w", idx, err)
+ }
+ }
+ matcher := domainTrie.NewDomainSet() // dns.fallback-filter.domain
+ dnsCfg.FallbackDomainFilter = append(dnsCfg.FallbackDomainFilter, matcher)
+ }
+ if len(cfg.FallbackFilter.GeoSite) > 0 {
+ log.Warnln("replace fallback-filter.geosite with nameserver-policy, it will be removed in the future")
+ for idx, geoSite := range cfg.FallbackFilter.GeoSite {
+ matcher, err := RC.NewGEOSITE(geoSite, "dns.fallback-filter.geosite")
+ if err != nil {
+ return nil, fmt.Errorf("DNS FallbackGeosite[%d] format error: %w", idx, err)
+ }
+ dnsCfg.FallbackDomainFilter = append(dnsCfg.FallbackDomainFilter, matcher)
+ }
+ }
+ }
+
+ if cfg.UseHosts {
+ dnsCfg.Hosts = hosts
+ }
+
+ if cfg.CacheAlgorithm == "" || cfg.CacheAlgorithm == "lru" {
+ dnsCfg.CacheAlgorithm = "lru"
+ } else {
+ dnsCfg.CacheAlgorithm = "arc"
+ }
+
+ return dnsCfg, nil
+}
+
+func parseAuthentication(rawRecords []string) []auth.AuthUser {
+ var users []auth.AuthUser
+ for _, line := range rawRecords {
+ if user, pass, found := strings.Cut(line, ":"); found {
+ users = append(users, auth.AuthUser{User: user, Pass: pass})
+ }
+ }
+ return users
+}
+
+func parseTun(rawTun RawTun, general *General) error {
+ tunAddressPrefix := T.FakeIPRange()
+ if !tunAddressPrefix.IsValid() {
+ tunAddressPrefix = netip.MustParsePrefix("198.18.0.1/16")
+ }
+ tunAddressPrefix = netip.PrefixFrom(tunAddressPrefix.Addr(), 30)
+
+ if !general.IPv6 || !verifyIP6() {
+ rawTun.Inet6Address = nil
+ }
+
+ general.Tun = LC.Tun{
+ Enable: rawTun.Enable,
+ Device: rawTun.Device,
+ Stack: rawTun.Stack,
+ DNSHijack: rawTun.DNSHijack,
+ AutoRoute: rawTun.AutoRoute,
+ AutoDetectInterface: rawTun.AutoDetectInterface,
+
+ MTU: rawTun.MTU,
+ GSO: rawTun.GSO,
+ GSOMaxSize: rawTun.GSOMaxSize,
+ Inet4Address: []netip.Prefix{tunAddressPrefix},
+ Inet6Address: rawTun.Inet6Address,
+ IPRoute2TableIndex: rawTun.IPRoute2TableIndex,
+ IPRoute2RuleIndex: rawTun.IPRoute2RuleIndex,
+ AutoRedirect: rawTun.AutoRedirect,
+ AutoRedirectInputMark: rawTun.AutoRedirectInputMark,
+ AutoRedirectOutputMark: rawTun.AutoRedirectOutputMark,
+ StrictRoute: rawTun.StrictRoute,
+ RouteAddress: rawTun.RouteAddress,
+ RouteAddressSet: rawTun.RouteAddressSet,
+ RouteExcludeAddress: rawTun.RouteExcludeAddress,
+ RouteExcludeAddressSet: rawTun.RouteExcludeAddressSet,
+ IncludeInterface: rawTun.IncludeInterface,
+ ExcludeInterface: rawTun.ExcludeInterface,
+ IncludeUID: rawTun.IncludeUID,
+ IncludeUIDRange: rawTun.IncludeUIDRange,
+ ExcludeUID: rawTun.ExcludeUID,
+ ExcludeUIDRange: rawTun.ExcludeUIDRange,
+ IncludeAndroidUser: rawTun.IncludeAndroidUser,
+ IncludePackage: rawTun.IncludePackage,
+ ExcludePackage: rawTun.ExcludePackage,
+ EndpointIndependentNat: rawTun.EndpointIndependentNat,
+ UDPTimeout: rawTun.UDPTimeout,
+ FileDescriptor: rawTun.FileDescriptor,
+
+ Inet4RouteAddress: rawTun.Inet4RouteAddress,
+ Inet6RouteAddress: rawTun.Inet6RouteAddress,
+ Inet4RouteExcludeAddress: rawTun.Inet4RouteExcludeAddress,
+ Inet6RouteExcludeAddress: rawTun.Inet6RouteExcludeAddress,
+ }
+
+ return nil
+}
+
+func parseTuicServer(rawTuic RawTuicServer, general *General) error {
+ general.TuicServer = LC.TuicServer{
+ Enable: rawTuic.Enable,
+ Listen: rawTuic.Listen,
+ Token: rawTuic.Token,
+ Users: rawTuic.Users,
+ Certificate: rawTuic.Certificate,
+ PrivateKey: rawTuic.PrivateKey,
+ CongestionController: rawTuic.CongestionController,
+ MaxIdleTime: rawTuic.MaxIdleTime,
+ AuthenticationTimeout: rawTuic.AuthenticationTimeout,
+ ALPN: rawTuic.ALPN,
+ MaxUdpRelayPacketSize: rawTuic.MaxUdpRelayPacketSize,
+ CWND: rawTuic.CWND,
+ }
+ return nil
+}
+
+func parseSniffer(snifferRaw RawSniffer, ruleProviders map[string]providerTypes.RuleProvider) (*sniffer.Config, error) {
+ snifferConfig := &sniffer.Config{
+ Enable: snifferRaw.Enable,
+ ForceDnsMapping: snifferRaw.ForceDnsMapping,
+ ParsePureIp: snifferRaw.ParsePureIp,
+ }
+ loadSniffer := make(map[snifferTypes.Type]sniffer.SnifferConfig)
+
+ if len(snifferRaw.Sniff) != 0 {
+ for sniffType, sniffConfig := range snifferRaw.Sniff {
+ find := false
+ ports, err := utils.NewUnsignedRangesFromList[uint16](sniffConfig.Ports)
+ if err != nil {
+ return nil, err
+ }
+ overrideDest := snifferRaw.OverrideDest
+ if sniffConfig.OverrideDest != nil {
+ overrideDest = *sniffConfig.OverrideDest
+ }
+ for _, snifferType := range snifferTypes.List {
+ if snifferType.String() == strings.ToUpper(sniffType) {
+ find = true
+ loadSniffer[snifferType] = sniffer.SnifferConfig{
+ Ports: ports,
+ OverrideDest: overrideDest,
+ }
+ }
+ }
+
+ if !find {
+ return nil, fmt.Errorf("not find the sniffer[%s]", sniffType)
+ }
+ }
+ } else {
+ if snifferConfig.Enable && len(snifferRaw.Sniffing) != 0 {
+ // Deprecated: Use Sniff instead
+ log.Warnln("Deprecated: Use Sniff instead")
+ }
+ globalPorts, err := utils.NewUnsignedRangesFromList[uint16](snifferRaw.Ports)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, snifferName := range snifferRaw.Sniffing {
+ find := false
+ for _, snifferType := range snifferTypes.List {
+ if snifferType.String() == strings.ToUpper(snifferName) {
+ find = true
+ loadSniffer[snifferType] = sniffer.SnifferConfig{
+ Ports: globalPorts,
+ OverrideDest: snifferRaw.OverrideDest,
+ }
+ }
+ }
+
+ if !find {
+ return nil, fmt.Errorf("not find the sniffer[%s]", snifferName)
+ }
+ }
+ }
+
+ snifferConfig.Sniffers = loadSniffer
+
+ forceDomain, err := parseDomain(snifferRaw.ForceDomain, nil, "sniffer.force-domain", ruleProviders)
+ if err != nil {
+ return nil, fmt.Errorf("error in force-domain, error:%w", err)
+ }
+ snifferConfig.ForceDomain = forceDomain
+
+ skipSrcAddress, err := parseIPCIDR(snifferRaw.SkipSrcAddress, nil, "sniffer.skip-src-address", ruleProviders)
+ if err != nil {
+ return nil, fmt.Errorf("error in skip-src-address, error:%w", err)
+ }
+ snifferConfig.SkipSrcAddress = skipSrcAddress
+
+ skipDstAddress, err := parseIPCIDR(snifferRaw.SkipDstAddress, nil, "sniffer.skip-src-address", ruleProviders)
+ if err != nil {
+ return nil, fmt.Errorf("error in skip-dst-address, error:%w", err)
+ }
+ snifferConfig.SkipDstAddress = skipDstAddress
+
+ skipDomain, err := parseDomain(snifferRaw.SkipDomain, nil, "sniffer.skip-domain", ruleProviders)
+ if err != nil {
+ return nil, fmt.Errorf("error in skip-domain, error:%w", err)
+ }
+ snifferConfig.SkipDomain = skipDomain
+
+ return snifferConfig, nil
+}
+
+func parseIPCIDR(addresses []string, cidrSet *cidr.IpCidrSet, adapterName string, ruleProviders map[string]providerTypes.RuleProvider) (matchers []C.IpMatcher, err error) {
+ var matcher C.IpMatcher
+ for _, ipcidr := range addresses {
+ ipcidrLower := strings.ToLower(ipcidr)
+ if strings.Contains(ipcidrLower, "geoip:") {
+ subkeys := strings.Split(ipcidr, ":")
+ subkeys = subkeys[1:]
+ subkeys = strings.Split(subkeys[0], ",")
+ for _, country := range subkeys {
+ matcher, err = RC.NewGEOIP(country, adapterName, false, false)
+ if err != nil {
+ return nil, err
+ }
+ matchers = append(matchers, matcher)
+ }
+ } else if strings.Contains(ipcidrLower, "rule-set:") {
+ subkeys := strings.Split(ipcidr, ":")
+ subkeys = subkeys[1:]
+ subkeys = strings.Split(subkeys[0], ",")
+ for _, domainSetName := range subkeys {
+ matcher, err = parseIPRuleSet(domainSetName, adapterName, ruleProviders)
+ if err != nil {
+ return nil, err
+ }
+ matchers = append(matchers, matcher)
+ }
+ } else {
+ if cidrSet == nil {
+ cidrSet = cidr.NewIpCidrSet()
+ }
+ err = cidrSet.AddIpCidrForString(ipcidr)
+ if err != nil {
+ return nil, err
+ }
+ }
+ }
+ if !cidrSet.IsEmpty() {
+ err = cidrSet.Merge()
+ if err != nil {
+ return nil, err
+ }
+ matcher = cidrSet
+ matchers = append(matchers, matcher)
+ }
+ return
+}
+
+func parseDomain(domains []string, domainTrie *trie.DomainTrie[struct{}], adapterName string, ruleProviders map[string]providerTypes.RuleProvider) (matchers []C.DomainMatcher, err error) {
+ var matcher C.DomainMatcher
+ for _, domain := range domains {
+ domainLower := strings.ToLower(domain)
+ if strings.Contains(domainLower, "geosite:") {
+ subkeys := strings.Split(domain, ":")
+ subkeys = subkeys[1:]
+ subkeys = strings.Split(subkeys[0], ",")
+ for _, country := range subkeys {
+ matcher, err = RC.NewGEOSITE(country, adapterName)
+ if err != nil {
+ return nil, err
+ }
+ matchers = append(matchers, matcher)
+ }
+ } else if strings.Contains(domainLower, "rule-set:") {
+ subkeys := strings.Split(domain, ":")
+ subkeys = subkeys[1:]
+ subkeys = strings.Split(subkeys[0], ",")
+ for _, domainSetName := range subkeys {
+ matcher, err = parseDomainRuleSet(domainSetName, adapterName, ruleProviders)
+ if err != nil {
+ return nil, err
+ }
+ matchers = append(matchers, matcher)
+ }
+ } else {
+ if domainTrie == nil {
+ domainTrie = trie.New[struct{}]()
+ }
+ err = domainTrie.Insert(domain, struct{}{})
+ if err != nil {
+ return nil, err
+ }
+ }
+ }
+ if !domainTrie.IsEmpty() {
+ matcher = domainTrie.NewDomainSet()
+ matchers = append(matchers, matcher)
+ }
+ return
+}
+
+func parseIPRuleSet(domainSetName string, adapterName string, ruleProviders map[string]providerTypes.RuleProvider) (C.IpMatcher, error) {
+ if rp, ok := ruleProviders[domainSetName]; !ok {
+ return nil, fmt.Errorf("not found rule-set: %s", domainSetName)
+ } else {
+ switch rp.Behavior() {
+ case providerTypes.Domain:
+ return nil, fmt.Errorf("rule provider type error, except ipcidr,actual %s", rp.Behavior())
+ case providerTypes.Classical:
+ log.Warnln("%s provider is %s, only matching it contain ip rule", rp.Name(), rp.Behavior())
+ default:
+ }
+ }
+ return RP.NewRuleSet(domainSetName, adapterName, false, true)
+}
+
+func parseDomainRuleSet(domainSetName string, adapterName string, ruleProviders map[string]providerTypes.RuleProvider) (C.DomainMatcher, error) {
+ if rp, ok := ruleProviders[domainSetName]; !ok {
+ return nil, fmt.Errorf("not found rule-set: %s", domainSetName)
+ } else {
+ switch rp.Behavior() {
+ case providerTypes.IPCIDR:
+ return nil, fmt.Errorf("rule provider type error, except domain,actual %s", rp.Behavior())
+ case providerTypes.Classical:
+ log.Warnln("%s provider is %s, only matching it contain domain rule", rp.Name(), rp.Behavior())
+ default:
+ }
+ }
+ return RP.NewRuleSet(domainSetName, adapterName, false, true)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/config/initial.go b/Android-kotlin-Code/core/src/foss/golang/clash/config/initial.go
new file mode 100644
index 0000000..61d1289
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/config/initial.go
@@ -0,0 +1,32 @@
+package config
+
+import (
+ "fmt"
+ "os"
+
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+// Init prepare necessary files
+func Init(dir string) error {
+ // initial homedir
+ if _, err := os.Stat(dir); os.IsNotExist(err) {
+ if err := os.MkdirAll(dir, 0o777); err != nil {
+ return fmt.Errorf("can't create config directory %s: %s", dir, err.Error())
+ }
+ }
+
+ // initial config.yaml
+ if _, err := os.Stat(C.Path.Config()); os.IsNotExist(err) {
+ log.Infoln("Can't find config, create a initial config file")
+ f, err := os.OpenFile(C.Path.Config(), os.O_CREATE|os.O_WRONLY, 0o644)
+ if err != nil {
+ return fmt.Errorf("can't create file %s: %s", C.Path.Config(), err.Error())
+ }
+ f.Write([]byte(`mixed-port: 7890`))
+ f.Close()
+ }
+
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/config/utils.go b/Android-kotlin-Code/core/src/foss/golang/clash/config/utils.go
new file mode 100644
index 0000000..f87fb34
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/config/utils.go
@@ -0,0 +1,163 @@
+package config
+
+import (
+ "fmt"
+ "net"
+ "net/netip"
+ "strings"
+
+ "github.com/metacubex/mihomo/adapter/outboundgroup"
+ "github.com/metacubex/mihomo/common/structure"
+)
+
+func trimArr(arr []string) (r []string) {
+ for _, e := range arr {
+ r = append(r, strings.Trim(e, " "))
+ }
+ return
+}
+
+// Check if ProxyGroups form DAG(Directed Acyclic Graph), and sort all ProxyGroups by dependency order.
+// Meanwhile, record the original index in the config file.
+// If loop is detected, return an error with location of loop.
+func proxyGroupsDagSort(groupsConfig []map[string]any) error {
+ type graphNode struct {
+ indegree int
+ // topological order
+ topo int
+ // the original data in `groupsConfig`
+ data map[string]any
+ // `outdegree` and `from` are used in loop locating
+ outdegree int
+ option *outboundgroup.GroupCommonOption
+ from []string
+ }
+
+ decoder := structure.NewDecoder(structure.Option{TagName: "group", WeaklyTypedInput: true})
+ graph := make(map[string]*graphNode)
+
+ // Step 1.1 build dependency graph
+ for _, mapping := range groupsConfig {
+ option := &outboundgroup.GroupCommonOption{}
+ if err := decoder.Decode(mapping, option); err != nil {
+ return fmt.Errorf("ProxyGroup %s: %s", option.Name, err.Error())
+ }
+
+ groupName := option.Name
+ if node, ok := graph[groupName]; ok {
+ if node.data != nil {
+ return fmt.Errorf("ProxyGroup %s: duplicate group name", groupName)
+ }
+ node.data = mapping
+ node.option = option
+ } else {
+ graph[groupName] = &graphNode{0, -1, mapping, 0, option, nil}
+ }
+
+ for _, proxy := range option.Proxies {
+ if node, ex := graph[proxy]; ex {
+ node.indegree++
+ } else {
+ graph[proxy] = &graphNode{1, -1, nil, 0, nil, nil}
+ }
+ }
+ }
+ // Step 1.2 Topological Sort
+ // topological index of **ProxyGroup**
+ index := 0
+ queue := make([]string, 0)
+ for name, node := range graph {
+ // in the beginning, put nodes that have `node.indegree == 0` into queue.
+ if node.indegree == 0 {
+ queue = append(queue, name)
+ }
+ }
+ // every element in queue have indegree == 0
+ for ; len(queue) > 0; queue = queue[1:] {
+ name := queue[0]
+ node := graph[name]
+ if node.option != nil {
+ index++
+ groupsConfig[len(groupsConfig)-index] = node.data
+ if len(node.option.Proxies) == 0 {
+ delete(graph, name)
+ continue
+ }
+
+ for _, proxy := range node.option.Proxies {
+ child := graph[proxy]
+ child.indegree--
+ if child.indegree == 0 {
+ queue = append(queue, proxy)
+ }
+ }
+ }
+ delete(graph, name)
+ }
+
+ // no loop is detected, return sorted ProxyGroup
+ if len(graph) == 0 {
+ return nil
+ }
+
+ // if loop is detected, locate the loop and throw an error
+ // Step 2.1 rebuild the graph, fill `outdegree` and `from` filed
+ for name, node := range graph {
+ if node.option == nil {
+ continue
+ }
+
+ if len(node.option.Proxies) == 0 {
+ continue
+ }
+
+ for _, proxy := range node.option.Proxies {
+ node.outdegree++
+ child := graph[proxy]
+ if child.from == nil {
+ child.from = make([]string, 0, child.indegree)
+ }
+ child.from = append(child.from, name)
+ }
+ }
+ // Step 2.2 remove nodes outside the loop. so that we have only the loops remain in `graph`
+ queue = make([]string, 0)
+ // initialize queue with node have outdegree == 0
+ for name, node := range graph {
+ if node.outdegree == 0 {
+ queue = append(queue, name)
+ }
+ }
+ // every element in queue have outdegree == 0
+ for ; len(queue) > 0; queue = queue[1:] {
+ name := queue[0]
+ node := graph[name]
+ for _, f := range node.from {
+ graph[f].outdegree--
+ if graph[f].outdegree == 0 {
+ queue = append(queue, f)
+ }
+ }
+ delete(graph, name)
+ }
+ // Step 2.3 report the elements in loop
+ loopElements := make([]string, 0, len(graph))
+ for name := range graph {
+ loopElements = append(loopElements, name)
+ delete(graph, name)
+ }
+ return fmt.Errorf("loop is detected in ProxyGroup, please check following ProxyGroups: %v", loopElements)
+}
+
+func verifyIP6() bool {
+ if iAddrs, err := net.InterfaceAddrs(); err == nil {
+ for _, addr := range iAddrs {
+ if prefix, err := netip.ParsePrefix(addr.String()); err == nil {
+ if addr := prefix.Addr().Unmap(); addr.Is6() && addr.IsGlobalUnicast() {
+ return true
+ }
+ }
+ }
+ }
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/adapters.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/adapters.go
new file mode 100644
index 0000000..b303eb8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/adapters.go
@@ -0,0 +1,326 @@
+package constant
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "net"
+ "net/netip"
+ "sync"
+ "time"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/dialer"
+)
+
+// Adapter Type
+const (
+ Direct AdapterType = iota
+ Reject
+ RejectDrop
+ Compatible
+ Pass
+ Dns
+
+ Relay
+ Selector
+ Fallback
+ URLTest
+ LoadBalance
+
+ Shadowsocks
+ ShadowsocksR
+ Snell
+ Socks5
+ Http
+ Vmess
+ Vless
+ Trojan
+ Hysteria
+ Hysteria2
+ WireGuard
+ Tuic
+ Ssh
+)
+
+const (
+ DefaultTCPTimeout = dialer.DefaultTCPTimeout
+ DefaultUDPTimeout = dialer.DefaultUDPTimeout
+ DefaultDropTime = 12 * DefaultTCPTimeout
+ DefaultTLSTimeout = DefaultTCPTimeout
+ DefaultTestURL = "https://www.gstatic.com/generate_204"
+)
+
+var ErrNotSupport = errors.New("no support")
+
+type Connection interface {
+ Chains() Chain
+ AppendToChains(adapter ProxyAdapter)
+ RemoteDestination() string
+}
+
+type Chain []string
+
+func (c Chain) String() string {
+ switch len(c) {
+ case 0:
+ return ""
+ case 1:
+ return c[0]
+ default:
+ return fmt.Sprintf("%s[%s]", c[len(c)-1], c[0])
+ }
+}
+
+func (c Chain) Last() string {
+ switch len(c) {
+ case 0:
+ return ""
+ default:
+ return c[0]
+ }
+}
+
+type Conn interface {
+ N.ExtendedConn
+ Connection
+}
+
+type PacketConn interface {
+ N.EnhancePacketConn
+ Connection
+ // Deprecate WriteWithMetadata because of remote resolve DNS cause TURN failed
+ // WriteWithMetadata(p []byte, metadata *Metadata) (n int, err error)
+}
+
+type Dialer interface {
+ DialContext(ctx context.Context, network, address string) (net.Conn, error)
+ ListenPacket(ctx context.Context, network, address string, rAddrPort netip.AddrPort) (net.PacketConn, error)
+}
+
+type ProxyAdapter interface {
+ Name() string
+ Type() AdapterType
+ Addr() string
+ SupportUDP() bool
+ SupportXUDP() bool
+ SupportTFO() bool
+ MarshalJSON() ([]byte, error)
+
+ // Deprecated: use DialContextWithDialer and ListenPacketWithDialer instead.
+ // StreamConn wraps a protocol around net.Conn with Metadata.
+ //
+ // Examples:
+ // conn, _ := net.DialContext(context.Background(), "tcp", "host:port")
+ // conn, _ = adapter.StreamConnContext(context.Background(), conn, metadata)
+ //
+ // It returns a C.Conn with protocol which start with
+ // a new session (if any)
+ StreamConnContext(ctx context.Context, c net.Conn, metadata *Metadata) (net.Conn, error)
+
+ // DialContext return a C.Conn with protocol which
+ // contains multiplexing-related reuse logic (if any)
+ DialContext(ctx context.Context, metadata *Metadata, opts ...dialer.Option) (Conn, error)
+ ListenPacketContext(ctx context.Context, metadata *Metadata, opts ...dialer.Option) (PacketConn, error)
+
+ // SupportUOT return UDP over TCP support
+ SupportUOT() bool
+
+ SupportWithDialer() NetWork
+ DialContextWithDialer(ctx context.Context, dialer Dialer, metadata *Metadata) (Conn, error)
+ ListenPacketWithDialer(ctx context.Context, dialer Dialer, metadata *Metadata) (PacketConn, error)
+
+ // IsL3Protocol return ProxyAdapter working in L3 (tell dns module not pass the domain to avoid loopback)
+ IsL3Protocol(metadata *Metadata) bool
+
+ // Unwrap extracts the proxy from a proxy-group. It returns nil when nothing to extract.
+ Unwrap(metadata *Metadata, touch bool) Proxy
+}
+
+type Group interface {
+ URLTest(ctx context.Context, url string, expectedStatus utils.IntRanges[uint16]) (mp map[string]uint16, err error)
+ GetProxies(touch bool) []Proxy
+ Touch()
+}
+
+type DelayHistory struct {
+ Time time.Time `json:"time"`
+ Delay uint16 `json:"delay"`
+}
+
+type ProxyState struct {
+ Alive bool `json:"alive"`
+ History []DelayHistory `json:"history"`
+}
+
+type DelayHistoryStoreType int
+
+type Proxy interface {
+ ProxyAdapter
+ Adapter() ProxyAdapter
+ AliveForTestUrl(url string) bool
+ DelayHistory() []DelayHistory
+ ExtraDelayHistories() map[string]ProxyState
+ LastDelayForTestUrl(url string) uint16
+ URLTest(ctx context.Context, url string, expectedStatus utils.IntRanges[uint16]) (uint16, error)
+
+ // Deprecated: use DialContext instead.
+ Dial(metadata *Metadata) (Conn, error)
+
+ // Deprecated: use DialPacketConn instead.
+ DialUDP(metadata *Metadata) (PacketConn, error)
+}
+
+// AdapterType is enum of adapter type
+type AdapterType int
+
+func (at AdapterType) String() string {
+ switch at {
+ case Direct:
+ return "Direct"
+ case Reject:
+ return "Reject"
+ case RejectDrop:
+ return "RejectDrop"
+ case Compatible:
+ return "Compatible"
+ case Pass:
+ return "Pass"
+ case Dns:
+ return "Dns"
+ case Shadowsocks:
+ return "Shadowsocks"
+ case ShadowsocksR:
+ return "ShadowsocksR"
+ case Snell:
+ return "Snell"
+ case Socks5:
+ return "Socks5"
+ case Http:
+ return "Http"
+ case Vmess:
+ return "Vmess"
+ case Vless:
+ return "Vless"
+ case Trojan:
+ return "Trojan"
+ case Hysteria:
+ return "Hysteria"
+ case Hysteria2:
+ return "Hysteria2"
+ case WireGuard:
+ return "WireGuard"
+ case Tuic:
+ return "Tuic"
+
+ case Relay:
+ return "Relay"
+ case Selector:
+ return "Selector"
+ case Fallback:
+ return "Fallback"
+ case URLTest:
+ return "URLTest"
+ case LoadBalance:
+ return "LoadBalance"
+ case Ssh:
+ return "Ssh"
+ default:
+ return "Unknown"
+ }
+}
+
+// UDPPacket contains the data of UDP packet, and offers control/info of UDP packet's source
+type UDPPacket interface {
+ // Data get the payload of UDP Packet
+ Data() []byte
+
+ // WriteBack writes the payload with source IP/Port equals addr
+ // - variable source IP/Port is important to STUN
+ // - if addr is not provided, WriteBack will write out UDP packet with SourceIP/Port equals to original Target,
+ // this is important when using Fake-IP.
+ WriteBack
+
+ // Drop call after packet is used, could recycle buffer in this function.
+ Drop()
+
+ // LocalAddr returns the source IP/Port of packet
+ LocalAddr() net.Addr
+}
+
+type UDPPacketInAddr interface {
+ InAddr() net.Addr
+}
+
+// PacketAdapter is a UDP Packet adapter for socks/redir/tun
+type PacketAdapter interface {
+ UDPPacket
+ // Metadata returns destination metadata
+ Metadata() *Metadata
+ // Key is a SNAT key
+ Key() string
+}
+
+type packetAdapter struct {
+ UDPPacket
+ metadata *Metadata
+ key string
+}
+
+// Metadata returns destination metadata
+func (s *packetAdapter) Metadata() *Metadata {
+ return s.metadata
+}
+
+// Key is a SNAT key
+func (s *packetAdapter) Key() string {
+ return s.key
+}
+
+func NewPacketAdapter(packet UDPPacket, metadata *Metadata) PacketAdapter {
+ return &packetAdapter{
+ packet,
+ metadata,
+ packet.LocalAddr().String(),
+ }
+}
+
+type WriteBack interface {
+ WriteBack(b []byte, addr net.Addr) (n int, err error)
+}
+
+type WriteBackProxy interface {
+ WriteBack
+ UpdateWriteBack(wb WriteBack)
+}
+
+type PacketSender interface {
+ // Send will send PacketAdapter nonblocking
+ // the implement must call UDPPacket.Drop() inside Send
+ Send(PacketAdapter)
+ // Process is a blocking loop to send PacketAdapter to PacketConn and update the WriteBackProxy
+ Process(PacketConn, WriteBackProxy)
+ // ResolveUDP do a local resolve UDP dns blocking if metadata is not resolved
+ ResolveUDP(*Metadata) error
+ // Close stop the Process loop
+ Close()
+}
+
+type NatTable interface {
+ GetOrCreate(key string, maker func() PacketSender) (PacketSender, bool)
+
+ Delete(key string)
+
+ GetForLocalConn(lAddr, rAddr string) *net.UDPConn
+
+ AddForLocalConn(lAddr, rAddr string, conn *net.UDPConn) bool
+
+ RangeForLocalConn(lAddr string, f func(key string, value *net.UDPConn) bool)
+
+ GetOrCreateLockForLocalConn(lAddr string, key string) (*sync.Cond, bool)
+
+ DeleteForLocalConn(lAddr, key string)
+
+ DeleteLockForLocalConn(lAddr, key string)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/context.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/context.go
new file mode 100644
index 0000000..11ad701
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/context.go
@@ -0,0 +1,25 @@
+package constant
+
+import (
+ "net"
+
+ N "github.com/metacubex/mihomo/common/net"
+
+ "github.com/gofrs/uuid/v5"
+)
+
+type PlainContext interface {
+ ID() uuid.UUID
+}
+
+type ConnContext interface {
+ PlainContext
+ Metadata() *Metadata
+ Conn() *N.BufferedConn
+}
+
+type PacketConnContext interface {
+ PlainContext
+ Metadata() *Metadata
+ PacketConn() net.PacketConn
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/dns.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/dns.go
new file mode 100644
index 0000000..b0874ee
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/dns.go
@@ -0,0 +1,216 @@
+package constant
+
+import (
+ "encoding/json"
+ "errors"
+ "strings"
+)
+
+// DNSModeMapping is a mapping for EnhancedMode enum
+var DNSModeMapping = map[string]DNSMode{
+ DNSNormal.String(): DNSNormal,
+ DNSFakeIP.String(): DNSFakeIP,
+ DNSMapping.String(): DNSMapping,
+}
+
+const (
+ DNSNormal DNSMode = iota
+ DNSFakeIP
+ DNSMapping
+ DNSHosts
+)
+
+type DNSMode int
+
+// UnmarshalYAML unserialize EnhancedMode with yaml
+func (e *DNSMode) UnmarshalYAML(unmarshal func(any) error) error {
+ var tp string
+ if err := unmarshal(&tp); err != nil {
+ return err
+ }
+ mode, exist := DNSModeMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *e = mode
+ return nil
+}
+
+// MarshalYAML serialize EnhancedMode with yaml
+func (e DNSMode) MarshalYAML() (any, error) {
+ return e.String(), nil
+}
+
+// UnmarshalJSON unserialize EnhancedMode with json
+func (e *DNSMode) UnmarshalJSON(data []byte) error {
+ var tp string
+ if err := json.Unmarshal(data, &tp); err != nil {
+ return err
+ }
+ mode, exist := DNSModeMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *e = mode
+ return nil
+}
+
+// MarshalJSON serialize EnhancedMode with json
+func (e DNSMode) MarshalJSON() ([]byte, error) {
+ return json.Marshal(e.String())
+}
+
+// UnmarshalText unserialize EnhancedMode
+func (e *DNSMode) UnmarshalText(data []byte) error {
+ mode, exist := DNSModeMapping[strings.ToLower(string(data))]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *e = mode
+ return nil
+}
+
+// MarshalText serialize EnhancedMode
+func (e DNSMode) MarshalText() ([]byte, error) {
+ return []byte(e.String()), nil
+}
+
+func (e DNSMode) String() string {
+ switch e {
+ case DNSNormal:
+ return "normal"
+ case DNSFakeIP:
+ return "fake-ip"
+ case DNSMapping:
+ return "redir-host"
+ case DNSHosts:
+ return "hosts"
+ default:
+ return "unknown"
+ }
+}
+
+type DNSPrefer int
+
+const (
+ DualStack DNSPrefer = iota
+ IPv4Only
+ IPv6Only
+ IPv4Prefer
+ IPv6Prefer
+)
+
+var dnsPreferMap = map[string]DNSPrefer{
+ DualStack.String(): DualStack,
+ IPv4Only.String(): IPv4Only,
+ IPv6Only.String(): IPv6Only,
+ IPv4Prefer.String(): IPv4Prefer,
+ IPv6Prefer.String(): IPv6Prefer,
+}
+
+func (d DNSPrefer) String() string {
+ switch d {
+ case DualStack:
+ return "dual"
+ case IPv4Only:
+ return "ipv4"
+ case IPv6Only:
+ return "ipv6"
+ case IPv4Prefer:
+ return "ipv4-prefer"
+ case IPv6Prefer:
+ return "ipv6-prefer"
+ default:
+ return "dual"
+ }
+}
+
+func NewDNSPrefer(prefer string) DNSPrefer {
+ if p, ok := dnsPreferMap[prefer]; ok {
+ return p
+ } else {
+ return DualStack
+ }
+}
+
+// FilterModeMapping is a mapping for FilterMode enum
+var FilterModeMapping = map[string]FilterMode{
+ FilterBlackList.String(): FilterBlackList,
+ FilterWhiteList.String(): FilterWhiteList,
+}
+
+type FilterMode int
+
+const (
+ FilterBlackList FilterMode = iota
+ FilterWhiteList
+)
+
+func (e FilterMode) String() string {
+ switch e {
+ case FilterBlackList:
+ return "blacklist"
+ case FilterWhiteList:
+ return "whitelist"
+ default:
+ return "unknown"
+ }
+}
+
+func (e FilterMode) MarshalYAML() (interface{}, error) {
+ return e.String(), nil
+}
+
+func (e *FilterMode) UnmarshalYAML(unmarshal func(interface{}) error) error {
+ var tp string
+ if err := unmarshal(&tp); err != nil {
+ return err
+ }
+ mode, exist := FilterModeMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *e = mode
+ return nil
+}
+
+func (e FilterMode) MarshalJSON() ([]byte, error) {
+ return json.Marshal(e.String())
+}
+
+func (e *FilterMode) UnmarshalJSON(data []byte) error {
+ var tp string
+ if err := json.Unmarshal(data, &tp); err != nil {
+ return err
+ }
+ mode, exist := FilterModeMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *e = mode
+ return nil
+}
+
+func (e FilterMode) MarshalText() ([]byte, error) {
+ return []byte(e.String()), nil
+}
+
+func (e *FilterMode) UnmarshalText(data []byte) error {
+ mode, exist := FilterModeMapping[strings.ToLower(string(data))]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *e = mode
+ return nil
+}
+
+type HTTPVersion string
+
+const (
+ // HTTPVersion11 is HTTP/1.1.
+ HTTPVersion11 HTTPVersion = "http/1.1"
+ // HTTPVersion2 is HTTP/2.
+ HTTPVersion2 HTTPVersion = "h2"
+ // HTTPVersion3 is HTTP/3.
+ HTTPVersion3 HTTPVersion = "h3"
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/cmfa.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/cmfa.go
new file mode 100644
index 0000000..9a81d82
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/cmfa.go
@@ -0,0 +1,5 @@
+//go:build cmfa
+
+package features
+
+const CMFA = true
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/cmfa_stub.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/cmfa_stub.go
new file mode 100644
index 0000000..f7ef082
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/cmfa_stub.go
@@ -0,0 +1,5 @@
+//go:build !cmfa
+
+package features
+
+const CMFA = false
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/low_memory.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/low_memory.go
new file mode 100644
index 0000000..2f0f4d5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/low_memory.go
@@ -0,0 +1,5 @@
+//go:build with_low_memory
+
+package features
+
+const WithLowMemory = true
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/low_memory_stub.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/low_memory_stub.go
new file mode 100644
index 0000000..00b0b94
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/low_memory_stub.go
@@ -0,0 +1,5 @@
+//go:build !with_low_memory
+
+package features
+
+const WithLowMemory = false
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/no_fake_tcp.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/no_fake_tcp.go
new file mode 100644
index 0000000..a9e0972
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/no_fake_tcp.go
@@ -0,0 +1,5 @@
+//go:build no_fake_tcp
+
+package features
+
+const NoFakeTCP = true
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/no_fake_tcp_stub.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/no_fake_tcp_stub.go
new file mode 100644
index 0000000..f1620a2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/no_fake_tcp_stub.go
@@ -0,0 +1,5 @@
+//go:build !no_fake_tcp
+
+package features
+
+const NoFakeTCP = false
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/tags.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/tags.go
new file mode 100644
index 0000000..12a5fbd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/tags.go
@@ -0,0 +1,17 @@
+package features
+
+func Tags() (tags []string) {
+ if CMFA {
+ tags = append(tags, "cmfa")
+ }
+ if WithLowMemory {
+ tags = append(tags, "with_low_memory")
+ }
+ if NoFakeTCP {
+ tags = append(tags, "no_fake_tcp")
+ }
+ if WithGVisor {
+ tags = append(tags, "with_gvisor")
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/version.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/version.go
new file mode 100644
index 0000000..1710e21
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/version.go
@@ -0,0 +1,5 @@
+package features
+
+var WindowsMajorVersion uint32
+var WindowsMinorVersion uint32
+var WindowsBuildNumber uint32
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/version_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/version_windows.go
new file mode 100644
index 0000000..2f75618
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/version_windows.go
@@ -0,0 +1,10 @@
+package features
+
+import "golang.org/x/sys/windows"
+
+func init() {
+ version := windows.RtlGetVersion()
+ WindowsMajorVersion = version.MajorVersion
+ WindowsMinorVersion = version.MinorVersion
+ WindowsBuildNumber = version.BuildNumber
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/with_gvisor.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/with_gvisor.go
new file mode 100644
index 0000000..c00cc34
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/with_gvisor.go
@@ -0,0 +1,5 @@
+//go:build with_gvisor
+
+package features
+
+const WithGVisor = true
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/with_gvisor_stub.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/with_gvisor_stub.go
new file mode 100644
index 0000000..5684c1b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/features/with_gvisor_stub.go
@@ -0,0 +1,5 @@
+//go:build !with_gvisor
+
+package features
+
+const WithGVisor = false
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/listener.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/listener.go
new file mode 100644
index 0000000..f69b4a9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/listener.go
@@ -0,0 +1,29 @@
+package constant
+
+import "net"
+
+type Listener interface {
+ RawAddress() string
+ Address() string
+ Close() error
+}
+
+type MultiAddrListener interface {
+ Close() error
+ Config() string
+ AddrList() (addrList []net.Addr)
+}
+
+type InboundListener interface {
+ Name() string
+ Listen(tunnel Tunnel) error
+ Close() error
+ Address() string
+ RawAddress() string
+ Config() InboundConfig
+}
+
+type InboundConfig interface {
+ Name() string
+ Equal(config InboundConfig) bool
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/matcher.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/matcher.go
new file mode 100644
index 0000000..107f843
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/matcher.go
@@ -0,0 +1,11 @@
+package constant
+
+import "net/netip"
+
+type DomainMatcher interface {
+ MatchDomain(domain string) bool
+}
+
+type IpMatcher interface {
+ MatchIp(ip netip.Addr) bool
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/metadata.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/metadata.go
new file mode 100644
index 0000000..5436298
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/metadata.go
@@ -0,0 +1,311 @@
+package constant
+
+import (
+ "encoding/json"
+ "fmt"
+ "net"
+ "net/netip"
+ "strconv"
+
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+// Socks addr type
+const (
+ TCP NetWork = iota
+ UDP
+ ALLNet
+ InvalidNet = 0xff
+)
+
+const (
+ HTTP Type = iota
+ HTTPS
+ SOCKS4
+ SOCKS5
+ SHADOWSOCKS
+ VMESS
+ REDIR
+ TPROXY
+ TUNNEL
+ TUN
+ TUIC
+ HYSTERIA2
+ INNER
+)
+
+type NetWork int
+
+func (n NetWork) String() string {
+ switch n {
+ case TCP:
+ return "tcp"
+ case UDP:
+ return "udp"
+ case ALLNet:
+ return "all"
+ default:
+ return "invalid"
+ }
+}
+
+func (n NetWork) MarshalJSON() ([]byte, error) {
+ return json.Marshal(n.String())
+}
+
+type Type int
+
+func (t Type) String() string {
+ switch t {
+ case HTTP:
+ return "HTTP"
+ case HTTPS:
+ return "HTTPS"
+ case SOCKS4:
+ return "Socks4"
+ case SOCKS5:
+ return "Socks5"
+ case SHADOWSOCKS:
+ return "ShadowSocks"
+ case VMESS:
+ return "Vmess"
+ case REDIR:
+ return "Redir"
+ case TPROXY:
+ return "TProxy"
+ case TUNNEL:
+ return "Tunnel"
+ case TUN:
+ return "Tun"
+ case TUIC:
+ return "Tuic"
+ case HYSTERIA2:
+ return "Hysteria2"
+ case INNER:
+ return "Inner"
+ default:
+ return "Unknown"
+ }
+}
+
+func ParseType(t string) (*Type, error) {
+ var res Type
+ switch t {
+ case "HTTP":
+ res = HTTP
+ case "HTTPS":
+ res = HTTPS
+ case "SOCKS4":
+ res = SOCKS4
+ case "SOCKS5":
+ res = SOCKS5
+ case "SHADOWSOCKS":
+ res = SHADOWSOCKS
+ case "VMESS":
+ res = VMESS
+ case "REDIR":
+ res = REDIR
+ case "TPROXY":
+ res = TPROXY
+ case "TUNNEL":
+ res = TUNNEL
+ case "TUN":
+ res = TUN
+ case "TUIC":
+ res = TUIC
+ case "HYSTERIA2":
+ res = HYSTERIA2
+ case "INNER":
+ res = INNER
+ default:
+ return nil, fmt.Errorf("unknown type: %s", t)
+ }
+ return &res, nil
+}
+
+func (t Type) MarshalJSON() ([]byte, error) {
+ return json.Marshal(t.String())
+}
+
+// Metadata is used to store connection address
+type Metadata struct {
+ NetWork NetWork `json:"network"`
+ Type Type `json:"type"`
+ SrcIP netip.Addr `json:"sourceIP"`
+ DstIP netip.Addr `json:"destinationIP"`
+ SrcGeoIP []string `json:"sourceGeoIP"` // can be nil if never queried, empty slice if got no result
+ DstGeoIP []string `json:"destinationGeoIP"` // can be nil if never queried, empty slice if got no result
+ SrcIPASN string `json:"sourceIPASN"`
+ DstIPASN string `json:"destinationIPASN"`
+ SrcPort uint16 `json:"sourcePort,string"` // `,string` is used to compatible with old version json output
+ DstPort uint16 `json:"destinationPort,string"` // `,string` is used to compatible with old version json output
+ InIP netip.Addr `json:"inboundIP"`
+ InPort uint16 `json:"inboundPort,string"` // `,string` is used to compatible with old version json output
+ InName string `json:"inboundName"`
+ InUser string `json:"inboundUser"`
+ Host string `json:"host"`
+ DNSMode DNSMode `json:"dnsMode"`
+ Uid uint32 `json:"uid"`
+ Process string `json:"process"`
+ ProcessPath string `json:"processPath"`
+ SpecialProxy string `json:"specialProxy"`
+ SpecialRules string `json:"specialRules"`
+ RemoteDst string `json:"remoteDestination"`
+ DSCP uint8 `json:"dscp"`
+
+ RawSrcAddr net.Addr `json:"-"`
+ RawDstAddr net.Addr `json:"-"`
+ // Only domain rule
+ SniffHost string `json:"sniffHost"`
+}
+
+func (m *Metadata) RemoteAddress() string {
+ return net.JoinHostPort(m.String(), strconv.FormatUint(uint64(m.DstPort), 10))
+}
+
+func (m *Metadata) SourceAddress() string {
+ return net.JoinHostPort(m.SrcIP.String(), strconv.FormatUint(uint64(m.SrcPort), 10))
+}
+
+func (m *Metadata) SourceAddrPort() netip.AddrPort {
+ return netip.AddrPortFrom(m.SrcIP.Unmap(), m.SrcPort)
+}
+
+func (m *Metadata) SourceDetail() string {
+ if m.Type == INNER {
+ return fmt.Sprintf("%s", MihomoName)
+ }
+
+ switch {
+ case m.Process != "" && m.Uid != 0:
+ return fmt.Sprintf("%s(%s, uid=%d)", m.SourceAddress(), m.Process, m.Uid)
+ case m.Uid != 0:
+ return fmt.Sprintf("%s(uid=%d)", m.SourceAddress(), m.Uid)
+ case m.Process != "":
+ return fmt.Sprintf("%s(%s)", m.SourceAddress(), m.Process)
+ default:
+ return fmt.Sprintf("%s", m.SourceAddress())
+ }
+}
+
+func (m *Metadata) SourceValid() bool {
+ return m.SrcPort != 0 && m.SrcIP.IsValid()
+}
+
+func (m *Metadata) AddrType() int {
+ switch true {
+ case m.Host != "" || !m.DstIP.IsValid():
+ return socks5.AtypDomainName
+ case m.DstIP.Is4():
+ return socks5.AtypIPv4
+ default:
+ return socks5.AtypIPv6
+ }
+}
+
+func (m *Metadata) Resolved() bool {
+ return m.DstIP.IsValid()
+}
+
+func (m *Metadata) RuleHost() string {
+ if len(m.SniffHost) == 0 {
+ return m.Host
+ } else {
+ return m.SniffHost
+ }
+}
+
+// Pure is used to solve unexpected behavior
+// when dialing proxy connection in DNSMapping mode.
+func (m *Metadata) Pure() *Metadata {
+ if (m.DNSMode == DNSMapping || m.DNSMode == DNSHosts) && m.DstIP.IsValid() {
+ copyM := *m
+ copyM.Host = ""
+ return ©M
+ }
+
+ return m
+}
+
+func (m *Metadata) AddrPort() netip.AddrPort {
+ return netip.AddrPortFrom(m.DstIP.Unmap(), m.DstPort)
+}
+
+func (m *Metadata) UDPAddr() *net.UDPAddr {
+ if m.NetWork != UDP || !m.DstIP.IsValid() {
+ return nil
+ }
+ return net.UDPAddrFromAddrPort(m.AddrPort())
+}
+
+func (m *Metadata) String() string {
+ if m.Host != "" {
+ return m.Host
+ } else if m.DstIP.IsValid() {
+ return m.DstIP.String()
+ } else {
+ return ""
+ }
+}
+
+func (m *Metadata) Valid() bool {
+ return m.Host != "" || m.DstIP.IsValid()
+}
+
+func (m *Metadata) SetRemoteAddr(addr net.Addr) error {
+ if addr == nil {
+ return nil
+ }
+ if rawAddr, ok := addr.(interface{ RawAddr() net.Addr }); ok {
+ if rawAddr := rawAddr.RawAddr(); rawAddr != nil {
+ if err := m.SetRemoteAddr(rawAddr); err == nil {
+ return nil
+ }
+ }
+ }
+ if addr, ok := addr.(interface{ AddrPort() netip.AddrPort }); ok { // *net.TCPAddr, *net.UDPAddr, M.Socksaddr
+ if addrPort := addr.AddrPort(); addrPort.Port() != 0 {
+ m.DstPort = addrPort.Port()
+ if addrPort.IsValid() { // sing's M.Socksaddr maybe return an invalid AddrPort if it's a DomainName
+ m.DstIP = addrPort.Addr().Unmap()
+ return nil
+ } else {
+ if addr, ok := addr.(interface{ AddrString() string }); ok { // must be sing's M.Socksaddr
+ m.Host = addr.AddrString() // actually is M.Socksaddr.Fqdn
+ return nil
+ }
+ }
+ }
+ }
+ return m.SetRemoteAddress(addr.String())
+}
+
+func (m *Metadata) SetRemoteAddress(rawAddress string) error {
+ host, port, err := net.SplitHostPort(rawAddress)
+ if err != nil {
+ return err
+ }
+
+ var uint16Port uint16
+ if port, err := strconv.ParseUint(port, 10, 16); err == nil {
+ uint16Port = uint16(port)
+ }
+
+ if ip, err := netip.ParseAddr(host); err != nil {
+ m.Host = host
+ m.DstIP = netip.Addr{}
+ } else {
+ m.Host = ""
+ m.DstIP = ip.Unmap()
+ }
+ m.DstPort = uint16Port
+
+ return nil
+}
+
+func (m *Metadata) SwapSrcDst() {
+ m.SrcIP, m.DstIP = m.DstIP, m.SrcIP
+ m.SrcPort, m.DstPort = m.DstPort, m.SrcPort
+ m.SrcIPASN, m.DstIPASN = m.DstIPASN, m.SrcIPASN
+ m.SrcGeoIP, m.DstGeoIP = m.DstGeoIP, m.SrcGeoIP
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/path.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/path.go
new file mode 100644
index 0000000..1594441
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/path.go
@@ -0,0 +1,193 @@
+package constant
+
+import (
+ "os"
+ P "path"
+ "path/filepath"
+ "strconv"
+ "strings"
+
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/constant/features"
+)
+
+const Name = "mihomo"
+
+var (
+ GeositeName = "GeoSite.dat"
+ GeoipName = "GeoIP.dat"
+ ASNName = "ASN.mmdb"
+)
+
+// Path is used to get the configuration path
+//
+// on Unix systems, `$HOME/.config/mihomo`.
+// on Windows, `%USERPROFILE%/.config/mihomo`.
+var Path = func() *path {
+ homeDir, err := os.UserHomeDir()
+ if err != nil {
+ homeDir, _ = os.Getwd()
+ }
+ allowUnsafePath, _ := strconv.ParseBool(os.Getenv("SKIP_SAFE_PATH_CHECK"))
+ homeDir = P.Join(homeDir, ".config", Name)
+
+ if _, err = os.Stat(homeDir); err != nil {
+ if configHome, ok := os.LookupEnv("XDG_CONFIG_HOME"); ok {
+ homeDir = P.Join(configHome, Name)
+ }
+ }
+
+ return &path{homeDir: homeDir, configFile: "config.yaml", allowUnsafePath: allowUnsafePath}
+}()
+
+type path struct {
+ homeDir string
+ configFile string
+ allowUnsafePath bool
+}
+
+// SetHomeDir is used to set the configuration path
+func SetHomeDir(root string) {
+ Path.homeDir = root
+}
+
+// SetConfig is used to set the configuration file
+func SetConfig(file string) {
+ Path.configFile = file
+}
+
+func (p *path) HomeDir() string {
+ return p.homeDir
+}
+
+func (p *path) Config() string {
+ return p.configFile
+}
+
+// Resolve return a absolute path or a relative path with homedir
+func (p *path) Resolve(path string) string {
+ if !filepath.IsAbs(path) {
+ return filepath.Join(p.HomeDir(), path)
+ }
+ return path
+}
+
+// IsSafePath return true if path is a subpath of homedir
+func (p *path) IsSafePath(path string) bool {
+ if p.allowUnsafePath || features.CMFA {
+ return true
+ }
+ homedir := p.HomeDir()
+ path = p.Resolve(path)
+ rel, err := filepath.Rel(homedir, path)
+ if err != nil {
+ return false
+ }
+
+ return !strings.Contains(rel, "..")
+}
+
+func (p *path) GetPathByHash(prefix, name string) string {
+ hash := utils.MakeHash([]byte(name))
+ filename := hash.String()
+ return filepath.Join(p.HomeDir(), prefix, filename)
+}
+
+func (p *path) MMDB() string {
+ files, err := os.ReadDir(p.homeDir)
+ if err != nil {
+ return ""
+ }
+ for _, fi := range files {
+ if fi.IsDir() {
+ // 目录则直接跳过
+ continue
+ } else {
+ if strings.EqualFold(fi.Name(), "Country.mmdb") ||
+ strings.EqualFold(fi.Name(), "geoip.db") ||
+ strings.EqualFold(fi.Name(), "geoip.metadb") {
+ GeoipName = fi.Name()
+ return P.Join(p.homeDir, fi.Name())
+ }
+ }
+ }
+ return P.Join(p.homeDir, "geoip.metadb")
+}
+
+func (p *path) ASN() string {
+ files, err := os.ReadDir(p.homeDir)
+ if err != nil {
+ return ""
+ }
+ for _, fi := range files {
+ if fi.IsDir() {
+ // 目录则直接跳过
+ continue
+ } else {
+ if strings.EqualFold(fi.Name(), "ASN.mmdb") {
+ ASNName = fi.Name()
+ return P.Join(p.homeDir, fi.Name())
+ }
+ }
+ }
+ return P.Join(p.homeDir, ASNName)
+}
+
+func (p *path) OldCache() string {
+ return P.Join(p.homeDir, ".cache")
+}
+
+func (p *path) Cache() string {
+ return P.Join(p.homeDir, "cache.db")
+}
+
+func (p *path) GeoIP() string {
+ files, err := os.ReadDir(p.homeDir)
+ if err != nil {
+ return ""
+ }
+ for _, fi := range files {
+ if fi.IsDir() {
+ // 目录则直接跳过
+ continue
+ } else {
+ if strings.EqualFold(fi.Name(), "GeoIP.dat") {
+ GeoipName = fi.Name()
+ return P.Join(p.homeDir, fi.Name())
+ }
+ }
+ }
+ return P.Join(p.homeDir, "GeoIP.dat")
+}
+
+func (p *path) GeoSite() string {
+ files, err := os.ReadDir(p.homeDir)
+ if err != nil {
+ return ""
+ }
+ for _, fi := range files {
+ if fi.IsDir() {
+ // 目录则直接跳过
+ continue
+ } else {
+ if strings.EqualFold(fi.Name(), "GeoSite.dat") {
+ GeositeName = fi.Name()
+ return P.Join(p.homeDir, fi.Name())
+ }
+ }
+ }
+ return P.Join(p.homeDir, "GeoSite.dat")
+}
+
+func (p *path) GetAssetLocation(file string) string {
+ return P.Join(p.homeDir, file)
+}
+
+func (p *path) GetExecutableFullPath() string {
+ exePath, err := os.Executable()
+ if err != nil {
+ return "mihomo"
+ }
+ res, _ := filepath.EvalSymlinks(exePath)
+ return res
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/provider/interface.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/provider/interface.go
new file mode 100644
index 0000000..065b801
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/provider/interface.go
@@ -0,0 +1,186 @@
+package provider
+
+import (
+ "context"
+ "fmt"
+
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/constant"
+)
+
+// Vehicle Type
+const (
+ File VehicleType = iota
+ HTTP
+ Compatible
+)
+
+// VehicleType defined
+type VehicleType int
+
+func (v VehicleType) String() string {
+ switch v {
+ case File:
+ return "File"
+ case HTTP:
+ return "HTTP"
+ case Compatible:
+ return "Compatible"
+ default:
+ return "Unknown"
+ }
+}
+
+type Vehicle interface {
+ Read(ctx context.Context, oldHash utils.HashType) (buf []byte, hash utils.HashType, err error)
+ Write(buf []byte) error
+ Path() string
+ Url() string
+ Proxy() string
+ Type() VehicleType
+}
+
+// Provider Type
+const (
+ Proxy ProviderType = iota
+ Rule
+)
+
+// ProviderType defined
+type ProviderType int
+
+func (pt ProviderType) String() string {
+ switch pt {
+ case Proxy:
+ return "Proxy"
+ case Rule:
+ return "Rule"
+ default:
+ return "Unknown"
+ }
+}
+
+// Provider interface
+type Provider interface {
+ Name() string
+ VehicleType() VehicleType
+ Type() ProviderType
+ Initial() error
+ Update() error
+}
+
+// ProxyProvider interface
+type ProxyProvider interface {
+ Provider
+ Proxies() []constant.Proxy
+ Count() int
+ // Touch is used to inform the provider that the proxy is actually being used while getting the list of proxies.
+ // Commonly used in DialContext and DialPacketConn
+ Touch()
+ HealthCheck()
+ Version() uint32
+ RegisterHealthCheckTask(url string, expectedStatus utils.IntRanges[uint16], filter string, interval uint)
+ HealthCheckURL() string
+}
+
+// RuleProvider interface
+type RuleProvider interface {
+ Provider
+ Behavior() RuleBehavior
+ Count() int
+ Match(*constant.Metadata) bool
+ ShouldResolveIP() bool
+ ShouldFindProcess() bool
+ Strategy() any
+}
+
+// Rule Behavior
+const (
+ Domain RuleBehavior = iota
+ IPCIDR
+ Classical
+)
+
+// RuleBehavior defined
+type RuleBehavior int
+
+func (rt RuleBehavior) String() string {
+ switch rt {
+ case Domain:
+ return "Domain"
+ case IPCIDR:
+ return "IPCIDR"
+ case Classical:
+ return "Classical"
+ default:
+ return "Unknown"
+ }
+}
+
+func (rt RuleBehavior) Byte() byte {
+ switch rt {
+ case Domain:
+ return 0
+ case IPCIDR:
+ return 1
+ case Classical:
+ return 2
+ default:
+ return 255
+ }
+}
+
+func ParseBehavior(s string) (behavior RuleBehavior, err error) {
+ switch s {
+ case "domain":
+ behavior = Domain
+ case "ipcidr":
+ behavior = IPCIDR
+ case "classical":
+ behavior = Classical
+ default:
+ err = fmt.Errorf("unsupported behavior type: %s", s)
+ }
+ return
+}
+
+const (
+ YamlRule RuleFormat = iota
+ TextRule
+ MrsRule
+)
+
+type RuleFormat int
+
+func (rf RuleFormat) String() string {
+ switch rf {
+ case YamlRule:
+ return "YamlRule"
+ case TextRule:
+ return "TextRule"
+ case MrsRule:
+ return "MrsRule"
+ default:
+ return "Unknown"
+ }
+}
+
+func ParseRuleFormat(s string) (format RuleFormat, err error) {
+ switch s {
+ case "", "yaml":
+ format = YamlRule
+ case "text":
+ format = TextRule
+ case "mrs":
+ format = MrsRule
+ default:
+ err = fmt.Errorf("unsupported format type: %s", s)
+ }
+ return
+}
+
+type Tunnel interface {
+ Providers() map[string]ProxyProvider
+ RuleProviders() map[string]RuleProvider
+ RuleUpdateCallback() *utils.Callback[RuleProvider]
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/rule.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/rule.go
new file mode 100644
index 0000000..31702dd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/rule.go
@@ -0,0 +1,125 @@
+package constant
+
+// Rule Type
+const (
+ Domain RuleType = iota
+ DomainSuffix
+ DomainKeyword
+ DomainRegex
+ GEOSITE
+ GEOIP
+ SrcGEOIP
+ IPASN
+ SrcIPASN
+ IPCIDR
+ SrcIPCIDR
+ IPSuffix
+ SrcIPSuffix
+ SrcPort
+ DstPort
+ InPort
+ DSCP
+ InUser
+ InName
+ InType
+ ProcessName
+ ProcessPath
+ ProcessNameRegex
+ ProcessPathRegex
+ RuleSet
+ Network
+ Uid
+ SubRules
+ MATCH
+ AND
+ OR
+ NOT
+)
+
+type RuleType int
+
+func (rt RuleType) String() string {
+ switch rt {
+ case Domain:
+ return "Domain"
+ case DomainSuffix:
+ return "DomainSuffix"
+ case DomainKeyword:
+ return "DomainKeyword"
+ case DomainRegex:
+ return "DomainRegex"
+ case GEOSITE:
+ return "GeoSite"
+ case GEOIP:
+ return "GeoIP"
+ case SrcGEOIP:
+ return "SrcGeoIP"
+ case IPASN:
+ return "IPASN"
+ case SrcIPASN:
+ return "SrcIPASN"
+ case IPCIDR:
+ return "IPCIDR"
+ case SrcIPCIDR:
+ return "SrcIPCIDR"
+ case IPSuffix:
+ return "IPSuffix"
+ case SrcIPSuffix:
+ return "SrcIPSuffix"
+ case SrcPort:
+ return "SrcPort"
+ case DstPort:
+ return "DstPort"
+ case InPort:
+ return "InPort"
+ case InUser:
+ return "InUser"
+ case InName:
+ return "InName"
+ case InType:
+ return "InType"
+ case ProcessName:
+ return "ProcessName"
+ case ProcessPath:
+ return "ProcessPath"
+ case ProcessNameRegex:
+ return "ProcessNameRegex"
+ case ProcessPathRegex:
+ return "ProcessPathRegex"
+ case MATCH:
+ return "Match"
+ case RuleSet:
+ return "RuleSet"
+ case Network:
+ return "Network"
+ case DSCP:
+ return "DSCP"
+ case Uid:
+ return "Uid"
+ case SubRules:
+ return "SubRules"
+ case AND:
+ return "AND"
+ case OR:
+ return "OR"
+ case NOT:
+ return "NOT"
+ default:
+ return "Unknown"
+ }
+}
+
+type Rule interface {
+ RuleType() RuleType
+ Match(metadata *Metadata) (bool, string)
+ Adapter() string
+ Payload() string
+ ShouldResolveIP() bool
+ ShouldFindProcess() bool
+ ProviderNames() []string
+}
+
+type RuleGroup interface {
+ Rule
+ GetRecodeSize() int
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/sniffer/sniffer.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/sniffer/sniffer.go
new file mode 100644
index 0000000..36da69a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/sniffer/sniffer.go
@@ -0,0 +1,36 @@
+package sniffer
+
+import "github.com/metacubex/mihomo/constant"
+
+type Sniffer interface {
+ SupportNetwork() constant.NetWork
+ // SniffData must not change input bytes
+ SniffData(bytes []byte) (string, error)
+ Protocol() string
+ SupportPort(port uint16) bool
+}
+
+const (
+ TLS Type = iota
+ HTTP
+ QUIC
+)
+
+var (
+ List = []Type{TLS, HTTP, QUIC}
+)
+
+type Type int
+
+func (rt Type) String() string {
+ switch rt {
+ case TLS:
+ return "TLS"
+ case HTTP:
+ return "HTTP"
+ case QUIC:
+ return "QUIC"
+ default:
+ return "Unknown"
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/tun.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/tun.go
new file mode 100644
index 0000000..669f7a2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/tun.go
@@ -0,0 +1,85 @@
+package constant
+
+import (
+ "encoding/json"
+ "errors"
+ "strings"
+)
+
+var StackTypeMapping = map[string]TUNStack{
+ strings.ToLower(TunGvisor.String()): TunGvisor,
+ strings.ToLower(TunSystem.String()): TunSystem,
+ strings.ToLower(TunMixed.String()): TunMixed,
+}
+
+const (
+ TunGvisor TUNStack = iota
+ TunSystem
+ TunMixed
+)
+
+type TUNStack int
+
+// UnmarshalYAML unserialize TUNStack with yaml
+func (e *TUNStack) UnmarshalYAML(unmarshal func(any) error) error {
+ var tp string
+ if err := unmarshal(&tp); err != nil {
+ return err
+ }
+ mode, exist := StackTypeMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid tun stack")
+ }
+ *e = mode
+ return nil
+}
+
+// MarshalYAML serialize TUNStack with yaml
+func (e TUNStack) MarshalYAML() (any, error) {
+ return e.String(), nil
+}
+
+// UnmarshalJSON unserialize TUNStack with json
+func (e *TUNStack) UnmarshalJSON(data []byte) error {
+ var tp string
+ json.Unmarshal(data, &tp)
+ mode, exist := StackTypeMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid tun stack")
+ }
+ *e = mode
+ return nil
+}
+
+// MarshalJSON serialize TUNStack with json
+func (e TUNStack) MarshalJSON() ([]byte, error) {
+ return json.Marshal(e.String())
+}
+
+// UnmarshalText unserialize TUNStack
+func (e *TUNStack) UnmarshalText(data []byte) error {
+ mode, exist := StackTypeMapping[strings.ToLower(string(data))]
+ if !exist {
+ return errors.New("invalid tun stack")
+ }
+ *e = mode
+ return nil
+}
+
+// MarshalText serialize TUNStack with json
+func (e TUNStack) MarshalText() ([]byte, error) {
+ return []byte(e.String()), nil
+}
+
+func (e TUNStack) String() string {
+ switch e {
+ case TunGvisor:
+ return "gVisor"
+ case TunSystem:
+ return "System"
+ case TunMixed:
+ return "Mixed"
+ default:
+ return "unknown"
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/tunnel.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/tunnel.go
new file mode 100644
index 0000000..7c9d08e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/tunnel.go
@@ -0,0 +1,12 @@
+package constant
+
+import "net"
+
+type Tunnel interface {
+ // HandleTCPConn will handle a tcp connection blocking
+ HandleTCPConn(conn net.Conn, metadata *Metadata)
+ // HandleUDPPacket will handle a udp packet nonblocking
+ HandleUDPPacket(packet UDPPacket, metadata *Metadata)
+ // NatTable return nat table
+ NatTable() NatTable
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/constant/version.go b/Android-kotlin-Code/core/src/foss/golang/clash/constant/version.go
new file mode 100644
index 0000000..c71024c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/constant/version.go
@@ -0,0 +1,8 @@
+package constant
+
+var (
+ Meta = true
+ Version = "1.10.0"
+ BuildTime = "unknown time"
+ MihomoName = "mihomo"
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/context/conn.go b/Android-kotlin-Code/core/src/foss/golang/clash/context/conn.go
new file mode 100644
index 0000000..bae07c2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/context/conn.go
@@ -0,0 +1,40 @@
+package context
+
+import (
+ "github.com/metacubex/mihomo/common/utils"
+ "net"
+
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/gofrs/uuid/v5"
+)
+
+type ConnContext struct {
+ id uuid.UUID
+ metadata *C.Metadata
+ conn *N.BufferedConn
+}
+
+func NewConnContext(conn net.Conn, metadata *C.Metadata) *ConnContext {
+ return &ConnContext{
+ id: utils.NewUUIDV4(),
+ metadata: metadata,
+ conn: N.NewBufferedConn(conn),
+ }
+}
+
+// ID implement C.ConnContext ID
+func (c *ConnContext) ID() uuid.UUID {
+ return c.id
+}
+
+// Metadata implement C.ConnContext Metadata
+func (c *ConnContext) Metadata() *C.Metadata {
+ return c.metadata
+}
+
+// Conn implement C.ConnContext Conn
+func (c *ConnContext) Conn() *N.BufferedConn {
+ return c.conn
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/context/dns.go b/Android-kotlin-Code/core/src/foss/golang/clash/context/dns.go
new file mode 100644
index 0000000..1cc2067
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/context/dns.go
@@ -0,0 +1,47 @@
+package context
+
+import (
+ "context"
+ "github.com/metacubex/mihomo/common/utils"
+
+ "github.com/gofrs/uuid/v5"
+ "github.com/miekg/dns"
+)
+
+const (
+ DNSTypeHost = "host"
+ DNSTypeFakeIP = "fakeip"
+ DNSTypeRaw = "raw"
+)
+
+type DNSContext struct {
+ context.Context
+
+ id uuid.UUID
+ msg *dns.Msg
+ tp string
+}
+
+func NewDNSContext(ctx context.Context, msg *dns.Msg) *DNSContext {
+ return &DNSContext{
+ Context: ctx,
+
+ id: utils.NewUUIDV4(),
+ msg: msg,
+ }
+}
+
+// ID implement C.PlainContext ID
+func (c *DNSContext) ID() uuid.UUID {
+ return c.id
+}
+
+// SetType set type of response
+func (c *DNSContext) SetType(tp string) {
+ c.tp = tp
+}
+
+// Type return type of response
+func (c *DNSContext) Type() string {
+ return c.tp
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/context/packetconn.go b/Android-kotlin-Code/core/src/foss/golang/clash/context/packetconn.go
new file mode 100644
index 0000000..feab766
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/context/packetconn.go
@@ -0,0 +1,43 @@
+package context
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/gofrs/uuid/v5"
+)
+
+type PacketConnContext struct {
+ id uuid.UUID
+ metadata *C.Metadata
+ packetConn net.PacketConn
+}
+
+func NewPacketConnContext(metadata *C.Metadata) *PacketConnContext {
+ return &PacketConnContext{
+ id: utils.NewUUIDV4(),
+ metadata: metadata,
+ }
+}
+
+// ID implement C.PacketConnContext ID
+func (pc *PacketConnContext) ID() uuid.UUID {
+ return pc.id
+}
+
+// Metadata implement C.PacketConnContext Metadata
+func (pc *PacketConnContext) Metadata() *C.Metadata {
+ return pc.metadata
+}
+
+// PacketConn implement C.PacketConnContext PacketConn
+func (pc *PacketConnContext) PacketConn() net.PacketConn {
+ return pc.packetConn
+}
+
+// InjectPacketConn injectPacketConn manually
+func (pc *PacketConnContext) InjectPacketConn(pconn C.PacketConn) {
+ pc.packetConn = pconn
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/client.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/client.go
new file mode 100644
index 0000000..62fc12f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/client.go
@@ -0,0 +1,107 @@
+package dns
+
+import (
+ "context"
+ "crypto/tls"
+ "fmt"
+ "net"
+ "strings"
+
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/log"
+
+ D "github.com/miekg/dns"
+)
+
+type client struct {
+ *D.Client
+ port string
+ host string
+ dialer *dnsDialer
+ addr string
+}
+
+var _ dnsClient = (*client)(nil)
+
+// Address implements dnsClient
+func (c *client) Address() string {
+ if len(c.addr) != 0 {
+ return c.addr
+ }
+ schema := "udp"
+ if strings.HasPrefix(c.Client.Net, "tcp") {
+ schema = "tcp"
+ if strings.HasSuffix(c.Client.Net, "tls") {
+ schema = "tls"
+ }
+ }
+
+ c.addr = fmt.Sprintf("%s://%s", schema, net.JoinHostPort(c.host, c.port))
+ return c.addr
+}
+
+func (c *client) ExchangeContext(ctx context.Context, m *D.Msg) (*D.Msg, error) {
+ network := "udp"
+ if strings.HasPrefix(c.Client.Net, "tcp") {
+ network = "tcp"
+ }
+
+ addr := net.JoinHostPort(c.host, c.port)
+ conn, err := c.dialer.DialContext(ctx, network, addr)
+ if err != nil {
+ return nil, err
+ }
+ defer func() {
+ _ = conn.Close()
+ }()
+
+ // miekg/dns ExchangeContext doesn't respond to context cancel.
+ // this is a workaround
+ type result struct {
+ msg *D.Msg
+ err error
+ }
+ ch := make(chan result, 1)
+ go func() {
+ if strings.HasSuffix(c.Client.Net, "tls") {
+ conn = tls.Client(conn, ca.GetGlobalTLSConfig(c.Client.TLSConfig))
+ }
+
+ dConn := &D.Conn{
+ Conn: conn,
+ UDPSize: c.Client.UDPSize,
+ TsigSecret: c.Client.TsigSecret,
+ TsigProvider: c.Client.TsigProvider,
+ }
+
+ msg, _, err := c.Client.ExchangeWithConn(m, dConn)
+
+ // Resolvers MUST resend queries over TCP if they receive a truncated UDP response (with TC=1 set)!
+ if msg != nil && msg.Truncated && c.Client.Net == "" {
+ tcpClient := *c.Client // copy a client
+ tcpClient.Net = "tcp"
+ network = "tcp"
+ log.Debugln("[DNS] Truncated reply from %s:%s for %s over UDP, retrying over TCP", c.host, c.port, m.Question[0].String())
+ dConn.Conn, err = c.dialer.DialContext(ctx, network, addr)
+ if err != nil {
+ ch <- result{msg, err}
+ return
+ }
+ defer func() {
+ _ = conn.Close()
+ }()
+ msg, _, err = tcpClient.ExchangeWithConn(m, dConn)
+ }
+
+ ch <- result{msg, err}
+ }()
+
+ select {
+ case <-ctx.Done():
+ return nil, ctx.Err()
+ case ret := <-ch:
+ return ret.msg, ret.err
+ }
+}
+
+func (c *client) ResetConnection() {}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/dhcp.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/dhcp.go
new file mode 100644
index 0000000..e3829b7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/dhcp.go
@@ -0,0 +1,156 @@
+package dns
+
+import (
+ "context"
+ "net"
+ "net/netip"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/component/dhcp"
+ "github.com/metacubex/mihomo/component/iface"
+ D "github.com/miekg/dns"
+)
+
+const (
+ IfaceTTL = time.Second * 20
+ DHCPTTL = time.Hour
+ DHCPTimeout = time.Minute
+)
+
+type dhcpClient struct {
+ ifaceName string
+
+ lock sync.Mutex
+ ifaceInvalidate time.Time
+ dnsInvalidate time.Time
+
+ ifaceAddr netip.Prefix
+ done chan struct{}
+ clients []dnsClient
+ err error
+}
+
+var _ dnsClient = (*dhcpClient)(nil)
+
+// Address implements dnsClient
+func (d *dhcpClient) Address() string {
+ addrs := make([]string, 0)
+ for _, c := range d.clients {
+ addrs = append(addrs, c.Address())
+ }
+ return strings.Join(addrs, ",")
+}
+
+func (d *dhcpClient) ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err error) {
+ clients, err := d.resolve(ctx)
+ if err != nil {
+ return nil, err
+ }
+
+ msg, _, err = batchExchange(ctx, clients, m)
+ return
+}
+
+func (d *dhcpClient) ResetConnection() {
+ for _, client := range d.clients {
+ client.ResetConnection()
+ }
+}
+
+func (d *dhcpClient) resolve(ctx context.Context) ([]dnsClient, error) {
+ d.lock.Lock()
+
+ invalidated, err := d.invalidate()
+ if err != nil {
+ d.err = err
+ } else if invalidated {
+ done := make(chan struct{})
+
+ d.done = done
+
+ go func() {
+ ctx, cancel := context.WithTimeout(context.Background(), DHCPTimeout)
+ defer cancel()
+
+ var res []dnsClient
+ dns, err := dhcp.ResolveDNSFromDHCP(ctx, d.ifaceName)
+ // dns never empty if err is nil
+ if err == nil {
+ nameserver := make([]NameServer, 0, len(dns))
+ for _, item := range dns {
+ nameserver = append(nameserver, NameServer{
+ Addr: net.JoinHostPort(item.String(), "53"),
+ Interface: d.ifaceName,
+ })
+ }
+
+ res = transform(nameserver, nil)
+ }
+
+ d.lock.Lock()
+ defer d.lock.Unlock()
+
+ close(done)
+
+ d.done = nil
+ d.clients = res
+ d.err = err
+ }()
+ }
+
+ d.lock.Unlock()
+
+ for {
+ d.lock.Lock()
+
+ res, err, done := d.clients, d.err, d.done
+
+ d.lock.Unlock()
+
+ // initializing
+ if res == nil && err == nil {
+ select {
+ case <-done:
+ continue
+ case <-ctx.Done():
+ return nil, ctx.Err()
+ }
+ }
+
+ // dirty return
+ return res, err
+ }
+}
+
+func (d *dhcpClient) invalidate() (bool, error) {
+ if time.Now().Before(d.ifaceInvalidate) {
+ return false, nil
+ }
+
+ d.ifaceInvalidate = time.Now().Add(IfaceTTL)
+
+ ifaceObj, err := iface.ResolveInterface(d.ifaceName)
+ if err != nil {
+ return false, err
+ }
+
+ addr, err := ifaceObj.PickIPv4Addr(netip.Addr{})
+ if err != nil {
+ return false, err
+ }
+
+ if time.Now().Before(d.dnsInvalidate) && d.ifaceAddr == addr {
+ return false, nil
+ }
+
+ d.dnsInvalidate = time.Now().Add(DHCPTTL)
+ d.ifaceAddr = addr
+
+ return d.done == nil, nil
+}
+
+func newDHCPClient(ifaceName string) *dhcpClient {
+ return &dhcpClient{ifaceName: ifaceName}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/dialer.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/dialer.go
new file mode 100644
index 0000000..f4d9e12
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/dialer.go
@@ -0,0 +1,11 @@
+package dns
+
+// export functions from tunnel module
+
+import "github.com/metacubex/mihomo/tunnel"
+
+const RespectRules = tunnel.DnsRespectRules
+
+type dnsDialer = tunnel.DNSDialer
+
+var newDNSDialer = tunnel.NewDNSDialer
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/doh.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/doh.go
new file mode 100644
index 0000000..027afd5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/doh.go
@@ -0,0 +1,766 @@
+package dns
+
+import (
+ "context"
+ "crypto/tls"
+ "encoding/base64"
+ "errors"
+ "fmt"
+ "io"
+ "net"
+ "net/http"
+ "net/netip"
+ "net/url"
+ "runtime"
+ "strconv"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/component/ca"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/quic-go"
+ "github.com/metacubex/quic-go/http3"
+ D "github.com/miekg/dns"
+ "golang.org/x/exp/slices"
+ "golang.org/x/net/http2"
+)
+
+// Values to configure HTTP and HTTP/2 transport.
+const (
+ // transportDefaultReadIdleTimeout is the default timeout for pinging
+ // idle connections in HTTP/2 transport.
+ transportDefaultReadIdleTimeout = 30 * time.Second
+
+ // transportDefaultIdleConnTimeout is the default timeout for idle
+ // connections in HTTP transport.
+ transportDefaultIdleConnTimeout = 5 * time.Minute
+
+ // dohMaxConnsPerHost controls the maximum number of connections for
+ // each host.
+ dohMaxConnsPerHost = 1
+ dialTimeout = 10 * time.Second
+
+ // dohMaxIdleConns controls the maximum number of connections being idle
+ // at the same time.
+ dohMaxIdleConns = 1
+ maxElapsedTime = time.Second * 30
+)
+
+var DefaultHTTPVersions = []C.HTTPVersion{C.HTTPVersion11, C.HTTPVersion2}
+
+// dnsOverHTTPS is a struct that implements the Upstream interface for the
+// DNS-over-HTTPS protocol.
+type dnsOverHTTPS struct {
+ // The Client's Transport typically has internal state (cached TCP
+ // connections), so Clients should be reused instead of created as
+ // needed. Clients are safe for concurrent use by multiple goroutines.
+ client *http.Client
+ clientMu sync.Mutex
+
+ // quicConfig is the QUIC configuration that is used if HTTP/3 is enabled
+ // for this upstream.
+ quicConfig *quic.Config
+ quicConfigGuard sync.Mutex
+
+ url *url.URL
+ httpVersions []C.HTTPVersion
+ dialer *dnsDialer
+ addr string
+ skipCertVerify bool
+ ecsPrefix netip.Prefix
+ ecsOverride bool
+}
+
+// type check
+var _ dnsClient = (*dnsOverHTTPS)(nil)
+
+// newDoH returns the DNS-over-HTTPS Upstream.
+func newDoHClient(urlString string, r *Resolver, preferH3 bool, params map[string]string, proxyAdapter C.ProxyAdapter, proxyName string) dnsClient {
+ u, _ := url.Parse(urlString)
+ httpVersions := DefaultHTTPVersions
+ if preferH3 {
+ httpVersions = append(httpVersions, C.HTTPVersion3)
+ }
+
+ if params["h3"] == "true" {
+ httpVersions = []C.HTTPVersion{C.HTTPVersion3}
+ }
+
+ doh := &dnsOverHTTPS{
+ url: u,
+ addr: u.String(),
+ dialer: newDNSDialer(r, proxyAdapter, proxyName),
+ quicConfig: &quic.Config{
+ KeepAlivePeriod: QUICKeepAlivePeriod,
+ TokenStore: newQUICTokenStore(),
+ },
+ httpVersions: httpVersions,
+ }
+
+ if params["skip-cert-verify"] == "true" {
+ doh.skipCertVerify = true
+ }
+
+ if ecs := params["ecs"]; ecs != "" {
+ prefix, err := netip.ParsePrefix(ecs)
+ if err != nil {
+ addr, err := netip.ParseAddr(ecs)
+ if err != nil {
+ log.Warnln("DOH [%s] config with invalid ecs: %s", doh.addr, ecs)
+ } else {
+ doh.ecsPrefix = netip.PrefixFrom(addr, addr.BitLen())
+ }
+ } else {
+ doh.ecsPrefix = prefix
+ }
+ }
+
+ if doh.ecsPrefix.IsValid() {
+ log.Debugln("DOH [%s] config with ecs: %s", doh.addr, doh.ecsPrefix)
+ }
+
+ if params["ecs-override"] == "true" {
+ doh.ecsOverride = true
+ }
+
+ runtime.SetFinalizer(doh, (*dnsOverHTTPS).Close)
+
+ return doh
+}
+
+// Address implements the Upstream interface for *dnsOverHTTPS.
+func (doh *dnsOverHTTPS) Address() string {
+ return doh.addr
+}
+
+func (doh *dnsOverHTTPS) ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err error) {
+ // Quote from https://www.rfc-editor.org/rfc/rfc8484.html:
+ // In order to maximize HTTP cache friendliness, DoH clients using media
+ // formats that include the ID field from the DNS message header, such
+ // as "application/dns-message", SHOULD use a DNS ID of 0 in every DNS
+ // request.
+ m = m.Copy()
+ id := m.Id
+ m.Id = 0
+ defer func() {
+ // Restore the original ID to not break compatibility with proxies.
+ m.Id = id
+ if msg != nil {
+ msg.Id = id
+ }
+ }()
+
+ if doh.ecsPrefix.IsValid() {
+ setEdns0Subnet(m, doh.ecsPrefix, doh.ecsOverride)
+ }
+
+ // Check if there was already an active client before sending the request.
+ // We'll only attempt to re-connect if there was one.
+ client, isCached, err := doh.getClient(ctx)
+ if err != nil {
+ return nil, fmt.Errorf("failed to init http client: %w", err)
+ }
+
+ // Make the first attempt to send the DNS query.
+ msg, err = doh.exchangeHTTPS(ctx, client, m)
+
+ // Make up to 2 attempts to re-create the HTTP client and send the request
+ // again. There are several cases (mostly, with QUIC) where this workaround
+ // is necessary to make HTTP client usable. We need to make 2 attempts in
+ // the case when the connection was closed (due to inactivity for example)
+ // AND the server refuses to open a 0-RTT connection.
+ for i := 0; isCached && doh.shouldRetry(err) && i < 2; i++ {
+ client, err = doh.resetClient(ctx, err)
+ if err != nil {
+ return nil, fmt.Errorf("failed to reset http client: %w", err)
+ }
+
+ msg, err = doh.exchangeHTTPS(ctx, client, m)
+ }
+
+ if err != nil && !errors.Is(err, context.Canceled) && !errors.Is(err, context.DeadlineExceeded) {
+ // If the request failed anyway, make sure we don't use this client.
+ _, resErr := doh.resetClient(ctx, err)
+
+ return nil, fmt.Errorf("%w (resErr:%v)", err, resErr)
+ }
+
+ return msg, err
+}
+
+// Close implements the Upstream interface for *dnsOverHTTPS.
+func (doh *dnsOverHTTPS) Close() (err error) {
+ doh.clientMu.Lock()
+ defer doh.clientMu.Unlock()
+
+ runtime.SetFinalizer(doh, nil)
+
+ if doh.client == nil {
+ return nil
+ }
+
+ return doh.closeClient(doh.client)
+}
+
+func (doh *dnsOverHTTPS) ResetConnection() {
+ doh.clientMu.Lock()
+ defer doh.clientMu.Unlock()
+
+ if doh.client == nil {
+ return
+ }
+
+ _ = doh.closeClient(doh.client)
+ doh.client = nil
+}
+
+// closeClient cleans up resources used by client if necessary.
+func (doh *dnsOverHTTPS) closeClient(client *http.Client) (err error) {
+ client.CloseIdleConnections()
+
+ if isHTTP3(client) { // HTTP/3 may leak due to keep-alive connections.
+ return client.Transport.(io.Closer).Close()
+ }
+
+ return nil
+}
+
+// exchangeHTTPS sends the DNS query to a DoH resolver using the specified
+// http.Client instance.
+func (doh *dnsOverHTTPS) exchangeHTTPS(ctx context.Context, client *http.Client, req *D.Msg) (resp *D.Msg, err error) {
+ buf, err := req.Pack()
+ if err != nil {
+ return nil, fmt.Errorf("packing message: %w", err)
+ }
+
+ // It appears, that GET requests are more memory-efficient with Golang
+ // implementation of HTTP/2.
+ method := http.MethodGet
+ if isHTTP3(client) {
+ // If we're using HTTP/3, use http3.MethodGet0RTT to force using 0-RTT.
+ method = http3.MethodGet0RTT
+ }
+
+ requestUrl := *doh.url // don't modify origin url
+ requestUrl.RawQuery = fmt.Sprintf("dns=%s", base64.RawURLEncoding.EncodeToString(buf))
+ httpReq, err := http.NewRequestWithContext(ctx, method, requestUrl.String(), nil)
+ if err != nil {
+ return nil, fmt.Errorf("creating http request to %s: %w", doh.url, err)
+ }
+
+ httpReq.Header.Set("Accept", "application/dns-message")
+ httpReq.Header.Set("User-Agent", "")
+ httpResp, err := client.Do(httpReq)
+ if err != nil {
+ return nil, fmt.Errorf("requesting %s: %w", doh.url, err)
+ }
+ defer httpResp.Body.Close()
+
+ body, err := io.ReadAll(httpResp.Body)
+ if err != nil {
+ return nil, fmt.Errorf("reading %s: %w", doh.url, err)
+ }
+
+ if httpResp.StatusCode != http.StatusOK {
+ return nil,
+ fmt.Errorf(
+ "expected status %d, got %d from %s",
+ http.StatusOK,
+ httpResp.StatusCode,
+ doh.url,
+ )
+ }
+
+ resp = &D.Msg{}
+ err = resp.Unpack(body)
+ if err != nil {
+ return nil, fmt.Errorf(
+ "unpacking response from %s: body is %s: %w",
+ doh.url,
+ body,
+ err,
+ )
+ }
+
+ if resp.Id != req.Id {
+ err = D.ErrId
+ }
+
+ return resp, err
+}
+
+// shouldRetry checks what error we have received and returns true if we should
+// re-create the HTTP client and retry the request.
+func (doh *dnsOverHTTPS) shouldRetry(err error) (ok bool) {
+ if err == nil {
+ return false
+ }
+
+ var netErr net.Error
+ if errors.As(err, &netErr) && netErr.Timeout() {
+ // If this is a timeout error, trying to forcibly re-create the HTTP
+ // client instance. This is an attempt to fix an issue with DoH client
+ // stalling after a network change.
+ //
+ // See https://github.com/AdguardTeam/AdGuardHome/issues/3217.
+ return true
+ }
+
+ if isQUICRetryError(err) {
+ return true
+ }
+
+ return false
+}
+
+// resetClient triggers re-creation of the *http.Client that is used by this
+// upstream. This method accepts the error that caused resetting client as
+// depending on the error we may also reset the QUIC config.
+func (doh *dnsOverHTTPS) resetClient(ctx context.Context, resetErr error) (client *http.Client, err error) {
+ doh.clientMu.Lock()
+ defer doh.clientMu.Unlock()
+
+ if errors.Is(resetErr, quic.Err0RTTRejected) {
+ // Reset the TokenStore only if 0-RTT was rejected.
+ doh.resetQUICConfig()
+ }
+
+ oldClient := doh.client
+ if oldClient != nil {
+ closeErr := doh.closeClient(oldClient)
+ if closeErr != nil {
+ log.Warnln("warning: failed to close the old http client: %v", closeErr)
+ }
+ }
+
+ log.Debugln("re-creating the http client due to %v", resetErr)
+ doh.client, err = doh.createClient(ctx)
+
+ return doh.client, err
+}
+
+// getQUICConfig returns the QUIC config in a thread-safe manner. Note, that
+// this method returns a pointer, it is forbidden to change its properties.
+func (doh *dnsOverHTTPS) getQUICConfig() (c *quic.Config) {
+ doh.quicConfigGuard.Lock()
+ defer doh.quicConfigGuard.Unlock()
+
+ return doh.quicConfig
+}
+
+// resetQUICConfig Re-create the token store to make sure we're not trying to
+// use invalid for 0-RTT.
+func (doh *dnsOverHTTPS) resetQUICConfig() {
+ doh.quicConfigGuard.Lock()
+ defer doh.quicConfigGuard.Unlock()
+
+ doh.quicConfig = doh.quicConfig.Clone()
+ doh.quicConfig.TokenStore = newQUICTokenStore()
+}
+
+// getClient gets or lazily initializes an HTTP client (and transport) that will
+// be used for this DoH resolver.
+func (doh *dnsOverHTTPS) getClient(ctx context.Context) (c *http.Client, isCached bool, err error) {
+ startTime := time.Now()
+
+ doh.clientMu.Lock()
+ defer doh.clientMu.Unlock()
+ if doh.client != nil {
+ return doh.client, true, nil
+ }
+
+ // Timeout can be exceeded while waiting for the lock. This happens quite
+ // often on mobile devices.
+ elapsed := time.Since(startTime)
+ if elapsed > maxElapsedTime {
+ return nil, false, fmt.Errorf("timeout exceeded: %s", elapsed)
+ }
+
+ log.Debugln("creating a new http client")
+ doh.client, err = doh.createClient(ctx)
+
+ return doh.client, false, err
+}
+
+// createClient creates a new *http.Client instance. The HTTP protocol version
+// will depend on whether HTTP3 is allowed and provided by this upstream. Note,
+// that we'll attempt to establish a QUIC connection when creating the client in
+// order to check whether HTTP3 is supported.
+func (doh *dnsOverHTTPS) createClient(ctx context.Context) (*http.Client, error) {
+ transport, err := doh.createTransport(ctx)
+ if err != nil {
+ return nil, fmt.Errorf("[%s] initializing http transport: %w", doh.url.String(), err)
+ }
+
+ client := &http.Client{
+ Transport: transport,
+ Timeout: DefaultTimeout,
+ Jar: nil,
+ }
+
+ doh.client = client
+
+ return doh.client, nil
+}
+
+// createTransport initializes an HTTP transport that will be used specifically
+// for this DoH resolver. This HTTP transport ensures that the HTTP requests
+// will be sent exactly to the IP address got from the bootstrap resolver. Note,
+// that this function will first attempt to establish a QUIC connection (if
+// HTTP3 is enabled in the upstream options). If this attempt is successful,
+// it returns an HTTP3 transport, otherwise it returns the H1/H2 transport.
+func (doh *dnsOverHTTPS) createTransport(ctx context.Context) (t http.RoundTripper, err error) {
+ transport := &http.Transport{
+ DisableCompression: true,
+ DialContext: doh.dialer.DialContext,
+ IdleConnTimeout: transportDefaultIdleConnTimeout,
+ MaxConnsPerHost: dohMaxConnsPerHost,
+ MaxIdleConns: dohMaxIdleConns,
+ }
+
+ if doh.url.Scheme == "http" {
+ return transport, nil
+ }
+
+ tlsConfig := ca.GetGlobalTLSConfig(
+ &tls.Config{
+ InsecureSkipVerify: doh.skipCertVerify,
+ MinVersion: tls.VersionTLS12,
+ SessionTicketsDisabled: false,
+ })
+ var nextProtos []string
+ for _, v := range doh.httpVersions {
+ nextProtos = append(nextProtos, string(v))
+ }
+ tlsConfig.NextProtos = nextProtos
+ transport.TLSClientConfig = tlsConfig
+
+ if slices.Contains(doh.httpVersions, C.HTTPVersion3) {
+ // First, we attempt to create an HTTP3 transport. If the probe QUIC
+ // connection is established successfully, we'll be using HTTP3 for this
+ // upstream.
+ transportH3, err := doh.createTransportH3(ctx, tlsConfig)
+ if err == nil {
+ log.Debugln("[%s] using HTTP/3 for this upstream: QUIC was faster", doh.url.String())
+ return transportH3, nil
+ }
+ }
+
+ log.Debugln("[%s] using HTTP/2 for this upstream: %v", doh.url.String(), err)
+
+ if !doh.supportsHTTP() {
+ return nil, errors.New("HTTP1/1 and HTTP2 are not supported by this upstream")
+ }
+
+ // Since we have a custom DialContext, we need to use this field to
+ // make golang http.Client attempt to use HTTP/2. Otherwise, it would
+ // only be used when negotiated on the TLS level.
+ transport.ForceAttemptHTTP2 = true
+
+ // Explicitly configure transport to use HTTP/2.
+ //
+ // See https://github.com/AdguardTeam/dnsproxy/issues/11.
+ var transportH2 *http2.Transport
+ transportH2, err = http2.ConfigureTransports(transport)
+ if err != nil {
+ return nil, err
+ }
+
+ // Enable HTTP/2 pings on idle connections.
+ transportH2.ReadIdleTimeout = transportDefaultReadIdleTimeout
+
+ return transport, nil
+}
+
+// http3Transport is a wrapper over *http3.RoundTripper that tries to optimize
+// its behavior. The main thing that it does is trying to force use a single
+// connection to a host instead of creating a new one all the time. It also
+// helps mitigate race issues with quic-go.
+type http3Transport struct {
+ baseTransport *http3.RoundTripper
+
+ closed bool
+ mu sync.RWMutex
+}
+
+// type check
+var _ http.RoundTripper = (*http3Transport)(nil)
+
+// RoundTrip implements the http.RoundTripper interface for *http3Transport.
+func (h *http3Transport) RoundTrip(req *http.Request) (resp *http.Response, err error) {
+ h.mu.RLock()
+ defer h.mu.RUnlock()
+
+ if h.closed {
+ return nil, net.ErrClosed
+ }
+
+ // Try to use cached connection to the target host if it's available.
+ resp, err = h.baseTransport.RoundTripOpt(req, http3.RoundTripOpt{OnlyCachedConn: true})
+
+ if errors.Is(err, http3.ErrNoCachedConn) {
+ // If there are no cached connection, trigger creating a new one.
+ resp, err = h.baseTransport.RoundTrip(req)
+ }
+
+ return resp, err
+}
+
+// type check
+var _ io.Closer = (*http3Transport)(nil)
+
+// Close implements the io.Closer interface for *http3Transport.
+func (h *http3Transport) Close() (err error) {
+ h.mu.Lock()
+ defer h.mu.Unlock()
+
+ h.closed = true
+
+ return h.baseTransport.Close()
+}
+
+func (h *http3Transport) CloseIdleConnections() {
+ h.mu.RLock()
+ defer h.mu.RUnlock()
+
+ h.baseTransport.CloseIdleConnections()
+}
+
+// createTransportH3 tries to create an HTTP/3 transport for this upstream.
+// We should be able to fall back to H1/H2 in case if HTTP/3 is unavailable or
+// if it is too slow. In order to do that, this method will run two probes
+// in parallel (one for TLS, the other one for QUIC) and if QUIC is faster it
+// will create the *http3.RoundTripper instance.
+func (doh *dnsOverHTTPS) createTransportH3(
+ ctx context.Context,
+ tlsConfig *tls.Config,
+) (roundTripper http.RoundTripper, err error) {
+ if !doh.supportsH3() {
+ return nil, errors.New("HTTP3 support is not enabled")
+ }
+
+ addr, err := doh.probeH3(ctx, tlsConfig)
+ if err != nil {
+ return nil, err
+ }
+
+ rt := &http3.RoundTripper{
+ Dial: func(
+ ctx context.Context,
+
+ // Ignore the address and always connect to the one that we got
+ // from the bootstrapper.
+ _ string,
+ tlsCfg *tls.Config,
+ cfg *quic.Config,
+ ) (c quic.EarlyConnection, err error) {
+ return doh.dialQuic(ctx, addr, tlsCfg, cfg)
+ },
+ DisableCompression: true,
+ TLSClientConfig: tlsConfig,
+ QUICConfig: doh.getQUICConfig(),
+ }
+
+ return &http3Transport{baseTransport: rt}, nil
+}
+
+func (doh *dnsOverHTTPS) dialQuic(ctx context.Context, addr string, tlsCfg *tls.Config, cfg *quic.Config) (quic.EarlyConnection, error) {
+ ip, port, err := net.SplitHostPort(addr)
+ if err != nil {
+ return nil, err
+ }
+ portInt, err := strconv.Atoi(port)
+ if err != nil {
+ return nil, err
+ }
+ udpAddr := net.UDPAddr{
+ IP: net.ParseIP(ip),
+ Port: portInt,
+ }
+ conn, err := doh.dialer.ListenPacket(ctx, "udp", addr)
+ if err != nil {
+ return nil, err
+ }
+ transport := quic.Transport{Conn: conn}
+ transport.SetCreatedConn(true) // auto close conn
+ transport.SetSingleUse(true) // auto close transport
+ tlsCfg = tlsCfg.Clone()
+ if host, _, err := net.SplitHostPort(doh.url.Host); err == nil {
+ tlsCfg.ServerName = host
+ } else {
+ // It's ok if net.SplitHostPort returns an error - it could be a hostname/IP address without a port.
+ tlsCfg.ServerName = doh.url.Host
+ }
+ return transport.DialEarly(ctx, &udpAddr, tlsCfg, cfg)
+}
+
+// probeH3 runs a test to check whether QUIC is faster than TLS for this
+// upstream. If the test is successful it will return the address that we
+// should use to establish the QUIC connections.
+func (doh *dnsOverHTTPS) probeH3(
+ ctx context.Context,
+ tlsConfig *tls.Config,
+) (addr string, err error) {
+ // We're using bootstrapped address instead of what's passed to the function
+ // it does not create an actual connection, but it helps us determine
+ // what IP is actually reachable (when there are v4/v6 addresses).
+ rawConn, err := doh.dialer.DialContext(ctx, "udp", doh.url.Host)
+ if err != nil {
+ return "", fmt.Errorf("failed to dial: %w", err)
+ }
+ addr = rawConn.RemoteAddr().String()
+ // It's never actually used.
+ _ = rawConn.Close()
+
+ // Avoid spending time on probing if this upstream only supports HTTP/3.
+ if doh.supportsH3() && !doh.supportsHTTP() {
+ return addr, nil
+ }
+
+ // Use a new *tls.Config with empty session cache for probe connections.
+ // Surprisingly, this is really important since otherwise it invalidates
+ // the existing cache.
+ // TODO(ameshkov): figure out why the sessions cache invalidates here.
+ probeTLSCfg := tlsConfig.Clone()
+ probeTLSCfg.ClientSessionCache = nil
+
+ // Do not expose probe connections to the callbacks that are passed to
+ // the bootstrap options to avoid side-effects.
+ // TODO(ameshkov): consider exposing, somehow mark that this is a probe.
+ probeTLSCfg.VerifyPeerCertificate = nil
+ probeTLSCfg.VerifyConnection = nil
+
+ // Run probeQUIC and probeTLS in parallel and see which one is faster.
+ chQuic := make(chan error, 1)
+ chTLS := make(chan error, 1)
+ go doh.probeQUIC(ctx, addr, probeTLSCfg, chQuic)
+ go doh.probeTLS(ctx, probeTLSCfg, chTLS)
+
+ select {
+ case quicErr := <-chQuic:
+ if quicErr != nil {
+ // QUIC failed, return error since HTTP3 was not preferred.
+ return "", quicErr
+ }
+
+ // Return immediately, QUIC was faster.
+ return addr, quicErr
+ case tlsErr := <-chTLS:
+ if tlsErr != nil {
+ // Return immediately, TLS failed.
+ log.Debugln("probing TLS: %v", tlsErr)
+ return addr, nil
+ }
+
+ return "", errors.New("TLS was faster than QUIC, prefer it")
+ }
+}
+
+// probeQUIC attempts to establish a QUIC connection to the specified address.
+// We run probeQUIC and probeTLS in parallel and see which one is faster.
+func (doh *dnsOverHTTPS) probeQUIC(ctx context.Context, addr string, tlsConfig *tls.Config, ch chan error) {
+ startTime := time.Now()
+ conn, err := doh.dialQuic(ctx, addr, tlsConfig, doh.getQUICConfig())
+ if err != nil {
+ ch <- fmt.Errorf("opening QUIC connection to %s: %w", doh.Address(), err)
+ return
+ }
+
+ // Ignore the error since there's no way we can use it for anything useful.
+ _ = conn.CloseWithError(QUICCodeNoError, "")
+
+ ch <- nil
+
+ elapsed := time.Now().Sub(startTime)
+ log.Debugln("elapsed on establishing a QUIC connection: %s", elapsed)
+}
+
+// probeTLS attempts to establish a TLS connection to the specified address. We
+// run probeQUIC and probeTLS in parallel and see which one is faster.
+func (doh *dnsOverHTTPS) probeTLS(ctx context.Context, tlsConfig *tls.Config, ch chan error) {
+ startTime := time.Now()
+
+ conn, err := doh.tlsDial(ctx, "tcp", tlsConfig)
+ if err != nil {
+ ch <- fmt.Errorf("opening TLS connection: %w", err)
+ return
+ }
+
+ // Ignore the error since there's no way we can use it for anything useful.
+ _ = conn.Close()
+
+ ch <- nil
+
+ elapsed := time.Now().Sub(startTime)
+ log.Debugln("elapsed on establishing a TLS connection: %s", elapsed)
+}
+
+// supportsH3 returns true if HTTP/3 is supported by this upstream.
+func (doh *dnsOverHTTPS) supportsH3() (ok bool) {
+ for _, v := range doh.supportedHTTPVersions() {
+ if v == C.HTTPVersion3 {
+ return true
+ }
+ }
+
+ return false
+}
+
+// supportsHTTP returns true if HTTP/1.1 or HTTP2 is supported by this upstream.
+func (doh *dnsOverHTTPS) supportsHTTP() (ok bool) {
+ for _, v := range doh.supportedHTTPVersions() {
+ if v == C.HTTPVersion11 || v == C.HTTPVersion2 {
+ return true
+ }
+ }
+
+ return false
+}
+
+// supportedHTTPVersions returns the list of supported HTTP versions.
+func (doh *dnsOverHTTPS) supportedHTTPVersions() (v []C.HTTPVersion) {
+ v = doh.httpVersions
+ if v == nil {
+ v = DefaultHTTPVersions
+ }
+
+ return v
+}
+
+// isHTTP3 checks if the *http.Client is an HTTP/3 client.
+func isHTTP3(client *http.Client) (ok bool) {
+ _, ok = client.Transport.(*http3Transport)
+
+ return ok
+}
+
+// tlsDial is basically the same as tls.DialWithDialer, but we will call our own
+// dialContext function to get connection.
+func (doh *dnsOverHTTPS) tlsDial(ctx context.Context, network string, config *tls.Config) (*tls.Conn, error) {
+ // We're using bootstrapped address instead of what's passed
+ // to the function.
+ rawConn, err := doh.dialer.DialContext(ctx, network, doh.url.Host)
+ if err != nil {
+ return nil, err
+ }
+
+ // We want the timeout to cover the whole process: TCP connection and
+ // TLS handshake dialTimeout will be used as connection deadLine.
+ conn := tls.Client(rawConn, config)
+
+ err = conn.SetDeadline(time.Now().Add(dialTimeout))
+ if err != nil {
+ // Must not happen in normal circumstances.
+ log.Errorln("cannot set deadline: %v", err)
+ return nil, err
+ }
+
+ err = conn.Handshake()
+ if err != nil {
+ defer conn.Close()
+ return nil, err
+ }
+
+ return conn, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/doq.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/doq.go
new file mode 100644
index 0000000..29fdd00
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/doq.go
@@ -0,0 +1,470 @@
+package dns
+
+import (
+ "context"
+ "crypto/tls"
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "net"
+ "runtime"
+ "strconv"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/component/ca"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/quic-go"
+
+ D "github.com/miekg/dns"
+)
+
+const NextProtoDQ = "doq"
+const (
+ // QUICCodeNoError is used when the connection or stream needs to be closed,
+ // but there is no error to signal.
+ QUICCodeNoError = quic.ApplicationErrorCode(0)
+ // QUICCodeInternalError signals that the DoQ implementation encountered
+ // an internal error and is incapable of pursuing the transaction or the
+ // connection.
+ QUICCodeInternalError = quic.ApplicationErrorCode(1)
+ // QUICKeepAlivePeriod is the value that we pass to *quic.Config and that
+ // controls the period with with keep-alive frames are being sent to the
+ // connection. We set it to 20s as it would be in the quic-go@v0.27.1 with
+ // KeepAlive field set to true This value is specified in
+ // https://pkg.go.dev/github.com/metacubex/quic-go/internal/protocol#MaxKeepAliveInterval.
+ //
+ // TODO(ameshkov): Consider making it configurable.
+ QUICKeepAlivePeriod = time.Second * 20
+ DefaultTimeout = time.Second * 5
+)
+
+// dnsOverQUIC is a struct that implements the Upstream interface for the
+// DNS-over-QUIC protocol (spec: https://www.rfc-editor.org/rfc/rfc9250.html).
+type dnsOverQUIC struct {
+ // quicConfig is the QUIC configuration that is used for establishing
+ // connections to the upstream. This configuration includes the TokenStore
+ // that needs to be stored for the lifetime of dnsOverQUIC since we can
+ // re-create the connection.
+ quicConfig *quic.Config
+ quicConfigGuard sync.Mutex
+
+ // conn is the current active QUIC connection. It can be closed and
+ // re-opened when needed.
+ conn quic.Connection
+ connMu sync.RWMutex
+
+ // bytesPool is a *sync.Pool we use to store byte buffers in. These byte
+ // buffers are used to read responses from the upstream.
+ bytesPool *sync.Pool
+ bytesPoolGuard sync.Mutex
+
+ addr string
+ dialer *dnsDialer
+}
+
+// type check
+var _ dnsClient = (*dnsOverQUIC)(nil)
+
+// newDoQ returns the DNS-over-QUIC Upstream.
+func newDoQ(resolver *Resolver, addr string, proxyAdapter C.ProxyAdapter, proxyName string) (dnsClient, error) {
+ doq := &dnsOverQUIC{
+ addr: addr,
+ dialer: newDNSDialer(resolver, proxyAdapter, proxyName),
+ quicConfig: &quic.Config{
+ KeepAlivePeriod: QUICKeepAlivePeriod,
+ TokenStore: newQUICTokenStore(),
+ },
+ }
+
+ runtime.SetFinalizer(doq, (*dnsOverQUIC).Close)
+ return doq, nil
+}
+
+// Address implements the Upstream interface for *dnsOverQUIC.
+func (doq *dnsOverQUIC) Address() string { return doq.addr }
+
+func (doq *dnsOverQUIC) ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err error) {
+ // When sending queries over a QUIC connection, the DNS Message ID MUST be
+ // set to zero.
+ m = m.Copy()
+ id := m.Id
+ m.Id = 0
+ defer func() {
+ // Restore the original ID to not break compatibility with proxies.
+ m.Id = id
+ if msg != nil {
+ msg.Id = id
+ }
+ }()
+
+ // Check if there was already an active conn before sending the request.
+ // We'll only attempt to re-connect if there was one.
+ hasConnection := doq.hasConnection()
+
+ // Make the first attempt to send the DNS query.
+ msg, err = doq.exchangeQUIC(ctx, m)
+
+ // Make up to 2 attempts to re-open the QUIC connection and send the request
+ // again. There are several cases where this workaround is necessary to
+ // make DoQ usable. We need to make 2 attempts in the case when the
+ // connection was closed (due to inactivity for example) AND the server
+ // refuses to open a 0-RTT connection.
+ for i := 0; hasConnection && doq.shouldRetry(err) && i < 2; i++ {
+ log.Debugln("re-creating the QUIC connection and retrying due to %v", err)
+
+ // Close the active connection to make sure we'll try to re-connect.
+ doq.closeConnWithError(err)
+
+ // Retry sending the request.
+ msg, err = doq.exchangeQUIC(ctx, m)
+ }
+
+ if err != nil {
+ // If we're unable to exchange messages, make sure the connection is
+ // closed and signal about an internal error.
+ doq.closeConnWithError(err)
+ }
+
+ return msg, err
+}
+
+// Close implements the Upstream interface for *dnsOverQUIC.
+func (doq *dnsOverQUIC) Close() (err error) {
+ doq.connMu.Lock()
+ defer doq.connMu.Unlock()
+
+ runtime.SetFinalizer(doq, nil)
+
+ if doq.conn != nil {
+ err = doq.conn.CloseWithError(QUICCodeNoError, "")
+ }
+
+ return err
+}
+
+func (doq *dnsOverQUIC) ResetConnection() {
+ doq.closeConnWithError(nil)
+}
+
+// exchangeQUIC attempts to open a QUIC connection, send the DNS message
+// through it and return the response it got from the server.
+func (doq *dnsOverQUIC) exchangeQUIC(ctx context.Context, msg *D.Msg) (resp *D.Msg, err error) {
+ var conn quic.Connection
+ conn, err = doq.getConnection(ctx, true)
+ if err != nil {
+ return nil, err
+ }
+
+ var buf []byte
+ buf, err = msg.Pack()
+ if err != nil {
+ return nil, fmt.Errorf("failed to pack DNS message for DoQ: %w", err)
+ }
+
+ var stream quic.Stream
+ stream, err = doq.openStream(ctx, conn)
+ if err != nil {
+ return nil, err
+ }
+
+ _, err = stream.Write(AddPrefix(buf))
+ if err != nil {
+ return nil, fmt.Errorf("failed to write to a QUIC stream: %w", err)
+ }
+
+ // The client MUST send the DNS query over the selected stream, and MUST
+ // indicate through the STREAM FIN mechanism that no further data will
+ // be sent on that stream. Note, that stream.Close() closes the
+ // write-direction of the stream, but does not prevent reading from it.
+ _ = stream.Close()
+
+ return doq.readMsg(stream)
+}
+
+// AddPrefix adds a 2-byte prefix with the DNS message length.
+func AddPrefix(b []byte) (m []byte) {
+ m = make([]byte, 2+len(b))
+ binary.BigEndian.PutUint16(m, uint16(len(b)))
+ copy(m[2:], b)
+
+ return m
+}
+
+// shouldRetry checks what error we received and decides whether it is required
+// to re-open the connection and retry sending the request.
+func (doq *dnsOverQUIC) shouldRetry(err error) (ok bool) {
+ return isQUICRetryError(err)
+}
+
+// getBytesPool returns (creates if needed) a pool we store byte buffers in.
+func (doq *dnsOverQUIC) getBytesPool() (pool *sync.Pool) {
+ doq.bytesPoolGuard.Lock()
+ defer doq.bytesPoolGuard.Unlock()
+
+ if doq.bytesPool == nil {
+ doq.bytesPool = &sync.Pool{
+ New: func() interface{} {
+ b := make([]byte, MaxMsgSize)
+
+ return &b
+ },
+ }
+ }
+
+ return doq.bytesPool
+}
+
+// getConnection opens or returns an existing quic.Connection. useCached
+// argument controls whether we should try to use the existing cached
+// connection. If it is false, we will forcibly create a new connection and
+// close the existing one if needed.
+func (doq *dnsOverQUIC) getConnection(ctx context.Context, useCached bool) (quic.Connection, error) {
+ var conn quic.Connection
+ doq.connMu.RLock()
+ conn = doq.conn
+ if conn != nil && useCached {
+ doq.connMu.RUnlock()
+
+ return conn, nil
+ }
+ if conn != nil {
+ // we're recreating the connection, let's create a new one.
+ _ = conn.CloseWithError(QUICCodeNoError, "")
+ }
+ doq.connMu.RUnlock()
+
+ doq.connMu.Lock()
+ defer doq.connMu.Unlock()
+
+ var err error
+ conn, err = doq.openConnection(ctx)
+ if err != nil {
+ return nil, err
+ }
+ doq.conn = conn
+
+ return conn, nil
+}
+
+// hasConnection returns true if there's an active QUIC connection.
+func (doq *dnsOverQUIC) hasConnection() (ok bool) {
+ doq.connMu.Lock()
+ defer doq.connMu.Unlock()
+
+ return doq.conn != nil
+}
+
+// getQUICConfig returns the QUIC config in a thread-safe manner. Note, that
+// this method returns a pointer, it is forbidden to change its properties.
+func (doq *dnsOverQUIC) getQUICConfig() (c *quic.Config) {
+ doq.quicConfigGuard.Lock()
+ defer doq.quicConfigGuard.Unlock()
+
+ return doq.quicConfig
+}
+
+// resetQUICConfig re-creates the tokens store as we may need to use a new one
+// if we failed to connect.
+func (doq *dnsOverQUIC) resetQUICConfig() {
+ doq.quicConfigGuard.Lock()
+ defer doq.quicConfigGuard.Unlock()
+
+ doq.quicConfig = doq.quicConfig.Clone()
+ doq.quicConfig.TokenStore = newQUICTokenStore()
+}
+
+// openStream opens a new QUIC stream for the specified connection.
+func (doq *dnsOverQUIC) openStream(ctx context.Context, conn quic.Connection) (quic.Stream, error) {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+
+ stream, err := conn.OpenStreamSync(ctx)
+ if err == nil {
+ return stream, nil
+ }
+
+ // We can get here if the old QUIC connection is not valid anymore. We
+ // should try to re-create the connection again in this case.
+ newConn, err := doq.getConnection(ctx, false)
+ if err != nil {
+ return nil, err
+ }
+ // Open a new stream.
+ return newConn.OpenStreamSync(ctx)
+}
+
+// openConnection opens a new QUIC connection.
+func (doq *dnsOverQUIC) openConnection(ctx context.Context) (conn quic.Connection, err error) {
+ // we're using bootstrapped address instead of what's passed to the function
+ // it does not create an actual connection, but it helps us determine
+ // what IP is actually reachable (when there're v4/v6 addresses).
+ rawConn, err := doq.dialer.DialContext(ctx, "udp", doq.addr)
+ if err != nil {
+ return nil, fmt.Errorf("failed to open a QUIC connection: %w", err)
+ }
+ addr := rawConn.RemoteAddr().String()
+ // It's never actually used
+ _ = rawConn.Close()
+
+ ip, port, err := net.SplitHostPort(addr)
+ if err != nil {
+ return nil, err
+ }
+
+ p, err := strconv.Atoi(port)
+ udpAddr := net.UDPAddr{IP: net.ParseIP(ip), Port: p}
+ udp, err := doq.dialer.ListenPacket(ctx, "udp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ host, _, err := net.SplitHostPort(doq.addr)
+ if err != nil {
+ return nil, err
+ }
+
+ tlsConfig := ca.GetGlobalTLSConfig(
+ &tls.Config{
+ ServerName: host,
+ InsecureSkipVerify: false,
+ NextProtos: []string{
+ NextProtoDQ,
+ },
+ SessionTicketsDisabled: false,
+ })
+
+ transport := quic.Transport{Conn: udp}
+ transport.SetCreatedConn(true) // auto close conn
+ transport.SetSingleUse(true) // auto close transport
+ conn, err = transport.Dial(ctx, &udpAddr, tlsConfig, doq.getQUICConfig())
+ if err != nil {
+ return nil, fmt.Errorf("opening quic connection to %s: %w", doq.addr, err)
+ }
+
+ return conn, nil
+}
+
+// closeConnWithError closes the active connection with error to make sure that
+// new queries were processed in another connection. We can do that in the case
+// of a fatal error.
+func (doq *dnsOverQUIC) closeConnWithError(err error) {
+ doq.connMu.Lock()
+ defer doq.connMu.Unlock()
+
+ if doq.conn == nil {
+ // Do nothing, there's no active conn anyways.
+ return
+ }
+
+ code := QUICCodeNoError
+ if err != nil {
+ code = QUICCodeInternalError
+ }
+
+ if errors.Is(err, quic.Err0RTTRejected) {
+ // Reset the TokenStore only if 0-RTT was rejected.
+ doq.resetQUICConfig()
+ }
+
+ err = doq.conn.CloseWithError(code, "")
+ if err != nil {
+ log.Errorln("failed to close the conn: %v", err)
+ }
+ doq.conn = nil
+}
+
+// readMsg reads the incoming DNS message from the QUIC stream.
+func (doq *dnsOverQUIC) readMsg(stream quic.Stream) (m *D.Msg, err error) {
+ pool := doq.getBytesPool()
+ bufPtr := pool.Get().(*[]byte)
+
+ defer pool.Put(bufPtr)
+
+ respBuf := *bufPtr
+ n, err := stream.Read(respBuf)
+ if err != nil && n == 0 {
+ return nil, fmt.Errorf("reading response from %s: %w", doq.Address(), err)
+ }
+
+ // All DNS messages (queries and responses) sent over DoQ connections MUST
+ // be encoded as a 2-octet length field followed by the message content as
+ // specified in [RFC1035].
+ // IMPORTANT: Note, that we ignore this prefix here as this implementation
+ // does not support receiving multiple messages over a single connection.
+ m = new(D.Msg)
+ err = m.Unpack(respBuf[2:])
+ if err != nil {
+ return nil, fmt.Errorf("unpacking response from %s: %w", doq.Address(), err)
+ }
+
+ return m, nil
+}
+
+// newQUICTokenStore creates a new quic.TokenStore that is necessary to have
+// in order to benefit from 0-RTT.
+func newQUICTokenStore() (s quic.TokenStore) {
+ // You can read more on address validation here:
+ // https://datatracker.ietf.org/doc/html/rfc9000#section-8.1
+ // Setting maxOrigins to 1 and tokensPerOrigin to 10 assuming that this is
+ // more than enough for the way we use it (one connection per upstream).
+ return quic.NewLRUTokenStore(1, 10)
+}
+
+// isQUICRetryError checks the error and determines whether it may signal that
+// we should re-create the QUIC connection. This requirement is caused by
+// quic-go issues, see the comments inside this function.
+// TODO(ameshkov): re-test when updating quic-go.
+func isQUICRetryError(err error) (ok bool) {
+ var qAppErr *quic.ApplicationError
+ if errors.As(err, &qAppErr) && qAppErr.ErrorCode == 0 {
+ // This error is often returned when the server has been restarted,
+ // and we try to use the same connection on the client-side. It seems,
+ // that the old connections aren't closed immediately on the server-side
+ // and that's why one can run into this.
+ // In addition to that, quic-go HTTP3 client implementation does not
+ // clean up dead connections (this one is specific to DoH3 upstream):
+ // https://github.com/metacubex/quic-go/issues/765
+ return true
+ }
+
+ var qIdleErr *quic.IdleTimeoutError
+ if errors.As(err, &qIdleErr) {
+ // This error means that the connection was closed due to being idle.
+ // In this case we should forcibly re-create the QUIC connection.
+ // Reproducing is rather simple, stop the server and wait for 30 seconds
+ // then try to send another request via the same upstream.
+ return true
+ }
+
+ var resetErr *quic.StatelessResetError
+ if errors.As(err, &resetErr) {
+ // A stateless reset is sent when a server receives a QUIC packet that
+ // it doesn't know how to decrypt. For instance, it may happen when
+ // the server was recently rebooted. We should reconnect and try again
+ // in this case.
+ return true
+ }
+
+ var qTransportError *quic.TransportError
+ if errors.As(err, &qTransportError) && qTransportError.ErrorCode == quic.NoError {
+ // A transport error with the NO_ERROR error code could be sent by the
+ // server when it considers that it's time to close the connection.
+ // For example, Google DNS eventually closes an active connection with
+ // the NO_ERROR code and "Connection max age expired" message:
+ // https://github.com/AdguardTeam/dnsproxy/issues/283
+ return true
+ }
+
+ if errors.Is(err, quic.Err0RTTRejected) {
+ // This error happens when we try to establish a 0-RTT connection with
+ // a token the server is no more aware of. This can be reproduced by
+ // restarting the QUIC server (it will clear its tokens cache). The
+ // next connection attempt will return this error until the client's
+ // tokens cache is purged.
+ return true
+ }
+
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/edns0_subnet.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/edns0_subnet.go
new file mode 100644
index 0000000..2ed4f14
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/edns0_subnet.go
@@ -0,0 +1,51 @@
+package dns
+
+import (
+ "net/netip"
+
+ "github.com/miekg/dns"
+)
+
+func setEdns0Subnet(message *dns.Msg, clientSubnet netip.Prefix, override bool) bool {
+ var (
+ optRecord *dns.OPT
+ subnetOption *dns.EDNS0_SUBNET
+ )
+findExists:
+ for _, record := range message.Extra {
+ var isOPTRecord bool
+ if optRecord, isOPTRecord = record.(*dns.OPT); isOPTRecord {
+ for _, option := range optRecord.Option {
+ var isEDNS0Subnet bool
+ if subnetOption, isEDNS0Subnet = option.(*dns.EDNS0_SUBNET); isEDNS0Subnet {
+ if !override {
+ return false
+ }
+ break findExists
+ }
+ }
+ }
+ }
+ if optRecord == nil {
+ optRecord = &dns.OPT{
+ Hdr: dns.RR_Header{
+ Name: ".",
+ Rrtype: dns.TypeOPT,
+ },
+ }
+ message.Extra = append(message.Extra, optRecord)
+ }
+ if subnetOption == nil {
+ subnetOption = new(dns.EDNS0_SUBNET)
+ optRecord.Option = append(optRecord.Option, subnetOption)
+ }
+ subnetOption.Code = dns.EDNS0SUBNET
+ if clientSubnet.Addr().Is4() {
+ subnetOption.Family = 1
+ } else {
+ subnetOption.Family = 2
+ }
+ subnetOption.SourceNetmask = uint8(clientSubnet.Bits())
+ subnetOption.Address = clientSubnet.Addr().AsSlice()
+ return true
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/enhancer.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/enhancer.go
new file mode 100644
index 0000000..a8c0a5a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/enhancer.go
@@ -0,0 +1,120 @@
+package dns
+
+import (
+ "net/netip"
+
+ "github.com/metacubex/mihomo/common/lru"
+ "github.com/metacubex/mihomo/component/fakeip"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type ResolverEnhancer struct {
+ mode C.DNSMode
+ fakePool *fakeip.Pool
+ mapping *lru.LruCache[netip.Addr, string]
+}
+
+func (h *ResolverEnhancer) FakeIPEnabled() bool {
+ return h.mode == C.DNSFakeIP
+}
+
+func (h *ResolverEnhancer) MappingEnabled() bool {
+ return h.mode == C.DNSFakeIP || h.mode == C.DNSMapping
+}
+
+func (h *ResolverEnhancer) IsExistFakeIP(ip netip.Addr) bool {
+ if !h.FakeIPEnabled() {
+ return false
+ }
+
+ if pool := h.fakePool; pool != nil {
+ return pool.Exist(ip)
+ }
+
+ return false
+}
+
+func (h *ResolverEnhancer) IsFakeIP(ip netip.Addr) bool {
+ if !h.FakeIPEnabled() {
+ return false
+ }
+
+ if pool := h.fakePool; pool != nil {
+ return pool.IPNet().Contains(ip) && ip != pool.Gateway() && ip != pool.Broadcast()
+ }
+
+ return false
+}
+
+func (h *ResolverEnhancer) IsFakeBroadcastIP(ip netip.Addr) bool {
+ if !h.FakeIPEnabled() {
+ return false
+ }
+
+ if pool := h.fakePool; pool != nil {
+ return pool.Broadcast() == ip
+ }
+
+ return false
+}
+
+func (h *ResolverEnhancer) FindHostByIP(ip netip.Addr) (string, bool) {
+ if pool := h.fakePool; pool != nil {
+ if host, existed := pool.LookBack(ip); existed {
+ return host, true
+ }
+ }
+
+ if mapping := h.mapping; mapping != nil {
+ if host, existed := h.mapping.Get(ip); existed {
+ return host, true
+ }
+ }
+
+ return "", false
+}
+
+func (h *ResolverEnhancer) InsertHostByIP(ip netip.Addr, host string) {
+ if mapping := h.mapping; mapping != nil {
+ h.mapping.Set(ip, host)
+ }
+}
+
+func (h *ResolverEnhancer) FlushFakeIP() error {
+ if h.fakePool != nil {
+ return h.fakePool.FlushFakeIP()
+ }
+ return nil
+}
+
+func (h *ResolverEnhancer) PatchFrom(o *ResolverEnhancer) {
+ if h.mapping != nil && o.mapping != nil {
+ o.mapping.CloneTo(h.mapping)
+ }
+
+ if h.fakePool != nil && o.fakePool != nil {
+ h.fakePool.CloneFrom(o.fakePool)
+ }
+}
+
+func (h *ResolverEnhancer) StoreFakePoolState() {
+ if h.fakePool != nil {
+ h.fakePool.StoreState()
+ }
+}
+
+func NewEnhancer(cfg Config) *ResolverEnhancer {
+ var fakePool *fakeip.Pool
+ var mapping *lru.LruCache[netip.Addr, string]
+
+ if cfg.EnhancedMode != C.DNSNormal {
+ fakePool = cfg.Pool
+ mapping = lru.New(lru.WithSize[netip.Addr, string](4096))
+ }
+
+ return &ResolverEnhancer{
+ mode: cfg.EnhancedMode,
+ fakePool: fakePool,
+ mapping: mapping,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/local.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/local.go
new file mode 100644
index 0000000..37b5d41
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/local.go
@@ -0,0 +1,20 @@
+package dns
+
+import (
+ "context"
+
+ D "github.com/miekg/dns"
+)
+
+type LocalServer struct {
+ handler handler
+}
+
+// ServeMsg implement resolver.LocalServer ResolveMsg
+func (s *LocalServer) ServeMsg(ctx context.Context, msg *D.Msg) (*D.Msg, error) {
+ return handlerWithContext(ctx, s.handler, msg)
+}
+
+func NewLocalServer(resolver *Resolver, mapper *ResolverEnhancer) *LocalServer {
+ return &LocalServer{handler: NewHandler(resolver, mapper)}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/middleware.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/middleware.go
new file mode 100644
index 0000000..b55adc6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/middleware.go
@@ -0,0 +1,231 @@
+package dns
+
+import (
+ "net/netip"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/common/lru"
+ "github.com/metacubex/mihomo/common/nnip"
+ "github.com/metacubex/mihomo/component/fakeip"
+ R "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/context"
+ "github.com/metacubex/mihomo/log"
+
+ D "github.com/miekg/dns"
+)
+
+type (
+ handler func(ctx *context.DNSContext, r *D.Msg) (*D.Msg, error)
+ middleware func(next handler) handler
+)
+
+func withHosts(hosts R.Hosts, mapping *lru.LruCache[netip.Addr, string]) middleware {
+ return func(next handler) handler {
+ return func(ctx *context.DNSContext, r *D.Msg) (*D.Msg, error) {
+ q := r.Question[0]
+
+ if !isIPRequest(q) {
+ return next(ctx, r)
+ }
+
+ host := strings.TrimRight(q.Name, ".")
+ handleCName := func(resp *D.Msg, domain string) {
+ rr := &D.CNAME{}
+ rr.Hdr = D.RR_Header{Name: q.Name, Rrtype: D.TypeCNAME, Class: D.ClassINET, Ttl: 10}
+ rr.Target = domain + "."
+ resp.Answer = append([]D.RR{rr}, resp.Answer...)
+ }
+ record, ok := hosts.Search(host, q.Qtype != D.TypeA && q.Qtype != D.TypeAAAA)
+ if !ok {
+ if record != nil && record.IsDomain {
+ // replace request domain
+ newR := r.Copy()
+ newR.Question[0].Name = record.Domain + "."
+ resp, err := next(ctx, newR)
+ if err == nil {
+ resp.Id = r.Id
+ resp.Question = r.Question
+ handleCName(resp, record.Domain)
+ }
+ return resp, err
+ }
+ return next(ctx, r)
+ }
+
+ msg := r.Copy()
+ handleIPs := func() {
+ for _, ipAddr := range record.IPs {
+ if ipAddr.Is4() && q.Qtype == D.TypeA {
+ rr := &D.A{}
+ rr.Hdr = D.RR_Header{Name: q.Name, Rrtype: D.TypeA, Class: D.ClassINET, Ttl: 10}
+ rr.A = ipAddr.AsSlice()
+ msg.Answer = append(msg.Answer, rr)
+ if mapping != nil {
+ mapping.SetWithExpire(ipAddr, host, time.Now().Add(time.Second*10))
+ }
+ } else if q.Qtype == D.TypeAAAA {
+ rr := &D.AAAA{}
+ rr.Hdr = D.RR_Header{Name: q.Name, Rrtype: D.TypeAAAA, Class: D.ClassINET, Ttl: 10}
+ ip := ipAddr.As16()
+ rr.AAAA = ip[:]
+ msg.Answer = append(msg.Answer, rr)
+ if mapping != nil {
+ mapping.SetWithExpire(ipAddr, host, time.Now().Add(time.Second*10))
+ }
+ }
+ }
+ }
+
+ switch q.Qtype {
+ case D.TypeA:
+ handleIPs()
+ case D.TypeAAAA:
+ handleIPs()
+ case D.TypeCNAME:
+ handleCName(r, record.Domain)
+ default:
+ return next(ctx, r)
+ }
+
+ ctx.SetType(context.DNSTypeHost)
+ msg.SetRcode(r, D.RcodeSuccess)
+ msg.Authoritative = true
+ msg.RecursionAvailable = true
+ return msg, nil
+ }
+ }
+}
+
+func withMapping(mapping *lru.LruCache[netip.Addr, string]) middleware {
+ return func(next handler) handler {
+ return func(ctx *context.DNSContext, r *D.Msg) (*D.Msg, error) {
+ q := r.Question[0]
+
+ if !isIPRequest(q) {
+ return next(ctx, r)
+ }
+
+ msg, err := next(ctx, r)
+ if err != nil {
+ return nil, err
+ }
+
+ host := strings.TrimRight(q.Name, ".")
+
+ for _, ans := range msg.Answer {
+ var ip netip.Addr
+ var ttl uint32
+
+ switch a := ans.(type) {
+ case *D.A:
+ ip = nnip.IpToAddr(a.A)
+ ttl = a.Hdr.Ttl
+ case *D.AAAA:
+ ip = nnip.IpToAddr(a.AAAA)
+ ttl = a.Hdr.Ttl
+ default:
+ continue
+ }
+
+ if ttl < 1 {
+ ttl = 1
+ }
+
+ mapping.SetWithExpire(ip, host, time.Now().Add(time.Second*time.Duration(ttl)))
+ }
+
+ return msg, nil
+ }
+ }
+}
+
+func withFakeIP(fakePool *fakeip.Pool) middleware {
+ return func(next handler) handler {
+ return func(ctx *context.DNSContext, r *D.Msg) (*D.Msg, error) {
+ q := r.Question[0]
+
+ host := strings.TrimRight(q.Name, ".")
+ if fakePool.ShouldSkipped(host) {
+ return next(ctx, r)
+ }
+
+ switch q.Qtype {
+ case D.TypeAAAA, D.TypeSVCB, D.TypeHTTPS:
+ return handleMsgWithEmptyAnswer(r), nil
+ }
+
+ if q.Qtype != D.TypeA {
+ return next(ctx, r)
+ }
+
+ rr := &D.A{}
+ rr.Hdr = D.RR_Header{Name: q.Name, Rrtype: D.TypeA, Class: D.ClassINET, Ttl: dnsDefaultTTL}
+ ip := fakePool.Lookup(host)
+ rr.A = ip.AsSlice()
+ msg := r.Copy()
+ msg.Answer = []D.RR{rr}
+
+ ctx.SetType(context.DNSTypeFakeIP)
+ setMsgTTL(msg, 1)
+ msg.SetRcode(r, D.RcodeSuccess)
+ msg.Authoritative = true
+ msg.RecursionAvailable = true
+
+ return msg, nil
+ }
+ }
+}
+
+func withResolver(resolver *Resolver) handler {
+ return func(ctx *context.DNSContext, r *D.Msg) (*D.Msg, error) {
+ ctx.SetType(context.DNSTypeRaw)
+
+ q := r.Question[0]
+
+ // return a empty AAAA msg when ipv6 disabled
+ if !resolver.ipv6 && q.Qtype == D.TypeAAAA {
+ return handleMsgWithEmptyAnswer(r), nil
+ }
+
+ msg, err := resolver.ExchangeContext(ctx, r)
+ if err != nil {
+ log.Debugln("[DNS Server] Exchange %s failed: %v", q.String(), err)
+ return msg, err
+ }
+ msg.SetRcode(r, msg.Rcode)
+ msg.Authoritative = true
+
+ return msg, nil
+ }
+}
+
+func compose(middlewares []middleware, endpoint handler) handler {
+ length := len(middlewares)
+ h := endpoint
+ for i := length - 1; i >= 0; i-- {
+ middleware := middlewares[i]
+ h = middleware(h)
+ }
+
+ return h
+}
+
+func NewHandler(resolver *Resolver, mapper *ResolverEnhancer) handler {
+ middlewares := []middleware{}
+
+ if resolver.hosts != nil {
+ middlewares = append(middlewares, withHosts(R.NewHosts(resolver.hosts), mapper.mapping))
+ }
+
+ if mapper.mode == C.DNSFakeIP {
+ middlewares = append(middlewares, withFakeIP(mapper.fakePool))
+ }
+
+ if mapper.mode != C.DNSNormal {
+ middlewares = append(middlewares, withMapping(mapper.mapping))
+ }
+
+ return compose(middlewares, withResolver(resolver))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/patch_android.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/patch_android.go
new file mode 100644
index 0000000..8e744fc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/patch_android.go
@@ -0,0 +1,42 @@
+//go:build android && cmfa
+
+package dns
+
+import (
+ "github.com/metacubex/mihomo/component/resolver"
+)
+
+var systemResolver []dnsClient
+
+func FlushCacheWithDefaultResolver() {
+ if r := resolver.DefaultResolver; r != nil {
+ r.ClearCache()
+ }
+ if r := resolver.SystemResolver; r != nil {
+ r.ClearCache()
+ }
+ resolver.ResetConnection()
+}
+
+func UpdateSystemDNS(addr []string) {
+ if len(addr) == 0 {
+ systemResolver = nil
+ }
+
+ ns := make([]NameServer, 0, len(addr))
+ for _, d := range addr {
+ ns = append(ns, NameServer{Addr: d})
+ }
+
+ systemResolver = transform(ns, nil)
+}
+
+func (c *systemClient) getDnsClients() ([]dnsClient, error) {
+ return systemResolver, nil
+}
+
+func (c *systemClient) ResetConnection() {
+ for _, r := range systemResolver {
+ r.ResetConnection()
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/policy.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/policy.go
new file mode 100644
index 0000000..50dc171
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/policy.go
@@ -0,0 +1,34 @@
+package dns
+
+import (
+ "github.com/metacubex/mihomo/component/trie"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type dnsPolicy interface {
+ Match(domain string) []dnsClient
+}
+
+type domainTriePolicy struct {
+ *trie.DomainTrie[[]dnsClient]
+}
+
+func (p domainTriePolicy) Match(domain string) []dnsClient {
+ record := p.DomainTrie.Search(domain)
+ if record != nil {
+ return record.Data()
+ }
+ return nil
+}
+
+type domainMatcherPolicy struct {
+ matcher C.DomainMatcher
+ dnsClients []dnsClient
+}
+
+func (p domainMatcherPolicy) Match(domain string) []dnsClient {
+ if p.matcher.MatchDomain(domain) {
+ return p.dnsClients
+ }
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/rcode.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/rcode.go
new file mode 100644
index 0000000..901d101
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/rcode.go
@@ -0,0 +1,52 @@
+package dns
+
+import (
+ "context"
+ "fmt"
+
+ D "github.com/miekg/dns"
+)
+
+func newRCodeClient(addr string) rcodeClient {
+ var rcode int
+ switch addr {
+ case "success":
+ rcode = D.RcodeSuccess
+ case "format_error":
+ rcode = D.RcodeFormatError
+ case "server_failure":
+ rcode = D.RcodeServerFailure
+ case "name_error":
+ rcode = D.RcodeNameError
+ case "not_implemented":
+ rcode = D.RcodeNotImplemented
+ case "refused":
+ rcode = D.RcodeRefused
+ default:
+ panic(fmt.Errorf("unsupported RCode type: %s", addr))
+ }
+
+ return rcodeClient{
+ rcode: rcode,
+ addr: "rcode://" + addr,
+ }
+}
+
+type rcodeClient struct {
+ rcode int
+ addr string
+}
+
+var _ dnsClient = rcodeClient{}
+
+func (r rcodeClient) ExchangeContext(ctx context.Context, m *D.Msg) (*D.Msg, error) {
+ m.Response = true
+ m.Rcode = r.rcode
+ return m, nil
+}
+
+func (r rcodeClient) Address() string {
+ return r.addr
+}
+
+func (r rcodeClient) ResetConnection() {}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/resolver.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/resolver.go
new file mode 100644
index 0000000..9f7e28f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/resolver.go
@@ -0,0 +1,574 @@
+package dns
+
+import (
+ "context"
+ "errors"
+ "net/netip"
+ "time"
+
+ "github.com/metacubex/mihomo/common/arc"
+ "github.com/metacubex/mihomo/common/lru"
+ "github.com/metacubex/mihomo/common/singleflight"
+ "github.com/metacubex/mihomo/component/fakeip"
+ "github.com/metacubex/mihomo/component/resolver"
+ "github.com/metacubex/mihomo/component/trie"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ D "github.com/miekg/dns"
+ "github.com/samber/lo"
+ "golang.org/x/exp/maps"
+)
+
+type dnsClient interface {
+ ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err error)
+ Address() string
+ ResetConnection()
+}
+
+type dnsCache interface {
+ GetWithExpire(key string) (*D.Msg, time.Time, bool)
+ SetWithExpire(key string, value *D.Msg, expire time.Time)
+ Clear()
+}
+
+type result struct {
+ Msg *D.Msg
+ Error error
+}
+
+type Resolver struct {
+ ipv6 bool
+ ipv6Timeout time.Duration
+ hosts *trie.DomainTrie[resolver.HostValue]
+ main []dnsClient
+ fallback []dnsClient
+ fallbackDomainFilters []C.DomainMatcher
+ fallbackIPFilters []C.IpMatcher
+ group singleflight.Group[*D.Msg]
+ cache dnsCache
+ policy []dnsPolicy
+ defaultResolver *Resolver
+}
+
+func (r *Resolver) LookupIPPrimaryIPv4(ctx context.Context, host string) (ips []netip.Addr, err error) {
+ ch := make(chan []netip.Addr, 1)
+ go func() {
+ defer close(ch)
+ ip, err := r.lookupIP(ctx, host, D.TypeAAAA)
+ if err != nil {
+ return
+ }
+ ch <- ip
+ }()
+
+ ips, err = r.lookupIP(ctx, host, D.TypeA)
+ if err == nil {
+ return
+ }
+
+ ip, open := <-ch
+ if !open {
+ return nil, resolver.ErrIPNotFound
+ }
+
+ return ip, nil
+}
+
+func (r *Resolver) LookupIP(ctx context.Context, host string) (ips []netip.Addr, err error) {
+ ch := make(chan []netip.Addr, 1)
+ go func() {
+ defer close(ch)
+ ip, err := r.lookupIP(ctx, host, D.TypeAAAA)
+ if err != nil {
+ return
+ }
+
+ ch <- ip
+ }()
+
+ ips, err = r.lookupIP(ctx, host, D.TypeA)
+ var waitIPv6 *time.Timer
+ if r != nil && r.ipv6Timeout > 0 {
+ waitIPv6 = time.NewTimer(r.ipv6Timeout)
+ } else {
+ waitIPv6 = time.NewTimer(100 * time.Millisecond)
+ }
+ defer waitIPv6.Stop()
+ select {
+ case ipv6s, open := <-ch:
+ if !open && err != nil {
+ return nil, resolver.ErrIPNotFound
+ }
+ ips = append(ips, ipv6s...)
+ case <-waitIPv6.C:
+ // wait ipv6 result
+ }
+
+ return ips, nil
+}
+
+// LookupIPv4 request with TypeA
+func (r *Resolver) LookupIPv4(ctx context.Context, host string) ([]netip.Addr, error) {
+ return r.lookupIP(ctx, host, D.TypeA)
+}
+
+// LookupIPv6 request with TypeAAAA
+func (r *Resolver) LookupIPv6(ctx context.Context, host string) ([]netip.Addr, error) {
+ return r.lookupIP(ctx, host, D.TypeAAAA)
+}
+
+func (r *Resolver) shouldIPFallback(ip netip.Addr) bool {
+ for _, filter := range r.fallbackIPFilters {
+ if filter.MatchIp(ip) {
+ return true
+ }
+ }
+ return false
+}
+
+// ExchangeContext a batch of dns request with context.Context, and it use cache
+func (r *Resolver) ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err error) {
+ if len(m.Question) == 0 {
+ return nil, errors.New("should have one question at least")
+ }
+ continueFetch := false
+ defer func() {
+ if continueFetch || errors.Is(err, context.DeadlineExceeded) || errors.Is(err, context.Canceled) {
+ go func() {
+ ctx, cancel := context.WithTimeout(context.Background(), resolver.DefaultDNSTimeout)
+ defer cancel()
+ _, _ = r.exchangeWithoutCache(ctx, m) // ignore result, just for putMsgToCache
+ }()
+ }
+ }()
+
+ q := m.Question[0]
+ domain := msgToDomain(m)
+ _, qTypeStr := msgToQtype(m)
+ cacheM, expireTime, hit := r.cache.GetWithExpire(q.String())
+ if hit {
+ ips := msgToIP(cacheM)
+ log.Debugln("[DNS] cache hit %s --> %s %s, expire at %s", domain, ips, qTypeStr, expireTime.Format("2006-01-02 15:04:05"))
+ now := time.Now()
+ msg = cacheM.Copy()
+ if expireTime.Before(now) {
+ setMsgTTL(msg, uint32(1)) // Continue fetch
+ continueFetch = true
+ } else {
+ // updating TTL by subtracting common delta time from each DNS record
+ updateMsgTTL(msg, uint32(time.Until(expireTime).Seconds()))
+ }
+ return
+ }
+ return r.exchangeWithoutCache(ctx, m)
+}
+
+// ExchangeWithoutCache a batch of dns request, and it do NOT GET from cache
+func (r *Resolver) exchangeWithoutCache(ctx context.Context, m *D.Msg) (msg *D.Msg, err error) {
+ q := m.Question[0]
+
+ retryNum := 0
+ retryMax := 3
+ fn := func() (result *D.Msg, err error) {
+ ctx, cancel := context.WithTimeout(context.Background(), resolver.DefaultDNSTimeout) // reset timeout in singleflight
+ defer cancel()
+ cache := false
+
+ defer func() {
+ if err != nil {
+ result = &D.Msg{}
+ result.Opcode = retryNum
+ retryNum++
+ return
+ }
+
+ msg := result
+
+ if cache {
+ // OPT RRs MUST NOT be cached, forwarded, or stored in or loaded from master files.
+ msg.Extra = lo.Filter(msg.Extra, func(rr D.RR, index int) bool {
+ return rr.Header().Rrtype != D.TypeOPT
+ })
+ putMsgToCache(r.cache, q.String(), q, msg)
+ }
+ }()
+
+ isIPReq := isIPRequest(q)
+ if isIPReq {
+ cache = true
+ return r.ipExchange(ctx, m)
+ }
+
+ if matched := r.matchPolicy(m); len(matched) != 0 {
+ result, cache, err = batchExchange(ctx, matched, m)
+ return
+ }
+ result, cache, err = batchExchange(ctx, r.main, m)
+ return
+ }
+
+ ch := r.group.DoChan(q.String(), fn)
+
+ var result singleflight.Result[*D.Msg]
+
+ select {
+ case result = <-ch:
+ break
+ case <-ctx.Done():
+ select {
+ case result = <-ch: // maybe ctxDone and chFinish in same time, get DoChan's result as much as possible
+ break
+ default:
+ go func() { // start a retrying monitor in background
+ result := <-ch
+ ret, err, shared := result.Val, result.Err, result.Shared
+ if err != nil && !shared && ret.Opcode < retryMax { // retry
+ r.group.DoChan(q.String(), fn)
+ }
+ }()
+ return nil, ctx.Err()
+ }
+ }
+
+ ret, err, shared := result.Val, result.Err, result.Shared
+ if err != nil && !shared && ret.Opcode < retryMax { // retry
+ r.group.DoChan(q.String(), fn)
+ }
+
+ if err == nil {
+ msg = ret
+ if shared {
+ msg = msg.Copy()
+ }
+ }
+
+ return
+}
+
+func (r *Resolver) matchPolicy(m *D.Msg) []dnsClient {
+ if r.policy == nil {
+ return nil
+ }
+
+ domain := msgToDomain(m)
+ if domain == "" {
+ return nil
+ }
+
+ for _, policy := range r.policy {
+ if dnsClients := policy.Match(domain); len(dnsClients) > 0 {
+ return dnsClients
+ }
+ }
+ return nil
+}
+
+func (r *Resolver) shouldOnlyQueryFallback(m *D.Msg) bool {
+ if r.fallback == nil || len(r.fallbackDomainFilters) == 0 {
+ return false
+ }
+
+ domain := msgToDomain(m)
+
+ if domain == "" {
+ return false
+ }
+
+ for _, df := range r.fallbackDomainFilters {
+ if df.MatchDomain(domain) {
+ return true
+ }
+ }
+
+ return false
+}
+
+func (r *Resolver) ipExchange(ctx context.Context, m *D.Msg) (msg *D.Msg, err error) {
+ if matched := r.matchPolicy(m); len(matched) != 0 {
+ res := <-r.asyncExchange(ctx, matched, m)
+ return res.Msg, res.Error
+ }
+
+ onlyFallback := r.shouldOnlyQueryFallback(m)
+
+ if onlyFallback {
+ res := <-r.asyncExchange(ctx, r.fallback, m)
+ return res.Msg, res.Error
+ }
+
+ msgCh := r.asyncExchange(ctx, r.main, m)
+
+ if r.fallback == nil || len(r.fallback) == 0 { // directly return if no fallback servers are available
+ res := <-msgCh
+ msg, err = res.Msg, res.Error
+ return
+ }
+
+ res := <-msgCh
+ if res.Error == nil {
+ if ips := msgToIP(res.Msg); len(ips) != 0 {
+ shouldNotFallback := lo.EveryBy(ips, func(ip netip.Addr) bool {
+ return !r.shouldIPFallback(ip)
+ })
+ if shouldNotFallback {
+ msg, err = res.Msg, res.Error // no need to wait for fallback result
+ return
+ }
+ }
+ }
+
+ res = <-r.asyncExchange(ctx, r.fallback, m)
+ msg, err = res.Msg, res.Error
+ return
+}
+
+func (r *Resolver) lookupIP(ctx context.Context, host string, dnsType uint16) (ips []netip.Addr, err error) {
+ ip, err := netip.ParseAddr(host)
+ if err == nil {
+ isIPv4 := ip.Is4() || ip.Is4In6()
+ if dnsType == D.TypeAAAA && !isIPv4 {
+ return []netip.Addr{ip}, nil
+ } else if dnsType == D.TypeA && isIPv4 {
+ return []netip.Addr{ip}, nil
+ } else {
+ return []netip.Addr{}, resolver.ErrIPVersion
+ }
+ }
+
+ query := &D.Msg{}
+ query.SetQuestion(D.Fqdn(host), dnsType)
+
+ msg, err := r.ExchangeContext(ctx, query)
+ if err != nil {
+ return []netip.Addr{}, err
+ }
+
+ ips = msgToIP(msg)
+ ipLength := len(ips)
+ if ipLength == 0 {
+ return []netip.Addr{}, resolver.ErrIPNotFound
+ }
+
+ return
+}
+
+func (r *Resolver) asyncExchange(ctx context.Context, client []dnsClient, msg *D.Msg) <-chan *result {
+ ch := make(chan *result, 1)
+ go func() {
+ res, _, err := batchExchange(ctx, client, msg)
+ ch <- &result{Msg: res, Error: err}
+ }()
+ return ch
+}
+
+// Invalid return this resolver can or can't be used
+func (r *Resolver) Invalid() bool {
+ if r == nil {
+ return false
+ }
+ return len(r.main) > 0
+}
+
+func (r *Resolver) ClearCache() {
+ if r != nil && r.cache != nil {
+ r.cache.Clear()
+ }
+}
+
+func (r *Resolver) ResetConnection() {
+ if r != nil {
+ for _, c := range r.main {
+ c.ResetConnection()
+ }
+ for _, c := range r.fallback {
+ c.ResetConnection()
+ }
+ if dr := r.defaultResolver; dr != nil {
+ dr.ResetConnection()
+ }
+ }
+}
+
+type NameServer struct {
+ Net string
+ Addr string
+ Interface string
+ ProxyAdapter C.ProxyAdapter
+ ProxyName string
+ Params map[string]string
+ PreferH3 bool
+}
+
+func (ns NameServer) Equal(ns2 NameServer) bool {
+ defer func() {
+ // C.ProxyAdapter compare maybe panic, just ignore
+ recover()
+ }()
+ if ns.Net == ns2.Net &&
+ ns.Addr == ns2.Addr &&
+ ns.Interface == ns2.Interface &&
+ ns.ProxyAdapter == ns2.ProxyAdapter &&
+ ns.ProxyName == ns2.ProxyName &&
+ maps.Equal(ns.Params, ns2.Params) &&
+ ns.PreferH3 == ns2.PreferH3 {
+ return true
+ }
+ return false
+}
+
+type Policy struct {
+ Domain string
+ Matcher C.DomainMatcher
+ NameServers []NameServer
+}
+
+type Config struct {
+ Main, Fallback []NameServer
+ Default []NameServer
+ ProxyServer []NameServer
+ DirectServer []NameServer
+ DirectFollowPolicy bool
+ IPv6 bool
+ IPv6Timeout uint
+ EnhancedMode C.DNSMode
+ FallbackIPFilter []C.IpMatcher
+ FallbackDomainFilter []C.DomainMatcher
+ Pool *fakeip.Pool
+ Hosts *trie.DomainTrie[resolver.HostValue]
+ Policy []Policy
+ CacheAlgorithm string
+}
+
+func (config Config) newCache() dnsCache {
+ if config.CacheAlgorithm == "" || config.CacheAlgorithm == "lru" {
+ return lru.New(lru.WithSize[string, *D.Msg](4096), lru.WithStale[string, *D.Msg](true))
+ } else {
+ return arc.New(arc.WithSize[string, *D.Msg](4096))
+ }
+}
+
+type Resolvers struct {
+ *Resolver
+ ProxyResolver *Resolver
+ DirectResolver *Resolver
+}
+
+func (rs Resolvers) ClearCache() {
+ rs.Resolver.ClearCache()
+ rs.ProxyResolver.ClearCache()
+ rs.DirectResolver.ClearCache()
+}
+
+func (rs Resolvers) ResetConnection() {
+ rs.Resolver.ResetConnection()
+ rs.ProxyResolver.ResetConnection()
+ rs.DirectResolver.ResetConnection()
+}
+
+func NewResolver(config Config) (rs Resolvers) {
+ defaultResolver := &Resolver{
+ main: transform(config.Default, nil),
+ cache: config.newCache(),
+ ipv6Timeout: time.Duration(config.IPv6Timeout) * time.Millisecond,
+ }
+
+ var nameServerCache []struct {
+ NameServer
+ dnsClient
+ }
+ cacheTransform := func(nameserver []NameServer) (result []dnsClient) {
+ LOOP:
+ for _, ns := range nameserver {
+ for _, nsc := range nameServerCache {
+ if nsc.NameServer.Equal(ns) {
+ result = append(result, nsc.dnsClient)
+ continue LOOP
+ }
+ }
+ // not in cache
+ dc := transform([]NameServer{ns}, defaultResolver)
+ if len(dc) > 0 {
+ dc := dc[0]
+ nameServerCache = append(nameServerCache, struct {
+ NameServer
+ dnsClient
+ }{NameServer: ns, dnsClient: dc})
+ result = append(result, dc)
+ }
+ }
+ return
+ }
+
+ r := &Resolver{
+ ipv6: config.IPv6,
+ main: cacheTransform(config.Main),
+ cache: config.newCache(),
+ hosts: config.Hosts,
+ ipv6Timeout: time.Duration(config.IPv6Timeout) * time.Millisecond,
+ }
+ r.defaultResolver = defaultResolver
+ rs.Resolver = r
+
+ if len(config.ProxyServer) != 0 {
+ rs.ProxyResolver = &Resolver{
+ ipv6: config.IPv6,
+ main: cacheTransform(config.ProxyServer),
+ cache: config.newCache(),
+ hosts: config.Hosts,
+ ipv6Timeout: time.Duration(config.IPv6Timeout) * time.Millisecond,
+ }
+ }
+
+ if len(config.DirectServer) != 0 {
+ rs.DirectResolver = &Resolver{
+ ipv6: config.IPv6,
+ main: cacheTransform(config.DirectServer),
+ cache: config.newCache(),
+ hosts: config.Hosts,
+ ipv6Timeout: time.Duration(config.IPv6Timeout) * time.Millisecond,
+ }
+ }
+
+ if len(config.Fallback) != 0 {
+ r.fallback = cacheTransform(config.Fallback)
+ r.fallbackIPFilters = config.FallbackIPFilter
+ r.fallbackDomainFilters = config.FallbackDomainFilter
+ }
+
+ if len(config.Policy) != 0 {
+ r.policy = make([]dnsPolicy, 0)
+
+ var triePolicy *trie.DomainTrie[[]dnsClient]
+ insertPolicy := func(policy dnsPolicy) {
+ if triePolicy != nil {
+ triePolicy.Optimize()
+ r.policy = append(r.policy, domainTriePolicy{triePolicy})
+ triePolicy = nil
+ }
+ if policy != nil {
+ r.policy = append(r.policy, policy)
+ }
+ }
+
+ for _, policy := range config.Policy {
+ if policy.Matcher != nil {
+ insertPolicy(domainMatcherPolicy{matcher: policy.Matcher, dnsClients: cacheTransform(policy.NameServers)})
+ } else {
+ if triePolicy == nil {
+ triePolicy = trie.New[[]dnsClient]()
+ }
+ _ = triePolicy.Insert(policy.Domain, cacheTransform(policy.NameServers))
+ }
+ }
+ insertPolicy(nil)
+
+ if rs.DirectResolver != nil && config.DirectFollowPolicy {
+ rs.DirectResolver.policy = r.policy
+ }
+ }
+
+ return
+}
+
+var ParseNameServer func(servers []string) ([]NameServer, error) // define in config/config.go
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/server.go
new file mode 100644
index 0000000..1cf58d4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/server.go
@@ -0,0 +1,107 @@
+package dns
+
+import (
+ stdContext "context"
+ "errors"
+ "net"
+
+ "github.com/metacubex/mihomo/common/sockopt"
+ "github.com/metacubex/mihomo/context"
+ "github.com/metacubex/mihomo/log"
+
+ D "github.com/miekg/dns"
+)
+
+var (
+ address string
+ server = &Server{}
+
+ dnsDefaultTTL uint32 = 600
+)
+
+type Server struct {
+ *D.Server
+ handler handler
+}
+
+// ServeDNS implement D.Handler ServeDNS
+func (s *Server) ServeDNS(w D.ResponseWriter, r *D.Msg) {
+ msg, err := handlerWithContext(stdContext.Background(), s.handler, r)
+ if err != nil {
+ D.HandleFailed(w, r)
+ return
+ }
+ msg.Compress = true
+ w.WriteMsg(msg)
+}
+
+func handlerWithContext(stdCtx stdContext.Context, handler handler, msg *D.Msg) (*D.Msg, error) {
+ if len(msg.Question) == 0 {
+ return nil, errors.New("at least one question is required")
+ }
+
+ ctx := context.NewDNSContext(stdCtx, msg)
+ return handler(ctx, msg)
+}
+
+func (s *Server) SetHandler(handler handler) {
+ s.handler = handler
+}
+
+func ReCreateServer(addr string, resolver *Resolver, mapper *ResolverEnhancer) {
+ if addr == address && resolver != nil {
+ handler := NewHandler(resolver, mapper)
+ server.SetHandler(handler)
+ return
+ }
+
+ if server.Server != nil {
+ server.Shutdown()
+ server = &Server{}
+ address = ""
+ }
+
+ if addr == "" {
+ return
+ }
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("Start DNS server error: %s", err.Error())
+ }
+ }()
+
+ _, port, err := net.SplitHostPort(addr)
+ if port == "0" || port == "" || err != nil {
+ return
+ }
+
+ udpAddr, err := net.ResolveUDPAddr("udp", addr)
+ if err != nil {
+ return
+ }
+
+ p, err := net.ListenUDP("udp", udpAddr)
+ if err != nil {
+ return
+ }
+
+ err = sockopt.UDPReuseaddr(p)
+ if err != nil {
+ log.Warnln("Failed to Reuse UDP Address: %s", err)
+
+ err = nil
+ }
+
+ address = addr
+ handler := NewHandler(resolver, mapper)
+ server = &Server{handler: handler}
+ server.Server = &D.Server{Addr: addr, PacketConn: p, Handler: server}
+
+ go func() {
+ server.ActivateAndServe()
+ }()
+
+ log.Infoln("DNS server listening at: %s", p.LocalAddr().String())
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/system.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/system.go
new file mode 100644
index 0000000..ab6c010
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/system.go
@@ -0,0 +1,74 @@
+package dns
+
+import (
+ "context"
+ "fmt"
+ "strings"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/component/resolver"
+
+ D "github.com/miekg/dns"
+)
+
+const (
+ SystemDnsFlushTime = 5 * time.Minute
+ SystemDnsDeleteTimes = 12 // 12*5 = 60min
+)
+
+type systemDnsClient struct {
+ disableTimes uint32
+ dnsClient
+}
+
+type systemClient struct {
+ mu sync.Mutex
+ dnsClients map[string]*systemDnsClient
+ lastFlush time.Time
+ defaultNS []dnsClient
+}
+
+func (c *systemClient) ExchangeContext(ctx context.Context, m *D.Msg) (msg *D.Msg, err error) {
+ dnsClients, err := c.getDnsClients()
+ if len(dnsClients) == 0 && len(c.defaultNS) > 0 {
+ dnsClients = c.defaultNS
+ err = nil
+ }
+ if err != nil {
+ return
+ }
+ msg, _, err = batchExchange(ctx, dnsClients, m)
+ return
+}
+
+// Address implements dnsClient
+func (c *systemClient) Address() string {
+ dnsClients, _ := c.getDnsClients()
+ isDefault := ""
+ if len(dnsClients) == 0 && len(c.defaultNS) > 0 {
+ dnsClients = c.defaultNS
+ isDefault = "[defaultNS]"
+ }
+ addrs := make([]string, 0, len(dnsClients))
+ for _, c := range dnsClients {
+ addrs = append(addrs, c.Address())
+ }
+ return fmt.Sprintf("system%s(%s)", isDefault, strings.Join(addrs, ","))
+}
+
+var _ dnsClient = (*systemClient)(nil)
+
+func newSystemClient() *systemClient {
+ return &systemClient{
+ dnsClients: map[string]*systemDnsClient{},
+ }
+}
+
+func init() {
+ r := NewResolver(Config{})
+ c := newSystemClient()
+ c.defaultNS = transform([]NameServer{{Addr: "114.114.114.114:53"}, {Addr: "8.8.8.8:53"}}, nil)
+ r.main = []dnsClient{c}
+ resolver.SystemResolver = r
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/system_common.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/system_common.go
new file mode 100644
index 0000000..e6dabdc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/system_common.go
@@ -0,0 +1,73 @@
+//go:build !(android && cmfa)
+
+package dns
+
+import (
+ "net"
+ "time"
+
+ "github.com/metacubex/mihomo/component/resolver"
+ "github.com/metacubex/mihomo/log"
+
+ "golang.org/x/exp/slices"
+)
+
+func (c *systemClient) getDnsClients() ([]dnsClient, error) {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+ var err error
+ if time.Since(c.lastFlush) > SystemDnsFlushTime {
+ var nameservers []string
+ if nameservers, err = dnsReadConfig(); err == nil {
+ log.Debugln("[DNS] system dns update to %s", nameservers)
+ for _, addr := range nameservers {
+ if resolver.IsSystemDnsBlacklisted(addr) {
+ continue
+ }
+ if _, ok := c.dnsClients[addr]; !ok {
+ clients := transform(
+ []NameServer{{
+ Addr: net.JoinHostPort(addr, "53"),
+ Net: "udp",
+ }},
+ nil,
+ )
+ if len(clients) > 0 {
+ c.dnsClients[addr] = &systemDnsClient{
+ disableTimes: 0,
+ dnsClient: clients[0],
+ }
+ }
+ }
+ }
+ available := 0
+ for nameserver, sdc := range c.dnsClients {
+ if slices.Contains(nameservers, nameserver) {
+ sdc.disableTimes = 0 // enable
+ available++
+ } else {
+ if sdc.disableTimes > SystemDnsDeleteTimes {
+ delete(c.dnsClients, nameserver) // drop too old dnsClient
+ } else {
+ sdc.disableTimes++
+ }
+ }
+ }
+ if available > 0 {
+ c.lastFlush = time.Now()
+ }
+ }
+ }
+ dnsClients := make([]dnsClient, 0, len(c.dnsClients))
+ for _, sdc := range c.dnsClients {
+ if sdc.disableTimes == 0 {
+ dnsClients = append(dnsClients, sdc.dnsClient)
+ }
+ }
+ if len(dnsClients) > 0 {
+ return dnsClients, nil
+ }
+ return nil, err
+}
+
+func (c *systemClient) ResetConnection() {}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/system_posix.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/system_posix.go
new file mode 100644
index 0000000..4d07d4e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/system_posix.go
@@ -0,0 +1,43 @@
+//go:build !windows
+
+package dns
+
+import (
+ "bufio"
+ "fmt"
+ "net/netip"
+ "os"
+ "strings"
+)
+
+const resolvConf = "/etc/resolv.conf"
+
+func dnsReadConfig() (servers []string, err error) {
+ file, err := os.Open(resolvConf)
+ if err != nil {
+ err = fmt.Errorf("failed to read %s: %w", resolvConf, err)
+ return
+ }
+ defer func() { _ = file.Close() }()
+ scanner := bufio.NewScanner(file)
+ for scanner.Scan() {
+ line := scanner.Text()
+ if len(line) > 0 && (line[0] == ';' || line[0] == '#') {
+ // comment.
+ continue
+ }
+ f := strings.Fields(line)
+ if len(f) < 1 {
+ continue
+ }
+ switch f[0] {
+ case "nameserver": // add one name server
+ if len(f) > 1 {
+ if addr, err := netip.ParseAddr(f[1]); err == nil {
+ servers = append(servers, addr.String())
+ }
+ }
+ }
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/system_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/system_windows.go
new file mode 100644
index 0000000..2f4d1b6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/system_windows.go
@@ -0,0 +1,81 @@
+//go:build windows
+
+package dns
+
+import (
+ "net"
+ "os"
+ "syscall"
+ "unsafe"
+
+ "golang.org/x/exp/slices"
+ "golang.org/x/sys/windows"
+)
+
+func dnsReadConfig() (servers []string, err error) {
+ aas, err := adapterAddresses()
+ if err != nil {
+ return
+ }
+ for _, aa := range aas {
+ for dns := aa.FirstDnsServerAddress; dns != nil; dns = dns.Next {
+ sa, err := dns.Address.Sockaddr.Sockaddr()
+ if err != nil {
+ continue
+ }
+ var ip net.IP
+ switch sa := sa.(type) {
+ case *syscall.SockaddrInet4:
+ ip = net.IPv4(sa.Addr[0], sa.Addr[1], sa.Addr[2], sa.Addr[3])
+ case *syscall.SockaddrInet6:
+ ip = make(net.IP, net.IPv6len)
+ copy(ip, sa.Addr[:])
+ if ip[0] == 0xfe && ip[1] == 0xc0 {
+ // Ignore these fec0/10 ones. Windows seems to
+ // populate them as defaults on its misc rando
+ // interfaces.
+ continue
+ }
+ //continue
+ default:
+ // Unexpected type.
+ continue
+ }
+ if slices.Contains(servers, ip.String()) {
+ continue
+ }
+ servers = append(servers, ip.String())
+ }
+ }
+ return
+}
+
+// adapterAddresses returns a list of IP adapter and address
+// structures. The structure contains an IP adapter and flattened
+// multiple IP addresses including unicast, anycast and multicast
+// addresses.
+func adapterAddresses() ([]*windows.IpAdapterAddresses, error) {
+ var b []byte
+ l := uint32(15000) // recommended initial size
+ for {
+ b = make([]byte, l)
+ err := windows.GetAdaptersAddresses(syscall.AF_UNSPEC, windows.GAA_FLAG_INCLUDE_PREFIX, 0, (*windows.IpAdapterAddresses)(unsafe.Pointer(&b[0])), &l)
+ if err == nil {
+ if l == 0 {
+ return nil, nil
+ }
+ break
+ }
+ if err.(syscall.Errno) != syscall.ERROR_BUFFER_OVERFLOW {
+ return nil, os.NewSyscallError("getadaptersaddresses", err)
+ }
+ if l <= uint32(len(b)) {
+ return nil, os.NewSyscallError("getadaptersaddresses", err)
+ }
+ }
+ var aas []*windows.IpAdapterAddresses
+ for aa := (*windows.IpAdapterAddresses)(unsafe.Pointer(&b[0])); aa != nil; aa = aa.Next {
+ aas = append(aas, aa)
+ }
+ return aas, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/dns/util.go b/Android-kotlin-Code/core/src/foss/golang/clash/dns/util.go
new file mode 100644
index 0000000..50459cc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/dns/util.go
@@ -0,0 +1,236 @@
+package dns
+
+import (
+ "context"
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "net"
+ "net/netip"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/common/nnip"
+ "github.com/metacubex/mihomo/common/picker"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ "github.com/metacubex/mihomo/log"
+
+ D "github.com/miekg/dns"
+ "github.com/samber/lo"
+)
+
+const (
+ MaxMsgSize = 65535
+)
+
+const serverFailureCacheTTL uint32 = 5
+
+func minimalTTL(records []D.RR) uint32 {
+ rr := lo.MinBy(records, func(r1 D.RR, r2 D.RR) bool {
+ return r1.Header().Ttl < r2.Header().Ttl
+ })
+ if rr == nil {
+ return 0
+ }
+ return rr.Header().Ttl
+}
+
+func updateTTL(records []D.RR, ttl uint32) {
+ if len(records) == 0 {
+ return
+ }
+ delta := minimalTTL(records) - ttl
+ for i := range records {
+ records[i].Header().Ttl = lo.Clamp(records[i].Header().Ttl-delta, 1, records[i].Header().Ttl)
+ }
+}
+
+func putMsgToCache(c dnsCache, key string, q D.Question, msg *D.Msg) {
+ // skip dns cache for acme challenge
+ if q.Qtype == D.TypeTXT && strings.HasPrefix(q.Name, "_acme-challenge.") {
+ log.Debugln("[DNS] dns cache ignored because of acme challenge for: %s", q.Name)
+ return
+ }
+
+ var ttl uint32
+ if msg.Rcode == D.RcodeServerFailure {
+ // [...] a resolver MAY cache a server failure response.
+ // If it does so it MUST NOT cache it for longer than five (5) minutes [...]
+ ttl = serverFailureCacheTTL
+ } else {
+ ttl = minimalTTL(append(append(msg.Answer, msg.Ns...), msg.Extra...))
+ }
+ if ttl == 0 {
+ return
+ }
+ c.SetWithExpire(key, msg.Copy(), time.Now().Add(time.Duration(ttl)*time.Second))
+}
+
+func setMsgTTL(msg *D.Msg, ttl uint32) {
+ for _, answer := range msg.Answer {
+ answer.Header().Ttl = ttl
+ }
+
+ for _, ns := range msg.Ns {
+ ns.Header().Ttl = ttl
+ }
+
+ for _, extra := range msg.Extra {
+ extra.Header().Ttl = ttl
+ }
+}
+
+func updateMsgTTL(msg *D.Msg, ttl uint32) {
+ updateTTL(msg.Answer, ttl)
+ updateTTL(msg.Ns, ttl)
+ updateTTL(msg.Extra, ttl)
+}
+
+func isIPRequest(q D.Question) bool {
+ return q.Qclass == D.ClassINET && (q.Qtype == D.TypeA || q.Qtype == D.TypeAAAA || q.Qtype == D.TypeCNAME)
+}
+
+func transform(servers []NameServer, resolver *Resolver) []dnsClient {
+ ret := make([]dnsClient, 0, len(servers))
+ for _, s := range servers {
+ switch s.Net {
+ case "https":
+ ret = append(ret, newDoHClient(s.Addr, resolver, s.PreferH3, s.Params, s.ProxyAdapter, s.ProxyName))
+ continue
+ case "dhcp":
+ ret = append(ret, newDHCPClient(s.Addr))
+ continue
+ case "system":
+ ret = append(ret, newSystemClient())
+ continue
+ case "rcode":
+ ret = append(ret, newRCodeClient(s.Addr))
+ continue
+ case "quic":
+ if doq, err := newDoQ(resolver, s.Addr, s.ProxyAdapter, s.ProxyName); err == nil {
+ ret = append(ret, doq)
+ } else {
+ log.Fatalln("DoQ format error: %v", err)
+ }
+ continue
+ }
+
+ var options []dialer.Option
+ if s.Interface != "" {
+ options = append(options, dialer.WithInterface(s.Interface))
+ }
+
+ host, port, _ := net.SplitHostPort(s.Addr)
+ ret = append(ret, &client{
+ Client: &D.Client{
+ Net: s.Net,
+ TLSConfig: &tls.Config{
+ ServerName: host,
+ },
+ UDPSize: 4096,
+ Timeout: 5 * time.Second,
+ },
+ port: port,
+ host: host,
+ dialer: newDNSDialer(resolver, s.ProxyAdapter, s.ProxyName, options...),
+ })
+ }
+ return ret
+}
+
+func handleMsgWithEmptyAnswer(r *D.Msg) *D.Msg {
+ msg := &D.Msg{}
+ msg.Answer = []D.RR{}
+
+ msg.SetRcode(r, D.RcodeSuccess)
+ msg.Authoritative = true
+ msg.RecursionAvailable = true
+
+ return msg
+}
+
+func msgToIP(msg *D.Msg) []netip.Addr {
+ ips := []netip.Addr{}
+
+ for _, answer := range msg.Answer {
+ switch ans := answer.(type) {
+ case *D.AAAA:
+ ips = append(ips, nnip.IpToAddr(ans.AAAA))
+ case *D.A:
+ ips = append(ips, nnip.IpToAddr(ans.A))
+ }
+ }
+
+ return ips
+}
+
+func msgToDomain(msg *D.Msg) string {
+ if len(msg.Question) > 0 {
+ return strings.TrimRight(msg.Question[0].Name, ".")
+ }
+
+ return ""
+}
+
+func msgToQtype(msg *D.Msg) (uint16, string) {
+ if len(msg.Question) > 0 {
+ qType := msg.Question[0].Qtype
+ return qType, D.Type(qType).String()
+ }
+ return 0, ""
+}
+
+func batchExchange(ctx context.Context, clients []dnsClient, m *D.Msg) (msg *D.Msg, cache bool, err error) {
+ cache = true
+ fast, ctx := picker.WithTimeout[*D.Msg](ctx, resolver.DefaultDNSTimeout)
+ defer fast.Close()
+ domain := msgToDomain(m)
+ qType, qTypeStr := msgToQtype(m)
+ var noIpMsg *D.Msg
+ for _, client := range clients {
+ if _, isRCodeClient := client.(rcodeClient); isRCodeClient {
+ msg, err = client.ExchangeContext(ctx, m)
+ return msg, false, err
+ }
+ client := client // shadow define client to ensure the value captured by the closure will not be changed in the next loop
+ fast.Go(func() (*D.Msg, error) {
+ log.Debugln("[DNS] resolve %s %s from %s", domain, qTypeStr, client.Address())
+ m, err := client.ExchangeContext(ctx, m)
+ if err != nil {
+ return nil, err
+ } else if cache && (m.Rcode == D.RcodeServerFailure || m.Rcode == D.RcodeRefused) {
+ // currently, cache indicates whether this msg was from a RCode client,
+ // so we would ignore RCode errors from RCode clients.
+ return nil, errors.New("server failure: " + D.RcodeToString[m.Rcode])
+ }
+ ips := msgToIP(m)
+ log.Debugln("[DNS] %s --> %s %s from %s", domain, ips, qTypeStr, client.Address())
+ switch qType {
+ case D.TypeAAAA:
+ if len(ips) == 0 {
+ noIpMsg = m
+ return nil, resolver.ErrIPNotFound
+ }
+ case D.TypeA:
+ if len(ips) == 0 {
+ noIpMsg = m
+ return nil, resolver.ErrIPNotFound
+ }
+ }
+ return m, nil
+ })
+ }
+
+ msg = fast.Wait()
+ if msg == nil {
+ if noIpMsg != nil {
+ return noIpMsg, false, nil
+ }
+ err = errors.New("all DNS requests failed")
+ if fErr := fast.Error(); fErr != nil {
+ err = fmt.Errorf("%w, first error: %w", err, fErr)
+ }
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/docker/file-name.sh b/Android-kotlin-Code/core/src/foss/golang/clash/docker/file-name.sh
new file mode 100644
index 0000000..3b2d61f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/docker/file-name.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+os="mihomo-linux-"
+case $TARGETPLATFORM in
+ "linux/amd64")
+ arch="amd64-compatible"
+ ;;
+ "linux/386")
+ arch="386"
+ ;;
+ "linux/arm64")
+ arch="arm64"
+ ;;
+ "linux/arm/v7")
+ arch="armv7"
+ ;;
+ "riscv64")
+ arch="riscv64"
+ ;;
+ *)
+ echo "Unknown architecture"
+ exit 1
+ ;;
+esac
+file_name="$os$arch-$(cat bin/version.txt)"
+echo $file_name
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/docs/config.yaml b/Android-kotlin-Code/core/src/foss/golang/clash/docs/config.yaml
new file mode 100644
index 0000000..e75e5bd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/docs/config.yaml
@@ -0,0 +1,1203 @@
+# port: 7890 # HTTP(S) 代理服务器端口
+# socks-port: 7891 # SOCKS5 代理端口
+mixed-port: 10801 # HTTP(S) 和 SOCKS 代理混合端口
+# redir-port: 7892 # 透明代理端口,用于 Linux 和 MacOS
+
+# Transparent proxy server port for Linux (TProxy TCP and TProxy UDP)
+# tproxy-port: 7893
+
+allow-lan: true # 允许局域网连接
+bind-address: "*" # 绑定 IP 地址,仅作用于 allow-lan 为 true,'*'表示所有地址
+authentication: # http,socks 入口的验证用户名,密码
+ - "username:password"
+skip-auth-prefixes: # 设置跳过验证的 IP 段
+ - 127.0.0.1/8
+ - ::1/128
+lan-allowed-ips: # 允许连接的 IP 地址段,仅作用于 allow-lan 为 true, 默认值为 0.0.0.0/0 和::/0
+ - 0.0.0.0/0
+ - ::/0
+lan-disallowed-ips: # 禁止连接的 IP 地址段,黑名单优先级高于白名单,默认值为空
+ - 192.168.0.3/32
+
+# find-process-mode has 3 values:always, strict, off
+# - always, 开启,强制匹配所有进程
+# - strict, 默认,由 mihomo 判断是否开启
+# - off, 不匹配进程,推荐在路由器上使用此模式
+find-process-mode: strict
+
+mode: rule
+
+#自定义 geodata url
+geox-url:
+ geoip: "https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
+ geosite: "https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"
+ mmdb: "https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.metadb"
+
+geo-auto-update: false # 是否自动更新 geodata
+geo-update-interval: 24 # 更新间隔,单位:小时
+
+# Matcher implementation used by GeoSite, available implementations:
+# - succinct (default, same as rule-set)
+# - mph (from V2Ray, also `hybrid` in Xray)
+# geosite-matcher: succinct
+
+log-level: debug # 日志等级 silent/error/warning/info/debug
+
+ipv6: true # 开启 IPv6 总开关,关闭阻断所有 IPv6 链接和屏蔽 DNS 请求 AAAA 记录
+
+tls:
+ certificate: string # 证书 PEM 格式,或者 证书的路径
+ private-key: string # 证书对应的私钥 PEM 格式,或者私钥路径
+ custom-certifactes:
+ - |
+ -----BEGIN CERTIFICATE-----
+ format/pem...
+ -----END CERTIFICATE-----
+
+external-controller: 0.0.0.0:9093 # RESTful API 监听地址
+external-controller-tls: 0.0.0.0:9443 # RESTful API HTTPS 监听地址,需要配置 tls 部分配置文件
+# secret: "123456" # `Authorization:Bearer ${secret}`
+
+# RESTful API CORS标头配置
+external-controller-cors:
+ allow-origins:
+ - *
+ allow-private-network: true
+
+# RESTful API Unix socket 监听地址( windows版本大于17063也可以使用,即大于等于1803/RS4版本即可使用 )
+# !!!注意: 从Unix socket访问api接口不会验证secret, 如果开启请自行保证安全问题 !!!
+# 测试方法: curl -v --unix-socket "mihomo.sock" http://localhost/
+external-controller-unix: mihomo.sock
+
+# RESTful API Windows namedpipe 监听地址
+# !!!注意: 从Windows namedpipe访问api接口不会验证secret, 如果开启请自行保证安全问题 !!!
+external-controller-pipe: \\.\pipe\mihomo
+
+# tcp-concurrent: true # TCP 并发连接所有 IP, 将使用最快握手的 TCP
+
+# 配置 WEB UI 目录,使用 http://{{external-controller}}/ui 访问
+external-ui: /path/to/ui/folder/
+external-ui-name: xd
+external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip"
+
+# 在RESTful API端口上开启DOH服务器
+# !!!该URL不会验证secret, 如果开启请自行保证安全问题 !!!
+external-doh-server: /dns-query
+
+# interface-name: en0 # 设置出口网卡
+
+# 全局 TLS 指纹,优先低于 proxy 内的 client-fingerprint
+# 可选: "chrome","firefox","safari","ios","random","none" options.
+# Utls is currently support TLS transport in TCP/grpc/WS/HTTP for VLESS/Vmess and trojan.
+global-client-fingerprint: chrome
+
+# TCP keep alive interval
+# disable-keep-alive: false #目前在android端强制为true
+# keep-alive-idle: 15
+# keep-alive-interval: 15
+
+# routing-mark:6666 # 配置 fwmark 仅用于 Linux
+experimental:
+ # Disable quic-go GSO support. This may result in reduced performance on Linux.
+ # This is not recommended for most users.
+ # Only users encountering issues with quic-go's internal implementation should enable this,
+ # and they should disable it as soon as the issue is resolved.
+ # This field will be removed when quic-go fixes all their issues in GSO.
+ # This equivalent to the environment variable QUIC_GO_DISABLE_GSO=1.
+ #quic-go-disable-gso: true
+
+# 类似于 /etc/hosts, 仅支持配置单个 IP
+hosts:
+# '*.mihomo.dev': 127.0.0.1
+# '.dev': 127.0.0.1
+# 'alpha.mihomo.dev': '::1'
+# test.com: [1.1.1.1, 2.2.2.2]
+# home.lan: lan # lan 为特别字段,将加入本地所有网卡的地址
+# baidu.com: google.com # 只允许配置一个别名
+
+profile: # 存储 select 选择记录
+ store-selected: false
+
+ # 持久化 fake-ip
+ store-fake-ip: true
+
+# Tun 配置
+tun:
+ enable: false
+ stack: system # gvisor/mixed
+ dns-hijack:
+ - 0.0.0.0:53 # 需要劫持的 DNS
+ # auto-detect-interface: true # 自动识别出口网卡
+ # auto-route: true # 配置路由表
+ # mtu: 9000 # 最大传输单元
+ # gso: false # 启用通用分段卸载,仅支持 Linux
+ # gso-max-size: 65536 # 通用分段卸载包的最大大小
+ auto-redirect: false # 自动配置 iptables 以重定向 TCP 连接。仅支持 Linux。带有 auto-redirect 的 auto-route 现在可以在路由器上按预期工作,无需干预。
+ # strict-route: true # 将所有连接路由到 tun 来防止泄漏,但你的设备将无法其他设备被访问
+ route-address-set: # 将指定规则集中的目标 IP CIDR 规则添加到防火墙, 不匹配的流量将绕过路由, 仅支持 Linux,且需要 nftables,`auto-route` 和 `auto-redirect` 已启用。
+ - ruleset-1
+ - ruleset-2
+ route-exclude-address-set: # 将指定规则集中的目标 IP CIDR 规则添加到防火墙, 匹配的流量将绕过路由, 仅支持 Linux,且需要 nftables,`auto-route` 和 `auto-redirect` 已启用。
+ - ruleset-3
+ - ruleset-4
+ route-address: # 启用 auto-route 时使用自定义路由而不是默认路由
+ - 0.0.0.0/1
+ - 128.0.0.0/1
+ - "::/1"
+ - "8000::/1"
+ # inet4-route-address: # 启用 auto-route 时使用自定义路由而不是默认路由(旧写法)
+ # - 0.0.0.0/1
+ # - 128.0.0.0/1
+ # inet6-route-address: # 启用 auto-route 时使用自定义路由而不是默认路由(旧写法)
+ # - "::/1"
+ # - "8000::/1"
+ # endpoint-independent-nat: false # 启用独立于端点的 NAT
+ # include-interface: # 限制被路由的接口。默认不限制,与 `exclude-interface` 冲突
+ # - "lan0"
+ # exclude-interface: # 排除路由的接口,与 `include-interface` 冲突
+ # - "lan1"
+ # include-uid: # UID 规则仅在 Linux 下被支持,并且需要 auto-route
+ # - 0
+ # include-uid-range: # 限制被路由的的用户范围
+ # - 1000:9999
+ # exclude-uid: # 排除路由的的用户
+ #- 1000
+ # exclude-uid-range: # 排除路由的的用户范围
+ # - 1000:9999
+
+ # Android 用户和应用规则仅在 Android 下被支持
+ # 并且需要 auto-route
+
+ # include-android-user: # 限制被路由的 Android 用户
+ # - 0
+ # - 10
+ # include-package: # 限制被路由的 Android 应用包名
+ # - com.android.chrome
+ # exclude-package: # 排除被路由的 Android 应用包名
+ # - com.android.captiveportallogin
+
+# 嗅探域名 可选配置
+sniffer:
+ enable: false
+ ## 对 redir-host 类型识别的流量进行强制嗅探
+ ## 如:Tun、Redir 和 TProxy 并 DNS 为 redir-host 皆属于
+ # force-dns-mapping: false
+ ## 对所有未获取到域名的流量进行强制嗅探
+ # parse-pure-ip: false
+ # 是否使用嗅探结果作为实际访问,默认 true
+ # 全局配置,优先级低于 sniffer.sniff 实际配置
+ override-destination: false
+ sniff: # TLS 和 QUIC 默认如果不配置 ports 默认嗅探 443
+ QUIC:
+ # ports: [ 443 ]
+ TLS:
+ # ports: [443, 8443]
+
+ # 默认嗅探 80
+ HTTP: # 需要嗅探的端口
+ ports: [80, 8080-8880]
+ # 可覆盖 sniffer.override-destination
+ override-destination: true
+ force-domain:
+ - +.v2ex.com
+ # skip-src-address: # 对于来源ip跳过嗅探
+ # - 192.168.0.3/32
+ # skip-dst-address: # 对于目标ip跳过嗅探
+ # - 192.168.0.3/32
+ ## 对嗅探结果进行跳过
+ # skip-domain:
+ # - Mijia Cloud
+ # 需要嗅探协议
+ # 已废弃,若 sniffer.sniff 配置则此项无效
+ sniffing:
+ - tls
+ - http
+ # 强制对此域名进行嗅探
+
+ # 仅对白名单中的端口进行嗅探,默认为 443,80
+ # 已废弃,若 sniffer.sniff 配置则此项无效
+ port-whitelist:
+ - "80"
+ - "443"
+ # - 8000-9999
+
+tunnels: # one line config
+ - tcp/udp,127.0.0.1:6553,114.114.114.114:53,proxy
+ - tcp,127.0.0.1:6666,rds.mysql.com:3306,vpn
+ # full yaml config
+ - network: [tcp, udp]
+ address: 127.0.0.1:7777
+ target: target.com
+ proxy: proxy
+
+# DNS 配置
+dns:
+ cache-algorithm: arc
+ enable: false # 关闭将使用系统 DNS
+ prefer-h3: false # 是否开启 DoH 支持 HTTP/3,将并发尝试
+ listen: 0.0.0.0:53 # 开启 DNS 服务器监听
+ # ipv6: false # false 将返回 AAAA 的空结果
+ # ipv6-timeout: 300 # 单位:ms,内部双栈并发时,向上游查询 AAAA 时,等待 AAAA 的时间,默认 100ms
+ # 用于解析 nameserver,fallback 以及其他 DNS 服务器配置的,DNS 服务域名
+ # 只能使用纯 IP 地址,可使用加密 DNS
+ default-nameserver:
+ - 114.114.114.114
+ - 8.8.8.8
+ - tls://1.12.12.12:853
+ - tls://223.5.5.5:853
+ - system # append DNS server from system configuration. If not found, it would print an error log and skip.
+ enhanced-mode: fake-ip # or redir-host
+
+ fake-ip-range: 198.18.0.1/16 # fake-ip 池设置
+
+ # 配置不使用 fake-ip 的域名
+ fake-ip-filter:
+ - '*.lan'
+ - localhost.ptlogin2.qq.com
+ # fakeip-filter 为 rule-providers 中的名为 fakeip-filter 规则订阅,
+ # 且 behavior 必须为 domain/classical,当为 classical 时仅会生效域名类规则
+ - rule-set:fakeip-filter
+ # fakeip-filter 为 geosite 中名为 fakeip-filter 的分类(需要自行保证该分类存在)
+ - geosite:fakeip-filter
+ # 配置fake-ip-filter的匹配模式,默认为blacklist,即如果匹配成功不返回fake-ip
+ # 可设置为whitelist,即只有匹配成功才返回fake-ip
+ fake-ip-filter-mode: blacklist
+
+ # use-hosts: true # 查询 hosts
+
+ # 配置后面的nameserver、fallback和nameserver-policy向dns服务器的连接过程是否遵守遵守rules规则
+ # 如果为false(默认值)则这三部分的dns服务器在未特别指定的情况下会直连
+ # 如果为true,将会按照rules的规则匹配链接方式(走代理或直连),如果有特别指定则任然以指定值为准
+ # 仅当proxy-server-nameserver非空时可以开启此选项, 强烈不建议和prefer-h3一起使用
+ # 此外,这三者配置中的dns服务器如果出现域名会采用default-nameserver配置项解析,也请确保正确配置default-nameserver
+ respect-rules: false
+
+ # DNS 主要域名配置
+ # 支持 UDP,TCP,DoT,DoH,DoQ
+ # 这部分为主要 DNS 配置,影响所有直连,确保使用对大陆解析精准的 DNS
+ nameserver:
+ - 114.114.114.114 # default value
+ - 8.8.8.8 # default value
+ - tls://223.5.5.5:853 # DNS over TLS
+ - https://doh.pub/dns-query # DNS over HTTPS
+ - https://dns.alidns.com/dns-query#h3=true # 强制 HTTP/3,与 perfer-h3 无关,强制开启 DoH 的 HTTP/3 支持,若不支持将无法使用
+ - https://mozilla.cloudflare-dns.com/dns-query#DNS&h3=true # 指定策略组和使用 HTTP/3
+ - dhcp://en0 # dns from dhcp
+ - quic://dns.adguard.com:784 # DNS over QUIC
+ # - '8.8.8.8#RULES' # 效果同respect-rules,但仅对该服务器生效
+ # - '8.8.8.8#en0' # 兼容指定 DNS 出口网卡
+
+ # 当配置 fallback 时,会查询 nameserver 中返回的 IP 是否为 CN,非必要配置
+ # 当不是 CN,则使用 fallback 中的 DNS 查询结果
+ # 确保配置 fallback 时能够正常查询
+ # fallback:
+ # - tcp://1.1.1.1
+ # - 'tcp://1.1.1.1#ProxyGroupName' # 指定 DNS 过代理查询,ProxyGroupName 为策略组名或节点名,过代理配置优先于配置出口网卡,当找不到策略组或节点名则设置为出口网卡
+
+ # 专用于节点域名解析的 DNS 服务器,非必要配置项,如果不填则遵循nameserver-policy、nameserver和fallback的配置
+ # proxy-server-nameserver:
+ # - https://dns.google/dns-query
+ # - tls://one.one.one.one
+
+ # 专用于direct出口域名解析的 DNS 服务器,非必要配置项,如果不填则遵循nameserver-policy、nameserver和fallback的配置
+ # direct-nameserver:
+ # - system://
+ # direct-nameserver-follow-policy: false # 是否遵循nameserver-policy,默认为不遵守,仅当direct-nameserver不为空时生效
+
+ # 配置 fallback 使用条件
+ # fallback-filter:
+ # geoip: true # 配置是否使用 geoip
+ # geoip-code: CN # 当 nameserver 域名的 IP 查询 geoip 库为 CN 时,不使用 fallback 中的 DNS 查询结果
+ # 配置强制 fallback,优先于 IP 判断,具体分类自行查看 geosite 库
+ # geosite:
+ # - gfw
+ # 如果不匹配 ipcidr 则使用 nameservers 中的结果
+ # ipcidr:
+ # - 240.0.0.0/4
+ # domain:
+ # - '+.google.com'
+ # - '+.facebook.com'
+ # - '+.youtube.com'
+
+ # 配置查询域名使用的 DNS 服务器
+ nameserver-policy:
+ # 'www.baidu.com': '114.114.114.114'
+ # '+.internal.crop.com': '10.0.0.1'
+ "geosite:cn,private,apple":
+ - https://doh.pub/dns-query
+ - https://dns.alidns.com/dns-query
+ "geosite:category-ads-all": rcode://success
+ "www.baidu.com,+.google.cn": [223.5.5.5, https://dns.alidns.com/dns-query]
+ ## global,dns 为 rule-providers 中的名为 global 和 dns 规则订阅,
+ ## 且 behavior 必须为 domain/classical,当为 classical 时仅会生效域名类规则
+ # "rule-set:global,dns": 8.8.8.8
+
+proxies: # socks5
+ - name: "socks"
+ type: socks5
+ server: server
+ port: 443
+ # username: username
+ # password: password
+ # tls: true
+ # fingerprint: xxxx
+ # skip-cert-verify: true
+ # udp: true
+ # ip-version: ipv6
+
+ # http
+ - name: "http"
+ type: http
+ server: server
+ port: 443
+ # username: username
+ # password: password
+ # tls: true # https
+ # skip-cert-verify: true
+ # sni: custom.com
+ # fingerprint: xxxx # 同 experimental.fingerprints 使用 sha256 指纹,配置协议独立的指纹,将忽略 experimental.fingerprints
+ # ip-version: dual
+
+ # Snell
+ # Beware that there's currently no UDP support yet
+ - name: "snell"
+ type: snell
+ server: server
+ port: 44046
+ psk: yourpsk
+ # version: 2
+ # obfs-opts:
+ # mode: http # or tls
+ # host: bing.com
+
+ # Shadowsocks
+ # cipher支持:
+ # aes-128-gcm aes-192-gcm aes-256-gcm
+ # aes-128-cfb aes-192-cfb aes-256-cfb
+ # aes-128-ctr aes-192-ctr aes-256-ctr
+ # rc4-md5 chacha20-ietf xchacha20
+ # chacha20-ietf-poly1305 xchacha20-ietf-poly1305
+ # 2022-blake3-aes-128-gcm 2022-blake3-aes-256-gcm 2022-blake3-chacha20-poly1305
+ - name: "ss1"
+ type: ss
+ server: server
+ port: 443
+ cipher: chacha20-ietf-poly1305
+ password: "password"
+ # udp: true
+ # udp-over-tcp: false
+ # ip-version: ipv4 # 设置节点使用 IP 版本,可选:dual,ipv4,ipv6,ipv4-prefer,ipv6-prefer。默认使用 dual
+ # ipv4:仅使用 IPv4 ipv6:仅使用 IPv6
+ # ipv4-prefer:优先使用 IPv4 对于 TCP 会进行双栈解析,并发链接但是优先使用 IPv4 链接,
+ # UDP 则为双栈解析,获取结果中的第一个 IPv4
+ # ipv6-prefer 同 ipv4-prefer
+ # 现有协议都支持此参数,TCP 效果仅在开启 tcp-concurrent 生效
+ smux:
+ enabled: false
+ protocol: smux # smux/yamux/h2mux
+ # max-connections: 4 # Maximum connections. Conflict with max-streams.
+ # min-streams: 4 # Minimum multiplexed streams in a connection before opening a new connection. Conflict with max-streams.
+ # max-streams: 0 # Maximum multiplexed streams in a connection before opening a new connection. Conflict with max-connections and min-streams.
+ # padding: false # Enable padding. Requires sing-box server version 1.3-beta9 or later.
+ # statistic: false # 控制是否将底层连接显示在面板中,方便打断底层连接
+ # only-tcp: false # 如果设置为 true, smux 的设置将不会对 udp 生效,udp 连接会直接走底层协议
+
+ - name: "ss2"
+ type: ss
+ server: server
+ port: 443
+ cipher: chacha20-ietf-poly1305
+ password: "password"
+ plugin: obfs
+ plugin-opts:
+ mode: tls # or http
+ # host: bing.com
+
+ - name: "ss3"
+ type: ss
+ server: server
+ port: 443
+ cipher: chacha20-ietf-poly1305
+ password: "password"
+ plugin: v2ray-plugin
+ plugin-opts:
+ mode: websocket # no QUIC now
+ # tls: true # wss
+ # 可使用 openssl x509 -noout -fingerprint -sha256 -inform pem -in yourcert.pem 获取
+ # 配置指纹将实现 SSL Pining 效果
+ # fingerprint: xxxx
+ # skip-cert-verify: true
+ # host: bing.com
+ # path: "/"
+ # mux: true
+ # headers:
+ # custom: value
+ # v2ray-http-upgrade: false
+ # v2ray-http-upgrade-fast-open: false
+
+ - name: "ss4-shadow-tls"
+ type: ss
+ server: server
+ port: 443
+ cipher: chacha20-ietf-poly1305
+ password: "password"
+ plugin: shadow-tls
+ client-fingerprint: chrome
+ plugin-opts:
+ host: "cloud.tencent.com"
+ password: "shadow_tls_password"
+ version: 2 # support 1/2/3
+
+ - name: "ss-restls-tls13"
+ type: ss
+ server: [YOUR_SERVER_IP]
+ port: 443
+ cipher: chacha20-ietf-poly1305
+ password: [YOUR_SS_PASSWORD]
+ client-fingerprint:
+ chrome # One of: chrome, ios, firefox or safari
+ # 可以是 chrome, ios, firefox, safari 中的一个
+ plugin: restls
+ plugin-opts:
+ host:
+ "www.microsoft.com" # Must be a TLS 1.3 server
+ # 应当是一个 TLS 1.3 服务器
+ password: [YOUR_RESTLS_PASSWORD]
+ version-hint: "tls13"
+ # Control your post-handshake traffic through restls-script
+ # Hide proxy behaviors like "tls in tls".
+ # see https://github.com/3andne/restls/blob/main/Restls-Script:%20Hide%20Your%20Proxy%20Traffic%20Behavior.md
+ # 用 restls 剧本来控制握手后的行为,隐藏"tls in tls"等特征
+ # 详情:https://github.com/3andne/restls/blob/main/Restls-Script:%20%E9%9A%90%E8%97%8F%E4%BD%A0%E7%9A%84%E4%BB%A3%E7%90%86%E8%A1%8C%E4%B8%BA.md
+ restls-script: "300?100<1,400~100,350~100,600~100,300~200,300~100"
+
+ - name: "ss-restls-tls12"
+ type: ss
+ server: [YOUR_SERVER_IP]
+ port: 443
+ cipher: chacha20-ietf-poly1305
+ password: [YOUR_SS_PASSWORD]
+ client-fingerprint:
+ chrome # One of: chrome, ios, firefox or safari
+ # 可以是 chrome, ios, firefox, safari 中的一个
+ plugin: restls
+ plugin-opts:
+ host:
+ "vscode.dev" # Must be a TLS 1.2 server
+ # 应当是一个 TLS 1.2 服务器
+ password: [YOUR_RESTLS_PASSWORD]
+ version-hint: "tls12"
+ restls-script: "1000?100<1,500~100,350~100,600~100,400~200"
+
+ # vmess
+ # cipher 支持 auto/aes-128-gcm/chacha20-poly1305/none
+ - name: "vmess"
+ type: vmess
+ server: server
+ port: 443
+ uuid: uuid
+ alterId: 32
+ cipher: auto
+ # udp: true
+ # tls: true
+ # fingerprint: xxxx
+ # client-fingerprint: chrome # Available: "chrome","firefox","safari","ios","random", currently only support TLS transport in TCP/GRPC/WS/HTTP for VLESS/Vmess and trojan.
+ # skip-cert-verify: true
+ # servername: example.com # priority over wss host
+ # network: ws
+ # ws-opts:
+ # path: /path
+ # headers:
+ # Host: v2ray.com
+ # max-early-data: 2048
+ # early-data-header-name: Sec-WebSocket-Protocol
+ # v2ray-http-upgrade: false
+ # v2ray-http-upgrade-fast-open: false
+
+ - name: "vmess-h2"
+ type: vmess
+ server: server
+ port: 443
+ uuid: uuid
+ alterId: 32
+ cipher: auto
+ network: h2
+ tls: true
+ # fingerprint: xxxx
+ h2-opts:
+ host:
+ - http.example.com
+ - http-alt.example.com
+ path: /
+
+ - name: "vmess-http"
+ type: vmess
+ server: server
+ port: 443
+ uuid: uuid
+ alterId: 32
+ cipher: auto
+ # udp: true
+ # network: http
+ # http-opts:
+ # method: "GET"
+ # path:
+ # - '/'
+ # - '/video'
+ # headers:
+ # Connection:
+ # - keep-alive
+ # ip-version: ipv4 # 设置使用 IP 类型偏好,可选:ipv4,ipv6,dual,默认值:dual
+
+ - name: vmess-grpc
+ server: server
+ port: 443
+ type: vmess
+ uuid: uuid
+ alterId: 32
+ cipher: auto
+ network: grpc
+ tls: true
+ # fingerprint: xxxx
+ servername: example.com
+ # skip-cert-verify: true
+ grpc-opts:
+ grpc-service-name: "example"
+ # ip-version: ipv4
+
+ # vless
+ - name: "vless-tcp"
+ type: vless
+ server: server
+ port: 443
+ uuid: uuid
+ network: tcp
+ servername: example.com # AKA SNI
+ # flow: xtls-rprx-direct # xtls-rprx-origin # enable XTLS
+ # skip-cert-verify: true
+ # fingerprint: xxxx
+ # client-fingerprint: random # Available: "chrome","firefox","safari","random","none"
+
+ - name: "vless-vision"
+ type: vless
+ server: server
+ port: 443
+ uuid: uuid
+ network: tcp
+ tls: true
+ udp: true
+ flow: xtls-rprx-vision
+ client-fingerprint: chrome
+ # fingerprint: xxxx
+ # skip-cert-verify: true
+
+ - name: "vless-reality-vision"
+ type: vless
+ server: server
+ port: 443
+ uuid: uuid
+ network: tcp
+ tls: true
+ udp: true
+ flow: xtls-rprx-vision
+ servername: www.microsoft.com # REALITY servername
+ reality-opts:
+ public-key: xxx
+ short-id: xxx # optional
+ client-fingerprint: chrome # cannot be empty
+
+ - name: "vless-reality-grpc"
+ type: vless
+ server: server
+ port: 443
+ uuid: uuid
+ network: grpc
+ tls: true
+ udp: true
+ flow:
+ # skip-cert-verify: true
+ client-fingerprint: chrome
+ servername: testingcf.jsdelivr.net
+ grpc-opts:
+ grpc-service-name: "grpc"
+ reality-opts:
+ public-key: CrrQSjAG_YkHLwvM2M-7XkKJilgL5upBKCp0od0tLhE
+ short-id: 10f897e26c4b9478
+
+ - name: "vless-ws"
+ type: vless
+ server: server
+ port: 443
+ uuid: uuid
+ udp: true
+ tls: true
+ network: ws
+ # client-fingerprint: random # Available: "chrome","firefox","safari","random","none"
+ servername: example.com # priority over wss host
+ # skip-cert-verify: true
+ # fingerprint: xxxx
+ ws-opts:
+ path: "/"
+ headers:
+ Host: example.com
+ # v2ray-http-upgrade: false
+ # v2ray-http-upgrade-fast-open: false
+
+ # Trojan
+ - name: "trojan"
+ type: trojan
+ server: server
+ port: 443
+ password: yourpsk
+ # client-fingerprint: random # Available: "chrome","firefox","safari","random","none"
+ # fingerprint: xxxx
+ # udp: true
+ # sni: example.com # aka server name
+ # alpn:
+ # - h2
+ # - http/1.1
+ # skip-cert-verify: true
+ # ss-opts: # like trojan-go's `shadowsocks` config
+ # enabled: false
+ # method: aes-128-gcm # aes-128-gcm/aes-256-gcm/chacha20-ietf-poly1305
+ # password: "example"
+
+ - name: trojan-grpc
+ server: server
+ port: 443
+ type: trojan
+ password: "example"
+ network: grpc
+ sni: example.com
+ # skip-cert-verify: true
+ # fingerprint: xxxx
+ udp: true
+ grpc-opts:
+ grpc-service-name: "example"
+
+ - name: trojan-ws
+ server: server
+ port: 443
+ type: trojan
+ password: "example"
+ network: ws
+ sni: example.com
+ # skip-cert-verify: true
+ # fingerprint: xxxx
+ udp: true
+ # ws-opts:
+ # path: /path
+ # headers:
+ # Host: example.com
+ # v2ray-http-upgrade: false
+ # v2ray-http-upgrade-fast-open: false
+
+ - name: "trojan-xtls"
+ type: trojan
+ server: server
+ port: 443
+ password: yourpsk
+ flow: "xtls-rprx-direct" # xtls-rprx-origin xtls-rprx-direct
+ flow-show: true
+ # udp: true
+ # sni: example.com # aka server name
+ # skip-cert-verify: true
+ # fingerprint: xxxx
+
+ #hysteria
+ - name: "hysteria"
+ type: hysteria
+ server: server.com
+ port: 443
+ # ports: 1000,2000-3000,5000 # port 不可省略
+ auth-str: yourpassword
+ # obfs: obfs_str
+ # alpn:
+ # - h3
+ protocol: udp # 支持 udp/wechat-video/faketcp
+ up: "30 Mbps" # 若不写单位,默认为 Mbps
+ down: "200 Mbps" # 若不写单位,默认为 Mbps
+ # sni: server.com
+ # skip-cert-verify: false
+ # recv-window-conn: 12582912
+ # recv-window: 52428800
+ # ca: "./my.ca"
+ # ca-str: "xyz"
+ # disable-mtu-discovery: false
+ # fingerprint: xxxx
+ # fast-open: true # 支持 TCP 快速打开,默认为 false
+
+ #hysteria2
+ - name: "hysteria2"
+ type: hysteria2
+ server: server.com
+ port: 443
+ # ports: 1000,2000-3000,5000 # port 不可省略
+ # hop-interval: 15
+ # up 和 down 均不写或为 0 则使用 BBR 流控
+ # up: "30 Mbps" # 若不写单位,默认为 Mbps
+ # down: "200 Mbps" # 若不写单位,默认为 Mbps
+ password: yourpassword
+ # obfs: salamander # 默认为空,如果填写则开启 obfs,目前仅支持 salamander
+ # obfs-password: yourpassword
+ # sni: server.com
+ # skip-cert-verify: false
+ # fingerprint: xxxx
+ # alpn:
+ # - h3
+ # ca: "./my.ca"
+ # ca-str: "xyz"
+
+ # wireguard
+ - name: "wg"
+ type: wireguard
+ server: 162.159.192.1
+ port: 2480
+ ip: 172.16.0.2
+ ipv6: fd01:5ca1:ab1e:80fa:ab85:6eea:213f:f4a5
+ public-key: Cr8hWlKvtDt7nrvf+f0brNQQzabAqrjfBvas9pmowjo=
+ # pre-shared-key: 31aIhAPwktDGpH4JDhA8GNvjFXEf/a6+UaQRyOAiyfM=
+ private-key: eCtXsJZ27+4PbhDkHnB923tkUn2Gj59wZw5wFA75MnU=
+ udp: true
+ reserved: "U4An"
+ # 数组格式也是合法的
+ # reserved: [209,98,59]
+ # 一个出站代理的标识。当值不为空时,将使用指定的 proxy 发出连接
+ # dialer-proxy: "ss1"
+ # remote-dns-resolve: true # 强制 dns 远程解析,默认值为 false
+ # dns: [ 1.1.1.1, 8.8.8.8 ] # 仅在 remote-dns-resolve 为 true 时生效
+ # refresh-server-ip-interval: 60 # 重新解析server ip的间隔,单位为秒,默认值为0即仅第一次链接时解析server域名,仅应在server域名对应的IP会发生变化时启用该选项(如家宽ddns)
+ # 如果 peers 不为空,该段落中的 allowed-ips 不可为空;前面段落的 server,port,public-key,pre-shared-key 均会被忽略,但 private-key 会被保留且只能在顶层指定
+ # peers:
+ # - server: 162.159.192.1
+ # port: 2480
+ # public-key: Cr8hWlKvtDt7nrvf+f0brNQQzabAqrjfBvas9pmowjo=
+ # # pre-shared-key: 31aIhAPwktDGpH4JDhA8GNvjFXEf/a6+UaQRyOAiyfM=
+ # allowed-ips: ['0.0.0.0/0']
+ # reserved: [209,98,59]
+ # 如果存在则开启AmneziaWG功能
+ # amnezia-wg-option:
+ # jc: 5
+ # jmin: 500
+ # jmax: 501
+ # s1: 30
+ # s2: 40
+ # h1: 123456
+ # h2: 67543
+ # h4: 32345
+ # h3: 123123
+
+ # tuic
+ - name: tuic
+ server: www.example.com
+ port: 10443
+ type: tuic
+ # tuicV4 必须填写 token(不可同时填写 uuid 和 password)
+ token: TOKEN
+ # tuicV5 必须填写 uuid 和 password(不可同时填写 token)
+ uuid: 00000000-0000-0000-0000-000000000001
+ password: PASSWORD_1
+ # ip: 127.0.0.1 # for overwriting the DNS lookup result of the server address set in option 'server'
+ # heartbeat-interval: 10000
+ # alpn: [h3]
+ disable-sni: true
+ reduce-rtt: true
+ request-timeout: 8000
+ udp-relay-mode: native # Available: "native", "quic". Default: "native"
+ # congestion-controller: bbr # Available: "cubic", "new_reno", "bbr". Default: "cubic"
+ # cwnd: 10 # default: 32
+ # max-udp-relay-packet-size: 1500
+ # fast-open: true
+ # skip-cert-verify: true
+ # max-open-streams: 20 # default 100, too many open streams may hurt performance
+ # sni: example.com
+ #
+ # meta 和 sing-box 私有扩展,将 ss-uot 用于 udp 中继,开启此选项后 udp-relay-mode 将失效
+ # 警告,与原版 tuic 不兼容!!!
+ # udp-over-stream: false
+ # udp-over-stream-version: 1
+
+ # ShadowsocksR
+ # The supported ciphers (encryption methods): all stream ciphers in ss
+ # The supported obfses:
+ # plain http_simple http_post
+ # random_head tls1.2_ticket_auth tls1.2_ticket_fastauth
+ # The supported protocols:
+ # origin auth_sha1_v4 auth_aes128_md5
+ # auth_aes128_sha1 auth_chain_a auth_chain_b
+ - name: "ssr"
+ type: ssr
+ server: server
+ port: 443
+ cipher: chacha20-ietf
+ password: "password"
+ obfs: tls1.2_ticket_auth
+ protocol: auth_sha1_v4
+ # obfs-param: domain.tld
+ # protocol-param: "#"
+ # udp: true
+
+ - name: "ssh-out"
+ type: ssh
+
+ server: 127.0.0.1
+ port: 22
+ username: root
+ password: password
+ privateKey: path
+
+# dns 出站会将请求劫持到内部 dns 模块,所有请求均在内部处理
+ - name: "dns-out"
+ type: dns
+proxy-groups:
+ # 代理链,目前 relay 可以支持 udp 的只有 vmess/vless/trojan/ss/ssr/tuic
+ # wireguard 目前不支持在 relay 中使用,请使用 proxy 中的 dialer-proxy 配置项
+ # Traffic: mihomo <-> http <-> vmess <-> ss1 <-> ss2 <-> Internet
+ - name: "relay"
+ type: relay
+ proxies:
+ - http
+ - vmess
+ - ss1
+ - ss2
+
+ # url-test 将按照 url 测试结果使用延迟最低节点
+ - name: "auto"
+ type: url-test
+ proxies:
+ - ss1
+ - ss2
+ - vmess1
+ # tolerance: 150
+ # lazy: true
+ # expected-status: 204 # 当健康检查返回状态码与期望值不符时,认为节点不可用
+ url: "https://cp.cloudflare.com/generate_204"
+ interval: 300
+
+ # fallback 将按照 url 测试结果按照节点顺序选择
+ - name: "fallback-auto"
+ type: fallback
+ proxies:
+ - ss1
+ - ss2
+ - vmess1
+ url: "https://cp.cloudflare.com/generate_204"
+ interval: 300
+
+ # load-balance 将按照算法随机选择节点
+ - name: "load-balance"
+ type: load-balance
+ proxies:
+ - ss1
+ - ss2
+ - vmess1
+ url: "https://cp.cloudflare.com/generate_204"
+ interval: 300
+ # strategy: consistent-hashing # 可选 round-robin 和 sticky-sessions
+
+ # select 用户自行选择节点
+ - name: Proxy
+ type: select
+ # disable-udp: true
+ proxies:
+ - ss1
+ - ss2
+ - vmess1
+ - auto
+
+ # 配置指定 interface-name 和 fwmark 的 DIRECT
+ - name: en1
+ type: select
+ interface-name: en1
+ routing-mark: 6667
+ proxies:
+ - DIRECT
+
+ - name: UseProvider
+ type: select
+ filter: "HK|TW" # 正则表达式,过滤 provider1 中节点名包含 HK 或 TW
+ use:
+ - provider1
+ proxies:
+ - Proxy
+ - DIRECT
+
+# Mihomo 格式的节点或支持 *ray 的分享格式
+proxy-providers:
+ provider1:
+ type: http # http 的 path 可空置,默认储存路径为 homedir 的 proxies 文件夹,文件名为 url 的 md5
+ url: "url"
+ interval: 3600
+ path: ./provider1.yaml # 默认只允许存储在 mihomo 的 Home Dir,如果想存储到任意位置,添加环境变量 SKIP_SAFE_PATH_CHECK=1
+ proxy: DIRECT
+ header:
+ User-Agent:
+ - "Clash/v1.18.0"
+ - "mihomo/1.18.3"
+ # Accept:
+ # - 'application/vnd.github.v3.raw'
+ # Authorization:
+ # - 'token 1231231'
+ health-check:
+ enable: true
+ interval: 600
+ # lazy: true
+ url: https://cp.cloudflare.com/generate_204
+ # expected-status: 204 # 当健康检查返回状态码与期望值不符时,认为节点不可用
+ override: # 覆写节点加载时的一些配置项
+ skip-cert-verify: true
+ udp: true
+ # down: "50 Mbps"
+ # up: "10 Mbps"
+ # dialer-proxy: proxy
+ # interface-name: tailscale0
+ # routing-mark: 233
+ # ip-version: ipv4-prefer
+ # additional-prefix: "[provider1]"
+ # additional-suffix: "test"
+ # # 名字替换,支持正则表达式
+ # proxy-name:
+ # - pattern: "test"
+ # target: "TEST"
+ # - pattern: "IPLC-(.*?)倍"
+ # target: "iplc x $1"
+
+ test:
+ type: file
+ path: /test.yaml
+ health-check:
+ enable: true
+ interval: 36000
+ url: https://cp.cloudflare.com/generate_204
+rule-providers:
+ rule1:
+ behavior: classical # domain ipcidr
+ interval: 259200
+ path: /path/to/save/file.yaml # 默认只允许存储在 mihomo 的 Home Dir,如果想存储到任意位置,添加环境变量 SKIP_SAFE_PATH_CHECK=1
+ type: http # http 的 path 可空置,默认储存路径为 homedir 的 rules 文件夹,文件名为 url 的 md5
+ url: "url"
+ proxy: DIRECT
+ rule2:
+ behavior: classical
+ interval: 259200
+ path: /path/to/save/file.yaml
+ type: file
+ rule3:
+ # mrs类型ruleset,目前仅支持domain和ipcidr(即不支持classical),
+ #
+ # 对于behavior=domain:
+ # - format=yaml 可以通过“mihomo convert-ruleset domain yaml XXX.yaml XXX.mrs”转换到mrs格式
+ # - format=text 可以通过“mihomo convert-ruleset domain text XXX.text XXX.mrs”转换到mrs格式
+ # - XXX.mrs 可以通过"mihomo convert-ruleset domain mrs XXX.mrs XXX.text"转换回text格式(暂不支持转换回yaml格式)
+ #
+ # 对于behavior=ipcidr:
+ # - format=yaml 可以通过“mihomo convert-ruleset ipcidr yaml XXX.yaml XXX.mrs”转换到mrs格式
+ # - format=text 可以通过“mihomo convert-ruleset ipcidr text XXX.text XXX.mrs”转换到mrs格式
+ # - XXX.mrs 可以通过"mihomo convert-ruleset ipcidr mrs XXX.mrs XXX.text"转换回text格式(暂不支持转换回yaml格式)
+ #
+ type: http
+ url: "url"
+ format: mrs
+ behavior: domain
+ path: /path/to/save/file.mrs
+rules:
+ - RULE-SET,rule1,REJECT
+ - IP-ASN,1,PROXY
+ - DOMAIN-REGEX,^abc,DIRECT
+ - DOMAIN-SUFFIX,baidu.com,DIRECT
+ - DOMAIN-KEYWORD,google,ss1
+ - IP-CIDR,1.1.1.1/32,ss1
+ - IP-CIDR6,2409::/64,DIRECT
+ # 当满足条件是 TCP 或 UDP 流量时,使用名为 sub-rule-name1 的规则集
+ - SUB-RULE,(OR,((NETWORK,TCP),(NETWORK,UDP))),sub-rule-name1
+ - SUB-RULE,(AND,((NETWORK,UDP))),sub-rule-name2
+# 定义多个子规则集,规则将以分叉匹配,使用 SUB-RULE 使用
+# google.com(not match)--> baidu.com(match)
+# / |
+# / |
+# https://baidu.com --> rule1 --> rule2 --> sub-rule-name1(match tcp) 使用 DIRECT
+#
+#
+# google.com(not match)--> baidu.com(not match)
+# / |
+# / |
+# dns 1.1.1.1 --> rule1 --> rule2 --> sub-rule-name1(match udp) sub-rule-name2(match udp)
+# |
+# |
+# 使用 REJECT <-- 1.1.1.1/32(match)
+#
+
+sub-rules:
+ sub-rule-name1:
+ - DOMAIN,google.com,ss1
+ - DOMAIN,baidu.com,DIRECT
+ sub-rule-name2:
+ - IP-CIDR,1.1.1.1/32,REJECT
+ - IP-CIDR,8.8.8.8/32,ss1
+ - DOMAIN,dns.alidns.com,REJECT
+
+# 流量入站
+listeners:
+ - name: socks5-in-1
+ type: socks
+ port: 10808
+ #listen: 0.0.0.0 # 默认监听 0.0.0.0
+ # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules
+ # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理
+ # udp: false # 默认 true
+ # users: # 如果不填写users项,则遵从全局authentication设置,如果填写会忽略全局设置, 如想跳过该入站的验证可填写 users: []
+ # - username: aaa
+ # password: aaa
+
+ - name: http-in-1
+ type: http
+ port: 10809
+ listen: 0.0.0.0
+ # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules
+ # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错)
+ # users: # 如果不填写users项,则遵从全局authentication设置,如果填写会忽略全局设置, 如想跳过该入站的验证可填写 users: []
+ # - username: aaa
+ # password: aaa
+
+ - name: mixed-in-1
+ type: mixed # HTTP(S) 和 SOCKS 代理混合
+ port: 10810
+ listen: 0.0.0.0
+ # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules
+ # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错)
+ # udp: false # 默认 true
+ # users: # 如果不填写users项,则遵从全局authentication设置,如果填写会忽略全局设置, 如想跳过该入站的验证可填写 users: []
+ # - username: aaa
+ # password: aaa
+
+ - name: reidr-in-1
+ type: redir
+ port: 10811
+ listen: 0.0.0.0
+ # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules
+ # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错)
+
+ - name: tproxy-in-1
+ type: tproxy
+ port: 10812
+ listen: 0.0.0.0
+ # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules
+ # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错)
+ # udp: false # 默认 true
+
+ - name: shadowsocks-in-1
+ type: shadowsocks
+ port: 10813
+ listen: 0.0.0.0
+ # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules
+ # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错)
+ password: vlmpIPSyHH6f4S8WVPdRIHIlzmB+GIRfoH3aNJ/t9Gg=
+ cipher: 2022-blake3-aes-256-gcm
+
+ - name: vmess-in-1
+ type: vmess
+ port: 10814
+ listen: 0.0.0.0
+ # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules
+ # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错)
+ users:
+ - username: 1
+ uuid: 9d0cb9d0-964f-4ef6-897d-6c6b3ccf9e68
+ alterId: 1
+ # ws-path: "/" # 如果不为空则开启 websocket 传输层
+ # 下面两项如果填写则开启 tls(需要同时填写)
+ # certificate: ./server.crt
+ # private-key: ./server.key
+
+ - name: tuic-in-1
+ type: tuic
+ port: 10815
+ listen: 0.0.0.0
+ # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules
+ # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错)
+ # token: # tuicV4 填写(可以同时填写 users)
+ # - TOKEN
+ # users: # tuicV5 填写(可以同时填写 token)
+ # 00000000-0000-0000-0000-000000000000: PASSWORD_0
+ # 00000000-0000-0000-0000-000000000001: PASSWORD_1
+ # certificate: ./server.crt
+ # private-key: ./server.key
+ # congestion-controller: bbr
+ # max-idle-time: 15000
+ # authentication-timeout: 1000
+ # alpn:
+ # - h3
+ # max-udp-relay-packet-size: 1500
+
+ - name: tunnel-in-1
+ type: tunnel
+ port: 10816
+ listen: 0.0.0.0
+ # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules
+ # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错)
+ network: [tcp, udp]
+ target: target.com
+
+ - name: tun-in-1
+ type: tun
+ # rule: sub-rule-name1 # 默认使用 rules,如果未找到 sub-rule 则直接使用 rules
+ # proxy: proxy # 如果不为空则直接将该入站流量交由指定 proxy 处理 (当 proxy 不为空时,这里的 proxy 名称必须合法,否则会出错)
+ stack: system # gvisor / mixed
+ dns-hijack:
+ - 0.0.0.0:53 # 需要劫持的 DNS
+ # auto-detect-interface: false # 自动识别出口网卡
+ # auto-route: false # 配置路由表
+ # mtu: 9000 # 最大传输单元
+ inet4-address: # 必须手动设置 ipv4 地址段
+ - 198.19.0.1/30
+ inet6-address: # 必须手动设置 ipv6 地址段
+ - "fdfe:dcba:9877::1/126"
+ # strict-route: true # 将所有连接路由到 tun 来防止泄漏,但你的设备将无法其他设备被访问
+ # inet4-route-address: # 启用 auto-route 时使用自定义路由而不是默认路由
+ # - 0.0.0.0/1
+ # - 128.0.0.0/1
+ # inet6-route-address: # 启用 auto-route 时使用自定义路由而不是默认路由
+ # - "::/1"
+ # - "8000::/1"
+ # endpoint-independent-nat: false # 启用独立于端点的 NAT
+ # include-uid: # UID 规则仅在 Linux 下被支持,并且需要 auto-route
+ # - 0
+ # include-uid-range: # 限制被路由的的用户范围
+ # - 1000:99999
+ # exclude-uid: # 排除路由的的用户
+ # - 1000
+ # exclude-uid-range: # 排除路由的的用户范围
+ # - 1000:99999
+
+ # Android 用户和应用规则仅在 Android 下被支持
+ # 并且需要 auto-route
+
+ # include-android-user: # 限制被路由的 Android 用户
+ # - 0
+ # - 10
+ # include-package: # 限制被路由的 Android 应用包名
+ # - com.android.chrome
+ # exclude-package: # 排除被路由的 Android 应用包名
+ # - com.android.captiveportallogin
+# 入口配置与 Listener 等价,传入流量将和 socks,mixed 等入口一样按照 mode 所指定的方式进行匹配处理
+# shadowsocks,vmess 入口配置(传入流量将和 socks,mixed 等入口一样按照 mode 所指定的方式进行匹配处理)
+# ss-config: ss://2022-blake3-aes-256-gcm:vlmpIPSyHH6f4S8WVPdRIHIlzmB+GIRfoH3aNJ/t9Gg=@:23456
+# vmess-config: vmess://1:9d0cb9d0-964f-4ef6-897d-6c6b3ccf9e68@:12345
+
+# tuic 服务器入口(传入流量将和 socks,mixed 等入口一样按照 mode 所指定的方式进行匹配处理)
+# tuic-server:
+# enable: true
+# listen: 127.0.0.1:10443
+# token: # tuicV4 填写(可以同时填写 users)
+# - TOKEN
+# users: # tuicV5 填写(可以同时填写 token)
+# 00000000-0000-0000-0000-000000000000: PASSWORD_0
+# 00000000-0000-0000-0000-000000000001: PASSWORD_1
+# certificate: ./server.crt
+# private-key: ./server.key
+# congestion-controller: bbr
+# max-idle-time: 15000
+# authentication-timeout: 1000
+# alpn:
+# - h3
+# max-udp-relay-packet-size: 1500
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/docs/logo.png b/Android-kotlin-Code/core/src/foss/golang/clash/docs/logo.png
new file mode 100755
index 0000000..c624b94
Binary files /dev/null and b/Android-kotlin-Code/core/src/foss/golang/clash/docs/logo.png differ
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/flake.nix b/Android-kotlin-Code/core/src/foss/golang/clash/flake.nix
new file mode 100644
index 0000000..afe6e1c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/flake.nix
@@ -0,0 +1,61 @@
+{
+ description = "Another Mihomo Kernel";
+
+ inputs.nixpkgs.url = "github:NixOS/nixpkgs/master";
+
+ inputs.utils.url = "github:numtide/flake-utils";
+
+ outputs = { self, nixpkgs, utils }:
+ utils.lib.eachDefaultSystem
+ (system:
+ let
+ pkgs = import nixpkgs {
+ inherit system;
+ overlays = [ self.overlay ];
+ };
+ in
+ rec {
+ packages.default = pkgs.mihomo-meta;
+ }
+ ) //
+ (
+ let version = nixpkgs.lib.substring 0 8 self.lastModifiedDate or self.lastModified or "19700101"; in
+ {
+ overlay = final: prev: {
+
+ mihomo-meta = final.buildGo119Module {
+ pname = "mihomo-meta";
+ inherit version;
+ src = ./.;
+
+ vendorSha256 = "sha256-W5oiPtTRin0731QQWr98xZ2Vpk97HYcBtKoi1OKZz+w=";
+
+ # Do not build testing suit
+ excludedPackages = [ "./test" ];
+
+ CGO_ENABLED = 0;
+
+ ldflags = [
+ "-s"
+ "-w"
+ "-X github.com/metacubex/mihomo/constant.Version=dev-${version}"
+ "-X github.com/metacubex/mihomo/constant.BuildTime=${version}"
+ ];
+
+ tags = [
+ "with_gvisor"
+ ];
+
+ # Network required
+ doCheck = false;
+
+ postInstall = ''
+ mv $out/bin/mihomo $out/bin/mihomo-meta
+ '';
+
+ };
+ };
+ }
+ );
+}
+
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/go.mod b/Android-kotlin-Code/core/src/foss/golang/clash/go.mod
new file mode 100644
index 0000000..a223cf7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/go.mod
@@ -0,0 +1,119 @@
+module github.com/metacubex/mihomo
+
+go 1.20
+
+require (
+ github.com/3andne/restls-client-go v0.1.6
+ github.com/bahlo/generic-list-go v0.2.0
+ github.com/coreos/go-iptables v0.8.0
+ github.com/dlclark/regexp2 v1.11.4
+ github.com/go-chi/chi/v5 v5.1.0
+ github.com/go-chi/render v1.0.3
+ github.com/gobwas/ws v1.4.0
+ github.com/gofrs/uuid/v5 v5.3.0
+ github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475
+ github.com/klauspost/compress v1.17.9
+ github.com/klauspost/cpuid/v2 v2.2.8
+ github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40
+ github.com/mdlayher/netlink v1.7.2
+ github.com/metacubex/amneziawg-go v0.0.0-20240922133038-fdf3a4d5a4ab
+ github.com/metacubex/bbolt v0.0.0-20240822011022-aed6d4850399
+ github.com/metacubex/chacha v0.1.0
+ github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759
+ github.com/metacubex/quic-go v0.47.1-0.20240909010619-6b38f24bfcc4
+ github.com/metacubex/randv2 v0.2.0
+ github.com/metacubex/sing-quic v0.0.0-20240827003841-cd97758ed8b4
+ github.com/metacubex/sing-shadowsocks v0.2.8
+ github.com/metacubex/sing-shadowsocks2 v0.2.2
+ github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1
+ github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9
+ github.com/metacubex/sing-wireguard v0.0.0-20240924052438-b0976fc59ea3
+ github.com/metacubex/tfo-go v0.0.0-20241006021335-daedaf0ca7aa
+ github.com/metacubex/utls v1.6.6
+ github.com/metacubex/wireguard-go v0.0.0-20240922131502-c182e7471181
+ github.com/miekg/dns v1.1.62
+ github.com/mroth/weightedrand/v2 v2.1.0
+ github.com/openacid/low v0.1.21
+ github.com/oschwald/maxminddb-golang v1.12.0
+ github.com/puzpuzpuz/xsync/v3 v3.4.0
+ github.com/sagernet/cors v1.2.1
+ github.com/sagernet/fswatch v0.1.1
+ github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a
+ github.com/sagernet/sing v0.5.0-alpha.13
+ github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6
+ github.com/sagernet/sing-shadowtls v0.1.4
+ github.com/samber/lo v1.47.0
+ github.com/shirou/gopsutil/v3 v3.24.5
+ github.com/sirupsen/logrus v1.9.3
+ github.com/stretchr/testify v1.9.0
+ github.com/vmihailenco/msgpack/v5 v5.4.1
+ github.com/wk8/go-ordered-map/v2 v2.1.8
+ gitlab.com/go-extension/aes-ccm v0.0.0-20230221065045-e58665ef23c7
+ go.uber.org/automaxprocs v1.6.0
+ go4.org/netipx v0.0.0-20231129151722-fdeea329fbba
+ golang.org/x/crypto v0.28.0
+ golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e // lastest version compatible with golang1.20
+ golang.org/x/net v0.30.0
+ golang.org/x/sys v0.26.0
+ google.golang.org/protobuf v1.34.2
+ gopkg.in/yaml.v3 v3.0.1
+ lukechampine.com/blake3 v1.3.0
+)
+
+require (
+ github.com/RyuaNerin/go-krypto v1.2.4 // indirect
+ github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344 // indirect
+ github.com/ajg/form v1.5.1 // indirect
+ github.com/andybalholm/brotli v1.0.6 // indirect
+ github.com/buger/jsonparser v1.1.1 // indirect
+ github.com/cloudflare/circl v1.3.7 // indirect
+ github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9 // indirect
+ github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391 // indirect
+ github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1 // indirect
+ github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010 // indirect
+ github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/gaukas/godicttls v0.0.4 // indirect
+ github.com/go-ole/go-ole v1.3.0 // indirect
+ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
+ github.com/gobwas/httphead v0.1.0 // indirect
+ github.com/gobwas/pool v0.2.1 // indirect
+ github.com/google/btree v1.1.2 // indirect
+ github.com/google/go-cmp v0.6.0 // indirect
+ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect
+ github.com/hashicorp/yamux v0.1.1 // indirect
+ github.com/josharian/native v1.1.0 // indirect
+ github.com/kr/text v0.2.0 // indirect
+ github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
+ github.com/mailru/easyjson v0.7.7 // indirect
+ github.com/mdlayher/socket v0.4.1 // indirect
+ github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec // indirect
+ github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7 // indirect
+ github.com/onsi/ginkgo/v2 v2.9.5 // indirect
+ github.com/pierrec/lz4/v4 v4.1.14 // indirect
+ github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
+ github.com/quic-go/qpack v0.4.0 // indirect
+ github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
+ github.com/sagernet/nftables v0.3.0-beta.4 // indirect
+ github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 // indirect
+ github.com/shoenig/go-m1cpu v0.1.6 // indirect
+ github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b // indirect
+ github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c // indirect
+ github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e // indirect
+ github.com/tklauser/go-sysconf v0.3.12 // indirect
+ github.com/tklauser/numcpus v0.6.1 // indirect
+ github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 // indirect
+ github.com/vishvananda/netns v0.0.4 // indirect
+ github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
+ github.com/yusufpapurcu/wmi v1.2.4 // indirect
+ gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec // indirect
+ go.uber.org/mock v0.4.0 // indirect
+ golang.org/x/mod v0.20.0 // indirect
+ golang.org/x/sync v0.8.0 // indirect
+ golang.org/x/text v0.19.0 // indirect
+ golang.org/x/time v0.5.0 // indirect
+ golang.org/x/tools v0.24.0 // indirect
+)
+
+replace github.com/sagernet/sing => github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/go.sum b/Android-kotlin-Code/core/src/foss/golang/clash/go.sum
new file mode 100644
index 0000000..2b3bba6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/go.sum
@@ -0,0 +1,285 @@
+github.com/3andne/restls-client-go v0.1.6 h1:tRx/YilqW7iHpgmEL4E1D8dAsuB0tFF3uvncS+B6I08=
+github.com/3andne/restls-client-go v0.1.6/go.mod h1:iEdTZNt9kzPIxjIGSMScUFSBrUH6bFRNg0BWlP4orEY=
+github.com/RyuaNerin/elliptic2 v1.0.0/go.mod h1:wWB8fWrJI/6EPJkyV/r1Rj0hxUgrusmqSj8JN6yNf/A=
+github.com/RyuaNerin/go-krypto v1.2.4 h1:mXuNdK6M317aPV0llW6Xpjbo4moOlPF7Yxz4tb4b4Go=
+github.com/RyuaNerin/go-krypto v1.2.4/go.mod h1:QqCYkoutU3yInyD9INt2PGolVRsc3W4oraQadVGXJ/8=
+github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344 h1:cDVUiFo+npB0ZASqnw4q90ylaVAbnYyx0JYqK4YcGok=
+github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344/go.mod h1:9pIqrY6SXNL8vjRQE5Hd/OL5GyK/9MrGUWs87z/eFfk=
+github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
+github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
+github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI=
+github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
+github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=
+github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=
+github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
+github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
+github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
+github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
+github.com/coreos/go-iptables v0.8.0 h1:MPc2P89IhuVpLI7ETL/2tx3XZ61VeICZjYqDEgNsPRc=
+github.com/coreos/go-iptables v0.8.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
+github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9 h1:/5RkVc9Rc81XmMyVqawCiDyrBHZbLAZgTTCqou4mwj8=
+github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9/go.mod h1:hkIFzoiIPZYxdFOOLyDho59b7SrDfo+w3h+yWdlg45I=
+github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391 h1:8j2RH289RJplhA6WfdaPqzg1MjH2K8wX5e0uhAxrw2g=
+github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391/go.mod h1:K2R7GhgxrlJzHw2qiPWsCZXf/kXEJN9PLnQK73Ll0po=
+github.com/ericlagergren/saferand v0.0.0-20220206064634-960a4dd2bc5c h1:RUzBDdZ+e/HEe2Nh8lYsduiPAZygUfVXJn0Ncj5sHMg=
+github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1 h1:tlDMEdcPRQKBEz5nGDMvswiajqh7k8ogWRlhRwKy5mY=
+github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1/go.mod h1:4RfsapbGx2j/vU5xC/5/9qB3kn9Awp1YDiEnN43QrJ4=
+github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010 h1:fuGucgPk5dN6wzfnxl3D0D3rVLw4v2SbBT9jb4VnxzA=
+github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010/go.mod h1:JtBcj7sBuTTRupn7c2bFspMDIObMJsVK8TeUvpShPok=
+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/gaukas/godicttls v0.0.4 h1:NlRaXb3J6hAnTmWdsEKb9bcSBD6BvcIjdGdeb0zfXbk=
+github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67deKr9/NCI=
+github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
+github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-chi/render v1.0.3 h1:AsXqd2a1/INaIfUSKq3G5uA8weYx20FOsM7uSoCyyt4=
+github.com/go-chi/render v1.0.3/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0=
+github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
+github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU=
+github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
+github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og=
+github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
+github.com/gobwas/ws v1.4.0 h1:CTaoG1tojrh4ucGPcoJFiAQUAsEWekEWvLy7GsVNqGs=
+github.com/gobwas/ws v1.4.0/go.mod h1:G3gNqMNtPppf5XUz7O4shetPpcZ1VJ7zt18dlUeakrc=
+github.com/gofrs/uuid/v5 v5.3.0 h1:m0mUMr+oVYUdxpMLgSYCZiXe7PuVPnI94+OMeVBNedk=
+github.com/gofrs/uuid/v5 v5.3.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
+github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/tink/go v1.6.1 h1:t7JHqO8Ath2w2ig5vjwQYJzhGEZymedQc90lQXUBa4I=
+github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
+github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475 h1:hxST5pwMBEOWmxpkX20w9oZG+hXdhKmAIPQ3NGGAxas=
+github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475/go.mod h1:KclMyHxX06VrVr0DJmeFSUb1ankt7xTfoOA35pCkoic=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/josharian/native v1.0.1-0.20221213033349-c1e37c09b531/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA=
+github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
+github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
+github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
+github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 h1:EnfXoSqDfSNJv0VBNqY/88RNnhSGYkrHaO0mmFGbVsc=
+github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40/go.mod h1:vy1vK6wD6j7xX6O6hXe621WabdtNkou2h7uRtTfRMyg=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g=
+github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw=
+github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U=
+github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA=
+github.com/metacubex/amneziawg-go v0.0.0-20240922133038-fdf3a4d5a4ab h1:Chbw+/31UC14YFNr78pESt5Vowlc62zziw05JCUqoL4=
+github.com/metacubex/amneziawg-go v0.0.0-20240922133038-fdf3a4d5a4ab/go.mod h1:xVKK8jC5Sd3hfh7WjmCq+HorehIbrBijaUWmcuKjPcI=
+github.com/metacubex/bbolt v0.0.0-20240822011022-aed6d4850399 h1:oBowHVKZycNtAFbZ6avaCSZJYeme2Nrj+4RpV2cNJig=
+github.com/metacubex/bbolt v0.0.0-20240822011022-aed6d4850399/go.mod h1:4xcieuIK+M4bGQmQYZVqEaIYqjS1ahO4kXG7EmDgEro=
+github.com/metacubex/chacha v0.1.0 h1:tg9RSJ18NvL38cCWNyYH1eiG6qDCyyXIaTLQthon0sc=
+github.com/metacubex/chacha v0.1.0/go.mod h1:Djn9bPZxLTXbJFSeyo0/qzEzQI+gUSSzttuzZM75GH8=
+github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759 h1:cjd4biTvOzK9ubNCCkQ+ldc4YSH/rILn53l/xGBFHHI=
+github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759/go.mod h1:UHOv2xu+RIgLwpXca7TLrXleEd4oR3sPatW6IF8wU88=
+github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec h1:HxreOiFTUrJXJautEo8rnE1uKTVGY8wtZepY1Tii/Nc=
+github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec/go.mod h1:8BVmQ+3cxjqzWElafm24rb2Ae4jRI6vAXNXWqWjfrXw=
+github.com/metacubex/quic-go v0.47.1-0.20240909010619-6b38f24bfcc4 h1:CgdUBRxmNlxEGkp35HwvgQ10jwOOUJKWdOxpi8yWi8o=
+github.com/metacubex/quic-go v0.47.1-0.20240909010619-6b38f24bfcc4/go.mod h1:Y7yRGqFE6UQL/3aKPYmiYdjfVkeujJaStP4+jiZMcN8=
+github.com/metacubex/randv2 v0.2.0 h1:uP38uBvV2SxYfLj53kuvAjbND4RUDfFJjwr4UigMiLs=
+github.com/metacubex/randv2 v0.2.0/go.mod h1:kFi2SzrQ5WuneuoLLCMkABtiBu6VRrMrWFqSPyj2cxY=
+github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297 h1:YG/JkwGPbca5rUtEMHIu8ZuqzR7BSVm1iqY8hNoMeMA=
+github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
+github.com/metacubex/sing-quic v0.0.0-20240827003841-cd97758ed8b4 h1:HobpULaPK6OoxrHMmgcwLkwwIduXVmwdcznwUfH1GQM=
+github.com/metacubex/sing-quic v0.0.0-20240827003841-cd97758ed8b4/go.mod h1:g7Mxj7b7zm7YVqD975mk/hSmrb0A0G4bVvIMr2MMzn8=
+github.com/metacubex/sing-shadowsocks v0.2.8 h1:wIhlaigswzjPw4hej75sEvWte3QR0+AJRafgwBHO5B4=
+github.com/metacubex/sing-shadowsocks v0.2.8/go.mod h1:X3x88XtJpBxG0W0/ECOJL6Ib0SJ3xdniAkU/6/RMWU0=
+github.com/metacubex/sing-shadowsocks2 v0.2.2 h1:eaf42uVx4Lr21S6MDYs0ZdTvGA0GEhDpb9no4+gdXPo=
+github.com/metacubex/sing-shadowsocks2 v0.2.2/go.mod h1:BhOug03a/RbI7y6hp6q+6ITM1dXjnLTmeWBHSTwvv2Q=
+github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1 h1:ypfofGDZbP8p3Y4P/m74JYu7sQViesi3c8nbmT6cS0Y=
+github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1/go.mod h1:olbEx9yVcaw5tHTNlRamRoxmMKcvDvcVS1YLnQGzvWE=
+github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9 h1:OAXiCosqY8xKDp3pqTW3qbrCprZ1l6WkrXSFSCwyY4I=
+github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9/go.mod h1:olVkD4FChQ5gKMHG4ZzuD7+fMkJY1G8vwOKpRehjrmY=
+github.com/metacubex/sing-wireguard v0.0.0-20240924052438-b0976fc59ea3 h1:xg71VmzLS6ByAzi/57phwDvjE+dLLs+ozH00k4DnOns=
+github.com/metacubex/sing-wireguard v0.0.0-20240924052438-b0976fc59ea3/go.mod h1:6nitcmzPDL3MXnLdhu6Hm126Zk4S1fBbX3P7jxUxSFw=
+github.com/metacubex/tfo-go v0.0.0-20241006021335-daedaf0ca7aa h1:9mcjV+RGZVC3reJBNDjjNPyS8PmFG97zq56X7WNaFO4=
+github.com/metacubex/tfo-go v0.0.0-20241006021335-daedaf0ca7aa/go.mod h1:4tLB5c8U0CxpkFM+AJJB77jEaVDbLH5XQvy42vAGsWw=
+github.com/metacubex/utls v1.6.6 h1:3D12YKHTf2Z41UPhQU2dWerNWJ5TVQD9gKoQ+H+iLC8=
+github.com/metacubex/utls v1.6.6/go.mod h1:+WLFUnXjcpdxXCnyX25nggw8C6YonZ8zOK2Zm/oRvdo=
+github.com/metacubex/wireguard-go v0.0.0-20240922131502-c182e7471181 h1:hJLQviGySBuaynlCwf/oYgIxbVbGRUIKZCxdya9YrbQ=
+github.com/metacubex/wireguard-go v0.0.0-20240922131502-c182e7471181/go.mod h1:phewKljNYiTVT31Gcif8RiCKnTUOgVWFJjccqYM8s+Y=
+github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ=
+github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ=
+github.com/mroth/weightedrand/v2 v2.1.0 h1:o1ascnB1CIVzsqlfArQQjeMy1U0NcIbBO5rfd5E/OeU=
+github.com/mroth/weightedrand/v2 v2.1.0/go.mod h1:f2faGsfOGOwc1p94wzHKKZyTpcJUW7OJ/9U4yfiNAOU=
+github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7 h1:1102pQc2SEPp5+xrS26wEaeb26sZy6k9/ZXlZN+eXE4=
+github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7/go.mod h1:UqoUn6cHESlliMhOnKLWr+CBH+e3bazUPvFj1XZwAjs=
+github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q=
+github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k=
+github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE=
+github.com/openacid/errors v0.8.1/go.mod h1:GUQEJJOJE3W9skHm8E8Y4phdl2LLEN8iD7c5gcGgdx0=
+github.com/openacid/low v0.1.21 h1:Tr2GNu4N/+rGRYdOsEHOE89cxUIaDViZbVmKz29uKGo=
+github.com/openacid/low v0.1.21/go.mod h1:q+MsKI6Pz2xsCkzV4BLj7NR5M4EX0sGz5AqotpZDVh0=
+github.com/openacid/must v0.1.3/go.mod h1:luPiXCuJlEo3UUFQngVQokV0MPGryeYvtCbQPs3U1+I=
+github.com/openacid/testkeys v0.1.6/go.mod h1:MfA7cACzBpbiwekivj8StqX0WIRmqlMsci1c37CA3Do=
+github.com/oschwald/maxminddb-golang v1.12.0 h1:9FnTOD0YOhP7DGxGsq4glzpGy5+w7pq50AS6wALUMYs=
+github.com/oschwald/maxminddb-golang v1.12.0/go.mod h1:q0Nob5lTCqyQ8WT6FYgS1L7PXKVVbgiymefNwIjPzgY=
+github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE=
+github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
+github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
+github.com/puzpuzpuz/xsync/v3 v3.4.0 h1:DuVBAdXuGFHv8adVXjWWZ63pJq+NRXOWVXlKDBZ+mJ4=
+github.com/puzpuzpuz/xsync/v3 v3.4.0/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA=
+github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
+github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
+github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs=
+github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k=
+github.com/sagernet/cors v1.2.1 h1:Cv5Z8y9YSD6Gm+qSpNrL3LO4lD3eQVvbFYJSG7JCMHQ=
+github.com/sagernet/cors v1.2.1/go.mod h1:O64VyOjjhrkLmQIjF4KGRrJO/5dVXFdpEmCW/eISRAI=
+github.com/sagernet/fswatch v0.1.1 h1:YqID+93B7VRfqIH3PArW/XpJv5H4OLEVWDfProGoRQs=
+github.com/sagernet/fswatch v0.1.1/go.mod h1:nz85laH0mkQqJfaOrqPpkwtU1znMFNVTpT/5oRsVz/o=
+github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a h1:ObwtHN2VpqE0ZNjr6sGeT00J8uU7JF4cNUdb44/Duis=
+github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
+github.com/sagernet/nftables v0.3.0-beta.4 h1:kbULlAwAC3jvdGAC1P5Fa3GSxVwQJibNenDW2zaXr8I=
+github.com/sagernet/nftables v0.3.0-beta.4/go.mod h1:OQXAjvjNGGFxaTgVCSTRIhYB5/llyVDeapVoENYBDS8=
+github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6 h1:5bCAkvDDzSMITiHFjolBwpdqYsvycdTu71FsMEFXQ14=
+github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6/go.mod h1:khzr9AOPocLa+g53dBplwNDz4gdsyx/YM3swtAhlkHQ=
+github.com/sagernet/sing-shadowtls v0.1.4 h1:aTgBSJEgnumzFenPvc+kbD9/W0PywzWevnVpEx6Tw3k=
+github.com/sagernet/sing-shadowtls v0.1.4/go.mod h1:F8NBgsY5YN2beQavdgdm1DPlhaKQlaL6lpDdcBglGK4=
+github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 h1:DImB4lELfQhplLTxeq2z31Fpv8CQqqrUwTbrIRumZqQ=
+github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7/go.mod h1:FP9X2xjT/Az1EsG/orYYoC+5MojWnuI7hrffz8fGwwo=
+github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc=
+github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
+github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
+github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk=
+github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
+github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
+github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
+github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b h1:rXHg9GrUEtWZhEkrykicdND3VPjlVbYiLdX9J7gimS8=
+github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b/go.mod h1:X7qrxNQViEaAN9LNZOPl9PfvQtp3V3c7LTo0dvGi0fM=
+github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c h1:DjKMC30y6yjG3IxDaeAj3PCoRr+IsO+bzyT+Se2m2Hk=
+github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c/go.mod h1:NV/a66PhhWYVmUMaotlXJ8fIEFB98u+c8l/CQIEFLrU=
+github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e h1:ur8uMsPIFG3i4Gi093BQITvwH9znsz2VUZmnmwHvpIo=
+github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e/go.mod h1:+e5fBW3bpPyo+3uLo513gIUblc03egGjMM0+5GKbzK8=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
+github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
+github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
+github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
+github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 h1:tHNk7XK9GkmKUR6Gh8gVBKXc2MVSZ4G/NnWLtzw4gNA=
+github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923/go.mod h1:eLL9Nub3yfAho7qB0MzZizFhTU2QkLeoVsWdHtDW264=
+github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
+github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=
+github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
+github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8=
+github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM=
+github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8=
+github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
+github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
+github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
+github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
+github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
+github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
+github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
+gitlab.com/go-extension/aes-ccm v0.0.0-20230221065045-e58665ef23c7 h1:UNrDfkQqiEYzdMlNsVvBYOAJWZjdktqFE9tQh5BT2+4=
+gitlab.com/go-extension/aes-ccm v0.0.0-20230221065045-e58665ef23c7/go.mod h1:E+rxHvJG9H6PUdzq9NRG6csuLN3XUx98BfGOVWNYnXs=
+gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec h1:FpfFs4EhNehiVfzQttTuxanPIT43FtkkCFypIod8LHo=
+gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec/go.mod h1:BZ1RAoRPbCxum9Grlv5aeksu2H8BiKehBYooU2LFiOQ=
+go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
+go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
+go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
+go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
+go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBseWJUpBw5I82+2U4M=
+go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
+golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
+golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e h1:I88y4caeGeuDQxgdoFPUq097j7kNfw6uvuiNxUBfcBk=
+golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
+golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
+golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
+golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
+golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
+golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
+golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE=
+lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/concurrent_load_limit.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/concurrent_load_limit.go
new file mode 100644
index 0000000..45f5ce9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/concurrent_load_limit.go
@@ -0,0 +1,5 @@
+//go:build !386 && !amd64 && !arm64 && !arm64be && !mipsle && !mips
+
+package executor
+
+const concurrentCount = 5
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/concurrent_load_single.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/concurrent_load_single.go
new file mode 100644
index 0000000..603d38f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/concurrent_load_single.go
@@ -0,0 +1,5 @@
+//go:build mips || mipsle
+
+package executor
+
+const concurrentCount = 1
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/concurrent_load_unlimit.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/concurrent_load_unlimit.go
new file mode 100644
index 0000000..fded7e5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/concurrent_load_unlimit.go
@@ -0,0 +1,7 @@
+//go:build 386 || amd64 || arm64 || arm64be
+
+package executor
+
+import "math"
+
+const concurrentCount = math.MaxInt
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/executor.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/executor.go
new file mode 100644
index 0000000..3fed360
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/executor/executor.go
@@ -0,0 +1,573 @@
+package executor
+
+import (
+ "fmt"
+ "net"
+ "net/netip"
+ "os"
+ "runtime"
+ "strconv"
+ "sync"
+ "time"
+ _ "unsafe"
+
+ "github.com/metacubex/mihomo/adapter"
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/adapter/outboundgroup"
+ "github.com/metacubex/mihomo/component/auth"
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/geodata"
+ mihomoHttp "github.com/metacubex/mihomo/component/http"
+ "github.com/metacubex/mihomo/component/iface"
+ "github.com/metacubex/mihomo/component/keepalive"
+ "github.com/metacubex/mihomo/component/profile"
+ "github.com/metacubex/mihomo/component/profile/cachefile"
+ "github.com/metacubex/mihomo/component/resolver"
+ "github.com/metacubex/mihomo/component/resource"
+ "github.com/metacubex/mihomo/component/sniffer"
+ tlsC "github.com/metacubex/mihomo/component/tls"
+ "github.com/metacubex/mihomo/component/trie"
+ "github.com/metacubex/mihomo/component/updater"
+ "github.com/metacubex/mihomo/config"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/dns"
+ "github.com/metacubex/mihomo/listener"
+ authStore "github.com/metacubex/mihomo/listener/auth"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/inner"
+ "github.com/metacubex/mihomo/listener/tproxy"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/ntp"
+ "github.com/metacubex/mihomo/tunnel"
+)
+
+var mux sync.Mutex
+
+func readConfig(path string) ([]byte, error) {
+ if _, err := os.Stat(path); os.IsNotExist(err) {
+ return nil, err
+ }
+ data, err := os.ReadFile(path)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(data) == 0 {
+ return nil, fmt.Errorf("configuration file %s is empty", path)
+ }
+
+ return data, err
+}
+
+// Parse config with default config path
+func Parse() (*config.Config, error) {
+ return ParseWithPath(C.Path.Config())
+}
+
+// ParseWithPath parse config with custom config path
+func ParseWithPath(path string) (*config.Config, error) {
+ buf, err := readConfig(path)
+ if err != nil {
+ return nil, err
+ }
+
+ return ParseWithBytes(buf)
+}
+
+// ParseWithBytes config with buffer
+func ParseWithBytes(buf []byte) (*config.Config, error) {
+ return config.Parse(buf)
+}
+
+// ApplyConfig dispatch configure to all parts without ExternalController
+func ApplyConfig(cfg *config.Config, force bool) {
+ mux.Lock()
+ defer mux.Unlock()
+ log.SetLevel(cfg.General.LogLevel)
+
+ tunnel.OnSuspend()
+
+ ca.ResetCertificate()
+ for _, c := range cfg.TLS.CustomTrustCert {
+ if err := ca.AddCertificate(c); err != nil {
+ log.Warnln("%s\nadd error: %s", c, err.Error())
+ }
+ }
+
+ updateExperimental(cfg.Experimental)
+ updateUsers(cfg.Users)
+ updateProxies(cfg.Proxies, cfg.Providers)
+ updateRules(cfg.Rules, cfg.SubRules, cfg.RuleProviders)
+ updateSniffer(cfg.Sniffer)
+ updateHosts(cfg.Hosts)
+ updateGeneral(cfg.General, true)
+ updateNTP(cfg.NTP)
+ updateDNS(cfg.DNS, cfg.General.IPv6)
+ updateListeners(cfg.General, cfg.Listeners, force)
+ updateTun(cfg.General) // tun should not care "force"
+ updateIPTables(cfg)
+ updateTunnels(cfg.Tunnels)
+
+ tunnel.OnInnerLoading()
+
+ initInnerTcp()
+ loadProxyProvider(cfg.Providers)
+ updateProfile(cfg)
+ loadRuleProvider(cfg.RuleProviders)
+ runtime.GC()
+ tunnel.OnRunning()
+ hcCompatibleProvider(cfg.Providers)
+ updateUpdater(cfg)
+
+ resolver.ResetConnection()
+}
+
+func initInnerTcp() {
+ inner.New(tunnel.Tunnel)
+}
+
+func GetGeneral() *config.General {
+ ports := listener.GetPorts()
+ var authenticator []string
+ if auth := authStore.Default.Authenticator(); auth != nil {
+ authenticator = auth.Users()
+ }
+
+ general := &config.General{
+ Inbound: config.Inbound{
+ Port: ports.Port,
+ SocksPort: ports.SocksPort,
+ RedirPort: ports.RedirPort,
+ TProxyPort: ports.TProxyPort,
+ MixedPort: ports.MixedPort,
+ Tun: listener.GetTunConf(),
+ TuicServer: listener.GetTuicConf(),
+ ShadowSocksConfig: ports.ShadowSocksConfig,
+ VmessConfig: ports.VmessConfig,
+ Authentication: authenticator,
+ SkipAuthPrefixes: inbound.SkipAuthPrefixes(),
+ LanAllowedIPs: inbound.AllowedIPs(),
+ LanDisAllowedIPs: inbound.DisAllowedIPs(),
+ AllowLan: listener.AllowLan(),
+ BindAddress: listener.BindAddress(),
+ InboundTfo: inbound.Tfo(),
+ InboundMPTCP: inbound.MPTCP(),
+ },
+ Mode: tunnel.Mode(),
+ UnifiedDelay: adapter.UnifiedDelay.Load(),
+ LogLevel: log.Level(),
+ IPv6: !resolver.DisableIPv6,
+ Interface: dialer.DefaultInterface.Load(),
+ RoutingMark: int(dialer.DefaultRoutingMark.Load()),
+ GeoXUrl: config.GeoXUrl{
+ GeoIp: geodata.GeoIpUrl(),
+ Mmdb: geodata.MmdbUrl(),
+ ASN: geodata.ASNUrl(),
+ GeoSite: geodata.GeoSiteUrl(),
+ },
+ GeoAutoUpdate: updater.GeoAutoUpdate(),
+ GeoUpdateInterval: updater.GeoUpdateInterval(),
+ GeodataMode: geodata.GeodataMode(),
+ GeodataLoader: geodata.LoaderName(),
+ GeositeMatcher: geodata.SiteMatcherName(),
+ TCPConcurrent: dialer.GetTcpConcurrent(),
+ FindProcessMode: tunnel.FindProcessMode(),
+ Sniffing: tunnel.IsSniffing(),
+ GlobalClientFingerprint: tlsC.GetGlobalFingerprint(),
+ GlobalUA: mihomoHttp.UA(),
+ ETagSupport: resource.ETag(),
+ KeepAliveInterval: int(keepalive.KeepAliveInterval() / time.Second),
+ KeepAliveIdle: int(keepalive.KeepAliveIdle() / time.Second),
+ DisableKeepAlive: keepalive.DisableKeepAlive(),
+ }
+
+ return general
+}
+
+func updateListeners(general *config.General, listeners map[string]C.InboundListener, force bool) {
+ listener.PatchInboundListeners(listeners, tunnel.Tunnel, true)
+ if !force {
+ return
+ }
+
+ allowLan := general.AllowLan
+ listener.SetAllowLan(allowLan)
+ inbound.SetSkipAuthPrefixes(general.SkipAuthPrefixes)
+ inbound.SetAllowedIPs(general.LanAllowedIPs)
+ inbound.SetDisAllowedIPs(general.LanDisAllowedIPs)
+
+ bindAddress := general.BindAddress
+ listener.SetBindAddress(bindAddress)
+ listener.ReCreateHTTP(general.Port, tunnel.Tunnel)
+ listener.ReCreateSocks(general.SocksPort, tunnel.Tunnel)
+ listener.ReCreateRedir(general.RedirPort, tunnel.Tunnel)
+ listener.ReCreateTProxy(general.TProxyPort, tunnel.Tunnel)
+ listener.ReCreateMixed(general.MixedPort, tunnel.Tunnel)
+ listener.ReCreateShadowSocks(general.ShadowSocksConfig, tunnel.Tunnel)
+ listener.ReCreateVmess(general.VmessConfig, tunnel.Tunnel)
+ listener.ReCreateTuic(general.TuicServer, tunnel.Tunnel)
+}
+
+func updateTun(general *config.General) {
+ listener.ReCreateTun(general.Tun, tunnel.Tunnel)
+}
+
+func updateExperimental(c *config.Experimental) {
+ if c.QUICGoDisableGSO {
+ _ = os.Setenv("QUIC_GO_DISABLE_GSO", strconv.FormatBool(true))
+ }
+ if c.QUICGoDisableECN {
+ _ = os.Setenv("QUIC_GO_DISABLE_ECN", strconv.FormatBool(true))
+ }
+ dialer.GetIP4PEnable(c.IP4PEnable)
+}
+
+func updateNTP(c *config.NTP) {
+ if c.Enable {
+ ntp.ReCreateNTPService(
+ net.JoinHostPort(c.Server, strconv.Itoa(c.Port)),
+ time.Duration(c.Interval),
+ c.DialerProxy,
+ c.WriteToSystem,
+ )
+ }
+}
+
+func updateDNS(c *config.DNS, generalIPv6 bool) {
+ if !c.Enable {
+ resolver.DefaultResolver = nil
+ resolver.DefaultHostMapper = nil
+ resolver.DefaultLocalServer = nil
+ resolver.ProxyServerHostResolver = nil
+ resolver.DirectHostResolver = nil
+ dns.ReCreateServer("", nil, nil)
+ return
+ }
+ cfg := dns.Config{
+ Main: c.NameServer,
+ Fallback: c.Fallback,
+ IPv6: c.IPv6 && generalIPv6,
+ IPv6Timeout: c.IPv6Timeout,
+ EnhancedMode: c.EnhancedMode,
+ Pool: c.FakeIPRange,
+ Hosts: c.Hosts,
+ FallbackIPFilter: c.FallbackIPFilter,
+ FallbackDomainFilter: c.FallbackDomainFilter,
+ Default: c.DefaultNameserver,
+ Policy: c.NameServerPolicy,
+ ProxyServer: c.ProxyServerNameserver,
+ DirectServer: c.DirectNameServer,
+ DirectFollowPolicy: c.DirectFollowPolicy,
+ CacheAlgorithm: c.CacheAlgorithm,
+ }
+
+ r := dns.NewResolver(cfg)
+ m := dns.NewEnhancer(cfg)
+
+ // reuse cache of old host mapper
+ if old := resolver.DefaultHostMapper; old != nil {
+ m.PatchFrom(old.(*dns.ResolverEnhancer))
+ }
+
+ resolver.DefaultResolver = r
+ resolver.DefaultHostMapper = m
+ resolver.DefaultLocalServer = dns.NewLocalServer(r.Resolver, m)
+ resolver.UseSystemHosts = c.UseSystemHosts
+
+ if r.ProxyResolver.Invalid() {
+ resolver.ProxyServerHostResolver = r.ProxyResolver
+ } else {
+ resolver.ProxyServerHostResolver = r.Resolver
+ }
+
+ if r.DirectResolver.Invalid() {
+ resolver.DirectHostResolver = r.DirectResolver
+ } else {
+ resolver.DirectHostResolver = r.Resolver
+ }
+
+ dns.ReCreateServer(c.Listen, r.Resolver, m)
+}
+
+func updateHosts(tree *trie.DomainTrie[resolver.HostValue]) {
+ resolver.DefaultHosts = resolver.NewHosts(tree)
+}
+
+func updateProxies(proxies map[string]C.Proxy, providers map[string]provider.ProxyProvider) {
+ tunnel.UpdateProxies(proxies, providers)
+}
+
+func updateRules(rules []C.Rule, subRules map[string][]C.Rule, ruleProviders map[string]provider.RuleProvider) {
+ tunnel.UpdateRules(rules, subRules, ruleProviders)
+}
+
+func loadProvider(pv provider.Provider) {
+ if pv.VehicleType() == provider.Compatible {
+ return
+ } else {
+ log.Infoln("Start initial provider %s", (pv).Name())
+ }
+
+ if err := pv.Initial(); err != nil {
+ switch pv.Type() {
+ case provider.Proxy:
+ {
+ log.Errorln("initial proxy provider %s error: %v", (pv).Name(), err)
+ }
+ case provider.Rule:
+ {
+ log.Errorln("initial rule provider %s error: %v", (pv).Name(), err)
+ }
+
+ }
+ }
+}
+
+func loadRuleProvider(ruleProviders map[string]provider.RuleProvider) {
+ wg := sync.WaitGroup{}
+ ch := make(chan struct{}, concurrentCount)
+ for _, ruleProvider := range ruleProviders {
+ ruleProvider := ruleProvider
+ wg.Add(1)
+ ch <- struct{}{}
+ go func() {
+ defer func() { <-ch; wg.Done() }()
+ loadProvider(ruleProvider)
+
+ }()
+ }
+
+ wg.Wait()
+}
+
+func loadProxyProvider(proxyProviders map[string]provider.ProxyProvider) {
+ // limit concurrent size
+ wg := sync.WaitGroup{}
+ ch := make(chan struct{}, concurrentCount)
+ for _, proxyProvider := range proxyProviders {
+ proxyProvider := proxyProvider
+ wg.Add(1)
+ ch <- struct{}{}
+ go func() {
+ defer func() { <-ch; wg.Done() }()
+ loadProvider(proxyProvider)
+ }()
+ }
+
+ wg.Wait()
+}
+func hcCompatibleProvider(proxyProviders map[string]provider.ProxyProvider) {
+ // limit concurrent size
+ wg := sync.WaitGroup{}
+ ch := make(chan struct{}, concurrentCount)
+ for _, proxyProvider := range proxyProviders {
+ proxyProvider := proxyProvider
+ if proxyProvider.VehicleType() == provider.Compatible {
+ log.Infoln("Start initial Compatible provider %s", proxyProvider.Name())
+ wg.Add(1)
+ ch <- struct{}{}
+ go func() {
+ defer func() { <-ch; wg.Done() }()
+ if err := proxyProvider.Initial(); err != nil {
+ log.Errorln("initial Compatible provider %s error: %v", proxyProvider.Name(), err)
+ }
+ }()
+ }
+
+ }
+
+}
+
+func updateSniffer(snifferConfig *sniffer.Config) {
+ dispatcher, err := sniffer.NewDispatcher(snifferConfig)
+ if err != nil {
+ log.Warnln("initial sniffer failed, err:%v", err)
+ }
+
+ tunnel.UpdateSniffer(dispatcher)
+
+ if snifferConfig.Enable {
+ log.Infoln("Sniffer is loaded and working")
+ } else {
+ log.Infoln("Sniffer is closed")
+ }
+}
+
+func updateTunnels(tunnels []LC.Tunnel) {
+ listener.PatchTunnel(tunnels, tunnel.Tunnel)
+}
+
+func updateUpdater(cfg *config.Config) {
+ general := cfg.General
+ updater.SetGeoAutoUpdate(general.GeoAutoUpdate)
+ updater.SetGeoUpdateInterval(general.GeoUpdateInterval)
+
+ controller := cfg.Controller
+ updater.DefaultUiUpdater = updater.NewUiUpdater(controller.ExternalUI, controller.ExternalUIURL, controller.ExternalUIName)
+ updater.DefaultUiUpdater.AutoDownloadUI()
+}
+
+//go:linkname temporaryUpdateGeneral github.com/metacubex/mihomo/config.temporaryUpdateGeneral
+func temporaryUpdateGeneral(general *config.General) func() {
+ oldGeneral := GetGeneral()
+ updateGeneral(general, false)
+ return func() {
+ updateGeneral(oldGeneral, false)
+ }
+}
+
+func updateGeneral(general *config.General, logging bool) {
+ tunnel.SetMode(general.Mode)
+ tunnel.SetFindProcessMode(general.FindProcessMode)
+ resolver.DisableIPv6 = !general.IPv6
+
+ dialer.SetTcpConcurrent(general.TCPConcurrent)
+ if logging && general.TCPConcurrent {
+ log.Infoln("Use tcp concurrent")
+ }
+
+ inbound.SetTfo(general.InboundTfo)
+ inbound.SetMPTCP(general.InboundMPTCP)
+
+ keepalive.SetKeepAliveIdle(time.Duration(general.KeepAliveIdle) * time.Second)
+ keepalive.SetKeepAliveInterval(time.Duration(general.KeepAliveInterval) * time.Second)
+ keepalive.SetDisableKeepAlive(general.DisableKeepAlive)
+
+ adapter.UnifiedDelay.Store(general.UnifiedDelay)
+
+ dialer.DefaultInterface.Store(general.Interface)
+ dialer.DefaultRoutingMark.Store(int32(general.RoutingMark))
+ if logging && general.RoutingMark > 0 {
+ log.Infoln("Use routing mark: %#x", general.RoutingMark)
+ }
+
+ iface.FlushCache()
+
+ geodata.SetGeodataMode(general.GeodataMode)
+ geodata.SetLoader(general.GeodataLoader)
+ geodata.SetSiteMatcher(general.GeositeMatcher)
+ geodata.SetGeoIpUrl(general.GeoXUrl.GeoIp)
+ geodata.SetGeoSiteUrl(general.GeoXUrl.GeoSite)
+ geodata.SetMmdbUrl(general.GeoXUrl.Mmdb)
+ geodata.SetASNUrl(general.GeoXUrl.ASN)
+ mihomoHttp.SetUA(general.GlobalUA)
+ resource.SetETag(general.ETagSupport)
+
+ tlsC.SetGlobalUtlsClient(general.GlobalClientFingerprint)
+}
+
+func updateUsers(users []auth.AuthUser) {
+ authenticator := auth.NewAuthenticator(users)
+ authStore.Default.SetAuthenticator(authenticator)
+ if authenticator != nil {
+ log.Infoln("Authentication of local server updated")
+ }
+}
+
+func updateProfile(cfg *config.Config) {
+ profileCfg := cfg.Profile
+
+ profile.StoreSelected.Store(profileCfg.StoreSelected)
+ if profileCfg.StoreSelected {
+ patchSelectGroup(cfg.Proxies)
+ }
+}
+
+func patchSelectGroup(proxies map[string]C.Proxy) {
+ mapping := cachefile.Cache().SelectedMap()
+ if mapping == nil {
+ return
+ }
+
+ for name, proxy := range proxies {
+ outbound, ok := proxy.(C.Proxy)
+ if !ok {
+ continue
+ }
+
+ selector, ok := outbound.Adapter().(outboundgroup.SelectAble)
+ if !ok {
+ continue
+ }
+
+ selected, exist := mapping[name]
+ if !exist {
+ continue
+ }
+
+ selector.ForceSet(selected)
+ }
+}
+
+func updateIPTables(cfg *config.Config) {
+ tproxy.CleanupTProxyIPTables()
+
+ iptables := cfg.IPTables
+ if runtime.GOOS != "linux" || !iptables.Enable {
+ return
+ }
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("[IPTABLES] setting iptables failed: %s", err.Error())
+ os.Exit(2)
+ }
+ }()
+
+ if cfg.General.Tun.Enable {
+ err = fmt.Errorf("when tun is enabled, iptables cannot be set automatically")
+ return
+ }
+
+ var (
+ inboundInterface = "lo"
+ bypass = iptables.Bypass
+ tProxyPort = cfg.General.TProxyPort
+ dnsCfg = cfg.DNS
+ DnsRedirect = iptables.DnsRedirect
+
+ dnsPort netip.AddrPort
+ )
+
+ if tProxyPort == 0 {
+ err = fmt.Errorf("tproxy-port must be greater than zero")
+ return
+ }
+
+ if DnsRedirect {
+ if !dnsCfg.Enable {
+ err = fmt.Errorf("DNS server must be enable")
+ return
+ }
+
+ dnsPort, err = netip.ParseAddrPort(dnsCfg.Listen)
+ if err != nil {
+ err = fmt.Errorf("DNS server must be correct")
+ return
+ }
+ }
+
+ if iptables.InboundInterface != "" {
+ inboundInterface = iptables.InboundInterface
+ }
+
+ dialer.DefaultRoutingMark.CompareAndSwap(0, 2158)
+
+ err = tproxy.SetTProxyIPTables(inboundInterface, bypass, uint16(tProxyPort), DnsRedirect, dnsPort.Port())
+ if err != nil {
+ return
+ }
+
+ log.Infoln("[IPTABLES] Setting iptables completed")
+}
+
+func Shutdown() {
+ listener.Cleanup()
+ tproxy.CleanupTProxyIPTables()
+ resolver.StoreFakePoolState()
+
+ log.Warnln("Mihomo shutting down")
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/hub.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/hub.go
new file mode 100644
index 0000000..69f627f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/hub.go
@@ -0,0 +1,90 @@
+package hub
+
+import (
+ "github.com/metacubex/mihomo/config"
+ "github.com/metacubex/mihomo/hub/executor"
+ "github.com/metacubex/mihomo/hub/route"
+ "github.com/metacubex/mihomo/log"
+)
+
+type Option func(*config.Config)
+
+func WithExternalUI(externalUI string) Option {
+ return func(cfg *config.Config) {
+ cfg.Controller.ExternalUI = externalUI
+ }
+}
+
+func WithExternalController(externalController string) Option {
+ return func(cfg *config.Config) {
+ cfg.Controller.ExternalController = externalController
+ }
+}
+
+func WithExternalControllerUnix(externalControllerUnix string) Option {
+ return func(cfg *config.Config) {
+ cfg.Controller.ExternalControllerUnix = externalControllerUnix
+ }
+}
+
+func WithExternalControllerPipe(externalControllerPipe string) Option {
+ return func(cfg *config.Config) {
+ cfg.Controller.ExternalControllerPipe = externalControllerPipe
+ }
+}
+
+func WithSecret(secret string) Option {
+ return func(cfg *config.Config) {
+ cfg.Controller.Secret = secret
+ }
+}
+
+// ApplyConfig dispatch configure to all parts include ExternalController
+func ApplyConfig(cfg *config.Config) {
+ applyRoute(cfg)
+ executor.ApplyConfig(cfg, true)
+}
+
+func applyRoute(cfg *config.Config) {
+ if cfg.Controller.ExternalUI != "" {
+ route.SetUIPath(cfg.Controller.ExternalUI)
+ }
+ route.ReCreateServer(&route.Config{
+ Addr: cfg.Controller.ExternalController,
+ TLSAddr: cfg.Controller.ExternalControllerTLS,
+ UnixAddr: cfg.Controller.ExternalControllerUnix,
+ PipeAddr: cfg.Controller.ExternalControllerPipe,
+ Secret: cfg.Controller.Secret,
+ Certificate: cfg.TLS.Certificate,
+ PrivateKey: cfg.TLS.PrivateKey,
+ DohServer: cfg.Controller.ExternalDohServer,
+ IsDebug: cfg.General.LogLevel == log.DEBUG,
+ Cors: route.Cors{
+ AllowOrigins: cfg.Controller.Cors.AllowOrigins,
+ AllowPrivateNetwork: cfg.Controller.Cors.AllowPrivateNetwork,
+ },
+ })
+}
+
+// Parse call at the beginning of mihomo
+func Parse(configBytes []byte, options ...Option) error {
+ var cfg *config.Config
+ var err error
+
+ if len(configBytes) != 0 {
+ cfg, err = executor.ParseWithBytes(configBytes)
+ } else {
+ cfg, err = executor.Parse()
+ }
+
+ if err != nil {
+ return err
+ }
+
+ for _, option := range options {
+ option(cfg)
+ }
+
+ ApplyConfig(cfg)
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/cache.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/cache.go
new file mode 100644
index 0000000..f07eb33
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/cache.go
@@ -0,0 +1,26 @@
+package route
+
+import (
+ "net/http"
+
+ "github.com/metacubex/mihomo/component/resolver"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/render"
+)
+
+func cacheRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Post("/fakeip/flush", flushFakeIPPool)
+ return r
+}
+
+func flushFakeIPPool(w http.ResponseWriter, r *http.Request) {
+ err := resolver.FlushFakeIP()
+ if err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, newError(err.Error()))
+ return
+ }
+ render.NoContent(w, r)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/common.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/common.go
new file mode 100644
index 0000000..d0053e6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/common.go
@@ -0,0 +1,17 @@
+package route
+
+import (
+ "net/http"
+ "net/url"
+
+ "github.com/go-chi/chi/v5"
+)
+
+// When name is composed of a partial escape string, Golang does not unescape it
+func getEscapeParam(r *http.Request, paramName string) string {
+ param := chi.URLParam(r, paramName)
+ if newParam, err := url.PathUnescape(param); err == nil {
+ param = newParam
+ }
+ return param
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/configs.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/configs.go
new file mode 100644
index 0000000..b23a35a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/configs.go
@@ -0,0 +1,405 @@
+package route
+
+import (
+ "net/http"
+ "net/netip"
+ "path/filepath"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ "github.com/metacubex/mihomo/component/updater"
+ "github.com/metacubex/mihomo/config"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/hub/executor"
+ P "github.com/metacubex/mihomo/listener"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/tunnel"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/render"
+)
+
+func configRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Get("/", getConfigs)
+ if !embedMode { // disallow update/patch configs in embed mode
+ r.Put("/", updateConfigs)
+ r.Post("/geo", updateGeoDatabases)
+ r.Patch("/", patchConfigs)
+ }
+ return r
+}
+
+type configSchema struct {
+ Port *int `json:"port"`
+ SocksPort *int `json:"socks-port"`
+ RedirPort *int `json:"redir-port"`
+ TProxyPort *int `json:"tproxy-port"`
+ MixedPort *int `json:"mixed-port"`
+ Tun *tunSchema `json:"tun"`
+ TuicServer *tuicServerSchema `json:"tuic-server"`
+ ShadowSocksConfig *string `json:"ss-config"`
+ VmessConfig *string `json:"vmess-config"`
+ TcptunConfig *string `json:"tcptun-config"`
+ UdptunConfig *string `json:"udptun-config"`
+ AllowLan *bool `json:"allow-lan"`
+ SkipAuthPrefixes *[]netip.Prefix `json:"skip-auth-prefixes"`
+ LanAllowedIPs *[]netip.Prefix `json:"lan-allowed-ips"`
+ LanDisAllowedIPs *[]netip.Prefix `json:"lan-disallowed-ips"`
+ BindAddress *string `json:"bind-address"`
+ Mode *tunnel.TunnelMode `json:"mode"`
+ LogLevel *log.LogLevel `json:"log-level"`
+ IPv6 *bool `json:"ipv6"`
+ Sniffing *bool `json:"sniffing"`
+ TcpConcurrent *bool `json:"tcp-concurrent"`
+ InterfaceName *string `json:"interface-name"`
+}
+
+type tunSchema struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ Device *string `yaml:"device" json:"device"`
+ Stack *C.TUNStack `yaml:"stack" json:"stack"`
+ DNSHijack *[]string `yaml:"dns-hijack" json:"dns-hijack"`
+ AutoRoute *bool `yaml:"auto-route" json:"auto-route"`
+ AutoDetectInterface *bool `yaml:"auto-detect-interface" json:"auto-detect-interface"`
+
+ MTU *uint32 `yaml:"mtu" json:"mtu,omitempty"`
+ GSO *bool `yaml:"gso" json:"gso,omitempty"`
+ GSOMaxSize *uint32 `yaml:"gso-max-size" json:"gso-max-size,omitempty"`
+ //Inet4Address *[]netip.Prefix `yaml:"inet4-address" json:"inet4-address,omitempty"`
+ Inet6Address *[]netip.Prefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
+ IPRoute2TableIndex *int `yaml:"iproute2-table-index" json:"iproute2-table-index,omitempty"`
+ IPRoute2RuleIndex *int `yaml:"iproute2-rule-index" json:"iproute2-rule-index,omitempty"`
+ AutoRedirect *bool `yaml:"auto-redirect" json:"auto-redirect,omitempty"`
+ AutoRedirectInputMark *uint32 `yaml:"auto-redirect-input-mark" json:"auto-redirect-input-mark,omitempty"`
+ AutoRedirectOutputMark *uint32 `yaml:"auto-redirect-output-mark" json:"auto-redirect-output-mark,omitempty"`
+ StrictRoute *bool `yaml:"strict-route" json:"strict-route,omitempty"`
+ RouteAddress *[]netip.Prefix `yaml:"route-address" json:"route-address,omitempty"`
+ RouteAddressSet *[]string `yaml:"route-address-set" json:"route-address-set,omitempty"`
+ RouteExcludeAddress *[]netip.Prefix `yaml:"route-exclude-address" json:"route-exclude-address,omitempty"`
+ RouteExcludeAddressSet *[]string `yaml:"route-exclude-address-set" json:"route-exclude-address-set,omitempty"`
+ IncludeInterface *[]string `yaml:"include-interface" json:"include-interface,omitempty"`
+ ExcludeInterface *[]string `yaml:"exclude-interface" json:"exclude-interface,omitempty"`
+ IncludeUID *[]uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
+ IncludeUIDRange *[]string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
+ ExcludeUID *[]uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
+ ExcludeUIDRange *[]string `yaml:"exclude-uid-range" json:"exclude-uid-range,omitempty"`
+ IncludeAndroidUser *[]int `yaml:"include-android-user" json:"include-android-user,omitempty"`
+ IncludePackage *[]string `yaml:"include-package" json:"include-package,omitempty"`
+ ExcludePackage *[]string `yaml:"exclude-package" json:"exclude-package,omitempty"`
+ EndpointIndependentNat *bool `yaml:"endpoint-independent-nat" json:"endpoint-independent-nat,omitempty"`
+ UDPTimeout *int64 `yaml:"udp-timeout" json:"udp-timeout,omitempty"`
+ FileDescriptor *int `yaml:"file-descriptor" json:"file-descriptor"`
+
+ Inet4RouteAddress *[]netip.Prefix `yaml:"inet4-route-address" json:"inet4-route-address,omitempty"`
+ Inet6RouteAddress *[]netip.Prefix `yaml:"inet6-route-address" json:"inet6-route-address,omitempty"`
+ Inet4RouteExcludeAddress *[]netip.Prefix `yaml:"inet4-route-exclude-address" json:"inet4-route-exclude-address,omitempty"`
+ Inet6RouteExcludeAddress *[]netip.Prefix `yaml:"inet6-route-exclude-address" json:"inet6-route-exclude-address,omitempty"`
+}
+
+type tuicServerSchema struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ Listen *string `yaml:"listen" json:"listen"`
+ Token *[]string `yaml:"token" json:"token"`
+ Users *map[string]string `yaml:"users" json:"users,omitempty"`
+ Certificate *string `yaml:"certificate" json:"certificate"`
+ PrivateKey *string `yaml:"private-key" json:"private-key"`
+ CongestionController *string `yaml:"congestion-controller" json:"congestion-controller,omitempty"`
+ MaxIdleTime *int `yaml:"max-idle-time" json:"max-idle-time,omitempty"`
+ AuthenticationTimeout *int `yaml:"authentication-timeout" json:"authentication-timeout,omitempty"`
+ ALPN *[]string `yaml:"alpn" json:"alpn,omitempty"`
+ MaxUdpRelayPacketSize *int `yaml:"max-udp-relay-packet-size" json:"max-udp-relay-packet-size,omitempty"`
+ CWND *int `yaml:"cwnd" json:"cwnd,omitempty"`
+}
+
+func getConfigs(w http.ResponseWriter, r *http.Request) {
+ general := executor.GetGeneral()
+ render.JSON(w, r, general)
+}
+
+func pointerOrDefault[T any](p *T, def T) T {
+ if p != nil {
+ return *p
+ }
+ return def
+}
+
+func pointerOrDefaultTun(p *tunSchema, def LC.Tun) LC.Tun {
+ if p != nil {
+ def.Enable = p.Enable
+ if p.Device != nil {
+ def.Device = *p.Device
+ }
+ if p.Stack != nil {
+ def.Stack = *p.Stack
+ }
+ if p.DNSHijack != nil {
+ def.DNSHijack = *p.DNSHijack
+ }
+ if p.AutoRoute != nil {
+ def.AutoRoute = *p.AutoRoute
+ }
+ if p.AutoDetectInterface != nil {
+ def.AutoDetectInterface = *p.AutoDetectInterface
+ }
+ if p.MTU != nil {
+ def.MTU = *p.MTU
+ }
+ if p.GSO != nil {
+ def.GSO = *p.GSO
+ }
+ if p.GSOMaxSize != nil {
+ def.GSOMaxSize = *p.GSOMaxSize
+ }
+ //if p.Inet4Address != nil {
+ // def.Inet4Address = *p.Inet4Address
+ //}
+ if p.Inet6Address != nil {
+ def.Inet6Address = *p.Inet6Address
+ }
+ if p.IPRoute2TableIndex != nil {
+ def.IPRoute2TableIndex = *p.IPRoute2TableIndex
+ }
+ if p.IPRoute2RuleIndex != nil {
+ def.IPRoute2RuleIndex = *p.IPRoute2RuleIndex
+ }
+ if p.AutoRedirect != nil {
+ def.AutoRedirect = *p.AutoRedirect
+ }
+ if p.AutoRedirectInputMark != nil {
+ def.AutoRedirectInputMark = *p.AutoRedirectInputMark
+ }
+ if p.AutoRedirectOutputMark != nil {
+ def.AutoRedirectOutputMark = *p.AutoRedirectOutputMark
+ }
+ if p.StrictRoute != nil {
+ def.StrictRoute = *p.StrictRoute
+ }
+ if p.RouteAddress != nil {
+ def.RouteAddress = *p.RouteAddress
+ }
+ if p.RouteAddressSet != nil {
+ def.RouteAddressSet = *p.RouteAddressSet
+ }
+ if p.RouteExcludeAddress != nil {
+ def.RouteExcludeAddress = *p.RouteExcludeAddress
+ }
+ if p.RouteExcludeAddressSet != nil {
+ def.RouteExcludeAddressSet = *p.RouteExcludeAddressSet
+ }
+ if p.Inet4RouteAddress != nil {
+ def.Inet4RouteAddress = *p.Inet4RouteAddress
+ }
+ if p.Inet6RouteAddress != nil {
+ def.Inet6RouteAddress = *p.Inet6RouteAddress
+ }
+ if p.Inet4RouteExcludeAddress != nil {
+ def.Inet4RouteExcludeAddress = *p.Inet4RouteExcludeAddress
+ }
+ if p.Inet6RouteExcludeAddress != nil {
+ def.Inet6RouteExcludeAddress = *p.Inet6RouteExcludeAddress
+ }
+ if p.IncludeInterface != nil {
+ def.IncludeInterface = *p.IncludeInterface
+ }
+ if p.ExcludeInterface != nil {
+ def.ExcludeInterface = *p.ExcludeInterface
+ }
+ if p.IncludeUID != nil {
+ def.IncludeUID = *p.IncludeUID
+ }
+ if p.IncludeUIDRange != nil {
+ def.IncludeUIDRange = *p.IncludeUIDRange
+ }
+ if p.ExcludeUID != nil {
+ def.ExcludeUID = *p.ExcludeUID
+ }
+ if p.ExcludeUIDRange != nil {
+ def.ExcludeUIDRange = *p.ExcludeUIDRange
+ }
+ if p.IncludeAndroidUser != nil {
+ def.IncludeAndroidUser = *p.IncludeAndroidUser
+ }
+ if p.IncludePackage != nil {
+ def.IncludePackage = *p.IncludePackage
+ }
+ if p.ExcludePackage != nil {
+ def.ExcludePackage = *p.ExcludePackage
+ }
+ if p.EndpointIndependentNat != nil {
+ def.EndpointIndependentNat = *p.EndpointIndependentNat
+ }
+ if p.UDPTimeout != nil {
+ def.UDPTimeout = *p.UDPTimeout
+ }
+ if p.FileDescriptor != nil {
+ def.FileDescriptor = *p.FileDescriptor
+ }
+ }
+ return def
+}
+
+func pointerOrDefaultTuicServer(p *tuicServerSchema, def LC.TuicServer) LC.TuicServer {
+ if p != nil {
+ def.Enable = p.Enable
+ if p.Listen != nil {
+ def.Listen = *p.Listen
+ }
+ if p.Token != nil {
+ def.Token = *p.Token
+ }
+ if p.Users != nil {
+ def.Users = *p.Users
+ }
+ if p.Certificate != nil {
+ def.Certificate = *p.Certificate
+ }
+ if p.PrivateKey != nil {
+ def.PrivateKey = *p.PrivateKey
+ }
+ if p.CongestionController != nil {
+ def.CongestionController = *p.CongestionController
+ }
+ if p.MaxIdleTime != nil {
+ def.MaxIdleTime = *p.MaxIdleTime
+ }
+ if p.AuthenticationTimeout != nil {
+ def.AuthenticationTimeout = *p.AuthenticationTimeout
+ }
+ if p.ALPN != nil {
+ def.ALPN = *p.ALPN
+ }
+ if p.MaxUdpRelayPacketSize != nil {
+ def.MaxUdpRelayPacketSize = *p.MaxUdpRelayPacketSize
+ }
+ if p.CWND != nil {
+ def.CWND = *p.CWND
+ }
+ }
+ return def
+}
+
+func patchConfigs(w http.ResponseWriter, r *http.Request) {
+ general := &configSchema{}
+ if err := render.DecodeJSON(r.Body, &general); err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, ErrBadRequest)
+ return
+ }
+
+ if general.AllowLan != nil {
+ P.SetAllowLan(*general.AllowLan)
+ }
+
+ if general.SkipAuthPrefixes != nil {
+ inbound.SetSkipAuthPrefixes(*general.SkipAuthPrefixes)
+ }
+
+ if general.LanAllowedIPs != nil {
+ inbound.SetAllowedIPs(*general.LanAllowedIPs)
+ }
+
+ if general.LanDisAllowedIPs != nil {
+ inbound.SetDisAllowedIPs(*general.LanDisAllowedIPs)
+ }
+
+ if general.BindAddress != nil {
+ P.SetBindAddress(*general.BindAddress)
+ }
+
+ if general.Sniffing != nil {
+ tunnel.SetSniffing(*general.Sniffing)
+ }
+
+ if general.TcpConcurrent != nil {
+ dialer.SetTcpConcurrent(*general.TcpConcurrent)
+ }
+
+ if general.InterfaceName != nil {
+ dialer.DefaultInterface.Store(*general.InterfaceName)
+ }
+
+ ports := P.GetPorts()
+
+ P.ReCreateHTTP(pointerOrDefault(general.Port, ports.Port), tunnel.Tunnel)
+ P.ReCreateSocks(pointerOrDefault(general.SocksPort, ports.SocksPort), tunnel.Tunnel)
+ P.ReCreateRedir(pointerOrDefault(general.RedirPort, ports.RedirPort), tunnel.Tunnel)
+ P.ReCreateTProxy(pointerOrDefault(general.TProxyPort, ports.TProxyPort), tunnel.Tunnel)
+ P.ReCreateMixed(pointerOrDefault(general.MixedPort, ports.MixedPort), tunnel.Tunnel)
+ P.ReCreateTun(pointerOrDefaultTun(general.Tun, P.LastTunConf), tunnel.Tunnel)
+ P.ReCreateShadowSocks(pointerOrDefault(general.ShadowSocksConfig, ports.ShadowSocksConfig), tunnel.Tunnel)
+ P.ReCreateVmess(pointerOrDefault(general.VmessConfig, ports.VmessConfig), tunnel.Tunnel)
+ P.ReCreateTuic(pointerOrDefaultTuicServer(general.TuicServer, P.LastTuicConf), tunnel.Tunnel)
+
+ if general.Mode != nil {
+ tunnel.SetMode(*general.Mode)
+ }
+
+ if general.LogLevel != nil {
+ log.SetLevel(*general.LogLevel)
+ }
+
+ if general.IPv6 != nil {
+ resolver.DisableIPv6 = !*general.IPv6
+ }
+
+ render.NoContent(w, r)
+}
+
+func updateConfigs(w http.ResponseWriter, r *http.Request) {
+ req := struct {
+ Path string `json:"path"`
+ Payload string `json:"payload"`
+ }{}
+ if err := render.DecodeJSON(r.Body, &req); err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, ErrBadRequest)
+ return
+ }
+
+ force := r.URL.Query().Get("force") == "true"
+ var cfg *config.Config
+ var err error
+
+ if req.Payload != "" {
+ cfg, err = executor.ParseWithBytes([]byte(req.Payload))
+ if err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, newError(err.Error()))
+ return
+ }
+ } else {
+ if req.Path == "" {
+ req.Path = C.Path.Config()
+ }
+ if !filepath.IsAbs(req.Path) {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, newError("path is not a absolute path"))
+ return
+ }
+
+ cfg, err = executor.ParseWithPath(req.Path)
+ if err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, newError(err.Error()))
+ return
+ }
+ }
+
+ executor.ApplyConfig(cfg, force)
+ render.NoContent(w, r)
+}
+
+func updateGeoDatabases(w http.ResponseWriter, r *http.Request) {
+ err := updater.UpdateGeoDatabases()
+ if err != nil {
+ log.Errorln("[GEO] update GEO databases failed: %v", err)
+ render.Status(r, http.StatusInternalServerError)
+ render.JSON(w, r, newError(err.Error()))
+ return
+ }
+
+ render.NoContent(w, r)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/connections.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/connections.go
new file mode 100644
index 0000000..e0ff242
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/connections.go
@@ -0,0 +1,89 @@
+package route
+
+import (
+ "bytes"
+ "encoding/json"
+ "net/http"
+ "strconv"
+ "time"
+
+ "github.com/metacubex/mihomo/tunnel/statistic"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/render"
+ "github.com/gobwas/ws"
+ "github.com/gobwas/ws/wsutil"
+)
+
+func connectionRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Get("/", getConnections)
+ r.Delete("/", closeAllConnections)
+ r.Delete("/{id}", closeConnection)
+ return r
+}
+
+func getConnections(w http.ResponseWriter, r *http.Request) {
+ if !(r.Header.Get("Upgrade") == "websocket") {
+ snapshot := statistic.DefaultManager.Snapshot()
+ render.JSON(w, r, snapshot)
+ return
+ }
+
+ conn, _, _, err := ws.UpgradeHTTP(r, w)
+ if err != nil {
+ return
+ }
+
+ intervalStr := r.URL.Query().Get("interval")
+ interval := 1000
+ if intervalStr != "" {
+ t, err := strconv.Atoi(intervalStr)
+ if err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, ErrBadRequest)
+ return
+ }
+
+ interval = t
+ }
+
+ buf := &bytes.Buffer{}
+ sendSnapshot := func() error {
+ buf.Reset()
+ snapshot := statistic.DefaultManager.Snapshot()
+ if err := json.NewEncoder(buf).Encode(snapshot); err != nil {
+ return err
+ }
+
+ return wsutil.WriteMessage(conn, ws.StateServerSide, ws.OpText, buf.Bytes())
+ }
+
+ if err := sendSnapshot(); err != nil {
+ return
+ }
+
+ tick := time.NewTicker(time.Millisecond * time.Duration(interval))
+ defer tick.Stop()
+ for range tick.C {
+ if err := sendSnapshot(); err != nil {
+ break
+ }
+ }
+}
+
+func closeConnection(w http.ResponseWriter, r *http.Request) {
+ id := chi.URLParam(r, "id")
+ if c := statistic.DefaultManager.Get(id); c != nil {
+ _ = c.Close()
+ }
+ render.NoContent(w, r)
+}
+
+func closeAllConnections(w http.ResponseWriter, r *http.Request) {
+ statistic.DefaultManager.Range(func(c statistic.Tracker) bool {
+ _ = c.Close()
+ return true
+ })
+ render.NoContent(w, r)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/ctxkeys.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/ctxkeys.go
new file mode 100644
index 0000000..6883b20
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/ctxkeys.go
@@ -0,0 +1,14 @@
+package route
+
+var (
+ CtxKeyProxyName = contextKey("proxy name")
+ CtxKeyProviderName = contextKey("provider name")
+ CtxKeyProxy = contextKey("proxy")
+ CtxKeyProvider = contextKey("provider")
+)
+
+type contextKey string
+
+func (c contextKey) String() string {
+ return "mihomo context key " + string(c)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/dns.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/dns.go
new file mode 100644
index 0000000..1762c94
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/dns.go
@@ -0,0 +1,82 @@
+package route
+
+import (
+ "context"
+ "math"
+ "net/http"
+
+ "github.com/metacubex/mihomo/component/resolver"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/render"
+ "github.com/miekg/dns"
+ "github.com/samber/lo"
+)
+
+func dnsRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Get("/query", queryDNS)
+ return r
+}
+
+func queryDNS(w http.ResponseWriter, r *http.Request) {
+ if resolver.DefaultResolver == nil {
+ render.Status(r, http.StatusInternalServerError)
+ render.JSON(w, r, newError("DNS section is disabled"))
+ return
+ }
+
+ name := r.URL.Query().Get("name")
+ qTypeStr, _ := lo.Coalesce(r.URL.Query().Get("type"), "A")
+
+ qType, exist := dns.StringToType[qTypeStr]
+ if !exist {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, newError("invalid query type"))
+ return
+ }
+
+ ctx, cancel := context.WithTimeout(context.Background(), resolver.DefaultDNSTimeout)
+ defer cancel()
+
+ msg := dns.Msg{}
+ msg.SetQuestion(dns.Fqdn(name), qType)
+ resp, err := resolver.DefaultResolver.ExchangeContext(ctx, &msg)
+ if err != nil {
+ render.Status(r, http.StatusInternalServerError)
+ render.JSON(w, r, newError(err.Error()))
+ return
+ }
+
+ responseData := render.M{
+ "Status": resp.Rcode,
+ "Question": resp.Question,
+ "TC": resp.Truncated,
+ "RD": resp.RecursionDesired,
+ "RA": resp.RecursionAvailable,
+ "AD": resp.AuthenticatedData,
+ "CD": resp.CheckingDisabled,
+ }
+
+ rr2Json := func(rr dns.RR, _ int) render.M {
+ header := rr.Header()
+ return render.M{
+ "name": header.Name,
+ "type": header.Rrtype,
+ "TTL": header.Ttl,
+ "data": lo.Substring(rr.String(), len(header.String()), math.MaxUint),
+ }
+ }
+
+ if len(resp.Answer) > 0 {
+ responseData["Answer"] = lo.Map(resp.Answer, rr2Json)
+ }
+ if len(resp.Ns) > 0 {
+ responseData["Authority"] = lo.Map(resp.Ns, rr2Json)
+ }
+ if len(resp.Extra) > 0 {
+ responseData["Additional"] = lo.Map(resp.Extra, rr2Json)
+ }
+
+ render.JSON(w, r, responseData)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/doh.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/doh.go
new file mode 100644
index 0000000..bb5416c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/doh.go
@@ -0,0 +1,63 @@
+package route
+
+import (
+ "context"
+ "encoding/base64"
+ "io"
+ "net/http"
+
+ "github.com/metacubex/mihomo/component/resolver"
+
+ "github.com/go-chi/render"
+)
+
+func dohRouter() http.Handler {
+ return http.HandlerFunc(dohHandler)
+}
+
+func dohHandler(w http.ResponseWriter, r *http.Request) {
+ if resolver.DefaultResolver == nil {
+ render.Status(r, http.StatusInternalServerError)
+ render.PlainText(w, r, "DNS section is disabled")
+ return
+ }
+
+ var dnsData []byte
+ var err error
+ switch r.Method {
+ case "GET":
+ dnsData, err = base64.RawURLEncoding.DecodeString(r.URL.Query().Get("dns"))
+ case "POST":
+ if r.Header.Get("Content-Type") != "application/dns-message" {
+ render.Status(r, http.StatusInternalServerError)
+ render.PlainText(w, r, "invalid content-type")
+ return
+ }
+ reader := io.LimitReader(r.Body, 65535) // according to rfc8484, the maximum size of the DNS message is 65535 bytes
+ dnsData, err = io.ReadAll(reader)
+ _ = r.Body.Close()
+ default:
+ render.Status(r, http.StatusMethodNotAllowed)
+ render.PlainText(w, r, "method not allowed")
+ return
+ }
+ if err != nil {
+ render.Status(r, http.StatusInternalServerError)
+ render.PlainText(w, r, err.Error())
+ return
+ }
+
+ ctx, cancel := context.WithTimeout(context.Background(), resolver.DefaultDNSTimeout)
+ defer cancel()
+
+ dnsData, err = resolver.RelayDnsPacket(ctx, dnsData, dnsData)
+ if err != nil {
+ render.Status(r, http.StatusInternalServerError)
+ render.PlainText(w, r, err.Error())
+ return
+ }
+
+ w.Header().Set("Content-Type", "application/dns-message")
+ w.WriteHeader(http.StatusOK)
+ _, _ = w.Write(dnsData)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/errors.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/errors.go
new file mode 100644
index 0000000..b469e10
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/errors.go
@@ -0,0 +1,22 @@
+package route
+
+var (
+ ErrUnauthorized = newError("Unauthorized")
+ ErrBadRequest = newError("Body invalid")
+ ErrForbidden = newError("Forbidden")
+ ErrNotFound = newError("Resource not found")
+ ErrRequestTimeout = newError("Timeout")
+)
+
+// HTTPError is custom HTTP error for API
+type HTTPError struct {
+ Message string `json:"message"`
+}
+
+func (e *HTTPError) Error() string {
+ return e.Message
+}
+
+func newError(msg string) *HTTPError {
+ return &HTTPError{Message: msg}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/external.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/external.go
new file mode 100644
index 0000000..d2f0635
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/external.go
@@ -0,0 +1,21 @@
+package route
+
+import "github.com/go-chi/chi/v5"
+
+type externalRouter func(r chi.Router)
+
+var externalRouters = make([]externalRouter, 0)
+
+func Register(route ...externalRouter) {
+ externalRouters = append(externalRouters, route...)
+}
+
+func addExternalRouters(r chi.Router) {
+ if len(externalRouters) == 0 {
+ return
+ }
+
+ for _, caller := range externalRouters {
+ caller(r)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/groups.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/groups.go
new file mode 100644
index 0000000..873a94d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/groups.go
@@ -0,0 +1,94 @@
+package route
+
+import (
+ "context"
+ "net/http"
+ "strconv"
+ "time"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/render"
+
+ "github.com/metacubex/mihomo/adapter/outboundgroup"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/profile/cachefile"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/tunnel"
+)
+
+func groupRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Get("/", getGroups)
+
+ r.Route("/{name}", func(r chi.Router) {
+ r.Use(parseProxyName, findProxyByName)
+ r.Get("/", getGroup)
+ r.Get("/delay", getGroupDelay)
+ })
+ return r
+}
+
+func getGroups(w http.ResponseWriter, r *http.Request) {
+ var gs []C.Proxy
+ for _, p := range tunnel.Proxies() {
+ if _, ok := p.Adapter().(C.Group); ok {
+ gs = append(gs, p)
+ }
+ }
+ render.JSON(w, r, render.M{
+ "proxies": gs,
+ })
+}
+
+func getGroup(w http.ResponseWriter, r *http.Request) {
+ proxy := r.Context().Value(CtxKeyProxy).(C.Proxy)
+ if _, ok := proxy.Adapter().(C.Group); ok {
+ render.JSON(w, r, proxy)
+ return
+ }
+ render.Status(r, http.StatusNotFound)
+ render.JSON(w, r, ErrNotFound)
+}
+
+func getGroupDelay(w http.ResponseWriter, r *http.Request) {
+ proxy := r.Context().Value(CtxKeyProxy).(C.Proxy)
+ group, ok := proxy.Adapter().(C.Group)
+ if !ok {
+ render.Status(r, http.StatusNotFound)
+ render.JSON(w, r, ErrNotFound)
+ return
+ }
+
+ if selectAble, ok := proxy.Adapter().(outboundgroup.SelectAble); ok && proxy.Type() != C.Selector {
+ selectAble.ForceSet("")
+ cachefile.Cache().SetSelected(proxy.Name(), "")
+ }
+
+ query := r.URL.Query()
+ url := query.Get("url")
+ timeout, err := strconv.ParseInt(query.Get("timeout"), 10, 32)
+ if err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, ErrBadRequest)
+ return
+ }
+
+ expectedStatus, err := utils.NewUnsignedRanges[uint16](query.Get("expected"))
+ if err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, ErrBadRequest)
+ return
+ }
+
+ ctx, cancel := context.WithTimeout(r.Context(), time.Millisecond*time.Duration(timeout))
+ defer cancel()
+
+ dm, err := group.URLTest(ctx, url, expectedStatus)
+ if err != nil {
+ render.Status(r, http.StatusGatewayTimeout)
+ render.JSON(w, r, newError(err.Error()))
+ return
+ }
+
+ render.JSON(w, r, dm)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/patch_android.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/patch_android.go
new file mode 100644
index 0000000..5eba279
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/patch_android.go
@@ -0,0 +1,7 @@
+//go:build android && cmfa
+
+package route
+
+func init() {
+ SetEmbedMode(true) // set embed mode default
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/provider.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/provider.go
new file mode 100644
index 0000000..a8611a7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/provider.go
@@ -0,0 +1,162 @@
+package route
+
+import (
+ "context"
+ "net/http"
+
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/tunnel"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/render"
+ "github.com/samber/lo"
+)
+
+func proxyProviderRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Get("/", getProviders)
+
+ r.Route("/{providerName}", func(r chi.Router) {
+ r.Use(parseProviderName, findProviderByName)
+ r.Get("/", getProvider)
+ r.Put("/", updateProvider)
+ r.Get("/healthcheck", healthCheckProvider)
+ r.Mount("/", proxyProviderProxyRouter())
+ })
+ return r
+}
+
+func proxyProviderProxyRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Route("/{name}", func(r chi.Router) {
+ r.Use(parseProxyName, findProviderProxyByName)
+ r.Get("/", getProxy)
+ r.Get("/healthcheck", getProxyDelay)
+ })
+ return r
+}
+
+func getProviders(w http.ResponseWriter, r *http.Request) {
+ providers := tunnel.Providers()
+ render.JSON(w, r, render.M{
+ "providers": providers,
+ })
+}
+
+func getProvider(w http.ResponseWriter, r *http.Request) {
+ provider := r.Context().Value(CtxKeyProvider).(provider.ProxyProvider)
+ render.JSON(w, r, provider)
+}
+
+func updateProvider(w http.ResponseWriter, r *http.Request) {
+ provider := r.Context().Value(CtxKeyProvider).(provider.ProxyProvider)
+ if err := provider.Update(); err != nil {
+ render.Status(r, http.StatusServiceUnavailable)
+ render.JSON(w, r, newError(err.Error()))
+ return
+ }
+ render.NoContent(w, r)
+}
+
+func healthCheckProvider(w http.ResponseWriter, r *http.Request) {
+ provider := r.Context().Value(CtxKeyProvider).(provider.ProxyProvider)
+ provider.HealthCheck()
+ render.NoContent(w, r)
+}
+
+func parseProviderName(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ name := getEscapeParam(r, "providerName")
+ ctx := context.WithValue(r.Context(), CtxKeyProviderName, name)
+ next.ServeHTTP(w, r.WithContext(ctx))
+ })
+}
+
+func findProviderByName(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ name := r.Context().Value(CtxKeyProviderName).(string)
+ providers := tunnel.Providers()
+ provider, exist := providers[name]
+ if !exist {
+ render.Status(r, http.StatusNotFound)
+ render.JSON(w, r, ErrNotFound)
+ return
+ }
+
+ ctx := context.WithValue(r.Context(), CtxKeyProvider, provider)
+ next.ServeHTTP(w, r.WithContext(ctx))
+ })
+}
+
+func findProviderProxyByName(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ var (
+ name = r.Context().Value(CtxKeyProxyName).(string)
+ pd = r.Context().Value(CtxKeyProvider).(provider.ProxyProvider)
+ )
+ proxy, exist := lo.Find(pd.Proxies(), func(proxy C.Proxy) bool {
+ return proxy.Name() == name
+ })
+
+ if !exist {
+ render.Status(r, http.StatusNotFound)
+ render.JSON(w, r, ErrNotFound)
+ return
+ }
+
+ ctx := context.WithValue(r.Context(), CtxKeyProxy, proxy)
+ next.ServeHTTP(w, r.WithContext(ctx))
+ })
+}
+
+func ruleProviderRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Get("/", getRuleProviders)
+ r.Route("/{name}", func(r chi.Router) {
+ r.Use(parseRuleProviderName, findRuleProviderByName)
+ r.Put("/", updateRuleProvider)
+ })
+ return r
+}
+
+func getRuleProviders(w http.ResponseWriter, r *http.Request) {
+ ruleProviders := tunnel.RuleProviders()
+ render.JSON(w, r, render.M{
+ "providers": ruleProviders,
+ })
+}
+
+func updateRuleProvider(w http.ResponseWriter, r *http.Request) {
+ provider := r.Context().Value(CtxKeyProvider).(provider.RuleProvider)
+ if err := provider.Update(); err != nil {
+ render.Status(r, http.StatusServiceUnavailable)
+ render.JSON(w, r, newError(err.Error()))
+ return
+ }
+ render.NoContent(w, r)
+}
+
+func parseRuleProviderName(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ name := getEscapeParam(r, "name")
+ ctx := context.WithValue(r.Context(), CtxKeyProviderName, name)
+ next.ServeHTTP(w, r.WithContext(ctx))
+ })
+}
+
+func findRuleProviderByName(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ name := r.Context().Value(CtxKeyProviderName).(string)
+ providers := tunnel.RuleProviders()
+ provider, exist := providers[name]
+ if !exist {
+ render.Status(r, http.StatusNotFound)
+ render.JSON(w, r, ErrNotFound)
+ return
+ }
+
+ ctx := context.WithValue(r.Context(), CtxKeyProvider, provider)
+ next.ServeHTTP(w, r.WithContext(ctx))
+ })
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/proxies.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/proxies.go
new file mode 100644
index 0000000..ba4e03f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/proxies.go
@@ -0,0 +1,160 @@
+package route
+
+import (
+ "context"
+ "fmt"
+ "net/http"
+ "strconv"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter/outboundgroup"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/profile/cachefile"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/tunnel"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/render"
+)
+
+var (
+ SwitchProxiesCallback func(sGroup string, sProxy string)
+)
+
+func proxyRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Get("/", getProxies)
+
+ r.Route("/{name}", func(r chi.Router) {
+ r.Use(parseProxyName, findProxyByName)
+ r.Get("/", getProxy)
+ r.Get("/delay", getProxyDelay)
+ r.Put("/", updateProxy)
+ r.Delete("/", unfixedProxy)
+ })
+ return r
+}
+
+func parseProxyName(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ name := getEscapeParam(r, "name")
+ ctx := context.WithValue(r.Context(), CtxKeyProxyName, name)
+ next.ServeHTTP(w, r.WithContext(ctx))
+ })
+}
+
+func findProxyByName(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ name := r.Context().Value(CtxKeyProxyName).(string)
+ proxies := tunnel.ProxiesWithProviders()
+ proxy, exist := proxies[name]
+ if !exist {
+ render.Status(r, http.StatusNotFound)
+ render.JSON(w, r, ErrNotFound)
+ return
+ }
+
+ ctx := context.WithValue(r.Context(), CtxKeyProxy, proxy)
+ next.ServeHTTP(w, r.WithContext(ctx))
+ })
+}
+
+func getProxies(w http.ResponseWriter, r *http.Request) {
+ proxies := tunnel.ProxiesWithProviders()
+ render.JSON(w, r, render.M{
+ "proxies": proxies,
+ })
+}
+
+func getProxy(w http.ResponseWriter, r *http.Request) {
+ proxy := r.Context().Value(CtxKeyProxy).(C.Proxy)
+ render.JSON(w, r, proxy)
+}
+
+func updateProxy(w http.ResponseWriter, r *http.Request) {
+ req := struct {
+ Name string `json:"name"`
+ }{}
+ if err := render.DecodeJSON(r.Body, &req); err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, ErrBadRequest)
+ return
+ }
+
+ proxy := r.Context().Value(CtxKeyProxy).(C.Proxy)
+ selector, ok := proxy.Adapter().(outboundgroup.SelectAble)
+ if !ok {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, newError("Must be a Selector"))
+ return
+ }
+
+ if err := selector.Set(req.Name); err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, newError(fmt.Sprintf("Selector update error: %s", err.Error())))
+ return
+ }
+
+ cachefile.Cache().SetSelected(proxy.Name(), req.Name)
+ if SwitchProxiesCallback != nil {
+ // refresh tray menu
+ go SwitchProxiesCallback(proxy.Name(), req.Name)
+ }
+ render.NoContent(w, r)
+}
+
+func getProxyDelay(w http.ResponseWriter, r *http.Request) {
+ query := r.URL.Query()
+ url := query.Get("url")
+ timeout, err := strconv.ParseInt(query.Get("timeout"), 10, 16)
+ if err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, ErrBadRequest)
+ return
+ }
+
+ expectedStatus, err := utils.NewUnsignedRanges[uint16](query.Get("expected"))
+ if err != nil {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, ErrBadRequest)
+ return
+ }
+
+ proxy := r.Context().Value(CtxKeyProxy).(C.Proxy)
+
+ ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*time.Duration(timeout))
+ defer cancel()
+
+ delay, err := proxy.URLTest(ctx, url, expectedStatus)
+ if ctx.Err() != nil {
+ render.Status(r, http.StatusGatewayTimeout)
+ render.JSON(w, r, ErrRequestTimeout)
+ return
+ }
+
+ if err != nil || delay == 0 {
+ render.Status(r, http.StatusServiceUnavailable)
+ if err != nil && delay != 0 {
+ render.JSON(w, r, err)
+ } else {
+ render.JSON(w, r, newError("An error occurred in the delay test"))
+ }
+ return
+ }
+
+ render.JSON(w, r, render.M{
+ "delay": delay,
+ })
+}
+
+func unfixedProxy(w http.ResponseWriter, r *http.Request) {
+ proxy := r.Context().Value(CtxKeyProxy).(C.Proxy)
+ if selectAble, ok := proxy.Adapter().(outboundgroup.SelectAble); ok && proxy.Type() != C.Selector {
+ selectAble.ForceSet("")
+ cachefile.Cache().SetSelected(proxy.Name(), "")
+ render.NoContent(w, r)
+ return
+ }
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, ErrBadRequest)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/restart.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/restart.go
new file mode 100644
index 0000000..49d7e51
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/restart.go
@@ -0,0 +1,67 @@
+package route
+
+import (
+ "fmt"
+ "net/http"
+ "os"
+ "os/exec"
+ "runtime"
+ "syscall"
+
+ "github.com/metacubex/mihomo/hub/executor"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/render"
+)
+
+func restartRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Post("/", restart)
+ return r
+}
+
+func restart(w http.ResponseWriter, r *http.Request) {
+ // modify from https://github.com/AdguardTeam/AdGuardHome/blob/595484e0b3fb4c457f9bb727a6b94faa78a66c5f/internal/home/controlupdate.go#L108
+ execPath, err := os.Executable()
+ if err != nil {
+ render.Status(r, http.StatusInternalServerError)
+ render.JSON(w, r, newError(fmt.Sprintf("getting path: %s", err)))
+ return
+ }
+
+ render.JSON(w, r, render.M{"status": "ok"})
+ if f, ok := w.(http.Flusher); ok {
+ f.Flush()
+ }
+
+ // modify from https://github.com/AdguardTeam/AdGuardHome/blob/595484e0b3fb4c457f9bb727a6b94faa78a66c5f/internal/home/controlupdate.go#L180
+ // The background context is used because the underlying functions wrap it
+ // with timeout and shut down the server, which handles current request. It
+ // also should be done in a separate goroutine for the same reason.
+ go restartExecutable(execPath)
+}
+
+func restartExecutable(execPath string) {
+ var err error
+ executor.Shutdown()
+ if runtime.GOOS == "windows" {
+ cmd := exec.Command(execPath, os.Args[1:]...)
+ log.Infoln("restarting: %q %q", execPath, os.Args[1:])
+ cmd.Stdin = os.Stdin
+ cmd.Stdout = os.Stdout
+ cmd.Stderr = os.Stderr
+ err = cmd.Start()
+ if err != nil {
+ log.Fatalln("restarting: %s", err)
+ }
+
+ os.Exit(0)
+ }
+
+ log.Infoln("restarting: %q %q", execPath, os.Args[1:])
+ err = syscall.Exec(execPath, os.Args, os.Environ())
+ if err != nil {
+ log.Fatalln("restarting: %s", err)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/rules.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/rules.go
new file mode 100644
index 0000000..43d3329
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/rules.go
@@ -0,0 +1,46 @@
+package route
+
+import (
+ "github.com/metacubex/mihomo/constant"
+ "net/http"
+
+ "github.com/metacubex/mihomo/tunnel"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/render"
+)
+
+func ruleRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Get("/", getRules)
+ return r
+}
+
+type Rule struct {
+ Type string `json:"type"`
+ Payload string `json:"payload"`
+ Proxy string `json:"proxy"`
+ Size int `json:"size"`
+}
+
+func getRules(w http.ResponseWriter, r *http.Request) {
+ rawRules := tunnel.Rules()
+ rules := []Rule{}
+ for _, rule := range rawRules {
+ r := Rule{
+ Type: rule.RuleType().String(),
+ Payload: rule.Payload(),
+ Proxy: rule.Adapter(),
+ Size: -1,
+ }
+ if rule.RuleType() == constant.GEOIP || rule.RuleType() == constant.GEOSITE {
+ r.Size = rule.(constant.RuleGroup).GetRecodeSize()
+ }
+ rules = append(rules, r)
+
+ }
+
+ render.JSON(w, r, render.M{
+ "rules": rules,
+ })
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/server.go
new file mode 100644
index 0000000..21102cc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/server.go
@@ -0,0 +1,533 @@
+package route
+
+import (
+ "bytes"
+ "crypto/subtle"
+ "crypto/tls"
+ "encoding/json"
+ "net"
+ "net/http"
+ "os"
+ "path/filepath"
+ "runtime/debug"
+ "strings"
+ "syscall"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ CN "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/tunnel/statistic"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/chi/v5/middleware"
+ "github.com/go-chi/render"
+ "github.com/gobwas/ws"
+ "github.com/gobwas/ws/wsutil"
+ "github.com/sagernet/cors"
+)
+
+var (
+ uiPath = ""
+
+ httpServer *http.Server
+ tlsServer *http.Server
+ unixServer *http.Server
+ pipeServer *http.Server
+
+ embedMode = false
+)
+
+func SetEmbedMode(embed bool) {
+ embedMode = embed
+}
+
+type Traffic struct {
+ Up int64 `json:"up"`
+ Down int64 `json:"down"`
+}
+
+type Memory struct {
+ Inuse uint64 `json:"inuse"`
+ OSLimit uint64 `json:"oslimit"` // maybe we need it in the future
+}
+
+type Config struct {
+ Addr string
+ TLSAddr string
+ UnixAddr string
+ PipeAddr string
+ Secret string
+ Certificate string
+ PrivateKey string
+ DohServer string
+ IsDebug bool
+ Cors Cors
+}
+
+type Cors struct {
+ AllowOrigins []string
+ AllowPrivateNetwork bool
+}
+
+func (c Cors) Apply(r chi.Router) {
+ r.Use(cors.New(cors.Options{
+ AllowedOrigins: c.AllowOrigins,
+ AllowedMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE"},
+ AllowedHeaders: []string{"Content-Type", "Authorization"},
+ AllowPrivateNetwork: c.AllowPrivateNetwork,
+ MaxAge: 300,
+ }).Handler)
+}
+
+func ReCreateServer(cfg *Config) {
+ go start(cfg)
+ go startTLS(cfg)
+ go startUnix(cfg)
+ if inbound.SupportNamedPipe {
+ go startPipe(cfg)
+ }
+}
+
+func SetUIPath(path string) {
+ uiPath = C.Path.Resolve(path)
+}
+
+func router(isDebug bool, secret string, dohServer string, cors Cors) *chi.Mux {
+ r := chi.NewRouter()
+ cors.Apply(r)
+ if isDebug {
+ r.Mount("/debug", func() http.Handler {
+ r := chi.NewRouter()
+ r.Put("/gc", func(w http.ResponseWriter, r *http.Request) {
+ debug.FreeOSMemory()
+ })
+ handler := middleware.Profiler
+ r.Mount("/", handler())
+ return r
+ }())
+ }
+ r.Group(func(r chi.Router) {
+ if secret != "" {
+ r.Use(authentication(secret))
+ }
+ r.Get("/", hello)
+ r.Get("/logs", getLogs)
+ r.Get("/traffic", traffic)
+ r.Get("/memory", memory)
+ r.Get("/version", version)
+ r.Mount("/configs", configRouter())
+ r.Mount("/proxies", proxyRouter())
+ r.Mount("/group", groupRouter())
+ r.Mount("/rules", ruleRouter())
+ r.Mount("/connections", connectionRouter())
+ r.Mount("/providers/proxies", proxyProviderRouter())
+ r.Mount("/providers/rules", ruleProviderRouter())
+ r.Mount("/cache", cacheRouter())
+ r.Mount("/dns", dnsRouter())
+ if !embedMode { // disallow restart and upgrade in embed mode
+ r.Mount("/restart", restartRouter())
+ r.Mount("/upgrade", upgradeRouter())
+ }
+ addExternalRouters(r)
+
+ })
+
+ if uiPath != "" {
+ r.Group(func(r chi.Router) {
+ fs := http.StripPrefix("/ui", http.FileServer(http.Dir(uiPath)))
+ r.Get("/ui", http.RedirectHandler("/ui/", http.StatusTemporaryRedirect).ServeHTTP)
+ r.Get("/ui/*", func(w http.ResponseWriter, r *http.Request) {
+ fs.ServeHTTP(w, r)
+ })
+ })
+ }
+ if len(dohServer) > 0 && dohServer[0] == '/' {
+ r.Mount(dohServer, dohRouter())
+ }
+
+ return r
+}
+
+func start(cfg *Config) {
+ // first stop existing server
+ if httpServer != nil {
+ _ = httpServer.Close()
+ httpServer = nil
+ }
+
+ // handle addr
+ if len(cfg.Addr) > 0 {
+ l, err := inbound.Listen("tcp", cfg.Addr)
+ if err != nil {
+ log.Errorln("External controller listen error: %s", err)
+ return
+ }
+ log.Infoln("RESTful API listening at: %s", l.Addr().String())
+
+ server := &http.Server{
+ Handler: router(cfg.IsDebug, cfg.Secret, cfg.DohServer, cfg.Cors),
+ }
+ httpServer = server
+ if err = server.Serve(l); err != nil {
+ log.Errorln("External controller serve error: %s", err)
+ }
+ }
+}
+
+func startTLS(cfg *Config) {
+ // first stop existing server
+ if tlsServer != nil {
+ _ = tlsServer.Close()
+ tlsServer = nil
+ }
+
+ // handle tlsAddr
+ if len(cfg.TLSAddr) > 0 {
+ c, err := CN.ParseCert(cfg.Certificate, cfg.PrivateKey, C.Path)
+ if err != nil {
+ log.Errorln("External controller tls listen error: %s", err)
+ return
+ }
+
+ l, err := inbound.Listen("tcp", cfg.TLSAddr)
+ if err != nil {
+ log.Errorln("External controller tls listen error: %s", err)
+ return
+ }
+
+ log.Infoln("RESTful API tls listening at: %s", l.Addr().String())
+ server := &http.Server{
+ Handler: router(cfg.IsDebug, cfg.Secret, cfg.DohServer, cfg.Cors),
+ TLSConfig: &tls.Config{
+ Certificates: []tls.Certificate{c},
+ },
+ }
+ tlsServer = server
+ if err = server.ServeTLS(l, "", ""); err != nil {
+ log.Errorln("External controller tls serve error: %s", err)
+ }
+ }
+}
+
+func startUnix(cfg *Config) {
+ // first stop existing server
+ if unixServer != nil {
+ _ = unixServer.Close()
+ unixServer = nil
+ }
+
+ // handle addr
+ if len(cfg.UnixAddr) > 0 {
+ addr := C.Path.Resolve(cfg.UnixAddr)
+
+ dir := filepath.Dir(addr)
+ if _, err := os.Stat(dir); os.IsNotExist(err) {
+ if err := os.MkdirAll(dir, 0o755); err != nil {
+ log.Errorln("External controller unix listen error: %s", err)
+ return
+ }
+ }
+
+ // https://devblogs.microsoft.com/commandline/af_unix-comes-to-windows/
+ //
+ // Note: As mentioned above in the ‘security’ section, when a socket binds a socket to a valid pathname address,
+ // a socket file is created within the filesystem. On Linux, the application is expected to unlink
+ // (see the notes section in the man page for AF_UNIX) before any other socket can be bound to the same address.
+ // The same applies to Windows unix sockets, except that, DeleteFile (or any other file delete API)
+ // should be used to delete the socket file prior to calling bind with the same path.
+ _ = syscall.Unlink(addr)
+
+ l, err := inbound.Listen("unix", addr)
+ if err != nil {
+ log.Errorln("External controller unix listen error: %s", err)
+ return
+ }
+ _ = os.Chmod(addr, 0o666)
+ log.Infoln("RESTful API unix listening at: %s", l.Addr().String())
+
+ server := &http.Server{
+ Handler: router(cfg.IsDebug, "", cfg.DohServer, cfg.Cors),
+ }
+ unixServer = server
+ if err = server.Serve(l); err != nil {
+ log.Errorln("External controller unix serve error: %s", err)
+ }
+ }
+}
+
+func startPipe(cfg *Config) {
+ // first stop existing server
+ if pipeServer != nil {
+ _ = pipeServer.Close()
+ pipeServer = nil
+ }
+
+ // handle addr
+ if len(cfg.PipeAddr) > 0 {
+ if !strings.HasPrefix(cfg.PipeAddr, "\\\\.\\pipe\\") { // windows namedpipe must start with "\\.\pipe\"
+ log.Errorln("External controller pipe listen error: windows namedpipe must start with \"\\\\.\\pipe\\\"")
+ return
+ }
+
+ l, err := inbound.ListenNamedPipe(cfg.PipeAddr)
+ if err != nil {
+ log.Errorln("External controller pipe listen error: %s", err)
+ return
+ }
+ log.Infoln("RESTful API pipe listening at: %s", l.Addr().String())
+
+ server := &http.Server{
+ Handler: router(cfg.IsDebug, "", cfg.DohServer, cfg.Cors),
+ }
+ pipeServer = server
+ if err = server.Serve(l); err != nil {
+ log.Errorln("External controller pipe serve error: %s", err)
+ }
+ }
+}
+
+func safeEuqal(a, b string) bool {
+ aBuf := utils.ImmutableBytesFromString(a)
+ bBuf := utils.ImmutableBytesFromString(b)
+ return subtle.ConstantTimeCompare(aBuf, bBuf) == 1
+}
+
+func authentication(secret string) func(http.Handler) http.Handler {
+ return func(next http.Handler) http.Handler {
+ fn := func(w http.ResponseWriter, r *http.Request) {
+ // Browser websocket not support custom header
+ if r.Header.Get("Upgrade") == "websocket" && r.URL.Query().Get("token") != "" {
+ token := r.URL.Query().Get("token")
+ if !safeEuqal(token, secret) {
+ render.Status(r, http.StatusUnauthorized)
+ render.JSON(w, r, ErrUnauthorized)
+ return
+ }
+ next.ServeHTTP(w, r)
+ return
+ }
+
+ header := r.Header.Get("Authorization")
+ bearer, token, found := strings.Cut(header, " ")
+
+ hasInvalidHeader := bearer != "Bearer"
+ hasInvalidSecret := !found || !safeEuqal(token, secret)
+ if hasInvalidHeader || hasInvalidSecret {
+ render.Status(r, http.StatusUnauthorized)
+ render.JSON(w, r, ErrUnauthorized)
+ return
+ }
+ next.ServeHTTP(w, r)
+ }
+ return http.HandlerFunc(fn)
+ }
+}
+
+func hello(w http.ResponseWriter, r *http.Request) {
+ render.JSON(w, r, render.M{"hello": "mihomo"})
+}
+
+func traffic(w http.ResponseWriter, r *http.Request) {
+ var wsConn net.Conn
+ if r.Header.Get("Upgrade") == "websocket" {
+ var err error
+ wsConn, _, _, err = ws.UpgradeHTTP(r, w)
+ if err != nil {
+ return
+ }
+ }
+
+ if wsConn == nil {
+ w.Header().Set("Content-Type", "application/json")
+ render.Status(r, http.StatusOK)
+ }
+
+ tick := time.NewTicker(time.Second)
+ defer tick.Stop()
+ t := statistic.DefaultManager
+ buf := &bytes.Buffer{}
+ var err error
+ for range tick.C {
+ buf.Reset()
+ up, down := t.Now()
+ if err := json.NewEncoder(buf).Encode(Traffic{
+ Up: up,
+ Down: down,
+ }); err != nil {
+ break
+ }
+
+ if wsConn == nil {
+ _, err = w.Write(buf.Bytes())
+ w.(http.Flusher).Flush()
+ } else {
+ err = wsutil.WriteMessage(wsConn, ws.StateServerSide, ws.OpText, buf.Bytes())
+ }
+
+ if err != nil {
+ break
+ }
+ }
+}
+
+func memory(w http.ResponseWriter, r *http.Request) {
+ var wsConn net.Conn
+ if r.Header.Get("Upgrade") == "websocket" {
+ var err error
+ wsConn, _, _, err = ws.UpgradeHTTP(r, w)
+ if err != nil {
+ return
+ }
+ }
+
+ if wsConn == nil {
+ w.Header().Set("Content-Type", "application/json")
+ render.Status(r, http.StatusOK)
+ }
+
+ tick := time.NewTicker(time.Second)
+ defer tick.Stop()
+ t := statistic.DefaultManager
+ buf := &bytes.Buffer{}
+ var err error
+ first := true
+ for range tick.C {
+ buf.Reset()
+
+ inuse := t.Memory()
+ // make chat.js begin with zero
+ // this is shit var,but we need output 0 for first time
+ if first {
+ inuse = 0
+ first = false
+ }
+ if err := json.NewEncoder(buf).Encode(Memory{
+ Inuse: inuse,
+ OSLimit: 0,
+ }); err != nil {
+ break
+ }
+ if wsConn == nil {
+ _, err = w.Write(buf.Bytes())
+ w.(http.Flusher).Flush()
+ } else {
+ err = wsutil.WriteMessage(wsConn, ws.StateServerSide, ws.OpText, buf.Bytes())
+ }
+
+ if err != nil {
+ break
+ }
+ }
+}
+
+type Log struct {
+ Type string `json:"type"`
+ Payload string `json:"payload"`
+}
+type LogStructuredField struct {
+ Key string `json:"key"`
+ Value string `json:"value"`
+}
+type LogStructured struct {
+ Time string `json:"time"`
+ Level string `json:"level"`
+ Message string `json:"message"`
+ Fields []LogStructuredField `json:"fields"`
+}
+
+func getLogs(w http.ResponseWriter, r *http.Request) {
+ levelText := r.URL.Query().Get("level")
+ if levelText == "" {
+ levelText = "info"
+ }
+
+ formatText := r.URL.Query().Get("format")
+ isStructured := false
+ if formatText == "structured" {
+ isStructured = true
+ }
+
+ level, ok := log.LogLevelMapping[levelText]
+ if !ok {
+ render.Status(r, http.StatusBadRequest)
+ render.JSON(w, r, ErrBadRequest)
+ return
+ }
+
+ var wsConn net.Conn
+ if r.Header.Get("Upgrade") == "websocket" {
+ var err error
+ wsConn, _, _, err = ws.UpgradeHTTP(r, w)
+ if err != nil {
+ return
+ }
+ }
+
+ if wsConn == nil {
+ w.Header().Set("Content-Type", "application/json")
+ render.Status(r, http.StatusOK)
+ }
+
+ ch := make(chan log.Event, 1024)
+ sub := log.Subscribe()
+ defer log.UnSubscribe(sub)
+ buf := &bytes.Buffer{}
+
+ go func() {
+ for logM := range sub {
+ select {
+ case ch <- logM:
+ default:
+ }
+ }
+ close(ch)
+ }()
+
+ for logM := range ch {
+ if logM.LogLevel < level {
+ continue
+ }
+ buf.Reset()
+
+ if !isStructured {
+ if err := json.NewEncoder(buf).Encode(Log{
+ Type: logM.Type(),
+ Payload: logM.Payload,
+ }); err != nil {
+ break
+ }
+ } else {
+ newLevel := logM.Type()
+ if newLevel == "warning" {
+ newLevel = "warn"
+ }
+ if err := json.NewEncoder(buf).Encode(LogStructured{
+ Time: time.Now().Format(time.TimeOnly),
+ Level: newLevel,
+ Message: logM.Payload,
+ Fields: []LogStructuredField{},
+ }); err != nil {
+ break
+ }
+ }
+
+ var err error
+ if wsConn == nil {
+ _, err = w.Write(buf.Bytes())
+ w.(http.Flusher).Flush()
+ } else {
+ err = wsutil.WriteMessage(wsConn, ws.StateServerSide, ws.OpText, buf.Bytes())
+ }
+
+ if err != nil {
+ break
+ }
+ }
+}
+
+func version(w http.ResponseWriter, r *http.Request) {
+ render.JSON(w, r, render.M{"meta": C.Meta, "version": C.Version})
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/upgrade.go b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/upgrade.go
new file mode 100644
index 0000000..2fed3f6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/hub/route/upgrade.go
@@ -0,0 +1,62 @@
+package route
+
+import (
+ "fmt"
+ "net/http"
+ "os"
+
+ "github.com/metacubex/mihomo/component/updater"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/go-chi/chi/v5"
+ "github.com/go-chi/render"
+)
+
+func upgradeRouter() http.Handler {
+ r := chi.NewRouter()
+ r.Post("/", upgradeCore)
+ r.Post("/ui", updateUI)
+ r.Post("/geo", updateGeoDatabases)
+ return r
+}
+
+func upgradeCore(w http.ResponseWriter, r *http.Request) {
+ // modify from https://github.com/AdguardTeam/AdGuardHome/blob/595484e0b3fb4c457f9bb727a6b94faa78a66c5f/internal/home/controlupdate.go#L108
+ log.Infoln("start update")
+ execPath, err := os.Executable()
+ if err != nil {
+ render.Status(r, http.StatusInternalServerError)
+ render.JSON(w, r, newError(fmt.Sprintf("getting path: %s", err)))
+ return
+ }
+
+ err = updater.UpdateCore(execPath)
+ if err != nil {
+ log.Warnln("%s", err)
+ render.Status(r, http.StatusInternalServerError)
+ render.JSON(w, r, newError(fmt.Sprintf("%s", err)))
+ return
+ }
+
+ render.JSON(w, r, render.M{"status": "ok"})
+ if f, ok := w.(http.Flusher); ok {
+ f.Flush()
+ }
+
+ go restartExecutable(execPath)
+}
+
+func updateUI(w http.ResponseWriter, r *http.Request) {
+ err := updater.DefaultUiUpdater.DownloadUI()
+ if err != nil {
+ log.Warnln("%s", err)
+ render.Status(r, http.StatusInternalServerError)
+ render.JSON(w, r, newError(fmt.Sprintf("%s", err)))
+ return
+ }
+
+ render.JSON(w, r, render.M{"status": "ok"})
+ if f, ok := w.(http.Flusher); ok {
+ f.Flush()
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/auth/auth.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/auth/auth.go
new file mode 100644
index 0000000..9e7632e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/auth/auth.go
@@ -0,0 +1,33 @@
+package auth
+
+import (
+ "github.com/metacubex/mihomo/component/auth"
+)
+
+type authStore struct {
+ authenticator auth.Authenticator
+}
+
+func (a *authStore) Authenticator() auth.Authenticator {
+ return a.authenticator
+}
+
+func (a *authStore) SetAuthenticator(authenticator auth.Authenticator) {
+ a.authenticator = authenticator
+}
+
+func NewAuthStore(authenticator auth.Authenticator) auth.AuthStore {
+ return &authStore{authenticator}
+}
+
+var Default auth.AuthStore = NewAuthStore(nil)
+
+type nilAuthStore struct{}
+
+func (a *nilAuthStore) Authenticator() auth.Authenticator {
+ return nil
+}
+
+func (a *nilAuthStore) SetAuthenticator(authenticator auth.Authenticator) {}
+
+var Nil auth.AuthStore = (*nilAuthStore)(nil) // always return nil, even call SetAuthenticator() with a non-nil authenticator
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/hysteria2.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/hysteria2.go
new file mode 100644
index 0000000..3c9df50
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/hysteria2.go
@@ -0,0 +1,31 @@
+package config
+
+import (
+ "github.com/metacubex/mihomo/listener/sing"
+
+ "encoding/json"
+)
+
+type Hysteria2Server struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ Listen string `yaml:"listen" json:"listen"`
+ Users map[string]string `yaml:"users" json:"users,omitempty"`
+ Obfs string `yaml:"obfs" json:"obfs,omitempty"`
+ ObfsPassword string `yaml:"obfs-password" json:"obfs-password,omitempty"`
+ Certificate string `yaml:"certificate" json:"certificate"`
+ PrivateKey string `yaml:"private-key" json:"private-key"`
+ MaxIdleTime int `yaml:"max-idle-time" json:"max-idle-time,omitempty"`
+ ALPN []string `yaml:"alpn" json:"alpn,omitempty"`
+ Up string `yaml:"up" json:"up,omitempty"`
+ Down string `yaml:"down" json:"down,omitempty"`
+ IgnoreClientBandwidth bool `yaml:"ignore-client-bandwidth" json:"ignore-client-bandwidth,omitempty"`
+ Masquerade string `yaml:"masquerade" json:"masquerade,omitempty"`
+ CWND int `yaml:"cwnd" json:"cwnd,omitempty"`
+ UdpMTU int `yaml:"udp-mtu" json:"udp-mtu,omitempty"`
+ MuxOption sing.MuxOption `yaml:"mux-option" json:"mux-option,omitempty"`
+}
+
+func (h Hysteria2Server) String() string {
+ b, _ := json.Marshal(h)
+ return string(b)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/shadowsocks.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/shadowsocks.go
new file mode 100644
index 0000000..c5c60f1
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/shadowsocks.go
@@ -0,0 +1,21 @@
+package config
+
+import (
+ "github.com/metacubex/mihomo/listener/sing"
+
+ "encoding/json"
+)
+
+type ShadowsocksServer struct {
+ Enable bool
+ Listen string
+ Password string
+ Cipher string
+ Udp bool
+ MuxOption sing.MuxOption `yaml:"mux-option" json:"mux-option,omitempty"`
+}
+
+func (t ShadowsocksServer) String() string {
+ b, _ := json.Marshal(t)
+ return string(b)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/tuic.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/tuic.go
new file mode 100644
index 0000000..14a4680
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/tuic.go
@@ -0,0 +1,29 @@
+package config
+
+import (
+ "github.com/metacubex/mihomo/listener/sing"
+
+ "encoding/json"
+)
+
+type TuicServer struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ Listen string `yaml:"listen" json:"listen"`
+ Token []string `yaml:"token" json:"token,omitempty"`
+ Users map[string]string `yaml:"users" json:"users,omitempty"`
+ Certificate string `yaml:"certificate" json:"certificate"`
+ PrivateKey string `yaml:"private-key" json:"private-key"`
+ CongestionController string `yaml:"congestion-controller" json:"congestion-controller,omitempty"`
+ MaxIdleTime int `yaml:"max-idle-time" json:"max-idle-time,omitempty"`
+ AuthenticationTimeout int `yaml:"authentication-timeout" json:"authentication-timeout,omitempty"`
+ ALPN []string `yaml:"alpn" json:"alpn,omitempty"`
+ MaxUdpRelayPacketSize int `yaml:"max-udp-relay-packet-size" json:"max-udp-relay-packet-size,omitempty"`
+ MaxDatagramFrameSize int `yaml:"max-datagram-frame-size" json:"max-datagram-frame-size,omitempty"`
+ CWND int `yaml:"cwnd" json:"cwnd,omitempty"`
+ MuxOption sing.MuxOption `yaml:"mux-option" json:"mux-option,omitempty"`
+}
+
+func (t TuicServer) String() string {
+ b, _ := json.Marshal(t)
+ return string(b)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/tun.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/tun.go
new file mode 100644
index 0000000..3901bb1
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/tun.go
@@ -0,0 +1,207 @@
+package config
+
+import (
+ "net/netip"
+
+ "github.com/metacubex/mihomo/common/nnip"
+ C "github.com/metacubex/mihomo/constant"
+
+ "golang.org/x/exp/slices"
+)
+
+func StringSliceToNetipPrefixSlice(ss []string) ([]netip.Prefix, error) {
+ lps := make([]netip.Prefix, 0, len(ss))
+ for _, s := range ss {
+ prefix, err := netip.ParsePrefix(s)
+ if err != nil {
+ return nil, err
+ }
+ lps = append(lps, prefix)
+ }
+ return lps, nil
+}
+
+type Tun struct {
+ Enable bool `yaml:"enable" json:"enable"`
+ Device string `yaml:"device" json:"device"`
+ Stack C.TUNStack `yaml:"stack" json:"stack"`
+ DNSHijack []string `yaml:"dns-hijack" json:"dns-hijack"`
+ AutoRoute bool `yaml:"auto-route" json:"auto-route"`
+ AutoDetectInterface bool `yaml:"auto-detect-interface" json:"auto-detect-interface"`
+
+ MTU uint32 `yaml:"mtu" json:"mtu,omitempty"`
+ GSO bool `yaml:"gso" json:"gso,omitempty"`
+ GSOMaxSize uint32 `yaml:"gso-max-size" json:"gso-max-size,omitempty"`
+ Inet4Address []netip.Prefix `yaml:"inet4-address" json:"inet4-address,omitempty"`
+ Inet6Address []netip.Prefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
+ IPRoute2TableIndex int `yaml:"iproute2-table-index" json:"iproute2-table-index,omitempty"`
+ IPRoute2RuleIndex int `yaml:"iproute2-rule-index" json:"iproute2-rule-index,omitempty"`
+ AutoRedirect bool `yaml:"auto-redirect" json:"auto-redirect,omitempty"`
+ AutoRedirectInputMark uint32 `yaml:"auto-redirect-input-mark" json:"auto-redirect-input-mark,omitempty"`
+ AutoRedirectOutputMark uint32 `yaml:"auto-redirect-output-mark" json:"auto-redirect-output-mark,omitempty"`
+ StrictRoute bool `yaml:"strict-route" json:"strict-route,omitempty"`
+ RouteAddress []netip.Prefix `yaml:"route-address" json:"route-address,omitempty"`
+ RouteAddressSet []string `yaml:"route-address-set" json:"route-address-set,omitempty"`
+ RouteExcludeAddress []netip.Prefix `yaml:"route-exclude-address" json:"route-exclude-address,omitempty"`
+ RouteExcludeAddressSet []string `yaml:"route-exclude-address-set" json:"route-exclude-address-set,omitempty"`
+ IncludeInterface []string `yaml:"include-interface" json:"include-interface,omitempty"`
+ ExcludeInterface []string `yaml:"exclude-interface" json:"exclude-interface,omitempty"`
+ IncludeUID []uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
+ IncludeUIDRange []string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
+ ExcludeUID []uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
+ ExcludeUIDRange []string `yaml:"exclude-uid-range" json:"exclude-uid-range,omitempty"`
+ IncludeAndroidUser []int `yaml:"include-android-user" json:"include-android-user,omitempty"`
+ IncludePackage []string `yaml:"include-package" json:"include-package,omitempty"`
+ ExcludePackage []string `yaml:"exclude-package" json:"exclude-package,omitempty"`
+ EndpointIndependentNat bool `yaml:"endpoint-independent-nat" json:"endpoint-independent-nat,omitempty"`
+ UDPTimeout int64 `yaml:"udp-timeout" json:"udp-timeout,omitempty"`
+ FileDescriptor int `yaml:"file-descriptor" json:"file-descriptor"`
+
+ Inet4RouteAddress []netip.Prefix `yaml:"inet4-route-address" json:"inet4-route-address,omitempty"`
+ Inet6RouteAddress []netip.Prefix `yaml:"inet6-route-address" json:"inet6-route-address,omitempty"`
+ Inet4RouteExcludeAddress []netip.Prefix `yaml:"inet4-route-exclude-address" json:"inet4-route-exclude-address,omitempty"`
+ Inet6RouteExcludeAddress []netip.Prefix `yaml:"inet6-route-exclude-address" json:"inet6-route-exclude-address,omitempty"`
+}
+
+func (t *Tun) Sort() {
+ slices.Sort(t.DNSHijack)
+
+ slices.SortFunc(t.Inet4Address, nnip.PrefixCompare)
+ slices.SortFunc(t.Inet6Address, nnip.PrefixCompare)
+ slices.SortFunc(t.RouteAddress, nnip.PrefixCompare)
+ slices.Sort(t.RouteAddressSet)
+ slices.SortFunc(t.RouteExcludeAddress, nnip.PrefixCompare)
+ slices.Sort(t.RouteExcludeAddressSet)
+ slices.Sort(t.IncludeInterface)
+ slices.Sort(t.ExcludeInterface)
+ slices.Sort(t.IncludeUID)
+ slices.Sort(t.IncludeUIDRange)
+ slices.Sort(t.ExcludeUID)
+ slices.Sort(t.ExcludeUIDRange)
+ slices.Sort(t.IncludeAndroidUser)
+ slices.Sort(t.IncludePackage)
+ slices.Sort(t.ExcludePackage)
+
+ slices.SortFunc(t.Inet4RouteAddress, nnip.PrefixCompare)
+ slices.SortFunc(t.Inet6RouteAddress, nnip.PrefixCompare)
+ slices.SortFunc(t.Inet4RouteExcludeAddress, nnip.PrefixCompare)
+ slices.SortFunc(t.Inet6RouteExcludeAddress, nnip.PrefixCompare)
+}
+
+func (t *Tun) Equal(other Tun) bool {
+ if t.Enable != other.Enable {
+ return false
+ }
+ if t.Device != other.Device {
+ return false
+ }
+ if t.Stack != other.Stack {
+ return false
+ }
+ if !slices.Equal(t.DNSHijack, other.DNSHijack) {
+ return false
+ }
+ if t.AutoRoute != other.AutoRoute {
+ return false
+ }
+ if t.AutoDetectInterface != other.AutoDetectInterface {
+ return false
+ }
+
+ if t.MTU != other.MTU {
+ return false
+ }
+ if t.GSO != other.GSO {
+ return false
+ }
+ if t.GSOMaxSize != other.GSOMaxSize {
+ return false
+ }
+ if !slices.Equal(t.Inet4Address, other.Inet4Address) {
+ return false
+ }
+ if !slices.Equal(t.Inet6Address, other.Inet6Address) {
+ return false
+ }
+ if t.IPRoute2TableIndex != other.IPRoute2TableIndex {
+ return false
+ }
+ if t.IPRoute2RuleIndex != other.IPRoute2RuleIndex {
+ return false
+ }
+ if t.AutoRedirect != other.AutoRedirect {
+ return false
+ }
+ if t.AutoRedirectInputMark != other.AutoRedirectInputMark {
+ return false
+ }
+ if t.AutoRedirectOutputMark != other.AutoRedirectOutputMark {
+ return false
+ }
+ if t.StrictRoute != other.StrictRoute {
+ return false
+ }
+ if !slices.Equal(t.RouteAddress, other.RouteAddress) {
+ return false
+ }
+ if !slices.Equal(t.RouteAddressSet, other.RouteAddressSet) {
+ return false
+ }
+ if !slices.Equal(t.RouteExcludeAddress, other.RouteExcludeAddress) {
+ return false
+ }
+ if !slices.Equal(t.RouteExcludeAddressSet, other.RouteExcludeAddressSet) {
+ return false
+ }
+ if !slices.Equal(t.IncludeInterface, other.IncludeInterface) {
+ return false
+ }
+ if !slices.Equal(t.ExcludeInterface, other.ExcludeInterface) {
+ return false
+ }
+ if !slices.Equal(t.IncludeUID, other.IncludeUID) {
+ return false
+ }
+ if !slices.Equal(t.IncludeUIDRange, other.IncludeUIDRange) {
+ return false
+ }
+ if !slices.Equal(t.ExcludeUID, other.ExcludeUID) {
+ return false
+ }
+ if !slices.Equal(t.ExcludeUIDRange, other.ExcludeUIDRange) {
+ return false
+ }
+ if !slices.Equal(t.IncludeAndroidUser, other.IncludeAndroidUser) {
+ return false
+ }
+ if !slices.Equal(t.IncludePackage, other.IncludePackage) {
+ return false
+ }
+ if !slices.Equal(t.ExcludePackage, other.ExcludePackage) {
+ return false
+ }
+ if t.EndpointIndependentNat != other.EndpointIndependentNat {
+ return false
+ }
+ if t.UDPTimeout != other.UDPTimeout {
+ return false
+ }
+ if t.FileDescriptor != other.FileDescriptor {
+ return false
+ }
+
+ if !slices.Equal(t.Inet4RouteAddress, other.Inet4RouteAddress) {
+ return false
+ }
+ if !slices.Equal(t.Inet6RouteAddress, other.Inet6RouteAddress) {
+ return false
+ }
+ if !slices.Equal(t.Inet4RouteExcludeAddress, other.Inet4RouteExcludeAddress) {
+ return false
+ }
+ if !slices.Equal(t.Inet6RouteExcludeAddress, other.Inet6RouteExcludeAddress) {
+ return false
+ }
+
+ return true
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/tunnel.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/tunnel.go
new file mode 100644
index 0000000..eadee4b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/tunnel.go
@@ -0,0 +1,69 @@
+package config
+
+import (
+ "fmt"
+ "net"
+ "strings"
+
+ "github.com/samber/lo"
+)
+
+type tunnel struct {
+ Network []string `yaml:"network"`
+ Address string `yaml:"address"`
+ Target string `yaml:"target"`
+ Proxy string `yaml:"proxy"`
+}
+
+type Tunnel tunnel
+
+// UnmarshalYAML implements yaml.Unmarshaler
+func (t *Tunnel) UnmarshalYAML(unmarshal func(any) error) error {
+ var tp string
+ if err := unmarshal(&tp); err != nil {
+ var inner tunnel
+ if err := unmarshal(&inner); err != nil {
+ return err
+ }
+
+ *t = Tunnel(inner)
+ return nil
+ }
+
+ // parse udp/tcp,address,target,proxy
+ parts := lo.Map(strings.Split(tp, ","), func(s string, _ int) string {
+ return strings.TrimSpace(s)
+ })
+ if len(parts) != 3 && len(parts) != 4 {
+ return fmt.Errorf("invalid tunnel config %s", tp)
+ }
+ network := strings.Split(parts[0], "/")
+
+ // validate network
+ for _, n := range network {
+ switch n {
+ case "tcp", "udp":
+ default:
+ return fmt.Errorf("invalid tunnel network %s", n)
+ }
+ }
+
+ // validate address and target
+ address := parts[1]
+ target := parts[2]
+ for _, addr := range []string{address, target} {
+ if _, _, err := net.SplitHostPort(addr); err != nil {
+ return fmt.Errorf("invalid tunnel target or address %s", addr)
+ }
+ }
+
+ *t = Tunnel(tunnel{
+ Network: network,
+ Address: address,
+ Target: target,
+ })
+ if len(parts) == 4 {
+ t.Proxy = parts[3]
+ }
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/vmess.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/vmess.go
new file mode 100644
index 0000000..810d6bc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/config/vmess.go
@@ -0,0 +1,28 @@
+package config
+
+import (
+ "github.com/metacubex/mihomo/listener/sing"
+
+ "encoding/json"
+)
+
+type VmessUser struct {
+ Username string
+ UUID string
+ AlterID int
+}
+
+type VmessServer struct {
+ Enable bool
+ Listen string
+ Users []VmessUser
+ WsPath string
+ Certificate string
+ PrivateKey string
+ MuxOption sing.MuxOption `yaml:"mux-option" json:"mux-option,omitempty"`
+}
+
+func (t VmessServer) String() string {
+ b, _ := json.Marshal(t)
+ return string(b)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/client.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/client.go
new file mode 100644
index 0000000..0f084fc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/client.go
@@ -0,0 +1,46 @@
+package http
+
+import (
+ "context"
+ "errors"
+ "net"
+ "net/http"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+func newClient(srcConn net.Conn, tunnel C.Tunnel, additions []inbound.Addition) *http.Client { // additions using slice let caller can change its value (without size) after newClient return
+ return &http.Client{
+ Transport: &http.Transport{
+ // from http.DefaultTransport
+ MaxIdleConns: 100,
+ IdleConnTimeout: 90 * time.Second,
+ TLSHandshakeTimeout: 10 * time.Second,
+ ExpectContinueTimeout: 1 * time.Second,
+ DisableCompression: true, // prevents the Transport add "Accept-Encoding: gzip"
+ DialContext: func(context context.Context, network, address string) (net.Conn, error) {
+ if network != "tcp" && network != "tcp4" && network != "tcp6" {
+ return nil, errors.New("unsupported network " + network)
+ }
+
+ dstAddr := socks5.ParseAddr(address)
+ if dstAddr == nil {
+ return nil, socks5.ErrAddressNotSupported
+ }
+
+ left, right := N.Pipe()
+
+ go tunnel.HandleTCPConn(inbound.NewHTTP(dstAddr, srcConn, right, additions...))
+
+ return left, nil
+ },
+ },
+ CheckRedirect: func(req *http.Request, via []*http.Request) error {
+ return http.ErrUseLastResponse
+ },
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/hack.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/hack.go
new file mode 100644
index 0000000..c33eb6f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/hack.go
@@ -0,0 +1,10 @@
+package http
+
+import (
+ "bufio"
+ "net/http"
+ _ "unsafe"
+)
+
+//go:linkname ReadRequest net/http.readRequest
+func ReadRequest(b *bufio.Reader) (req *http.Request, err error)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/proxy.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/proxy.go
new file mode 100644
index 0000000..5c08cd4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/proxy.go
@@ -0,0 +1,175 @@
+package http
+
+import (
+ "context"
+ "fmt"
+ "io"
+ "net"
+ "net/http"
+ "strings"
+ "sync"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/auth"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+type bodyWrapper struct {
+ io.ReadCloser
+ once sync.Once
+ onHitEOF func()
+}
+
+func (b *bodyWrapper) Read(p []byte) (n int, err error) {
+ n, err = b.ReadCloser.Read(p)
+ if err == io.EOF && b.onHitEOF != nil {
+ b.once.Do(b.onHitEOF)
+ }
+ return n, err
+}
+
+func HandleConn(c net.Conn, tunnel C.Tunnel, store auth.AuthStore, additions ...inbound.Addition) {
+ additions = append(additions, inbound.Placeholder) // Add a placeholder for InUser
+ inUserIdx := len(additions) - 1
+ client := newClient(c, tunnel, additions)
+ defer client.CloseIdleConnections()
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ peekMutex := sync.Mutex{}
+
+ conn := N.NewBufferedConn(c)
+
+ authenticator := store.Authenticator()
+ keepAlive := true
+ trusted := authenticator == nil // disable authenticate if lru is nil
+ lastUser := ""
+
+ for keepAlive {
+ peekMutex.Lock()
+ request, err := ReadRequest(conn.Reader())
+ peekMutex.Unlock()
+ if err != nil {
+ break
+ }
+
+ request.RemoteAddr = conn.RemoteAddr().String()
+
+ keepAlive = strings.TrimSpace(strings.ToLower(request.Header.Get("Proxy-Connection"))) == "keep-alive"
+
+ var resp *http.Response
+
+ var user string
+ resp, user = authenticate(request, authenticator) // always call authenticate function to get user
+ trusted = trusted || resp == nil
+ additions[inUserIdx] = inbound.WithInUser(user)
+
+ if trusted {
+ if request.Method == http.MethodConnect {
+ // Manual writing to support CONNECT for http 1.0 (workaround for uplay client)
+ if _, err = fmt.Fprintf(conn, "HTTP/%d.%d %03d %s\r\n\r\n", request.ProtoMajor, request.ProtoMinor, http.StatusOK, "Connection established"); err != nil {
+ break // close connection
+ }
+
+ tunnel.HandleTCPConn(inbound.NewHTTPS(request, conn, additions...))
+
+ return // hijack connection
+ }
+
+ host := request.Header.Get("Host")
+ if host != "" {
+ request.Host = host
+ }
+
+ request.RequestURI = ""
+
+ if isUpgradeRequest(request) {
+ handleUpgrade(conn, request, tunnel, additions...)
+
+ return // hijack connection
+ }
+
+ // ensure there is a client with correct additions
+ // when the authenticated user changed, outbound client should close idle connections
+ if user != lastUser {
+ client.CloseIdleConnections()
+ lastUser = user
+ }
+
+ removeHopByHopHeaders(request.Header)
+ removeExtraHTTPHostPort(request)
+
+ if request.URL.Scheme == "" || request.URL.Host == "" {
+ resp = responseWith(request, http.StatusBadRequest)
+ } else {
+ request = request.WithContext(ctx)
+
+ startBackgroundRead := func() {
+ go func() {
+ peekMutex.Lock()
+ defer peekMutex.Unlock()
+ _, err := conn.Peek(1)
+ if err != nil {
+ cancel()
+ }
+ }()
+ }
+ if request.Body == nil || request.Body == http.NoBody {
+ startBackgroundRead()
+ } else {
+ request.Body = &bodyWrapper{ReadCloser: request.Body, onHitEOF: startBackgroundRead}
+ }
+ resp, err = client.Do(request)
+ if err != nil {
+ resp = responseWith(request, http.StatusBadGateway)
+ }
+ }
+
+ removeHopByHopHeaders(resp.Header)
+ }
+
+ if keepAlive {
+ resp.Header.Set("Proxy-Connection", "keep-alive")
+ resp.Header.Set("Connection", "keep-alive")
+ resp.Header.Set("Keep-Alive", "timeout=4")
+ }
+
+ resp.Close = !keepAlive
+
+ err = resp.Write(conn)
+ if err != nil {
+ break // close connection
+ }
+ }
+
+ _ = conn.Close()
+}
+
+func authenticate(request *http.Request, authenticator auth.Authenticator) (resp *http.Response, user string) {
+ credential := parseBasicProxyAuthorization(request)
+ if credential == "" && authenticator != nil {
+ resp = responseWith(request, http.StatusProxyAuthRequired)
+ resp.Header.Set("Proxy-Authenticate", "Basic")
+ return
+ }
+ user, pass, err := decodeBasicProxyAuthorization(credential)
+ authed := authenticator == nil || (err == nil && authenticator.Verify(user, pass))
+ if !authed {
+ log.Infoln("Auth failed from %s", request.RemoteAddr)
+ return responseWith(request, http.StatusForbidden), user
+ }
+ log.Debugln("Auth success from %s -> %s", request.RemoteAddr, user)
+ return
+}
+
+func responseWith(request *http.Request, statusCode int) *http.Response {
+ return &http.Response{
+ StatusCode: statusCode,
+ Status: http.StatusText(statusCode),
+ Proto: request.Proto,
+ ProtoMajor: request.ProtoMajor,
+ ProtoMinor: request.ProtoMinor,
+ Header: http.Header{},
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/server.go
new file mode 100644
index 0000000..24f07e8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/server.go
@@ -0,0 +1,92 @@
+package http
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/component/auth"
+ C "github.com/metacubex/mihomo/constant"
+ authStore "github.com/metacubex/mihomo/listener/auth"
+)
+
+type Listener struct {
+ listener net.Listener
+ addr string
+ closed bool
+}
+
+// RawAddress implements C.Listener
+func (l *Listener) RawAddress() string {
+ return l.addr
+}
+
+// Address implements C.Listener
+func (l *Listener) Address() string {
+ return l.listener.Addr().String()
+}
+
+// Close implements C.Listener
+func (l *Listener) Close() error {
+ l.closed = true
+ return l.listener.Close()
+}
+
+func New(addr string, tunnel C.Tunnel, additions ...inbound.Addition) (*Listener, error) {
+ return NewWithAuthenticator(addr, tunnel, authStore.Default, additions...)
+}
+
+// NewWithAuthenticate
+// never change type traits because it's used in CMFA
+func NewWithAuthenticate(addr string, tunnel C.Tunnel, authenticate bool, additions ...inbound.Addition) (*Listener, error) {
+ store := authStore.Default
+ if !authenticate {
+ store = authStore.Default
+ }
+ return NewWithAuthenticator(addr, tunnel, store, additions...)
+}
+
+func NewWithAuthenticator(addr string, tunnel C.Tunnel, store auth.AuthStore, additions ...inbound.Addition) (*Listener, error) {
+ isDefault := false
+ if len(additions) == 0 {
+ isDefault = true
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-HTTP"),
+ inbound.WithSpecialRules(""),
+ }
+ }
+
+ l, err := inbound.Listen("tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ hl := &Listener{
+ listener: l,
+ addr: addr,
+ }
+ go func() {
+ for {
+ conn, err := hl.listener.Accept()
+ if err != nil {
+ if hl.closed {
+ break
+ }
+ continue
+ }
+
+ store := store
+ if isDefault || store == authStore.Default { // only apply on default listener
+ if !inbound.IsRemoteAddrDisAllowed(conn.RemoteAddr()) {
+ _ = conn.Close()
+ continue
+ }
+ if inbound.SkipAuthRemoteAddr(conn.RemoteAddr()) {
+ store = authStore.Nil
+ }
+ }
+ go HandleConn(conn, tunnel, store, additions...)
+ }
+ }()
+
+ return hl, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/upgrade.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/upgrade.go
new file mode 100644
index 0000000..ac67ef6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/upgrade.go
@@ -0,0 +1,89 @@
+package http
+
+import (
+ "context"
+ "crypto/tls"
+ "net"
+ "net/http"
+ "strings"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+func isUpgradeRequest(req *http.Request) bool {
+ for _, header := range req.Header["Connection"] {
+ for _, elm := range strings.Split(header, ",") {
+ if strings.EqualFold(strings.TrimSpace(elm), "Upgrade") {
+ return true
+ }
+ }
+ }
+
+ return false
+}
+
+func handleUpgrade(conn net.Conn, request *http.Request, tunnel C.Tunnel, additions ...inbound.Addition) {
+ defer conn.Close()
+
+ removeProxyHeaders(request.Header)
+ removeExtraHTTPHostPort(request)
+
+ address := request.Host
+ if _, _, err := net.SplitHostPort(address); err != nil {
+ address = net.JoinHostPort(address, "80")
+ }
+
+ dstAddr := socks5.ParseAddr(address)
+ if dstAddr == nil {
+ return
+ }
+
+ left, right := N.Pipe()
+
+ go tunnel.HandleTCPConn(inbound.NewHTTP(dstAddr, conn, right, additions...))
+
+ var bufferedLeft *N.BufferedConn
+ if request.TLS != nil {
+ tlsConn := tls.Client(left, &tls.Config{
+ ServerName: request.URL.Hostname(),
+ })
+
+ ctx, cancel := context.WithTimeout(context.Background(), C.DefaultTLSTimeout)
+ defer cancel()
+ if tlsConn.HandshakeContext(ctx) != nil {
+ _ = left.Close()
+ return
+ }
+
+ bufferedLeft = N.NewBufferedConn(tlsConn)
+ } else {
+ bufferedLeft = N.NewBufferedConn(left)
+ }
+ defer func() {
+ _ = bufferedLeft.Close()
+ }()
+
+ err := request.Write(bufferedLeft)
+ if err != nil {
+ return
+ }
+
+ resp, err := http.ReadResponse(bufferedLeft.Reader(), request)
+ if err != nil {
+ return
+ }
+
+ removeProxyHeaders(resp.Header)
+
+ err = resp.Write(conn)
+ if err != nil {
+ return
+ }
+
+ if resp.StatusCode == http.StatusSwitchingProtocols {
+ N.Relay(bufferedLeft, conn)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/utils.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/utils.go
new file mode 100644
index 0000000..e67c0fd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/http/utils.go
@@ -0,0 +1,86 @@
+package http
+
+import (
+ "encoding/base64"
+ "errors"
+ "net"
+ "net/http"
+ "net/netip"
+ "strings"
+)
+
+// removeHopByHopHeaders remove Proxy-* headers
+func removeProxyHeaders(header http.Header) {
+ header.Del("Proxy-Connection")
+ header.Del("Proxy-Authenticate")
+ header.Del("Proxy-Authorization")
+}
+
+// removeHopByHopHeaders remove hop-by-hop header
+func removeHopByHopHeaders(header http.Header) {
+ // Strip hop-by-hop header based on RFC:
+ // http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.5.1
+ // https://www.mnot.net/blog/2011/07/11/what_proxies_must_do
+
+ removeProxyHeaders(header)
+
+ header.Del("TE")
+ header.Del("Trailers")
+ header.Del("Transfer-Encoding")
+ header.Del("Upgrade")
+
+ connections := header.Get("Connection")
+ header.Del("Connection")
+ if len(connections) == 0 {
+ return
+ }
+ for _, h := range strings.Split(connections, ",") {
+ header.Del(strings.TrimSpace(h))
+ }
+}
+
+// removeExtraHTTPHostPort remove extra host port (example.com:80 --> example.com)
+// It resolves the behavior of some HTTP servers that do not handle host:80 (e.g. baidu.com)
+func removeExtraHTTPHostPort(req *http.Request) {
+ host := req.Host
+ if host == "" {
+ host = req.URL.Host
+ }
+
+ if pHost, port, err := net.SplitHostPort(host); err == nil && (port == "80" || port == "443") {
+ host = pHost
+ if ip, err := netip.ParseAddr(pHost); err == nil && ip.Is6() {
+ // RFC 2617 Sec 3.2.2, for IPv6 literal
+ // addresses the Host header needs to follow the RFC 2732 grammar for "host"
+ host = "[" + host + "]"
+ }
+ }
+
+ req.Host = host
+ req.URL.Host = host
+}
+
+// parseBasicProxyAuthorization parse header Proxy-Authorization and return base64-encoded credential
+func parseBasicProxyAuthorization(request *http.Request) string {
+ value := request.Header.Get("Proxy-Authorization")
+ if !strings.HasPrefix(value, "Basic ") {
+ return ""
+ }
+
+ return value[6:] // value[len("Basic "):]
+}
+
+// decodeBasicProxyAuthorization decode base64-encoded credential
+func decodeBasicProxyAuthorization(credential string) (string, string, error) {
+ plain, err := base64.StdEncoding.DecodeString(credential)
+ if err != nil {
+ return "", "", err
+ }
+
+ user, pass, found := strings.Cut(string(plain), ":")
+ if !found {
+ return "", "", errors.New("invalid login")
+ }
+
+ return user, pass, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/auth.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/auth.go
new file mode 100644
index 0000000..85e7249
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/auth.go
@@ -0,0 +1,31 @@
+package inbound
+
+import (
+ "github.com/metacubex/mihomo/component/auth"
+ authStore "github.com/metacubex/mihomo/listener/auth"
+)
+
+type AuthUser struct {
+ Username string `inbound:"username"`
+ Password string `inbound:"password"`
+}
+
+type AuthUsers []AuthUser
+
+func (a AuthUsers) GetAuthStore() auth.AuthStore {
+ if a != nil { // structure's Decode will ensure value not nil when input has value even it was set an empty array
+ if len(a) == 0 {
+ return authStore.Nil
+ }
+ users := make([]auth.AuthUser, len(a))
+ for i, user := range a {
+ users[i] = auth.AuthUser{
+ User: user.Username,
+ Pass: user.Password,
+ }
+ }
+ authenticator := auth.NewAuthenticator(users)
+ return authStore.NewAuthStore(authenticator)
+ }
+ return authStore.Default
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/base.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/base.go
new file mode 100644
index 0000000..e8f860a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/base.go
@@ -0,0 +1,103 @@
+package inbound
+
+import (
+ "encoding/json"
+ "net"
+ "net/netip"
+ "strconv"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type Base struct {
+ config *BaseOption
+ name string
+ specialRules string
+ listenAddr netip.Addr
+ port int
+}
+
+func NewBase(options *BaseOption) (*Base, error) {
+ if options.Listen == "" {
+ options.Listen = "0.0.0.0"
+ }
+ addr, err := netip.ParseAddr(options.Listen)
+ if err != nil {
+ return nil, err
+ }
+ return &Base{
+ name: options.Name(),
+ listenAddr: addr,
+ specialRules: options.SpecialRules,
+ port: options.Port,
+ config: options,
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (b *Base) Config() C.InboundConfig {
+ return b.config
+}
+
+// Address implements constant.InboundListener
+func (b *Base) Address() string {
+ return b.RawAddress()
+}
+
+// Close implements constant.InboundListener
+func (*Base) Close() error {
+ return nil
+}
+
+// Name implements constant.InboundListener
+func (b *Base) Name() string {
+ return b.name
+}
+
+// RawAddress implements constant.InboundListener
+func (b *Base) RawAddress() string {
+ return net.JoinHostPort(b.listenAddr.String(), strconv.Itoa(int(b.port)))
+}
+
+// Listen implements constant.InboundListener
+func (*Base) Listen(tunnel C.Tunnel) error {
+ return nil
+}
+
+func (b *Base) Additions() []inbound.Addition {
+ return b.config.Additions()
+}
+
+var _ C.InboundListener = (*Base)(nil)
+
+type BaseOption struct {
+ NameStr string `inbound:"name"`
+ Listen string `inbound:"listen,omitempty"`
+ Port int `inbound:"port,omitempty"`
+ SpecialRules string `inbound:"rule,omitempty"`
+ SpecialProxy string `inbound:"proxy,omitempty"`
+}
+
+func (o BaseOption) Name() string {
+ return o.NameStr
+}
+
+func (o BaseOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+func (o BaseOption) Additions() []inbound.Addition {
+ return []inbound.Addition{
+ inbound.WithInName(o.NameStr),
+ inbound.WithSpecialRules(o.SpecialRules),
+ inbound.WithSpecialProxy(o.SpecialProxy),
+ }
+}
+
+var _ C.InboundConfig = (*BaseOption)(nil)
+
+func optionToString(option any) string {
+ str, _ := json.Marshal(option)
+ return string(str)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/http.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/http.go
new file mode 100644
index 0000000..e20a9a2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/http.go
@@ -0,0 +1,64 @@
+package inbound
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/listener/http"
+ "github.com/metacubex/mihomo/log"
+)
+
+type HTTPOption struct {
+ BaseOption
+ Users AuthUsers `inbound:"users,omitempty"`
+}
+
+func (o HTTPOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type HTTP struct {
+ *Base
+ config *HTTPOption
+ l *http.Listener
+}
+
+func NewHTTP(options *HTTPOption) (*HTTP, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ return &HTTP{
+ Base: base,
+ config: options,
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (h *HTTP) Config() C.InboundConfig {
+ return h.config
+}
+
+// Address implements constant.InboundListener
+func (h *HTTP) Address() string {
+ return h.l.Address()
+}
+
+// Listen implements constant.InboundListener
+func (h *HTTP) Listen(tunnel C.Tunnel) error {
+ var err error
+ h.l, err = http.NewWithAuthenticator(h.RawAddress(), tunnel, h.config.Users.GetAuthStore(), h.Additions()...)
+ if err != nil {
+ return err
+ }
+ log.Infoln("HTTP[%s] proxy listening at: %s", h.Name(), h.Address())
+ return nil
+}
+
+// Close implements constant.InboundListener
+func (h *HTTP) Close() error {
+ if h.l != nil {
+ return h.l.Close()
+ }
+ return nil
+}
+
+var _ C.InboundListener = (*HTTP)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/hysteria2.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/hysteria2.go
new file mode 100644
index 0000000..31c2c4b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/hysteria2.go
@@ -0,0 +1,99 @@
+package inbound
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/sing_hysteria2"
+ "github.com/metacubex/mihomo/log"
+)
+
+type Hysteria2Option struct {
+ BaseOption
+ Users map[string]string `inbound:"users,omitempty"`
+ Obfs string `inbound:"obfs,omitempty"`
+ ObfsPassword string `inbound:"obfs-password,omitempty"`
+ Certificate string `inbound:"certificate"`
+ PrivateKey string `inbound:"private-key"`
+ MaxIdleTime int `inbound:"max-idle-time,omitempty"`
+ ALPN []string `inbound:"alpn,omitempty"`
+ Up string `inbound:"up,omitempty"`
+ Down string `inbound:"down,omitempty"`
+ IgnoreClientBandwidth bool `inbound:"ignore-client-bandwidth,omitempty"`
+ Masquerade string `inbound:"masquerade,omitempty"`
+ CWND int `inbound:"cwnd,omitempty"`
+ UdpMTU int `inbound:"udp-mtu,omitempty"`
+ MuxOption MuxOption `inbound:"mux-option,omitempty"`
+}
+
+func (o Hysteria2Option) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type Hysteria2 struct {
+ *Base
+ config *Hysteria2Option
+ l *sing_hysteria2.Listener
+ ts LC.Hysteria2Server
+}
+
+func NewHysteria2(options *Hysteria2Option) (*Hysteria2, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ return &Hysteria2{
+ Base: base,
+ config: options,
+ ts: LC.Hysteria2Server{
+ Enable: true,
+ Listen: base.RawAddress(),
+ Users: options.Users,
+ Obfs: options.Obfs,
+ ObfsPassword: options.ObfsPassword,
+ Certificate: options.Certificate,
+ PrivateKey: options.PrivateKey,
+ MaxIdleTime: options.MaxIdleTime,
+ ALPN: options.ALPN,
+ Up: options.Up,
+ Down: options.Down,
+ IgnoreClientBandwidth: options.IgnoreClientBandwidth,
+ Masquerade: options.Masquerade,
+ CWND: options.CWND,
+ UdpMTU: options.UdpMTU,
+ MuxOption: options.MuxOption.Build(),
+ },
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (t *Hysteria2) Config() C.InboundConfig {
+ return t.config
+}
+
+// Address implements constant.InboundListener
+func (t *Hysteria2) Address() string {
+ if t.l != nil {
+ for _, addr := range t.l.AddrList() {
+ return addr.String()
+ }
+ }
+ return ""
+}
+
+// Listen implements constant.InboundListener
+func (t *Hysteria2) Listen(tunnel C.Tunnel) error {
+ var err error
+ t.l, err = sing_hysteria2.New(t.ts, tunnel, t.Additions()...)
+ if err != nil {
+ return err
+ }
+ log.Infoln("Hysteria2[%s] proxy listening at: %s", t.Name(), t.Address())
+ return nil
+}
+
+// Close implements constant.InboundListener
+func (t *Hysteria2) Close() error {
+ return t.l.Close()
+}
+
+var _ C.InboundListener = (*Hysteria2)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/mixed.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/mixed.go
new file mode 100644
index 0000000..1d79929
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/mixed.go
@@ -0,0 +1,90 @@
+package inbound
+
+import (
+ "fmt"
+
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/metacubex/mihomo/listener/mixed"
+ "github.com/metacubex/mihomo/listener/socks"
+)
+
+type MixedOption struct {
+ BaseOption
+ Users AuthUsers `inbound:"users,omitempty"`
+ UDP bool `inbound:"udp,omitempty"`
+}
+
+func (o MixedOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type Mixed struct {
+ *Base
+ config *MixedOption
+ l *mixed.Listener
+ lUDP *socks.UDPListener
+ udp bool
+}
+
+func NewMixed(options *MixedOption) (*Mixed, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ return &Mixed{
+ Base: base,
+ config: options,
+ udp: options.UDP,
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (m *Mixed) Config() C.InboundConfig {
+ return m.config
+}
+
+// Address implements constant.InboundListener
+func (m *Mixed) Address() string {
+ return m.l.Address()
+}
+
+// Listen implements constant.InboundListener
+func (m *Mixed) Listen(tunnel C.Tunnel) error {
+ var err error
+ m.l, err = mixed.NewWithAuthenticator(m.RawAddress(), tunnel, m.config.Users.GetAuthStore(), m.Additions()...)
+ if err != nil {
+ return err
+ }
+ if m.udp {
+ m.lUDP, err = socks.NewUDP(m.RawAddress(), tunnel, m.Additions()...)
+ if err != nil {
+ return err
+ }
+ }
+ log.Infoln("Mixed(http+socks)[%s] proxy listening at: %s", m.Name(), m.Address())
+ return nil
+}
+
+// Close implements constant.InboundListener
+func (m *Mixed) Close() error {
+ var err error
+ if m.l != nil {
+ if tcpErr := m.l.Close(); tcpErr != nil {
+ err = tcpErr
+ }
+ }
+ if m.udp && m.lUDP != nil {
+ if udpErr := m.lUDP.Close(); udpErr != nil {
+ if err == nil {
+ err = udpErr
+ } else {
+ return fmt.Errorf("close tcp err: %s, close udp err: %s", err.Error(), udpErr.Error())
+ }
+ }
+ }
+ return err
+}
+
+var _ C.InboundListener = (*Mixed)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/mux.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/mux.go
new file mode 100644
index 0000000..c4068e1
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/mux.go
@@ -0,0 +1,25 @@
+package inbound
+
+import "github.com/metacubex/mihomo/listener/sing"
+
+type MuxOption struct {
+ Padding bool `inbound:"padding,omitempty"`
+ Brutal BrutalOptions `inbound:"brutal,omitempty"`
+}
+
+type BrutalOptions struct {
+ Enabled bool `inbound:"enabled,omitempty"`
+ Up string `inbound:"up,omitempty"`
+ Down string `inbound:"down,omitempty"`
+}
+
+func (m MuxOption) Build() sing.MuxOption {
+ return sing.MuxOption{
+ Padding: m.Padding,
+ Brutal: sing.BrutalOptions{
+ Enabled: m.Brutal.Enabled,
+ Up: m.Brutal.Up,
+ Down: m.Brutal.Down,
+ },
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/redir.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/redir.go
new file mode 100644
index 0000000..ee090ad
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/redir.go
@@ -0,0 +1,63 @@
+package inbound
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/listener/redir"
+ "github.com/metacubex/mihomo/log"
+)
+
+type RedirOption struct {
+ BaseOption
+}
+
+func (o RedirOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type Redir struct {
+ *Base
+ config *RedirOption
+ l *redir.Listener
+}
+
+func NewRedir(options *RedirOption) (*Redir, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ return &Redir{
+ Base: base,
+ config: options,
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (r *Redir) Config() C.InboundConfig {
+ return r.config
+}
+
+// Address implements constant.InboundListener
+func (r *Redir) Address() string {
+ return r.l.Address()
+}
+
+// Listen implements constant.InboundListener
+func (r *Redir) Listen(tunnel C.Tunnel) error {
+ var err error
+ r.l, err = redir.New(r.RawAddress(), tunnel, r.Additions()...)
+ if err != nil {
+ return err
+ }
+ log.Infoln("Redir[%s] proxy listening at: %s", r.Name(), r.Address())
+ return nil
+}
+
+// Close implements constant.InboundListener
+func (r *Redir) Close() error {
+ if r.l != nil {
+ r.l.Close()
+ }
+ return nil
+}
+
+var _ C.InboundListener = (*Redir)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/shadowsocks.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/shadowsocks.go
new file mode 100644
index 0000000..240e641
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/shadowsocks.go
@@ -0,0 +1,79 @@
+package inbound
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/sing_shadowsocks"
+ "github.com/metacubex/mihomo/log"
+)
+
+type ShadowSocksOption struct {
+ BaseOption
+ Password string `inbound:"password"`
+ Cipher string `inbound:"cipher"`
+ UDP bool `inbound:"udp,omitempty"`
+ MuxOption MuxOption `inbound:"mux-option,omitempty"`
+}
+
+func (o ShadowSocksOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type ShadowSocks struct {
+ *Base
+ config *ShadowSocksOption
+ l C.MultiAddrListener
+ ss LC.ShadowsocksServer
+}
+
+func NewShadowSocks(options *ShadowSocksOption) (*ShadowSocks, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ return &ShadowSocks{
+ Base: base,
+ config: options,
+ ss: LC.ShadowsocksServer{
+ Enable: true,
+ Listen: base.RawAddress(),
+ Password: options.Password,
+ Cipher: options.Cipher,
+ Udp: options.UDP,
+ MuxOption: options.MuxOption.Build(),
+ },
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (s *ShadowSocks) Config() C.InboundConfig {
+ return s.config
+}
+
+// Address implements constant.InboundListener
+func (s *ShadowSocks) Address() string {
+ if s.l != nil {
+ for _, addr := range s.l.AddrList() {
+ return addr.String()
+ }
+ }
+ return ""
+}
+
+// Listen implements constant.InboundListener
+func (s *ShadowSocks) Listen(tunnel C.Tunnel) error {
+ var err error
+ s.l, err = sing_shadowsocks.New(s.ss, tunnel, s.Additions()...)
+ if err != nil {
+ return err
+ }
+ log.Infoln("ShadowSocks[%s] proxy listening at: %s", s.Name(), s.Address())
+ return nil
+}
+
+// Close implements constant.InboundListener
+func (s *ShadowSocks) Close() error {
+ return s.l.Close()
+}
+
+var _ C.InboundListener = (*ShadowSocks)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/socks.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/socks.go
new file mode 100644
index 0000000..119eec8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/socks.go
@@ -0,0 +1,87 @@
+package inbound
+
+import (
+ "fmt"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/listener/socks"
+ "github.com/metacubex/mihomo/log"
+)
+
+type SocksOption struct {
+ BaseOption
+ Users AuthUsers `inbound:"users,omitempty"`
+ UDP bool `inbound:"udp,omitempty"`
+}
+
+func (o SocksOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type Socks struct {
+ *Base
+ config *SocksOption
+ udp bool
+ stl *socks.Listener
+ sul *socks.UDPListener
+}
+
+func NewSocks(options *SocksOption) (*Socks, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ return &Socks{
+ Base: base,
+ config: options,
+ udp: options.UDP,
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (s *Socks) Config() C.InboundConfig {
+ return s.config
+}
+
+// Close implements constant.InboundListener
+func (s *Socks) Close() error {
+ var err error
+ if s.stl != nil {
+ if tcpErr := s.stl.Close(); tcpErr != nil {
+ err = tcpErr
+ }
+ }
+ if s.udp && s.sul != nil {
+ if udpErr := s.sul.Close(); udpErr != nil {
+ if err == nil {
+ err = udpErr
+ } else {
+ return fmt.Errorf("close tcp err: %s, close udp err: %s", err.Error(), udpErr.Error())
+ }
+ }
+ }
+
+ return err
+}
+
+// Address implements constant.InboundListener
+func (s *Socks) Address() string {
+ return s.stl.Address()
+}
+
+// Listen implements constant.InboundListener
+func (s *Socks) Listen(tunnel C.Tunnel) error {
+ var err error
+ if s.stl, err = socks.NewWithAuthenticator(s.RawAddress(), tunnel, s.config.Users.GetAuthStore(), s.Additions()...); err != nil {
+ return err
+ }
+ if s.udp {
+ if s.sul, err = socks.NewUDP(s.RawAddress(), tunnel, s.Additions()...); err != nil {
+ return err
+ }
+ }
+
+ log.Infoln("SOCKS[%s] proxy listening at: %s", s.Name(), s.Address())
+ return nil
+}
+
+var _ C.InboundListener = (*Socks)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tproxy.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tproxy.go
new file mode 100644
index 0000000..acc8cb5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tproxy.go
@@ -0,0 +1,91 @@
+package inbound
+
+import (
+ "fmt"
+
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/listener/tproxy"
+ "github.com/metacubex/mihomo/log"
+)
+
+type TProxyOption struct {
+ BaseOption
+ UDP bool `inbound:"udp,omitempty"`
+}
+
+func (o TProxyOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type TProxy struct {
+ *Base
+ config *TProxyOption
+ lUDP *tproxy.UDPListener
+ lTCP *tproxy.Listener
+ udp bool
+}
+
+func NewTProxy(options *TProxyOption) (*TProxy, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ return &TProxy{
+ Base: base,
+ config: options,
+ udp: options.UDP,
+ }, nil
+
+}
+
+// Config implements constant.InboundListener
+func (t *TProxy) Config() C.InboundConfig {
+ return t.config
+}
+
+// Address implements constant.InboundListener
+func (t *TProxy) Address() string {
+ return t.lTCP.Address()
+}
+
+// Listen implements constant.InboundListener
+func (t *TProxy) Listen(tunnel C.Tunnel) error {
+ var err error
+ t.lTCP, err = tproxy.New(t.RawAddress(), tunnel, t.Additions()...)
+ if err != nil {
+ return err
+ }
+ if t.udp {
+ t.lUDP, err = tproxy.NewUDP(t.RawAddress(), tunnel, t.Additions()...)
+ if err != nil {
+ return err
+ }
+ }
+ log.Infoln("TProxy[%s] proxy listening at: %s", t.Name(), t.Address())
+ return nil
+}
+
+// Close implements constant.InboundListener
+func (t *TProxy) Close() error {
+ var tcpErr error
+ var udpErr error
+ if t.lTCP != nil {
+ tcpErr = t.lTCP.Close()
+ }
+ if t.lUDP != nil {
+ udpErr = t.lUDP.Close()
+ }
+
+ if tcpErr != nil && udpErr != nil {
+ return fmt.Errorf("tcp close err: %s and udp close err: %s", tcpErr, udpErr)
+ }
+ if tcpErr != nil {
+ return tcpErr
+ }
+ if udpErr != nil {
+ return udpErr
+ }
+ return nil
+}
+
+var _ C.InboundListener = (*TProxy)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tuic.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tuic.go
new file mode 100644
index 0000000..562228e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tuic.go
@@ -0,0 +1,93 @@
+package inbound
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/tuic"
+ "github.com/metacubex/mihomo/log"
+)
+
+type TuicOption struct {
+ BaseOption
+ Token []string `inbound:"token,omitempty"`
+ Users map[string]string `inbound:"users,omitempty"`
+ Certificate string `inbound:"certificate"`
+ PrivateKey string `inbound:"private-key"`
+ CongestionController string `inbound:"congestion-controller,omitempty"`
+ MaxIdleTime int `inbound:"max-idle-time,omitempty"`
+ AuthenticationTimeout int `inbound:"authentication-timeout,omitempty"`
+ ALPN []string `inbound:"alpn,omitempty"`
+ MaxUdpRelayPacketSize int `inbound:"max-udp-relay-packet-size,omitempty"`
+ CWND int `inbound:"cwnd,omitempty"`
+ MuxOption MuxOption `inbound:"mux-option,omitempty"`
+}
+
+func (o TuicOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type Tuic struct {
+ *Base
+ config *TuicOption
+ l *tuic.Listener
+ ts LC.TuicServer
+}
+
+func NewTuic(options *TuicOption) (*Tuic, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ return &Tuic{
+ Base: base,
+ config: options,
+ ts: LC.TuicServer{
+ Enable: true,
+ Listen: base.RawAddress(),
+ Token: options.Token,
+ Users: options.Users,
+ Certificate: options.Certificate,
+ PrivateKey: options.PrivateKey,
+ CongestionController: options.CongestionController,
+ MaxIdleTime: options.MaxIdleTime,
+ AuthenticationTimeout: options.AuthenticationTimeout,
+ ALPN: options.ALPN,
+ MaxUdpRelayPacketSize: options.MaxUdpRelayPacketSize,
+ CWND: options.CWND,
+ MuxOption: options.MuxOption.Build(),
+ },
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (t *Tuic) Config() C.InboundConfig {
+ return t.config
+}
+
+// Address implements constant.InboundListener
+func (t *Tuic) Address() string {
+ if t.l != nil {
+ for _, addr := range t.l.AddrList() {
+ return addr.String()
+ }
+ }
+ return ""
+}
+
+// Listen implements constant.InboundListener
+func (t *Tuic) Listen(tunnel C.Tunnel) error {
+ var err error
+ t.l, err = tuic.New(t.ts, tunnel, t.Additions()...)
+ if err != nil {
+ return err
+ }
+ log.Infoln("Tuic[%s] proxy listening at: %s", t.Name(), t.Address())
+ return nil
+}
+
+// Close implements constant.InboundListener
+func (t *Tuic) Close() error {
+ return t.l.Close()
+}
+
+var _ C.InboundListener = (*Tuic)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tun.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tun.go
new file mode 100644
index 0000000..77ad6bd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tun.go
@@ -0,0 +1,181 @@
+package inbound
+
+import (
+ "errors"
+ "strings"
+
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/sing_tun"
+ "github.com/metacubex/mihomo/log"
+)
+
+type TunOption struct {
+ BaseOption
+ Device string `inbound:"device,omitempty"`
+ Stack string `inbound:"stack,omitempty"`
+ DNSHijack []string `inbound:"dns-hijack,omitempty"`
+ AutoRoute bool `inbound:"auto-route,omitempty"`
+ AutoDetectInterface bool `inbound:"auto-detect-interface,omitempty"`
+
+ MTU uint32 `inbound:"mtu,omitempty"`
+ GSO bool `inbound:"gso,omitempty"`
+ GSOMaxSize uint32 `inbound:"gso-max-size,omitempty"`
+ Inet4Address []string `inbound:"inet4-address,omitempty"`
+ Inet6Address []string `inbound:"inet6-address,omitempty"`
+ IPRoute2TableIndex int `inbound:"iproute2-table-index"`
+ IPRoute2RuleIndex int `inbound:"iproute2-rule-index"`
+ AutoRedirect bool `inbound:"auto-redirect"`
+ AutoRedirectInputMark uint32 `inbound:"auto-redirect-input-mark"`
+ AutoRedirectOutputMark uint32 `inbound:"auto-redirect-output-mark"`
+ StrictRoute bool `inbound:"strict-route,omitempty"`
+ RouteAddress []string `inbound:"route-address"`
+ RouteAddressSet []string `inbound:"route-address-set"`
+ RouteExcludeAddress []string `inbound:"route-exclude-address"`
+ RouteExcludeAddressSet []string `inbound:"route-exclude-address-set"`
+ IncludeInterface []string `inbound:"include-interface,omitempty"`
+ ExcludeInterface []string `inbound:"exclude-interface"`
+ IncludeUID []uint32 `inbound:"include-uid,omitempty"`
+ IncludeUIDRange []string `inbound:"include-uid-range,omitempty"`
+ ExcludeUID []uint32 `inbound:"exclude-uid,omitempty"`
+ ExcludeUIDRange []string `inbound:"exclude-uid-range,omitempty"`
+ IncludeAndroidUser []int `inbound:"include-android-user,omitempty"`
+ IncludePackage []string `inbound:"include-package,omitempty"`
+ ExcludePackage []string `inbound:"exclude-package,omitempty"`
+ EndpointIndependentNat bool `inbound:"endpoint-independent-nat,omitempty"`
+ UDPTimeout int64 `inbound:"udp-timeout,omitempty"`
+ FileDescriptor int `inbound:"file-descriptor,omitempty"`
+
+ Inet4RouteAddress []string `inbound:"inet4-route-address,omitempty"`
+ Inet6RouteAddress []string `inbound:"inet6-route-address,omitempty"`
+ Inet4RouteExcludeAddress []string `inbound:"inet4-route-exclude-address,omitempty"`
+ Inet6RouteExcludeAddress []string `inbound:"inet6-route-exclude-address,omitempty"`
+}
+
+func (o TunOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type Tun struct {
+ *Base
+ config *TunOption
+ l *sing_tun.Listener
+ tun LC.Tun
+}
+
+func NewTun(options *TunOption) (*Tun, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ stack, exist := C.StackTypeMapping[strings.ToLower(options.Stack)]
+ if !exist {
+ return nil, errors.New("invalid tun stack")
+ }
+
+ routeAddress, err := LC.StringSliceToNetipPrefixSlice(options.RouteAddress)
+ if err != nil {
+ return nil, err
+ }
+ routeExcludeAddress, err := LC.StringSliceToNetipPrefixSlice(options.RouteExcludeAddress)
+ if err != nil {
+ return nil, err
+ }
+
+ inet4Address, err := LC.StringSliceToNetipPrefixSlice(options.Inet4Address)
+ if err != nil {
+ return nil, err
+ }
+ inet6Address, err := LC.StringSliceToNetipPrefixSlice(options.Inet6Address)
+ if err != nil {
+ return nil, err
+ }
+ inet4RouteAddress, err := LC.StringSliceToNetipPrefixSlice(options.Inet4RouteAddress)
+ if err != nil {
+ return nil, err
+ }
+ inet6RouteAddress, err := LC.StringSliceToNetipPrefixSlice(options.Inet6RouteAddress)
+ if err != nil {
+ return nil, err
+ }
+ inet4RouteExcludeAddress, err := LC.StringSliceToNetipPrefixSlice(options.Inet4RouteExcludeAddress)
+ if err != nil {
+ return nil, err
+ }
+ inet6RouteExcludeAddress, err := LC.StringSliceToNetipPrefixSlice(options.Inet6RouteExcludeAddress)
+ if err != nil {
+ return nil, err
+ }
+ return &Tun{
+ Base: base,
+ config: options,
+ tun: LC.Tun{
+ Enable: true,
+ Device: options.Device,
+ Stack: stack,
+ DNSHijack: options.DNSHijack,
+ AutoRoute: options.AutoRoute,
+ AutoDetectInterface: options.AutoDetectInterface,
+ MTU: options.MTU,
+ GSO: options.GSO,
+ GSOMaxSize: options.GSOMaxSize,
+ Inet4Address: inet4Address,
+ Inet6Address: inet6Address,
+ IPRoute2TableIndex: options.IPRoute2TableIndex,
+ IPRoute2RuleIndex: options.IPRoute2RuleIndex,
+ AutoRedirect: options.AutoRedirect,
+ AutoRedirectInputMark: options.AutoRedirectInputMark,
+ AutoRedirectOutputMark: options.AutoRedirectOutputMark,
+ StrictRoute: options.StrictRoute,
+ RouteAddress: routeAddress,
+ RouteAddressSet: options.RouteAddressSet,
+ RouteExcludeAddress: routeExcludeAddress,
+ RouteExcludeAddressSet: options.RouteExcludeAddressSet,
+ IncludeInterface: options.IncludeInterface,
+ ExcludeInterface: options.ExcludeInterface,
+ IncludeUID: options.IncludeUID,
+ IncludeUIDRange: options.IncludeUIDRange,
+ ExcludeUID: options.ExcludeUID,
+ ExcludeUIDRange: options.ExcludeUIDRange,
+ IncludeAndroidUser: options.IncludeAndroidUser,
+ IncludePackage: options.IncludePackage,
+ ExcludePackage: options.ExcludePackage,
+ EndpointIndependentNat: options.EndpointIndependentNat,
+ UDPTimeout: options.UDPTimeout,
+ FileDescriptor: options.FileDescriptor,
+
+ Inet4RouteAddress: inet4RouteAddress,
+ Inet6RouteAddress: inet6RouteAddress,
+ Inet4RouteExcludeAddress: inet4RouteExcludeAddress,
+ Inet6RouteExcludeAddress: inet6RouteExcludeAddress,
+ },
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (t *Tun) Config() C.InboundConfig {
+ return t.config
+}
+
+// Address implements constant.InboundListener
+func (t *Tun) Address() string {
+ return t.l.Address()
+}
+
+// Listen implements constant.InboundListener
+func (t *Tun) Listen(tunnel C.Tunnel) error {
+ var err error
+ t.l, err = sing_tun.New(t.tun, tunnel, t.Additions()...)
+ if err != nil {
+ return err
+ }
+ log.Infoln("Tun[%s] proxy listening at: %s", t.Name(), t.Address())
+ return nil
+}
+
+// Close implements constant.InboundListener
+func (t *Tun) Close() error {
+ return t.l.Close()
+}
+
+var _ C.InboundListener = (*Tun)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tunnel.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tunnel.go
new file mode 100644
index 0000000..2dfaac7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/tunnel.go
@@ -0,0 +1,98 @@
+package inbound
+
+import (
+ "fmt"
+
+ C "github.com/metacubex/mihomo/constant"
+ LT "github.com/metacubex/mihomo/listener/tunnel"
+ "github.com/metacubex/mihomo/log"
+)
+
+type TunnelOption struct {
+ BaseOption
+ Network []string `inbound:"network"`
+ Target string `inbound:"target"`
+}
+
+func (o TunnelOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type Tunnel struct {
+ *Base
+ config *TunnelOption
+ ttl *LT.Listener
+ tul *LT.PacketConn
+}
+
+func NewTunnel(options *TunnelOption) (*Tunnel, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ return &Tunnel{
+ Base: base,
+ config: options,
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (t *Tunnel) Config() C.InboundConfig {
+ return t.config
+}
+
+// Close implements constant.InboundListener
+func (t *Tunnel) Close() error {
+ var err error
+ if t.ttl != nil {
+ if tcpErr := t.ttl.Close(); tcpErr != nil {
+ err = tcpErr
+ }
+ }
+ if t.tul != nil {
+ if udpErr := t.tul.Close(); udpErr != nil {
+ if err == nil {
+ err = udpErr
+ } else {
+ return fmt.Errorf("close tcp err: %s, close udp err: %s", err.Error(), udpErr.Error())
+ }
+ }
+ }
+
+ return err
+}
+
+// Address implements constant.InboundListener
+func (t *Tunnel) Address() string {
+ if t.ttl != nil {
+ return t.ttl.Address()
+ }
+ if t.tul != nil {
+ return t.tul.Address()
+ }
+ return ""
+}
+
+// Listen implements constant.InboundListener
+func (t *Tunnel) Listen(tunnel C.Tunnel) error {
+ var err error
+ for _, network := range t.config.Network {
+ switch network {
+ case "tcp":
+ if t.ttl, err = LT.New(t.RawAddress(), t.config.Target, t.config.SpecialProxy, tunnel, t.Additions()...); err != nil {
+ return err
+ }
+ case "udp":
+ if t.tul, err = LT.NewUDP(t.RawAddress(), t.config.Target, t.config.SpecialProxy, tunnel, t.Additions()...); err != nil {
+ return err
+ }
+ default:
+ log.Warnln("unknown network type: %s, passed", network)
+ continue
+ }
+ log.Infoln("Tunnel[%s](%s/%s)proxy listening at: %s", t.Name(), network, t.config.Target, t.Address())
+ }
+ return nil
+}
+
+var _ C.InboundListener = (*Tunnel)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/vmess.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/vmess.go
new file mode 100644
index 0000000..226a54d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inbound/vmess.go
@@ -0,0 +1,103 @@
+package inbound
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/sing_vmess"
+ "github.com/metacubex/mihomo/log"
+)
+
+type VmessOption struct {
+ BaseOption
+ Users []VmessUser `inbound:"users"`
+ WsPath string `inbound:"ws-path,omitempty"`
+ Certificate string `inbound:"certificate,omitempty"`
+ PrivateKey string `inbound:"private-key,omitempty"`
+ MuxOption MuxOption `inbound:"mux-option,omitempty"`
+}
+
+type VmessUser struct {
+ Username string `inbound:"username,omitempty"`
+ UUID string `inbound:"uuid"`
+ AlterID int `inbound:"alterId"`
+}
+
+func (o VmessOption) Equal(config C.InboundConfig) bool {
+ return optionToString(o) == optionToString(config)
+}
+
+type Vmess struct {
+ *Base
+ config *VmessOption
+ l C.MultiAddrListener
+ vs LC.VmessServer
+}
+
+func NewVmess(options *VmessOption) (*Vmess, error) {
+ base, err := NewBase(&options.BaseOption)
+ if err != nil {
+ return nil, err
+ }
+ users := make([]LC.VmessUser, len(options.Users))
+ for i, v := range options.Users {
+ users[i] = LC.VmessUser{
+ Username: v.Username,
+ UUID: v.UUID,
+ AlterID: v.AlterID,
+ }
+ }
+ return &Vmess{
+ Base: base,
+ config: options,
+ vs: LC.VmessServer{
+ Enable: true,
+ Listen: base.RawAddress(),
+ Users: users,
+ WsPath: options.WsPath,
+ Certificate: options.Certificate,
+ PrivateKey: options.PrivateKey,
+ MuxOption: options.MuxOption.Build(),
+ },
+ }, nil
+}
+
+// Config implements constant.InboundListener
+func (v *Vmess) Config() C.InboundConfig {
+ return v.config
+}
+
+// Address implements constant.InboundListener
+func (v *Vmess) Address() string {
+ if v.l != nil {
+ for _, addr := range v.l.AddrList() {
+ return addr.String()
+ }
+ }
+ return ""
+}
+
+// Listen implements constant.InboundListener
+func (v *Vmess) Listen(tunnel C.Tunnel) error {
+ var err error
+ users := make([]LC.VmessUser, len(v.config.Users))
+ for i, v := range v.config.Users {
+ users[i] = LC.VmessUser{
+ Username: v.Username,
+ UUID: v.UUID,
+ AlterID: v.AlterID,
+ }
+ }
+ v.l, err = sing_vmess.New(v.vs, tunnel, v.Additions()...)
+ if err != nil {
+ return err
+ }
+ log.Infoln("Vmess[%s] proxy listening at: %s", v.Name(), v.Address())
+ return nil
+}
+
+// Close implements constant.InboundListener
+func (v *Vmess) Close() error {
+ return v.l.Close()
+}
+
+var _ C.InboundListener = (*Vmess)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/inner/tcp.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inner/tcp.go
new file mode 100644
index 0000000..ee34ada
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/inner/tcp.go
@@ -0,0 +1,47 @@
+package inner
+
+import (
+ "errors"
+ "net"
+ "net/netip"
+ "strconv"
+
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+var tunnel C.Tunnel
+
+func New(t C.Tunnel) {
+ tunnel = t
+}
+
+func HandleTcp(address string, proxy string) (conn net.Conn, err error) {
+ if tunnel == nil {
+ return nil, errors.New("tcp uninitialized")
+ }
+ // executor Parsed
+ conn1, conn2 := N.Pipe()
+
+ metadata := &C.Metadata{}
+ metadata.NetWork = C.TCP
+ metadata.Type = C.INNER
+ metadata.DNSMode = C.DNSNormal
+ metadata.Process = C.MihomoName
+ if proxy != "" {
+ metadata.SpecialProxy = proxy
+ }
+ if h, port, err := net.SplitHostPort(address); err == nil {
+ if port, err := strconv.ParseUint(port, 10, 16); err == nil {
+ metadata.DstPort = uint16(port)
+ }
+ if ip, err := netip.ParseAddr(h); err == nil {
+ metadata.DstIP = ip
+ } else {
+ metadata.Host = h
+ }
+ }
+
+ go tunnel.HandleTCPConn(conn2, metadata)
+ return conn1, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/listener.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/listener.go
new file mode 100644
index 0000000..2e25c8b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/listener.go
@@ -0,0 +1,727 @@
+package listener
+
+import (
+ "fmt"
+ "net"
+ "strconv"
+ "strings"
+ "sync"
+
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/http"
+ "github.com/metacubex/mihomo/listener/mixed"
+ "github.com/metacubex/mihomo/listener/redir"
+ embedSS "github.com/metacubex/mihomo/listener/shadowsocks"
+ "github.com/metacubex/mihomo/listener/sing_shadowsocks"
+ "github.com/metacubex/mihomo/listener/sing_tun"
+ "github.com/metacubex/mihomo/listener/sing_vmess"
+ "github.com/metacubex/mihomo/listener/socks"
+ "github.com/metacubex/mihomo/listener/tproxy"
+ "github.com/metacubex/mihomo/listener/tuic"
+ LT "github.com/metacubex/mihomo/listener/tunnel"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/samber/lo"
+)
+
+var (
+ allowLan = false
+ bindAddress = "*"
+
+ socksListener *socks.Listener
+ socksUDPListener *socks.UDPListener
+ httpListener *http.Listener
+ redirListener *redir.Listener
+ redirUDPListener *tproxy.UDPListener
+ tproxyListener *tproxy.Listener
+ tproxyUDPListener *tproxy.UDPListener
+ mixedListener *mixed.Listener
+ mixedUDPLister *socks.UDPListener
+ tunnelTCPListeners = map[string]*LT.Listener{}
+ tunnelUDPListeners = map[string]*LT.PacketConn{}
+ inboundListeners = map[string]C.InboundListener{}
+ tunLister *sing_tun.Listener
+ shadowSocksListener C.MultiAddrListener
+ vmessListener *sing_vmess.Listener
+ tuicListener *tuic.Listener
+
+ // lock for recreate function
+ socksMux sync.Mutex
+ httpMux sync.Mutex
+ redirMux sync.Mutex
+ tproxyMux sync.Mutex
+ mixedMux sync.Mutex
+ tunnelMux sync.Mutex
+ inboundMux sync.Mutex
+ tunMux sync.Mutex
+ ssMux sync.Mutex
+ vmessMux sync.Mutex
+ tuicMux sync.Mutex
+
+ LastTunConf LC.Tun
+ LastTuicConf LC.TuicServer
+)
+
+type Ports struct {
+ Port int `json:"port"`
+ SocksPort int `json:"socks-port"`
+ RedirPort int `json:"redir-port"`
+ TProxyPort int `json:"tproxy-port"`
+ MixedPort int `json:"mixed-port"`
+ ShadowSocksConfig string `json:"ss-config"`
+ VmessConfig string `json:"vmess-config"`
+}
+
+func GetTunConf() LC.Tun {
+ if tunLister == nil {
+ return LastTunConf
+ }
+ return tunLister.Config()
+}
+
+func GetTuicConf() LC.TuicServer {
+ if tuicListener == nil {
+ return LC.TuicServer{Enable: false}
+ }
+ return tuicListener.Config()
+}
+
+func AllowLan() bool {
+ return allowLan
+}
+
+func BindAddress() string {
+ return bindAddress
+}
+
+func SetAllowLan(al bool) {
+ allowLan = al
+}
+
+func SetBindAddress(host string) {
+ bindAddress = host
+}
+
+func ReCreateHTTP(port int, tunnel C.Tunnel) {
+ httpMux.Lock()
+ defer httpMux.Unlock()
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("Start HTTP server error: %s", err.Error())
+ }
+ }()
+
+ addr := genAddr(bindAddress, port, allowLan)
+
+ if httpListener != nil {
+ if httpListener.RawAddress() == addr {
+ return
+ }
+ httpListener.Close()
+ httpListener = nil
+ }
+
+ if portIsZero(addr) {
+ return
+ }
+
+ httpListener, err = http.New(addr, tunnel)
+ if err != nil {
+ log.Errorln("Start HTTP server error: %s", err.Error())
+ return
+ }
+
+ log.Infoln("HTTP proxy listening at: %s", httpListener.Address())
+}
+
+func ReCreateSocks(port int, tunnel C.Tunnel) {
+ socksMux.Lock()
+ defer socksMux.Unlock()
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("Start SOCKS server error: %s", err.Error())
+ }
+ }()
+
+ addr := genAddr(bindAddress, port, allowLan)
+
+ shouldTCPIgnore := false
+ shouldUDPIgnore := false
+
+ if socksListener != nil {
+ if socksListener.RawAddress() != addr {
+ socksListener.Close()
+ socksListener = nil
+ } else {
+ shouldTCPIgnore = true
+ }
+ }
+
+ if socksUDPListener != nil {
+ if socksUDPListener.RawAddress() != addr {
+ socksUDPListener.Close()
+ socksUDPListener = nil
+ } else {
+ shouldUDPIgnore = true
+ }
+ }
+
+ if shouldTCPIgnore && shouldUDPIgnore {
+ return
+ }
+
+ if portIsZero(addr) {
+ return
+ }
+
+ tcpListener, err := socks.New(addr, tunnel)
+ if err != nil {
+ return
+ }
+
+ udpListener, err := socks.NewUDP(addr, tunnel)
+ if err != nil {
+ tcpListener.Close()
+ return
+ }
+
+ socksListener = tcpListener
+ socksUDPListener = udpListener
+
+ log.Infoln("SOCKS proxy listening at: %s", socksListener.Address())
+}
+
+func ReCreateRedir(port int, tunnel C.Tunnel) {
+ redirMux.Lock()
+ defer redirMux.Unlock()
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("Start Redir server error: %s", err.Error())
+ }
+ }()
+
+ addr := genAddr(bindAddress, port, allowLan)
+
+ if redirListener != nil {
+ if redirListener.RawAddress() == addr {
+ return
+ }
+ redirListener.Close()
+ redirListener = nil
+ }
+
+ if redirUDPListener != nil {
+ if redirUDPListener.RawAddress() == addr {
+ return
+ }
+ redirUDPListener.Close()
+ redirUDPListener = nil
+ }
+
+ if portIsZero(addr) {
+ return
+ }
+
+ redirListener, err = redir.New(addr, tunnel)
+ if err != nil {
+ return
+ }
+
+ redirUDPListener, err = tproxy.NewUDP(addr, tunnel)
+ if err != nil {
+ log.Warnln("Failed to start Redir UDP Listener: %s", err)
+ }
+
+ log.Infoln("Redirect proxy listening at: %s", redirListener.Address())
+}
+
+func ReCreateShadowSocks(shadowSocksConfig string, tunnel C.Tunnel) {
+ ssMux.Lock()
+ defer ssMux.Unlock()
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("Start ShadowSocks server error: %s", err.Error())
+ }
+ }()
+
+ var ssConfig LC.ShadowsocksServer
+ if addr, cipher, password, err := embedSS.ParseSSURL(shadowSocksConfig); err == nil {
+ ssConfig = LC.ShadowsocksServer{
+ Enable: len(shadowSocksConfig) > 0,
+ Listen: addr,
+ Password: password,
+ Cipher: cipher,
+ Udp: true,
+ }
+ }
+
+ shouldIgnore := false
+
+ if shadowSocksListener != nil {
+ if shadowSocksListener.Config() != ssConfig.String() {
+ shadowSocksListener.Close()
+ shadowSocksListener = nil
+ } else {
+ shouldIgnore = true
+ }
+ }
+
+ if shouldIgnore {
+ return
+ }
+
+ if !ssConfig.Enable {
+ return
+ }
+
+ listener, err := sing_shadowsocks.New(ssConfig, tunnel)
+ if err != nil {
+ return
+ }
+
+ shadowSocksListener = listener
+
+ for _, addr := range shadowSocksListener.AddrList() {
+ log.Infoln("ShadowSocks proxy listening at: %s", addr.String())
+ }
+ return
+}
+
+func ReCreateVmess(vmessConfig string, tunnel C.Tunnel) {
+ vmessMux.Lock()
+ defer vmessMux.Unlock()
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("Start Vmess server error: %s", err.Error())
+ }
+ }()
+
+ var vsConfig LC.VmessServer
+ if addr, username, password, err := sing_vmess.ParseVmessURL(vmessConfig); err == nil {
+ vsConfig = LC.VmessServer{
+ Enable: len(vmessConfig) > 0,
+ Listen: addr,
+ Users: []LC.VmessUser{{Username: username, UUID: password, AlterID: 1}},
+ }
+ }
+
+ shouldIgnore := false
+
+ if vmessListener != nil {
+ if vmessListener.Config() != vsConfig.String() {
+ vmessListener.Close()
+ vmessListener = nil
+ } else {
+ shouldIgnore = true
+ }
+ }
+
+ if shouldIgnore {
+ return
+ }
+
+ if !vsConfig.Enable {
+ return
+ }
+
+ listener, err := sing_vmess.New(vsConfig, tunnel)
+ if err != nil {
+ return
+ }
+
+ vmessListener = listener
+
+ for _, addr := range vmessListener.AddrList() {
+ log.Infoln("Vmess proxy listening at: %s", addr.String())
+ }
+ return
+}
+
+func ReCreateTuic(config LC.TuicServer, tunnel C.Tunnel) {
+ tuicMux.Lock()
+ defer func() {
+ LastTuicConf = config
+ tuicMux.Unlock()
+ }()
+ shouldIgnore := false
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("Start Tuic server error: %s", err.Error())
+ }
+ }()
+
+ if tuicListener != nil {
+ if tuicListener.Config().String() != config.String() {
+ tuicListener.Close()
+ tuicListener = nil
+ } else {
+ shouldIgnore = true
+ }
+ }
+
+ if shouldIgnore {
+ return
+ }
+
+ if !config.Enable {
+ return
+ }
+
+ listener, err := tuic.New(config, tunnel)
+ if err != nil {
+ return
+ }
+
+ tuicListener = listener
+
+ for _, addr := range tuicListener.AddrList() {
+ log.Infoln("Tuic proxy listening at: %s", addr.String())
+ }
+ return
+}
+
+func ReCreateTProxy(port int, tunnel C.Tunnel) {
+ tproxyMux.Lock()
+ defer tproxyMux.Unlock()
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("Start TProxy server error: %s", err.Error())
+ }
+ }()
+
+ addr := genAddr(bindAddress, port, allowLan)
+
+ if tproxyListener != nil {
+ if tproxyListener.RawAddress() == addr {
+ return
+ }
+ tproxyListener.Close()
+ tproxyListener = nil
+ }
+
+ if tproxyUDPListener != nil {
+ if tproxyUDPListener.RawAddress() == addr {
+ return
+ }
+ tproxyUDPListener.Close()
+ tproxyUDPListener = nil
+ }
+
+ if portIsZero(addr) {
+ return
+ }
+
+ tproxyListener, err = tproxy.New(addr, tunnel)
+ if err != nil {
+ return
+ }
+
+ tproxyUDPListener, err = tproxy.NewUDP(addr, tunnel)
+ if err != nil {
+ log.Warnln("Failed to start TProxy UDP Listener: %s", err)
+ }
+
+ log.Infoln("TProxy server listening at: %s", tproxyListener.Address())
+}
+
+func ReCreateMixed(port int, tunnel C.Tunnel) {
+ mixedMux.Lock()
+ defer mixedMux.Unlock()
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("Start Mixed(http+socks) server error: %s", err.Error())
+ }
+ }()
+
+ addr := genAddr(bindAddress, port, allowLan)
+
+ shouldTCPIgnore := false
+ shouldUDPIgnore := false
+
+ if mixedListener != nil {
+ if mixedListener.RawAddress() != addr {
+ mixedListener.Close()
+ mixedListener = nil
+ } else {
+ shouldTCPIgnore = true
+ }
+ }
+ if mixedUDPLister != nil {
+ if mixedUDPLister.RawAddress() != addr {
+ mixedUDPLister.Close()
+ mixedUDPLister = nil
+ } else {
+ shouldUDPIgnore = true
+ }
+ }
+
+ if shouldTCPIgnore && shouldUDPIgnore {
+ return
+ }
+
+ if portIsZero(addr) {
+ return
+ }
+
+ mixedListener, err = mixed.New(addr, tunnel)
+ if err != nil {
+ return
+ }
+
+ mixedUDPLister, err = socks.NewUDP(addr, tunnel)
+ if err != nil {
+ mixedListener.Close()
+ return
+ }
+
+ log.Infoln("Mixed(http+socks) proxy listening at: %s", mixedListener.Address())
+}
+
+func ReCreateTun(tunConf LC.Tun, tunnel C.Tunnel) {
+ tunConf.Sort()
+
+ tunMux.Lock()
+ defer func() {
+ LastTunConf = tunConf
+ tunMux.Unlock()
+ }()
+
+ var err error
+ defer func() {
+ if err != nil {
+ log.Errorln("Start TUN listening error: %s", err.Error())
+ tunConf.Enable = false
+ }
+ }()
+
+ if tunConf.Equal(LastTunConf) {
+ if tunLister != nil {
+ tunLister.FlushDefaultInterface()
+ }
+ return
+ }
+
+ closeTunListener()
+
+ if !tunConf.Enable {
+ return
+ }
+
+ lister, err := sing_tun.New(tunConf, tunnel)
+ if err != nil {
+ return
+ }
+ tunLister = lister
+
+ log.Infoln("[TUN] Tun adapter listening at: %s", tunLister.Address())
+}
+
+func PatchTunnel(tunnels []LC.Tunnel, tunnel C.Tunnel) {
+ tunnelMux.Lock()
+ defer tunnelMux.Unlock()
+
+ type addrProxy struct {
+ network string
+ addr string
+ target string
+ proxy string
+ }
+
+ tcpOld := lo.Map(
+ lo.Keys(tunnelTCPListeners),
+ func(key string, _ int) addrProxy {
+ parts := strings.Split(key, "/")
+ return addrProxy{
+ network: "tcp",
+ addr: parts[0],
+ target: parts[1],
+ proxy: parts[2],
+ }
+ },
+ )
+ udpOld := lo.Map(
+ lo.Keys(tunnelUDPListeners),
+ func(key string, _ int) addrProxy {
+ parts := strings.Split(key, "/")
+ return addrProxy{
+ network: "udp",
+ addr: parts[0],
+ target: parts[1],
+ proxy: parts[2],
+ }
+ },
+ )
+ oldElm := lo.Union(tcpOld, udpOld)
+
+ newElm := lo.FlatMap(
+ tunnels,
+ func(tunnel LC.Tunnel, _ int) []addrProxy {
+ return lo.Map(
+ tunnel.Network,
+ func(network string, _ int) addrProxy {
+ return addrProxy{
+ network: network,
+ addr: tunnel.Address,
+ target: tunnel.Target,
+ proxy: tunnel.Proxy,
+ }
+ },
+ )
+ },
+ )
+
+ needClose, needCreate := lo.Difference(oldElm, newElm)
+
+ for _, elm := range needClose {
+ key := fmt.Sprintf("%s/%s/%s", elm.addr, elm.target, elm.proxy)
+ if elm.network == "tcp" {
+ tunnelTCPListeners[key].Close()
+ delete(tunnelTCPListeners, key)
+ } else {
+ tunnelUDPListeners[key].Close()
+ delete(tunnelUDPListeners, key)
+ }
+ }
+
+ for _, elm := range needCreate {
+ key := fmt.Sprintf("%s/%s/%s", elm.addr, elm.target, elm.proxy)
+ if elm.network == "tcp" {
+ l, err := LT.New(elm.addr, elm.target, elm.proxy, tunnel)
+ if err != nil {
+ log.Errorln("Start tunnel %s error: %s", elm.target, err.Error())
+ continue
+ }
+ tunnelTCPListeners[key] = l
+ log.Infoln("Tunnel(tcp/%s) proxy %s listening at: %s", elm.target, elm.proxy, tunnelTCPListeners[key].Address())
+ } else {
+ l, err := LT.NewUDP(elm.addr, elm.target, elm.proxy, tunnel)
+ if err != nil {
+ log.Errorln("Start tunnel %s error: %s", elm.target, err.Error())
+ continue
+ }
+ tunnelUDPListeners[key] = l
+ log.Infoln("Tunnel(udp/%s) proxy %s listening at: %s", elm.target, elm.proxy, tunnelUDPListeners[key].Address())
+ }
+ }
+}
+
+func PatchInboundListeners(newListenerMap map[string]C.InboundListener, tunnel C.Tunnel, dropOld bool) {
+ inboundMux.Lock()
+ defer inboundMux.Unlock()
+
+ for name, newListener := range newListenerMap {
+ if oldListener, ok := inboundListeners[name]; ok {
+ if !oldListener.Config().Equal(newListener.Config()) {
+ _ = oldListener.Close()
+ } else {
+ continue
+ }
+ }
+ if err := newListener.Listen(tunnel); err != nil {
+ log.Errorln("Listener %s listen err: %s", name, err.Error())
+ continue
+ }
+ inboundListeners[name] = newListener
+ }
+
+ if dropOld {
+ for name, oldListener := range inboundListeners {
+ if _, ok := newListenerMap[name]; !ok {
+ _ = oldListener.Close()
+ delete(inboundListeners, name)
+ }
+ }
+ }
+}
+
+// GetPorts return the ports of proxy servers
+func GetPorts() *Ports {
+ ports := &Ports{}
+
+ if httpListener != nil {
+ _, portStr, _ := net.SplitHostPort(httpListener.Address())
+ port, _ := strconv.Atoi(portStr)
+ ports.Port = port
+ }
+
+ if socksListener != nil {
+ _, portStr, _ := net.SplitHostPort(socksListener.Address())
+ port, _ := strconv.Atoi(portStr)
+ ports.SocksPort = port
+ }
+
+ if redirListener != nil {
+ _, portStr, _ := net.SplitHostPort(redirListener.Address())
+ port, _ := strconv.Atoi(portStr)
+ ports.RedirPort = port
+ }
+
+ if tproxyListener != nil {
+ _, portStr, _ := net.SplitHostPort(tproxyListener.Address())
+ port, _ := strconv.Atoi(portStr)
+ ports.TProxyPort = port
+ }
+
+ if mixedListener != nil {
+ _, portStr, _ := net.SplitHostPort(mixedListener.Address())
+ port, _ := strconv.Atoi(portStr)
+ ports.MixedPort = port
+ }
+
+ if shadowSocksListener != nil {
+ ports.ShadowSocksConfig = shadowSocksListener.Config()
+ }
+
+ if vmessListener != nil {
+ ports.VmessConfig = vmessListener.Config()
+ }
+
+ return ports
+}
+
+func portIsZero(addr string) bool {
+ _, port, err := net.SplitHostPort(addr)
+ if port == "0" || port == "" || err != nil {
+ return true
+ }
+ return false
+}
+
+func genAddr(host string, port int, allowLan bool) string {
+ if allowLan {
+ if host == "*" {
+ return fmt.Sprintf(":%d", port)
+ }
+ return fmt.Sprintf("%s:%d", host, port)
+ }
+
+ return fmt.Sprintf("127.0.0.1:%d", port)
+}
+
+func closeTunListener() {
+ if tunLister != nil {
+ tunLister.Close()
+ tunLister = nil
+ }
+}
+
+func Cleanup() {
+ closeTunListener()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/mixed/mixed.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/mixed/mixed.go
new file mode 100644
index 0000000..5ac6301
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/mixed/mixed.go
@@ -0,0 +1,103 @@
+package mixed
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/auth"
+ C "github.com/metacubex/mihomo/constant"
+ authStore "github.com/metacubex/mihomo/listener/auth"
+ "github.com/metacubex/mihomo/listener/http"
+ "github.com/metacubex/mihomo/listener/socks"
+ "github.com/metacubex/mihomo/transport/socks4"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type Listener struct {
+ listener net.Listener
+ addr string
+ closed bool
+}
+
+// RawAddress implements C.Listener
+func (l *Listener) RawAddress() string {
+ return l.addr
+}
+
+// Address implements C.Listener
+func (l *Listener) Address() string {
+ return l.listener.Addr().String()
+}
+
+// Close implements C.Listener
+func (l *Listener) Close() error {
+ l.closed = true
+ return l.listener.Close()
+}
+
+func New(addr string, tunnel C.Tunnel, additions ...inbound.Addition) (*Listener, error) {
+ return NewWithAuthenticator(addr, tunnel, authStore.Default, additions...)
+}
+
+func NewWithAuthenticator(addr string, tunnel C.Tunnel, store auth.AuthStore, additions ...inbound.Addition) (*Listener, error) {
+ isDefault := false
+ if len(additions) == 0 {
+ isDefault = true
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-MIXED"),
+ inbound.WithSpecialRules(""),
+ }
+ }
+
+ l, err := inbound.Listen("tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ ml := &Listener{
+ listener: l,
+ addr: addr,
+ }
+ go func() {
+ for {
+ c, err := ml.listener.Accept()
+ if err != nil {
+ if ml.closed {
+ break
+ }
+ continue
+ }
+ store := store
+ if isDefault || store == authStore.Default { // only apply on default listener
+ if !inbound.IsRemoteAddrDisAllowed(c.RemoteAddr()) {
+ _ = c.Close()
+ continue
+ }
+ if inbound.SkipAuthRemoteAddr(c.RemoteAddr()) {
+ store = authStore.Nil
+ }
+ }
+ go handleConn(c, tunnel, store, additions...)
+ }
+ }()
+
+ return ml, nil
+}
+
+func handleConn(conn net.Conn, tunnel C.Tunnel, store auth.AuthStore, additions ...inbound.Addition) {
+ bufConn := N.NewBufferedConn(conn)
+ head, err := bufConn.Peek(1)
+ if err != nil {
+ return
+ }
+
+ switch head[0] {
+ case socks4.Version:
+ socks.HandleSocks4(bufConn, tunnel, store, additions...)
+ case socks5.Version:
+ socks.HandleSocks5(bufConn, tunnel, store, additions...)
+ default:
+ http.HandleConn(bufConn, tunnel, store, additions...)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/parse.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/parse.go
new file mode 100644
index 0000000..1c8b646
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/parse.go
@@ -0,0 +1,113 @@
+package listener
+
+import (
+ "fmt"
+
+ "github.com/metacubex/mihomo/common/structure"
+ C "github.com/metacubex/mihomo/constant"
+ IN "github.com/metacubex/mihomo/listener/inbound"
+)
+
+func ParseListener(mapping map[string]any) (C.InboundListener, error) {
+ decoder := structure.NewDecoder(structure.Option{TagName: "inbound", WeaklyTypedInput: true, KeyReplacer: structure.DefaultKeyReplacer})
+ proxyType, existType := mapping["type"].(string)
+ if !existType {
+ return nil, fmt.Errorf("missing type")
+ }
+
+ var (
+ listener C.InboundListener
+ err error
+ )
+ switch proxyType {
+ case "socks":
+ socksOption := &IN.SocksOption{UDP: true}
+ err = decoder.Decode(mapping, socksOption)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewSocks(socksOption)
+ case "http":
+ httpOption := &IN.HTTPOption{}
+ err = decoder.Decode(mapping, httpOption)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewHTTP(httpOption)
+ case "tproxy":
+ tproxyOption := &IN.TProxyOption{UDP: true}
+ err = decoder.Decode(mapping, tproxyOption)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewTProxy(tproxyOption)
+ case "redir":
+ redirOption := &IN.RedirOption{}
+ err = decoder.Decode(mapping, redirOption)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewRedir(redirOption)
+ case "mixed":
+ mixedOption := &IN.MixedOption{UDP: true}
+ err = decoder.Decode(mapping, mixedOption)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewMixed(mixedOption)
+ case "tunnel":
+ tunnelOption := &IN.TunnelOption{}
+ err = decoder.Decode(mapping, tunnelOption)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewTunnel(tunnelOption)
+ case "tun":
+ tunOption := &IN.TunOption{
+ Stack: C.TunGvisor.String(),
+ DNSHijack: []string{"0.0.0.0:53"}, // default hijack all dns query
+ }
+ err = decoder.Decode(mapping, tunOption)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewTun(tunOption)
+ case "shadowsocks":
+ shadowsocksOption := &IN.ShadowSocksOption{UDP: true}
+ err = decoder.Decode(mapping, shadowsocksOption)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewShadowSocks(shadowsocksOption)
+ case "vmess":
+ vmessOption := &IN.VmessOption{}
+ err = decoder.Decode(mapping, vmessOption)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewVmess(vmessOption)
+ case "hysteria2":
+ hysteria2Option := &IN.Hysteria2Option{}
+ err = decoder.Decode(mapping, hysteria2Option)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewHysteria2(hysteria2Option)
+ case "tuic":
+ tuicOption := &IN.TuicOption{
+ MaxIdleTime: 15000,
+ AuthenticationTimeout: 1000,
+ ALPN: []string{"h3"},
+ MaxUdpRelayPacketSize: 1500,
+ CongestionController: "bbr",
+ }
+ err = decoder.Decode(mapping, tuicOption)
+ if err != nil {
+ return nil, err
+ }
+ listener, err = IN.NewTuic(tuicOption)
+ default:
+ return nil, fmt.Errorf("unsupport proxy type: %s", proxyType)
+ }
+ return listener, err
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp.go
new file mode 100644
index 0000000..4736318
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp.go
@@ -0,0 +1,75 @@
+package redir
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/component/keepalive"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type Listener struct {
+ listener net.Listener
+ addr string
+ closed bool
+}
+
+// RawAddress implements C.Listener
+func (l *Listener) RawAddress() string {
+ return l.addr
+}
+
+// Address implements C.Listener
+func (l *Listener) Address() string {
+ return l.listener.Addr().String()
+}
+
+// Close implements C.Listener
+func (l *Listener) Close() error {
+ l.closed = true
+ return l.listener.Close()
+}
+
+func New(addr string, tunnel C.Tunnel, additions ...inbound.Addition) (*Listener, error) {
+ if len(additions) == 0 {
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-REDIR"),
+ inbound.WithSpecialRules(""),
+ }
+ }
+
+ l, err := net.Listen("tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ rl := &Listener{
+ listener: l,
+ addr: addr,
+ }
+
+ go func() {
+ for {
+ c, err := l.Accept()
+ if err != nil {
+ if rl.closed {
+ break
+ }
+ continue
+ }
+ go handleRedir(c, tunnel, additions...)
+ }
+ }()
+
+ return rl, nil
+}
+
+func handleRedir(conn net.Conn, tunnel C.Tunnel, additions ...inbound.Addition) {
+ target, err := parserPacket(conn)
+ if err != nil {
+ conn.Close()
+ return
+ }
+ keepalive.TCPKeepAlive(conn)
+ tunnel.HandleTCPConn(inbound.NewSocket(target, conn, C.REDIR, additions...))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_darwin.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_darwin.go
new file mode 100644
index 0000000..6e1821b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_darwin.go
@@ -0,0 +1,58 @@
+package redir
+
+import (
+ "net"
+ "syscall"
+ "unsafe"
+
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+func parserPacket(c net.Conn) (socks5.Addr, error) {
+ const (
+ PfInout = 0
+ PfIn = 1
+ PfOut = 2
+ IOCOut = 0x40000000
+ IOCIn = 0x80000000
+ IOCInOut = IOCIn | IOCOut
+ IOCPARMMask = 0x1FFF
+ LEN = 4*16 + 4*4 + 4*1
+ // #define _IOC(inout,group,num,len) (inout | ((len & IOCPARMMask) << 16) | ((group) << 8) | (num))
+ // #define _IOWR(g,n,t) _IOC(IOCInOut, (g), (n), sizeof(t))
+ // #define DIOCNATLOOK _IOWR('D', 23, struct pfioc_natlook)
+ DIOCNATLOOK = IOCInOut | ((LEN & IOCPARMMask) << 16) | ('D' << 8) | 23
+ )
+
+ fd, err := syscall.Open("/dev/pf", 0, syscall.O_RDONLY)
+ if err != nil {
+ return nil, err
+ }
+ defer syscall.Close(fd)
+
+ nl := struct { // struct pfioc_natlook
+ saddr, daddr, rsaddr, rdaddr [16]byte
+ sxport, dxport, rsxport, rdxport [4]byte
+ af, proto, protoVariant, direction uint8
+ }{
+ af: syscall.AF_INET,
+ proto: syscall.IPPROTO_TCP,
+ direction: PfOut,
+ }
+ saddr := c.RemoteAddr().(*net.TCPAddr)
+ daddr := c.LocalAddr().(*net.TCPAddr)
+ copy(nl.saddr[:], saddr.IP)
+ copy(nl.daddr[:], daddr.IP)
+ nl.sxport[0], nl.sxport[1] = byte(saddr.Port>>8), byte(saddr.Port)
+ nl.dxport[0], nl.dxport[1] = byte(daddr.Port>>8), byte(daddr.Port)
+
+ if _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), DIOCNATLOOK, uintptr(unsafe.Pointer(&nl))); errno != 0 {
+ return nil, errno
+ }
+
+ addr := make([]byte, 1+net.IPv4len+2)
+ addr[0] = socks5.AtypIPv4
+ copy(addr[1:1+net.IPv4len], nl.rdaddr[:4])
+ copy(addr[1+net.IPv4len:], nl.rdxport[:2])
+ return addr, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_freebsd.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_freebsd.go
new file mode 100644
index 0000000..9eb199f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_freebsd.go
@@ -0,0 +1,66 @@
+package redir
+
+import (
+ "encoding/binary"
+ "errors"
+ "net"
+ "net/netip"
+ "syscall"
+ "unsafe"
+
+ "github.com/metacubex/mihomo/transport/socks5"
+
+ "golang.org/x/sys/unix"
+)
+
+const (
+ SO_ORIGINAL_DST = 80 // from linux/include/uapi/linux/netfilter_ipv4.h
+ IP6T_SO_ORIGINAL_DST = 80 // from linux/include/uapi/linux/netfilter_ipv6/ip6_tables.h
+)
+
+func parserPacket(conn net.Conn) (socks5.Addr, error) {
+ c, ok := conn.(*net.TCPConn)
+ if !ok {
+ return nil, errors.New("only work with TCP connection")
+ }
+
+ rc, err := c.SyscallConn()
+ if err != nil {
+ return nil, err
+ }
+
+ var addr netip.AddrPort
+
+ rc.Control(func(fd uintptr) {
+ if ip4 := c.LocalAddr().(*net.TCPAddr).IP.To4(); ip4 != nil {
+ addr, err = getorigdst(fd)
+ } else {
+ addr, err = getorigdst6(fd)
+ }
+ })
+
+ return socks5.AddrFromStdAddrPort(addr), err
+}
+
+// Call getorigdst() from linux/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
+func getorigdst(fd uintptr) (netip.AddrPort, error) {
+ addr := unix.RawSockaddrInet4{}
+ size := uint32(unsafe.Sizeof(addr))
+ _, _, err := syscall.Syscall6(syscall.SYS_GETSOCKOPT, fd, syscall.IPPROTO_IP, SO_ORIGINAL_DST, uintptr(unsafe.Pointer(&addr)), uintptr(unsafe.Pointer(&size)), 0)
+ if err != 0 {
+ return netip.AddrPort{}, err
+ }
+ port := binary.BigEndian.Uint16((*(*[2]byte)(unsafe.Pointer(&addr.Port)))[:])
+ return netip.AddrPortFrom(netip.AddrFrom4(addr.Addr), port), nil
+}
+
+func getorigdst6(fd uintptr) (netip.AddrPort, error) {
+ addr := unix.RawSockaddrInet6{}
+ size := uint32(unsafe.Sizeof(addr))
+ _, _, err := syscall.Syscall6(syscall.SYS_GETSOCKOPT, fd, syscall.IPPROTO_IPV6, IP6T_SO_ORIGINAL_DST, uintptr(unsafe.Pointer(&addr)), uintptr(unsafe.Pointer(&size)), 0)
+ if err != 0 {
+ return netip.AddrPort{}, err
+ }
+ port := binary.BigEndian.Uint16((*(*[2]byte)(unsafe.Pointer(&addr.Port)))[:])
+ return netip.AddrPortFrom(netip.AddrFrom16(addr.Addr), port), nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_linux.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_linux.go
new file mode 100644
index 0000000..fce7467
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_linux.go
@@ -0,0 +1,64 @@
+package redir
+
+import (
+ "encoding/binary"
+ "errors"
+ "net"
+ "net/netip"
+ "syscall"
+ "unsafe"
+
+ "github.com/metacubex/mihomo/transport/socks5"
+
+ "golang.org/x/sys/unix"
+)
+
+const (
+ SO_ORIGINAL_DST = 80 // from linux/include/uapi/linux/netfilter_ipv4.h
+ IP6T_SO_ORIGINAL_DST = 80 // from linux/include/uapi/linux/netfilter_ipv6/ip6_tables.h
+)
+
+func parserPacket(conn net.Conn) (socks5.Addr, error) {
+ c, ok := conn.(*net.TCPConn)
+ if !ok {
+ return nil, errors.New("only work with TCP connection")
+ }
+
+ rc, err := c.SyscallConn()
+ if err != nil {
+ return nil, err
+ }
+
+ var addr netip.AddrPort
+
+ rc.Control(func(fd uintptr) {
+ if ip4 := c.LocalAddr().(*net.TCPAddr).IP.To4(); ip4 != nil {
+ addr, err = getorigdst(fd)
+ } else {
+ addr, err = getorigdst6(fd)
+ }
+ })
+
+ return socks5.AddrFromStdAddrPort(addr), err
+}
+
+// Call getorigdst() from linux/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
+func getorigdst(fd uintptr) (netip.AddrPort, error) {
+ addr := unix.RawSockaddrInet4{}
+ size := uint32(unsafe.Sizeof(addr))
+ if err := socketcall(GETSOCKOPT, fd, syscall.IPPROTO_IP, SO_ORIGINAL_DST, uintptr(unsafe.Pointer(&addr)), uintptr(unsafe.Pointer(&size)), 0); err != nil {
+ return netip.AddrPort{}, err
+ }
+ port := binary.BigEndian.Uint16((*(*[2]byte)(unsafe.Pointer(&addr.Port)))[:])
+ return netip.AddrPortFrom(netip.AddrFrom4(addr.Addr), port), nil
+}
+
+func getorigdst6(fd uintptr) (netip.AddrPort, error) {
+ addr := unix.RawSockaddrInet6{}
+ size := uint32(unsafe.Sizeof(addr))
+ if err := socketcall(GETSOCKOPT, fd, syscall.IPPROTO_IPV6, IP6T_SO_ORIGINAL_DST, uintptr(unsafe.Pointer(&addr)), uintptr(unsafe.Pointer(&size)), 0); err != nil {
+ return netip.AddrPort{}, err
+ }
+ port := binary.BigEndian.Uint16((*(*[2]byte)(unsafe.Pointer(&addr.Port)))[:])
+ return netip.AddrPortFrom(netip.AddrFrom16(addr.Addr), port), nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_linux_386.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_linux_386.go
new file mode 100644
index 0000000..32f692d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_linux_386.go
@@ -0,0 +1,17 @@
+package redir
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+const GETSOCKOPT = 15 // https://golang.org/src/syscall/syscall_linux_386.go#L183
+
+func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) error {
+ var a [6]uintptr
+ a[0], a[1], a[2], a[3], a[4], a[5] = a0, a1, a2, a3, a4, a5
+ if _, _, errno := syscall.Syscall6(syscall.SYS_SOCKETCALL, call, uintptr(unsafe.Pointer(&a)), 0, 0, 0, 0); errno != 0 {
+ return errno
+ }
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_linux_other.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_linux_other.go
new file mode 100644
index 0000000..b8c7de8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_linux_other.go
@@ -0,0 +1,14 @@
+//go:build linux && !386
+
+package redir
+
+import "syscall"
+
+const GETSOCKOPT = syscall.SYS_GETSOCKOPT
+
+func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) error {
+ if _, _, errno := syscall.Syscall6(call, a0, a1, a2, a3, a4, a5); errno != 0 {
+ return errno
+ }
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_other.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_other.go
new file mode 100644
index 0000000..ae3bebf
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/redir/tcp_other.go
@@ -0,0 +1,14 @@
+//go:build !darwin && !linux && !freebsd
+
+package redir
+
+import (
+ "errors"
+ "net"
+
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+func parserPacket(conn net.Conn) (socks5.Addr, error) {
+ return nil, errors.New("system not support yet")
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/shadowsocks/tcp.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/shadowsocks/tcp.go
new file mode 100644
index 0000000..b150e4c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/shadowsocks/tcp.go
@@ -0,0 +1,119 @@
+package shadowsocks
+
+import (
+ "net"
+ "strings"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/transport/shadowsocks/core"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type Listener struct {
+ closed bool
+ config LC.ShadowsocksServer
+ listeners []net.Listener
+ udpListeners []*UDPListener
+ pickCipher core.Cipher
+}
+
+var _listener *Listener
+
+func New(config LC.ShadowsocksServer, tunnel C.Tunnel, additions ...inbound.Addition) (*Listener, error) {
+ pickCipher, err := core.PickCipher(config.Cipher, nil, config.Password)
+ if err != nil {
+ return nil, err
+ }
+
+ sl := &Listener{false, config, nil, nil, pickCipher}
+ _listener = sl
+
+ for _, addr := range strings.Split(config.Listen, ",") {
+ addr := addr
+
+ if config.Udp {
+ //UDP
+ ul, err := NewUDP(addr, pickCipher, tunnel, additions...)
+ if err != nil {
+ return nil, err
+ }
+ sl.udpListeners = append(sl.udpListeners, ul)
+ }
+
+ //TCP
+ l, err := inbound.Listen("tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+ sl.listeners = append(sl.listeners, l)
+
+ go func() {
+ for {
+ c, err := l.Accept()
+ if err != nil {
+ if sl.closed {
+ break
+ }
+ continue
+ }
+ go sl.HandleConn(c, tunnel, additions...)
+ }
+ }()
+ }
+
+ return sl, nil
+}
+
+func (l *Listener) Close() error {
+ var retErr error
+ for _, lis := range l.listeners {
+ err := lis.Close()
+ if err != nil {
+ retErr = err
+ }
+ }
+ for _, lis := range l.udpListeners {
+ err := lis.Close()
+ if err != nil {
+ retErr = err
+ }
+ }
+ return retErr
+}
+
+func (l *Listener) Config() string {
+ return l.config.String()
+}
+
+func (l *Listener) AddrList() (addrList []net.Addr) {
+ for _, lis := range l.listeners {
+ addrList = append(addrList, lis.Addr())
+ }
+ for _, lis := range l.udpListeners {
+ addrList = append(addrList, lis.LocalAddr())
+ }
+ return
+}
+
+func (l *Listener) HandleConn(conn net.Conn, tunnel C.Tunnel, additions ...inbound.Addition) {
+ conn = l.pickCipher.StreamConn(conn)
+ conn = N.NewDeadlineConn(conn) // embed ss can't handle readDeadline correctly
+
+ target, err := socks5.ReadAddr0(conn)
+ if err != nil {
+ _ = conn.Close()
+ return
+ }
+ tunnel.HandleTCPConn(inbound.NewSocket(target, conn, C.SHADOWSOCKS, additions...))
+}
+
+func HandleShadowSocks(conn net.Conn, tunnel C.Tunnel, additions ...inbound.Addition) bool {
+ if _listener != nil && _listener.pickCipher != nil {
+ go _listener.HandleConn(conn, tunnel, additions...)
+ return true
+ }
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/shadowsocks/udp.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/shadowsocks/udp.go
new file mode 100644
index 0000000..77932ed
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/shadowsocks/udp.go
@@ -0,0 +1,80 @@
+package shadowsocks
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/sockopt"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/transport/shadowsocks/core"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type UDPListener struct {
+ packetConn net.PacketConn
+ closed bool
+}
+
+func NewUDP(addr string, pickCipher core.Cipher, tunnel C.Tunnel, additions ...inbound.Addition) (*UDPListener, error) {
+ l, err := net.ListenPacket("udp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ err = sockopt.UDPReuseaddr(l.(*net.UDPConn))
+ if err != nil {
+ log.Warnln("Failed to Reuse UDP Address: %s", err)
+ }
+
+ sl := &UDPListener{l, false}
+ conn := pickCipher.PacketConn(N.NewEnhancePacketConn(l))
+ go func() {
+ for {
+ data, put, remoteAddr, err := conn.WaitReadFrom()
+ if err != nil {
+ if put != nil {
+ put()
+ }
+ if sl.closed {
+ break
+ }
+ continue
+ }
+ handleSocksUDP(conn, tunnel, data, put, remoteAddr, additions...)
+ }
+ }()
+
+ return sl, nil
+}
+
+func (l *UDPListener) Close() error {
+ l.closed = true
+ return l.packetConn.Close()
+}
+
+func (l *UDPListener) LocalAddr() net.Addr {
+ return l.packetConn.LocalAddr()
+}
+
+func handleSocksUDP(pc net.PacketConn, tunnel C.Tunnel, buf []byte, put func(), addr net.Addr, additions ...inbound.Addition) {
+ tgtAddr := socks5.SplitAddr(buf)
+ if tgtAddr == nil {
+ // Unresolved UDP packet, return buffer to the pool
+ if put != nil {
+ put()
+ }
+ return
+ }
+ target := tgtAddr
+ payload := buf[len(tgtAddr):]
+
+ packet := &packet{
+ pc: pc,
+ rAddr: addr,
+ payload: payload,
+ put: put,
+ }
+ tunnel.HandleUDPPacket(inbound.NewPacket(target, packet, C.SHADOWSOCKS, additions...))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/shadowsocks/utils.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/shadowsocks/utils.go
new file mode 100644
index 0000000..5d6a297
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/shadowsocks/utils.go
@@ -0,0 +1,62 @@
+package shadowsocks
+
+import (
+ "bytes"
+ "errors"
+ "net"
+ "net/url"
+
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type packet struct {
+ pc net.PacketConn
+ rAddr net.Addr
+ payload []byte
+ put func()
+}
+
+func (c *packet) Data() []byte {
+ return c.payload
+}
+
+// WriteBack wirtes UDP packet with source(ip, port) = `addr`
+func (c *packet) WriteBack(b []byte, addr net.Addr) (n int, err error) {
+ if addr == nil {
+ err = errors.New("address is invalid")
+ return
+ }
+ packet := bytes.Join([][]byte{socks5.ParseAddrToSocksAddr(addr), b}, []byte{})
+ return c.pc.WriteTo(packet, c.rAddr)
+}
+
+// LocalAddr returns the source IP/Port of UDP Packet
+func (c *packet) LocalAddr() net.Addr {
+ return c.rAddr
+}
+
+func (c *packet) Drop() {
+ if c.put != nil {
+ c.put()
+ c.put = nil
+ }
+ c.payload = nil
+}
+
+func (c *packet) InAddr() net.Addr {
+ return c.pc.LocalAddr()
+}
+
+func ParseSSURL(s string) (addr, cipher, password string, err error) {
+ u, err := url.Parse(s)
+ if err != nil {
+ return
+ }
+
+ addr = u.Host
+ if u.User != nil {
+ cipher = u.User.Username()
+ password, _ = u.User.Password()
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing/context.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing/context.go
new file mode 100644
index 0000000..e1e8b45
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing/context.go
@@ -0,0 +1,31 @@
+package sing
+
+import (
+ "context"
+ "golang.org/x/exp/slices"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+
+ "github.com/sagernet/sing/common/auth"
+)
+
+type contextKey string
+
+var ctxKeyAdditions = contextKey("Additions")
+
+func WithAdditions(ctx context.Context, additions ...inbound.Addition) context.Context {
+ return context.WithValue(ctx, ctxKeyAdditions, additions)
+}
+
+func getAdditions(ctx context.Context) (additions []inbound.Addition) {
+ if v := ctx.Value(ctxKeyAdditions); v != nil {
+ if a, ok := v.([]inbound.Addition); ok {
+ additions = a
+ }
+ }
+ if user, ok := auth.UserFromContext[string](ctx); ok {
+ additions = slices.Clone(additions)
+ additions = append(additions, inbound.WithInUser(user))
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing/sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing/sing.go
new file mode 100644
index 0000000..0d4bb92
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing/sing.go
@@ -0,0 +1,268 @@
+package sing
+
+import (
+ "context"
+ "errors"
+ "net"
+ "net/netip"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/adapter/outbound"
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ vmess "github.com/metacubex/sing-vmess"
+ mux "github.com/sagernet/sing-mux"
+ "github.com/sagernet/sing/common/buf"
+ "github.com/sagernet/sing/common/bufio"
+ "github.com/sagernet/sing/common/bufio/deadline"
+ E "github.com/sagernet/sing/common/exceptions"
+ M "github.com/sagernet/sing/common/metadata"
+ "github.com/sagernet/sing/common/network"
+ "github.com/sagernet/sing/common/uot"
+)
+
+const UDPTimeout = 5 * time.Minute
+
+type ListenerConfig struct {
+ Tunnel C.Tunnel
+ Type C.Type
+ Additions []inbound.Addition
+ UDPTimeout time.Duration
+ MuxOption MuxOption
+}
+
+type MuxOption struct {
+ Padding bool `yaml:"padding" json:"padding,omitempty"`
+ Brutal BrutalOptions `yaml:"brutal" json:"brutal,omitempty"`
+}
+
+type BrutalOptions struct {
+ Enabled bool `yaml:"enabled" json:"enabled"`
+ Up string `yaml:"up" json:"up,omitempty"`
+ Down string `yaml:"down" json:"down,omitempty"`
+}
+
+type ListenerHandler struct {
+ ListenerConfig
+ muxService *mux.Service
+}
+
+func UpstreamMetadata(metadata M.Metadata) M.Metadata {
+ return M.Metadata{
+ Source: metadata.Source,
+ Destination: metadata.Destination,
+ }
+}
+
+func ConvertMetadata(metadata *C.Metadata) M.Metadata {
+ return M.Metadata{
+ Protocol: metadata.Type.String(),
+ Source: M.SocksaddrFrom(metadata.SrcIP, metadata.SrcPort),
+ Destination: M.ParseSocksaddrHostPort(metadata.String(), metadata.DstPort),
+ }
+}
+
+func NewListenerHandler(lc ListenerConfig) (h *ListenerHandler, err error) {
+ h = &ListenerHandler{ListenerConfig: lc}
+ h.muxService, err = mux.NewService(mux.ServiceOptions{
+ NewStreamContext: func(ctx context.Context, conn net.Conn) context.Context {
+ return ctx
+ },
+ Logger: log.SingLogger,
+ Handler: h,
+ Padding: lc.MuxOption.Padding,
+ Brutal: mux.BrutalOptions{
+ Enabled: lc.MuxOption.Brutal.Enabled,
+ SendBPS: outbound.StringToBps(lc.MuxOption.Brutal.Up),
+ ReceiveBPS: outbound.StringToBps(lc.MuxOption.Brutal.Down),
+ },
+ })
+ return
+}
+
+func (h *ListenerHandler) IsSpecialFqdn(fqdn string) bool {
+ switch fqdn {
+ case mux.Destination.Fqdn,
+ vmess.MuxDestination.Fqdn,
+ uot.MagicAddress,
+ uot.LegacyMagicAddress:
+ return true
+ default:
+ return false
+ }
+}
+
+func (h *ListenerHandler) ParseSpecialFqdn(ctx context.Context, conn net.Conn, metadata M.Metadata) error {
+ switch metadata.Destination.Fqdn {
+ case mux.Destination.Fqdn:
+ return h.muxService.NewConnection(ctx, conn, UpstreamMetadata(metadata))
+ case vmess.MuxDestination.Fqdn:
+ return vmess.HandleMuxConnection(ctx, conn, h)
+ case uot.MagicAddress:
+ request, err := uot.ReadRequest(conn)
+ if err != nil {
+ return E.Cause(err, "read UoT request")
+ }
+ metadata.Destination = request.Destination
+ return h.NewPacketConnection(ctx, uot.NewConn(conn, *request), metadata)
+ case uot.LegacyMagicAddress:
+ metadata.Destination = M.Socksaddr{Addr: netip.IPv4Unspecified()}
+ return h.NewPacketConnection(ctx, uot.NewConn(conn, uot.Request{}), metadata)
+ }
+ return errors.New("not special fqdn")
+}
+
+func (h *ListenerHandler) NewConnection(ctx context.Context, conn net.Conn, metadata M.Metadata) error {
+ if h.IsSpecialFqdn(metadata.Destination.Fqdn) {
+ return h.ParseSpecialFqdn(ctx, conn, metadata)
+ }
+
+ if deadline.NeedAdditionalReadDeadline(conn) {
+ conn = N.NewDeadlineConn(conn) // conn from sing should check NeedAdditionalReadDeadline
+ }
+
+ cMetadata := &C.Metadata{
+ NetWork: C.TCP,
+ Type: h.Type,
+ }
+ if metadata.Source.IsIP() && metadata.Source.Fqdn == "" {
+ cMetadata.RawSrcAddr = metadata.Source.Unwrap().TCPAddr()
+ }
+ if metadata.Destination.IsIP() && metadata.Destination.Fqdn == "" {
+ cMetadata.RawDstAddr = metadata.Destination.Unwrap().TCPAddr()
+ }
+ inbound.ApplyAdditions(cMetadata, inbound.WithDstAddr(metadata.Destination), inbound.WithSrcAddr(metadata.Source), inbound.WithInAddr(conn.LocalAddr()))
+ inbound.ApplyAdditions(cMetadata, getAdditions(ctx)...)
+ inbound.ApplyAdditions(cMetadata, h.Additions...)
+
+ h.Tunnel.HandleTCPConn(conn, cMetadata) // this goroutine must exit after conn unused
+ return nil
+}
+
+func (h *ListenerHandler) NewPacketConnection(ctx context.Context, conn network.PacketConn, metadata M.Metadata) error {
+ defer func() { _ = conn.Close() }()
+ mutex := sync.Mutex{}
+ conn2 := bufio.NewNetPacketConn(conn) // a new interface to set nil in defer
+ defer func() {
+ mutex.Lock() // this goroutine must exit after all conn.WritePacket() is not running
+ defer mutex.Unlock()
+ conn2 = nil
+ }()
+ rwOptions := network.ReadWaitOptions{}
+ readWaiter, isReadWaiter := bufio.CreatePacketReadWaiter(conn)
+ if isReadWaiter {
+ readWaiter.InitializeReadWaiter(rwOptions)
+ }
+ for {
+ var (
+ buff *buf.Buffer
+ dest M.Socksaddr
+ err error
+ )
+ if isReadWaiter {
+ buff, dest, err = readWaiter.WaitReadPacket()
+ } else {
+ buff = rwOptions.NewPacketBuffer()
+ dest, err = conn.ReadPacket(buff)
+ if buff != nil {
+ rwOptions.PostReturn(buff)
+ }
+ }
+ if err != nil {
+ buff.Release()
+ if ShouldIgnorePacketError(err) {
+ break
+ }
+ return err
+ }
+ cPacket := &packet{
+ conn: &conn2,
+ mutex: &mutex,
+ rAddr: metadata.Source.UDPAddr(),
+ lAddr: conn.LocalAddr(),
+ buff: buff,
+ }
+
+ cMetadata := &C.Metadata{
+ NetWork: C.UDP,
+ Type: h.Type,
+ }
+ if metadata.Source.IsIP() && metadata.Source.Fqdn == "" {
+ cMetadata.RawSrcAddr = metadata.Source.Unwrap().UDPAddr()
+ }
+ if dest.IsIP() && dest.Fqdn == "" {
+ cMetadata.RawDstAddr = dest.Unwrap().UDPAddr()
+ }
+ inbound.ApplyAdditions(cMetadata, inbound.WithDstAddr(dest), inbound.WithSrcAddr(metadata.Source), inbound.WithInAddr(conn.LocalAddr()))
+ inbound.ApplyAdditions(cMetadata, getAdditions(ctx)...)
+ inbound.ApplyAdditions(cMetadata, h.Additions...)
+
+ h.Tunnel.HandleUDPPacket(cPacket, cMetadata)
+ }
+ return nil
+}
+
+func (h *ListenerHandler) NewError(ctx context.Context, err error) {
+ log.Warnln("%s listener get error: %+v", h.Type.String(), err)
+}
+
+func (h *ListenerHandler) TypeMutation(typ C.Type) *ListenerHandler {
+ handler := *h
+ handler.Type = typ
+ return &handler
+}
+
+func ShouldIgnorePacketError(err error) bool {
+ // ignore simple error
+ if E.IsTimeout(err) || E.IsClosed(err) || E.IsCanceled(err) {
+ return true
+ }
+ return false
+}
+
+type packet struct {
+ conn *network.NetPacketConn
+ mutex *sync.Mutex
+ rAddr net.Addr
+ lAddr net.Addr
+ buff *buf.Buffer
+}
+
+func (c *packet) Data() []byte {
+ return c.buff.Bytes()
+}
+
+// WriteBack wirtes UDP packet with source(ip, port) = `addr`
+func (c *packet) WriteBack(b []byte, addr net.Addr) (n int, err error) {
+ if addr == nil {
+ err = errors.New("address is invalid")
+ return
+ }
+
+ c.mutex.Lock()
+ defer c.mutex.Unlock()
+ conn := *c.conn
+ if conn == nil {
+ err = errors.New("writeBack to closed connection")
+ return
+ }
+
+ return conn.WriteTo(b, addr)
+}
+
+// LocalAddr returns the source IP/Port of UDP Packet
+func (c *packet) LocalAddr() net.Addr {
+ return c.rAddr
+}
+
+func (c *packet) Drop() {
+ c.buff.Release()
+}
+
+func (c *packet) InAddr() net.Addr {
+ return c.lAddr
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_hysteria2/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_hysteria2/server.go
new file mode 100644
index 0000000..77ad8ef
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_hysteria2/server.go
@@ -0,0 +1,191 @@
+package sing_hysteria2
+
+import (
+ "context"
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "net"
+ "net/http"
+ "net/http/httputil"
+ "net/url"
+ "strings"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/adapter/outbound"
+ CN "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/sockopt"
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/sing"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/metacubex/sing-quic/hysteria2"
+
+ E "github.com/sagernet/sing/common/exceptions"
+)
+
+type Listener struct {
+ closed bool
+ config LC.Hysteria2Server
+ udpListeners []net.PacketConn
+ services []*hysteria2.Service[string]
+}
+
+func New(config LC.Hysteria2Server, tunnel C.Tunnel, additions ...inbound.Addition) (*Listener, error) {
+ var sl *Listener
+ var err error
+ if len(additions) == 0 {
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-HYSTERIA2"),
+ inbound.WithSpecialRules(""),
+ }
+ }
+
+ h, err := sing.NewListenerHandler(sing.ListenerConfig{
+ Tunnel: tunnel,
+ Type: C.HYSTERIA2,
+ Additions: additions,
+ MuxOption: config.MuxOption,
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ sl = &Listener{false, config, nil, nil}
+
+ cert, err := CN.ParseCert(config.Certificate, config.PrivateKey, C.Path)
+ if err != nil {
+ return nil, err
+ }
+ tlsConfig := &tls.Config{
+ MinVersion: tls.VersionTLS13,
+ Certificates: []tls.Certificate{cert},
+ }
+ if len(config.ALPN) > 0 {
+ tlsConfig.NextProtos = config.ALPN
+ } else {
+ tlsConfig.NextProtos = []string{"h3"}
+ }
+
+ var salamanderPassword string
+ if len(config.Obfs) > 0 {
+ if config.ObfsPassword == "" {
+ return nil, errors.New("missing obfs password")
+ }
+ switch config.Obfs {
+ case hysteria2.ObfsTypeSalamander:
+ salamanderPassword = config.ObfsPassword
+ default:
+ return nil, fmt.Errorf("unknown obfs type: %s", config.Obfs)
+ }
+ }
+ var masqueradeHandler http.Handler
+ if config.Masquerade != "" {
+ masqueradeURL, err := url.Parse(config.Masquerade)
+ if err != nil {
+ return nil, E.Cause(err, "parse masquerade URL")
+ }
+ switch masqueradeURL.Scheme {
+ case "file":
+ masqueradeHandler = http.FileServer(http.Dir(masqueradeURL.Path))
+ case "http", "https":
+ masqueradeHandler = &httputil.ReverseProxy{
+ Rewrite: func(r *httputil.ProxyRequest) {
+ r.SetURL(masqueradeURL)
+ r.Out.Host = r.In.Host
+ },
+ ErrorHandler: func(w http.ResponseWriter, r *http.Request, err error) {
+ w.WriteHeader(http.StatusBadGateway)
+ },
+ }
+ default:
+ return nil, E.New("unknown masquerade URL scheme: ", masqueradeURL.Scheme)
+ }
+ }
+
+ if config.UdpMTU == 0 {
+ // "1200" from quic-go's MaxDatagramSize
+ // "-3" from quic-go's DatagramFrame.MaxDataLen
+ config.UdpMTU = 1200 - 3
+ }
+
+ service, err := hysteria2.NewService[string](hysteria2.ServiceOptions{
+ Context: context.Background(),
+ Logger: log.SingLogger,
+ SendBPS: outbound.StringToBps(config.Up),
+ ReceiveBPS: outbound.StringToBps(config.Down),
+ SalamanderPassword: salamanderPassword,
+ TLSConfig: tlsConfig,
+ IgnoreClientBandwidth: config.IgnoreClientBandwidth,
+ Handler: h,
+ MasqueradeHandler: masqueradeHandler,
+ CWND: config.CWND,
+ UdpMTU: config.UdpMTU,
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ userNameList := make([]string, 0, len(config.Users))
+ userPasswordList := make([]string, 0, len(config.Users))
+ for name, password := range config.Users {
+ userNameList = append(userNameList, name)
+ userPasswordList = append(userPasswordList, password)
+ }
+ service.UpdateUsers(userNameList, userPasswordList)
+
+ for _, addr := range strings.Split(config.Listen, ",") {
+ addr := addr
+ _service := *service
+ service := &_service // make a copy
+
+ ul, err := net.ListenPacket("udp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ err = sockopt.UDPReuseaddr(ul.(*net.UDPConn))
+ if err != nil {
+ log.Warnln("Failed to Reuse UDP Address: %s", err)
+ }
+
+ sl.udpListeners = append(sl.udpListeners, ul)
+ sl.services = append(sl.services, service)
+
+ go func() {
+ _ = service.Start(ul)
+ }()
+ }
+
+ return sl, nil
+}
+
+func (l *Listener) Close() error {
+ l.closed = true
+ var retErr error
+ for _, service := range l.services {
+ err := service.Close()
+ if err != nil {
+ retErr = err
+ }
+ }
+ for _, lis := range l.udpListeners {
+ err := lis.Close()
+ if err != nil {
+ retErr = err
+ }
+ }
+ return retErr
+}
+
+func (l *Listener) Config() string {
+ return l.config.String()
+}
+
+func (l *Listener) AddrList() (addrList []net.Addr) {
+ for _, lis := range l.udpListeners {
+ addrList = append(addrList, lis.LocalAddr())
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_shadowsocks/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_shadowsocks/server.go
new file mode 100644
index 0000000..5f2a429
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_shadowsocks/server.go
@@ -0,0 +1,214 @@
+package sing_shadowsocks
+
+import (
+ "context"
+ "fmt"
+ "net"
+ "strings"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/common/sockopt"
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ embedSS "github.com/metacubex/mihomo/listener/shadowsocks"
+ "github.com/metacubex/mihomo/listener/sing"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/ntp"
+
+ shadowsocks "github.com/metacubex/sing-shadowsocks"
+ "github.com/metacubex/sing-shadowsocks/shadowaead"
+ "github.com/metacubex/sing-shadowsocks/shadowaead_2022"
+ "github.com/sagernet/sing/common"
+ "github.com/sagernet/sing/common/buf"
+ "github.com/sagernet/sing/common/bufio"
+ M "github.com/sagernet/sing/common/metadata"
+ "github.com/sagernet/sing/common/network"
+)
+
+type Listener struct {
+ closed bool
+ config LC.ShadowsocksServer
+ listeners []net.Listener
+ udpListeners []net.PacketConn
+ service shadowsocks.Service
+}
+
+var _listener *Listener
+
+func New(config LC.ShadowsocksServer, tunnel C.Tunnel, additions ...inbound.Addition) (C.MultiAddrListener, error) {
+ var sl *Listener
+ var err error
+ if len(additions) == 0 {
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-SHADOWSOCKS"),
+ inbound.WithSpecialRules(""),
+ }
+ defer func() {
+ _listener = sl
+ }()
+ }
+
+ udpTimeout := int64(sing.UDPTimeout.Seconds())
+
+ h, err := sing.NewListenerHandler(sing.ListenerConfig{
+ Tunnel: tunnel,
+ Type: C.SHADOWSOCKS,
+ Additions: additions,
+ MuxOption: config.MuxOption,
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ sl = &Listener{false, config, nil, nil, nil}
+
+ switch {
+ case config.Cipher == shadowsocks.MethodNone:
+ sl.service = shadowsocks.NewNoneService(udpTimeout, h)
+ case common.Contains(shadowaead.List, config.Cipher):
+ sl.service, err = shadowaead.NewService(config.Cipher, nil, config.Password, udpTimeout, h)
+ case common.Contains(shadowaead_2022.List, config.Cipher):
+ sl.service, err = shadowaead_2022.NewServiceWithPassword(config.Cipher, config.Password, udpTimeout, h, ntp.Now)
+ default:
+ err = fmt.Errorf("shadowsocks: unsupported method: %s", config.Cipher)
+ return embedSS.New(config, tunnel, additions...)
+ }
+ if err != nil {
+ return nil, err
+ }
+
+ for _, addr := range strings.Split(config.Listen, ",") {
+ addr := addr
+
+ if config.Udp {
+ //UDP
+ ul, err := net.ListenPacket("udp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ err = sockopt.UDPReuseaddr(ul.(*net.UDPConn))
+ if err != nil {
+ log.Warnln("Failed to Reuse UDP Address: %s", err)
+ }
+
+ sl.udpListeners = append(sl.udpListeners, ul)
+
+ go func() {
+ conn := bufio.NewPacketConn(ul)
+ rwOptions := network.ReadWaitOptions{
+ FrontHeadroom: network.CalculateFrontHeadroom(sl.service),
+ RearHeadroom: network.CalculateRearHeadroom(sl.service),
+ MTU: network.CalculateMTU(conn, sl.service),
+ }
+ readWaiter, isReadWaiter := bufio.CreatePacketReadWaiter(conn)
+ if isReadWaiter {
+ readWaiter.InitializeReadWaiter(rwOptions)
+ }
+ for {
+ var (
+ buff *buf.Buffer
+ dest M.Socksaddr
+ err error
+ )
+ buff = nil // clear last loop status, avoid repeat release
+ if isReadWaiter {
+ buff, dest, err = readWaiter.WaitReadPacket()
+ } else {
+ buff = rwOptions.NewPacketBuffer()
+ dest, err = conn.ReadPacket(buff)
+ if buff != nil {
+ rwOptions.PostReturn(buff)
+ }
+ }
+ if err != nil {
+ buff.Release()
+ if sl.closed {
+ break
+ }
+ continue
+ }
+ _ = sl.service.NewPacket(context.TODO(), conn, buff, M.Metadata{
+ Protocol: "shadowsocks",
+ Source: dest,
+ })
+ }
+ }()
+ }
+
+ //TCP
+ l, err := inbound.Listen("tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+ sl.listeners = append(sl.listeners, l)
+
+ go func() {
+ for {
+ c, err := l.Accept()
+ if err != nil {
+ if sl.closed {
+ break
+ }
+ continue
+ }
+
+ go sl.HandleConn(c, tunnel)
+ }
+ }()
+ }
+
+ return sl, nil
+}
+
+func (l *Listener) Close() error {
+ l.closed = true
+ var retErr error
+ for _, lis := range l.listeners {
+ err := lis.Close()
+ if err != nil {
+ retErr = err
+ }
+ }
+ for _, lis := range l.udpListeners {
+ err := lis.Close()
+ if err != nil {
+ retErr = err
+ }
+ }
+ return retErr
+}
+
+func (l *Listener) Config() string {
+ return l.config.String()
+}
+
+func (l *Listener) AddrList() (addrList []net.Addr) {
+ for _, lis := range l.listeners {
+ addrList = append(addrList, lis.Addr())
+ }
+ for _, lis := range l.udpListeners {
+ addrList = append(addrList, lis.LocalAddr())
+ }
+ return
+}
+
+func (l *Listener) HandleConn(conn net.Conn, tunnel C.Tunnel, additions ...inbound.Addition) {
+ ctx := sing.WithAdditions(context.TODO(), additions...)
+ err := l.service.NewConnection(ctx, conn, M.Metadata{
+ Protocol: "shadowsocks",
+ Source: M.ParseSocksaddr(conn.RemoteAddr().String()),
+ })
+ if err != nil {
+ _ = conn.Close()
+ return
+ }
+}
+
+func HandleShadowSocks(conn net.Conn, tunnel C.Tunnel, additions ...inbound.Addition) bool {
+ if _listener != nil && _listener.service != nil {
+ go _listener.HandleConn(conn, tunnel, additions...)
+ return true
+ }
+ return embedSS.HandleShadowSocks(conn, tunnel, additions...)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/dns.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/dns.go
new file mode 100644
index 0000000..505f16a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/dns.go
@@ -0,0 +1,133 @@
+package sing_tun
+
+import (
+ "context"
+ "net"
+ "net/netip"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/listener/sing"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/sagernet/sing/common/buf"
+ "github.com/sagernet/sing/common/bufio"
+ M "github.com/sagernet/sing/common/metadata"
+ "github.com/sagernet/sing/common/network"
+)
+
+type ListenerHandler struct {
+ *sing.ListenerHandler
+ DnsAdds []netip.AddrPort
+}
+
+func (h *ListenerHandler) ShouldHijackDns(targetAddr netip.AddrPort) bool {
+ if targetAddr.Addr().IsLoopback() && targetAddr.Port() == 53 { // cause by system stack
+ return true
+ }
+ for _, addrPort := range h.DnsAdds {
+ if addrPort == targetAddr || (addrPort.Addr().IsUnspecified() && targetAddr.Port() == 53) {
+ return true
+ }
+ }
+ return false
+}
+
+func (h *ListenerHandler) NewConnection(ctx context.Context, conn net.Conn, metadata M.Metadata) error {
+ if h.ShouldHijackDns(metadata.Destination.AddrPort()) {
+ log.Debugln("[DNS] hijack tcp:%s", metadata.Destination.String())
+ return resolver.RelayDnsConn(ctx, conn, resolver.DefaultDnsReadTimeout)
+ }
+ return h.ListenerHandler.NewConnection(ctx, conn, metadata)
+}
+
+func (h *ListenerHandler) NewPacketConnection(ctx context.Context, conn network.PacketConn, metadata M.Metadata) error {
+ if h.ShouldHijackDns(metadata.Destination.AddrPort()) {
+ log.Debugln("[DNS] hijack udp:%s from %s", metadata.Destination.String(), metadata.Source.String())
+ defer func() { _ = conn.Close() }()
+ mutex := sync.Mutex{}
+ conn2 := conn // a new interface to set nil in defer
+ defer func() {
+ mutex.Lock() // this goroutine must exit after all conn.WritePacket() is not running
+ defer mutex.Unlock()
+ conn2 = nil
+ }()
+ rwOptions := network.ReadWaitOptions{
+ FrontHeadroom: network.CalculateFrontHeadroom(conn),
+ RearHeadroom: network.CalculateRearHeadroom(conn),
+ MTU: resolver.SafeDnsPacketSize,
+ }
+ readWaiter, isReadWaiter := bufio.CreatePacketReadWaiter(conn)
+ if isReadWaiter {
+ readWaiter.InitializeReadWaiter(rwOptions)
+ }
+ for {
+ var (
+ readBuff *buf.Buffer
+ dest M.Socksaddr
+ err error
+ )
+ _ = conn.SetReadDeadline(time.Now().Add(resolver.DefaultDnsReadTimeout))
+ readBuff = nil // clear last loop status, avoid repeat release
+ if isReadWaiter {
+ readBuff, dest, err = readWaiter.WaitReadPacket()
+ } else {
+ readBuff = rwOptions.NewPacketBuffer()
+ dest, err = conn.ReadPacket(readBuff)
+ if readBuff != nil {
+ rwOptions.PostReturn(readBuff)
+ }
+ }
+ if err != nil {
+ if readBuff != nil {
+ readBuff.Release()
+ }
+ if sing.ShouldIgnorePacketError(err) {
+ break
+ }
+ return err
+ }
+ go func() {
+ ctx, cancel := context.WithTimeout(ctx, resolver.DefaultDnsRelayTimeout)
+ defer cancel()
+ inData := readBuff.Bytes()
+ writeBuff := readBuff
+ writeBuff.Resize(writeBuff.Start(), 0)
+ if len(writeBuff.FreeBytes()) < resolver.SafeDnsPacketSize { // only create a new buffer when space don't enough
+ writeBuff = rwOptions.NewPacketBuffer()
+ }
+ msg, err := resolver.RelayDnsPacket(ctx, inData, writeBuff.FreeBytes())
+ if writeBuff != readBuff {
+ readBuff.Release()
+ }
+ if err != nil {
+ writeBuff.Release()
+ return
+ }
+ writeBuff.Truncate(len(msg))
+ mutex.Lock()
+ defer mutex.Unlock()
+ conn := conn2
+ if conn == nil {
+ writeBuff.Release()
+ return
+ }
+ err = conn.WritePacket(writeBuff, dest) // WritePacket will release writeBuff
+ if err != nil {
+ writeBuff.Release()
+ return
+ }
+ }()
+ }
+ return nil
+ }
+ return h.ListenerHandler.NewPacketConnection(ctx, conn, metadata)
+}
+
+func (h *ListenerHandler) TypeMutation(typ C.Type) *ListenerHandler {
+ handle := *h
+ handle.ListenerHandler = h.ListenerHandler.TypeMutation(typ)
+ return &handle
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/iface.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/iface.go
new file mode 100644
index 0000000..543d206
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/iface.go
@@ -0,0 +1,75 @@
+package sing_tun
+
+import (
+ "errors"
+ "net/netip"
+
+ "github.com/metacubex/mihomo/component/iface"
+
+ "github.com/sagernet/sing/common/control"
+)
+
+type defaultInterfaceFinder struct{}
+
+var DefaultInterfaceFinder control.InterfaceFinder = (*defaultInterfaceFinder)(nil)
+
+func (f *defaultInterfaceFinder) Update() error {
+ iface.FlushCache()
+ return nil
+}
+
+func (f *defaultInterfaceFinder) Interfaces() []control.Interface {
+ ifaces, err := iface.Interfaces()
+ if err != nil {
+ return nil
+ }
+ interfaces := make([]control.Interface, 0, len(ifaces))
+ for _, _interface := range ifaces {
+ interfaces = append(interfaces, control.Interface(*_interface))
+ }
+
+ return interfaces
+}
+
+var errNoSuchInterface = errors.New("no such network interface")
+
+func (f *defaultInterfaceFinder) InterfaceIndexByName(name string) (int, error) {
+ ifaces, err := iface.Interfaces()
+ if err != nil {
+ return 0, err
+ }
+ for _, netInterface := range ifaces {
+ if netInterface.Name == name {
+ return netInterface.Index, nil
+ }
+ }
+ return 0, errNoSuchInterface
+}
+
+func (f *defaultInterfaceFinder) InterfaceNameByIndex(index int) (string, error) {
+ ifaces, err := iface.Interfaces()
+ if err != nil {
+ return "", err
+ }
+ for _, netInterface := range ifaces {
+ if netInterface.Index == index {
+ return netInterface.Name, nil
+ }
+ }
+ return "", errNoSuchInterface
+}
+
+func (f *defaultInterfaceFinder) InterfaceByAddr(addr netip.Addr) (*control.Interface, error) {
+ ifaces, err := iface.Interfaces()
+ if err != nil {
+ return nil, err
+ }
+ for _, netInterface := range ifaces {
+ for _, prefix := range netInterface.Addresses {
+ if prefix.Contains(addr) {
+ return (*control.Interface)(netInterface), nil
+ }
+ }
+ }
+ return nil, errNoSuchInterface
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/redirect_linux.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/redirect_linux.go
new file mode 100644
index 0000000..6ef6fc9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/redirect_linux.go
@@ -0,0 +1,3 @@
+package sing_tun
+
+const supportRedirect = true
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/redirect_stub.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/redirect_stub.go
new file mode 100644
index 0000000..d711af3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/redirect_stub.go
@@ -0,0 +1,5 @@
+//go:build !linux
+
+package sing_tun
+
+const supportRedirect = false
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server.go
new file mode 100644
index 0000000..79856c4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server.go
@@ -0,0 +1,580 @@
+package sing_tun
+
+import (
+ "context"
+ "fmt"
+ "io"
+ "net"
+ "net/netip"
+ "os"
+ "runtime"
+ "strconv"
+ "strings"
+ "sync"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/iface"
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/sing"
+ "github.com/metacubex/mihomo/log"
+
+ tun "github.com/metacubex/sing-tun"
+ "github.com/sagernet/sing/common"
+ E "github.com/sagernet/sing/common/exceptions"
+ F "github.com/sagernet/sing/common/format"
+ "github.com/sagernet/sing/common/ranges"
+
+ "go4.org/netipx"
+ "golang.org/x/exp/maps"
+ "golang.org/x/exp/slices"
+)
+
+var InterfaceName = "Meta"
+var EnforceBindInterface = false
+
+type Listener struct {
+ closed bool
+ options LC.Tun
+ handler *ListenerHandler
+ tunName string
+ addrStr string
+
+ tunIf tun.Tun
+ tunStack tun.Stack
+
+ networkUpdateMonitor tun.NetworkUpdateMonitor
+ defaultInterfaceMonitor tun.DefaultInterfaceMonitor
+ packageManager tun.PackageManager
+ autoRedirect tun.AutoRedirect
+ autoRedirectOutputMark int32
+
+ ruleUpdateCallbackCloser io.Closer
+ ruleUpdateMutex sync.Mutex
+ routeAddressMap map[string]*netipx.IPSet
+ routeExcludeAddressMap map[string]*netipx.IPSet
+ routeAddressSet []*netipx.IPSet
+ routeExcludeAddressSet []*netipx.IPSet
+
+ dnsServerIp []string
+}
+
+var emptyAddressSet = []*netipx.IPSet{{}}
+
+func CalculateInterfaceName(name string) (tunName string) {
+ if runtime.GOOS == "darwin" {
+ tunName = "utun"
+ } else if name != "" {
+ tunName = name
+ return
+ } else {
+ tunName = "tun"
+ }
+ interfaces, err := net.Interfaces()
+ if err != nil {
+ return
+ }
+ tunIndex := 0
+ indexArr := make([]int, 0, len(interfaces))
+ for _, netInterface := range interfaces {
+ if strings.HasPrefix(netInterface.Name, tunName) {
+ index, parseErr := strconv.ParseInt(netInterface.Name[len(tunName):], 10, 16)
+ if parseErr == nil {
+ indexArr = append(indexArr, int(index))
+ }
+ }
+ }
+ slices.Sort(indexArr)
+ indexArr = slices.Compact(indexArr)
+ for _, index := range indexArr {
+ if index == tunIndex {
+ tunIndex += 1
+ } else { // indexArr already sorted and distinct, so this tunIndex nobody used
+ break
+ }
+ }
+ tunName = F.ToString(tunName, tunIndex)
+ return
+}
+
+func checkTunName(tunName string) (ok bool) {
+ defer func() {
+ if !ok {
+ log.Warnln("[TUN] Unsupported tunName(%s) in %s, force regenerate by ourselves.", tunName, runtime.GOOS)
+ }
+ }()
+ if runtime.GOOS == "darwin" {
+ if len(tunName) <= 4 {
+ return false
+ }
+ if tunName[:4] != "utun" {
+ return false
+ }
+ if _, parseErr := strconv.ParseInt(tunName[4:], 10, 16); parseErr != nil {
+ return false
+ }
+ }
+ return true
+}
+
+func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Listener, err error) {
+ if len(additions) == 0 {
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-TUN"),
+ inbound.WithSpecialRules(""),
+ }
+ }
+ ctx := context.TODO()
+ rpTunnel := tunnel.(provider.Tunnel)
+ if options.GSOMaxSize == 0 {
+ options.GSOMaxSize = 65536
+ }
+ if !supportRedirect {
+ options.AutoRedirect = false
+ }
+ tunName := options.Device
+ if options.FileDescriptor == 0 && (tunName == "" || !checkTunName(tunName)) {
+ tunName = CalculateInterfaceName(InterfaceName)
+ options.Device = tunName
+ }
+ routeAddress := options.RouteAddress
+ if len(options.Inet4RouteAddress) > 0 {
+ routeAddress = append(routeAddress, options.Inet4RouteAddress...)
+ }
+ if len(options.Inet6RouteAddress) > 0 {
+ routeAddress = append(routeAddress, options.Inet6RouteAddress...)
+ }
+ inet4RouteAddress := common.Filter(routeAddress, func(it netip.Prefix) bool {
+ return it.Addr().Is4()
+ })
+ inet6RouteAddress := common.Filter(routeAddress, func(it netip.Prefix) bool {
+ return it.Addr().Is6()
+ })
+ routeExcludeAddress := options.RouteExcludeAddress
+ if len(options.Inet4RouteExcludeAddress) > 0 {
+ routeExcludeAddress = append(routeExcludeAddress, options.Inet4RouteExcludeAddress...)
+ }
+ if len(options.Inet6RouteExcludeAddress) > 0 {
+ routeExcludeAddress = append(routeExcludeAddress, options.Inet6RouteExcludeAddress...)
+ }
+ inet4RouteExcludeAddress := common.Filter(routeExcludeAddress, func(it netip.Prefix) bool {
+ return it.Addr().Is4()
+ })
+ inet6RouteExcludeAddress := common.Filter(routeExcludeAddress, func(it netip.Prefix) bool {
+ return it.Addr().Is6()
+ })
+ tunMTU := options.MTU
+ if tunMTU == 0 {
+ tunMTU = 9000
+ }
+ var udpTimeout int64
+ if options.UDPTimeout != 0 {
+ udpTimeout = options.UDPTimeout
+ } else {
+ udpTimeout = int64(sing.UDPTimeout.Seconds())
+ }
+ tableIndex := options.IPRoute2TableIndex
+ if tableIndex == 0 {
+ tableIndex = tun.DefaultIPRoute2TableIndex
+ }
+ ruleIndex := options.IPRoute2RuleIndex
+ if ruleIndex == 0 {
+ ruleIndex = tun.DefaultIPRoute2RuleIndex
+ }
+ inputMark := options.AutoRedirectInputMark
+ if inputMark == 0 {
+ inputMark = tun.DefaultAutoRedirectInputMark
+ }
+ outputMark := options.AutoRedirectOutputMark
+ if outputMark == 0 {
+ outputMark = tun.DefaultAutoRedirectOutputMark
+ }
+ includeUID := uidToRange(options.IncludeUID)
+ if len(options.IncludeUIDRange) > 0 {
+ var err error
+ includeUID, err = parseRange(includeUID, options.IncludeUIDRange)
+ if err != nil {
+ return nil, E.Cause(err, "parse include_uid_range")
+ }
+ }
+ excludeUID := uidToRange(options.ExcludeUID)
+ if len(options.ExcludeUIDRange) > 0 {
+ var err error
+ excludeUID, err = parseRange(excludeUID, options.ExcludeUIDRange)
+ if err != nil {
+ return nil, E.Cause(err, "parse exclude_uid_range")
+ }
+ }
+
+ var dnsAdds []netip.AddrPort
+
+ for _, d := range options.DNSHijack {
+ if _, after, ok := strings.Cut(d, "://"); ok {
+ d = after
+ }
+ d = strings.Replace(d, "any", "0.0.0.0", 1)
+ addrPort, err := netip.ParseAddrPort(d)
+ if err != nil {
+ return nil, fmt.Errorf("parse dns-hijack url error: %w", err)
+ }
+
+ dnsAdds = append(dnsAdds, addrPort)
+ }
+
+ var dnsServerIp []string
+ for _, a := range options.Inet4Address {
+ addrPort := netip.AddrPortFrom(a.Addr().Next(), 53)
+ dnsServerIp = append(dnsServerIp, a.Addr().Next().String())
+ dnsAdds = append(dnsAdds, addrPort)
+ }
+ for _, a := range options.Inet6Address {
+ addrPort := netip.AddrPortFrom(a.Addr().Next(), 53)
+ dnsServerIp = append(dnsServerIp, a.Addr().Next().String())
+ dnsAdds = append(dnsAdds, addrPort)
+ }
+
+ h, err := sing.NewListenerHandler(sing.ListenerConfig{
+ Tunnel: tunnel,
+ Type: C.TUN,
+ Additions: additions,
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ handler := &ListenerHandler{
+ ListenerHandler: h,
+ DnsAdds: dnsAdds,
+ }
+ l = &Listener{
+ closed: false,
+ options: options,
+ handler: handler,
+ tunName: tunName,
+ }
+ defer func() {
+ if err != nil {
+ l.Close()
+ l = nil
+ }
+ }()
+
+ interfaceFinder := DefaultInterfaceFinder
+
+ var networkUpdateMonitor tun.NetworkUpdateMonitor
+ var defaultInterfaceMonitor tun.DefaultInterfaceMonitor
+ if options.AutoRoute || options.AutoDetectInterface { // don't start NetworkUpdateMonitor because netlink banned by google on Android14+
+ networkUpdateMonitor, err = tun.NewNetworkUpdateMonitor(log.SingLogger)
+ if err != nil {
+ err = E.Cause(err, "create NetworkUpdateMonitor")
+ return
+ }
+ l.networkUpdateMonitor = networkUpdateMonitor
+ err = networkUpdateMonitor.Start()
+ if err != nil {
+ err = E.Cause(err, "start NetworkUpdateMonitor")
+ return
+ }
+
+ defaultInterfaceMonitor, err = tun.NewDefaultInterfaceMonitor(networkUpdateMonitor, log.SingLogger, tun.DefaultInterfaceMonitorOptions{OverrideAndroidVPN: true})
+ if err != nil {
+ err = E.Cause(err, "create DefaultInterfaceMonitor")
+ return
+ }
+ l.defaultInterfaceMonitor = defaultInterfaceMonitor
+ defaultInterfaceMonitor.RegisterCallback(func(event int) {
+ l.FlushDefaultInterface()
+ })
+ err = defaultInterfaceMonitor.Start()
+ if err != nil {
+ err = E.Cause(err, "start DefaultInterfaceMonitor")
+ return
+ }
+ }
+
+ tunOptions := tun.Options{
+ Name: tunName,
+ MTU: tunMTU,
+ GSO: options.GSO,
+ Inet4Address: options.Inet4Address,
+ Inet6Address: options.Inet6Address,
+ AutoRoute: options.AutoRoute,
+ IPRoute2TableIndex: tableIndex,
+ IPRoute2RuleIndex: ruleIndex,
+ AutoRedirectInputMark: inputMark,
+ AutoRedirectOutputMark: outputMark,
+ StrictRoute: options.StrictRoute,
+ Inet4RouteAddress: inet4RouteAddress,
+ Inet6RouteAddress: inet6RouteAddress,
+ Inet4RouteExcludeAddress: inet4RouteExcludeAddress,
+ Inet6RouteExcludeAddress: inet6RouteExcludeAddress,
+ IncludeInterface: options.IncludeInterface,
+ ExcludeInterface: options.ExcludeInterface,
+ IncludeUID: includeUID,
+ ExcludeUID: excludeUID,
+ IncludeAndroidUser: options.IncludeAndroidUser,
+ IncludePackage: options.IncludePackage,
+ ExcludePackage: options.ExcludePackage,
+ FileDescriptor: options.FileDescriptor,
+ InterfaceMonitor: defaultInterfaceMonitor,
+ }
+
+ if options.AutoRedirect {
+ l.routeAddressMap = make(map[string]*netipx.IPSet)
+ l.routeExcludeAddressMap = make(map[string]*netipx.IPSet)
+
+ if !options.AutoRoute {
+ return nil, E.New("`auto-route` is required by `auto-redirect`")
+ }
+ disableNFTables, dErr := strconv.ParseBool(os.Getenv("DISABLE_NFTABLES"))
+ l.autoRedirect, err = tun.NewAutoRedirect(tun.AutoRedirectOptions{
+ TunOptions: &tunOptions,
+ Context: ctx,
+ Handler: handler.TypeMutation(C.REDIR),
+ Logger: log.SingLogger,
+ NetworkMonitor: l.networkUpdateMonitor,
+ InterfaceFinder: interfaceFinder,
+ TableName: "mihomo",
+ DisableNFTables: dErr == nil && disableNFTables,
+ RouteAddressSet: &l.routeAddressSet,
+ RouteExcludeAddressSet: &l.routeExcludeAddressSet,
+ })
+ if err != nil {
+ err = E.Cause(err, "initialize auto redirect")
+ return
+ }
+
+ var markMode bool
+ for _, routeAddressSet := range options.RouteAddressSet {
+ rp, loaded := rpTunnel.RuleProviders()[routeAddressSet]
+ if !loaded {
+ err = E.New("parse route-address-set: rule-set not found: ", routeAddressSet)
+ return
+ }
+ l.updateRule(rp, false, false)
+ markMode = true
+ }
+ for _, routeExcludeAddressSet := range options.RouteExcludeAddressSet {
+ rp, loaded := rpTunnel.RuleProviders()[routeExcludeAddressSet]
+ if !loaded {
+ err = E.New("parse route-exclude_address-set: rule-set not found: ", routeExcludeAddressSet)
+ return
+ }
+ l.updateRule(rp, true, false)
+ markMode = true
+ }
+ if markMode {
+ tunOptions.AutoRedirectMarkMode = true
+ }
+
+ }
+
+ err = l.buildAndroidRules(&tunOptions)
+ if err != nil {
+ err = E.Cause(err, "build android rules")
+ return
+ }
+ tunIf, err := tunNew(tunOptions)
+ if err != nil {
+ err = E.Cause(err, "configure tun interface")
+ return
+ }
+
+ l.dnsServerIp = dnsServerIp
+ // after tun.New sing-tun has set DNS to TUN interface
+ resolver.AddSystemDnsBlacklist(dnsServerIp...)
+
+ stackOptions := tun.StackOptions{
+ Context: ctx,
+ Tun: tunIf,
+ TunOptions: tunOptions,
+ EndpointIndependentNat: options.EndpointIndependentNat,
+ UDPTimeout: udpTimeout,
+ Handler: handler,
+ Logger: log.SingLogger,
+ InterfaceFinder: interfaceFinder,
+ EnforceBindInterface: EnforceBindInterface,
+ }
+
+ if options.FileDescriptor > 0 {
+ if tunName, err := getTunnelName(int32(options.FileDescriptor)); err != nil {
+ stackOptions.TunOptions.Name = tunName
+ stackOptions.ForwarderBindInterface = true
+ }
+ }
+ l.tunIf = tunIf
+
+ tunStack, err := tun.NewStack(strings.ToLower(options.Stack.String()), stackOptions)
+ if err != nil {
+ return
+ }
+
+ err = tunStack.Start()
+ if err != nil {
+ return
+ }
+ l.tunStack = tunStack
+
+ if l.autoRedirect != nil {
+ if len(l.options.RouteAddressSet) > 0 && len(l.routeAddressSet) == 0 {
+ l.routeAddressSet = emptyAddressSet // without this we can't call UpdateRouteAddressSet after Start
+ }
+ if len(l.options.RouteExcludeAddressSet) > 0 && len(l.routeExcludeAddressSet) == 0 {
+ l.routeExcludeAddressSet = emptyAddressSet // without this we can't call UpdateRouteAddressSet after Start
+ }
+ err = l.autoRedirect.Start()
+ if err != nil {
+ err = E.Cause(err, "auto redirect")
+ return
+ }
+ if tunOptions.AutoRedirectMarkMode {
+ l.autoRedirectOutputMark = int32(outputMark)
+ dialer.DefaultRoutingMark.Store(l.autoRedirectOutputMark)
+ l.autoRedirect.UpdateRouteAddressSet()
+ l.ruleUpdateCallbackCloser = rpTunnel.RuleUpdateCallback().Register(l.ruleUpdateCallback)
+ }
+ }
+
+ //l.openAndroidHotspot(tunOptions)
+
+ if !l.options.AutoDetectInterface {
+ resolver.ResetConnection()
+ }
+
+ if options.FileDescriptor != 0 {
+ tunName = fmt.Sprintf("%s(fd=%d)", tunName, options.FileDescriptor)
+ }
+ l.addrStr = fmt.Sprintf("%s(%s,%s), mtu: %d, auto route: %v, auto redir: %v, ip stack: %s",
+ tunName, tunOptions.Inet4Address, tunOptions.Inet6Address, tunMTU, options.AutoRoute, options.AutoRedirect, options.Stack)
+ return
+}
+
+func (l *Listener) ruleUpdateCallback(ruleProvider provider.RuleProvider) {
+ name := ruleProvider.Name()
+ if slices.Contains(l.options.RouteAddressSet, name) {
+ l.updateRule(ruleProvider, false, true)
+ return
+ }
+ if slices.Contains(l.options.RouteExcludeAddressSet, name) {
+ l.updateRule(ruleProvider, true, true)
+ return
+ }
+}
+
+type toIpCidr interface {
+ ToIpCidr() *netipx.IPSet
+}
+
+func (l *Listener) updateRule(ruleProvider provider.RuleProvider, exclude bool, update bool) {
+ l.ruleUpdateMutex.Lock()
+ defer l.ruleUpdateMutex.Unlock()
+ name := ruleProvider.Name()
+ switch rp := ruleProvider.Strategy().(type) {
+ case toIpCidr:
+ if !exclude {
+ ipCidr := rp.ToIpCidr()
+ if ipCidr != nil {
+ l.routeAddressMap[name] = ipCidr
+ } else {
+ delete(l.routeAddressMap, name)
+ }
+ l.routeAddressSet = maps.Values(l.routeAddressMap)
+ } else {
+ ipCidr := rp.ToIpCidr()
+ if ipCidr != nil {
+ l.routeExcludeAddressMap[name] = ipCidr
+ } else {
+ delete(l.routeExcludeAddressMap, name)
+ }
+ l.routeExcludeAddressSet = maps.Values(l.routeExcludeAddressMap)
+ }
+ default:
+ return
+ }
+ if update && l.autoRedirect != nil {
+ l.autoRedirect.UpdateRouteAddressSet()
+ }
+}
+
+func (l *Listener) FlushDefaultInterface() {
+ if l.options.AutoDetectInterface && l.defaultInterfaceMonitor != nil {
+ for _, destination := range []netip.Addr{netip.IPv4Unspecified(), netip.IPv6Unspecified(), netip.MustParseAddr("1.1.1.1")} {
+ autoDetectInterfaceName := l.defaultInterfaceMonitor.DefaultInterfaceName(destination)
+ if autoDetectInterfaceName == l.tunName {
+ log.Warnln("[TUN] Auto detect interface by %s get same name with tun", destination.String())
+ } else if autoDetectInterfaceName == "" || autoDetectInterfaceName == "" {
+ log.Warnln("[TUN] Auto detect interface by %s get empty name.", destination.String())
+ } else {
+ if old := dialer.DefaultInterface.Swap(autoDetectInterfaceName); old != autoDetectInterfaceName {
+ log.Warnln("[TUN] default interface changed by monitor, %s => %s", old, autoDetectInterfaceName)
+ iface.FlushCache()
+ resolver.ResetConnection() // reset resolver's connection after default interface changed
+ }
+ return
+ }
+ }
+ if dialer.DefaultInterface.CompareAndSwap("", "") {
+ log.Warnln("[TUN] Auto detect interface failed, set '' to DefaultInterface to avoid lookback")
+ }
+ }
+}
+
+func uidToRange(uidList []uint32) []ranges.Range[uint32] {
+ return common.Map(uidList, func(uid uint32) ranges.Range[uint32] {
+ return ranges.NewSingle(uid)
+ })
+}
+
+func parseRange(uidRanges []ranges.Range[uint32], rangeList []string) ([]ranges.Range[uint32], error) {
+ for _, uidRange := range rangeList {
+ if !strings.Contains(uidRange, ":") {
+ return nil, E.New("missing ':' in range: ", uidRange)
+ }
+ subIndex := strings.Index(uidRange, ":")
+ if subIndex == 0 {
+ return nil, E.New("missing range start: ", uidRange)
+ } else if subIndex == len(uidRange)-1 {
+ return nil, E.New("missing range end: ", uidRange)
+ }
+ var start, end uint64
+ var err error
+ start, err = strconv.ParseUint(uidRange[:subIndex], 0, 32)
+ if err != nil {
+ return nil, E.Cause(err, "parse range start")
+ }
+ end, err = strconv.ParseUint(uidRange[subIndex+1:], 0, 32)
+ if err != nil {
+ return nil, E.Cause(err, "parse range end")
+ }
+ uidRanges = append(uidRanges, ranges.New(uint32(start), uint32(end)))
+ }
+ return uidRanges, nil
+}
+
+func (l *Listener) Close() error {
+ l.closed = true
+ resolver.RemoveSystemDnsBlacklist(l.dnsServerIp...)
+ if l.autoRedirectOutputMark != 0 {
+ dialer.DefaultRoutingMark.CompareAndSwap(l.autoRedirectOutputMark, 0)
+ }
+ return common.Close(
+ l.ruleUpdateCallbackCloser,
+ l.tunStack,
+ l.tunIf,
+ l.autoRedirect,
+ l.defaultInterfaceMonitor,
+ l.networkUpdateMonitor,
+ l.packageManager,
+ )
+}
+
+func (l *Listener) Config() LC.Tun {
+ return l.options
+}
+
+func (l *Listener) Address() string {
+ return l.addrStr
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_android.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_android.go
new file mode 100644
index 0000000..d824053
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_android.go
@@ -0,0 +1,102 @@
+//go:build android && !cmfa
+
+package sing_tun
+
+import (
+ "errors"
+ "runtime"
+ "sync"
+
+ "github.com/metacubex/mihomo/component/process"
+ "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/features"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/metacubex/sing-tun"
+ "github.com/sagernet/netlink"
+ "golang.org/x/sys/unix"
+)
+
+type packageManagerCallback struct{}
+
+func (cb *packageManagerCallback) OnPackagesUpdated(packageCount int, sharedCount int) {}
+
+func newPackageManager() (tun.PackageManager, error) {
+ packageManager, err := tun.NewPackageManager(tun.PackageManagerOptions{
+ Callback: &packageManagerCallback{},
+ Logger: log.SingLogger,
+ })
+ if err != nil {
+ return nil, err
+ }
+ err = packageManager.Start()
+ if err != nil {
+ return nil, err
+ }
+ return packageManager, nil
+}
+
+var (
+ globalPM tun.PackageManager
+ pmOnce sync.Once
+ pmErr error
+)
+
+func getPackageManager() (tun.PackageManager, error) {
+ pmOnce.Do(func() {
+ globalPM, pmErr = newPackageManager()
+ })
+ return globalPM, pmErr
+}
+
+func (l *Listener) buildAndroidRules(tunOptions *tun.Options) error {
+ packageManager, err := getPackageManager()
+ if err != nil {
+ return err
+ }
+ tunOptions.BuildAndroidRules(packageManager, l.handler)
+ return nil
+}
+
+func findPackageName(metadata *constant.Metadata) (string, error) {
+ packageManager, err := getPackageManager()
+ if err != nil {
+ return "", err
+ }
+ uid := metadata.Uid
+ if sharedPackage, loaded := packageManager.SharedPackageByID(uid % 100000); loaded {
+ return sharedPackage, nil
+ }
+ if packageName, loaded := packageManager.PackageByID(uid % 100000); loaded {
+ return packageName, nil
+ }
+ return "", errors.New("package not found")
+}
+
+func init() {
+ if !features.CMFA {
+ process.DefaultPackageNameResolver = findPackageName
+ }
+}
+
+func (l *Listener) openAndroidHotspot(tunOptions tun.Options) {
+ if runtime.GOOS == "android" && tunOptions.AutoRoute {
+ priority := 9000
+ if len(tunOptions.ExcludedRanges()) > 0 {
+ priority++
+ }
+ if tunOptions.InterfaceMonitor.AndroidVPNEnabled() {
+ priority++
+ }
+ it := netlink.NewRule()
+ it.Priority = priority
+ it.IifName = tunOptions.Name
+ it.Table = 254 //main
+ it.Family = unix.AF_INET
+ it.SuppressPrefixlen = 0
+ err := netlink.RuleAdd(it)
+ if err != nil {
+ log.Warnln("[TUN] add AndroidHotspot rule error")
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_notandroid.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_notandroid.go
new file mode 100644
index 0000000..10fd399
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_notandroid.go
@@ -0,0 +1,12 @@
+//go:build !android || cmfa
+
+package sing_tun
+
+import (
+ tun "github.com/metacubex/sing-tun"
+)
+
+func (l *Listener) buildAndroidRules(tunOptions *tun.Options) error {
+ return nil
+}
+func (l *Listener) openAndroidHotspot(tunOptions tun.Options) {}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_notwindows.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_notwindows.go
new file mode 100644
index 0000000..eda79dc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_notwindows.go
@@ -0,0 +1,11 @@
+//go:build !windows
+
+package sing_tun
+
+import (
+ tun "github.com/metacubex/sing-tun"
+)
+
+func tunNew(options tun.Options) (tun.Tun, error) {
+ return tun.New(options)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_windows.go
new file mode 100644
index 0000000..325cf09
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/server_windows.go
@@ -0,0 +1,36 @@
+package sing_tun
+
+import (
+ "time"
+
+ "github.com/metacubex/mihomo/constant/features"
+ "github.com/metacubex/mihomo/log"
+
+ tun "github.com/metacubex/sing-tun"
+)
+
+func tunNew(options tun.Options) (tunIf tun.Tun, err error) {
+ maxRetry := 3
+ for i := 0; i < maxRetry; i++ {
+ timeBegin := time.Now()
+ tunIf, err = tun.New(options)
+ if err == nil {
+ return
+ }
+ timeEnd := time.Now()
+ if timeEnd.Sub(timeBegin) < 1*time.Second { // retrying for "Cannot create a file when that file already exists."
+ return
+ }
+ log.Warnln("Start Tun interface timeout: %s [retrying %d/%d]", err, i+1, maxRetry)
+ }
+ return
+}
+
+func init() {
+ tun.TunnelType = InterfaceName
+
+ if features.WindowsMajorVersion < 10 {
+ // to resolve "bind: The requested address is not valid in its context"
+ EnforceBindInterface = true
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/tun_name_darwin.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/tun_name_darwin.go
new file mode 100644
index 0000000..5b4686e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/tun_name_darwin.go
@@ -0,0 +1,11 @@
+package sing_tun
+
+import "golang.org/x/sys/unix"
+
+func getTunnelName(fd int32) (string, error) {
+ return unix.GetsockoptString(
+ int(fd),
+ 2, /* #define SYSPROTO_CONTROL 2 */
+ 2, /* #define UTUN_OPT_IFNAME 2 */
+ )
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/tun_name_linux.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/tun_name_linux.go
new file mode 100644
index 0000000..9ae9800
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/tun_name_linux.go
@@ -0,0 +1,25 @@
+package sing_tun
+
+import (
+ "fmt"
+ "golang.org/x/sys/unix"
+ "syscall"
+ "unsafe"
+)
+
+const ifReqSize = unix.IFNAMSIZ + 64
+
+func getTunnelName(fd int32) (string, error) {
+ var ifr [ifReqSize]byte
+ var errno syscall.Errno
+ _, _, errno = unix.Syscall(
+ unix.SYS_IOCTL,
+ uintptr(fd),
+ uintptr(unix.TUNGETIFF),
+ uintptr(unsafe.Pointer(&ifr[0])),
+ )
+ if errno != 0 {
+ return "", fmt.Errorf("failed to get name of TUN device: %w", errno)
+ }
+ return unix.ByteSliceToString(ifr[:]), nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/tun_name_other.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/tun_name_other.go
new file mode 100644
index 0000000..c47c8cb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_tun/tun_name_other.go
@@ -0,0 +1,9 @@
+//go:build !(darwin || linux)
+
+package sing_tun
+
+import "os"
+
+func getTunnelName(fd int32) (string, error) {
+ return "", os.ErrInvalid
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_vmess/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_vmess/server.go
new file mode 100644
index 0000000..7a0afa0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/sing_vmess/server.go
@@ -0,0 +1,192 @@
+package sing_vmess
+
+import (
+ "context"
+ "crypto/tls"
+ "net"
+ "net/http"
+ "net/url"
+ "strings"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/sing"
+ "github.com/metacubex/mihomo/ntp"
+ mihomoVMess "github.com/metacubex/mihomo/transport/vmess"
+
+ vmess "github.com/metacubex/sing-vmess"
+ "github.com/sagernet/sing/common"
+ "github.com/sagernet/sing/common/metadata"
+)
+
+type Listener struct {
+ closed bool
+ config LC.VmessServer
+ listeners []net.Listener
+ service *vmess.Service[string]
+}
+
+var _listener *Listener
+
+func New(config LC.VmessServer, tunnel C.Tunnel, additions ...inbound.Addition) (sl *Listener, err error) {
+ if len(additions) == 0 {
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-VMESS"),
+ inbound.WithSpecialRules(""),
+ }
+ defer func() {
+ _listener = sl
+ }()
+ }
+ h, err := sing.NewListenerHandler(sing.ListenerConfig{
+ Tunnel: tunnel,
+ Type: C.VMESS,
+ Additions: additions,
+ MuxOption: config.MuxOption,
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ service := vmess.NewService[string](h, vmess.ServiceWithDisableHeaderProtection(), vmess.ServiceWithTimeFunc(ntp.Now))
+ err = service.UpdateUsers(
+ common.Map(config.Users, func(it LC.VmessUser) string {
+ return it.Username
+ }),
+ common.Map(config.Users, func(it LC.VmessUser) string {
+ return it.UUID
+ }),
+ common.Map(config.Users, func(it LC.VmessUser) int {
+ return it.AlterID
+ }))
+ if err != nil {
+ return nil, err
+ }
+
+ err = service.Start()
+ if err != nil {
+ return nil, err
+ }
+
+ sl = &Listener{false, config, nil, service}
+
+ tlsConfig := &tls.Config{}
+ var httpMux *http.ServeMux
+
+ if config.Certificate != "" && config.PrivateKey != "" {
+ cert, err := N.ParseCert(config.Certificate, config.PrivateKey, C.Path)
+ if err != nil {
+ return nil, err
+ }
+ tlsConfig.Certificates = []tls.Certificate{cert}
+ }
+ if config.WsPath != "" {
+ httpMux = http.NewServeMux()
+ httpMux.HandleFunc(config.WsPath, func(w http.ResponseWriter, r *http.Request) {
+ conn, err := mihomoVMess.StreamUpgradedWebsocketConn(w, r)
+ if err != nil {
+ http.Error(w, err.Error(), 500)
+ return
+ }
+ sl.HandleConn(conn, tunnel)
+ })
+ tlsConfig.NextProtos = append(tlsConfig.NextProtos, "http/1.1")
+ }
+
+ for _, addr := range strings.Split(config.Listen, ",") {
+ addr := addr
+
+ //TCP
+ l, err := inbound.Listen("tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+ if len(tlsConfig.Certificates) > 0 {
+ l = tls.NewListener(l, tlsConfig)
+ }
+ sl.listeners = append(sl.listeners, l)
+
+ go func() {
+ if httpMux != nil {
+ _ = http.Serve(l, httpMux)
+ return
+ }
+ for {
+ c, err := l.Accept()
+ if err != nil {
+ if sl.closed {
+ break
+ }
+ continue
+ }
+
+ go sl.HandleConn(c, tunnel)
+ }
+ }()
+ }
+
+ return sl, nil
+}
+
+func (l *Listener) Close() error {
+ l.closed = true
+ var retErr error
+ for _, lis := range l.listeners {
+ err := lis.Close()
+ if err != nil {
+ retErr = err
+ }
+ }
+ err := l.service.Close()
+ if err != nil {
+ retErr = err
+ }
+ return retErr
+}
+
+func (l *Listener) Config() string {
+ return l.config.String()
+}
+
+func (l *Listener) AddrList() (addrList []net.Addr) {
+ for _, lis := range l.listeners {
+ addrList = append(addrList, lis.Addr())
+ }
+ return
+}
+
+func (l *Listener) HandleConn(conn net.Conn, tunnel C.Tunnel, additions ...inbound.Addition) {
+ ctx := sing.WithAdditions(context.TODO(), additions...)
+ err := l.service.NewConnection(ctx, conn, metadata.Metadata{
+ Protocol: "vmess",
+ Source: metadata.ParseSocksaddr(conn.RemoteAddr().String()),
+ })
+ if err != nil {
+ _ = conn.Close()
+ return
+ }
+}
+
+func HandleVmess(conn net.Conn, tunnel C.Tunnel, additions ...inbound.Addition) bool {
+ if _listener != nil && _listener.service != nil {
+ go _listener.HandleConn(conn, tunnel, additions...)
+ return true
+ }
+ return false
+}
+
+func ParseVmessURL(s string) (addr, username, password string, err error) {
+ u, err := url.Parse(s)
+ if err != nil {
+ return
+ }
+
+ addr = u.Host
+ if u.User != nil {
+ username = u.User.Username()
+ password, _ = u.User.Password()
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/socks/tcp.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/socks/tcp.go
new file mode 100644
index 0000000..cc66613
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/socks/tcp.go
@@ -0,0 +1,130 @@
+package socks
+
+import (
+ "io"
+ "net"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/auth"
+ C "github.com/metacubex/mihomo/constant"
+ authStore "github.com/metacubex/mihomo/listener/auth"
+ "github.com/metacubex/mihomo/transport/socks4"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type Listener struct {
+ listener net.Listener
+ addr string
+ closed bool
+}
+
+// RawAddress implements C.Listener
+func (l *Listener) RawAddress() string {
+ return l.addr
+}
+
+// Address implements C.Listener
+func (l *Listener) Address() string {
+ return l.listener.Addr().String()
+}
+
+// Close implements C.Listener
+func (l *Listener) Close() error {
+ l.closed = true
+ return l.listener.Close()
+}
+
+func New(addr string, tunnel C.Tunnel, additions ...inbound.Addition) (*Listener, error) {
+ return NewWithAuthenticator(addr, tunnel, authStore.Default, additions...)
+}
+
+func NewWithAuthenticator(addr string, tunnel C.Tunnel, store auth.AuthStore, additions ...inbound.Addition) (*Listener, error) {
+ isDefault := false
+ if len(additions) == 0 {
+ isDefault = true
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-SOCKS"),
+ inbound.WithSpecialRules(""),
+ }
+ }
+
+ l, err := inbound.Listen("tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ sl := &Listener{
+ listener: l,
+ addr: addr,
+ }
+ go func() {
+ for {
+ c, err := l.Accept()
+ if err != nil {
+ if sl.closed {
+ break
+ }
+ continue
+ }
+ store := store
+ if isDefault || store == authStore.Default { // only apply on default listener
+ if !inbound.IsRemoteAddrDisAllowed(c.RemoteAddr()) {
+ _ = c.Close()
+ continue
+ }
+ if inbound.SkipAuthRemoteAddr(c.RemoteAddr()) {
+ store = authStore.Nil
+ }
+ }
+ go handleSocks(c, tunnel, store, additions...)
+ }
+ }()
+
+ return sl, nil
+}
+
+func handleSocks(conn net.Conn, tunnel C.Tunnel, store auth.AuthStore, additions ...inbound.Addition) {
+ bufConn := N.NewBufferedConn(conn)
+ head, err := bufConn.Peek(1)
+ if err != nil {
+ conn.Close()
+ return
+ }
+
+ switch head[0] {
+ case socks4.Version:
+ HandleSocks4(bufConn, tunnel, store, additions...)
+ case socks5.Version:
+ HandleSocks5(bufConn, tunnel, store, additions...)
+ default:
+ conn.Close()
+ }
+}
+
+func HandleSocks4(conn net.Conn, tunnel C.Tunnel, store auth.AuthStore, additions ...inbound.Addition) {
+ authenticator := store.Authenticator()
+ addr, _, user, err := socks4.ServerHandshake(conn, authenticator)
+ if err != nil {
+ conn.Close()
+ return
+ }
+ additions = append(additions, inbound.WithInUser(user))
+ tunnel.HandleTCPConn(inbound.NewSocket(socks5.ParseAddr(addr), conn, C.SOCKS4, additions...))
+}
+
+func HandleSocks5(conn net.Conn, tunnel C.Tunnel, store auth.AuthStore, additions ...inbound.Addition) {
+ authenticator := store.Authenticator()
+ target, command, user, err := socks5.ServerHandshake(conn, authenticator)
+ if err != nil {
+ conn.Close()
+ return
+ }
+ if command == socks5.CmdUDPAssociate {
+ defer conn.Close()
+ io.Copy(io.Discard, conn)
+ return
+ }
+ additions = append(additions, inbound.WithInUser(user))
+ tunnel.HandleTCPConn(inbound.NewSocket(target, conn, C.SOCKS5, additions...))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/socks/udp.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/socks/udp.go
new file mode 100644
index 0000000..ef31b20
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/socks/udp.go
@@ -0,0 +1,92 @@
+package socks
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/sockopt"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type UDPListener struct {
+ packetConn net.PacketConn
+ addr string
+ closed bool
+}
+
+// RawAddress implements C.Listener
+func (l *UDPListener) RawAddress() string {
+ return l.addr
+}
+
+// Address implements C.Listener
+func (l *UDPListener) Address() string {
+ return l.packetConn.LocalAddr().String()
+}
+
+// Close implements C.Listener
+func (l *UDPListener) Close() error {
+ l.closed = true
+ return l.packetConn.Close()
+}
+
+func NewUDP(addr string, tunnel C.Tunnel, additions ...inbound.Addition) (*UDPListener, error) {
+ if len(additions) == 0 {
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-SOCKS"),
+ inbound.WithSpecialRules(""),
+ }
+ }
+ l, err := net.ListenPacket("udp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ if err := sockopt.UDPReuseaddr(l.(*net.UDPConn)); err != nil {
+ log.Warnln("Failed to Reuse UDP Address: %s", err)
+ }
+
+ sl := &UDPListener{
+ packetConn: l,
+ addr: addr,
+ }
+ conn := N.NewEnhancePacketConn(l)
+ go func() {
+ for {
+ data, put, remoteAddr, err := conn.WaitReadFrom()
+ if err != nil {
+ if put != nil {
+ put()
+ }
+ if sl.closed {
+ break
+ }
+ continue
+ }
+ handleSocksUDP(l, tunnel, data, put, remoteAddr, additions...)
+ }
+ }()
+
+ return sl, nil
+}
+
+func handleSocksUDP(pc net.PacketConn, tunnel C.Tunnel, buf []byte, put func(), addr net.Addr, additions ...inbound.Addition) {
+ target, payload, err := socks5.DecodeUDPPacket(buf)
+ if err != nil {
+ // Unresolved UDP packet, return buffer to the pool
+ if put != nil {
+ put()
+ }
+ return
+ }
+ packet := &packet{
+ pc: pc,
+ rAddr: addr,
+ payload: payload,
+ put: put,
+ }
+ tunnel.HandleUDPPacket(inbound.NewPacket(target, packet, C.SOCKS5, additions...))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/socks/utils.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/socks/utils.go
new file mode 100644
index 0000000..d113d45
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/socks/utils.go
@@ -0,0 +1,44 @@
+package socks
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type packet struct {
+ pc net.PacketConn
+ rAddr net.Addr
+ payload []byte
+ put func()
+}
+
+func (c *packet) Data() []byte {
+ return c.payload
+}
+
+// WriteBack write UDP packet with source(ip, port) = `addr`
+func (c *packet) WriteBack(b []byte, addr net.Addr) (n int, err error) {
+ packet, err := socks5.EncodeUDPPacket(socks5.ParseAddrToSocksAddr(addr), b)
+ if err != nil {
+ return
+ }
+ return c.pc.WriteTo(packet, c.rAddr)
+}
+
+// LocalAddr returns the source IP/Port of UDP Packet
+func (c *packet) LocalAddr() net.Addr {
+ return c.rAddr
+}
+
+func (c *packet) Drop() {
+ if c.put != nil {
+ c.put()
+ c.put = nil
+ }
+ c.payload = nil
+}
+
+func (c *packet) InAddr() net.Addr {
+ return c.pc.LocalAddr()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/packet.go
new file mode 100644
index 0000000..b038d95
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/packet.go
@@ -0,0 +1,120 @@
+package tproxy
+
+import (
+ "errors"
+ "fmt"
+ "net"
+ "net/netip"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/common/pool"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+type packet struct {
+ pc net.PacketConn
+ lAddr netip.AddrPort
+ buf []byte
+ tunnel C.Tunnel
+}
+
+func (c *packet) Data() []byte {
+ return c.buf
+}
+
+// WriteBack opens a new socket binding `addr` to write UDP packet back
+func (c *packet) WriteBack(b []byte, addr net.Addr) (n int, err error) {
+ tc, err := createOrGetLocalConn(addr, c.LocalAddr(), c.tunnel)
+ if err != nil {
+ n = 0
+ return
+ }
+ n, err = tc.Write(b)
+ return
+}
+
+// LocalAddr returns the source IP/Port of UDP Packet
+func (c *packet) LocalAddr() net.Addr {
+ return &net.UDPAddr{IP: c.lAddr.Addr().AsSlice(), Port: int(c.lAddr.Port()), Zone: c.lAddr.Addr().Zone()}
+}
+
+func (c *packet) Drop() {
+ _ = pool.Put(c.buf)
+ c.buf = nil
+}
+
+func (c *packet) InAddr() net.Addr {
+ return c.pc.LocalAddr()
+}
+
+// this function listen at rAddr and write to lAddr
+// for here, rAddr is the ip/port client want to access
+// lAddr is the ip/port client opened
+func createOrGetLocalConn(rAddr, lAddr net.Addr, tunnel C.Tunnel) (*net.UDPConn, error) {
+ remote := rAddr.String()
+ local := lAddr.String()
+ natTable := tunnel.NatTable()
+ localConn := natTable.GetForLocalConn(local, remote)
+ // localConn not exist
+ if localConn == nil {
+ cond, loaded := natTable.GetOrCreateLockForLocalConn(local, remote)
+ if loaded {
+ cond.L.Lock()
+ cond.Wait()
+ // we should get localConn here
+ localConn = natTable.GetForLocalConn(local, remote)
+ if localConn == nil {
+ return nil, fmt.Errorf("localConn is nil, nat entry not exist")
+ }
+ cond.L.Unlock()
+ } else {
+ if cond == nil {
+ return nil, fmt.Errorf("cond is nil, nat entry not exist")
+ }
+ defer func() {
+ natTable.DeleteLockForLocalConn(local, remote)
+ cond.Broadcast()
+ }()
+ conn, err := listenLocalConn(rAddr, lAddr, tunnel)
+ if err != nil {
+ log.Errorln("listenLocalConn failed with error: %s, packet loss (rAddr[%T]=%s lAddr[%T]=%s)", err.Error(), rAddr, remote, lAddr, local)
+ return nil, err
+ }
+ natTable.AddForLocalConn(local, remote, conn)
+ localConn = conn
+ }
+ }
+ return localConn, nil
+}
+
+// this function listen at rAddr
+// and send what received to program itself, then send to real remote
+func listenLocalConn(rAddr, lAddr net.Addr, tunnel C.Tunnel) (*net.UDPConn, error) {
+ additions := []inbound.Addition{
+ inbound.WithInName("DEFAULT-TPROXY"),
+ inbound.WithSpecialRules(""),
+ }
+ lc, err := dialUDP("udp", rAddr.(*net.UDPAddr).AddrPort(), lAddr.(*net.UDPAddr).AddrPort())
+ if err != nil {
+ return nil, err
+ }
+ go func() {
+ log.Debugln("TProxy listenLocalConn rAddr=%s lAddr=%s", rAddr.String(), lAddr.String())
+ for {
+ buf := pool.Get(pool.UDPBufferSize)
+ br, err := lc.Read(buf)
+ if err != nil {
+ if errors.Is(err, net.ErrClosed) {
+ log.Debugln("TProxy local conn listener exit.. rAddr=%s lAddr=%s", rAddr.String(), lAddr.String())
+ pool.Put(buf)
+ return
+ }
+ }
+ // since following localPackets are pass through this socket which listen rAddr
+ // I choose current listener as packet's packet conn
+ handlePacketConn(lc, tunnel, buf[:br], lAddr.(*net.UDPAddr).AddrPort(), rAddr.(*net.UDPAddr).AddrPort(), additions...)
+ }
+ }()
+ return lc, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/setsockopt_linux.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/setsockopt_linux.go
new file mode 100644
index 0000000..9189f11
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/setsockopt_linux.go
@@ -0,0 +1,56 @@
+//go:build linux
+
+package tproxy
+
+import (
+ "net"
+ "syscall"
+)
+
+func setsockopt(rc syscall.RawConn, addr string) error {
+ isIPv6 := true
+ host, _, err := net.SplitHostPort(addr)
+ if err != nil {
+ return err
+ }
+ ip := net.ParseIP(host)
+ if ip != nil && ip.To4() != nil {
+ isIPv6 = false
+ }
+
+ rc.Control(func(fd uintptr) {
+ err = syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1)
+
+ if err == nil {
+ err = syscall.SetsockoptInt(int(fd), syscall.SOL_IP, syscall.IP_TRANSPARENT, 1)
+ }
+ if err == nil && isIPv6 {
+ err = syscall.SetsockoptInt(int(fd), syscall.SOL_IPV6, IPV6_TRANSPARENT, 1)
+ }
+
+ if err == nil {
+ err = syscall.SetsockoptInt(int(fd), syscall.SOL_IP, syscall.IP_RECVORIGDSTADDR, 1)
+ }
+ if err == nil && isIPv6 {
+ err = syscall.SetsockoptInt(int(fd), syscall.SOL_IPV6, IPV6_RECVORIGDSTADDR, 1)
+ }
+
+ if err == nil {
+ _ = setDSCPsockopt(fd, isIPv6)
+ }
+ })
+
+ return err
+}
+
+func setDSCPsockopt(fd uintptr, isIPv6 bool) (err error) {
+ if err == nil {
+ err = syscall.SetsockoptInt(int(fd), syscall.SOL_IP, syscall.IP_RECVTOS, 1)
+ }
+
+ if err == nil && isIPv6 {
+ err = syscall.SetsockoptInt(int(fd), syscall.SOL_IPV6, syscall.IPV6_RECVTCLASS, 1)
+ }
+
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/setsockopt_other.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/setsockopt_other.go
new file mode 100644
index 0000000..9ba06f9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/setsockopt_other.go
@@ -0,0 +1,12 @@
+//go:build !linux
+
+package tproxy
+
+import (
+ "errors"
+ "syscall"
+)
+
+func setsockopt(rc syscall.RawConn, addr string) error {
+ return errors.New("not supported on current platform")
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/tproxy.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/tproxy.go
new file mode 100644
index 0000000..6056047
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/tproxy.go
@@ -0,0 +1,84 @@
+package tproxy
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/component/keepalive"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type Listener struct {
+ listener net.Listener
+ addr string
+ closed bool
+}
+
+// RawAddress implements C.Listener
+func (l *Listener) RawAddress() string {
+ return l.addr
+}
+
+// Address implements C.Listener
+func (l *Listener) Address() string {
+ return l.listener.Addr().String()
+}
+
+// Close implements C.Listener
+func (l *Listener) Close() error {
+ l.closed = true
+ return l.listener.Close()
+}
+
+func (l *Listener) handleTProxy(conn net.Conn, tunnel C.Tunnel, additions ...inbound.Addition) {
+ target := socks5.ParseAddrToSocksAddr(conn.LocalAddr())
+ keepalive.TCPKeepAlive(conn)
+ // TProxy's conn.LocalAddr() is target address, so we set from l.listener
+ additions = append([]inbound.Addition{inbound.WithInAddr(l.listener.Addr())}, additions...)
+ tunnel.HandleTCPConn(inbound.NewSocket(target, conn, C.TPROXY, additions...))
+}
+
+func New(addr string, tunnel C.Tunnel, additions ...inbound.Addition) (*Listener, error) {
+ if len(additions) == 0 {
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-TPROXY"),
+ inbound.WithSpecialRules(""),
+ }
+ }
+ l, err := net.Listen("tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ tl := l.(*net.TCPListener)
+ rc, err := tl.SyscallConn()
+ if err != nil {
+ return nil, err
+ }
+
+ err = setsockopt(rc, addr)
+ if err != nil {
+ return nil, err
+ }
+
+ rl := &Listener{
+ listener: l,
+ addr: addr,
+ }
+
+ go func() {
+ for {
+ c, err := l.Accept()
+ if err != nil {
+ if rl.closed {
+ break
+ }
+ continue
+ }
+ go rl.handleTProxy(c, tunnel, additions...)
+ }
+ }()
+
+ return rl, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/tproxy_iptables.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/tproxy_iptables.go
new file mode 100644
index 0000000..bc26b12
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/tproxy_iptables.go
@@ -0,0 +1,208 @@
+package tproxy
+
+import (
+ "errors"
+ "fmt"
+ "net"
+ "runtime"
+
+ "github.com/metacubex/mihomo/common/cmd"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/log"
+)
+
+var (
+ dnsPort uint16
+ tProxyPort uint16
+ interfaceName string
+ DnsRedirect bool
+)
+
+const (
+ PROXY_FWMARK = "0x2d0"
+ PROXY_ROUTE_TABLE = "0x2d0"
+)
+
+func SetTProxyIPTables(ifname string, bypass []string, tport uint16, dnsredir bool, dport uint16) error {
+ if _, err := cmd.ExecCmd("iptables -V"); err != nil {
+ return fmt.Errorf("current operations system [%s] are not support iptables or command iptables does not exist", runtime.GOOS)
+ }
+
+ if ifname == "" {
+ return errors.New("the 'interface-name' can not be empty")
+ }
+
+ interfaceName = ifname
+ tProxyPort = tport
+ DnsRedirect = dnsredir
+ dnsPort = dport
+
+ // add route
+ execCmd(fmt.Sprintf("ip -f inet rule add fwmark %s lookup %s", PROXY_FWMARK, PROXY_ROUTE_TABLE))
+ execCmd(fmt.Sprintf("ip -f inet route add local default dev %s table %s", interfaceName, PROXY_ROUTE_TABLE))
+
+ // set FORWARD
+ if interfaceName != "lo" {
+ execCmd("sysctl -w net.ipv4.ip_forward=1")
+ execCmd(fmt.Sprintf("iptables -t filter -A FORWARD -o %s -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT", interfaceName))
+ execCmd(fmt.Sprintf("iptables -t filter -A FORWARD -o %s -j ACCEPT", interfaceName))
+ execCmd(fmt.Sprintf("iptables -t filter -A FORWARD -i %s ! -o %s -j ACCEPT", interfaceName, interfaceName))
+ execCmd(fmt.Sprintf("iptables -t filter -A FORWARD -i %s -o %s -j ACCEPT", interfaceName, interfaceName))
+ }
+
+ // set mihomo divert
+ execCmd("iptables -t mangle -N mihomo_divert")
+ execCmd("iptables -t mangle -F mihomo_divert")
+ execCmd(fmt.Sprintf("iptables -t mangle -A mihomo_divert -j MARK --set-mark %s", PROXY_FWMARK))
+ execCmd("iptables -t mangle -A mihomo_divert -j ACCEPT")
+
+ // set pre routing
+ execCmd("iptables -t mangle -N mihomo_prerouting")
+ execCmd("iptables -t mangle -F mihomo_prerouting")
+ execCmd("iptables -t mangle -A mihomo_prerouting -s 172.17.0.0/16 -j RETURN")
+ if DnsRedirect {
+ execCmd("iptables -t mangle -A mihomo_prerouting -p udp --dport 53 -j ACCEPT")
+ execCmd("iptables -t mangle -A mihomo_prerouting -p tcp --dport 53 -j ACCEPT")
+ }
+ execCmd("iptables -t mangle -A mihomo_prerouting -m addrtype --dst-type LOCAL -j RETURN")
+ addLocalnetworkToChain("mihomo_prerouting", bypass)
+ execCmd("iptables -t mangle -A mihomo_prerouting -p tcp -m socket -j mihomo_divert")
+ execCmd("iptables -t mangle -A mihomo_prerouting -p udp -m socket -j mihomo_divert")
+ execCmd(fmt.Sprintf("iptables -t mangle -A mihomo_prerouting -p tcp -j TPROXY --on-port %d --tproxy-mark %s/%s", tProxyPort, PROXY_FWMARK, PROXY_FWMARK))
+ execCmd(fmt.Sprintf("iptables -t mangle -A mihomo_prerouting -p udp -j TPROXY --on-port %d --tproxy-mark %s/%s", tProxyPort, PROXY_FWMARK, PROXY_FWMARK))
+ execCmd("iptables -t mangle -A PREROUTING -j mihomo_prerouting")
+
+ if DnsRedirect {
+ execCmd(fmt.Sprintf("iptables -t nat -I PREROUTING ! -s 172.17.0.0/16 ! -d 127.0.0.0/8 -p tcp --dport 53 -j REDIRECT --to %d", dnsPort))
+ execCmd(fmt.Sprintf("iptables -t nat -I PREROUTING ! -s 172.17.0.0/16 ! -d 127.0.0.0/8 -p udp --dport 53 -j REDIRECT --to %d", dnsPort))
+ }
+
+ // set post routing
+ if interfaceName != "lo" {
+ execCmd(fmt.Sprintf("iptables -t nat -A POSTROUTING -o %s -m addrtype ! --src-type LOCAL -j MASQUERADE", interfaceName))
+ }
+
+ // set output
+ execCmd("iptables -t mangle -N mihomo_output")
+ execCmd("iptables -t mangle -F mihomo_output")
+ execCmd(fmt.Sprintf("iptables -t mangle -A mihomo_output -m mark --mark %#x -j RETURN", dialer.DefaultRoutingMark.Load()))
+ if DnsRedirect {
+ execCmd("iptables -t mangle -A mihomo_output -p udp -m multiport --dports 53,123,137 -j ACCEPT")
+ execCmd("iptables -t mangle -A mihomo_output -p tcp --dport 53 -j ACCEPT")
+ }
+ execCmd("iptables -t mangle -A mihomo_output -m addrtype --dst-type LOCAL -j RETURN")
+ execCmd("iptables -t mangle -A mihomo_output -m addrtype --dst-type BROADCAST -j RETURN")
+ addLocalnetworkToChain("mihomo_output", bypass)
+ execCmd(fmt.Sprintf("iptables -t mangle -A mihomo_output -p tcp -j MARK --set-mark %s", PROXY_FWMARK))
+ execCmd(fmt.Sprintf("iptables -t mangle -A mihomo_output -p udp -j MARK --set-mark %s", PROXY_FWMARK))
+ execCmd(fmt.Sprintf("iptables -t mangle -I OUTPUT -o %s -j mihomo_output", interfaceName))
+
+ // set dns output
+ if DnsRedirect {
+ execCmd("iptables -t nat -N mihomo_dns_output")
+ execCmd("iptables -t nat -F mihomo_dns_output")
+ execCmd(fmt.Sprintf("iptables -t nat -A mihomo_dns_output -m mark --mark %#x -j RETURN", dialer.DefaultRoutingMark.Load()))
+ execCmd("iptables -t nat -A mihomo_dns_output -s 172.17.0.0/16 -j RETURN")
+ execCmd(fmt.Sprintf("iptables -t nat -A mihomo_dns_output -p udp -j REDIRECT --to-ports %d", dnsPort))
+ execCmd(fmt.Sprintf("iptables -t nat -A mihomo_dns_output -p tcp -j REDIRECT --to-ports %d", dnsPort))
+ execCmd("iptables -t nat -I OUTPUT -p tcp --dport 53 -j mihomo_dns_output")
+ execCmd("iptables -t nat -I OUTPUT -p udp --dport 53 -j mihomo_dns_output")
+ }
+
+ return nil
+}
+
+func CleanupTProxyIPTables() {
+ if runtime.GOOS != "linux" || interfaceName == "" || tProxyPort == 0 {
+ return
+ }
+
+ log.Warnln("Cleanup tproxy linux iptables")
+
+ dialer.DefaultRoutingMark.CompareAndSwap(2158, 0)
+
+ if _, err := cmd.ExecCmd("iptables -t mangle -L mihomo_divert"); err != nil {
+ return
+ }
+
+ // clean route
+ execCmd(fmt.Sprintf("ip -f inet rule del fwmark %s lookup %s", PROXY_FWMARK, PROXY_ROUTE_TABLE))
+ execCmd(fmt.Sprintf("ip -f inet route del local default dev %s table %s", interfaceName, PROXY_ROUTE_TABLE))
+
+ // clean FORWARD
+ if interfaceName != "lo" {
+ execCmd(fmt.Sprintf("iptables -t filter -D FORWARD -i %s ! -o %s -j ACCEPT", interfaceName, interfaceName))
+ execCmd(fmt.Sprintf("iptables -t filter -D FORWARD -i %s -o %s -j ACCEPT", interfaceName, interfaceName))
+ execCmd(fmt.Sprintf("iptables -t filter -D FORWARD -o %s -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT", interfaceName))
+ execCmd(fmt.Sprintf("iptables -t filter -D FORWARD -o %s -j ACCEPT", interfaceName))
+ }
+
+ // clean PREROUTING
+ if DnsRedirect {
+ execCmd(fmt.Sprintf("iptables -t nat -D PREROUTING ! -s 172.17.0.0/16 ! -d 127.0.0.0/8 -p tcp --dport 53 -j REDIRECT --to %d", dnsPort))
+ execCmd(fmt.Sprintf("iptables -t nat -D PREROUTING ! -s 172.17.0.0/16 ! -d 127.0.0.0/8 -p udp --dport 53 -j REDIRECT --to %d", dnsPort))
+ }
+ execCmd("iptables -t mangle -D PREROUTING -j mihomo_prerouting")
+
+ // clean POSTROUTING
+ if interfaceName != "lo" {
+ execCmd(fmt.Sprintf("iptables -t nat -D POSTROUTING -o %s -m addrtype ! --src-type LOCAL -j MASQUERADE", interfaceName))
+ }
+
+ // clean OUTPUT
+ execCmd(fmt.Sprintf("iptables -t mangle -D OUTPUT -o %s -j mihomo_output", interfaceName))
+ if DnsRedirect {
+ execCmd("iptables -t nat -D OUTPUT -p tcp --dport 53 -j mihomo_dns_output")
+ execCmd("iptables -t nat -D OUTPUT -p udp --dport 53 -j mihomo_dns_output")
+ }
+
+ // clean chain
+ execCmd("iptables -t mangle -F mihomo_prerouting")
+ execCmd("iptables -t mangle -X mihomo_prerouting")
+ execCmd("iptables -t mangle -F mihomo_divert")
+ execCmd("iptables -t mangle -X mihomo_divert")
+ execCmd("iptables -t mangle -F mihomo_output")
+ execCmd("iptables -t mangle -X mihomo_output")
+ if DnsRedirect {
+ execCmd("iptables -t nat -F mihomo_dns_output")
+ execCmd("iptables -t nat -X mihomo_dns_output")
+ }
+ interfaceName = ""
+ tProxyPort = 0
+ dnsPort = 0
+}
+
+func addLocalnetworkToChain(chain string, bypass []string) {
+ for _, bp := range bypass {
+ _, _, err := net.ParseCIDR(bp)
+ if err != nil {
+ log.Warnln("[IPTABLES] %s", err)
+ continue
+ }
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d %s -j RETURN", chain, bp))
+ }
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 0.0.0.0/8 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 10.0.0.0/8 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 100.64.0.0/10 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 127.0.0.0/8 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 169.254.0.0/16 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 172.16.0.0/12 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 192.0.0.0/24 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 192.0.2.0/24 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 192.88.99.0/24 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 192.168.0.0/16 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 198.51.100.0/24 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 203.0.113.0/24 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 224.0.0.0/4 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 240.0.0.0/4 -j RETURN", chain))
+ execCmd(fmt.Sprintf("iptables -t mangle -A %s -d 255.255.255.255/32 -j RETURN", chain))
+}
+
+func execCmd(cmdStr string) {
+ log.Debugln("[IPTABLES] %s", cmdStr)
+
+ _, err := cmd.ExecCmd(cmdStr)
+ if err != nil {
+ log.Warnln("[IPTABLES] exec cmd: %v", err)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/udp.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/udp.go
new file mode 100644
index 0000000..f738ef0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/udp.go
@@ -0,0 +1,105 @@
+package tproxy
+
+import (
+ "net"
+ "net/netip"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/common/pool"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type UDPListener struct {
+ packetConn net.PacketConn
+ addr string
+ closed bool
+}
+
+// RawAddress implements C.Listener
+func (l *UDPListener) RawAddress() string {
+ return l.addr
+}
+
+// Address implements C.Listener
+func (l *UDPListener) Address() string {
+ return l.packetConn.LocalAddr().String()
+}
+
+// Close implements C.Listener
+func (l *UDPListener) Close() error {
+ l.closed = true
+ return l.packetConn.Close()
+}
+
+func NewUDP(addr string, tunnel C.Tunnel, additions ...inbound.Addition) (*UDPListener, error) {
+ if len(additions) == 0 {
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-TPROXY"),
+ inbound.WithSpecialRules(""),
+ }
+ }
+ l, err := net.ListenPacket("udp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ rl := &UDPListener{
+ packetConn: l,
+ addr: addr,
+ }
+
+ c := l.(*net.UDPConn)
+
+ rc, err := c.SyscallConn()
+ if err != nil {
+ return nil, err
+ }
+
+ err = setsockopt(rc, addr)
+ if err != nil {
+ return nil, err
+ }
+
+ go func() {
+ oob := make([]byte, 1024)
+ for {
+ buf := pool.Get(pool.UDPBufferSize)
+ n, oobn, _, lAddr, err := c.ReadMsgUDPAddrPort(buf, oob)
+ if err != nil {
+ pool.Put(buf)
+ if rl.closed {
+ break
+ }
+ continue
+ }
+
+ rAddr, err := getOrigDst(oob[:oobn])
+ if err != nil {
+ continue
+ }
+
+ dscp, _ := getDSCP(oob[:oobn])
+ additions = append(additions, inbound.WithDSCP(dscp))
+
+ if rAddr.Addr().Is4() {
+ // try to unmap 4in6 address
+ lAddr = netip.AddrPortFrom(lAddr.Addr().Unmap(), lAddr.Port())
+ }
+ handlePacketConn(l, tunnel, buf[:n], lAddr, rAddr, additions...)
+ }
+ }()
+
+ return rl, nil
+}
+
+func handlePacketConn(pc net.PacketConn, tunnel C.Tunnel, buf []byte, lAddr, rAddr netip.AddrPort, additions ...inbound.Addition) {
+ target := socks5.AddrFromStdAddrPort(rAddr)
+ pkt := &packet{
+ pc: pc,
+ lAddr: lAddr,
+ buf: buf,
+ tunnel: tunnel,
+ }
+ tunnel.HandleUDPPacket(inbound.NewPacket(target, pkt, C.TPROXY, additions...))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/udp_linux.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/udp_linux.go
new file mode 100644
index 0000000..c96d4cc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/udp_linux.go
@@ -0,0 +1,165 @@
+//go:build linux
+
+package tproxy
+
+import (
+ "fmt"
+ "net"
+ "net/netip"
+ "os"
+ "strconv"
+ "syscall"
+
+ "golang.org/x/sys/unix"
+)
+
+const (
+ IPV6_TRANSPARENT = 0x4b
+ IPV6_RECVORIGDSTADDR = 0x4a
+)
+
+// dialUDP acts like net.DialUDP for transparent proxy.
+// It binds to a non-local address(`lAddr`).
+func dialUDP(network string, lAddr, rAddr netip.AddrPort) (uc *net.UDPConn, err error) {
+ rSockAddr, err := udpAddrToSockAddr(rAddr)
+ if err != nil {
+ return nil, err
+ }
+
+ lSockAddr, err := udpAddrToSockAddr(lAddr)
+ if err != nil {
+ return nil, err
+ }
+
+ fd, err := syscall.Socket(udpAddrFamily(network, lAddr, rAddr), syscall.SOCK_DGRAM, 0)
+ if err != nil {
+ return nil, err
+ }
+
+ defer func() {
+ if err != nil {
+ syscall.Close(fd)
+ }
+ }()
+
+ if err = syscall.SetsockoptInt(fd, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1); err != nil {
+ return nil, err
+ }
+
+ if err = syscall.SetsockoptInt(fd, syscall.SOL_IP, syscall.IP_TRANSPARENT, 1); err != nil {
+ return nil, err
+ }
+
+ if err = syscall.Bind(fd, lSockAddr); err != nil {
+ return nil, err
+ }
+
+ if err = syscall.Connect(fd, rSockAddr); err != nil {
+ return nil, err
+ }
+
+ fdFile := os.NewFile(uintptr(fd), fmt.Sprintf("net-udp-dial-%s", rAddr.String()))
+ defer fdFile.Close()
+
+ c, err := net.FileConn(fdFile)
+ if err != nil {
+ return nil, err
+ }
+
+ return c.(*net.UDPConn), nil
+}
+
+func udpAddrToSockAddr(addr netip.AddrPort) (syscall.Sockaddr, error) {
+ if addr.Addr().Is4() {
+ return &syscall.SockaddrInet4{Addr: addr.Addr().As4(), Port: int(addr.Port())}, nil
+ }
+
+ zoneID, err := strconv.ParseUint(addr.Addr().Zone(), 10, 32)
+ if err != nil {
+ zoneID = 0
+ }
+
+ return &syscall.SockaddrInet6{Addr: addr.Addr().As16(), Port: int(addr.Port()), ZoneId: uint32(zoneID)}, nil
+}
+
+func udpAddrFamily(net string, lAddr, rAddr netip.AddrPort) int {
+ switch net[len(net)-1] {
+ case '4':
+ return syscall.AF_INET
+ case '6':
+ return syscall.AF_INET6
+ }
+
+ if lAddr.Addr().Is4() && rAddr.Addr().Is4() {
+ return syscall.AF_INET
+ }
+ return syscall.AF_INET6
+}
+
+func getOrigDst(oob []byte) (netip.AddrPort, error) {
+ // oob contains socket control messages which we need to parse.
+ scms, err := unix.ParseSocketControlMessage(oob)
+ if err != nil {
+ return netip.AddrPort{}, fmt.Errorf("parse control message: %w", err)
+ }
+
+ // retrieve the destination address from the SCM.
+ var sa unix.Sockaddr
+ for i := range scms {
+ sa, err = unix.ParseOrigDstAddr(&scms[i])
+ if err == nil {
+ break
+ }
+ }
+
+ if err != nil {
+ return netip.AddrPort{}, fmt.Errorf("retrieve destination: %w", err)
+ }
+
+ // encode the destination address into a cmsg.
+ var rAddr netip.AddrPort
+ switch v := sa.(type) {
+ case *unix.SockaddrInet4:
+ rAddr = netip.AddrPortFrom(netip.AddrFrom4(v.Addr), uint16(v.Port))
+ case *unix.SockaddrInet6:
+ rAddr = netip.AddrPortFrom(netip.AddrFrom16(v.Addr), uint16(v.Port))
+ default:
+ return netip.AddrPort{}, fmt.Errorf("unsupported address type: %T", v)
+ }
+
+ return rAddr, nil
+}
+
+func getDSCP(oob []byte) (uint8, error) {
+ scms, err := unix.ParseSocketControlMessage(oob)
+ if err != nil {
+ return 0, fmt.Errorf("parse control message: %w", err)
+ }
+ var dscp uint8
+ for i := range scms {
+ dscp, err = parseDSCP(&scms[i])
+ if err == nil {
+ break
+ }
+ }
+
+ if err != nil {
+ return 0, fmt.Errorf("retrieve DSCP: %w", err)
+ }
+ return dscp, nil
+}
+
+func parseDSCP(m *unix.SocketControlMessage) (uint8, error) {
+ switch {
+ case m.Header.Level == unix.SOL_IP && m.Header.Type == unix.IP_TOS:
+ dscp := uint8(m.Data[0] >> 2)
+ return dscp, nil
+
+ case m.Header.Level == unix.SOL_IPV6 && m.Header.Type == unix.IPV6_TCLASS:
+ dscp := uint8(m.Data[0] >> 2)
+ return dscp, nil
+
+ default:
+ return 0, nil
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/udp_other.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/udp_other.go
new file mode 100644
index 0000000..2e0e0ae
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tproxy/udp_other.go
@@ -0,0 +1,21 @@
+//go:build !linux
+
+package tproxy
+
+import (
+ "errors"
+ "net"
+ "net/netip"
+)
+
+func getOrigDst(oob []byte) (netip.AddrPort, error) {
+ return netip.AddrPort{}, errors.New("UDP redir not supported on current platform")
+}
+
+func getDSCP(oob []byte) (uint8, error) {
+ return 0, errors.New("UDP redir not supported on current platform")
+}
+
+func dialUDP(network string, lAddr, rAddr netip.AddrPort) (*net.UDPConn, error) {
+ return nil, errors.New("UDP redir not supported on current platform")
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tuic/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tuic/server.go
new file mode 100644
index 0000000..5d807cb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tuic/server.go
@@ -0,0 +1,215 @@
+package tuic
+
+import (
+ "context"
+ "crypto/tls"
+ "net"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ CN "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/sockopt"
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/sing"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/transport/socks5"
+ "github.com/metacubex/mihomo/transport/tuic"
+
+ "github.com/gofrs/uuid/v5"
+ "github.com/metacubex/quic-go"
+ "golang.org/x/exp/slices"
+)
+
+const ServerMaxIncomingStreams = (1 << 32) - 1
+
+type Listener struct {
+ closed bool
+ config LC.TuicServer
+ udpListeners []net.PacketConn
+ servers []*tuic.Server
+}
+
+func New(config LC.TuicServer, tunnel C.Tunnel, additions ...inbound.Addition) (*Listener, error) {
+ if len(additions) == 0 {
+ additions = []inbound.Addition{
+ inbound.WithInName("DEFAULT-TUIC"),
+ inbound.WithSpecialRules(""),
+ }
+ }
+ h, err := sing.NewListenerHandler(sing.ListenerConfig{
+ Tunnel: tunnel,
+ Type: C.TUIC,
+ Additions: additions,
+ MuxOption: config.MuxOption,
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ cert, err := CN.ParseCert(config.Certificate, config.PrivateKey, C.Path)
+ if err != nil {
+ return nil, err
+ }
+ tlsConfig := &tls.Config{
+ MinVersion: tls.VersionTLS13,
+ Certificates: []tls.Certificate{cert},
+ }
+ if len(config.ALPN) > 0 {
+ tlsConfig.NextProtos = config.ALPN
+ } else {
+ tlsConfig.NextProtos = []string{"h3"}
+ }
+ quicConfig := &quic.Config{
+ MaxIdleTimeout: time.Duration(config.MaxIdleTime) * time.Millisecond,
+ MaxIncomingStreams: ServerMaxIncomingStreams,
+ MaxIncomingUniStreams: ServerMaxIncomingStreams,
+ EnableDatagrams: true,
+ Allow0RTT: true,
+ }
+ quicConfig.InitialStreamReceiveWindow = tuic.DefaultStreamReceiveWindow / 10
+ quicConfig.MaxStreamReceiveWindow = tuic.DefaultStreamReceiveWindow
+ quicConfig.InitialConnectionReceiveWindow = tuic.DefaultConnectionReceiveWindow / 10
+ quicConfig.MaxConnectionReceiveWindow = tuic.DefaultConnectionReceiveWindow
+
+ packetOverHead := tuic.PacketOverHeadV4
+ if len(config.Token) == 0 {
+ packetOverHead = tuic.PacketOverHeadV5
+ }
+
+ if config.CWND == 0 {
+ config.CWND = 32
+ }
+
+ if config.MaxUdpRelayPacketSize == 0 {
+ config.MaxUdpRelayPacketSize = 1500
+ }
+ maxDatagramFrameSize := config.MaxUdpRelayPacketSize + packetOverHead
+ if maxDatagramFrameSize > 1400 {
+ maxDatagramFrameSize = 1400
+ }
+ config.MaxUdpRelayPacketSize = maxDatagramFrameSize - packetOverHead
+ quicConfig.MaxDatagramFrameSize = int64(maxDatagramFrameSize)
+
+ handleTcpFn := func(conn net.Conn, addr socks5.Addr, _additions ...inbound.Addition) error {
+ newAdditions := additions
+ if len(_additions) > 0 {
+ newAdditions = slices.Clone(additions)
+ newAdditions = append(newAdditions, _additions...)
+ }
+ conn, metadata := inbound.NewSocket(addr, conn, C.TUIC, newAdditions...)
+ if h.IsSpecialFqdn(metadata.Host) {
+ go func() { // ParseSpecialFqdn will block, so open a new goroutine
+ _ = h.ParseSpecialFqdn(
+ sing.WithAdditions(context.Background(), newAdditions...),
+ conn,
+ sing.ConvertMetadata(metadata),
+ )
+ }()
+ return nil
+ }
+ go tunnel.HandleTCPConn(conn, metadata)
+ return nil
+ }
+ handleUdpFn := func(addr socks5.Addr, packet C.UDPPacket, _additions ...inbound.Addition) error {
+ newAdditions := additions
+ if len(_additions) > 0 {
+ newAdditions = slices.Clone(additions)
+ newAdditions = append(newAdditions, _additions...)
+ }
+ tunnel.HandleUDPPacket(inbound.NewPacket(addr, packet, C.TUIC, newAdditions...))
+ return nil
+ }
+
+ option := &tuic.ServerOption{
+ HandleTcpFn: handleTcpFn,
+ HandleUdpFn: handleUdpFn,
+ TlsConfig: tlsConfig,
+ QuicConfig: quicConfig,
+ CongestionController: config.CongestionController,
+ AuthenticationTimeout: time.Duration(config.AuthenticationTimeout) * time.Millisecond,
+ MaxUdpRelayPacketSize: config.MaxUdpRelayPacketSize,
+ CWND: config.CWND,
+ }
+ if len(config.Token) > 0 {
+ tokens := make([][32]byte, len(config.Token))
+ for i, token := range config.Token {
+ tokens[i] = tuic.GenTKN(token)
+ }
+ option.Tokens = tokens
+ }
+ if len(config.Users) > 0 {
+ users := make(map[[16]byte]string)
+ for _uuid, password := range config.Users {
+ users[uuid.FromStringOrNil(_uuid)] = password
+ }
+ option.Users = users
+ }
+
+ sl := &Listener{false, config, nil, nil}
+
+ for _, addr := range strings.Split(config.Listen, ",") {
+ addr := addr
+
+ ul, err := net.ListenPacket("udp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ err = sockopt.UDPReuseaddr(ul.(*net.UDPConn))
+ if err != nil {
+ log.Warnln("Failed to Reuse UDP Address: %s", err)
+ }
+
+ sl.udpListeners = append(sl.udpListeners, ul)
+
+ var server *tuic.Server
+ server, err = tuic.NewServer(option, ul)
+ if err != nil {
+ return nil, err
+ }
+
+ sl.servers = append(sl.servers, server)
+
+ go func() {
+ err := server.Serve()
+ if err != nil {
+ if sl.closed {
+ return
+ }
+ }
+ }()
+ }
+
+ return sl, nil
+}
+
+func (l *Listener) Close() error {
+ l.closed = true
+ var retErr error
+ for _, lis := range l.servers {
+ err := lis.Close()
+ if err != nil {
+ retErr = err
+ }
+ }
+ for _, lis := range l.udpListeners {
+ err := lis.Close()
+ if err != nil {
+ retErr = err
+ }
+ }
+ return retErr
+}
+
+func (l *Listener) Config() LC.TuicServer {
+ return l.config
+}
+
+func (l *Listener) AddrList() (addrList []net.Addr) {
+ for _, lis := range l.udpListeners {
+ addrList = append(addrList, lis.LocalAddr())
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tunnel/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tunnel/packet.go
new file mode 100644
index 0000000..165004d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tunnel/packet.go
@@ -0,0 +1,36 @@
+package tunnel
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+type packet struct {
+ pc net.PacketConn
+ rAddr net.Addr
+ payload []byte
+}
+
+func (c *packet) Data() []byte {
+ return c.payload
+}
+
+// WriteBack write UDP packet with source(ip, port) = `addr`
+func (c *packet) WriteBack(b []byte, addr net.Addr) (n int, err error) {
+ return c.pc.WriteTo(b, c.rAddr)
+}
+
+// LocalAddr returns the source IP/Port of UDP Packet
+func (c *packet) LocalAddr() net.Addr {
+ return c.rAddr
+}
+
+func (c *packet) Drop() {
+ _ = pool.Put(c.payload)
+ c.payload = nil
+}
+
+func (c *packet) InAddr() net.Addr {
+ return c.pc.LocalAddr()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tunnel/tcp.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tunnel/tcp.go
new file mode 100644
index 0000000..7c916a3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tunnel/tcp.go
@@ -0,0 +1,76 @@
+package tunnel
+
+import (
+ "fmt"
+ "net"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type Listener struct {
+ listener net.Listener
+ addr string
+ target socks5.Addr
+ proxy string
+ closed bool
+}
+
+// RawAddress implements C.Listener
+func (l *Listener) RawAddress() string {
+ return l.addr
+}
+
+// Address implements C.Listener
+func (l *Listener) Address() string {
+ return l.listener.Addr().String()
+}
+
+// Close implements C.Listener
+func (l *Listener) Close() error {
+ l.closed = true
+ return l.listener.Close()
+}
+
+func (l *Listener) handleTCP(conn net.Conn, tunnel C.Tunnel, additions ...inbound.Addition) {
+ tunnel.HandleTCPConn(inbound.NewSocket(l.target, conn, C.TUNNEL, additions...))
+}
+
+func New(addr, target, proxy string, tunnel C.Tunnel, additions ...inbound.Addition) (*Listener, error) {
+ l, err := inbound.Listen("tcp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ targetAddr := socks5.ParseAddr(target)
+ if targetAddr == nil {
+ return nil, fmt.Errorf("invalid target address %s", target)
+ }
+
+ rl := &Listener{
+ listener: l,
+ target: targetAddr,
+ proxy: proxy,
+ addr: addr,
+ }
+
+ if proxy != "" {
+ additions = append([]inbound.Addition{inbound.WithSpecialProxy(proxy)}, additions...)
+ }
+
+ go func() {
+ for {
+ c, err := l.Accept()
+ if err != nil {
+ if rl.closed {
+ break
+ }
+ continue
+ }
+ go rl.handleTCP(c, tunnel, additions...)
+ }
+ }()
+
+ return rl, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/listener/tunnel/udp.go b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tunnel/udp.go
new file mode 100644
index 0000000..f7d980a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/listener/tunnel/udp.go
@@ -0,0 +1,85 @@
+package tunnel
+
+import (
+ "fmt"
+ "net"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/common/pool"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type PacketConn struct {
+ conn net.PacketConn
+ addr string
+ target socks5.Addr
+ proxy string
+ closed bool
+}
+
+// RawAddress implements C.Listener
+func (l *PacketConn) RawAddress() string {
+ return l.addr
+}
+
+// Address implements C.Listener
+func (l *PacketConn) Address() string {
+ return l.conn.LocalAddr().String()
+}
+
+// Close implements C.Listener
+func (l *PacketConn) Close() error {
+ l.closed = true
+ return l.conn.Close()
+}
+
+func NewUDP(addr, target, proxy string, tunnel C.Tunnel, additions ...inbound.Addition) (*PacketConn, error) {
+ l, err := net.ListenPacket("udp", addr)
+ if err != nil {
+ return nil, err
+ }
+
+ targetAddr := socks5.ParseAddr(target)
+ if targetAddr == nil {
+ return nil, fmt.Errorf("invalid target address %s", target)
+ }
+
+ sl := &PacketConn{
+ conn: l,
+ target: targetAddr,
+ proxy: proxy,
+ addr: addr,
+ }
+
+ if proxy != "" {
+ additions = append([]inbound.Addition{inbound.WithSpecialProxy(proxy)}, additions...)
+ }
+
+ go func() {
+ for {
+ buf := pool.Get(pool.UDPBufferSize)
+ n, remoteAddr, err := l.ReadFrom(buf)
+ if err != nil {
+ pool.Put(buf)
+ if sl.closed {
+ break
+ }
+ continue
+ }
+ sl.handleUDP(l, tunnel, buf[:n], remoteAddr, additions...)
+ }
+ }()
+
+ return sl, nil
+}
+
+func (l *PacketConn) handleUDP(pc net.PacketConn, tunnel C.Tunnel, buf []byte, addr net.Addr, additions ...inbound.Addition) {
+ cPacket := &packet{
+ pc: pc,
+ rAddr: addr,
+ payload: buf,
+ }
+
+ tunnel.HandleUDPPacket(inbound.NewPacket(l.target, cPacket, C.TUNNEL, additions...))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/log/level.go b/Android-kotlin-Code/core/src/foss/golang/clash/log/level.go
new file mode 100644
index 0000000..a4c6ecb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/log/level.go
@@ -0,0 +1,92 @@
+package log
+
+import (
+ "encoding/json"
+ "errors"
+ "strings"
+)
+
+// LogLevelMapping is a mapping for LogLevel enum
+var LogLevelMapping = map[string]LogLevel{
+ ERROR.String(): ERROR,
+ WARNING.String(): WARNING,
+ INFO.String(): INFO,
+ DEBUG.String(): DEBUG,
+ SILENT.String(): SILENT,
+}
+
+const (
+ DEBUG LogLevel = iota
+ INFO
+ WARNING
+ ERROR
+ SILENT
+)
+
+type LogLevel int
+
+// UnmarshalYAML unserialize LogLevel with yaml
+func (l *LogLevel) UnmarshalYAML(unmarshal func(any) error) error {
+ var tp string
+ unmarshal(&tp)
+ level, exist := LogLevelMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *l = level
+ return nil
+}
+
+// UnmarshalJSON unserialize LogLevel with json
+func (l *LogLevel) UnmarshalJSON(data []byte) error {
+ var tp string
+ json.Unmarshal(data, &tp)
+ level, exist := LogLevelMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *l = level
+ return nil
+}
+
+// UnmarshalText unserialize LogLevel
+func (l *LogLevel) UnmarshalText(data []byte) error {
+ level, exist := LogLevelMapping[strings.ToLower(string(data))]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *l = level
+ return nil
+}
+
+// MarshalYAML serialize LogLevel with yaml
+func (l LogLevel) MarshalYAML() (any, error) {
+ return l.String(), nil
+}
+
+// MarshalJSON serialize LogLevel with json
+func (l LogLevel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(l.String())
+}
+
+// MarshalText serialize LogLevel
+func (l LogLevel) MarshalText() ([]byte, error) {
+ return []byte(l.String()), nil
+}
+
+func (l LogLevel) String() string {
+ switch l {
+ case INFO:
+ return "info"
+ case WARNING:
+ return "warning"
+ case ERROR:
+ return "error"
+ case DEBUG:
+ return "debug"
+ case SILENT:
+ return "silent"
+ default:
+ return "unknown"
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/log/log.go b/Android-kotlin-Code/core/src/foss/golang/clash/log/log.go
new file mode 100644
index 0000000..6f565e7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/log/log.go
@@ -0,0 +1,104 @@
+package log
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/metacubex/mihomo/common/observable"
+
+ log "github.com/sirupsen/logrus"
+)
+
+var (
+ logCh = make(chan Event)
+ source = observable.NewObservable[Event](logCh)
+ level = INFO
+)
+
+func init() {
+ log.SetOutput(os.Stdout)
+ log.SetLevel(log.DebugLevel)
+ log.SetFormatter(&log.TextFormatter{
+ FullTimestamp: true,
+ TimestampFormat: "2006-01-02T15:04:05.999999999Z07:00",
+ EnvironmentOverrideColors: true,
+ })
+}
+
+type Event struct {
+ LogLevel LogLevel
+ Payload string
+}
+
+func (e *Event) Type() string {
+ return e.LogLevel.String()
+}
+
+func Infoln(format string, v ...any) {
+ event := newLog(INFO, format, v...)
+ logCh <- event
+ print(event)
+}
+
+func Warnln(format string, v ...any) {
+ event := newLog(WARNING, format, v...)
+ logCh <- event
+ print(event)
+}
+
+func Errorln(format string, v ...any) {
+ event := newLog(ERROR, format, v...)
+ logCh <- event
+ print(event)
+}
+
+func Debugln(format string, v ...any) {
+ event := newLog(DEBUG, format, v...)
+ logCh <- event
+ print(event)
+}
+
+func Fatalln(format string, v ...any) {
+ log.Fatalf(format, v...)
+}
+
+func Subscribe() observable.Subscription[Event] {
+ sub, _ := source.Subscribe()
+ return sub
+}
+
+func UnSubscribe(sub observable.Subscription[Event]) {
+ source.UnSubscribe(sub)
+}
+
+func Level() LogLevel {
+ return level
+}
+
+func SetLevel(newLevel LogLevel) {
+ level = newLevel
+}
+
+func print(data Event) {
+ if data.LogLevel < level {
+ return
+ }
+
+ switch data.LogLevel {
+ case INFO:
+ log.Infoln(data.Payload)
+ case WARNING:
+ log.Warnln(data.Payload)
+ case ERROR:
+ log.Errorln(data.Payload)
+ case DEBUG:
+ log.Debugln(data.Payload)
+ }
+}
+
+func newLog(logLevel LogLevel, format string, v ...any) Event {
+ return Event{
+ LogLevel: logLevel,
+ Payload: fmt.Sprintf(format, v...),
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/log/sing.go b/Android-kotlin-Code/core/src/foss/golang/clash/log/sing.go
new file mode 100644
index 0000000..818acc7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/log/sing.go
@@ -0,0 +1,68 @@
+package log
+
+import (
+ "context"
+ "fmt"
+
+ L "github.com/sagernet/sing/common/logger"
+)
+
+type singLogger struct{}
+
+func (l singLogger) TraceContext(ctx context.Context, args ...any) {
+ Debugln(fmt.Sprint(args...))
+}
+
+func (l singLogger) DebugContext(ctx context.Context, args ...any) {
+ Debugln(fmt.Sprint(args...))
+}
+
+func (l singLogger) InfoContext(ctx context.Context, args ...any) {
+ Infoln(fmt.Sprint(args...))
+}
+
+func (l singLogger) WarnContext(ctx context.Context, args ...any) {
+ Warnln(fmt.Sprint(args...))
+}
+
+func (l singLogger) ErrorContext(ctx context.Context, args ...any) {
+ Errorln(fmt.Sprint(args...))
+}
+
+func (l singLogger) FatalContext(ctx context.Context, args ...any) {
+ Fatalln(fmt.Sprint(args...))
+}
+
+func (l singLogger) PanicContext(ctx context.Context, args ...any) {
+ Fatalln(fmt.Sprint(args...))
+}
+
+func (l singLogger) Trace(args ...any) {
+ Debugln(fmt.Sprint(args...))
+}
+
+func (l singLogger) Debug(args ...any) {
+ Debugln(fmt.Sprint(args...))
+}
+
+func (l singLogger) Info(args ...any) {
+ Infoln(fmt.Sprint(args...))
+}
+
+func (l singLogger) Warn(args ...any) {
+ Warnln(fmt.Sprint(args...))
+}
+
+func (l singLogger) Error(args ...any) {
+ Errorln(fmt.Sprint(args...))
+}
+
+func (l singLogger) Fatal(args ...any) {
+ Fatalln(fmt.Sprint(args...))
+}
+
+func (l singLogger) Panic(args ...any) {
+ Fatalln(fmt.Sprint(args...))
+}
+
+var SingLogger L.ContextLogger = singLogger{}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/main.go b/Android-kotlin-Code/core/src/foss/golang/clash/main.go
new file mode 100644
index 0000000..685fc89
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/main.go
@@ -0,0 +1,177 @@
+package main
+
+import (
+ "context"
+ "encoding/base64"
+ "flag"
+ "fmt"
+ "net"
+ "os"
+ "os/signal"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "syscall"
+
+ "github.com/metacubex/mihomo/component/geodata"
+ "github.com/metacubex/mihomo/component/updater"
+ "github.com/metacubex/mihomo/config"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/features"
+ "github.com/metacubex/mihomo/hub"
+ "github.com/metacubex/mihomo/hub/executor"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/rules/provider"
+
+ "go.uber.org/automaxprocs/maxprocs"
+)
+
+var (
+ version bool
+ testConfig bool
+ geodataMode bool
+ homeDir string
+ configFile string
+ configString string
+ configBytes []byte
+ externalUI string
+ externalController string
+ externalControllerUnix string
+ externalControllerPipe string
+ secret string
+)
+
+func init() {
+ flag.StringVar(&homeDir, "d", os.Getenv("CLASH_HOME_DIR"), "set configuration directory")
+ flag.StringVar(&configFile, "f", os.Getenv("CLASH_CONFIG_FILE"), "specify configuration file")
+ flag.StringVar(&configString, "config", os.Getenv("CLASH_CONFIG_STRING"), "specify base64-encoded configuration string")
+ flag.StringVar(&externalUI, "ext-ui", os.Getenv("CLASH_OVERRIDE_EXTERNAL_UI_DIR"), "override external ui directory")
+ flag.StringVar(&externalController, "ext-ctl", os.Getenv("CLASH_OVERRIDE_EXTERNAL_CONTROLLER"), "override external controller address")
+ flag.StringVar(&externalControllerUnix, "ext-ctl-unix", os.Getenv("CLASH_OVERRIDE_EXTERNAL_CONTROLLER_UNIX"), "override external controller unix address")
+ flag.StringVar(&externalControllerPipe, "ext-ctl-pipe", os.Getenv("CLASH_OVERRIDE_EXTERNAL_CONTROLLER_PIPE"), "override external controller pipe address")
+ flag.StringVar(&secret, "secret", os.Getenv("CLASH_OVERRIDE_SECRET"), "override secret for RESTful API")
+ flag.BoolVar(&geodataMode, "m", false, "set geodata mode")
+ flag.BoolVar(&version, "v", false, "show current version of mihomo")
+ flag.BoolVar(&testConfig, "t", false, "test configuration and exit")
+ flag.Parse()
+}
+
+func main() {
+ // Defensive programming: panic when code mistakenly calls net.DefaultResolver
+ net.DefaultResolver.PreferGo = true
+ net.DefaultResolver.Dial = func(ctx context.Context, network, address string) (net.Conn, error) {
+ panic("should never be called")
+ }
+
+ _, _ = maxprocs.Set(maxprocs.Logger(func(string, ...any) {}))
+
+ if len(os.Args) > 1 && os.Args[1] == "convert-ruleset" {
+ provider.ConvertMain(os.Args[2:])
+ return
+ }
+
+ if version {
+ fmt.Printf("Mihomo Meta %s %s %s with %s %s\n",
+ C.Version, runtime.GOOS, runtime.GOARCH, runtime.Version(), C.BuildTime)
+ if tags := features.Tags(); len(tags) != 0 {
+ fmt.Printf("Use tags: %s\n", strings.Join(tags, ", "))
+ }
+
+ return
+ }
+
+ if homeDir != "" {
+ if !filepath.IsAbs(homeDir) {
+ currentDir, _ := os.Getwd()
+ homeDir = filepath.Join(currentDir, homeDir)
+ }
+ C.SetHomeDir(homeDir)
+ }
+
+ if geodataMode {
+ geodata.SetGeodataMode(true)
+ }
+
+ if configString != "" {
+ var err error
+ configBytes, err = base64.StdEncoding.DecodeString(configString)
+ if err != nil {
+ log.Fatalln("Initial configuration error: %s", err.Error())
+ return
+ }
+ } else {
+ if configFile != "" {
+ if !filepath.IsAbs(configFile) {
+ currentDir, _ := os.Getwd()
+ configFile = filepath.Join(currentDir, configFile)
+ }
+ } else {
+ configFile = filepath.Join(C.Path.HomeDir(), C.Path.Config())
+ }
+ C.SetConfig(configFile)
+
+ if err := config.Init(C.Path.HomeDir()); err != nil {
+ log.Fatalln("Initial configuration directory error: %s", err.Error())
+ }
+ }
+
+ if testConfig {
+ if len(configBytes) != 0 {
+ if _, err := executor.ParseWithBytes(configBytes); err != nil {
+ log.Errorln(err.Error())
+ fmt.Println("configuration test failed")
+ os.Exit(1)
+ }
+ } else {
+ if _, err := executor.Parse(); err != nil {
+ log.Errorln(err.Error())
+ fmt.Printf("configuration file %s test failed\n", C.Path.Config())
+ os.Exit(1)
+ }
+ }
+ fmt.Printf("configuration file %s test is successful\n", C.Path.Config())
+ return
+ }
+
+ var options []hub.Option
+ if externalUI != "" {
+ options = append(options, hub.WithExternalUI(externalUI))
+ }
+ if externalController != "" {
+ options = append(options, hub.WithExternalController(externalController))
+ }
+ if externalControllerUnix != "" {
+ options = append(options, hub.WithExternalControllerUnix(externalControllerUnix))
+ }
+ if externalControllerPipe != "" {
+ options = append(options, hub.WithExternalControllerPipe(externalControllerPipe))
+ }
+ if secret != "" {
+ options = append(options, hub.WithSecret(secret))
+ }
+
+ if err := hub.Parse(configBytes, options...); err != nil {
+ log.Fatalln("Parse config error: %s", err.Error())
+ }
+
+ if updater.GeoAutoUpdate() {
+ updater.RegisterGeoUpdater()
+ }
+
+ defer executor.Shutdown()
+
+ termSign := make(chan os.Signal, 1)
+ hupSign := make(chan os.Signal, 1)
+ signal.Notify(termSign, syscall.SIGINT, syscall.SIGTERM)
+ signal.Notify(hupSign, syscall.SIGHUP)
+ for {
+ select {
+ case <-termSign:
+ return
+ case <-hupSign:
+ if err := hub.Parse(configBytes, options...); err != nil {
+ log.Errorln("Parse config error: %s", err.Error())
+ }
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/ntp/service.go b/Android-kotlin-Code/core/src/foss/golang/clash/ntp/service.go
new file mode 100644
index 0000000..d4582c9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/ntp/service.go
@@ -0,0 +1,128 @@
+package ntp
+
+import (
+ "context"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/proxydialer"
+ "github.com/metacubex/mihomo/log"
+
+ M "github.com/sagernet/sing/common/metadata"
+ "github.com/sagernet/sing/common/ntp"
+)
+
+var offset time.Duration
+var service *Service
+
+type Service struct {
+ server M.Socksaddr
+ dialer proxydialer.SingDialer
+ ticker *time.Ticker
+ ctx context.Context
+ cancel context.CancelFunc
+ mu sync.Mutex
+ syncSystemTime bool
+ running bool
+}
+
+func ReCreateNTPService(server string, interval time.Duration, dialerProxy string, syncSystemTime bool) {
+ if service != nil {
+ service.Stop()
+ }
+ ctx, cancel := context.WithCancel(context.Background())
+ service = &Service{
+ server: M.ParseSocksaddr(server),
+ dialer: proxydialer.NewByNameSingDialer(dialerProxy, dialer.NewDialer()),
+ ticker: time.NewTicker(interval * time.Minute),
+ ctx: ctx,
+ cancel: cancel,
+ syncSystemTime: syncSystemTime,
+ }
+ service.Start()
+}
+
+func (srv *Service) Start() {
+ srv.mu.Lock()
+ defer srv.mu.Unlock()
+ log.Infoln("NTP service start, sync system time is %t", srv.syncSystemTime)
+ err := srv.update()
+ if err != nil {
+ log.Errorln("Initialize NTP time failed: %s", err)
+ return
+ }
+ service.running = true
+ go srv.loopUpdate()
+}
+
+func (srv *Service) Stop() {
+ srv.mu.Lock()
+ defer srv.mu.Unlock()
+ if service.running {
+ srv.ticker.Stop()
+ srv.cancel()
+ service.running = false
+ }
+}
+
+func (srv *Service) Running() bool {
+ if srv == nil {
+ return false
+ }
+ srv.mu.Lock()
+ defer srv.mu.Unlock()
+ return srv.running
+}
+
+func (srv *Service) update() error {
+ var response *ntp.Response
+ var err error
+ for i := 0; i < 3; i++ {
+ if response, err = ntp.Exchange(context.Background(), srv.dialer, srv.server); err == nil {
+ break
+ }
+ if i == 2 {
+ return err
+ }
+ }
+ offset = response.ClockOffset
+ if offset > time.Duration(0) {
+ log.Infoln("System clock is ahead of NTP time by %s", offset)
+ } else if offset < time.Duration(0) {
+ log.Infoln("System clock is behind NTP time by %s", -offset)
+ }
+ if srv.syncSystemTime {
+ timeNow := response.Time
+ syncErr := setSystemTime(timeNow)
+ if syncErr == nil {
+ log.Infoln("Sync system time success: %s", timeNow.Local().Format(ntp.TimeLayout))
+ } else {
+ log.Errorln("Write time to system: %s", syncErr)
+ srv.syncSystemTime = false
+ }
+ }
+ return nil
+}
+
+func (srv *Service) loopUpdate() {
+ for {
+ select {
+ case <-srv.ctx.Done():
+ return
+ case <-srv.ticker.C:
+ }
+ err := srv.update()
+ if err != nil {
+ log.Warnln("Sync time failed: %s", err)
+ }
+ }
+}
+
+func Now() time.Time {
+ now := time.Now()
+ if service.Running() && offset.Abs() > 0 {
+ now = now.Add(offset)
+ }
+ return now
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/ntp/time_stub.go b/Android-kotlin-Code/core/src/foss/golang/clash/ntp/time_stub.go
new file mode 100644
index 0000000..1205098
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/ntp/time_stub.go
@@ -0,0 +1,12 @@
+//go:build !(windows || linux || darwin)
+
+package ntp
+
+import (
+ "os"
+ "time"
+)
+
+func setSystemTime(nowTime time.Time) error {
+ return os.ErrInvalid
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/ntp/time_unix.go b/Android-kotlin-Code/core/src/foss/golang/clash/ntp/time_unix.go
new file mode 100644
index 0000000..9e81947
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/ntp/time_unix.go
@@ -0,0 +1,14 @@
+//go:build linux || darwin
+
+package ntp
+
+import (
+ "time"
+
+ "golang.org/x/sys/unix"
+)
+
+func setSystemTime(nowTime time.Time) error {
+ timeVal := unix.NsecToTimeval(nowTime.UnixNano())
+ return unix.Settimeofday(&timeVal)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/ntp/time_windows.go b/Android-kotlin-Code/core/src/foss/golang/clash/ntp/time_windows.go
new file mode 100644
index 0000000..8ef29b1
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/ntp/time_windows.go
@@ -0,0 +1,32 @@
+package ntp
+
+import (
+ "time"
+ "unsafe"
+
+ "golang.org/x/sys/windows"
+)
+
+func setSystemTime(nowTime time.Time) error {
+ var systemTime windows.Systemtime
+ systemTime.Year = uint16(nowTime.Year())
+ systemTime.Month = uint16(nowTime.Month())
+ systemTime.Day = uint16(nowTime.Day())
+ systemTime.Hour = uint16(nowTime.Hour())
+ systemTime.Minute = uint16(nowTime.Minute())
+ systemTime.Second = uint16(nowTime.Second())
+ systemTime.Milliseconds = uint16(nowTime.UnixMilli() - nowTime.Unix()*1000)
+
+ dllKernel32 := windows.NewLazySystemDLL("kernel32.dll")
+ proc := dllKernel32.NewProc("SetSystemTime")
+
+ _, _, err := proc.Call(
+ uintptr(unsafe.Pointer(&systemTime)),
+ )
+
+ if err != nil && err.Error() != "The operation completed successfully." {
+ return err
+ }
+
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/base.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/base.go
new file mode 100644
index 0000000..496bcae
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/base.go
@@ -0,0 +1,40 @@
+package common
+
+import (
+ "errors"
+
+ "golang.org/x/exp/slices"
+)
+
+var (
+ errPayload = errors.New("payloadRule error")
+)
+
+// params
+var (
+ NoResolve = "no-resolve"
+ Src = "src"
+)
+
+type Base struct {
+}
+
+func (b *Base) ShouldFindProcess() bool {
+ return false
+}
+
+func (b *Base) ShouldResolveIP() bool {
+ return false
+}
+
+func (b *Base) ProviderNames() []string { return nil }
+
+func ParseParams(params []string) (isSrc bool, noResolve bool) {
+ isSrc = slices.Contains(params, Src)
+ if isSrc {
+ noResolve = true
+ } else {
+ noResolve = slices.Contains(params, NoResolve)
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain.go
new file mode 100644
index 0000000..306eb65
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain.go
@@ -0,0 +1,41 @@
+package common
+
+import (
+ "strings"
+
+ C "github.com/metacubex/mihomo/constant"
+ "golang.org/x/net/idna"
+)
+
+type Domain struct {
+ *Base
+ domain string
+ adapter string
+}
+
+func (d *Domain) RuleType() C.RuleType {
+ return C.Domain
+}
+
+func (d *Domain) Match(metadata *C.Metadata) (bool, string) {
+ return metadata.RuleHost() == d.domain, d.adapter
+}
+
+func (d *Domain) Adapter() string {
+ return d.adapter
+}
+
+func (d *Domain) Payload() string {
+ return d.domain
+}
+
+func NewDomain(domain string, adapter string) *Domain {
+ punycode, _ := idna.ToASCII(strings.ToLower(domain))
+ return &Domain{
+ Base: &Base{},
+ domain: punycode,
+ adapter: adapter,
+ }
+}
+
+//var _ C.Rule = (*Domain)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain_keyword.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain_keyword.go
new file mode 100644
index 0000000..9d6f1c1
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain_keyword.go
@@ -0,0 +1,42 @@
+package common
+
+import (
+ "strings"
+
+ C "github.com/metacubex/mihomo/constant"
+ "golang.org/x/net/idna"
+)
+
+type DomainKeyword struct {
+ *Base
+ keyword string
+ adapter string
+}
+
+func (dk *DomainKeyword) RuleType() C.RuleType {
+ return C.DomainKeyword
+}
+
+func (dk *DomainKeyword) Match(metadata *C.Metadata) (bool, string) {
+ domain := metadata.RuleHost()
+ return strings.Contains(domain, dk.keyword), dk.adapter
+}
+
+func (dk *DomainKeyword) Adapter() string {
+ return dk.adapter
+}
+
+func (dk *DomainKeyword) Payload() string {
+ return dk.keyword
+}
+
+func NewDomainKeyword(keyword string, adapter string) *DomainKeyword {
+ punycode, _ := idna.ToASCII(strings.ToLower(keyword))
+ return &DomainKeyword{
+ Base: &Base{},
+ keyword: punycode,
+ adapter: adapter,
+ }
+}
+
+//var _ C.Rule = (*DomainKeyword)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain_regex.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain_regex.go
new file mode 100644
index 0000000..d214a77
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain_regex.go
@@ -0,0 +1,45 @@
+package common
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/dlclark/regexp2"
+)
+
+type DomainRegex struct {
+ *Base
+ regex *regexp2.Regexp
+ adapter string
+}
+
+func (dr *DomainRegex) RuleType() C.RuleType {
+ return C.DomainRegex
+}
+
+func (dr *DomainRegex) Match(metadata *C.Metadata) (bool, string) {
+ domain := metadata.RuleHost()
+ match, _ := dr.regex.MatchString(domain)
+ return match, dr.adapter
+}
+
+func (dr *DomainRegex) Adapter() string {
+ return dr.adapter
+}
+
+func (dr *DomainRegex) Payload() string {
+ return dr.regex.String()
+}
+
+func NewDomainRegex(regex string, adapter string) (*DomainRegex, error) {
+ r, err := regexp2.Compile(regex, regexp2.IgnoreCase)
+ if err != nil {
+ return nil, err
+ }
+ return &DomainRegex{
+ Base: &Base{},
+ regex: r,
+ adapter: adapter,
+ }, nil
+}
+
+//var _ C.Rule = (*DomainRegex)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain_suffix.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain_suffix.go
new file mode 100644
index 0000000..c5b8720
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/domain_suffix.go
@@ -0,0 +1,42 @@
+package common
+
+import (
+ "strings"
+
+ C "github.com/metacubex/mihomo/constant"
+ "golang.org/x/net/idna"
+)
+
+type DomainSuffix struct {
+ *Base
+ suffix string
+ adapter string
+}
+
+func (ds *DomainSuffix) RuleType() C.RuleType {
+ return C.DomainSuffix
+}
+
+func (ds *DomainSuffix) Match(metadata *C.Metadata) (bool, string) {
+ domain := metadata.RuleHost()
+ return strings.HasSuffix(domain, "."+ds.suffix) || domain == ds.suffix, ds.adapter
+}
+
+func (ds *DomainSuffix) Adapter() string {
+ return ds.adapter
+}
+
+func (ds *DomainSuffix) Payload() string {
+ return ds.suffix
+}
+
+func NewDomainSuffix(suffix string, adapter string) *DomainSuffix {
+ punycode, _ := idna.ToASCII(strings.ToLower(suffix))
+ return &DomainSuffix{
+ Base: &Base{},
+ suffix: punycode,
+ adapter: adapter,
+ }
+}
+
+//var _ C.Rule = (*DomainSuffix)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/dscp.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/dscp.go
new file mode 100644
index 0000000..c839b20
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/dscp.go
@@ -0,0 +1,49 @@
+package common
+
+import (
+ "fmt"
+
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type DSCP struct {
+ *Base
+ ranges utils.IntRanges[uint8]
+ payload string
+ adapter string
+}
+
+func (d *DSCP) RuleType() C.RuleType {
+ return C.DSCP
+}
+
+func (d *DSCP) Match(metadata *C.Metadata) (bool, string) {
+ return d.ranges.Check(metadata.DSCP), d.adapter
+}
+
+func (d *DSCP) Adapter() string {
+ return d.adapter
+}
+
+func (d *DSCP) Payload() string {
+ return d.payload
+}
+
+func NewDSCP(dscp string, adapter string) (*DSCP, error) {
+ ranges, err := utils.NewUnsignedRanges[uint8](dscp)
+ if err != nil {
+ return nil, fmt.Errorf("parse DSCP rule fail: %w", err)
+ }
+ for _, r := range ranges {
+ if r.End() > 63 {
+ return nil, fmt.Errorf("DSCP couldn't be negative or exceed 63")
+ }
+ }
+ return &DSCP{
+ Base: &Base{},
+ payload: dscp,
+ ranges: ranges,
+ adapter: adapter,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/final.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/final.go
new file mode 100644
index 0000000..d3a415a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/final.go
@@ -0,0 +1,35 @@
+package common
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type Match struct {
+ *Base
+ adapter string
+}
+
+func (f *Match) RuleType() C.RuleType {
+ return C.MATCH
+}
+
+func (f *Match) Match(metadata *C.Metadata) (bool, string) {
+ return true, f.adapter
+}
+
+func (f *Match) Adapter() string {
+ return f.adapter
+}
+
+func (f *Match) Payload() string {
+ return ""
+}
+
+func NewMatch(adapter string) *Match {
+ return &Match{
+ Base: &Base{},
+ adapter: adapter,
+ }
+}
+
+//var _ C.Rule = (*Match)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/geoip.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/geoip.go
new file mode 100644
index 0000000..61fae50
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/geoip.go
@@ -0,0 +1,224 @@
+package common
+
+import (
+ "errors"
+ "fmt"
+ "net/netip"
+ "strings"
+
+ "github.com/metacubex/mihomo/component/geodata"
+ "github.com/metacubex/mihomo/component/geodata/router"
+ "github.com/metacubex/mihomo/component/mmdb"
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ "golang.org/x/exp/slices"
+)
+
+type GEOIP struct {
+ *Base
+ country string
+ adapter string
+ noResolveIP bool
+ isSourceIP bool
+}
+
+var _ C.Rule = (*GEOIP)(nil)
+
+func (g *GEOIP) RuleType() C.RuleType {
+ if g.isSourceIP {
+ return C.SrcGEOIP
+ }
+ return C.GEOIP
+}
+
+func (g *GEOIP) Match(metadata *C.Metadata) (bool, string) {
+ ip := metadata.DstIP
+ if g.isSourceIP {
+ ip = metadata.SrcIP
+ }
+ if !ip.IsValid() {
+ return false, ""
+ }
+
+ if g.country == "lan" {
+ return g.isLan(ip), g.adapter
+ }
+
+ if geodata.GeodataMode() {
+ if g.isSourceIP {
+ if slices.Contains(metadata.SrcGeoIP, g.country) {
+ return true, g.adapter
+ }
+ } else {
+ if slices.Contains(metadata.DstGeoIP, g.country) {
+ return true, g.adapter
+ }
+ }
+ matcher, err := g.getIPMatcher()
+ if err != nil {
+ return false, ""
+ }
+ match := matcher.Match(ip)
+ if match {
+ if g.isSourceIP {
+ metadata.SrcGeoIP = append(metadata.SrcGeoIP, g.country)
+ } else {
+ metadata.DstGeoIP = append(metadata.DstGeoIP, g.country)
+ }
+ }
+ return match, g.adapter
+ }
+
+ if g.isSourceIP {
+ if metadata.SrcGeoIP != nil {
+ return slices.Contains(metadata.SrcGeoIP, g.country), g.adapter
+ }
+ } else {
+ if metadata.DstGeoIP != nil {
+ return slices.Contains(metadata.DstGeoIP, g.country), g.adapter
+ }
+ }
+ codes := mmdb.IPInstance().LookupCode(ip.AsSlice())
+ if g.isSourceIP {
+ metadata.SrcGeoIP = codes
+ } else {
+ metadata.DstGeoIP = codes
+ }
+ if slices.Contains(codes, g.country) {
+ return true, g.adapter
+ }
+ return false, ""
+}
+
+// MatchIp implements C.IpMatcher
+func (g *GEOIP) MatchIp(ip netip.Addr) bool {
+ if !ip.IsValid() {
+ return false
+ }
+
+ if g.country == "lan" {
+ return g.isLan(ip)
+ }
+
+ if geodata.GeodataMode() {
+ matcher, err := g.getIPMatcher()
+ if err != nil {
+ return false
+ }
+ return matcher.Match(ip)
+ }
+
+ codes := mmdb.IPInstance().LookupCode(ip.AsSlice())
+ return slices.Contains(codes, g.country)
+}
+
+// MatchIp implements C.IpMatcher
+func (g dnsFallbackFilter) MatchIp(ip netip.Addr) bool {
+ if !ip.IsValid() {
+ return false
+ }
+
+ if g.isLan(ip) { // compatible with original behavior
+ return false
+ }
+
+ if geodata.GeodataMode() {
+ matcher, err := g.getIPMatcher()
+ if err != nil {
+ return false
+ }
+ return !matcher.Match(ip)
+ }
+
+ codes := mmdb.IPInstance().LookupCode(ip.AsSlice())
+ return !slices.Contains(codes, g.country)
+}
+
+type dnsFallbackFilter struct {
+ *GEOIP
+}
+
+func (g *GEOIP) DnsFallbackFilter() C.IpMatcher { // for dns.fallback-filter.geoip
+ return dnsFallbackFilter{GEOIP: g}
+}
+
+func (g *GEOIP) isLan(ip netip.Addr) bool {
+ return ip.IsPrivate() ||
+ ip.IsUnspecified() ||
+ ip.IsLoopback() ||
+ ip.IsMulticast() ||
+ ip.IsLinkLocalUnicast() ||
+ resolver.IsFakeBroadcastIP(ip)
+}
+
+func (g *GEOIP) Adapter() string {
+ return g.adapter
+}
+
+func (g *GEOIP) Payload() string {
+ return g.country
+}
+
+func (g *GEOIP) ShouldResolveIP() bool {
+ return !g.noResolveIP
+}
+
+func (g *GEOIP) GetCountry() string {
+ return g.country
+}
+
+func (g *GEOIP) GetIPMatcher() (router.IPMatcher, error) {
+ if geodata.GeodataMode() {
+ return g.getIPMatcher()
+ }
+ return nil, errors.New("not geodata mode")
+}
+
+func (g *GEOIP) getIPMatcher() (router.IPMatcher, error) {
+ geoIPMatcher, err := geodata.LoadGeoIPMatcher(g.country)
+ if err != nil {
+ return nil, fmt.Errorf("[GeoIP] %w", err)
+ }
+ return geoIPMatcher, nil
+
+}
+
+func (g *GEOIP) GetRecodeSize() int {
+ if matcher, err := g.GetIPMatcher(); err == nil {
+ return matcher.Count()
+ }
+ return 0
+}
+
+func NewGEOIP(country string, adapter string, isSrc, noResolveIP bool) (*GEOIP, error) {
+ country = strings.ToLower(country)
+
+ geoip := &GEOIP{
+ Base: &Base{},
+ country: country,
+ adapter: adapter,
+ noResolveIP: noResolveIP,
+ isSourceIP: isSrc,
+ }
+
+ if country == "lan" {
+ return geoip, nil
+ }
+
+ if err := geodata.InitGeoIP(); err != nil {
+ log.Errorln("can't initial GeoIP: %s", err)
+ return nil, err
+ }
+
+ if geodata.GeodataMode() {
+ geoIPMatcher, err := geoip.getIPMatcher() // test load
+ if err != nil {
+ return nil, err
+ }
+ log.Infoln("Finished initial GeoIP rule %s => %s, records: %d", country, adapter, geoIPMatcher.Count())
+ }
+
+ return geoip, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/geosite.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/geosite.go
new file mode 100644
index 0000000..851bc8a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/geosite.go
@@ -0,0 +1,86 @@
+package common
+
+import (
+ "fmt"
+
+ "github.com/metacubex/mihomo/component/geodata"
+ _ "github.com/metacubex/mihomo/component/geodata/memconservative"
+ "github.com/metacubex/mihomo/component/geodata/router"
+ _ "github.com/metacubex/mihomo/component/geodata/standard"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+type GEOSITE struct {
+ *Base
+ country string
+ adapter string
+ recodeSize int
+}
+
+func (gs *GEOSITE) RuleType() C.RuleType {
+ return C.GEOSITE
+}
+
+func (gs *GEOSITE) Match(metadata *C.Metadata) (bool, string) {
+ return gs.MatchDomain(metadata.RuleHost()), gs.adapter
+}
+
+// MatchDomain implements C.DomainMatcher
+func (gs *GEOSITE) MatchDomain(domain string) bool {
+ if len(domain) == 0 {
+ return false
+ }
+ matcher, err := gs.GetDomainMatcher()
+ if err != nil {
+ return false
+ }
+ return matcher.ApplyDomain(domain)
+}
+
+func (gs *GEOSITE) Adapter() string {
+ return gs.adapter
+}
+
+func (gs *GEOSITE) Payload() string {
+ return gs.country
+}
+
+func (gs *GEOSITE) GetDomainMatcher() (router.DomainMatcher, error) {
+ matcher, err := geodata.LoadGeoSiteMatcher(gs.country)
+ if err != nil {
+ return nil, fmt.Errorf("load GeoSite data error, %w", err)
+ }
+ return matcher, nil
+}
+
+func (gs *GEOSITE) GetRecodeSize() int {
+ if matcher, err := gs.GetDomainMatcher(); err == nil {
+ return matcher.Count()
+ }
+ return 0
+}
+
+func NewGEOSITE(country string, adapter string) (*GEOSITE, error) {
+ if err := geodata.InitGeoSite(); err != nil {
+ log.Errorln("can't initial GeoSite: %s", err)
+ return nil, err
+ }
+
+ geoSite := &GEOSITE{
+ Base: &Base{},
+ country: country,
+ adapter: adapter,
+ }
+
+ matcher, err := geoSite.GetDomainMatcher() // test load
+ if err != nil {
+ return nil, err
+ }
+
+ log.Infoln("Finished initial GeoSite rule %s => %s, records: %d", country, adapter, matcher.Count())
+
+ return geoSite, nil
+}
+
+var _ C.Rule = (*GEOSITE)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/in_name.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/in_name.go
new file mode 100644
index 0000000..9b14ef6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/in_name.go
@@ -0,0 +1,49 @@
+package common
+
+import (
+ "fmt"
+ C "github.com/metacubex/mihomo/constant"
+ "strings"
+)
+
+type InName struct {
+ *Base
+ names []string
+ adapter string
+ payload string
+}
+
+func (u *InName) Match(metadata *C.Metadata) (bool, string) {
+ for _, name := range u.names {
+ if metadata.InName == name {
+ return true, u.adapter
+ }
+ }
+ return false, ""
+}
+
+func (u *InName) RuleType() C.RuleType {
+ return C.InName
+}
+
+func (u *InName) Adapter() string {
+ return u.adapter
+}
+
+func (u *InName) Payload() string {
+ return u.payload
+}
+
+func NewInName(iNames, adapter string) (*InName, error) {
+ names := strings.Split(iNames, "/")
+ if len(names) == 0 {
+ return nil, fmt.Errorf("in name couldn't be empty")
+ }
+
+ return &InName{
+ Base: &Base{},
+ names: names,
+ adapter: adapter,
+ payload: iNames,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/in_type.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/in_type.go
new file mode 100644
index 0000000..fc73b20
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/in_type.go
@@ -0,0 +1,74 @@
+package common
+
+import (
+ "fmt"
+ C "github.com/metacubex/mihomo/constant"
+ "strings"
+)
+
+type InType struct {
+ *Base
+ types []C.Type
+ adapter string
+ payload string
+}
+
+func (u *InType) Match(metadata *C.Metadata) (bool, string) {
+ for _, tp := range u.types {
+ if metadata.Type == tp {
+ return true, u.adapter
+ }
+ }
+ return false, ""
+}
+
+func (u *InType) RuleType() C.RuleType {
+ return C.InType
+}
+
+func (u *InType) Adapter() string {
+ return u.adapter
+}
+
+func (u *InType) Payload() string {
+ return u.payload
+}
+
+func NewInType(iTypes, adapter string) (*InType, error) {
+ types := strings.Split(iTypes, "/")
+ if len(types) == 0 {
+ return nil, fmt.Errorf("in type couldn't be empty")
+ }
+
+ tps, err := parseInTypes(types)
+ if err != nil {
+ return nil, err
+ }
+
+ return &InType{
+ Base: &Base{},
+ types: tps,
+ adapter: adapter,
+ payload: strings.ToUpper(iTypes),
+ }, nil
+}
+
+func parseInTypes(tps []string) (res []C.Type, err error) {
+ for _, tp := range tps {
+ utp := strings.ToUpper(tp)
+ var r *C.Type
+ if utp == "SOCKS" {
+ r, _ = C.ParseType("SOCKS4")
+ res = append(res, *r)
+ r, _ = C.ParseType("SOCKS5")
+ res = append(res, *r)
+ } else {
+ r, err = C.ParseType(utp)
+ if err != nil {
+ return
+ }
+ res = append(res, *r)
+ }
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/in_user.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/in_user.go
new file mode 100644
index 0000000..ebe881a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/in_user.go
@@ -0,0 +1,49 @@
+package common
+
+import (
+ "fmt"
+ C "github.com/metacubex/mihomo/constant"
+ "strings"
+)
+
+type InUser struct {
+ *Base
+ users []string
+ adapter string
+ payload string
+}
+
+func (u *InUser) Match(metadata *C.Metadata) (bool, string) {
+ for _, user := range u.users {
+ if metadata.InUser == user {
+ return true, u.adapter
+ }
+ }
+ return false, ""
+}
+
+func (u *InUser) RuleType() C.RuleType {
+ return C.InUser
+}
+
+func (u *InUser) Adapter() string {
+ return u.adapter
+}
+
+func (u *InUser) Payload() string {
+ return u.payload
+}
+
+func NewInUser(iUsers, adapter string) (*InUser, error) {
+ users := strings.Split(iUsers, "/")
+ if len(users) == 0 {
+ return nil, fmt.Errorf("in user couldn't be empty")
+ }
+
+ return &InUser{
+ Base: &Base{},
+ users: users,
+ adapter: adapter,
+ payload: iUsers,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/ipasn.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/ipasn.go
new file mode 100644
index 0000000..813923a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/ipasn.go
@@ -0,0 +1,78 @@
+package common
+
+import (
+ "strconv"
+
+ "github.com/metacubex/mihomo/component/geodata"
+ "github.com/metacubex/mihomo/component/mmdb"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+type ASN struct {
+ *Base
+ asn string
+ adapter string
+ noResolveIP bool
+ isSourceIP bool
+}
+
+func (a *ASN) Match(metadata *C.Metadata) (bool, string) {
+ ip := metadata.DstIP
+ if a.isSourceIP {
+ ip = metadata.SrcIP
+ }
+ if !ip.IsValid() {
+ return false, ""
+ }
+
+ result := mmdb.ASNInstance().LookupASN(ip.AsSlice())
+ asnNumber := strconv.FormatUint(uint64(result.AutonomousSystemNumber), 10)
+ ipASN := asnNumber + " " + result.AutonomousSystemOrganization
+ if a.isSourceIP {
+ metadata.SrcIPASN = ipASN
+ } else {
+ metadata.DstIPASN = ipASN
+ }
+
+ match := a.asn == asnNumber
+ return match, a.adapter
+}
+
+func (a *ASN) RuleType() C.RuleType {
+ if a.isSourceIP {
+ return C.SrcIPASN
+ }
+ return C.IPASN
+}
+
+func (a *ASN) Adapter() string {
+ return a.adapter
+}
+
+func (a *ASN) Payload() string {
+ return a.asn
+}
+
+func (a *ASN) ShouldResolveIP() bool {
+ return !a.noResolveIP
+}
+
+func (a *ASN) GetASN() string {
+ return a.asn
+}
+
+func NewIPASN(asn string, adapter string, isSrc, noResolveIP bool) (*ASN, error) {
+ if err := geodata.InitASN(); err != nil {
+ log.Errorln("can't initial ASN: %s", err)
+ return nil, err
+ }
+
+ return &ASN{
+ Base: &Base{},
+ asn: asn,
+ adapter: adapter,
+ noResolveIP: noResolveIP,
+ isSourceIP: isSrc,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/ipcidr.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/ipcidr.go
new file mode 100644
index 0000000..663c939
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/ipcidr.go
@@ -0,0 +1,77 @@
+package common
+
+import (
+ "net/netip"
+
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type IPCIDROption func(*IPCIDR)
+
+func WithIPCIDRSourceIP(b bool) IPCIDROption {
+ return func(i *IPCIDR) {
+ i.isSourceIP = b
+ }
+}
+
+func WithIPCIDRNoResolve(noResolve bool) IPCIDROption {
+ return func(i *IPCIDR) {
+ i.noResolveIP = noResolve
+ }
+}
+
+type IPCIDR struct {
+ *Base
+ ipnet netip.Prefix
+ adapter string
+ isSourceIP bool
+ noResolveIP bool
+}
+
+func (i *IPCIDR) RuleType() C.RuleType {
+ if i.isSourceIP {
+ return C.SrcIPCIDR
+ }
+ return C.IPCIDR
+}
+
+func (i *IPCIDR) Match(metadata *C.Metadata) (bool, string) {
+ ip := metadata.DstIP
+ if i.isSourceIP {
+ ip = metadata.SrcIP
+ }
+ return ip.IsValid() && i.ipnet.Contains(ip), i.adapter
+}
+
+func (i *IPCIDR) Adapter() string {
+ return i.adapter
+}
+
+func (i *IPCIDR) Payload() string {
+ return i.ipnet.String()
+}
+
+func (i *IPCIDR) ShouldResolveIP() bool {
+ return !i.noResolveIP
+}
+
+func NewIPCIDR(s string, adapter string, opts ...IPCIDROption) (*IPCIDR, error) {
+ ipnet, err := netip.ParsePrefix(s)
+ if err != nil {
+ return nil, errPayload
+ }
+
+ ipcidr := &IPCIDR{
+ Base: &Base{},
+ ipnet: ipnet,
+ adapter: adapter,
+ }
+
+ for _, o := range opts {
+ o(ipcidr)
+ }
+
+ return ipcidr, nil
+}
+
+//var _ C.Rule = (*IPCIDR)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/ipsuffix.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/ipsuffix.go
new file mode 100644
index 0000000..3251faf
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/ipsuffix.go
@@ -0,0 +1,79 @@
+package common
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ "net/netip"
+)
+
+type IPSuffix struct {
+ *Base
+ ipBytes []byte
+ bits int
+ payload string
+ adapter string
+ isSourceIP bool
+ noResolveIP bool
+}
+
+func (is *IPSuffix) RuleType() C.RuleType {
+ if is.isSourceIP {
+ return C.SrcIPSuffix
+ }
+ return C.IPSuffix
+}
+
+func (is *IPSuffix) Match(metadata *C.Metadata) (bool, string) {
+ ip := metadata.DstIP
+ if is.isSourceIP {
+ ip = metadata.SrcIP
+ }
+
+ mIPBytes := ip.AsSlice()
+ if len(is.ipBytes) != len(mIPBytes) {
+ return false, ""
+ }
+
+ size := len(mIPBytes)
+ bits := is.bits
+
+ for i := bits / 8; i > 0; i-- {
+ if is.ipBytes[size-i] != mIPBytes[size-i] {
+ return false, ""
+ }
+ }
+
+ if (is.ipBytes[size-bits/8-1] << (8 - bits%8)) != (mIPBytes[size-bits/8-1] << (8 - bits%8)) {
+ return false, ""
+ }
+
+ return true, is.adapter
+}
+
+func (is *IPSuffix) Adapter() string {
+ return is.adapter
+}
+
+func (is *IPSuffix) Payload() string {
+ return is.payload
+}
+
+func (is *IPSuffix) ShouldResolveIP() bool {
+ return !is.noResolveIP
+}
+
+func NewIPSuffix(payload, adapter string, isSrc, noResolveIP bool) (*IPSuffix, error) {
+ ipnet, err := netip.ParsePrefix(payload)
+ if err != nil {
+ return nil, errPayload
+ }
+
+ return &IPSuffix{
+ Base: &Base{},
+ payload: payload,
+ ipBytes: ipnet.Addr().AsSlice(),
+ bits: ipnet.Bits(),
+ adapter: adapter,
+ isSourceIP: isSrc,
+ noResolveIP: noResolveIP,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/network_type.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/network_type.go
new file mode 100644
index 0000000..83a332d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/network_type.go
@@ -0,0 +1,47 @@
+package common
+
+import (
+ "fmt"
+ C "github.com/metacubex/mihomo/constant"
+ "strings"
+)
+
+type NetworkType struct {
+ *Base
+ network C.NetWork
+ adapter string
+}
+
+func NewNetworkType(network, adapter string) (*NetworkType, error) {
+ ntType := NetworkType{
+ Base: &Base{},
+ }
+
+ ntType.adapter = adapter
+ switch strings.ToUpper(network) {
+ case "TCP":
+ ntType.network = C.TCP
+ case "UDP":
+ ntType.network = C.UDP
+ default:
+ return nil, fmt.Errorf("unsupported network type, only TCP/UDP")
+ }
+
+ return &ntType, nil
+}
+
+func (n *NetworkType) RuleType() C.RuleType {
+ return C.Network
+}
+
+func (n *NetworkType) Match(metadata *C.Metadata) (bool, string) {
+ return n.network == metadata.NetWork, n.adapter
+}
+
+func (n *NetworkType) Adapter() string {
+ return n.adapter
+}
+
+func (n *NetworkType) Payload() string {
+ return n.network.String()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/port.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/port.go
new file mode 100644
index 0000000..d3f6e1b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/port.go
@@ -0,0 +1,60 @@
+package common
+
+import (
+ "fmt"
+
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+type Port struct {
+ *Base
+ adapter string
+ port string
+ ruleType C.RuleType
+ portRanges utils.IntRanges[uint16]
+}
+
+func (p *Port) RuleType() C.RuleType {
+ return p.ruleType
+}
+
+func (p *Port) Match(metadata *C.Metadata) (bool, string) {
+ targetPort := metadata.DstPort
+ switch p.ruleType {
+ case C.InPort:
+ targetPort = metadata.InPort
+ case C.SrcPort:
+ targetPort = metadata.SrcPort
+ }
+ return p.portRanges.Check(targetPort), p.adapter
+}
+
+func (p *Port) Adapter() string {
+ return p.adapter
+}
+
+func (p *Port) Payload() string {
+ return p.port
+}
+
+func NewPort(port string, adapter string, ruleType C.RuleType) (*Port, error) {
+ portRanges, err := utils.NewUnsignedRanges[uint16](port)
+ if err != nil {
+ return nil, fmt.Errorf("%w, %w", errPayload, err)
+ }
+
+ if len(portRanges) == 0 {
+ return nil, errPayload
+ }
+
+ return &Port{
+ Base: &Base{},
+ adapter: adapter,
+ port: port,
+ ruleType: ruleType,
+ portRanges: portRanges,
+ }, nil
+}
+
+var _ C.Rule = (*Port)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/process.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/process.go
new file mode 100644
index 0000000..8932e94
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/process.go
@@ -0,0 +1,77 @@
+package common
+
+import (
+ "strings"
+
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/dlclark/regexp2"
+)
+
+type Process struct {
+ *Base
+ adapter string
+ process string
+ nameOnly bool
+ regexp *regexp2.Regexp
+}
+
+func (ps *Process) RuleType() C.RuleType {
+ if ps.nameOnly {
+ if ps.regexp != nil {
+ return C.ProcessNameRegex
+ }
+ return C.ProcessName
+ }
+
+ if ps.regexp != nil {
+ return C.ProcessPathRegex
+ }
+ return C.ProcessPath
+}
+
+func (ps *Process) Match(metadata *C.Metadata) (bool, string) {
+ if ps.nameOnly {
+ if ps.regexp != nil {
+ match, _ := ps.regexp.MatchString(metadata.Process)
+ return match, ps.adapter
+ }
+ return strings.EqualFold(metadata.Process, ps.process), ps.adapter
+ }
+
+ if ps.regexp != nil {
+ match, _ := ps.regexp.MatchString(metadata.ProcessPath)
+ return match, ps.adapter
+ }
+ return strings.EqualFold(metadata.ProcessPath, ps.process), ps.adapter
+}
+
+func (ps *Process) Adapter() string {
+ return ps.adapter
+}
+
+func (ps *Process) Payload() string {
+ return ps.process
+}
+
+func (ps *Process) ShouldFindProcess() bool {
+ return true
+}
+
+func NewProcess(process string, adapter string, nameOnly bool, regex bool) (*Process, error) {
+ var r *regexp2.Regexp
+ var err error
+ if regex {
+ r, err = regexp2.Compile(process, regexp2.IgnoreCase)
+ if err != nil {
+ return nil, err
+ }
+ }
+ return &Process{
+ Base: &Base{},
+ adapter: adapter,
+ process: process,
+ nameOnly: nameOnly,
+ regexp: r,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/uid.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/uid.go
new file mode 100644
index 0000000..c80632b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/common/uid.go
@@ -0,0 +1,64 @@
+package common
+
+import (
+ "fmt"
+ "runtime"
+
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+type Uid struct {
+ *Base
+ uids utils.IntRanges[uint32]
+ oUid string
+ adapter string
+}
+
+func NewUid(oUid, adapter string) (*Uid, error) {
+ if !(runtime.GOOS == "linux" || runtime.GOOS == "android") {
+ return nil, fmt.Errorf("uid rule not support this platform")
+ }
+
+ uidRange, err := utils.NewUnsignedRanges[uint32](oUid)
+ if err != nil {
+ return nil, fmt.Errorf("%w, %w", errPayload, err)
+ }
+
+ if len(uidRange) == 0 {
+ return nil, errPayload
+ }
+ return &Uid{
+ Base: &Base{},
+ adapter: adapter,
+ oUid: oUid,
+ uids: uidRange,
+ }, nil
+}
+
+func (u *Uid) RuleType() C.RuleType {
+ return C.Uid
+}
+
+func (u *Uid) Match(metadata *C.Metadata) (bool, string) {
+ if metadata.Uid != 0 {
+ if u.uids.Check(metadata.Uid) {
+ return true, u.adapter
+ }
+ }
+ log.Warnln("[UID] could not get uid from %s", metadata.String())
+ return false, ""
+}
+
+func (u *Uid) Adapter() string {
+ return u.adapter
+}
+
+func (u *Uid) Payload() string {
+ return u.oUid
+}
+
+func (u *Uid) ShouldFindProcess() bool {
+ return true
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/logic/logic.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/logic/logic.go
new file mode 100644
index 0000000..6e67285
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/logic/logic.go
@@ -0,0 +1,308 @@
+package logic
+
+import (
+ "fmt"
+ "regexp"
+ "strings"
+ "sync"
+
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/rules/common"
+
+ list "github.com/bahlo/generic-list-go"
+)
+
+type Logic struct {
+ *common.Base
+ payload string
+ adapter string
+ ruleType C.RuleType
+ rules []C.Rule
+ subRules map[string][]C.Rule
+
+ payloadOnce sync.Once
+}
+
+type ParseRuleFunc func(tp, payload, target string, params []string, subRules map[string][]C.Rule) (C.Rule, error)
+
+func NewSubRule(payload, adapter string, subRules map[string][]C.Rule, parseRule ParseRuleFunc) (*Logic, error) {
+ logic := &Logic{Base: &common.Base{}, payload: payload, adapter: adapter, ruleType: C.SubRules, subRules: subRules}
+ err := logic.parsePayload(fmt.Sprintf("(%s)", payload), parseRule)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(logic.rules) != 1 {
+ return nil, fmt.Errorf("Sub-Rule rule must contain one rule")
+ }
+ return logic, nil
+}
+
+func NewNOT(payload string, adapter string, parseRule ParseRuleFunc) (*Logic, error) {
+ logic := &Logic{Base: &common.Base{}, payload: payload, adapter: adapter, ruleType: C.NOT}
+ err := logic.parsePayload(payload, parseRule)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(logic.rules) != 1 {
+ return nil, fmt.Errorf("not rule must contain one rule")
+ }
+ return logic, nil
+}
+
+func NewOR(payload string, adapter string, parseRule ParseRuleFunc) (*Logic, error) {
+ logic := &Logic{Base: &common.Base{}, payload: payload, adapter: adapter, ruleType: C.OR}
+ err := logic.parsePayload(payload, parseRule)
+ if err != nil {
+ return nil, err
+ }
+ return logic, nil
+}
+
+func NewAND(payload string, adapter string, parseRule ParseRuleFunc) (*Logic, error) {
+ logic := &Logic{Base: &common.Base{}, payload: payload, adapter: adapter, ruleType: C.AND}
+ err := logic.parsePayload(payload, parseRule)
+ if err != nil {
+ return nil, err
+ }
+ return logic, nil
+}
+
+type Range struct {
+ start int
+ end int
+ index int
+}
+
+func (r Range) containRange(preStart, preEnd int) bool {
+ return preStart < r.start && preEnd > r.end
+}
+
+func (logic *Logic) payloadToRule(subPayload string, parseRule ParseRuleFunc) (C.Rule, error) {
+ splitStr := strings.SplitN(subPayload, ",", 2)
+ if len(splitStr) < 2 {
+ return nil, fmt.Errorf("[%s] format is error", subPayload)
+ }
+
+ tp := splitStr[0]
+ payload := splitStr[1]
+ switch tp {
+ case "MATCH", "SUB-RULE":
+ return nil, fmt.Errorf("unsupported rule type [%s] on logic rule", tp)
+ case "NOT", "OR", "AND":
+ return parseRule(tp, payload, "", nil, nil)
+ }
+ param := strings.Split(payload, ",")
+ return parseRule(tp, param[0], "", param[1:], nil)
+}
+
+func (logic *Logic) format(payload string) ([]Range, error) {
+ stack := list.New[Range]()
+ num := 0
+ subRanges := make([]Range, 0)
+ for i, c := range payload {
+ if c == '(' {
+ sr := Range{
+ start: i,
+ index: num,
+ }
+
+ num++
+ stack.PushBack(sr)
+ } else if c == ')' {
+ if stack.Len() == 0 {
+ return nil, fmt.Errorf("missing '('")
+ }
+
+ sr := stack.Back()
+ stack.Remove(sr)
+ sr.Value.end = i
+ subRanges = append(subRanges, sr.Value)
+ }
+ }
+
+ if stack.Len() != 0 {
+ return nil, fmt.Errorf("format error is missing )")
+ }
+
+ sortResult := make([]Range, len(subRanges))
+ for _, sr := range subRanges {
+ sortResult[sr.index] = sr
+ }
+
+ return sortResult, nil
+}
+
+func (logic *Logic) findSubRuleRange(payload string, ruleRanges []Range) []Range {
+ payloadLen := len(payload)
+ subRuleRange := make([]Range, 0)
+ for _, rr := range ruleRanges {
+ if rr.start == 0 && rr.end == payloadLen-1 {
+ // 最大范围跳过
+ continue
+ }
+
+ containInSub := false
+ for _, r := range subRuleRange {
+ if rr.containRange(r.start, r.end) {
+ // The subRuleRange contains a range of rr, which is the next level node of the tree
+ containInSub = true
+ break
+ }
+ }
+
+ if !containInSub {
+ subRuleRange = append(subRuleRange, rr)
+ }
+ }
+
+ return subRuleRange
+}
+
+func (logic *Logic) parsePayload(payload string, parseRule ParseRuleFunc) error {
+ regex, err := regexp.Compile("\\(.*\\)")
+ if err != nil {
+ return err
+ }
+
+ if regex.MatchString(payload) {
+ subAllRanges, err := logic.format(payload)
+ if err != nil {
+ return err
+ }
+ rules := make([]C.Rule, 0, len(subAllRanges))
+
+ subRanges := logic.findSubRuleRange(payload, subAllRanges)
+ for _, subRange := range subRanges {
+ subPayload := payload[subRange.start+1 : subRange.end]
+
+ rule, err := logic.payloadToRule(subPayload, parseRule)
+ if err != nil {
+ return err
+ }
+
+ rules = append(rules, rule)
+ }
+
+ logic.rules = rules
+
+ return nil
+ }
+
+ return fmt.Errorf("payload format error")
+}
+
+func (logic *Logic) RuleType() C.RuleType {
+ return logic.ruleType
+}
+
+func matchSubRules(metadata *C.Metadata, name string, subRules map[string][]C.Rule) (bool, string) {
+ for _, rule := range subRules[name] {
+ if m, a := rule.Match(metadata); m {
+ if rule.RuleType() == C.SubRules {
+ return matchSubRules(metadata, rule.Adapter(), subRules)
+ } else {
+ return m, a
+ }
+ }
+ }
+ return false, ""
+}
+
+func (logic *Logic) Match(metadata *C.Metadata) (bool, string) {
+ switch logic.ruleType {
+ case C.SubRules:
+ if m, _ := logic.rules[0].Match(metadata); m {
+ return matchSubRules(metadata, logic.adapter, logic.subRules)
+ }
+ return false, ""
+ case C.NOT:
+ if m, _ := logic.rules[0].Match(metadata); !m {
+ return true, logic.adapter
+ }
+ return false, ""
+ case C.OR:
+ for _, rule := range logic.rules {
+ if m, _ := rule.Match(metadata); m {
+ return true, logic.adapter
+ }
+ }
+ return false, ""
+ case C.AND:
+ for _, rule := range logic.rules {
+ if m, _ := rule.Match(metadata); !m {
+ return false, logic.adapter
+ }
+ }
+ return true, logic.adapter
+ default:
+ return false, ""
+ }
+}
+
+func (logic *Logic) Adapter() string {
+ return logic.adapter
+}
+
+func (logic *Logic) Payload() string {
+ logic.payloadOnce.Do(func() { // a little bit expensive, so only computed once
+ switch logic.ruleType {
+ case C.NOT:
+ logic.payload = fmt.Sprintf("(!(%s,%s))", logic.rules[0].RuleType(), logic.rules[0].Payload())
+ case C.OR:
+ payloads := make([]string, 0, len(logic.rules))
+ for _, rule := range logic.rules {
+ payloads = append(payloads, fmt.Sprintf("(%s,%s)", rule.RuleType().String(), rule.Payload()))
+ }
+ logic.payload = fmt.Sprintf("(%s)", strings.Join(payloads, " || "))
+ case C.AND:
+ payloads := make([]string, 0, len(logic.rules))
+ for _, rule := range logic.rules {
+ payloads = append(payloads, fmt.Sprintf("(%s,%s)", rule.RuleType().String(), rule.Payload()))
+ }
+ logic.payload = fmt.Sprintf("(%s)", strings.Join(payloads, " && "))
+ default:
+ }
+ })
+ return logic.payload
+}
+
+func (logic *Logic) ShouldResolveIP() bool {
+ if logic.ruleType == C.SubRules {
+ for _, rule := range logic.subRules[logic.adapter] {
+ if rule.ShouldResolveIP() {
+ return true
+ }
+ }
+ }
+ for _, rule := range logic.rules {
+ if rule.ShouldResolveIP() {
+ return true
+ }
+ }
+ return false
+}
+
+func (logic *Logic) ShouldFindProcess() bool {
+ if logic.ruleType == C.SubRules {
+ for _, rule := range logic.subRules[logic.adapter] {
+ if rule.ShouldFindProcess() {
+ return true
+ }
+ }
+ }
+ for _, rule := range logic.rules {
+ if rule.ShouldFindProcess() {
+ return true
+ }
+ }
+ return false
+}
+
+func (logic *Logic) ProviderNames() (names []string) {
+ for _, rule := range logic.rules {
+ names = append(names, rule.ProviderNames()...)
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/logic_test/logic_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/logic_test/logic_test.go
new file mode 100644
index 0000000..e88c857
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/logic_test/logic_test.go
@@ -0,0 +1,57 @@
+package logic_test
+
+import (
+ // https://github.com/golang/go/wiki/CodeReviewComments#import-dot
+ . "github.com/metacubex/mihomo/rules/logic"
+
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/rules"
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+var ParseRule = rules.ParseRule
+
+func TestAND(t *testing.T) {
+ and, err := NewAND("((DOMAIN,baidu.com),(NETWORK,TCP),(DST-PORT,10001-65535))", "DIRECT", ParseRule)
+ assert.Equal(t, nil, err)
+ assert.Equal(t, "DIRECT", and.Adapter())
+ assert.Equal(t, false, and.ShouldResolveIP())
+ m, _ := and.Match(&C.Metadata{
+ Host: "baidu.com",
+ NetWork: C.TCP,
+ DstPort: 20000,
+ })
+ assert.Equal(t, true, m)
+
+ and, err = NewAND("(DOMAIN,baidu.com),(NETWORK,TCP),(DST-PORT,10001-65535))", "DIRECT", ParseRule)
+ assert.NotEqual(t, nil, err)
+
+ and, err = NewAND("((AND,(DOMAIN,baidu.com),(NETWORK,TCP)),(NETWORK,TCP),(DST-PORT,10001-65535))", "DIRECT", ParseRule)
+ assert.Equal(t, nil, err)
+}
+
+func TestNOT(t *testing.T) {
+ not, err := NewNOT("((DST-PORT,6000-6500))", "REJECT", ParseRule)
+ assert.Equal(t, nil, err)
+ m, _ := not.Match(&C.Metadata{
+ DstPort: 6100,
+ })
+ assert.Equal(t, false, m)
+
+ _, err = NewNOT("((DST-PORT,5600-6666),(DOMAIN,baidu.com))", "DIRECT", ParseRule)
+ assert.NotEqual(t, nil, err)
+
+ _, err = NewNOT("(())", "DIRECT", ParseRule)
+ assert.NotEqual(t, nil, err)
+}
+
+func TestOR(t *testing.T) {
+ or, err := NewOR("((DOMAIN,baidu.com),(NETWORK,TCP),(DST-PORT,10001-65535))", "DIRECT", ParseRule)
+ assert.Equal(t, nil, err)
+ m, _ := or.Match(&C.Metadata{
+ NetWork: C.TCP,
+ })
+ assert.Equal(t, true, m)
+ assert.Equal(t, false, or.ShouldResolveIP())
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/parser.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/parser.go
new file mode 100644
index 0000000..4f7ddbe
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/parser.go
@@ -0,0 +1,93 @@
+package rules
+
+import (
+ "fmt"
+
+ C "github.com/metacubex/mihomo/constant"
+ RC "github.com/metacubex/mihomo/rules/common"
+ "github.com/metacubex/mihomo/rules/logic"
+ RP "github.com/metacubex/mihomo/rules/provider"
+)
+
+func ParseRule(tp, payload, target string, params []string, subRules map[string][]C.Rule) (parsed C.Rule, parseErr error) {
+ switch tp {
+ case "DOMAIN":
+ parsed = RC.NewDomain(payload, target)
+ case "DOMAIN-SUFFIX":
+ parsed = RC.NewDomainSuffix(payload, target)
+ case "DOMAIN-KEYWORD":
+ parsed = RC.NewDomainKeyword(payload, target)
+ case "DOMAIN-REGEX":
+ parsed, parseErr = RC.NewDomainRegex(payload, target)
+ case "GEOSITE":
+ parsed, parseErr = RC.NewGEOSITE(payload, target)
+ case "GEOIP":
+ isSrc, noResolve := RC.ParseParams(params)
+ parsed, parseErr = RC.NewGEOIP(payload, target, isSrc, noResolve)
+ case "SRC-GEOIP":
+ parsed, parseErr = RC.NewGEOIP(payload, target, true, true)
+ case "IP-ASN":
+ isSrc, noResolve := RC.ParseParams(params)
+ parsed, parseErr = RC.NewIPASN(payload, target, isSrc, noResolve)
+ case "SRC-IP-ASN":
+ parsed, parseErr = RC.NewIPASN(payload, target, true, true)
+ case "IP-CIDR", "IP-CIDR6":
+ isSrc, noResolve := RC.ParseParams(params)
+ parsed, parseErr = RC.NewIPCIDR(payload, target, RC.WithIPCIDRSourceIP(isSrc), RC.WithIPCIDRNoResolve(noResolve))
+ case "SRC-IP-CIDR":
+ parsed, parseErr = RC.NewIPCIDR(payload, target, RC.WithIPCIDRSourceIP(true), RC.WithIPCIDRNoResolve(true))
+ case "IP-SUFFIX":
+ isSrc, noResolve := RC.ParseParams(params)
+ parsed, parseErr = RC.NewIPSuffix(payload, target, isSrc, noResolve)
+ case "SRC-IP-SUFFIX":
+ parsed, parseErr = RC.NewIPSuffix(payload, target, true, true)
+ case "SRC-PORT":
+ parsed, parseErr = RC.NewPort(payload, target, C.SrcPort)
+ case "DST-PORT":
+ parsed, parseErr = RC.NewPort(payload, target, C.DstPort)
+ case "IN-PORT":
+ parsed, parseErr = RC.NewPort(payload, target, C.InPort)
+ case "DSCP":
+ parsed, parseErr = RC.NewDSCP(payload, target)
+ case "PROCESS-NAME":
+ parsed, parseErr = RC.NewProcess(payload, target, true, false)
+ case "PROCESS-PATH":
+ parsed, parseErr = RC.NewProcess(payload, target, false, false)
+ case "PROCESS-NAME-REGEX":
+ parsed, parseErr = RC.NewProcess(payload, target, true, true)
+ case "PROCESS-PATH-REGEX":
+ parsed, parseErr = RC.NewProcess(payload, target, false, true)
+ case "NETWORK":
+ parsed, parseErr = RC.NewNetworkType(payload, target)
+ case "UID":
+ parsed, parseErr = RC.NewUid(payload, target)
+ case "IN-TYPE":
+ parsed, parseErr = RC.NewInType(payload, target)
+ case "IN-USER":
+ parsed, parseErr = RC.NewInUser(payload, target)
+ case "IN-NAME":
+ parsed, parseErr = RC.NewInName(payload, target)
+ case "SUB-RULE":
+ parsed, parseErr = logic.NewSubRule(payload, target, subRules, ParseRule)
+ case "AND":
+ parsed, parseErr = logic.NewAND(payload, target, ParseRule)
+ case "OR":
+ parsed, parseErr = logic.NewOR(payload, target, ParseRule)
+ case "NOT":
+ parsed, parseErr = logic.NewNOT(payload, target, ParseRule)
+ case "RULE-SET":
+ isSrc, noResolve := RC.ParseParams(params)
+ parsed, parseErr = RP.NewRuleSet(payload, target, isSrc, noResolve)
+ case "MATCH":
+ parsed = RC.NewMatch(target)
+ parseErr = nil
+ default:
+ parseErr = fmt.Errorf("unsupported rule type %s", tp)
+ }
+
+ if parseErr != nil {
+ return nil, parseErr
+ }
+
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/classical_strategy.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/classical_strategy.go
new file mode 100644
index 0000000..205a8e5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/classical_strategy.go
@@ -0,0 +1,104 @@
+package provider
+
+import (
+ "fmt"
+ "strings"
+
+ C "github.com/metacubex/mihomo/constant"
+ P "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/log"
+)
+
+type classicalStrategy struct {
+ rules []C.Rule
+ count int
+ shouldResolveIP bool
+ shouldFindProcess bool
+ parse func(tp, payload, target string, params []string) (parsed C.Rule, parseErr error)
+}
+
+func (c *classicalStrategy) Behavior() P.RuleBehavior {
+ return P.Classical
+}
+
+func (c *classicalStrategy) Match(metadata *C.Metadata) bool {
+ for _, rule := range c.rules {
+ if m, _ := rule.Match(metadata); m {
+ return true
+ }
+ }
+
+ return false
+}
+
+func (c *classicalStrategy) Count() int {
+ return c.count
+}
+
+func (c *classicalStrategy) ShouldResolveIP() bool {
+ return c.shouldResolveIP
+}
+
+func (c *classicalStrategy) ShouldFindProcess() bool {
+ return c.shouldFindProcess
+}
+
+func (c *classicalStrategy) Reset() {
+ c.rules = nil
+ c.count = 0
+ c.shouldFindProcess = false
+ c.shouldResolveIP = false
+}
+
+func (c *classicalStrategy) Insert(rule string) {
+ ruleType, rule, params := ruleParse(rule)
+
+ if ruleType == "PROCESS-NAME" {
+ c.shouldFindProcess = true
+ }
+
+ r, err := c.parse(ruleType, rule, "", params)
+ if err != nil {
+ log.Warnln("parse rule error:[%s]", err.Error())
+ } else {
+ if r.ShouldResolveIP() {
+ c.shouldResolveIP = true
+ }
+ if r.ShouldFindProcess() {
+ c.shouldFindProcess = true
+ }
+
+ c.rules = append(c.rules, r)
+ c.count++
+ }
+}
+
+func (c *classicalStrategy) FinishInsert() {}
+
+func ruleParse(ruleRaw string) (string, string, []string) {
+ item := strings.Split(ruleRaw, ",")
+ if len(item) == 1 {
+ return "", item[0], nil
+ } else if len(item) == 2 {
+ return item[0], item[1], nil
+ } else if len(item) > 2 {
+ if item[0] == "NOT" || item[0] == "OR" || item[0] == "AND" || item[0] == "SUB-RULE" || item[0] == "DOMAIN-REGEX" || item[0] == "PROCESS-NAME-REGEX" || item[0] == "PROCESS-PATH-REGEX" {
+ return item[0], strings.Join(item[1:len(item)], ","), nil
+ } else {
+ return item[0], item[1], item[2:]
+ }
+ }
+
+ return "", "", nil
+}
+
+func NewClassicalStrategy(parse func(tp, payload, target string, params []string, subRules map[string][]C.Rule) (parsed C.Rule, parseErr error)) *classicalStrategy {
+ return &classicalStrategy{rules: []C.Rule{}, parse: func(tp, payload, target string, params []string) (parsed C.Rule, parseErr error) {
+ switch tp {
+ case "MATCH":
+ return nil, fmt.Errorf("unsupported rule type on rule-set")
+ default:
+ return parse(tp, payload, target, params, nil)
+ }
+ }}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/domain_strategy.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/domain_strategy.go
new file mode 100644
index 0000000..b893f03
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/domain_strategy.go
@@ -0,0 +1,107 @@
+package provider
+
+import (
+ "errors"
+ "io"
+ "strings"
+
+ "github.com/metacubex/mihomo/component/trie"
+ C "github.com/metacubex/mihomo/constant"
+ P "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/log"
+
+ "golang.org/x/exp/slices"
+)
+
+type domainStrategy struct {
+ count int
+ domainTrie *trie.DomainTrie[struct{}]
+ domainSet *trie.DomainSet
+}
+
+func (d *domainStrategy) Behavior() P.RuleBehavior {
+ return P.Domain
+}
+
+func (d *domainStrategy) ShouldFindProcess() bool {
+ return false
+}
+
+func (d *domainStrategy) Match(metadata *C.Metadata) bool {
+ return d.domainSet != nil && d.domainSet.Has(metadata.RuleHost())
+}
+
+func (d *domainStrategy) Count() int {
+ return d.count
+}
+
+func (d *domainStrategy) ShouldResolveIP() bool {
+ return false
+}
+
+func (d *domainStrategy) Reset() {
+ d.domainTrie = trie.New[struct{}]()
+ d.domainSet = nil
+ d.count = 0
+}
+
+func (d *domainStrategy) Insert(rule string) {
+ if strings.ContainsRune(rule, '/') {
+ log.Warnln("invalid domain:[%s]", rule)
+ return
+ }
+ err := d.domainTrie.Insert(rule, struct{}{})
+ if err != nil {
+ log.Warnln("invalid domain:[%s]", rule)
+ } else {
+ d.count++
+ }
+}
+
+func (d *domainStrategy) FinishInsert() {
+ d.domainSet = d.domainTrie.NewDomainSet()
+ d.domainTrie = nil
+}
+
+func (d *domainStrategy) FromMrs(r io.Reader, count int) error {
+ domainSet, err := trie.ReadDomainSetBin(r)
+ if err != nil {
+ return err
+ }
+ d.count = count
+ d.domainSet = domainSet
+ return nil
+}
+
+func (d *domainStrategy) WriteMrs(w io.Writer) error {
+ if d.domainSet == nil {
+ return errors.New("nil domainSet")
+ }
+ return d.domainSet.WriteBin(w)
+}
+
+func (d *domainStrategy) DumpMrs(f func(key string) bool) {
+ if d.domainSet != nil {
+ var keys []string
+ d.domainSet.Foreach(func(key string) bool {
+ keys = append(keys, key)
+ return true
+ })
+ slices.Sort(keys)
+
+ for _, key := range keys {
+ if _, ok := slices.BinarySearch(keys, "+."+key); ok {
+ continue // ignore the rules added by trie internal processing
+ }
+ if !f(key) {
+ return
+ }
+ }
+ }
+}
+
+var _ mrsRuleStrategy = (*domainStrategy)(nil)
+
+func NewDomainStrategy() *domainStrategy {
+ return &domainStrategy{}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/ipcidr_strategy.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/ipcidr_strategy.go
new file mode 100644
index 0000000..9efffed
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/ipcidr_strategy.go
@@ -0,0 +1,100 @@
+package provider
+
+import (
+ "errors"
+ "io"
+ "net/netip"
+
+ "github.com/metacubex/mihomo/component/cidr"
+ C "github.com/metacubex/mihomo/constant"
+ P "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/log"
+
+ "go4.org/netipx"
+)
+
+type ipcidrStrategy struct {
+ count int
+ shouldResolveIP bool
+ cidrSet *cidr.IpCidrSet
+ //trie *trie.IpCidrTrie
+}
+
+func (i *ipcidrStrategy) Behavior() P.RuleBehavior {
+ return P.IPCIDR
+}
+
+func (i *ipcidrStrategy) ShouldFindProcess() bool {
+ return false
+}
+
+func (i *ipcidrStrategy) Match(metadata *C.Metadata) bool {
+ // return i.trie != nil && i.trie.IsContain(metadata.DstIP.AsSlice())
+ return i.cidrSet != nil && i.cidrSet.IsContain(metadata.DstIP)
+}
+
+func (i *ipcidrStrategy) Count() int {
+ return i.count
+}
+
+func (i *ipcidrStrategy) ShouldResolveIP() bool {
+ return i.shouldResolveIP
+}
+
+func (i *ipcidrStrategy) Reset() {
+ // i.trie = trie.NewIpCidrTrie()
+ i.cidrSet = cidr.NewIpCidrSet()
+ i.count = 0
+ i.shouldResolveIP = false
+}
+
+func (i *ipcidrStrategy) Insert(rule string) {
+ //err := i.trie.AddIpCidrForString(rule)
+ err := i.cidrSet.AddIpCidrForString(rule)
+ if err != nil {
+ log.Warnln("invalid Ipcidr:[%s]", rule)
+ } else {
+ i.shouldResolveIP = true
+ i.count++
+ }
+}
+
+func (i *ipcidrStrategy) FinishInsert() {
+ i.cidrSet.Merge()
+}
+
+func (i *ipcidrStrategy) FromMrs(r io.Reader, count int) error {
+ cidrSet, err := cidr.ReadIpCidrSet(r)
+ if err != nil {
+ return err
+ }
+ i.count = count
+ i.cidrSet = cidrSet
+ if i.count > 0 {
+ i.shouldResolveIP = true
+ }
+ return nil
+}
+
+func (i *ipcidrStrategy) WriteMrs(w io.Writer) error {
+ if i.cidrSet == nil {
+ return errors.New("nil cidrSet")
+ }
+ return i.cidrSet.WriteBin(w)
+}
+
+func (i *ipcidrStrategy) DumpMrs(f func(key string) bool) {
+ if i.cidrSet != nil {
+ i.cidrSet.Foreach(func(prefix netip.Prefix) bool {
+ return f(prefix.String())
+ })
+ }
+}
+
+func (i *ipcidrStrategy) ToIpCidr() *netipx.IPSet {
+ return i.cidrSet.ToIPSet()
+}
+
+func NewIPCidrStrategy() *ipcidrStrategy {
+ return &ipcidrStrategy{}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/mrs_converter.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/mrs_converter.go
new file mode 100644
index 0000000..dbbe51c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/mrs_converter.go
@@ -0,0 +1,120 @@
+package provider
+
+import (
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "io"
+ "os"
+
+ P "github.com/metacubex/mihomo/constant/provider"
+
+ "github.com/klauspost/compress/zstd"
+)
+
+func ConvertToMrs(buf []byte, behavior P.RuleBehavior, format P.RuleFormat, w io.Writer) (err error) {
+ strategy := newStrategy(behavior, nil)
+ strategy, err = rulesParse(buf, strategy, format)
+ if err != nil {
+ return err
+ }
+ if strategy.Count() == 0 {
+ return errors.New("empty rule")
+ }
+ if _strategy, ok := strategy.(mrsRuleStrategy); ok {
+ if format == P.MrsRule { // export to TextRule
+ _strategy.DumpMrs(func(key string) bool {
+ _, err = fmt.Fprintln(w, key)
+ if err != nil {
+ return false
+ }
+ return true
+ })
+ return nil
+ }
+
+ var encoder *zstd.Encoder
+ encoder, err = zstd.NewWriter(w, zstd.WithEncoderLevel(zstd.SpeedBestCompression))
+ if err != nil {
+ return err
+ }
+ defer func() {
+ zstdErr := encoder.Close()
+ if err == nil {
+ err = zstdErr
+ }
+ }()
+
+ // header
+ _, err = encoder.Write(MrsMagicBytes[:])
+ if err != nil {
+ return err
+ }
+
+ // behavior
+ _behavior := []byte{behavior.Byte()}
+ _, err = encoder.Write(_behavior[:])
+ if err != nil {
+ return err
+ }
+
+ // count
+ count := int64(_strategy.Count())
+ err = binary.Write(encoder, binary.BigEndian, count)
+ if err != nil {
+ return err
+ }
+
+ // extra (reserved for future using)
+ var extra []byte
+ err = binary.Write(encoder, binary.BigEndian, int64(len(extra)))
+ if err != nil {
+ return err
+ }
+ _, err = encoder.Write(extra)
+ if err != nil {
+ return err
+ }
+
+ return _strategy.WriteMrs(encoder)
+ } else {
+ return ErrInvalidFormat
+ }
+}
+
+func ConvertMain(args []string) {
+ if len(args) > 3 {
+ behavior, err := P.ParseBehavior(args[0])
+ if err != nil {
+ panic(err)
+ }
+ format, err := P.ParseRuleFormat(args[1])
+ if err != nil {
+ panic(err)
+ }
+ source := args[2]
+ target := args[3]
+
+ sourceFile, err := os.ReadFile(source)
+ if err != nil {
+ panic(err)
+ }
+
+ targetFile, err := os.OpenFile(target, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
+ if err != nil {
+ panic(err)
+ }
+
+ err = ConvertToMrs(sourceFile, behavior, format, targetFile)
+ if err != nil {
+ panic(err)
+ }
+
+ err = targetFile.Close()
+ if err != nil {
+ panic(err)
+ }
+ } else {
+ panic("Usage: convert-ruleset ")
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/mrs_reader.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/mrs_reader.go
new file mode 100644
index 0000000..66f6212
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/mrs_reader.go
@@ -0,0 +1,72 @@
+package provider
+
+import (
+ "bytes"
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "io"
+
+ "github.com/klauspost/compress/zstd"
+)
+
+var MrsMagicBytes = [4]byte{'M', 'R', 'S', 1} // MRSv1
+
+func rulesMrsParse(buf []byte, strategy ruleStrategy) (ruleStrategy, error) {
+ if _strategy, ok := strategy.(mrsRuleStrategy); ok {
+ reader, err := zstd.NewReader(bytes.NewReader(buf))
+ if err != nil {
+ return nil, err
+ }
+ defer reader.Close()
+
+ // header
+ var header [4]byte
+ _, err = io.ReadFull(reader, header[:])
+ if err != nil {
+ return nil, err
+ }
+ if header != MrsMagicBytes {
+ return nil, fmt.Errorf("invalid MrsMagic bytes")
+ }
+
+ // behavior
+ var _behavior [1]byte
+ _, err = io.ReadFull(reader, _behavior[:])
+ if err != nil {
+ return nil, err
+ }
+ if _behavior[0] != strategy.Behavior().Byte() {
+ return nil, fmt.Errorf("invalid behavior")
+ }
+
+ // count
+ var count int64
+ err = binary.Read(reader, binary.BigEndian, &count)
+ if err != nil {
+ return nil, err
+ }
+
+ // extra (reserved for future using)
+ var length int64
+ err = binary.Read(reader, binary.BigEndian, &length)
+ if err != nil {
+ return nil, err
+ }
+ if length < 0 {
+ return nil, errors.New("length is invalid")
+ }
+ if length > 0 {
+ extra := make([]byte, length)
+ _, err = io.ReadFull(reader, extra)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ err = _strategy.FromMrs(reader, int(count))
+ return strategy, err
+ } else {
+ return nil, ErrInvalidFormat
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/parse.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/parse.go
new file mode 100644
index 0000000..3bd8f54
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/parse.go
@@ -0,0 +1,62 @@
+package provider
+
+import (
+ "errors"
+ "fmt"
+ "time"
+
+ "github.com/metacubex/mihomo/common/structure"
+ "github.com/metacubex/mihomo/component/resource"
+ C "github.com/metacubex/mihomo/constant"
+ P "github.com/metacubex/mihomo/constant/provider"
+)
+
+var (
+ errSubPath = errors.New("path is not subpath of home directory")
+)
+
+type ruleProviderSchema struct {
+ Type string `provider:"type"`
+ Behavior string `provider:"behavior"`
+ Path string `provider:"path,omitempty"`
+ URL string `provider:"url,omitempty"`
+ Proxy string `provider:"proxy,omitempty"`
+ Format string `provider:"format,omitempty"`
+ Interval int `provider:"interval,omitempty"`
+}
+
+func ParseRuleProvider(name string, mapping map[string]interface{}, parse func(tp, payload, target string, params []string, subRules map[string][]C.Rule) (parsed C.Rule, parseErr error)) (P.RuleProvider, error) {
+ schema := &ruleProviderSchema{}
+ decoder := structure.NewDecoder(structure.Option{TagName: "provider", WeaklyTypedInput: true})
+ if err := decoder.Decode(mapping, schema); err != nil {
+ return nil, err
+ }
+ behavior, err := P.ParseBehavior(schema.Behavior)
+ if err != nil {
+ return nil, err
+ }
+ format, err := P.ParseRuleFormat(schema.Format)
+ if err != nil {
+ return nil, err
+ }
+
+ var vehicle P.Vehicle
+ switch schema.Type {
+ case "file":
+ path := C.Path.Resolve(schema.Path)
+ vehicle = resource.NewFileVehicle(path)
+ case "http":
+ path := C.Path.GetPathByHash("rules", schema.URL)
+ if schema.Path != "" {
+ path = C.Path.Resolve(schema.Path)
+ if !C.Path.IsSafePath(path) {
+ return nil, fmt.Errorf("%w: %s", errSubPath, path)
+ }
+ }
+ vehicle = resource.NewHTTPVehicle(schema.URL, path, schema.Proxy, nil, resource.DefaultHttpTimeout)
+ default:
+ return nil, fmt.Errorf("unsupported vehicle type: %s", schema.Type)
+ }
+
+ return NewRuleSetProvider(name, behavior, format, time.Duration(uint(schema.Interval))*time.Second, vehicle, parse), nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/provider.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/provider.go
new file mode 100644
index 0000000..0cbf83b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/provider.go
@@ -0,0 +1,256 @@
+package provider
+
+import (
+ "bytes"
+ "encoding/json"
+ "errors"
+ "io"
+ "runtime"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/component/resource"
+ C "github.com/metacubex/mihomo/constant"
+ P "github.com/metacubex/mihomo/constant/provider"
+
+ "gopkg.in/yaml.v3"
+)
+
+var tunnel P.Tunnel
+
+func SetTunnel(t P.Tunnel) {
+ tunnel = t
+}
+
+type ruleSetProvider struct {
+ *resource.Fetcher[ruleStrategy]
+ behavior P.RuleBehavior
+ format P.RuleFormat
+ strategy ruleStrategy
+}
+
+type RuleSetProvider struct {
+ *ruleSetProvider
+}
+
+type RulePayload struct {
+ /**
+ key: Domain or IP Cidr
+ value: Rule type or is empty
+ */
+ Payload []string `yaml:"payload"`
+ Rules []string `yaml:"rules"`
+}
+
+type ruleStrategy interface {
+ Behavior() P.RuleBehavior
+ Match(metadata *C.Metadata) bool
+ Count() int
+ ShouldResolveIP() bool
+ ShouldFindProcess() bool
+ Reset()
+ Insert(rule string)
+ FinishInsert()
+}
+
+type mrsRuleStrategy interface {
+ ruleStrategy
+ FromMrs(r io.Reader, count int) error
+ WriteMrs(w io.Writer) error
+ DumpMrs(f func(key string) bool)
+}
+
+func (rp *ruleSetProvider) Type() P.ProviderType {
+ return P.Rule
+}
+
+func (rp *ruleSetProvider) Initial() error {
+ _, err := rp.Fetcher.Initial()
+ return err
+}
+
+func (rp *ruleSetProvider) Update() error {
+ _, _, err := rp.Fetcher.Update()
+ return err
+}
+
+func (rp *ruleSetProvider) Behavior() P.RuleBehavior {
+ return rp.behavior
+}
+
+func (rp *ruleSetProvider) Count() int {
+ return rp.strategy.Count()
+}
+
+func (rp *ruleSetProvider) Match(metadata *C.Metadata) bool {
+ return rp.strategy != nil && rp.strategy.Match(metadata)
+}
+
+func (rp *ruleSetProvider) ShouldResolveIP() bool {
+ return rp.strategy.ShouldResolveIP()
+}
+
+func (rp *ruleSetProvider) ShouldFindProcess() bool {
+ return rp.strategy.ShouldFindProcess()
+}
+
+func (rp *ruleSetProvider) Strategy() any {
+ return rp.strategy
+}
+
+func (rp *ruleSetProvider) MarshalJSON() ([]byte, error) {
+ return json.Marshal(
+ map[string]interface{}{
+ "behavior": rp.behavior.String(),
+ "format": rp.format.String(),
+ "name": rp.Name(),
+ "ruleCount": rp.strategy.Count(),
+ "type": rp.Type().String(),
+ "updatedAt": rp.UpdatedAt(),
+ "vehicleType": rp.VehicleType().String(),
+ })
+}
+
+func (rp *RuleSetProvider) Close() error {
+ runtime.SetFinalizer(rp, nil)
+ return rp.ruleSetProvider.Close()
+}
+
+func NewRuleSetProvider(name string, behavior P.RuleBehavior, format P.RuleFormat, interval time.Duration, vehicle P.Vehicle,
+ parse func(tp, payload, target string, params []string, subRules map[string][]C.Rule) (parsed C.Rule, parseErr error)) P.RuleProvider {
+ rp := &ruleSetProvider{
+ behavior: behavior,
+ format: format,
+ }
+
+ onUpdate := func(strategy ruleStrategy) {
+ rp.strategy = strategy
+ tunnel.RuleUpdateCallback().Emit(rp)
+ }
+
+ rp.strategy = newStrategy(behavior, parse)
+ rp.Fetcher = resource.NewFetcher(name, interval, vehicle, func(bytes []byte) (ruleStrategy, error) {
+ return rulesParse(bytes, newStrategy(behavior, parse), format)
+ }, onUpdate)
+
+ wrapper := &RuleSetProvider{
+ rp,
+ }
+
+ runtime.SetFinalizer(wrapper, (*RuleSetProvider).Close)
+ return wrapper
+}
+
+func newStrategy(behavior P.RuleBehavior, parse func(tp, payload, target string, params []string, subRules map[string][]C.Rule) (parsed C.Rule, parseErr error)) ruleStrategy {
+ switch behavior {
+ case P.Domain:
+ strategy := NewDomainStrategy()
+ return strategy
+ case P.IPCIDR:
+ strategy := NewIPCidrStrategy()
+ return strategy
+ case P.Classical:
+ strategy := NewClassicalStrategy(parse)
+ return strategy
+ default:
+ return nil
+ }
+}
+
+var ErrNoPayload = errors.New("file must have a `payload` field")
+var ErrInvalidFormat = errors.New("invalid format")
+
+func rulesParse(buf []byte, strategy ruleStrategy, format P.RuleFormat) (ruleStrategy, error) {
+ strategy.Reset()
+ if format == P.MrsRule {
+ return rulesMrsParse(buf, strategy)
+ }
+
+ schema := &RulePayload{}
+
+ firstLineBuffer := pool.GetBuffer()
+ defer pool.PutBuffer(firstLineBuffer)
+ firstLineLength := 0
+
+ s := 0 // search start index
+ for s < len(buf) {
+ // search buffer for a new line.
+ line := buf[s:]
+ if i := bytes.IndexByte(line, '\n'); i >= 0 {
+ i += s
+ line = buf[s : i+1]
+ s = i + 1
+ } else {
+ s = len(buf) // stop loop in next step
+ if firstLineLength == 0 && format == P.YamlRule { // no head or only one line body
+ return nil, ErrNoPayload
+ }
+ }
+ var str string
+ switch format {
+ case P.TextRule:
+ str = string(line)
+ str = strings.TrimSpace(str)
+ if len(str) == 0 {
+ continue
+ }
+ if str[0] == '#' { // comment
+ continue
+ }
+ if strings.HasPrefix(str, "//") { // comment in Premium core
+ continue
+ }
+ case P.YamlRule:
+ trimLine := bytes.TrimSpace(line)
+ if len(trimLine) == 0 {
+ continue
+ }
+ if trimLine[0] == '#' { // comment
+ continue
+ }
+ firstLineBuffer.Write(line)
+ if firstLineLength == 0 { // find payload head
+ firstLineLength = firstLineBuffer.Len()
+ firstLineBuffer.WriteString(" - ''") // a test line
+
+ err := yaml.Unmarshal(firstLineBuffer.Bytes(), schema)
+ firstLineBuffer.Truncate(firstLineLength)
+ if err == nil && (len(schema.Rules) > 0 || len(schema.Payload) > 0) { // found
+ continue
+ }
+
+ // not found or err!=nil
+ firstLineBuffer.Truncate(0)
+ firstLineLength = 0
+ continue
+ }
+
+ // parse payload body
+ err := yaml.Unmarshal(firstLineBuffer.Bytes(), schema)
+ firstLineBuffer.Truncate(firstLineLength)
+ if err != nil {
+ continue
+ }
+
+ if len(schema.Rules) > 0 {
+ str = schema.Rules[0]
+ }
+ if len(schema.Payload) > 0 {
+ str = schema.Payload[0]
+ }
+ default:
+ return nil, ErrInvalidFormat
+ }
+
+ if str == "" {
+ continue
+ }
+
+ strategy.Insert(str)
+ }
+
+ strategy.FinishInsert()
+
+ return strategy, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/rule_set.go b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/rule_set.go
new file mode 100644
index 0000000..2ad0bd3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/rules/provider/rule_set.go
@@ -0,0 +1,93 @@
+package provider
+
+import (
+ "net/netip"
+
+ C "github.com/metacubex/mihomo/constant"
+ P "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/rules/common"
+)
+
+type RuleSet struct {
+ *common.Base
+ ruleProviderName string
+ adapter string
+ isSrc bool
+ noResolveIP bool
+ shouldFindProcess bool
+}
+
+func (rs *RuleSet) ShouldFindProcess() bool {
+ if rs.shouldFindProcess {
+ return true
+ }
+ if provider, ok := rs.getProvider(); ok {
+ return provider.ShouldFindProcess()
+ }
+ return false
+}
+
+func (rs *RuleSet) RuleType() C.RuleType {
+ return C.RuleSet
+}
+
+func (rs *RuleSet) Match(metadata *C.Metadata) (bool, string) {
+ if provider, ok := rs.getProvider(); ok {
+ if rs.isSrc {
+ metadata.SwapSrcDst()
+ defer metadata.SwapSrcDst()
+ }
+ return provider.Match(metadata), rs.adapter
+ }
+ return false, ""
+}
+
+// MatchDomain implements C.DomainMatcher
+func (rs *RuleSet) MatchDomain(domain string) bool {
+ ok, _ := rs.Match(&C.Metadata{Host: domain})
+ return ok
+}
+
+// MatchIp implements C.IpMatcher
+func (rs *RuleSet) MatchIp(ip netip.Addr) bool {
+ ok, _ := rs.Match(&C.Metadata{DstIP: ip})
+ return ok
+}
+
+func (rs *RuleSet) Adapter() string {
+ return rs.adapter
+}
+
+func (rs *RuleSet) Payload() string {
+ return rs.ruleProviderName
+}
+
+func (rs *RuleSet) ShouldResolveIP() bool {
+ if rs.noResolveIP {
+ return false
+ }
+ if provider, ok := rs.getProvider(); ok {
+ return provider.ShouldResolveIP()
+ }
+ return false
+}
+
+func (rs *RuleSet) ProviderNames() []string {
+ return []string{rs.ruleProviderName}
+}
+
+func (rs *RuleSet) getProvider() (P.RuleProvider, bool) {
+ pp, ok := tunnel.RuleProviders()[rs.ruleProviderName]
+ return pp, ok
+}
+
+func NewRuleSet(ruleProviderName string, adapter string, isSrc bool, noResolveIP bool) (*RuleSet, error) {
+ rs := &RuleSet{
+ Base: &common.Base{},
+ ruleProviderName: ruleProviderName,
+ adapter: adapter,
+ isSrc: isSrc,
+ noResolveIP: noResolveIP,
+ }
+ return rs, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/.golangci.yaml b/Android-kotlin-Code/core/src/foss/golang/clash/test/.golangci.yaml
new file mode 100644
index 0000000..e1fbbf7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/.golangci.yaml
@@ -0,0 +1,16 @@
+linters:
+ disable-all: true
+ enable:
+ - gofumpt
+ - govet
+ - gci
+ - staticcheck
+
+linters-settings:
+ gci:
+ sections:
+ - standard
+ - prefix(github.com/metacubex/mihomo)
+ - default
+ staticcheck:
+ go: '1.19'
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/Makefile b/Android-kotlin-Code/core/src/foss/golang/clash/test/Makefile
new file mode 100644
index 0000000..d238be0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/Makefile
@@ -0,0 +1,9 @@
+lint:
+ GOOS=darwin golangci-lint run ./...
+ GOOS=linux golangci-lint run ./...
+
+test:
+ go test -p 1 -v ./...
+
+benchmark:
+ go test -benchmem -run=^$$ -bench .
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/README.md b/Android-kotlin-Code/core/src/foss/golang/clash/test/README.md
new file mode 100644
index 0000000..e9fa563
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/README.md
@@ -0,0 +1,59 @@
+## Mihomo testing suit
+
+### Protocol testing suit
+
+* TCP pingpong test
+* UDP pingpong test
+* TCP large data test
+* UDP large data test
+
+### Protocols
+
+- [x] Shadowsocks
+ - [x] Normal
+ - [x] ObfsHTTP
+ - [x] ObfsTLS
+ - [x] ObfsV2rayPlugin
+- [x] Vmess
+ - [x] Normal
+ - [x] AEAD
+ - [x] HTTP
+ - [x] HTTP2
+ - [x] TLS
+ - [x] Websocket
+ - [x] Websocket TLS
+ - [x] gRPC
+- [x] Trojan
+ - [x] Normal
+ - [x] gRPC
+- [x] Snell
+ - [x] Normal
+ - [x] ObfsHTTP
+ - [x] ObfsTLS
+
+### Features
+
+- [ ] DNS
+ - [x] DNS Server
+ - [x] FakeIP
+ - [x] Host
+
+### Command
+
+Prerequisite
+
+* docker (support Linux and macOS)
+
+```
+$ make test
+```
+
+benchmark (Linux)
+
+> Cannot represent the throughput of the protocol on your machine
+> but you can compare the corresponding throughput of the protocol on mihomo
+> (change chunkSize to measure the maximum throughput of mihomo on your machine)
+
+```
+$ make benchmark
+```
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/clash_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/clash_test.go
new file mode 100644
index 0000000..90ac9d2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/clash_test.go
@@ -0,0 +1,678 @@
+package main
+
+import (
+ "context"
+ "crypto/md5"
+ "crypto/rand"
+ "errors"
+ "fmt"
+ "io"
+ "net"
+ "net/netip"
+ "os"
+ "path/filepath"
+ "runtime"
+ "sync"
+ "testing"
+ "time"
+
+ "github.com/docker/docker/api/types"
+ "github.com/docker/docker/client"
+ "github.com/docker/go-connections/nat"
+ "github.com/metacubex/mihomo/adapter/outbound"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/hub/executor"
+ "github.com/metacubex/mihomo/transport/socks5"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+const (
+ ImageShadowsocks = "mritd/shadowsocks:latest"
+ ImageShadowsocksRust = "ghcr.io/shadowsocks/ssserver-rust:latest"
+ ImageVmess = "v2fly/v2fly-core:v4.45.2"
+ ImageVmessLatest = "sagernet/v2fly-core:latest"
+ ImageVless = "teddysun/xray:latest"
+ ImageTrojan = "trojangfw/trojan:latest"
+ ImageTrojanGo = "p4gefau1t/trojan-go:latest"
+ ImageSnell = "ghcr.io/icpz/snell-server:latest"
+ ImageXray = "teddysun/xray:latest"
+ ImageHysteria = "tobyxdd/hysteria:latest"
+)
+
+var (
+ waitTime = time.Second
+ localIP = netip.MustParseAddr("127.0.0.1")
+
+ defaultExposedPorts = nat.PortSet{
+ "10002/tcp": struct{}{},
+ "10002/udp": struct{}{},
+ }
+ defaultPortBindings = nat.PortMap{
+ "10002/tcp": []nat.PortBinding{
+ {HostPort: "10002", HostIP: "0.0.0.0"},
+ },
+ "10002/udp": []nat.PortBinding{
+ {HostPort: "10002", HostIP: "0.0.0.0"},
+ },
+ }
+ isDarwin = runtime.GOOS == "darwin"
+)
+
+func init() {
+ currentDir, err := os.Getwd()
+ if err != nil {
+ panic(err)
+ }
+ homeDir := filepath.Join(currentDir, "config")
+ C.SetHomeDir(homeDir)
+
+ if isDarwin {
+ localIP, err = defaultRouteIP()
+ if err != nil {
+ panic(err)
+ }
+ }
+
+ c, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
+ if err != nil {
+ panic(err)
+ }
+ defer c.Close()
+
+ list, err := c.ImageList(context.Background(), types.ImageListOptions{All: true})
+ if err != nil {
+ panic(err)
+ }
+
+ imageExist := func(image string) bool {
+ for _, item := range list {
+ for _, tag := range item.RepoTags {
+ if image == tag {
+ return true
+ }
+ }
+ }
+ return false
+ }
+
+ images := []string{
+ ImageShadowsocks,
+ ImageShadowsocksRust,
+ ImageVmess,
+ ImageVless,
+ ImageTrojan,
+ ImageTrojanGo,
+ ImageSnell,
+ ImageXray,
+ ImageHysteria,
+ }
+
+ for _, image := range images {
+ if imageExist(image) {
+ continue
+ }
+
+ println("pulling image:", image)
+ imageStream, err := c.ImagePull(context.Background(), image, types.ImagePullOptions{})
+ if err != nil {
+ panic(err)
+ }
+
+ io.Copy(io.Discard, imageStream)
+ }
+}
+
+var clean = `
+port: 0
+socks-port: 0
+mixed-port: 0
+redir-port: 0
+tproxy-port: 0
+dns:
+ enable: false
+`
+
+func cleanup() {
+ parseAndApply(clean)
+}
+
+func parseAndApply(cfgStr string) error {
+ cfg, err := executor.ParseWithBytes([]byte(cfgStr))
+ if err != nil {
+ return err
+ }
+
+ executor.ApplyConfig(cfg, true)
+ return nil
+}
+
+func newPingPongPair() (chan []byte, chan []byte, func(t *testing.T) error) {
+ pingCh := make(chan []byte)
+ pongCh := make(chan []byte)
+ test := func(t *testing.T) error {
+ defer close(pingCh)
+ defer close(pongCh)
+ pingOpen := false
+ pongOpen := false
+ var recv []byte
+
+ for {
+ if pingOpen && pongOpen {
+ break
+ }
+
+ select {
+ case recv, pingOpen = <-pingCh:
+ assert.True(t, pingOpen)
+ assert.Equal(t, []byte("ping"), recv)
+ case recv, pongOpen = <-pongCh:
+ assert.True(t, pongOpen)
+ assert.Equal(t, []byte("pong"), recv)
+ case <-time.After(10 * time.Second):
+ return errors.New("timeout")
+ }
+ }
+ return nil
+ }
+
+ return pingCh, pongCh, test
+}
+
+func newLargeDataPair() (chan hashPair, chan hashPair, func(t *testing.T) error) {
+ pingCh := make(chan hashPair)
+ pongCh := make(chan hashPair)
+ test := func(t *testing.T) error {
+ defer close(pingCh)
+ defer close(pongCh)
+ pingOpen := false
+ pongOpen := false
+ var serverPair hashPair
+ var clientPair hashPair
+
+ for {
+ if pingOpen && pongOpen {
+ break
+ }
+
+ select {
+ case serverPair, pingOpen = <-pingCh:
+ assert.True(t, pingOpen)
+ case clientPair, pongOpen = <-pongCh:
+ assert.True(t, pongOpen)
+ case <-time.After(10 * time.Second):
+ return errors.New("timeout")
+ }
+ }
+
+ assert.Equal(t, serverPair.recvHash, clientPair.sendHash)
+ assert.Equal(t, serverPair.sendHash, clientPair.recvHash)
+
+ return nil
+ }
+
+ return pingCh, pongCh, test
+}
+
+func testPingPongWithSocksPort(t *testing.T, port int) {
+ pingCh, pongCh, test := newPingPongPair()
+ go func() {
+ l, err := Listen("tcp", ":10001")
+ require.NoError(t, err)
+ defer l.Close()
+
+ c, err := l.Accept()
+ require.NoError(t, err)
+
+ buf := make([]byte, 4)
+ _, err = io.ReadFull(c, buf)
+ require.NoError(t, err)
+
+ pingCh <- buf
+ _, err = c.Write([]byte("pong"))
+ require.NoError(t, err)
+ }()
+
+ go func() {
+ c, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", port))
+ require.NoError(t, err)
+ defer c.Close()
+
+ _, err = socks5.ClientHandshake(c, socks5.ParseAddr("127.0.0.1:10001"), socks5.CmdConnect, nil)
+ require.NoError(t, err)
+
+ _, err = c.Write([]byte("ping"))
+ require.NoError(t, err)
+
+ buf := make([]byte, 4)
+ _, err = io.ReadFull(c, buf)
+ require.NoError(t, err)
+
+ pongCh <- buf
+ }()
+
+ test(t)
+}
+
+func testPingPongWithConn(t *testing.T, cc func() net.Conn) error {
+ l, err := Listen("tcp", ":10001")
+ if err != nil {
+ return err
+ }
+ defer l.Close()
+
+ pingCh, pongCh, test := newPingPongPair()
+ go func() {
+ c, err := l.Accept()
+ if err != nil {
+ return
+ }
+
+ buf := make([]byte, 4)
+ if _, err := io.ReadFull(c, buf); err != nil {
+ return
+ }
+
+ pingCh <- buf
+ if _, err := c.Write([]byte("pong")); err != nil {
+ return
+ }
+ }()
+
+ c := cc()
+ defer c.Close()
+
+ go func() {
+ if _, err := c.Write([]byte("ping")); err != nil {
+ return
+ }
+
+ buf := make([]byte, 4)
+ if _, err := io.ReadFull(c, buf); err != nil {
+ t.Error(err)
+ return
+ }
+
+ pongCh <- buf
+ }()
+
+ return test(t)
+}
+
+func testPingPongWithPacketConn(t *testing.T, pc net.PacketConn) error {
+ l, err := ListenPacket("udp", ":10001")
+ require.NoError(t, err)
+ defer l.Close()
+
+ rAddr := &net.UDPAddr{IP: localIP.AsSlice(), Port: 10001}
+
+ pingCh, pongCh, test := newPingPongPair()
+ go func() {
+ buf := make([]byte, 1024)
+ n, rAddr, err := l.ReadFrom(buf)
+ if err != nil {
+ return
+ }
+
+ pingCh <- buf[:n]
+ if _, err := l.WriteTo([]byte("pong"), rAddr); err != nil {
+ return
+ }
+ }()
+
+ go func() {
+ if _, err := pc.WriteTo([]byte("ping"), rAddr); err != nil {
+ return
+ }
+
+ buf := make([]byte, 1024)
+ n, _, err := pc.ReadFrom(buf)
+ if err != nil {
+ return
+ }
+
+ pongCh <- buf[:n]
+ }()
+
+ return test(t)
+}
+
+type hashPair struct {
+ sendHash map[int][]byte
+ recvHash map[int][]byte
+}
+
+func testLargeDataWithConn(t *testing.T, cc func() net.Conn) error {
+ l, err := Listen("tcp", ":10001")
+ require.NoError(t, err)
+ defer l.Close()
+
+ times := 100
+ chunkSize := int64(64 * 1024)
+
+ pingCh, pongCh, test := newLargeDataPair()
+ writeRandData := func(conn net.Conn) (map[int][]byte, error) {
+ buf := make([]byte, chunkSize)
+ hashMap := map[int][]byte{}
+ for i := 0; i < times; i++ {
+ if _, err := rand.Read(buf[1:]); err != nil {
+ return nil, err
+ }
+ buf[0] = byte(i)
+
+ hash := md5.Sum(buf)
+ hashMap[i] = hash[:]
+
+ if _, err := conn.Write(buf); err != nil {
+ return nil, err
+ }
+ }
+
+ return hashMap, nil
+ }
+
+ go func() {
+ c, err := l.Accept()
+ if err != nil {
+ return
+ }
+ defer c.Close()
+
+ hashMap := map[int][]byte{}
+ buf := make([]byte, chunkSize)
+
+ for i := 0; i < times; i++ {
+ _, err := io.ReadFull(c, buf)
+ if err != nil {
+ t.Log(err.Error())
+ return
+ }
+
+ hash := md5.Sum(buf)
+ hashMap[int(buf[0])] = hash[:]
+ }
+
+ sendHash, err := writeRandData(c)
+ if err != nil {
+ t.Log(err.Error())
+ return
+ }
+
+ pingCh <- hashPair{
+ sendHash: sendHash,
+ recvHash: hashMap,
+ }
+ }()
+
+ c := cc()
+ defer c.Close()
+
+ go func() {
+ sendHash, err := writeRandData(c)
+ if err != nil {
+ t.Log(err.Error())
+ return
+ }
+
+ hashMap := map[int][]byte{}
+ buf := make([]byte, chunkSize)
+
+ for i := 0; i < times; i++ {
+ _, err := io.ReadFull(c, buf)
+ if err != nil {
+ t.Log(err.Error())
+ return
+ }
+
+ hash := md5.Sum(buf)
+ hashMap[int(buf[0])] = hash[:]
+ }
+
+ pongCh <- hashPair{
+ sendHash: sendHash,
+ recvHash: hashMap,
+ }
+ }()
+
+ return test(t)
+}
+
+func testLargeDataWithPacketConn(t *testing.T, pc net.PacketConn) error {
+ l, err := ListenPacket("udp", ":10001")
+ require.NoError(t, err)
+ defer l.Close()
+
+ rAddr := &net.UDPAddr{IP: localIP.AsSlice(), Port: 10001}
+
+ times := 50
+ chunkSize := int64(1024)
+
+ pingCh, pongCh, test := newLargeDataPair()
+ writeRandData := func(pc net.PacketConn, addr net.Addr) (map[int][]byte, error) {
+ hashMap := map[int][]byte{}
+ mux := sync.Mutex{}
+ go func() {
+ for i := 0; i < times; i++ {
+ buf := make([]byte, chunkSize)
+ if _, err := rand.Read(buf[1:]); err != nil {
+ t.Log(err.Error())
+ return
+ }
+ buf[0] = byte(i)
+
+ hash := md5.Sum(buf)
+ mux.Lock()
+ hashMap[i] = hash[:]
+ mux.Unlock()
+
+ if _, err := pc.WriteTo(buf, addr); err != nil {
+ t.Log(err.Error())
+ return
+ }
+ }
+ }()
+
+ return hashMap, nil
+ }
+
+ go func() {
+ var rAddr net.Addr
+ hashMap := map[int][]byte{}
+ buf := make([]byte, 64*1024)
+
+ for i := 0; i < times; i++ {
+ _, rAddr, err = l.ReadFrom(buf)
+ if err != nil {
+ t.Log(err.Error())
+ return
+ }
+
+ hash := md5.Sum(buf[:chunkSize])
+ hashMap[int(buf[0])] = hash[:]
+ }
+
+ sendHash, err := writeRandData(l, rAddr)
+ if err != nil {
+ t.Log(err.Error())
+ return
+ }
+
+ pingCh <- hashPair{
+ sendHash: sendHash,
+ recvHash: hashMap,
+ }
+ }()
+
+ go func() {
+ sendHash, err := writeRandData(pc, rAddr)
+ if err != nil {
+ t.Log(err.Error())
+ return
+ }
+
+ hashMap := map[int][]byte{}
+ buf := make([]byte, 64*1024)
+
+ for i := 0; i < times; i++ {
+ _, _, err := pc.ReadFrom(buf)
+ if err != nil {
+ t.Log(err.Error())
+ return
+ }
+
+ hash := md5.Sum(buf[:chunkSize])
+ hashMap[int(buf[0])] = hash[:]
+ }
+
+ pongCh <- hashPair{
+ sendHash: sendHash,
+ recvHash: hashMap,
+ }
+ }()
+
+ return test(t)
+}
+
+func testPacketConnTimeout(t *testing.T, pc net.PacketConn) error {
+ err := pc.SetReadDeadline(time.Now().Add(time.Millisecond * 300))
+ require.NoError(t, err)
+
+ errCh := make(chan error, 1)
+ go func() {
+ buf := make([]byte, 1024)
+ _, _, err := pc.ReadFrom(buf)
+ errCh <- err
+ }()
+
+ select {
+ case <-errCh:
+ return nil
+ case <-time.After(time.Second * 10):
+ return errors.New("timeout")
+ }
+}
+
+func testSuit(t *testing.T, proxy C.ProxyAdapter) {
+ assert.NoError(t, testPingPongWithConn(t, func() net.Conn {
+ conn, err := proxy.DialContext(context.Background(), &C.Metadata{
+ Host: localIP.String(),
+ DstPort: 10001,
+ })
+ require.NoError(t, err)
+ return conn
+ }))
+
+ assert.NoError(t, testLargeDataWithConn(t, func() net.Conn {
+ conn, err := proxy.DialContext(context.Background(), &C.Metadata{
+ Host: localIP.String(),
+ DstPort: 10001,
+ })
+ require.NoError(t, err)
+ return conn
+ }))
+
+ if !proxy.SupportUDP() {
+ return
+ }
+
+ pc, err := proxy.ListenPacketContext(context.Background(), &C.Metadata{
+ NetWork: C.UDP,
+ DstIP: localIP,
+ DstPort: 10001,
+ })
+ require.NoError(t, err)
+ defer pc.Close()
+
+ assert.NoError(t, testPingPongWithPacketConn(t, pc))
+
+ pc, err = proxy.ListenPacketContext(context.Background(), &C.Metadata{
+ NetWork: C.UDP,
+ DstIP: localIP,
+ DstPort: 10001,
+ })
+ require.NoError(t, err)
+ defer pc.Close()
+
+ assert.NoError(t, testLargeDataWithPacketConn(t, pc))
+
+ pc, err = proxy.ListenPacketContext(context.Background(), &C.Metadata{
+ NetWork: C.UDP,
+ DstIP: localIP,
+ DstPort: 10001,
+ })
+ require.NoError(t, err)
+ defer pc.Close()
+
+ assert.NoError(t, testPacketConnTimeout(t, pc))
+}
+
+func benchmarkProxy(b *testing.B, proxy C.ProxyAdapter) {
+ l, err := Listen("tcp", ":10001")
+ require.NoError(b, err)
+ defer l.Close()
+
+ chunkSize := int64(16 * 1024)
+ chunk := make([]byte, chunkSize)
+ rand.Read(chunk)
+
+ go func() {
+ c, err := l.Accept()
+ if err != nil {
+ return
+ }
+ defer c.Close()
+
+ go func() {
+ for {
+ _, err := c.Write(chunk)
+ if err != nil {
+ return
+ }
+ }
+ }()
+ io.Copy(io.Discard, c)
+ }()
+
+ conn, err := proxy.DialContext(context.Background(), &C.Metadata{
+ Host: localIP.String(),
+ DstPort: 10001,
+ })
+ require.NoError(b, err)
+
+ _, err = conn.Write([]byte("skip protocol handshake"))
+ require.NoError(b, err)
+
+ b.Run("Write", func(b *testing.B) {
+ b.SetBytes(chunkSize)
+ for i := 0; i < b.N; i++ {
+ conn.Write(chunk)
+ }
+ })
+
+ b.Run("Read", func(b *testing.B) {
+ b.SetBytes(chunkSize)
+ buf := make([]byte, chunkSize)
+ for i := 0; i < b.N; i++ {
+ io.ReadFull(conn, buf)
+ }
+ })
+}
+
+func TestMihomo_Basic(t *testing.T) {
+ basic := `
+mixed-port: 10000
+log-level: silent
+`
+
+ err := parseAndApply(basic)
+ require.NoError(t, err)
+ defer cleanup()
+
+ require.True(t, TCPing(net.JoinHostPort(localIP.String(), "10000")))
+ testPingPongWithSocksPort(t, 10000)
+}
+
+func Benchmark_Direct(b *testing.B) {
+ proxy := outbound.NewDirect()
+ benchmarkProxy(b, proxy)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/example.org-key.pem b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/example.org-key.pem
new file mode 100644
index 0000000..dbe9a3d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/example.org-key.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDQ+c++LkDTdaw5
+5spCu9MWMcvVdrYBZZ5qZy7DskphSUSQp25cIu34GJXVPNxtbWx1CQCmdLlwqXvo
+PfUt5/pz9qsfhdAbzFduZQgGd7GTQOTJBDrAhm2+iVsQyGHHhF68muN+SgT+AtRE
+sJyZoHNYtjjWEIHQ++FHEDqwUVnj6Ut99LHlyfCjOZ5+WyBiKCjyMNots/gDep7R
+i4X2kMTqNMIIqPUcAaP5EQk41bJbFhKe915qN9b1dRISKFKmiWeOsxgTB/O/EaL5
+LsBYwZ/BiIMDk30aZvzRJeloasIR3z4hrKQqBfB0lfeIdiPpJIs5rXJQEiWH89ge
+gplsLbfrAgMBAAECggEBAKpMGaZzDPMF/v8Ee6lcZM2+cMyZPALxa+JsCakCvyh+
+y7hSKVY+RM0cQ+YM/djTBkJtvrDniEMuasI803PAitI7nwJGSuyMXmehP6P9oKFO
+jeLeZn6ETiSqzKJlmYE89vMeCevdqCnT5mW/wy5Smg0eGj0gIJpM2S3PJPSQpv9Z
+ots0JXkwooJcpGWzlwPkjSouY2gDbE4Coi+jmYLNjA1k5RbggcutnUCZZkJ6yMNv
+H52VjnkffpAFHRouK/YgF+5nbMyyw5YTLOyTWBq7qfBMsXynkWLU73GC/xDZa3yG
+o/Ph2knXCjgLmCRessTOObdOXedjnGWIjiqF8fVboDECgYEA6x5CteYiwthDBULZ
+CG5nE9VKkRHJYdArm+VjmGbzK51tKli112avmU4r3ol907+mEa4tWLkPqdZrrL49
+aHltuHizZJixJcw0rcI302ot/Ov0gkF9V55gnAQS/Kemvx9FHWm5NHdYvbObzj33
+bYRLJBtJWzYg9M8Bw9ZrUnegc/MCgYEA44kq5OSYCbyu3eaX8XHTtFhuQHNFjwl7
+Xk/Oel6PVZzmt+oOlDHnOfGSB/KpR3YXxFRngiiPZzbrOwFyPGe7HIfg03HAXiJh
+ivEfrPHbQqQUI/4b44GpDy6bhNtz777ivFGYEt21vpwd89rFiye+RkqF8eL/evxO
+pUayDZYvwikCgYEA07wFoZ/lkAiHmpZPsxsRcrfzFd+pto9splEWtumHdbCo3ajT
+4W5VFr9iHF8/VFDT8jokFjFaXL1/bCpKTOqFl8oC68XiSkKy8gPkmFyXm5y2LhNi
+GGTFZdr5alRkgttbN5i9M/WCkhvMZRhC2Xp43MRB9IUzeqNtWHqhXbvjYGcCgYEA
+vTMOztviLJ6PjYa0K5lp31l0+/SeD21j/y0/VPOSHi9kjeN7EfFZAw6DTkaSShDB
+fIhutYVCkSHSgfMW6XGb3gKCiW/Z9KyEDYOowicuGgDTmoYu7IOhbzVjLhtJET7Z
+zJvQZ0eiW4f3RBFTF/4JMuu+6z7FD6ADSV06qx+KQNkCgYBw26iQxmT5e/4kVv8X
+DzBJ1HuliKBnnzZA1YRjB4H8F6Yrq+9qur1Lurez4YlbkGV8yPFt+Iu82ViUWL28
+9T7Jgp3TOpf8qOqsWFv8HldpEZbE0Tcib4x6s+zOg/aw0ac/xOPY1sCVFB81VODP
+XCar+uxMBXI1zbXqd9QdEwy4Ig==
+-----END PRIVATE KEY-----
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/example.org.pem b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/example.org.pem
new file mode 100644
index 0000000..9b99259
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/example.org.pem
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIESzCCArOgAwIBAgIQIi5xRZvFZaSweWU9Y5mExjANBgkqhkiG9w0BAQsFADCB
+hzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMS4wLAYDVQQLDCVkcmVh
+bWFjcm9ARHJlYW1hY3JvLmxvY2FsIChEcmVhbWFjcm8pMTUwMwYDVQQDDCxta2Nl
+cnQgZHJlYW1hY3JvQERyZWFtYWNyby5sb2NhbCAoRHJlYW1hY3JvKTAeFw0yMTAz
+MTcxNDQwMzZaFw0yMzA2MTcxNDQwMzZaMFkxJzAlBgNVBAoTHm1rY2VydCBkZXZl
+bG9wbWVudCBjZXJ0aWZpY2F0ZTEuMCwGA1UECwwlZHJlYW1hY3JvQERyZWFtYWNy
+by5sb2NhbCAoRHJlYW1hY3JvKTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAND5z74uQNN1rDnmykK70xYxy9V2tgFlnmpnLsOySmFJRJCnblwi7fgYldU8
+3G1tbHUJAKZ0uXCpe+g99S3n+nP2qx+F0BvMV25lCAZ3sZNA5MkEOsCGbb6JWxDI
+YceEXrya435KBP4C1ESwnJmgc1i2ONYQgdD74UcQOrBRWePpS330seXJ8KM5nn5b
+IGIoKPIw2i2z+AN6ntGLhfaQxOo0wgio9RwBo/kRCTjVslsWEp73Xmo31vV1EhIo
+UqaJZ46zGBMH878RovkuwFjBn8GIgwOTfRpm/NEl6WhqwhHfPiGspCoF8HSV94h2
+I+kkizmtclASJYfz2B6CmWwtt+sCAwEAAaNgMF4wDgYDVR0PAQH/BAQDAgWgMBMG
+A1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFO800LQ6Pa85RH4EbMmFH6ln
+F150MBYGA1UdEQQPMA2CC2V4YW1wbGUub3JnMA0GCSqGSIb3DQEBCwUAA4IBgQAP
+TsF53h7bvJcUXT3Y9yZ2vnW6xr9r92tNnM1Gfo3D2Yyn9oLf2YrfJng6WZ04Fhqa
+Wh0HOvE0n6yPNpm/Q7mh64DrgolZ8Ce5H4RTJDAabHU9XhEzfGSVtzRSFsz+szu1
+Y30IV+08DxxqMmNPspYdpAET2Lwyk2WhnARGiGw11CRkQCEkVEe6d702vS9UGBUz
+Du6lmCYCm0SbFrZ0CGgmHSHoTcCtf3EjVam7dPg3yWiPbWjvhXxgip6hz9sCqkhG
+WA5f+fPgSZ1I9U4i+uYnqjfrzwgC08RwUYordm15F6gPvXw+KVwDO8yUYQoEH0b6
+AFJtbzoAXDysvBC6kWYFFOr62EaisaEkELTS/NrPD9ux1eKbxcxHCwEtVjgC0CL6
+gAxEAQ+9maJMbrAFhsOBbGGFC+mMCGg4eEyx6+iMB0oQe0W7QFeRUAFi7Ptc/ocS
+tZ9lbrfX1/wrcTTWIYWE+xH6oeb4fhs29kxjHcf2l+tQzmpl0aP3Z/bMW4BSB+w=
+-----END CERTIFICATE-----
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/hysteria.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/hysteria.json
new file mode 100644
index 0000000..928d96a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/hysteria.json
@@ -0,0 +1,8 @@
+{
+ "listen": ":10002",
+ "cert": "/home/ubuntu/my.crt",
+ "key": "/home/ubuntu/my.key",
+ "obfs": "fuck me till the daylight",
+ "up_mbps": 100,
+ "down_mbps": 100
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/snell-http.conf b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/snell-http.conf
new file mode 100644
index 0000000..f5130dc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/snell-http.conf
@@ -0,0 +1,4 @@
+[snell-server]
+listen = 0.0.0.0:10002
+psk = password
+obfs = http
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/snell-tls.conf b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/snell-tls.conf
new file mode 100644
index 0000000..bf8b513
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/snell-tls.conf
@@ -0,0 +1,4 @@
+[snell-server]
+listen = 0.0.0.0:10002
+psk = password
+obfs = tls
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/snell.conf b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/snell.conf
new file mode 100644
index 0000000..4026639
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/snell.conf
@@ -0,0 +1,3 @@
+[snell-server]
+listen = 0.0.0.0:10002
+psk = password
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan-grpc.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan-grpc.json
new file mode 100644
index 0000000..eb0dcc9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan-grpc.json
@@ -0,0 +1,40 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "trojan",
+ "settings": {
+ "clients": [
+ {
+ "password": "example",
+ "email": "grpc@example.com"
+ }
+ ]
+ },
+ "streamSettings": {
+ "network": "grpc",
+ "security": "tls",
+ "tlsSettings": {
+ "certificates": [
+ {
+ "certificateFile": "/etc/ssl/v2ray/fullchain.pem",
+ "keyFile": "/etc/ssl/v2ray/privkey.pem"
+ }
+ ]
+ },
+ "grpcSettings": {
+ "serviceName": "example"
+ }
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ],
+ "log": {
+ "loglevel": "debug"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan-ws.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan-ws.json
new file mode 100644
index 0000000..efc0acb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan-ws.json
@@ -0,0 +1,20 @@
+{
+ "run_type": "server",
+ "local_addr": "0.0.0.0",
+ "local_port": 10002,
+ "disable_http_check": true,
+ "password": [
+ "example"
+ ],
+ "websocket": {
+ "enabled": true,
+ "path": "/",
+ "host": "example.org"
+ },
+ "ssl": {
+ "verify": true,
+ "cert": "/fullchain.pem",
+ "key": "/privkey.pem",
+ "sni": "example.org"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan-xtls.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan-xtls.json
new file mode 100644
index 0000000..c3a72ee
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan-xtls.json
@@ -0,0 +1,39 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "trojan",
+ "settings": {
+ "clients": [
+ {
+ "password": "example",
+ "email": "xtls@example.com",
+ "flow": "xtls-rprx-direct",
+ "level": 0
+ }
+ ]
+ },
+ "streamSettings": {
+ "network": "tcp",
+ "security": "xtls",
+ "xtlsSettings": {
+ "certificates": [
+ {
+ "certificateFile": "/etc/ssl/v2ray/fullchain.pem",
+ "keyFile": "/etc/ssl/v2ray/privkey.pem"
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ],
+ "log": {
+ "loglevel": "debug"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan.json
new file mode 100644
index 0000000..18e33a9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/trojan.json
@@ -0,0 +1,40 @@
+{
+ "run_type": "server",
+ "local_addr": "0.0.0.0",
+ "local_port": 10002,
+ "password": [
+ "password"
+ ],
+ "log_level": 1,
+ "ssl": {
+ "cert": "/path/to/certificate.crt",
+ "key": "/path/to/private.key",
+ "key_password": "",
+ "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384",
+ "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
+ "prefer_server_cipher": true,
+ "alpn": [
+ "http/1.1"
+ ],
+ "alpn_port_override": {
+ "h2": 81
+ },
+ "reuse_session": true,
+ "session_ticket": false,
+ "session_timeout": 600,
+ "plain_http_response": "",
+ "curves": "",
+ "dhparam": ""
+ },
+ "tcp": {
+ "prefer_ipv4": false,
+ "no_delay": true,
+ "keep_alive": true,
+ "reuse_port": false,
+ "fast_open": false,
+ "fast_open_qlen": 20
+ },
+ "mysql": {
+ "enabled": false
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vless-tls.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vless-tls.json
new file mode 100644
index 0000000..ea20ec4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vless-tls.json
@@ -0,0 +1,39 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vless",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
+ "level": 0,
+ "email": "love@example.com"
+ }
+ ],
+ "decryption": "none"
+ },
+ "streamSettings": {
+ "network": "tcp",
+ "security": "tls",
+ "tlsSettings": {
+ "certificates": [
+ {
+ "certificateFile": "/etc/ssl/v2ray/fullchain.pem",
+ "keyFile": "/etc/ssl/v2ray/privkey.pem"
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ],
+ "log": {
+ "loglevel": "debug"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vless-ws.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vless-ws.json
new file mode 100644
index 0000000..8a59764
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vless-ws.json
@@ -0,0 +1,36 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vless",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
+ "level": 0,
+ "email": "ws@example.com"
+ }
+ ],
+ "decryption": "none"
+ },
+ "streamSettings": {
+ "network": "ws",
+ "security": "tls",
+ "tlsSettings": {
+ "certificates": [
+ {
+ "certificateFile": "/etc/ssl/v2ray/fullchain.pem",
+ "keyFile": "/etc/ssl/v2ray/privkey.pem"
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vless-xtls.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vless-xtls.json
new file mode 100644
index 0000000..1d352c3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vless-xtls.json
@@ -0,0 +1,40 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vless",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
+ "email": "xtls@example.com",
+ "flow": "xtls-rprx-direct",
+ "level": 0
+ }
+ ],
+ "decryption": "none"
+ },
+ "streamSettings": {
+ "network": "tcp",
+ "security": "xtls",
+ "xtlsSettings": {
+ "certificates": [
+ {
+ "certificateFile": "/etc/ssl/v2ray/fullchain.pem",
+ "keyFile": "/etc/ssl/v2ray/privkey.pem"
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ],
+ "log": {
+ "loglevel": "debug"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-grpc.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-grpc.json
new file mode 100644
index 0000000..178e068
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-grpc.json
@@ -0,0 +1,39 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vmess",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811"
+ }
+ ]
+ },
+ "streamSettings": {
+ "network": "grpc",
+ "security": "tls",
+ "tlsSettings": {
+ "certificates": [
+ {
+ "certificateFile": "/etc/ssl/v2ray/fullchain.pem",
+ "keyFile": "/etc/ssl/v2ray/privkey.pem"
+ }
+ ]
+ },
+ "grpcSettings": {
+ "serviceName": "example!"
+ }
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ],
+ "log": {
+ "loglevel": "debug"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-http.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-http.json
new file mode 100644
index 0000000..90550c3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-http.json
@@ -0,0 +1,54 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vmess",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811"
+ }
+ ]
+ },
+ "streamSettings": {
+ "network": "tcp",
+ "tcpSettings": {
+ "header": {
+ "type": "http",
+ "response": {
+ "version": "1.1",
+ "status": "200",
+ "reason": "OK",
+ "headers": {
+ "Content-Type": [
+ "application/octet-stream",
+ "video/mpeg",
+ "application/x-msdownload",
+ "text/html",
+ "application/x-shockwave-flash"
+ ],
+ "Transfer-Encoding": [
+ "chunked"
+ ],
+ "Connection": [
+ "keep-alive"
+ ],
+ "Pragma": "no-cache"
+ }
+ }
+ }
+ },
+ "security": "none"
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ],
+ "log": {
+ "loglevel": "debug"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-http2.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-http2.json
new file mode 100644
index 0000000..c6916a1
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-http2.json
@@ -0,0 +1,42 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vmess",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811"
+ }
+ ]
+ },
+ "streamSettings": {
+ "network": "http",
+ "security": "tls",
+ "tlsSettings": {
+ "certificates": [
+ {
+ "certificateFile": "/etc/ssl/v2ray/fullchain.pem",
+ "keyFile": "/etc/ssl/v2ray/privkey.pem"
+ }
+ ]
+ },
+ "httpSettings": {
+ "host": [
+ "example.org"
+ ],
+ "path": "/test"
+ }
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ],
+ "log": {
+ "loglevel": "debug"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-tls.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-tls.json
new file mode 100644
index 0000000..17e87d6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-tls.json
@@ -0,0 +1,36 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vmess",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811"
+ }
+ ]
+ },
+ "streamSettings": {
+ "network": "tcp",
+ "security": "tls",
+ "tlsSettings": {
+ "certificates": [
+ {
+ "certificateFile": "/etc/ssl/v2ray/fullchain.pem",
+ "keyFile": "/etc/ssl/v2ray/privkey.pem"
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ],
+ "log": {
+ "loglevel": "debug"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-ws-0rtt.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-ws-0rtt.json
new file mode 100644
index 0000000..c22909b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-ws-0rtt.json
@@ -0,0 +1,29 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vmess",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811"
+ }
+ ]
+ },
+ "streamSettings": {
+ "network": "ws",
+ "security": "none",
+ "wsSettings": {
+ "maxEarlyData": 128,
+ "earlyDataHeaderName": "Sec-WebSocket-Protocol"
+ }
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-ws-tls.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-ws-tls.json
new file mode 100644
index 0000000..14278f3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-ws-tls.json
@@ -0,0 +1,33 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vmess",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811"
+ }
+ ]
+ },
+ "streamSettings": {
+ "network": "ws",
+ "security": "tls",
+ "tlsSettings": {
+ "certificates": [
+ {
+ "certificateFile": "/etc/ssl/v2ray/fullchain.pem",
+ "keyFile": "/etc/ssl/v2ray/privkey.pem"
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-ws.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-ws.json
new file mode 100644
index 0000000..2bcb604
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess-ws.json
@@ -0,0 +1,25 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vmess",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811"
+ }
+ ]
+ },
+ "streamSettings": {
+ "network": "ws",
+ "security": "none"
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess.json
new file mode 100644
index 0000000..1a8f935
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/vmess.json
@@ -0,0 +1,27 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "vmess",
+ "settings": {
+ "clients": [
+ {
+ "id": "b831381d-6324-4d53-ad4f-8cda48b30811"
+ }
+ ]
+ },
+ "streamSettings": {
+ "network": "tcp"
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ],
+ "log": {
+ "loglevel": "debug"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/config/xray-shadowsocks.json b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/xray-shadowsocks.json
new file mode 100644
index 0000000..1df376d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/config/xray-shadowsocks.json
@@ -0,0 +1,27 @@
+{
+ "inbounds": [
+ {
+ "port": 10002,
+ "listen": "0.0.0.0",
+ "protocol": "shadowsocks",
+ "settings": {
+ "network": "tcp,udp",
+ "clients": [
+ {
+ "method": "aes-128-gcm",
+ "level": 0,
+ "password": "FzcLbKs2dY9mhL"
+ }
+ ]
+ }
+ }
+ ],
+ "outbounds": [
+ {
+ "protocol": "freedom"
+ }
+ ],
+ "log": {
+ "loglevel": "debug"
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/dns_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/dns_test.go
new file mode 100644
index 0000000..f45ffbe
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/dns_test.go
@@ -0,0 +1,100 @@
+package main
+
+import (
+ "testing"
+ "time"
+
+ "github.com/miekg/dns"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+func exchange(address, domain string, tp uint16) ([]dns.RR, error) {
+ client := dns.Client{}
+ query := &dns.Msg{}
+ query.SetQuestion(dns.Fqdn(domain), tp)
+
+ r, _, err := client.Exchange(query, address)
+ if err != nil {
+ return nil, err
+ }
+ return r.Answer, nil
+}
+
+func TestMihomo_DNS(t *testing.T) {
+ basic := `
+log-level: silent
+dns:
+ enable: true
+ listen: 0.0.0.0:8553
+ nameserver:
+ - 119.29.29.29
+`
+
+ err := parseAndApply(basic)
+ require.NoError(t, err)
+ defer cleanup()
+
+ time.Sleep(waitTime)
+
+ rr, err := exchange("127.0.0.1:8553", "1.1.1.1.nip.io", dns.TypeA)
+ assert.NoError(t, err)
+ assert.NotEmptyf(t, rr, "record empty")
+
+ record := rr[0].(*dns.A)
+ assert.Equal(t, record.A.String(), "1.1.1.1")
+
+ rr, err = exchange("127.0.0.1:8553", "2606-4700-4700--1111.sslip.io", dns.TypeAAAA)
+ assert.NoError(t, err)
+ assert.Empty(t, rr)
+}
+
+func TestMihomo_DNSHostAndFakeIP(t *testing.T) {
+ basic := `
+log-level: silent
+hosts:
+ foo.mihomo.dev: 1.1.1.1
+dns:
+ enable: true
+ listen: 0.0.0.0:8553
+ ipv6: true
+ enhanced-mode: fake-ip
+ fake-ip-range: 198.18.0.1/16
+ fake-ip-filter:
+ - .sslip.io
+ nameserver:
+ - 119.29.29.29
+`
+
+ err := parseAndApply(basic)
+ require.NoError(t, err)
+ defer cleanup()
+
+ time.Sleep(waitTime)
+
+ type domainPair struct {
+ domain string
+ ip string
+ }
+
+ list := []domainPair{
+ {"foo.org", "198.18.0.4"},
+ {"bar.org", "198.18.0.5"},
+ {"foo.org", "198.18.0.4"},
+ {"foo.mihomo.dev", "1.1.1.1"},
+ }
+
+ for _, pair := range list {
+ rr, err := exchange("127.0.0.1:8553", pair.domain, dns.TypeA)
+ assert.NoError(t, err)
+ assert.NotEmpty(t, rr)
+
+ record := rr[0].(*dns.A)
+ assert.Equal(t, record.A.String(), pair.ip)
+ }
+
+ rr, err := exchange("127.0.0.1:8553", "2606-4700-4700--1111.sslip.io", dns.TypeAAAA)
+ assert.NoError(t, err)
+ assert.NotEmpty(t, rr)
+ assert.Equal(t, rr[0].(*dns.AAAA).AAAA.String(), "2606:4700:4700::1111")
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/docker_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/docker_test.go
new file mode 100644
index 0000000..caaab21
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/docker_test.go
@@ -0,0 +1,57 @@
+package main
+
+import (
+ "context"
+ "os"
+
+ "github.com/docker/docker/api/types"
+ "github.com/docker/docker/api/types/container"
+ "github.com/docker/docker/client"
+)
+
+func startContainer(cfg *container.Config, hostCfg *container.HostConfig, name string) (string, error) {
+ c, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
+ if err != nil {
+ return "", err
+ }
+ defer c.Close()
+
+ if !isDarwin {
+ hostCfg.NetworkMode = "host"
+ }
+
+ container, err := c.ContainerCreate(context.Background(), cfg, hostCfg, nil, nil, name)
+ if err != nil {
+ return "", err
+ }
+
+ if err = c.ContainerStart(context.Background(), container.ID, types.ContainerStartOptions{}); err != nil {
+ return "", err
+ }
+
+ response, err := c.ContainerAttach(context.Background(), container.ID, types.ContainerAttachOptions{
+ Stdout: true,
+ Stderr: true,
+ Logs: true,
+ })
+ if err != nil {
+ return "", err
+ }
+
+ go func() {
+ response.Reader.WriteTo(os.Stderr)
+ }()
+
+ return container.ID, nil
+}
+
+func cleanContainer(id string) error {
+ c, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
+ if err != nil {
+ return err
+ }
+ defer c.Close()
+
+ removeOpts := types.ContainerRemoveOptions{Force: true}
+ return c.ContainerRemove(context.Background(), id, removeOpts)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/go.mod b/Android-kotlin-Code/core/src/foss/golang/clash/test/go.mod
new file mode 100644
index 0000000..f364c2c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/go.mod
@@ -0,0 +1,122 @@
+module mihomo-test
+
+go 1.20
+
+require (
+ github.com/docker/docker v20.10.21+incompatible
+ github.com/docker/go-connections v0.4.0
+ github.com/metacubex/mihomo v0.0.0
+ github.com/miekg/dns v1.1.57
+ github.com/stretchr/testify v1.8.4
+ golang.org/x/net v0.18.0
+)
+
+replace github.com/metacubex/mihomo => ../
+
+require (
+ github.com/3andne/restls-client-go v0.1.6 // indirect
+ github.com/Microsoft/go-winio v0.6.0 // indirect
+ github.com/RyuaNerin/go-krypto v1.0.2 // indirect
+ github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344 // indirect
+ github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
+ github.com/andybalholm/brotli v1.0.5 // indirect
+ github.com/bahlo/generic-list-go v0.2.0 // indirect
+ github.com/buger/jsonparser v1.1.1 // indirect
+ github.com/coreos/go-iptables v0.7.0 // indirect
+ github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/distribution/reference v0.5.0 // indirect
+ github.com/dlclark/regexp2 v1.10.0 // indirect
+ github.com/docker/distribution v2.8.3+incompatible // indirect
+ github.com/docker/go-units v0.4.0 // indirect
+ github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9 // indirect
+ github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391 // indirect
+ github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1 // indirect
+ github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010 // indirect
+ github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/gaukas/godicttls v0.0.4 // indirect
+ github.com/go-ole/go-ole v1.3.0 // indirect
+ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
+ github.com/gobwas/httphead v0.1.0 // indirect
+ github.com/gobwas/pool v0.2.1 // indirect
+ github.com/gobwas/ws v1.3.1 // indirect
+ github.com/gofrs/uuid/v5 v5.0.0 // indirect
+ github.com/gogo/protobuf v1.3.2 // indirect
+ github.com/google/btree v1.1.2 // indirect
+ github.com/google/go-cmp v0.6.0 // indirect
+ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect
+ github.com/hashicorp/yamux v0.1.1 // indirect
+ github.com/insomniacslk/dhcp v0.0.0-20231016090811-6a2c8fbdcc1c // indirect
+ github.com/josharian/native v1.1.0 // indirect
+ github.com/jpillora/backoff v1.0.0 // indirect
+ github.com/klauspost/compress v1.16.7 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.6 // indirect
+ github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
+ github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 // indirect
+ github.com/mailru/easyjson v0.7.7 // indirect
+ github.com/mdlayher/netlink v1.7.2 // indirect
+ github.com/mdlayher/socket v0.4.1 // indirect
+ github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759 // indirect
+ github.com/metacubex/gvisor v0.0.0-20231001104248-0f672c3fb8d8 // indirect
+ github.com/metacubex/quic-go v0.40.1-0.20231130135418-0c1b47cf9394 // indirect
+ github.com/metacubex/sing-quic v0.0.0-20231130141855-0022295e524b // indirect
+ github.com/metacubex/sing-shadowsocks v0.2.5 // indirect
+ github.com/metacubex/sing-shadowsocks2 v0.1.4 // indirect
+ github.com/metacubex/sing-tun v0.1.15-0.20231103033938-170591e8d5bd // indirect
+ github.com/metacubex/sing-vmess v0.1.9-0.20230921005247-a0488d7dac74 // indirect
+ github.com/metacubex/sing-wireguard v0.0.0-20231001110902-321836559170 // indirect
+ github.com/moby/term v0.5.0 // indirect
+ github.com/morikuni/aec v1.0.0 // indirect
+ github.com/mroth/weightedrand/v2 v2.1.0 // indirect
+ github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7 // indirect
+ github.com/onsi/ginkgo/v2 v2.9.5 // indirect
+ github.com/openacid/low v0.1.21 // indirect
+ github.com/opencontainers/go-digest v1.0.0 // indirect
+ github.com/opencontainers/image-spec v1.0.2 // indirect
+ github.com/oschwald/maxminddb-golang v1.12.0 // indirect
+ github.com/pierrec/lz4/v4 v4.1.14 // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
+ github.com/puzpuzpuz/xsync/v3 v3.0.2 // indirect
+ github.com/quic-go/qpack v0.4.0 // indirect
+ github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
+ github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a // indirect
+ github.com/sagernet/go-tun2socks v1.16.12-0.20220818015926-16cb67876a61 // indirect
+ github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97 // indirect
+ github.com/sagernet/sing v0.2.18-0.20231108041402-4fbbd193203c // indirect
+ github.com/sagernet/sing-mux v0.1.5-0.20231109075101-6b086ed6bb07 // indirect
+ github.com/sagernet/sing-shadowtls v0.1.4 // indirect
+ github.com/sagernet/smux v0.0.0-20230312102458-337ec2a5af37 // indirect
+ github.com/sagernet/tfo-go v0.0.0-20230816093905-5a5c285d44a6 // indirect
+ github.com/sagernet/utls v0.0.0-20230309024959-6732c2ab36f2 // indirect
+ github.com/sagernet/wireguard-go v0.0.0-20230807125731-5d4a7ef2dc5f // indirect
+ github.com/samber/lo v1.38.1 // indirect
+ github.com/scjalliance/comshim v0.0.0-20230315213746-5e51f40bd3b9 // indirect
+ github.com/shirou/gopsutil/v3 v3.23.10 // indirect
+ github.com/shoenig/go-m1cpu v0.1.6 // indirect
+ github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b // indirect
+ github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c // indirect
+ github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e // indirect
+ github.com/sirupsen/logrus v1.9.3 // indirect
+ github.com/tklauser/go-sysconf v0.3.12 // indirect
+ github.com/tklauser/numcpus v0.6.1 // indirect
+ github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 // indirect
+ github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 // indirect
+ github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
+ github.com/yusufpapurcu/wmi v1.2.3 // indirect
+ github.com/zhangyunhao116/fastrand v0.3.0 // indirect
+ gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec // indirect
+ go.uber.org/mock v0.3.0 // indirect
+ go4.org/netipx v0.0.0-20230824141953-6213f710f925 // indirect
+ golang.org/x/crypto v0.16.0 // indirect
+ golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
+ golang.org/x/mod v0.14.0 // indirect
+ golang.org/x/sync v0.5.0 // indirect
+ golang.org/x/sys v0.15.0 // indirect
+ golang.org/x/text v0.14.0 // indirect
+ golang.org/x/time v0.3.0 // indirect
+ golang.org/x/tools v0.15.0 // indirect
+ google.golang.org/protobuf v1.31.0 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
+ lukechampine.com/blake3 v1.2.1 // indirect
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/go.sum b/Android-kotlin-Code/core/src/foss/golang/clash/test/go.sum
new file mode 100644
index 0000000..05a23ce
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/go.sum
@@ -0,0 +1,314 @@
+github.com/3andne/restls-client-go v0.1.6 h1:tRx/YilqW7iHpgmEL4E1D8dAsuB0tFF3uvncS+B6I08=
+github.com/3andne/restls-client-go v0.1.6/go.mod h1:iEdTZNt9kzPIxjIGSMScUFSBrUH6bFRNg0BWlP4orEY=
+github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
+github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg=
+github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE=
+github.com/RyuaNerin/go-krypto v1.0.2 h1:9KiZrrBs+tDrQ66dNy4nrX6SzntKtSKdm0wKHhdB4WM=
+github.com/RyuaNerin/go-krypto v1.0.2/go.mod h1:17LzMeJCgzGTkPH3TmfzRnEJ/yA7ErhTPp9sxIqONtA=
+github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344 h1:cDVUiFo+npB0ZASqnw4q90ylaVAbnYyx0JYqK4YcGok=
+github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344/go.mod h1:9pIqrY6SXNL8vjRQE5Hd/OL5GyK/9MrGUWs87z/eFfk=
+github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY=
+github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA=
+github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=
+github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
+github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=
+github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=
+github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
+github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
+github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/coreos/go-iptables v0.7.0 h1:XWM3V+MPRr5/q51NuWSgU0fqMad64Zyxs8ZUoMsamr8=
+github.com/coreos/go-iptables v0.7.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
+github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
+github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0=
+github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
+github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
+github.com/docker/docker v20.10.21+incompatible h1:UTLdBmHk3bEY+w8qeO5KttOhy6OmXWsl/FEet9Uswog=
+github.com/docker/docker v20.10.21+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
+github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
+github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=
+github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
+github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9 h1:/5RkVc9Rc81XmMyVqawCiDyrBHZbLAZgTTCqou4mwj8=
+github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9/go.mod h1:hkIFzoiIPZYxdFOOLyDho59b7SrDfo+w3h+yWdlg45I=
+github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391 h1:8j2RH289RJplhA6WfdaPqzg1MjH2K8wX5e0uhAxrw2g=
+github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391/go.mod h1:K2R7GhgxrlJzHw2qiPWsCZXf/kXEJN9PLnQK73Ll0po=
+github.com/ericlagergren/saferand v0.0.0-20220206064634-960a4dd2bc5c h1:RUzBDdZ+e/HEe2Nh8lYsduiPAZygUfVXJn0Ncj5sHMg=
+github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1 h1:tlDMEdcPRQKBEz5nGDMvswiajqh7k8ogWRlhRwKy5mY=
+github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1/go.mod h1:4RfsapbGx2j/vU5xC/5/9qB3kn9Awp1YDiEnN43QrJ4=
+github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010 h1:fuGucgPk5dN6wzfnxl3D0D3rVLw4v2SbBT9jb4VnxzA=
+github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010/go.mod h1:JtBcj7sBuTTRupn7c2bFspMDIObMJsVK8TeUvpShPok=
+github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA=
+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/gaukas/godicttls v0.0.4 h1:NlRaXb3J6hAnTmWdsEKb9bcSBD6BvcIjdGdeb0zfXbk=
+github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67deKr9/NCI=
+github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
+github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU=
+github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
+github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og=
+github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
+github.com/gobwas/ws v1.3.1 h1:Qi34dfLMWJbiKaNbDVzM9x27nZBjmkaW6i4+Ku+pGVU=
+github.com/gobwas/ws v1.3.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
+github.com/gofrs/uuid/v5 v5.0.0 h1:p544++a97kEL+svbcFbCQVM9KFu0Yo25UoISXGNNH9M=
+github.com/gofrs/uuid/v5 v5.0.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
+github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/tink/go v1.6.1 h1:t7JHqO8Ath2w2ig5vjwQYJzhGEZymedQc90lQXUBa4I=
+github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
+github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/insomniacslk/dhcp v0.0.0-20231016090811-6a2c8fbdcc1c h1:PgxFEySCI41sH0mB7/2XswdXbUykQsRUGod8Rn+NubM=
+github.com/insomniacslk/dhcp v0.0.0-20231016090811-6a2c8fbdcc1c/go.mod h1:3A9PQ1cunSDF/1rbTq99Ts4pVnycWg+vlPkfeD2NLFI=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/josharian/native v1.0.1-0.20221213033349-c1e37c09b531/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA=
+github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
+github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
+github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc=
+github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
+github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 h1:EnfXoSqDfSNJv0VBNqY/88RNnhSGYkrHaO0mmFGbVsc=
+github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40/go.mod h1:vy1vK6wD6j7xX6O6hXe621WabdtNkou2h7uRtTfRMyg=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g=
+github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw=
+github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U=
+github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA=
+github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759 h1:cjd4biTvOzK9ubNCCkQ+ldc4YSH/rILn53l/xGBFHHI=
+github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759/go.mod h1:UHOv2xu+RIgLwpXca7TLrXleEd4oR3sPatW6IF8wU88=
+github.com/metacubex/gvisor v0.0.0-20231001104248-0f672c3fb8d8 h1:npBvaPAT145UY8682AzpUMWpdIxJti/WPLjy7gCiYYs=
+github.com/metacubex/gvisor v0.0.0-20231001104248-0f672c3fb8d8/go.mod h1:ZR6Gas7P1GcADCVBc1uOrA0bLQqDDyp70+63fD/BE2c=
+github.com/metacubex/quic-go v0.40.1-0.20231130135418-0c1b47cf9394 h1:dIT+KB2hknBCrwVAXPeY9tpzzkOZP5m40yqUteRT6/Y=
+github.com/metacubex/quic-go v0.40.1-0.20231130135418-0c1b47cf9394/go.mod h1:F/t8VnA47xoia8ABlNA4InkZjssvFJ5p6E6jKdbkgAs=
+github.com/metacubex/sing-quic v0.0.0-20231130141855-0022295e524b h1:7XXoEePvxfkQN9b2wB8UXU3uzb9uL8syEFF7A9VAKKQ=
+github.com/metacubex/sing-quic v0.0.0-20231130141855-0022295e524b/go.mod h1:Gu5/zqZDd5G1AUtoV2yjAPWOEy7zwbU2DBUjdxJh0Kw=
+github.com/metacubex/sing-shadowsocks v0.2.5 h1:O2RRSHlKGEpAVG/OHJQxyHqDy8uvvdCW/oW2TDBOIhc=
+github.com/metacubex/sing-shadowsocks v0.2.5/go.mod h1:Xz2uW9BEYGEoA8B4XEpoxt7ERHClFCwsMAvWaruoyMo=
+github.com/metacubex/sing-shadowsocks2 v0.1.4 h1:OOCf8lgsVcpTOJUeaFAMzyKVebaQOBnKirDdUdBoKIE=
+github.com/metacubex/sing-shadowsocks2 v0.1.4/go.mod h1:Qz028sLfdY3qxGRm9FDI+IM2Ae3ty2wR7HIzD/56h/k=
+github.com/metacubex/sing-tun v0.1.15-0.20231103033938-170591e8d5bd h1:k0+92eARqyTAovGhg2AxdsMWHjUsdiGCnR5NuXF3CQY=
+github.com/metacubex/sing-tun v0.1.15-0.20231103033938-170591e8d5bd/go.mod h1:Q7zmpJ+qOvMMXyUoYlxGQuWkqALUpXzFSSqO+KLPyzA=
+github.com/metacubex/sing-vmess v0.1.9-0.20230921005247-a0488d7dac74 h1:FtupiyFkaVjFvRa7B/uDtRWg5BNsoyPC9MTev3sDasY=
+github.com/metacubex/sing-vmess v0.1.9-0.20230921005247-a0488d7dac74/go.mod h1:8EWBZpc+qNvf5gmvjAtMHK1/DpcWqzfcBL842K00BsM=
+github.com/metacubex/sing-wireguard v0.0.0-20231001110902-321836559170 h1:DBGA0hmrP4pVIwLiXUONdphjcppED+plmVaKf1oqkwk=
+github.com/metacubex/sing-wireguard v0.0.0-20231001110902-321836559170/go.mod h1:/VbJfbdLnANE+SKXyMk/96sTRrD4GdFLh5mkegqqFcY=
+github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM=
+github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk=
+github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
+github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
+github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
+github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
+github.com/mroth/weightedrand/v2 v2.1.0 h1:o1ascnB1CIVzsqlfArQQjeMy1U0NcIbBO5rfd5E/OeU=
+github.com/mroth/weightedrand/v2 v2.1.0/go.mod h1:f2faGsfOGOwc1p94wzHKKZyTpcJUW7OJ/9U4yfiNAOU=
+github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7 h1:1102pQc2SEPp5+xrS26wEaeb26sZy6k9/ZXlZN+eXE4=
+github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7/go.mod h1:UqoUn6cHESlliMhOnKLWr+CBH+e3bazUPvFj1XZwAjs=
+github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q=
+github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k=
+github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE=
+github.com/openacid/errors v0.8.1/go.mod h1:GUQEJJOJE3W9skHm8E8Y4phdl2LLEN8iD7c5gcGgdx0=
+github.com/openacid/low v0.1.21 h1:Tr2GNu4N/+rGRYdOsEHOE89cxUIaDViZbVmKz29uKGo=
+github.com/openacid/low v0.1.21/go.mod h1:q+MsKI6Pz2xsCkzV4BLj7NR5M4EX0sGz5AqotpZDVh0=
+github.com/openacid/must v0.1.3/go.mod h1:luPiXCuJlEo3UUFQngVQokV0MPGryeYvtCbQPs3U1+I=
+github.com/openacid/testkeys v0.1.6/go.mod h1:MfA7cACzBpbiwekivj8StqX0WIRmqlMsci1c37CA3Do=
+github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
+github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
+github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM=
+github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
+github.com/oschwald/maxminddb-golang v1.12.0 h1:9FnTOD0YOhP7DGxGsq4glzpGy5+w7pq50AS6wALUMYs=
+github.com/oschwald/maxminddb-golang v1.12.0/go.mod h1:q0Nob5lTCqyQ8WT6FYgS1L7PXKVVbgiymefNwIjPzgY=
+github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE=
+github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
+github.com/puzpuzpuz/xsync/v3 v3.0.2 h1:3yESHrRFYr6xzkz61LLkvNiPFXxJEAABanTQpKbAaew=
+github.com/puzpuzpuz/xsync/v3 v3.0.2/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA=
+github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
+github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
+github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs=
+github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k=
+github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
+github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a h1:+NkI2670SQpQWvkkD2QgdTuzQG263YZ+2emfpeyGqW0=
+github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a/go.mod h1:63s7jpZqcDAIpj8oI/1v4Izok+npJOHACFCU6+huCkM=
+github.com/sagernet/go-tun2socks v1.16.12-0.20220818015926-16cb67876a61 h1:5+m7c6AkmAylhauulqN/c5dnh8/KssrE9c93TQrXldA=
+github.com/sagernet/go-tun2socks v1.16.12-0.20220818015926-16cb67876a61/go.mod h1:QUQ4RRHD6hGGHdFMEtR8T2P6GS6R3D/CXKdaYHKKXms=
+github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97 h1:iL5gZI3uFp0X6EslacyapiRz7LLSJyr4RajF/BhMVyE=
+github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
+github.com/sagernet/sing v0.0.0-20220817130738-ce854cda8522/go.mod h1:QVsS5L/ZA2Q5UhQwLrn0Trw+msNd/NPGEhBKR/ioWiY=
+github.com/sagernet/sing v0.1.8/go.mod h1:jt1w2u7lJQFFSGLiRrRIs5YWmx4kAPfWuOejuDW9qMk=
+github.com/sagernet/sing v0.2.18-0.20231108041402-4fbbd193203c h1:uask61Pxc3nGqsOSjqnBKrwfODWRoEa80lXm04LNk0E=
+github.com/sagernet/sing v0.2.18-0.20231108041402-4fbbd193203c/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo=
+github.com/sagernet/sing-mux v0.1.5-0.20231109075101-6b086ed6bb07 h1:ncKb5tVOsCQgCsv6UpsA0jinbNb5OQ5GMPJlyQP3EHM=
+github.com/sagernet/sing-mux v0.1.5-0.20231109075101-6b086ed6bb07/go.mod h1:u/MZf32xPG8jEKe3t+xUV67EBnKtDtCaPhsJQOQGUYU=
+github.com/sagernet/sing-shadowtls v0.1.4 h1:aTgBSJEgnumzFenPvc+kbD9/W0PywzWevnVpEx6Tw3k=
+github.com/sagernet/sing-shadowtls v0.1.4/go.mod h1:F8NBgsY5YN2beQavdgdm1DPlhaKQlaL6lpDdcBglGK4=
+github.com/sagernet/smux v0.0.0-20230312102458-337ec2a5af37 h1:HuE6xSwco/Xed8ajZ+coeYLmioq0Qp1/Z2zczFaV8as=
+github.com/sagernet/smux v0.0.0-20230312102458-337ec2a5af37/go.mod h1:3skNSftZDJWTGVtVaM2jfbce8qHnmH/AGDRe62iNOg0=
+github.com/sagernet/tfo-go v0.0.0-20230816093905-5a5c285d44a6 h1:Px+hN4Vzgx+iCGVnWH5A8eR7JhNnIV3rGQmBxA7cw6Q=
+github.com/sagernet/tfo-go v0.0.0-20230816093905-5a5c285d44a6/go.mod h1:zovq6vTvEM6ECiqE3Eeb9rpIylPpamPcmrJ9tv0Bt0M=
+github.com/sagernet/utls v0.0.0-20230309024959-6732c2ab36f2 h1:kDUqhc9Vsk5HJuhfIATJ8oQwBmpOZJuozQG7Vk88lL4=
+github.com/sagernet/utls v0.0.0-20230309024959-6732c2ab36f2/go.mod h1:JKQMZq/O2qnZjdrt+B57olmfgEmLtY9iiSIEYtWvoSM=
+github.com/sagernet/wireguard-go v0.0.0-20230807125731-5d4a7ef2dc5f h1:Kvo8w8Y9lzFGB/7z09MJ3TR99TFtfI/IuY87Ygcycho=
+github.com/sagernet/wireguard-go v0.0.0-20230807125731-5d4a7ef2dc5f/go.mod h1:mySs0abhpc/gLlvhoq7HP1RzOaRmIXVeZGCh++zoApk=
+github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM=
+github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA=
+github.com/scjalliance/comshim v0.0.0-20230315213746-5e51f40bd3b9 h1:rc/CcqLH3lh8n+csdOuDfP+NuykE0U6AeYSJJHKDgSg=
+github.com/scjalliance/comshim v0.0.0-20230315213746-5e51f40bd3b9/go.mod h1:a/83NAfUXvEuLpmxDssAXxgUgrEy12MId3Wd7OTs76s=
+github.com/shirou/gopsutil/v3 v3.23.10 h1:/N42opWlYzegYaVkWejXWJpbzKv2JDy3mrgGzKsh9hM=
+github.com/shirou/gopsutil/v3 v3.23.10/go.mod h1:JIE26kpucQi+innVlAUnIEOSBhBUkirr5b44yr55+WE=
+github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
+github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
+github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
+github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
+github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b h1:rXHg9GrUEtWZhEkrykicdND3VPjlVbYiLdX9J7gimS8=
+github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b/go.mod h1:X7qrxNQViEaAN9LNZOPl9PfvQtp3V3c7LTo0dvGi0fM=
+github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c h1:DjKMC30y6yjG3IxDaeAj3PCoRr+IsO+bzyT+Se2m2Hk=
+github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c/go.mod h1:NV/a66PhhWYVmUMaotlXJ8fIEFB98u+c8l/CQIEFLrU=
+github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e h1:ur8uMsPIFG3i4Gi093BQITvwH9znsz2VUZmnmwHvpIo=
+github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e/go.mod h1:+e5fBW3bpPyo+3uLo513gIUblc03egGjMM0+5GKbzK8=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
+github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
+github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
+github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
+github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 h1:tHNk7XK9GkmKUR6Gh8gVBKXc2MVSZ4G/NnWLtzw4gNA=
+github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923/go.mod h1:eLL9Nub3yfAho7qB0MzZizFhTU2QkLeoVsWdHtDW264=
+github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
+github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=
+github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
+github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 h1:gga7acRE695APm9hlsSMoOoE65U4/TcqNj90mc69Rlg=
+github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
+github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
+github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw=
+github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
+github.com/zhangyunhao116/fastrand v0.3.0 h1:7bwe124xcckPulX6fxtr2lFdO2KQqaefdtbk+mqO/Ig=
+github.com/zhangyunhao116/fastrand v0.3.0/go.mod h1:0v5KgHho0VE6HU192HnY15de/oDS8UrbBChIFjIhBtc=
+gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec h1:FpfFs4EhNehiVfzQttTuxanPIT43FtkkCFypIod8LHo=
+gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec/go.mod h1:BZ1RAoRPbCxum9Grlv5aeksu2H8BiKehBYooU2LFiOQ=
+go.uber.org/mock v0.3.0 h1:3mUxI1No2/60yUYax92Pt8eNOEecx2D3lcXZh2NEZJo=
+go.uber.org/mock v0.3.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
+go4.org/netipx v0.0.0-20230824141953-6213f710f925 h1:eeQDDVKFkx0g4Hyy8pHgmZaK0EqB4SD6rvKbUdN3ziQ=
+go4.org/netipx v0.0.0-20230824141953-6213f710f925/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
+golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
+golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
+golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
+golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
+golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220731174439-a90be440212d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
+golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
+golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8=
+golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
+google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
+lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI=
+lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/hysteria_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/hysteria_test.go
new file mode 100644
index 0000000..e783d9c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/hysteria_test.go
@@ -0,0 +1,53 @@
+package main
+
+import (
+ "fmt"
+ "testing"
+ "time"
+
+ "github.com/docker/docker/api/types/container"
+ "github.com/metacubex/mihomo/adapter/outbound"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestMihomo_Hysteria(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageHysteria,
+ ExposedPorts: defaultExposedPorts,
+ Cmd: []string{"server"},
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/config.json", C.Path.Resolve("hysteria.json")),
+ fmt.Sprintf("%s:/home/ubuntu/my.crt", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/home/ubuntu/my.key", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "hysteria")
+ if err != nil {
+ assert.FailNow(t, err.Error())
+ }
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewHysteria(outbound.HysteriaOption{
+ Name: "hysteria",
+ Server: localIP.String(),
+ Port: 10002,
+ Obfs: "fuck me till the daylight",
+ Up: "100",
+ Down: "100",
+ SkipCertVerify: true,
+ })
+ if err != nil {
+ assert.FailNow(t, err.Error())
+ }
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/snell_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/snell_test.go
new file mode 100644
index 0000000..311ca7b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/snell_test.go
@@ -0,0 +1,173 @@
+package main
+
+import (
+ "fmt"
+ "testing"
+ "time"
+
+ "github.com/docker/docker/api/types/container"
+ "github.com/metacubex/mihomo/adapter/outbound"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/stretchr/testify/require"
+)
+
+func TestMihomo_SnellObfsHTTP(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageSnell,
+ ExposedPorts: defaultExposedPorts,
+ Cmd: []string{"-c", "/config.conf"},
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{fmt.Sprintf("%s:/config.conf", C.Path.Resolve("snell-http.conf"))},
+ }
+
+ id, err := startContainer(cfg, hostCfg, "snell-http")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewSnell(outbound.SnellOption{
+ Name: "snell",
+ Server: localIP.String(),
+ Port: 10002,
+ Psk: "password",
+ ObfsOpts: map[string]any{
+ "mode": "http",
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_SnellObfsTLS(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageSnell,
+ ExposedPorts: defaultExposedPorts,
+ Cmd: []string{"-c", "/config.conf"},
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{fmt.Sprintf("%s:/config.conf", C.Path.Resolve("snell-tls.conf"))},
+ }
+
+ id, err := startContainer(cfg, hostCfg, "snell-tls")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewSnell(outbound.SnellOption{
+ Name: "snell",
+ Server: localIP.String(),
+ Port: 10002,
+ Psk: "password",
+ ObfsOpts: map[string]any{
+ "mode": "tls",
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_Snell(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageSnell,
+ ExposedPorts: defaultExposedPorts,
+ Cmd: []string{"-c", "/config.conf"},
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{fmt.Sprintf("%s:/config.conf", C.Path.Resolve("snell.conf"))},
+ }
+
+ id, err := startContainer(cfg, hostCfg, "snell")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewSnell(outbound.SnellOption{
+ Name: "snell",
+ Server: localIP.String(),
+ Port: 10002,
+ Psk: "password",
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_Snellv3(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageSnell,
+ ExposedPorts: defaultExposedPorts,
+ Cmd: []string{"-c", "/config.conf"},
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{fmt.Sprintf("%s:/config.conf", C.Path.Resolve("snell.conf"))},
+ }
+
+ id, err := startContainer(cfg, hostCfg, "snell")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewSnell(outbound.SnellOption{
+ Name: "snell",
+ Server: localIP.String(),
+ Port: 10002,
+ Psk: "password",
+ UDP: true,
+ Version: 3,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func Benchmark_Snell(b *testing.B) {
+ cfg := &container.Config{
+ Image: ImageSnell,
+ ExposedPorts: defaultExposedPorts,
+ Cmd: []string{"-c", "/config.conf"},
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{fmt.Sprintf("%s:/config.conf", C.Path.Resolve("snell-http.conf"))},
+ }
+
+ id, err := startContainer(cfg, hostCfg, "snell-bench")
+ require.NoError(b, err)
+
+ b.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewSnell(outbound.SnellOption{
+ Name: "snell",
+ Server: localIP.String(),
+ Port: 10002,
+ Psk: "password",
+ ObfsOpts: map[string]any{
+ "mode": "http",
+ },
+ })
+ require.NoError(b, err)
+
+ time.Sleep(waitTime)
+ benchmarkProxy(b, proxy)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/ss_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/ss_test.go
new file mode 100644
index 0000000..866fe3a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/ss_test.go
@@ -0,0 +1,315 @@
+package main
+
+import (
+ "crypto/rand"
+ "encoding/base64"
+ "fmt"
+ "net"
+ "testing"
+ "time"
+
+ "github.com/docker/docker/api/types/container"
+ "github.com/metacubex/mihomo/adapter/outbound"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/stretchr/testify/require"
+)
+
+func TestMihomo_Shadowsocks(t *testing.T) {
+ for _, method := range []string{
+ "aes-128-ctr",
+ "aes-192-ctr",
+ "aes-256-ctr",
+ "aes-128-cfb",
+ "aes-192-cfb",
+ "aes-256-cfb",
+ "rc4-md5",
+ "chacha20-ietf",
+ "aes-128-gcm",
+ "aes-256-gcm",
+ "chacha20-ietf-poly1305",
+ "xchacha20-ietf-poly1305",
+ } {
+ t.Run(method, func(t *testing.T) {
+ testMihomo_Shadowsocks(t, method, "FzcLbKs2dY9mhL")
+ })
+ }
+ for _, method := range []string{
+ "aes-128-gcm",
+ "aes-256-gcm",
+ "chacha20-ietf-poly1305",
+ } {
+ t.Run(method, func(t *testing.T) {
+ testMihomo_ShadowsocksRust(t, method, "FzcLbKs2dY9mhL")
+ })
+ }
+}
+
+func TestMihomo_Shadowsocks2022(t *testing.T) {
+ for _, method := range []string{
+ "2022-blake3-aes-128-gcm",
+ } {
+ t.Run(method, func(t *testing.T) {
+ testMihomo_ShadowsocksRust(t, method, mkKey(16))
+ })
+ }
+ for _, method := range []string{
+ "2022-blake3-aes-256-gcm",
+ "2022-blake3-chacha20-poly1305",
+ } {
+ t.Run(method, func(t *testing.T) {
+ testMihomo_ShadowsocksRust(t, method, mkKey(32))
+ })
+ }
+}
+
+func mkKey(bits int) string {
+ k := make([]byte, bits)
+ rand.Read(k)
+ return base64.StdEncoding.EncodeToString(k)
+}
+
+func testMihomo_Shadowsocks(t *testing.T, method string, password string) {
+ cfg := &container.Config{
+ Image: ImageShadowsocks,
+ Env: []string{
+ "SS_MODULE=ss-server",
+ "SS_CONFIG=-s 0.0.0.0 -u -p 10002 -m " + method + " -k " + password,
+ },
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ }
+
+ id, err := startContainer(cfg, hostCfg, "ss")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewShadowSocks(outbound.ShadowSocksOption{
+ Name: "ss",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: password,
+ Cipher: method,
+ UDP: true,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func testMihomo_ShadowsocksRust(t *testing.T, method string, password string) {
+ cfg := &container.Config{
+ Image: ImageShadowsocksRust,
+ Entrypoint: []string{"ssserver"},
+ Cmd: []string{"-s", "0.0.0.0:10002", "-m", method, "-k", password, "-U", "-v"},
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ }
+
+ id, err := startContainer(cfg, hostCfg, "ss-rust")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewShadowSocks(outbound.ShadowSocksOption{
+ Name: "ss",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: password,
+ Cipher: method,
+ UDP: true,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_ShadowsocksObfsHTTP(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageShadowsocks,
+ Env: []string{
+ "SS_MODULE=ss-server",
+ "SS_CONFIG=-s 0.0.0.0 -u -p 10002 -m chacha20-ietf-poly1305 -k FzcLbKs2dY9mhL --plugin obfs-server --plugin-opts obfs=http",
+ },
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ }
+
+ id, err := startContainer(cfg, hostCfg, "ss-obfs-http")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewShadowSocks(outbound.ShadowSocksOption{
+ Name: "ss",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: "FzcLbKs2dY9mhL",
+ Cipher: "chacha20-ietf-poly1305",
+ UDP: true,
+ Plugin: "obfs",
+ PluginOpts: map[string]any{
+ "mode": "http",
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_ShadowsocksObfsTLS(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageShadowsocks,
+ Env: []string{
+ "SS_MODULE=ss-server",
+ "SS_CONFIG=-s 0.0.0.0 -u -p 10002 -m chacha20-ietf-poly1305 -k FzcLbKs2dY9mhL --plugin obfs-server --plugin-opts obfs=tls",
+ },
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ }
+
+ id, err := startContainer(cfg, hostCfg, "ss-obfs-tls")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewShadowSocks(outbound.ShadowSocksOption{
+ Name: "ss",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: "FzcLbKs2dY9mhL",
+ Cipher: "chacha20-ietf-poly1305",
+ UDP: true,
+ Plugin: "obfs",
+ PluginOpts: map[string]any{
+ "mode": "tls",
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_ShadowsocksV2RayPlugin(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageShadowsocks,
+ Env: []string{
+ "SS_MODULE=ss-server",
+ "SS_CONFIG=-s 0.0.0.0 -u -p 10002 -m chacha20-ietf-poly1305 -k FzcLbKs2dY9mhL --plugin v2ray-plugin --plugin-opts=server",
+ },
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ }
+
+ id, err := startContainer(cfg, hostCfg, "ss-v2ray-plugin")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewShadowSocks(outbound.ShadowSocksOption{
+ Name: "ss",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: "FzcLbKs2dY9mhL",
+ Cipher: "chacha20-ietf-poly1305",
+ UDP: true,
+ Plugin: "v2ray-plugin",
+ PluginOpts: map[string]any{
+ "mode": "websocket",
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func Benchmark_Shadowsocks(b *testing.B) {
+ cfg := &container.Config{
+ Image: ImageShadowsocksRust,
+ Entrypoint: []string{"ssserver"},
+ Cmd: []string{"-s", "0.0.0.0:10002", "-m", "aes-256-gcm", "-k", "FzcLbKs2dY9mhL", "-U"},
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ }
+
+ id, err := startContainer(cfg, hostCfg, "ss-bench")
+ require.NoError(b, err)
+
+ b.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewShadowSocks(outbound.ShadowSocksOption{
+ Name: "ss",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: "FzcLbKs2dY9mhL",
+ Cipher: "aes-256-gcm",
+ UDP: true,
+ })
+ require.NoError(b, err)
+
+ require.True(b, TCPing(net.JoinHostPort(localIP.String(), "10002")))
+ benchmarkProxy(b, proxy)
+}
+
+func TestMihomo_ShadowsocksUoT(t *testing.T) {
+ configPath := C.Path.Resolve("xray-shadowsocks.json")
+
+ cfg := &container.Config{
+ Image: ImageVless,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{fmt.Sprintf("%s:/etc/xray/config.json", configPath)},
+ }
+
+ id, err := startContainer(cfg, hostCfg, "xray-ss")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewShadowSocks(outbound.ShadowSocksOption{
+ Name: "ss",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: "FzcLbKs2dY9mhL",
+ Cipher: "aes-128-gcm",
+ UDP: true,
+ UDPOverTCP: true,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/trojan_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/trojan_test.go
new file mode 100644
index 0000000..c6b1fea
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/trojan_test.go
@@ -0,0 +1,200 @@
+package main
+
+import (
+ "fmt"
+ "net"
+ "testing"
+ "time"
+
+ "github.com/docker/docker/api/types/container"
+ "github.com/metacubex/mihomo/adapter/outbound"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/stretchr/testify/require"
+)
+
+func TestMihomo_Trojan(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageTrojan,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/config/config.json", C.Path.Resolve("trojan.json")),
+ fmt.Sprintf("%s:/path/to/certificate.crt", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/path/to/private.key", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "trojan")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewTrojan(outbound.TrojanOption{
+ Name: "trojan",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: "password",
+ SNI: "example.org",
+ SkipCertVerify: true,
+ UDP: true,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_TrojanGrpc(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageXray,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/xray/config.json", C.Path.Resolve("trojan-grpc.json")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/fullchain.pem", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/privkey.pem", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "trojan-grpc")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewTrojan(outbound.TrojanOption{
+ Name: "trojan",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: "example",
+ SNI: "example.org",
+ SkipCertVerify: true,
+ UDP: true,
+ Network: "grpc",
+ GrpcOpts: outbound.GrpcOptions{
+ GrpcServiceName: "example",
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_TrojanWebsocket(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageTrojanGo,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/trojan-go/config.json", C.Path.Resolve("trojan-ws.json")),
+ fmt.Sprintf("%s:/fullchain.pem", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/privkey.pem", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "trojan-ws")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewTrojan(outbound.TrojanOption{
+ Name: "trojan",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: "example",
+ SNI: "example.org",
+ SkipCertVerify: true,
+ UDP: true,
+ Network: "ws",
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_TrojanXTLS(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageXray,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/xray/config.json", C.Path.Resolve("trojan-xtls.json")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/fullchain.pem", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/privkey.pem", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "trojan-xtls")
+ if err != nil {
+ require.NoError(t, err)
+ }
+ defer cleanContainer(id)
+
+ proxy, err := outbound.NewTrojan(outbound.TrojanOption{
+ Name: "trojan",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: "example",
+ SNI: "example.org",
+ SkipCertVerify: true,
+ UDP: true,
+ Network: "tcp",
+ Flow: "xtls-rprx-direct",
+ FlowShow: true,
+ })
+ if err != nil {
+ require.NoError(t, err)
+ }
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func Benchmark_Trojan(b *testing.B) {
+ cfg := &container.Config{
+ Image: ImageTrojan,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/config/config.json", C.Path.Resolve("trojan.json")),
+ fmt.Sprintf("%s:/path/to/certificate.crt", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/path/to/private.key", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "trojan-bench")
+ require.NoError(b, err)
+
+ b.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewTrojan(outbound.TrojanOption{
+ Name: "trojan",
+ Server: localIP.String(),
+ Port: 10002,
+ Password: "password",
+ SNI: "example.org",
+ SkipCertVerify: true,
+ UDP: true,
+ })
+ require.NoError(b, err)
+
+ require.True(b, TCPing(net.JoinHostPort(localIP.String(), "10002")))
+ benchmarkProxy(b, proxy)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/util.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/util.go
new file mode 100644
index 0000000..3d0fce8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/util.go
@@ -0,0 +1,50 @@
+package main
+
+import (
+ "context"
+ "net"
+ "time"
+)
+
+func Listen(network, address string) (net.Listener, error) {
+ lc := net.ListenConfig{}
+
+ var lastErr error
+ for i := 0; i < 5; i++ {
+ l, err := lc.Listen(context.Background(), network, address)
+ if err == nil {
+ return l, nil
+ }
+
+ lastErr = err
+ time.Sleep(time.Millisecond * 200)
+ }
+ return nil, lastErr
+}
+
+func ListenPacket(network, address string) (net.PacketConn, error) {
+ var lastErr error
+ for i := 0; i < 5; i++ {
+ l, err := net.ListenPacket(network, address)
+ if err == nil {
+ return l, nil
+ }
+
+ lastErr = err
+ time.Sleep(time.Millisecond * 200)
+ }
+ return nil, lastErr
+}
+
+func TCPing(addr string) bool {
+ for i := 0; i < 10; i++ {
+ conn, err := net.Dial("tcp", addr)
+ if err == nil {
+ conn.Close()
+ return true
+ }
+ time.Sleep(time.Millisecond * 500)
+ }
+
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/util_darwin_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/util_darwin_test.go
new file mode 100644
index 0000000..6518a80
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/util_darwin_test.go
@@ -0,0 +1,71 @@
+package main
+
+import (
+ "fmt"
+ "net"
+ "net/netip"
+ "syscall"
+
+ "golang.org/x/net/route"
+)
+
+func defaultRouteIP() (netip.Addr, error) {
+ idx, err := defaultRouteInterfaceIndex()
+ if err != nil {
+ return netip.Addr{}, err
+ }
+ iface, err := net.InterfaceByIndex(idx)
+ if err != nil {
+ return netip.Addr{}, err
+ }
+ addrs, err := iface.Addrs()
+ if err != nil {
+ return netip.Addr{}, err
+ }
+ for _, addr := range addrs {
+ ip := addr.(*net.IPNet).IP
+ if ip.To4() != nil {
+ a, _ := netip.AddrFromSlice(ip)
+ return a, nil
+ }
+ }
+
+ return netip.Addr{}, err
+}
+
+func defaultRouteInterfaceIndex() (int, error) {
+ rib, err := route.FetchRIB(syscall.AF_UNSPEC, syscall.NET_RT_DUMP2, 0)
+ if err != nil {
+ return 0, fmt.Errorf("route.FetchRIB: %w", err)
+ }
+ msgs, err := route.ParseRIB(syscall.NET_RT_IFLIST2, rib)
+ if err != nil {
+ return 0, fmt.Errorf("route.ParseRIB: %w", err)
+ }
+ for _, message := range msgs {
+ routeMessage := message.(*route.RouteMessage)
+ if routeMessage.Flags&(syscall.RTF_UP|syscall.RTF_GATEWAY|syscall.RTF_STATIC) == 0 {
+ continue
+ }
+
+ addresses := routeMessage.Addrs
+
+ destination, ok := addresses[0].(*route.Inet4Addr)
+ if !ok {
+ continue
+ }
+
+ if destination.IP != [4]byte{0, 0, 0, 0} {
+ continue
+ }
+
+ switch addresses[1].(type) {
+ case *route.Inet4Addr:
+ return routeMessage.Index, nil
+ default:
+ continue
+ }
+ }
+
+ return 0, fmt.Errorf("ambiguous gateway interfaces found")
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/util_other_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/util_other_test.go
new file mode 100644
index 0000000..fc4a68a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/util_other_test.go
@@ -0,0 +1,12 @@
+//go:build !darwin
+
+package main
+
+import (
+ "errors"
+ "net/netip"
+)
+
+func defaultRouteIP() (netip.Addr, error) {
+ return netip.Addr{}, errors.New("not supported")
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/vless_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/vless_test.go
new file mode 100644
index 0000000..d0e6f07
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/vless_test.go
@@ -0,0 +1,131 @@
+package main
+
+import (
+ "fmt"
+ "testing"
+ "time"
+
+ "github.com/docker/docker/api/types/container"
+ "github.com/metacubex/mihomo/adapter/outbound"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/stretchr/testify/assert"
+)
+
+// TODO: fix udp test
+func TestMihomo_VlessTLS(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/v2ray/config.json", C.Path.Resolve("vless-tls.json")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/fullchain.pem", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/privkey.pem", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vless-tls")
+ if err != nil {
+ assert.FailNow(t, err.Error())
+ }
+ defer cleanContainer(id)
+
+ proxy, err := outbound.NewVless(outbound.VlessOption{
+ Name: "vless",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ TLS: true,
+ SkipCertVerify: true,
+ ServerName: "example.org",
+ UDP: true,
+ })
+ if err != nil {
+ assert.FailNow(t, err.Error())
+ }
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+// TODO: fix udp test
+func TestMihomo_VlessXTLS(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageXray,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/xray/config.json", C.Path.Resolve("vless-xtls.json")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/fullchain.pem", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/privkey.pem", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vless-xtls")
+ if err != nil {
+ assert.FailNow(t, err.Error())
+ }
+ defer cleanContainer(id)
+
+ proxy, err := outbound.NewVless(outbound.VlessOption{
+ Name: "vless",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ TLS: true,
+ SkipCertVerify: true,
+ ServerName: "example.org",
+ UDP: true,
+ Flow: "xtls-rprx-direct",
+ })
+ if err != nil {
+ assert.FailNow(t, err.Error())
+ }
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+// TODO: fix udp test
+func TestMihomo_VlessWS(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/v2ray/config.json", C.Path.Resolve("vless-ws.json")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/fullchain.pem", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/privkey.pem", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vless-ws")
+ if err != nil {
+ assert.FailNow(t, err.Error())
+ }
+ defer cleanContainer(id)
+
+ proxy, err := outbound.NewVless(outbound.VlessOption{
+ Name: "vless",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ TLS: true,
+ SkipCertVerify: true,
+ ServerName: "example.org",
+ Network: "ws",
+ UDP: true,
+ })
+ if err != nil {
+ assert.FailNow(t, err.Error())
+ }
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/test/vmess_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/test/vmess_test.go
new file mode 100644
index 0000000..80c3d4d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/test/vmess_test.go
@@ -0,0 +1,462 @@
+package main
+
+import (
+ "fmt"
+ "testing"
+ "time"
+
+ "github.com/docker/docker/api/types/container"
+ "github.com/metacubex/mihomo/adapter/outbound"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/stretchr/testify/require"
+)
+
+func TestMihomo_Vmess(t *testing.T) {
+ configPath := C.Path.Resolve("vmess.json")
+
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{fmt.Sprintf("%s:/etc/v2ray/config.json", configPath)},
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ UDP: true,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_VmessAuthenticatedLength(t *testing.T) {
+ configPath := C.Path.Resolve("vmess.json")
+
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{fmt.Sprintf("%s:/etc/v2ray/config.json", configPath)},
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ UDP: true,
+ AuthenticatedLength: true,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_VmessPacketAddr(t *testing.T) {
+ configPath := C.Path.Resolve("vmess.json")
+
+ cfg := &container.Config{
+ Image: ImageVmessLatest,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{fmt.Sprintf("%s:/etc/v2ray/config.json", configPath)},
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess")
+ require.NoError(t, err)
+
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ UDP: true,
+ PacketAddr: true,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_VmessTLS(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/v2ray/config.json", C.Path.Resolve("vmess-tls.json")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/fullchain.pem", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/privkey.pem", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess-tls")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ TLS: true,
+ SkipCertVerify: true,
+ ServerName: "example.org",
+ UDP: true,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_VmessHTTP2(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/v2ray/config.json", C.Path.Resolve("vmess-http2.json")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/fullchain.pem", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/privkey.pem", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess-http2")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ Network: "h2",
+ TLS: true,
+ SkipCertVerify: true,
+ ServerName: "example.org",
+ UDP: true,
+ HTTP2Opts: outbound.HTTP2Options{
+ Host: []string{"example.org"},
+ Path: "/test",
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_VmessHTTP(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/v2ray/config.json", C.Path.Resolve("vmess-http.json")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess-http")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ Network: "http",
+ UDP: true,
+ HTTPOpts: outbound.HTTPOptions{
+ Method: "GET",
+ Path: []string{"/"},
+ Headers: map[string][]string{
+ "Host": {"www.amazon.com"},
+ "User-Agent": {
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 Edg/84.0.522.49",
+ },
+ "Accept-Encoding": {
+ "gzip, deflate",
+ },
+ "Connection": {
+ "keep-alive",
+ },
+ "Pragma": {"no-cache"},
+ },
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_VmessWebsocket(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/v2ray/config.json", C.Path.Resolve("vmess-ws.json")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess-ws")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ Network: "ws",
+ UDP: true,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_VmessWebsocketTLS(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/v2ray/config.json", C.Path.Resolve("vmess-ws-tls.json")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/fullchain.pem", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/privkey.pem", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess-ws")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ Network: "ws",
+ TLS: true,
+ SkipCertVerify: true,
+ UDP: true,
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_VmessGrpc(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/v2ray/config.json", C.Path.Resolve("vmess-grpc.json")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/fullchain.pem", C.Path.Resolve("example.org.pem")),
+ fmt.Sprintf("%s:/etc/ssl/v2ray/privkey.pem", C.Path.Resolve("example.org-key.pem")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess-grpc")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ Network: "grpc",
+ TLS: true,
+ SkipCertVerify: true,
+ UDP: true,
+ ServerName: "example.org",
+ GrpcOpts: outbound.GrpcOptions{
+ GrpcServiceName: "example!",
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_VmessWebsocket0RTT(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/v2ray/config.json", C.Path.Resolve("vmess-ws-0rtt.json")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess-ws-0rtt")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ Network: "ws",
+ UDP: true,
+ ServerName: "example.org",
+ WSOpts: outbound.WSOptions{
+ MaxEarlyData: 2048,
+ EarlyDataHeaderName: "Sec-WebSocket-Protocol",
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func TestMihomo_VmessWebsocketXray0RTT(t *testing.T) {
+ cfg := &container.Config{
+ Image: ImageXray,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{
+ fmt.Sprintf("%s:/etc/xray/config.json", C.Path.Resolve("vmess-ws-0rtt.json")),
+ },
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess-xray-ws-0rtt")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ Network: "ws",
+ UDP: true,
+ ServerName: "example.org",
+ WSOpts: outbound.WSOptions{
+ Path: "/?ed=2048",
+ },
+ })
+ require.NoError(t, err)
+
+ time.Sleep(waitTime)
+ testSuit(t, proxy)
+}
+
+func Benchmark_Vmess(b *testing.B) {
+ configPath := C.Path.Resolve("vmess.json")
+
+ cfg := &container.Config{
+ Image: ImageVmess,
+ ExposedPorts: defaultExposedPorts,
+ }
+ hostCfg := &container.HostConfig{
+ PortBindings: defaultPortBindings,
+ Binds: []string{fmt.Sprintf("%s:/etc/v2ray/config.json", configPath)},
+ }
+
+ id, err := startContainer(cfg, hostCfg, "vmess-bench")
+ require.NoError(b, err)
+
+ b.Cleanup(func() {
+ cleanContainer(id)
+ })
+
+ proxy, err := outbound.NewVmess(outbound.VmessOption{
+ Name: "vmess",
+ Server: localIP.String(),
+ Port: 10002,
+ UUID: "b831381d-6324-4d53-ad4f-8cda48b30811",
+ Cipher: "auto",
+ AlterID: 0,
+ UDP: true,
+ })
+ require.NoError(b, err)
+
+ time.Sleep(waitTime)
+ benchmarkProxy(b, proxy)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/gun/gun.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/gun/gun.go
new file mode 100644
index 0000000..cf986c8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/gun/gun.go
@@ -0,0 +1,306 @@
+// Modified from: https://github.com/Qv2ray/gun-lite
+// License: MIT
+
+package gun
+
+import (
+ "bufio"
+ "context"
+ "crypto/tls"
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "io"
+ "net"
+ "net/http"
+ "net/url"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ "github.com/metacubex/mihomo/common/buf"
+ "github.com/metacubex/mihomo/common/pool"
+ tlsC "github.com/metacubex/mihomo/component/tls"
+
+ "golang.org/x/net/http2"
+)
+
+var (
+ ErrInvalidLength = errors.New("invalid length")
+ ErrSmallBuffer = errors.New("buffer too small")
+)
+
+var defaultHeader = http.Header{
+ "content-type": []string{"application/grpc"},
+ "user-agent": []string{"grpc-go/1.36.0"},
+}
+
+type DialFn = func(network, addr string) (net.Conn, error)
+
+type Conn struct {
+ response *http.Response
+ request *http.Request
+ transport *TransportWrap
+ writer *io.PipeWriter
+ once sync.Once
+ close atomic.Bool
+ err error
+ remain int
+ br *bufio.Reader
+ // deadlines
+ deadline *time.Timer
+}
+
+type Config struct {
+ ServiceName string
+ Host string
+ ClientFingerprint string
+}
+
+func (g *Conn) initRequest() {
+ response, err := g.transport.RoundTrip(g.request)
+ if err != nil {
+ g.err = err
+ g.writer.Close()
+ return
+ }
+
+ if !g.close.Load() {
+ g.response = response
+ g.br = bufio.NewReader(response.Body)
+ } else {
+ response.Body.Close()
+ }
+}
+
+func (g *Conn) Read(b []byte) (n int, err error) {
+ g.once.Do(g.initRequest)
+ if g.err != nil {
+ return 0, g.err
+ }
+
+ if g.remain > 0 {
+ size := g.remain
+ if len(b) < size {
+ size = len(b)
+ }
+
+ n, err = io.ReadFull(g.br, b[:size])
+ g.remain -= n
+ return
+ } else if g.response == nil {
+ return 0, net.ErrClosed
+ }
+
+ // 0x00 grpclength(uint32) 0x0A uleb128 payload
+ _, err = g.br.Discard(6)
+ if err != nil {
+ return 0, err
+ }
+
+ protobufPayloadLen, err := binary.ReadUvarint(g.br)
+ if err != nil {
+ return 0, ErrInvalidLength
+ }
+
+ size := int(protobufPayloadLen)
+ if len(b) < size {
+ size = len(b)
+ }
+
+ n, err = io.ReadFull(g.br, b[:size])
+ if err != nil {
+ return
+ }
+
+ remain := int(protobufPayloadLen) - n
+ if remain > 0 {
+ g.remain = remain
+ }
+
+ return n, nil
+}
+
+func (g *Conn) Write(b []byte) (n int, err error) {
+ protobufHeader := [binary.MaxVarintLen64 + 1]byte{0x0A}
+ varuintSize := binary.PutUvarint(protobufHeader[1:], uint64(len(b)))
+ var grpcHeader [5]byte
+ grpcPayloadLen := uint32(varuintSize + 1 + len(b))
+ binary.BigEndian.PutUint32(grpcHeader[1:5], grpcPayloadLen)
+
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ buf.Write(grpcHeader[:])
+ buf.Write(protobufHeader[:varuintSize+1])
+ buf.Write(b)
+
+ _, err = g.writer.Write(buf.Bytes())
+ if err == io.ErrClosedPipe && g.err != nil {
+ err = g.err
+ }
+
+ return len(b), err
+}
+
+func (g *Conn) WriteBuffer(buffer *buf.Buffer) error {
+ defer buffer.Release()
+ dataLen := buffer.Len()
+ varLen := UVarintLen(uint64(dataLen))
+ header := buffer.ExtendHeader(6 + varLen)
+ _ = header[6] // bounds check hint to compiler
+ header[0] = 0x00
+ binary.BigEndian.PutUint32(header[1:5], uint32(1+varLen+dataLen))
+ header[5] = 0x0A
+ binary.PutUvarint(header[6:], uint64(dataLen))
+ _, err := g.writer.Write(buffer.Bytes())
+
+ if err == io.ErrClosedPipe && g.err != nil {
+ err = g.err
+ }
+
+ return err
+}
+
+func (g *Conn) FrontHeadroom() int {
+ return 6 + binary.MaxVarintLen64
+}
+
+func (g *Conn) Close() error {
+ g.close.Store(true)
+ if r := g.response; r != nil {
+ r.Body.Close()
+ }
+
+ return g.writer.Close()
+}
+
+func (g *Conn) LocalAddr() net.Addr { return g.transport.LocalAddr() }
+func (g *Conn) RemoteAddr() net.Addr { return g.transport.RemoteAddr() }
+func (g *Conn) SetReadDeadline(t time.Time) error { return g.SetDeadline(t) }
+func (g *Conn) SetWriteDeadline(t time.Time) error { return g.SetDeadline(t) }
+
+func (g *Conn) SetDeadline(t time.Time) error {
+ d := time.Until(t)
+ if g.deadline != nil {
+ g.deadline.Reset(d)
+ return nil
+ }
+ g.deadline = time.AfterFunc(d, func() {
+ g.Close()
+ })
+ return nil
+}
+
+func NewHTTP2Client(dialFn DialFn, tlsConfig *tls.Config, Fingerprint string, realityConfig *tlsC.RealityConfig) *TransportWrap {
+ wrap := TransportWrap{}
+
+ dialFunc := func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error) {
+ pconn, err := dialFn(network, addr)
+ if err != nil {
+ return nil, err
+ }
+ wrap.remoteAddr = pconn.RemoteAddr()
+
+ if tlsConfig == nil {
+ return pconn, nil
+ }
+
+ if len(Fingerprint) != 0 {
+ if realityConfig == nil {
+ if fingerprint, exists := tlsC.GetFingerprint(Fingerprint); exists {
+ utlsConn := tlsC.UClient(pconn, cfg, fingerprint)
+ if err := utlsConn.HandshakeContext(ctx); err != nil {
+ pconn.Close()
+ return nil, err
+ }
+ state := utlsConn.ConnectionState()
+ if p := state.NegotiatedProtocol; p != http2.NextProtoTLS {
+ utlsConn.Close()
+ return nil, fmt.Errorf("http2: unexpected ALPN protocol %s, want %s", p, http2.NextProtoTLS)
+ }
+ return utlsConn, nil
+ }
+ } else {
+ realityConn, err := tlsC.GetRealityConn(ctx, pconn, Fingerprint, cfg, realityConfig)
+ if err != nil {
+ pconn.Close()
+ return nil, err
+ }
+ //state := realityConn.(*utls.UConn).ConnectionState()
+ //if p := state.NegotiatedProtocol; p != http2.NextProtoTLS {
+ // realityConn.Close()
+ // return nil, fmt.Errorf("http2: unexpected ALPN protocol %s, want %s", p, http2.NextProtoTLS)
+ //}
+ return realityConn, nil
+ }
+ }
+ if realityConfig != nil {
+ return nil, errors.New("REALITY is based on uTLS, please set a client-fingerprint")
+ }
+
+ conn := tls.Client(pconn, cfg)
+ if err := conn.HandshakeContext(ctx); err != nil {
+ pconn.Close()
+ return nil, err
+ }
+ state := conn.ConnectionState()
+ if p := state.NegotiatedProtocol; p != http2.NextProtoTLS {
+ conn.Close()
+ return nil, fmt.Errorf("http2: unexpected ALPN protocol %s, want %s", p, http2.NextProtoTLS)
+ }
+ return conn, nil
+ }
+
+ wrap.Transport = &http2.Transport{
+ DialTLSContext: dialFunc,
+ TLSClientConfig: tlsConfig,
+ AllowHTTP: false,
+ DisableCompression: true,
+ PingTimeout: 0,
+ }
+
+ return &wrap
+}
+
+func StreamGunWithTransport(transport *TransportWrap, cfg *Config) (net.Conn, error) {
+ serviceName := "GunService"
+ if cfg.ServiceName != "" {
+ serviceName = cfg.ServiceName
+ }
+
+ reader, writer := io.Pipe()
+ request := &http.Request{
+ Method: http.MethodPost,
+ Body: reader,
+ URL: &url.URL{
+ Scheme: "https",
+ Host: cfg.Host,
+ Path: fmt.Sprintf("/%s/Tun", serviceName),
+ // for unescape path
+ Opaque: fmt.Sprintf("//%s/%s/Tun", cfg.Host, serviceName),
+ },
+ Proto: "HTTP/2",
+ ProtoMajor: 2,
+ ProtoMinor: 0,
+ Header: defaultHeader,
+ }
+
+ conn := &Conn{
+ request: request,
+ transport: transport,
+ writer: writer,
+ close: atomic.NewBool(false),
+ }
+
+ go conn.once.Do(conn.initRequest)
+ return conn, nil
+}
+
+func StreamGunWithConn(conn net.Conn, tlsConfig *tls.Config, cfg *Config, realityConfig *tlsC.RealityConfig) (net.Conn, error) {
+ dialFn := func(network, addr string) (net.Conn, error) {
+ return conn, nil
+ }
+
+ transport := NewHTTP2Client(dialFn, tlsConfig, cfg.ClientFingerprint, realityConfig)
+ return StreamGunWithTransport(transport, cfg)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/gun/transport.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/gun/transport.go
new file mode 100644
index 0000000..12ccfd5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/gun/transport.go
@@ -0,0 +1,20 @@
+package gun
+
+import (
+ "golang.org/x/net/http2"
+ "net"
+)
+
+type TransportWrap struct {
+ *http2.Transport
+ remoteAddr net.Addr
+ localAddr net.Addr
+}
+
+func (tw *TransportWrap) RemoteAddr() net.Addr {
+ return tw.remoteAddr
+}
+
+func (tw *TransportWrap) LocalAddr() net.Addr {
+ return tw.localAddr
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/gun/utils.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/gun/utils.go
new file mode 100644
index 0000000..e4a6631
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/gun/utils.go
@@ -0,0 +1,26 @@
+package gun
+
+func UVarintLen(x uint64) int {
+ switch {
+ case x < 1<<(7*1):
+ return 1
+ case x < 1<<(7*2):
+ return 2
+ case x < 1<<(7*3):
+ return 3
+ case x < 1<<(7*4):
+ return 4
+ case x < 1<<(7*5):
+ return 5
+ case x < 1<<(7*6):
+ return 6
+ case x < 1<<(7*7):
+ return 7
+ case x < 1<<(7*8):
+ return 8
+ case x < 1<<(7*9):
+ return 9
+ default:
+ return 10
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/congestion/brutal.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/congestion/brutal.go
new file mode 100644
index 0000000..601949d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/congestion/brutal.go
@@ -0,0 +1,144 @@
+package congestion
+
+import (
+ "github.com/metacubex/quic-go/congestion"
+ "time"
+)
+
+const (
+ initMaxDatagramSize = 1252
+
+ pktInfoSlotCount = 5 // slot index is based on seconds, so this is basically how many seconds we sample
+ minSampleCount = 50
+ minAckRate = 0.8
+)
+
+var _ congestion.CongestionControlEx = &BrutalSender{}
+
+type BrutalSender struct {
+ rttStats congestion.RTTStatsProvider
+ bps congestion.ByteCount
+ maxDatagramSize congestion.ByteCount
+ pacer *pacer
+
+ pktInfoSlots [pktInfoSlotCount]pktInfo
+ ackRate float64
+}
+
+type pktInfo struct {
+ Timestamp int64
+ AckCount uint64
+ LossCount uint64
+}
+
+func NewBrutalSender(bps congestion.ByteCount) *BrutalSender {
+ bs := &BrutalSender{
+ bps: bps,
+ maxDatagramSize: initMaxDatagramSize,
+ ackRate: 1,
+ }
+ bs.pacer = newPacer(func() congestion.ByteCount {
+ return congestion.ByteCount(float64(bs.bps) / bs.ackRate)
+ })
+ return bs
+}
+
+func (b *BrutalSender) SetRTTStatsProvider(rttStats congestion.RTTStatsProvider) {
+ b.rttStats = rttStats
+}
+
+func (b *BrutalSender) TimeUntilSend(bytesInFlight congestion.ByteCount) time.Time {
+ return b.pacer.TimeUntilSend()
+}
+
+func (b *BrutalSender) HasPacingBudget(now time.Time) bool {
+ return b.pacer.Budget(now) >= b.maxDatagramSize
+}
+
+func (b *BrutalSender) CanSend(bytesInFlight congestion.ByteCount) bool {
+ return bytesInFlight < b.GetCongestionWindow()
+}
+
+func (b *BrutalSender) GetCongestionWindow() congestion.ByteCount {
+ rtt := maxDuration(b.rttStats.LatestRTT(), b.rttStats.SmoothedRTT())
+ if rtt <= 0 {
+ return 10240
+ }
+ return congestion.ByteCount(float64(b.bps) * rtt.Seconds() * 1.5 / b.ackRate)
+}
+
+func (b *BrutalSender) OnPacketSent(sentTime time.Time, bytesInFlight congestion.ByteCount,
+ packetNumber congestion.PacketNumber, bytes congestion.ByteCount, isRetransmittable bool) {
+ b.pacer.SentPacket(sentTime, bytes)
+}
+
+func (b *BrutalSender) OnPacketAcked(number congestion.PacketNumber, ackedBytes congestion.ByteCount,
+ priorInFlight congestion.ByteCount, eventTime time.Time) {
+ // Stub
+}
+
+func (b *BrutalSender) OnCongestionEvent(number congestion.PacketNumber, lostBytes congestion.ByteCount,
+ priorInFlight congestion.ByteCount) {
+ // Stub
+}
+
+func (b *BrutalSender) OnCongestionEventEx(priorInFlight congestion.ByteCount, eventTime time.Time, ackedPackets []congestion.AckedPacketInfo, lostPackets []congestion.LostPacketInfo) {
+ currentTimestamp := eventTime.Unix()
+ slot := currentTimestamp % pktInfoSlotCount
+ if b.pktInfoSlots[slot].Timestamp == currentTimestamp {
+ b.pktInfoSlots[slot].LossCount += uint64(len(lostPackets))
+ b.pktInfoSlots[slot].AckCount += uint64(len(ackedPackets))
+ } else {
+ // uninitialized slot or too old, reset
+ b.pktInfoSlots[slot].Timestamp = currentTimestamp
+ b.pktInfoSlots[slot].AckCount = uint64(len(ackedPackets))
+ b.pktInfoSlots[slot].LossCount = uint64(len(lostPackets))
+ }
+ b.updateAckRate(currentTimestamp)
+}
+
+func (b *BrutalSender) SetMaxDatagramSize(size congestion.ByteCount) {
+ b.maxDatagramSize = size
+ b.pacer.SetMaxDatagramSize(size)
+}
+
+func (b *BrutalSender) updateAckRate(currentTimestamp int64) {
+ minTimestamp := currentTimestamp - pktInfoSlotCount
+ var ackCount, lossCount uint64
+ for _, info := range b.pktInfoSlots {
+ if info.Timestamp < minTimestamp {
+ continue
+ }
+ ackCount += info.AckCount
+ lossCount += info.LossCount
+ }
+ if ackCount+lossCount < minSampleCount {
+ b.ackRate = 1
+ return
+ }
+ rate := float64(ackCount) / float64(ackCount+lossCount)
+ if rate < minAckRate {
+ b.ackRate = minAckRate
+ return
+ }
+ b.ackRate = rate
+}
+
+func (b *BrutalSender) InSlowStart() bool {
+ return false
+}
+
+func (b *BrutalSender) InRecovery() bool {
+ return false
+}
+
+func (b *BrutalSender) MaybeExitSlowStart() {}
+
+func (b *BrutalSender) OnRetransmissionTimeout(packetsRetransmitted bool) {}
+
+func maxDuration(a, b time.Duration) time.Duration {
+ if a > b {
+ return a
+ }
+ return b
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/congestion/pacer.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/congestion/pacer.go
new file mode 100644
index 0000000..2dff530
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/congestion/pacer.go
@@ -0,0 +1,85 @@
+package congestion
+
+import (
+ "github.com/metacubex/quic-go/congestion"
+ "math"
+ "time"
+)
+
+const (
+ maxBurstPackets = 10
+ minPacingDelay = time.Millisecond
+)
+
+// The pacer implements a token bucket pacing algorithm.
+type pacer struct {
+ budgetAtLastSent congestion.ByteCount
+ maxDatagramSize congestion.ByteCount
+ lastSentTime time.Time
+ getBandwidth func() congestion.ByteCount // in bytes/s
+}
+
+func newPacer(getBandwidth func() congestion.ByteCount) *pacer {
+ p := &pacer{
+ budgetAtLastSent: maxBurstPackets * initMaxDatagramSize,
+ maxDatagramSize: initMaxDatagramSize,
+ getBandwidth: getBandwidth,
+ }
+ return p
+}
+
+func (p *pacer) SentPacket(sendTime time.Time, size congestion.ByteCount) {
+ budget := p.Budget(sendTime)
+ if size > budget {
+ p.budgetAtLastSent = 0
+ } else {
+ p.budgetAtLastSent = budget - size
+ }
+ p.lastSentTime = sendTime
+}
+
+func (p *pacer) Budget(now time.Time) congestion.ByteCount {
+ if p.lastSentTime.IsZero() {
+ return p.maxBurstSize()
+ }
+ budget := p.budgetAtLastSent + (p.getBandwidth()*congestion.ByteCount(now.Sub(p.lastSentTime).Nanoseconds()))/1e9
+ return minByteCount(p.maxBurstSize(), budget)
+}
+
+func (p *pacer) maxBurstSize() congestion.ByteCount {
+ return maxByteCount(
+ congestion.ByteCount((minPacingDelay+time.Millisecond).Nanoseconds())*p.getBandwidth()/1e9,
+ maxBurstPackets*p.maxDatagramSize,
+ )
+}
+
+// TimeUntilSend returns when the next packet should be sent.
+// It returns the zero value of time.Time if a packet can be sent immediately.
+func (p *pacer) TimeUntilSend() time.Time {
+ if p.budgetAtLastSent >= p.maxDatagramSize {
+ return time.Time{}
+ }
+ return p.lastSentTime.Add(maxDuration(
+ minPacingDelay,
+ time.Duration(math.Ceil(float64(p.maxDatagramSize-p.budgetAtLastSent)*1e9/
+ float64(p.getBandwidth())))*time.Nanosecond,
+ ))
+}
+
+func (p *pacer) SetMaxDatagramSize(s congestion.ByteCount) {
+ p.maxDatagramSize = s
+}
+
+func maxByteCount(a, b congestion.ByteCount) congestion.ByteCount {
+ if a < b {
+ return b
+ }
+ return a
+}
+
+func minByteCount(a, b congestion.ByteCount) congestion.ByteCount {
+ if a < b {
+ return a
+ }
+ return b
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/LICENSE b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/LICENSE
new file mode 100644
index 0000000..79fbecb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/LICENSE
@@ -0,0 +1 @@
+Grabbed from https://github.com/xtaci/tcpraw with modifications
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/obfs.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/obfs.go
new file mode 100644
index 0000000..cf58e56
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/obfs.go
@@ -0,0 +1,93 @@
+package faketcp
+
+import (
+ "github.com/metacubex/mihomo/transport/hysteria/obfs"
+ "net"
+ "sync"
+ "syscall"
+ "time"
+)
+
+const udpBufferSize = 65535
+
+type ObfsFakeTCPConn struct {
+ orig *TCPConn
+ obfs obfs.Obfuscator
+ readBuf []byte
+ readMutex sync.Mutex
+ writeBuf []byte
+ writeMutex sync.Mutex
+}
+
+func NewObfsFakeTCPConn(orig *TCPConn, obfs obfs.Obfuscator) *ObfsFakeTCPConn {
+ return &ObfsFakeTCPConn{
+ orig: orig,
+ obfs: obfs,
+ readBuf: make([]byte, udpBufferSize),
+ writeBuf: make([]byte, udpBufferSize),
+ }
+}
+
+func (c *ObfsFakeTCPConn) ReadFrom(p []byte) (int, net.Addr, error) {
+ for {
+ c.readMutex.Lock()
+ n, addr, err := c.orig.ReadFrom(c.readBuf)
+ if n <= 0 {
+ c.readMutex.Unlock()
+ return 0, addr, err
+ }
+ newN := c.obfs.Deobfuscate(c.readBuf[:n], p)
+ c.readMutex.Unlock()
+ if newN > 0 {
+ // Valid packet
+ return newN, addr, err
+ } else if err != nil {
+ // Not valid and orig.ReadFrom had some error
+ return 0, addr, err
+ }
+ }
+}
+
+func (c *ObfsFakeTCPConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
+ c.writeMutex.Lock()
+ bn := c.obfs.Obfuscate(p, c.writeBuf)
+ _, err = c.orig.WriteTo(c.writeBuf[:bn], addr)
+ c.writeMutex.Unlock()
+ if err != nil {
+ return 0, err
+ } else {
+ return len(p), nil
+ }
+}
+
+func (c *ObfsFakeTCPConn) Close() error {
+ return c.orig.Close()
+}
+
+func (c *ObfsFakeTCPConn) LocalAddr() net.Addr {
+ return c.orig.LocalAddr()
+}
+
+func (c *ObfsFakeTCPConn) SetDeadline(t time.Time) error {
+ return c.orig.SetDeadline(t)
+}
+
+func (c *ObfsFakeTCPConn) SetReadDeadline(t time.Time) error {
+ return c.orig.SetReadDeadline(t)
+}
+
+func (c *ObfsFakeTCPConn) SetWriteDeadline(t time.Time) error {
+ return c.orig.SetWriteDeadline(t)
+}
+
+func (c *ObfsFakeTCPConn) SetReadBuffer(bytes int) error {
+ return c.orig.SetReadBuffer(bytes)
+}
+
+func (c *ObfsFakeTCPConn) SetWriteBuffer(bytes int) error {
+ return c.orig.SetWriteBuffer(bytes)
+}
+
+func (c *ObfsFakeTCPConn) SyscallConn() (syscall.RawConn, error) {
+ return c.orig.SyscallConn()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/tcp_linux.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/tcp_linux.go
new file mode 100644
index 0000000..2aaaf13
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/tcp_linux.go
@@ -0,0 +1,634 @@
+//go:build linux && !no_fake_tcp
+// +build linux,!no_fake_tcp
+
+package faketcp
+
+import (
+ "crypto/rand"
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "net"
+ "sync"
+ "sync/atomic"
+ "syscall"
+ "time"
+
+ "github.com/coreos/go-iptables/iptables"
+ "github.com/metacubex/gopacket"
+ "github.com/metacubex/gopacket/layers"
+
+ "github.com/metacubex/mihomo/component/dialer"
+)
+
+var (
+ errOpNotImplemented = errors.New("operation not implemented")
+ errTimeout = errors.New("timeout")
+ expire = time.Minute
+)
+
+// a message from NIC
+type message struct {
+ bts []byte
+ addr net.Addr
+}
+
+// a tcp flow information of a connection pair
+type tcpFlow struct {
+ conn *net.TCPConn // the related system TCP connection of this flow
+ handle *net.IPConn // the handle to send packets
+ seq uint32 // TCP sequence number
+ ack uint32 // TCP acknowledge number
+ networkLayer gopacket.SerializableLayer // network layer header for tx
+ ts time.Time // last packet incoming time
+ buf gopacket.SerializeBuffer // a buffer for write
+ tcpHeader layers.TCP
+}
+
+// TCPConn defines a TCP-packet oriented connection
+type TCPConn struct {
+ die chan struct{}
+ dieOnce sync.Once
+
+ // the main golang sockets
+ tcpconn *net.TCPConn // from net.Dial
+ listener *net.TCPListener // from net.Listen
+
+ // handles
+ handles []*net.IPConn
+
+ // packets captured from all related NICs will be delivered to this channel
+ chMessage chan message
+
+ // all TCP flows
+ flowTable map[string]*tcpFlow
+ flowsLock sync.Mutex
+
+ // iptables
+ iptables *iptables.IPTables
+ iprule []string
+
+ ip6tables *iptables.IPTables
+ ip6rule []string
+
+ // deadlines
+ readDeadline atomic.Value
+ writeDeadline atomic.Value
+
+ // serialization
+ opts gopacket.SerializeOptions
+}
+
+// lockflow locks the flow table and apply function `f` to the entry, and create one if not exist
+func (conn *TCPConn) lockflow(addr net.Addr, f func(e *tcpFlow)) {
+ key := addr.String()
+ conn.flowsLock.Lock()
+ e := conn.flowTable[key]
+ if e == nil { // entry first visit
+ e = new(tcpFlow)
+ e.ts = time.Now()
+ e.buf = gopacket.NewSerializeBuffer()
+ }
+ f(e)
+ conn.flowTable[key] = e
+ conn.flowsLock.Unlock()
+}
+
+// clean expired flows
+func (conn *TCPConn) cleaner() {
+ ticker := time.NewTicker(time.Minute)
+ select {
+ case <-conn.die:
+ return
+ case <-ticker.C:
+ conn.flowsLock.Lock()
+ for k, v := range conn.flowTable {
+ if time.Now().Sub(v.ts) > expire {
+ if v.conn != nil {
+ setTTL(v.conn, 64)
+ v.conn.Close()
+ }
+ delete(conn.flowTable, k)
+ }
+ }
+ conn.flowsLock.Unlock()
+ }
+}
+
+// captureFlow capture every inbound packets based on rules of BPF
+func (conn *TCPConn) captureFlow(handle *net.IPConn, port int) {
+ buf := make([]byte, 2048)
+ opt := gopacket.DecodeOptions{NoCopy: true, Lazy: true}
+ for {
+ n, addr, err := handle.ReadFromIP(buf)
+ if err != nil {
+ return
+ }
+
+ // try decoding TCP frame from buf[:n]
+ packet := gopacket.NewPacket(buf[:n], layers.LayerTypeTCP, opt)
+ transport := packet.TransportLayer()
+ tcp, ok := transport.(*layers.TCP)
+ if !ok {
+ continue
+ }
+
+ // port filtering
+ if int(tcp.DstPort) != port {
+ continue
+ }
+
+ // address building
+ var src net.TCPAddr
+ src.IP = addr.IP
+ src.Port = int(tcp.SrcPort)
+
+ var orphan bool
+ // flow maintaince
+ conn.lockflow(&src, func(e *tcpFlow) {
+ if e.conn == nil { // make sure it's related to net.TCPConn
+ orphan = true // mark as orphan if it's not related net.TCPConn
+ }
+
+ // to keep track of TCP header related to this source
+ e.ts = time.Now()
+ if tcp.ACK {
+ e.seq = tcp.Ack
+ }
+ if tcp.SYN {
+ e.ack = tcp.Seq + 1
+ }
+ if tcp.PSH {
+ if e.ack == tcp.Seq {
+ e.ack = tcp.Seq + uint32(len(tcp.Payload))
+ }
+ }
+ e.handle = handle
+ })
+
+ // push data if it's not orphan
+ if !orphan && tcp.PSH {
+ payload := make([]byte, len(tcp.Payload))
+ copy(payload, tcp.Payload)
+ select {
+ case conn.chMessage <- message{payload, &src}:
+ case <-conn.die:
+ return
+ }
+ }
+ }
+}
+
+// ReadFrom implements the PacketConn ReadFrom method.
+func (conn *TCPConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
+ var timer *time.Timer
+ var deadline <-chan time.Time
+ if d, ok := conn.readDeadline.Load().(time.Time); ok && !d.IsZero() {
+ timer = time.NewTimer(time.Until(d))
+ defer timer.Stop()
+ deadline = timer.C
+ }
+
+ select {
+ case <-deadline:
+ return 0, nil, errTimeout
+ case <-conn.die:
+ return 0, nil, io.EOF
+ case packet := <-conn.chMessage:
+ n = copy(p, packet.bts)
+ return n, packet.addr, nil
+ }
+}
+
+// WriteTo implements the PacketConn WriteTo method.
+func (conn *TCPConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
+ var deadline <-chan time.Time
+ if d, ok := conn.writeDeadline.Load().(time.Time); ok && !d.IsZero() {
+ timer := time.NewTimer(time.Until(d))
+ defer timer.Stop()
+ deadline = timer.C
+ }
+
+ select {
+ case <-deadline:
+ return 0, errTimeout
+ case <-conn.die:
+ return 0, io.EOF
+ default:
+ raddr, err := net.ResolveTCPAddr("tcp", addr.String())
+ if err != nil {
+ return 0, err
+ }
+
+ var lport int
+ if conn.tcpconn != nil {
+ lport = conn.tcpconn.LocalAddr().(*net.TCPAddr).Port
+ } else {
+ lport = conn.listener.Addr().(*net.TCPAddr).Port
+ }
+
+ conn.lockflow(addr, func(e *tcpFlow) {
+ // if the flow doesn't have handle , assume this packet has lost, without notification
+ if e.handle == nil {
+ n = len(p)
+ return
+ }
+
+ // build tcp header with local and remote port
+ e.tcpHeader.SrcPort = layers.TCPPort(lport)
+ e.tcpHeader.DstPort = layers.TCPPort(raddr.Port)
+ binary.Read(rand.Reader, binary.LittleEndian, &e.tcpHeader.Window)
+ e.tcpHeader.Window |= 0x8000 // make sure it's larger than 32768
+ e.tcpHeader.Ack = e.ack
+ e.tcpHeader.Seq = e.seq
+ e.tcpHeader.PSH = true
+ e.tcpHeader.ACK = true
+
+ // build IP header with src & dst ip for TCP checksum
+ if raddr.IP.To4() != nil {
+ ip := &layers.IPv4{
+ Protocol: layers.IPProtocolTCP,
+ SrcIP: e.handle.LocalAddr().(*net.IPAddr).IP.To4(),
+ DstIP: raddr.IP.To4(),
+ }
+ e.tcpHeader.SetNetworkLayerForChecksum(ip)
+ } else {
+ ip := &layers.IPv6{
+ NextHeader: layers.IPProtocolTCP,
+ SrcIP: e.handle.LocalAddr().(*net.IPAddr).IP.To16(),
+ DstIP: raddr.IP.To16(),
+ }
+ e.tcpHeader.SetNetworkLayerForChecksum(ip)
+ }
+
+ e.buf.Clear()
+ gopacket.SerializeLayers(e.buf, conn.opts, &e.tcpHeader, gopacket.Payload(p))
+ if conn.tcpconn != nil {
+ _, err = e.handle.Write(e.buf.Bytes())
+ } else {
+ _, err = e.handle.WriteToIP(e.buf.Bytes(), &net.IPAddr{IP: raddr.IP})
+ }
+ // increase seq in flow
+ e.seq += uint32(len(p))
+ n = len(p)
+ })
+ }
+ return
+}
+
+// Close closes the connection.
+func (conn *TCPConn) Close() error {
+ var err error
+ conn.dieOnce.Do(func() {
+ // signal closing
+ close(conn.die)
+
+ // close all established tcp connections
+ if conn.tcpconn != nil { // client
+ setTTL(conn.tcpconn, 64)
+ err = conn.tcpconn.Close()
+ } else if conn.listener != nil {
+ err = conn.listener.Close() // server
+ conn.flowsLock.Lock()
+ for k, v := range conn.flowTable {
+ if v.conn != nil {
+ setTTL(v.conn, 64)
+ v.conn.Close()
+ }
+ delete(conn.flowTable, k)
+ }
+ conn.flowsLock.Unlock()
+ }
+
+ // close handles
+ for k := range conn.handles {
+ conn.handles[k].Close()
+ }
+
+ // delete iptable
+ if conn.iptables != nil {
+ conn.iptables.Delete("filter", "OUTPUT", conn.iprule...)
+ }
+ if conn.ip6tables != nil {
+ conn.ip6tables.Delete("filter", "OUTPUT", conn.ip6rule...)
+ }
+ })
+ return err
+}
+
+// LocalAddr returns the local network address.
+func (conn *TCPConn) LocalAddr() net.Addr {
+ if conn.tcpconn != nil {
+ return conn.tcpconn.LocalAddr()
+ } else if conn.listener != nil {
+ return conn.listener.Addr()
+ }
+ return nil
+}
+
+// SetDeadline implements the Conn SetDeadline method.
+func (conn *TCPConn) SetDeadline(t time.Time) error {
+ if err := conn.SetReadDeadline(t); err != nil {
+ return err
+ }
+ if err := conn.SetWriteDeadline(t); err != nil {
+ return err
+ }
+ return nil
+}
+
+// SetReadDeadline implements the Conn SetReadDeadline method.
+func (conn *TCPConn) SetReadDeadline(t time.Time) error {
+ conn.readDeadline.Store(t)
+ return nil
+}
+
+// SetWriteDeadline implements the Conn SetWriteDeadline method.
+func (conn *TCPConn) SetWriteDeadline(t time.Time) error {
+ conn.writeDeadline.Store(t)
+ return nil
+}
+
+// SetDSCP sets the 6bit DSCP field in IPv4 header, or 8bit Traffic Class in IPv6 header.
+func (conn *TCPConn) SetDSCP(dscp int) error {
+ for k := range conn.handles {
+ if err := setDSCP(conn.handles[k], dscp); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+// SetReadBuffer sets the size of the operating system's receive buffer associated with the connection.
+func (conn *TCPConn) SetReadBuffer(bytes int) error {
+ var err error
+ for k := range conn.handles {
+ if err := conn.handles[k].SetReadBuffer(bytes); err != nil {
+ return err
+ }
+ }
+ return err
+}
+
+// SetWriteBuffer sets the size of the operating system's transmit buffer associated with the connection.
+func (conn *TCPConn) SetWriteBuffer(bytes int) error {
+ var err error
+ for k := range conn.handles {
+ if err := conn.handles[k].SetWriteBuffer(bytes); err != nil {
+ return err
+ }
+ }
+ return err
+}
+
+func (conn *TCPConn) SyscallConn() (syscall.RawConn, error) {
+ if len(conn.handles) == 0 {
+ return nil, errors.New("no handles")
+ // How is it possible?
+ }
+ return conn.handles[0].SyscallConn()
+}
+
+// Dial connects to the remote TCP port,
+// and returns a single packet-oriented connection
+func Dial(network, address string) (*TCPConn, error) {
+ // init gopacket.layers
+ layers.Init()
+ // remote address resolve
+ raddr, err := net.ResolveTCPAddr(network, address)
+ if err != nil {
+ return nil, err
+ }
+
+ var lTcpAddr *net.TCPAddr
+ var lIpAddr *net.IPAddr
+ if ifaceName := dialer.DefaultInterface.Load(); len(ifaceName) > 0 {
+ rAddrPort := raddr.AddrPort()
+ addr, err := dialer.LookupLocalAddrFromIfaceName(ifaceName, network, rAddrPort.Addr(), int(rAddrPort.Port()))
+ if err != nil {
+ return nil, err
+ }
+ lTcpAddr = addr.(*net.TCPAddr)
+ lIpAddr = &net.IPAddr{IP: lTcpAddr.IP}
+ }
+
+ // AF_INET
+ handle, err := net.DialIP("ip:tcp", lIpAddr, &net.IPAddr{IP: raddr.IP})
+ if err != nil {
+ return nil, err
+ }
+
+ // create an established tcp connection
+ // will hack this tcp connection for packet transmission
+ tcpconn, err := net.DialTCP(network, lTcpAddr, raddr)
+ if err != nil {
+ return nil, err
+ }
+
+ // fields
+ conn := new(TCPConn)
+ conn.die = make(chan struct{})
+ conn.flowTable = make(map[string]*tcpFlow)
+ conn.tcpconn = tcpconn
+ conn.chMessage = make(chan message)
+ conn.lockflow(tcpconn.RemoteAddr(), func(e *tcpFlow) { e.conn = tcpconn })
+ conn.handles = append(conn.handles, handle)
+ conn.opts = gopacket.SerializeOptions{
+ FixLengths: true,
+ ComputeChecksums: true,
+ }
+ go conn.captureFlow(handle, tcpconn.LocalAddr().(*net.TCPAddr).Port)
+ go conn.cleaner()
+
+ // iptables
+ err = setTTL(tcpconn, 1)
+ if err != nil {
+ return nil, err
+ }
+
+ if ipt, err := iptables.NewWithProtocol(iptables.ProtocolIPv4); err == nil {
+ rule := []string{"-m", "ttl", "--ttl-eq", "1", "-p", "tcp", "-d", raddr.IP.String(), "--dport", fmt.Sprint(raddr.Port), "-j", "DROP"}
+ if exists, err := ipt.Exists("filter", "OUTPUT", rule...); err == nil {
+ if !exists {
+ if err = ipt.Append("filter", "OUTPUT", rule...); err == nil {
+ conn.iprule = rule
+ conn.iptables = ipt
+ }
+ }
+ }
+ }
+ if ipt, err := iptables.NewWithProtocol(iptables.ProtocolIPv6); err == nil {
+ rule := []string{"-m", "hl", "--hl-eq", "1", "-p", "tcp", "-d", raddr.IP.String(), "--dport", fmt.Sprint(raddr.Port), "-j", "DROP"}
+ if exists, err := ipt.Exists("filter", "OUTPUT", rule...); err == nil {
+ if !exists {
+ if err = ipt.Append("filter", "OUTPUT", rule...); err == nil {
+ conn.ip6rule = rule
+ conn.ip6tables = ipt
+ }
+ }
+ }
+ }
+
+ // discard everything
+ go io.Copy(ioutil.Discard, tcpconn)
+
+ return conn, nil
+}
+
+// Listen acts like net.ListenTCP,
+// and returns a single packet-oriented connection
+func Listen(network, address string) (*TCPConn, error) {
+ // init gopacket.layers
+ layers.Init()
+ // fields
+ conn := new(TCPConn)
+ conn.flowTable = make(map[string]*tcpFlow)
+ conn.die = make(chan struct{})
+ conn.chMessage = make(chan message)
+ conn.opts = gopacket.SerializeOptions{
+ FixLengths: true,
+ ComputeChecksums: true,
+ }
+
+ // resolve address
+ laddr, err := net.ResolveTCPAddr(network, address)
+ if err != nil {
+ return nil, err
+ }
+
+ // AF_INET
+ ifaces, err := net.Interfaces()
+ if err != nil {
+ return nil, err
+ }
+
+ if laddr.IP == nil || laddr.IP.IsUnspecified() { // if address is not specified, capture on all ifaces
+ var lasterr error
+ for _, iface := range ifaces {
+ if addrs, err := iface.Addrs(); err == nil {
+ for _, addr := range addrs {
+ if ipaddr, ok := addr.(*net.IPNet); ok {
+ if handle, err := net.ListenIP("ip:tcp", &net.IPAddr{IP: ipaddr.IP}); err == nil {
+ conn.handles = append(conn.handles, handle)
+ go conn.captureFlow(handle, laddr.Port)
+ } else {
+ lasterr = err
+ }
+ }
+ }
+ }
+ }
+ if len(conn.handles) == 0 {
+ return nil, lasterr
+ }
+ } else {
+ if handle, err := net.ListenIP("ip:tcp", &net.IPAddr{IP: laddr.IP}); err == nil {
+ conn.handles = append(conn.handles, handle)
+ go conn.captureFlow(handle, laddr.Port)
+ } else {
+ return nil, err
+ }
+ }
+
+ // start listening
+ l, err := net.ListenTCP(network, laddr)
+ if err != nil {
+ return nil, err
+ }
+
+ conn.listener = l
+
+ // start cleaner
+ go conn.cleaner()
+
+ // iptables drop packets marked with TTL = 1
+ // TODO: what if iptables is not available, the next hop will send back ICMP Time Exceeded,
+ // is this still an acceptable behavior?
+ if ipt, err := iptables.NewWithProtocol(iptables.ProtocolIPv4); err == nil {
+ rule := []string{"-m", "ttl", "--ttl-eq", "1", "-p", "tcp", "--sport", fmt.Sprint(laddr.Port), "-j", "DROP"}
+ if exists, err := ipt.Exists("filter", "OUTPUT", rule...); err == nil {
+ if !exists {
+ if err = ipt.Append("filter", "OUTPUT", rule...); err == nil {
+ conn.iprule = rule
+ conn.iptables = ipt
+ }
+ }
+ }
+ }
+ if ipt, err := iptables.NewWithProtocol(iptables.ProtocolIPv6); err == nil {
+ rule := []string{"-m", "hl", "--hl-eq", "1", "-p", "tcp", "--sport", fmt.Sprint(laddr.Port), "-j", "DROP"}
+ if exists, err := ipt.Exists("filter", "OUTPUT", rule...); err == nil {
+ if !exists {
+ if err = ipt.Append("filter", "OUTPUT", rule...); err == nil {
+ conn.ip6rule = rule
+ conn.ip6tables = ipt
+ }
+ }
+ }
+ }
+
+ // discard everything in original connection
+ go func() {
+ for {
+ tcpconn, err := l.AcceptTCP()
+ if err != nil {
+ return
+ }
+
+ // if we cannot set TTL = 1, the only thing reasonable is panic
+ if err := setTTL(tcpconn, 1); err != nil {
+ panic(err)
+ }
+
+ // record net.Conn
+ conn.lockflow(tcpconn.RemoteAddr(), func(e *tcpFlow) { e.conn = tcpconn })
+
+ // discard everything
+ go io.Copy(ioutil.Discard, tcpconn)
+ }
+ }()
+
+ return conn, nil
+}
+
+// setTTL sets the Time-To-Live field on a given connection
+func setTTL(c *net.TCPConn, ttl int) error {
+ raw, err := c.SyscallConn()
+ if err != nil {
+ return err
+ }
+ addr := c.LocalAddr().(*net.TCPAddr)
+
+ if addr.IP.To4() == nil {
+ raw.Control(func(fd uintptr) {
+ err = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_IPV6, syscall.IPV6_UNICAST_HOPS, ttl)
+ })
+ } else {
+ raw.Control(func(fd uintptr) {
+ err = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_IP, syscall.IP_TTL, ttl)
+ })
+ }
+ return err
+}
+
+// setDSCP sets the 6bit DSCP field in IPv4 header, or 8bit Traffic Class in IPv6 header.
+func setDSCP(c *net.IPConn, dscp int) error {
+ raw, err := c.SyscallConn()
+ if err != nil {
+ return err
+ }
+ addr := c.LocalAddr().(*net.IPAddr)
+
+ if addr.IP.To4() == nil {
+ raw.Control(func(fd uintptr) {
+ err = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_IPV6, syscall.IPV6_TCLASS, dscp)
+ })
+ } else {
+ raw.Control(func(fd uintptr) {
+ err = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_IP, syscall.IP_TOS, dscp<<2)
+ })
+ }
+ return err
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/tcp_stub.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/tcp_stub.go
new file mode 100644
index 0000000..9f9ff97
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/tcp_stub.go
@@ -0,0 +1,21 @@
+//go:build !linux || no_fake_tcp
+// +build !linux no_fake_tcp
+
+package faketcp
+
+import (
+ "errors"
+ "net"
+)
+
+type TCPConn struct{ *net.UDPConn }
+
+// Dial connects to the remote TCP port,
+// and returns a single packet-oriented connection
+func Dial(network, address string) (*TCPConn, error) {
+ return nil, errors.New("faketcp is not supported on this platform")
+}
+
+func Listen(network, address string) (*TCPConn, error) {
+ return nil, errors.New("faketcp is not supported on this platform")
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/tcp_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/tcp_test.go
new file mode 100644
index 0000000..03f73af
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/faketcp/tcp_test.go
@@ -0,0 +1,192 @@
+//go:build linux
+// +build linux
+
+package faketcp
+
+import (
+ _ "net/http/pprof"
+)
+
+//const testPortStream = "127.0.0.1:3456"
+//const testPortPacket = "127.0.0.1:3457"
+
+const testPortStream = "127.0.0.1:3456"
+const portServerPacket = "[::]:3457"
+const portRemotePacket = "127.0.0.1:3457"
+
+//func init() {
+// startTCPServer()
+// startTCPRawServer()
+// go func() {
+// log.Println(http.ListenAndServe("0.0.0.0:6060", nil))
+// }()
+//}
+//
+//func startTCPServer() net.Listener {
+// l, err := net.Listen("tcp", testPortStream)
+// if err != nil {
+// log.Panicln(err)
+// }
+//
+// go func() {
+// defer l.Close()
+// for {
+// conn, err := l.Accept()
+// if err != nil {
+// log.Println(err)
+// return
+// }
+//
+// go handleRequest(conn)
+// }
+// }()
+// return l
+//}
+//
+//func startTCPRawServer() *TCPConn {
+// conn, err := Listen("tcp", portServerPacket)
+// if err != nil {
+// log.Panicln(err)
+// }
+// err = conn.SetReadBuffer(1024 * 1024)
+// if err != nil {
+// log.Println(err)
+// }
+// err = conn.SetWriteBuffer(1024 * 1024)
+// if err != nil {
+// log.Println(err)
+// }
+//
+// go func() {
+// defer conn.Close()
+// buf := make([]byte, 1024)
+// for {
+// n, addr, err := conn.ReadFrom(buf)
+// if err != nil {
+// log.Println("server readfrom:", err)
+// return
+// }
+// //echo
+// n, err = conn.WriteTo(buf[:n], addr)
+// if err != nil {
+// log.Println("server writeTo:", err)
+// return
+// }
+// }
+// }()
+// return conn
+//}
+//
+//func handleRequest(conn net.Conn) {
+// defer conn.Close()
+//
+// for {
+// buf := make([]byte, 1024)
+// size, err := conn.Read(buf)
+// if err != nil {
+// log.Println("handleRequest:", err)
+// return
+// }
+// data := buf[:size]
+// conn.Write(data)
+// }
+//}
+//
+//func TestDialTCPStream(t *testing.T) {
+// conn, err := Dial("tcp", testPortStream)
+// if err != nil {
+// t.Fatal(err)
+// }
+// defer conn.Close()
+//
+// addr, err := net.ResolveTCPAddr("tcp", testPortStream)
+// if err != nil {
+// t.Fatal(err)
+// }
+//
+// n, err := conn.WriteTo([]byte("abc"), addr)
+// if err != nil {
+// t.Fatal(n, err)
+// }
+//
+// buf := make([]byte, 1024)
+// if n, addr, err := conn.ReadFrom(buf); err != nil {
+// t.Fatal(n, addr, err)
+// } else {
+// log.Println(string(buf[:n]), "from:", addr)
+// }
+//}
+//
+//func TestDialToTCPPacket(t *testing.T) {
+// conn, err := Dial("tcp", portRemotePacket)
+// if err != nil {
+// t.Fatal(err)
+// }
+// defer conn.Close()
+//
+// addr, err := net.ResolveTCPAddr("tcp", portRemotePacket)
+// if err != nil {
+// t.Fatal(err)
+// }
+//
+// n, err := conn.WriteTo([]byte("abc"), addr)
+// if err != nil {
+// t.Fatal(n, err)
+// }
+// log.Println("written")
+//
+// buf := make([]byte, 1024)
+// log.Println("readfrom buf")
+// if n, addr, err := conn.ReadFrom(buf); err != nil {
+// log.Println(err)
+// t.Fatal(n, addr, err)
+// } else {
+// log.Println(string(buf[:n]), "from:", addr)
+// }
+//
+// log.Println("complete")
+//}
+//
+//func TestSettings(t *testing.T) {
+// conn, err := Dial("tcp", portRemotePacket)
+// if err != nil {
+// t.Fatal(err)
+// }
+// defer conn.Close()
+// if err := conn.SetDSCP(46); err != nil {
+// log.Fatal("SetDSCP:", err)
+// }
+// if err := conn.SetReadBuffer(4096); err != nil {
+// log.Fatal("SetReaderBuffer:", err)
+// }
+// if err := conn.SetWriteBuffer(4096); err != nil {
+// log.Fatal("SetWriteBuffer:", err)
+// }
+//}
+//
+//func BenchmarkEcho(b *testing.B) {
+// conn, err := Dial("tcp", portRemotePacket)
+// if err != nil {
+// b.Fatal(err)
+// }
+// defer conn.Close()
+//
+// addr, err := net.ResolveTCPAddr("tcp", portRemotePacket)
+// if err != nil {
+// b.Fatal(err)
+// }
+//
+// buf := make([]byte, 1024)
+// b.ReportAllocs()
+// b.SetBytes(int64(len(buf)))
+// for i := 0; i < b.N; i++ {
+// n, err := conn.WriteTo(buf, addr)
+// if err != nil {
+// b.Fatal(n, err)
+// }
+//
+// if n, addr, err := conn.ReadFrom(buf); err != nil {
+// b.Fatal(n, addr, err)
+// }
+// }
+//}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/udp/hop.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/udp/hop.go
new file mode 100644
index 0000000..0a88874
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/udp/hop.go
@@ -0,0 +1,365 @@
+package udp
+
+import (
+ "errors"
+ "net"
+ "strconv"
+ "strings"
+ "sync"
+ "syscall"
+ "time"
+
+ "github.com/metacubex/mihomo/transport/hysteria/obfs"
+ "github.com/metacubex/mihomo/transport/hysteria/utils"
+
+ "github.com/metacubex/randv2"
+)
+
+const (
+ packetQueueSize = 1024
+)
+
+// ObfsUDPHopClientPacketConn is the UDP port-hopping packet connection for client side.
+// It hops to a different local & server port every once in a while.
+type ObfsUDPHopClientPacketConn struct {
+ serverAddr net.Addr // Combined udpHopAddr
+ serverAddrs []net.Addr
+ hopInterval time.Duration
+
+ obfs obfs.Obfuscator
+
+ connMutex sync.RWMutex
+ prevConn net.PacketConn
+ currentConn net.PacketConn
+ addrIndex int
+
+ readBufferSize int
+ writeBufferSize int
+
+ recvQueue chan *udpPacket
+ closeChan chan struct{}
+ closed bool
+
+ bufPool sync.Pool
+}
+
+type udpHopAddr string
+
+func (a *udpHopAddr) Network() string {
+ return "udp-hop"
+}
+
+func (a *udpHopAddr) String() string {
+ return string(*a)
+}
+
+type udpPacket struct {
+ buf []byte
+ n int
+ addr net.Addr
+}
+
+func NewObfsUDPHopClientPacketConn(server string, serverPorts string, hopInterval time.Duration, obfs obfs.Obfuscator, dialer utils.PacketDialer) (net.PacketConn, error) {
+ ports, err := parsePorts(serverPorts)
+ if err != nil {
+ return nil, err
+ }
+ // Resolve the server IP address, then attach the ports to UDP addresses
+ rAddr, err := dialer.RemoteAddr(server)
+ if err != nil {
+ return nil, err
+ }
+ ip, _, err := net.SplitHostPort(rAddr.String())
+ if err != nil {
+ return nil, err
+ }
+ serverAddrs := make([]net.Addr, len(ports))
+ for i, port := range ports {
+ serverAddrs[i] = &net.UDPAddr{
+ IP: net.ParseIP(ip),
+ Port: int(port),
+ }
+ }
+ hopAddr := udpHopAddr(server)
+ conn := &ObfsUDPHopClientPacketConn{
+ serverAddr: &hopAddr,
+ serverAddrs: serverAddrs,
+ hopInterval: hopInterval,
+ obfs: obfs,
+ addrIndex: randv2.IntN(len(serverAddrs)),
+ recvQueue: make(chan *udpPacket, packetQueueSize),
+ closeChan: make(chan struct{}),
+ bufPool: sync.Pool{
+ New: func() interface{} {
+ return make([]byte, udpBufferSize)
+ },
+ },
+ }
+ curConn, err := dialer.ListenPacket(rAddr)
+ if err != nil {
+ return nil, err
+ }
+ if obfs != nil {
+ conn.currentConn = NewObfsUDPConn(curConn, obfs)
+ } else {
+ conn.currentConn = curConn
+ }
+ go conn.recvRoutine(conn.currentConn)
+ go conn.hopRoutine(dialer, rAddr)
+ if _, ok := conn.currentConn.(syscall.Conn); ok {
+ return &ObfsUDPHopClientPacketConnWithSyscall{conn}, nil
+ }
+ return conn, nil
+}
+
+func (c *ObfsUDPHopClientPacketConn) recvRoutine(conn net.PacketConn) {
+ for {
+ buf := c.bufPool.Get().([]byte)
+ n, addr, err := conn.ReadFrom(buf)
+ if err != nil {
+ return
+ }
+ select {
+ case c.recvQueue <- &udpPacket{buf, n, addr}:
+ default:
+ // Drop the packet if the queue is full
+ c.bufPool.Put(buf)
+ }
+ }
+}
+
+func (c *ObfsUDPHopClientPacketConn) hopRoutine(dialer utils.PacketDialer, rAddr net.Addr) {
+ ticker := time.NewTicker(c.hopInterval)
+ defer ticker.Stop()
+ for {
+ select {
+ case <-ticker.C:
+ c.hop(dialer, rAddr)
+ case <-c.closeChan:
+ return
+ }
+ }
+}
+
+func (c *ObfsUDPHopClientPacketConn) hop(dialer utils.PacketDialer, rAddr net.Addr) {
+ c.connMutex.Lock()
+ defer c.connMutex.Unlock()
+ if c.closed {
+ return
+ }
+ newConn, err := dialer.ListenPacket(rAddr)
+ if err != nil {
+ // Skip this hop if failed to listen
+ return
+ }
+ // Close prevConn,
+ // prevConn <- currentConn
+ // currentConn <- newConn
+ // update addrIndex
+ //
+ // We need to keep receiving packets from the previous connection,
+ // because otherwise there will be packet loss due to the time gap
+ // between we hop to a new port and the server acknowledges this change.
+ if c.prevConn != nil {
+ _ = c.prevConn.Close() // recvRoutine will exit on error
+ }
+ c.prevConn = c.currentConn
+ if c.obfs != nil {
+ c.currentConn = NewObfsUDPConn(newConn, c.obfs)
+ } else {
+ c.currentConn = newConn
+ }
+ // Set buffer sizes if previously set
+ if c.readBufferSize > 0 {
+ _ = trySetPacketConnReadBuffer(c.currentConn, c.readBufferSize)
+ }
+ if c.writeBufferSize > 0 {
+ _ = trySetPacketConnWriteBuffer(c.currentConn, c.writeBufferSize)
+ }
+ go c.recvRoutine(c.currentConn)
+ c.addrIndex = randv2.IntN(len(c.serverAddrs))
+}
+
+func (c *ObfsUDPHopClientPacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ for {
+ select {
+ case p := <-c.recvQueue:
+ /*
+ // Check if the packet is from one of the server addresses
+ for _, addr := range c.serverAddrs {
+ if addr.String() == p.addr.String() {
+ // Copy the packet to the buffer
+ n := copy(b, p.buf[:p.n])
+ c.bufPool.Put(p.buf)
+ return n, c.serverAddr, nil
+ }
+ }
+ // Drop the packet, continue
+ c.bufPool.Put(p.buf)
+ */
+ // The above code was causing performance issues when the range is large,
+ // so we skip the check for now. Should probably still check by using a map
+ // or something in the future.
+ n := copy(b, p.buf[:p.n])
+ c.bufPool.Put(p.buf)
+ return n, c.serverAddr, nil
+ case <-c.closeChan:
+ return 0, nil, net.ErrClosed
+ }
+ // Ignore packets from other addresses
+ }
+}
+
+func (c *ObfsUDPHopClientPacketConn) WriteTo(b []byte, addr net.Addr) (int, error) {
+ c.connMutex.RLock()
+ defer c.connMutex.RUnlock()
+ if c.closed {
+ return 0, net.ErrClosed
+ }
+ /*
+ // Check if the address is the server address
+ if addr.String() != c.serverAddr.String() {
+ return 0, net.ErrWriteToConnected
+ }
+ */
+ // Skip the check for now, always write to the server
+ return c.currentConn.WriteTo(b, c.serverAddrs[c.addrIndex])
+}
+
+func (c *ObfsUDPHopClientPacketConn) Close() error {
+ c.connMutex.Lock()
+ defer c.connMutex.Unlock()
+ if c.closed {
+ return nil
+ }
+ // Close prevConn and currentConn
+ // Close closeChan to unblock ReadFrom & hopRoutine
+ // Set closed flag to true to prevent double close
+ if c.prevConn != nil {
+ _ = c.prevConn.Close()
+ }
+ err := c.currentConn.Close()
+ close(c.closeChan)
+ c.closed = true
+ c.serverAddrs = nil // For GC
+ return err
+}
+
+func (c *ObfsUDPHopClientPacketConn) LocalAddr() net.Addr {
+ c.connMutex.RLock()
+ defer c.connMutex.RUnlock()
+ return c.currentConn.LocalAddr()
+}
+
+func (c *ObfsUDPHopClientPacketConn) SetReadDeadline(t time.Time) error {
+ // Not supported
+ return nil
+}
+
+func (c *ObfsUDPHopClientPacketConn) SetWriteDeadline(t time.Time) error {
+ // Not supported
+ return nil
+}
+
+func (c *ObfsUDPHopClientPacketConn) SetDeadline(t time.Time) error {
+ err := c.SetReadDeadline(t)
+ if err != nil {
+ return err
+ }
+ return c.SetWriteDeadline(t)
+}
+
+func (c *ObfsUDPHopClientPacketConn) SetReadBuffer(bytes int) error {
+ c.connMutex.Lock()
+ defer c.connMutex.Unlock()
+ c.readBufferSize = bytes
+ if c.prevConn != nil {
+ _ = trySetPacketConnReadBuffer(c.prevConn, bytes)
+ }
+ return trySetPacketConnReadBuffer(c.currentConn, bytes)
+}
+
+func (c *ObfsUDPHopClientPacketConn) SetWriteBuffer(bytes int) error {
+ c.connMutex.Lock()
+ defer c.connMutex.Unlock()
+ c.writeBufferSize = bytes
+ if c.prevConn != nil {
+ _ = trySetPacketConnWriteBuffer(c.prevConn, bytes)
+ }
+ return trySetPacketConnWriteBuffer(c.currentConn, bytes)
+}
+
+func trySetPacketConnReadBuffer(pc net.PacketConn, bytes int) error {
+ sc, ok := pc.(interface {
+ SetReadBuffer(bytes int) error
+ })
+ if ok {
+ return sc.SetReadBuffer(bytes)
+ }
+ return nil
+}
+
+func trySetPacketConnWriteBuffer(pc net.PacketConn, bytes int) error {
+ sc, ok := pc.(interface {
+ SetWriteBuffer(bytes int) error
+ })
+ if ok {
+ return sc.SetWriteBuffer(bytes)
+ }
+ return nil
+}
+
+type ObfsUDPHopClientPacketConnWithSyscall struct {
+ *ObfsUDPHopClientPacketConn
+}
+
+func (c *ObfsUDPHopClientPacketConnWithSyscall) SyscallConn() (syscall.RawConn, error) {
+ c.connMutex.RLock()
+ defer c.connMutex.RUnlock()
+ sc, ok := c.currentConn.(syscall.Conn)
+ if !ok {
+ return nil, errors.New("not supported")
+ }
+ return sc.SyscallConn()
+}
+
+// parsePorts parses the multi-port server address and returns the host and ports.
+// Supports both comma-separated single ports and dash-separated port ranges.
+// Format: "host:port1,port2-port3,port4"
+func parsePorts(serverPorts string) (ports []uint16, err error) {
+ portStrs := strings.Split(serverPorts, ",")
+ for _, portStr := range portStrs {
+ if strings.Contains(portStr, "-") {
+ // Port range
+ portRange := strings.Split(portStr, "-")
+ if len(portRange) != 2 {
+ return nil, net.InvalidAddrError("invalid port range")
+ }
+ start, err := strconv.ParseUint(portRange[0], 10, 16)
+ if err != nil {
+ return nil, net.InvalidAddrError("invalid port range")
+ }
+ end, err := strconv.ParseUint(portRange[1], 10, 16)
+ if err != nil {
+ return nil, net.InvalidAddrError("invalid port range")
+ }
+ if start > end {
+ start, end = end, start
+ }
+ for i := start; i <= end; i++ {
+ ports = append(ports, uint16(i))
+ }
+ } else {
+ // Single port
+ port, err := strconv.ParseUint(portStr, 10, 16)
+ if err != nil {
+ return nil, net.InvalidAddrError("invalid port")
+ }
+ ports = append(ports, uint16(port))
+ }
+ }
+ if len(ports) == 0 {
+ return nil, net.InvalidAddrError("invalid port")
+ }
+ return ports, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/udp/obfs.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/udp/obfs.go
new file mode 100644
index 0000000..a5c6c06
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/udp/obfs.go
@@ -0,0 +1,80 @@
+package udp
+
+import (
+ "github.com/metacubex/mihomo/transport/hysteria/obfs"
+ "net"
+ "sync"
+ "time"
+)
+
+const udpBufferSize = 65535
+
+type ObfsUDPConn struct {
+ orig net.PacketConn
+ obfs obfs.Obfuscator
+ readBuf []byte
+ readMutex sync.Mutex
+ writeBuf []byte
+ writeMutex sync.Mutex
+}
+
+func NewObfsUDPConn(orig net.PacketConn, obfs obfs.Obfuscator) *ObfsUDPConn {
+ return &ObfsUDPConn{
+ orig: orig,
+ obfs: obfs,
+ readBuf: make([]byte, udpBufferSize),
+ writeBuf: make([]byte, udpBufferSize),
+ }
+}
+
+func (c *ObfsUDPConn) ReadFrom(p []byte) (int, net.Addr, error) {
+ for {
+ c.readMutex.Lock()
+ n, addr, err := c.orig.ReadFrom(c.readBuf)
+ if n <= 0 {
+ c.readMutex.Unlock()
+ return 0, addr, err
+ }
+ newN := c.obfs.Deobfuscate(c.readBuf[:n], p)
+ c.readMutex.Unlock()
+ if newN > 0 {
+ // Valid packet
+ return newN, addr, err
+ } else if err != nil {
+ // Not valid and orig.ReadFrom had some error
+ return 0, addr, err
+ }
+ }
+}
+
+func (c *ObfsUDPConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
+ c.writeMutex.Lock()
+ bn := c.obfs.Obfuscate(p, c.writeBuf)
+ _, err = c.orig.WriteTo(c.writeBuf[:bn], addr)
+ c.writeMutex.Unlock()
+ if err != nil {
+ return 0, err
+ } else {
+ return len(p), nil
+ }
+}
+
+func (c *ObfsUDPConn) Close() error {
+ return c.orig.Close()
+}
+
+func (c *ObfsUDPConn) LocalAddr() net.Addr {
+ return c.orig.LocalAddr()
+}
+
+func (c *ObfsUDPConn) SetDeadline(t time.Time) error {
+ return c.orig.SetDeadline(t)
+}
+
+func (c *ObfsUDPConn) SetReadDeadline(t time.Time) error {
+ return c.orig.SetReadDeadline(t)
+}
+
+func (c *ObfsUDPConn) SetWriteDeadline(t time.Time) error {
+ return c.orig.SetWriteDeadline(t)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/wechat/obfs.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/wechat/obfs.go
new file mode 100644
index 0000000..c5ec47e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/conns/wechat/obfs.go
@@ -0,0 +1,99 @@
+package wechat
+
+import (
+ "encoding/binary"
+ "net"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/transport/hysteria/obfs"
+
+ "github.com/metacubex/randv2"
+)
+
+const udpBufferSize = 65535
+
+type ObfsWeChatUDPConn struct {
+ orig net.PacketConn
+ obfs obfs.Obfuscator
+ readBuf []byte
+ readMutex sync.Mutex
+ writeBuf []byte
+ writeMutex sync.Mutex
+ sn uint32
+}
+
+func NewObfsWeChatUDPConn(orig net.PacketConn, obfs obfs.Obfuscator) *ObfsWeChatUDPConn {
+ log.Infoln("new wechat")
+ return &ObfsWeChatUDPConn{
+ orig: orig,
+ obfs: obfs,
+ readBuf: make([]byte, udpBufferSize),
+ writeBuf: make([]byte, udpBufferSize),
+ sn: randv2.Uint32() & 0xFFFF,
+ }
+}
+
+func (c *ObfsWeChatUDPConn) ReadFrom(p []byte) (int, net.Addr, error) {
+ for {
+ c.readMutex.Lock()
+ n, addr, err := c.orig.ReadFrom(c.readBuf)
+ if n <= 13 {
+ c.readMutex.Unlock()
+ return 0, addr, err
+ }
+ newN := c.obfs.Deobfuscate(c.readBuf[13:n], p)
+ c.readMutex.Unlock()
+ if newN > 0 {
+ // Valid packet
+ return newN, addr, err
+ } else if err != nil {
+ // Not valid and orig.ReadFrom had some error
+ return 0, addr, err
+ }
+ }
+}
+
+func (c *ObfsWeChatUDPConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
+ c.writeMutex.Lock()
+ c.writeBuf[0] = 0xa1
+ c.writeBuf[1] = 0x08
+ binary.BigEndian.PutUint32(c.writeBuf[2:], c.sn)
+ c.sn++
+ c.writeBuf[6] = 0x00
+ c.writeBuf[7] = 0x10
+ c.writeBuf[8] = 0x11
+ c.writeBuf[9] = 0x18
+ c.writeBuf[10] = 0x30
+ c.writeBuf[11] = 0x22
+ c.writeBuf[12] = 0x30
+ bn := c.obfs.Obfuscate(p, c.writeBuf[13:])
+ _, err = c.orig.WriteTo(c.writeBuf[:13+bn], addr)
+ c.writeMutex.Unlock()
+ if err != nil {
+ return 0, err
+ } else {
+ return len(p), nil
+ }
+}
+
+func (c *ObfsWeChatUDPConn) Close() error {
+ return c.orig.Close()
+}
+
+func (c *ObfsWeChatUDPConn) LocalAddr() net.Addr {
+ return c.orig.LocalAddr()
+}
+
+func (c *ObfsWeChatUDPConn) SetDeadline(t time.Time) error {
+ return c.orig.SetDeadline(t)
+}
+
+func (c *ObfsWeChatUDPConn) SetReadDeadline(t time.Time) error {
+ return c.orig.SetReadDeadline(t)
+}
+
+func (c *ObfsWeChatUDPConn) SetWriteDeadline(t time.Time) error {
+ return c.orig.SetWriteDeadline(t)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/client.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/client.go
new file mode 100644
index 0000000..782948c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/client.go
@@ -0,0 +1,450 @@
+package core
+
+import (
+ "bytes"
+ "context"
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "net"
+ "strconv"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/transport/hysteria/obfs"
+ "github.com/metacubex/mihomo/transport/hysteria/pmtud_fix"
+ "github.com/metacubex/mihomo/transport/hysteria/transport"
+ "github.com/metacubex/mihomo/transport/hysteria/utils"
+
+ "github.com/lunixbochs/struc"
+ "github.com/metacubex/quic-go"
+ "github.com/metacubex/quic-go/congestion"
+ "github.com/metacubex/randv2"
+)
+
+var (
+ ErrClosed = errors.New("closed")
+)
+
+type CongestionFactory func(refBPS uint64) congestion.CongestionControl
+
+type Client struct {
+ transport *transport.ClientTransport
+ serverAddr string
+ serverPorts string
+ protocol string
+ sendBPS, recvBPS uint64
+ auth []byte
+ congestionFactory CongestionFactory
+ obfuscator obfs.Obfuscator
+
+ tlsConfig *tls.Config
+ quicConfig *quic.Config
+
+ quicSession quic.Connection
+ reconnectMutex sync.Mutex
+ closed bool
+
+ udpSessionMutex sync.RWMutex
+ udpSessionMap map[uint32]chan *udpMessage
+ udpDefragger defragger
+ hopInterval time.Duration
+ fastOpen bool
+}
+
+func NewClient(serverAddr string, serverPorts string, protocol string, auth []byte, tlsConfig *tls.Config, quicConfig *quic.Config,
+ transport *transport.ClientTransport, sendBPS uint64, recvBPS uint64, congestionFactory CongestionFactory,
+ obfuscator obfs.Obfuscator, hopInterval time.Duration, fastOpen bool) (*Client, error) {
+ quicConfig.DisablePathMTUDiscovery = quicConfig.DisablePathMTUDiscovery || pmtud_fix.DisablePathMTUDiscovery
+ c := &Client{
+ transport: transport,
+ serverAddr: serverAddr,
+ serverPorts: serverPorts,
+ protocol: protocol,
+ sendBPS: sendBPS,
+ recvBPS: recvBPS,
+ auth: auth,
+ congestionFactory: congestionFactory,
+ obfuscator: obfuscator,
+ tlsConfig: tlsConfig,
+ quicConfig: quicConfig,
+ hopInterval: hopInterval,
+ fastOpen: fastOpen,
+ }
+ return c, nil
+}
+
+func (c *Client) connectToServer(dialer utils.PacketDialer) error {
+ qs, err := c.transport.QUICDial(c.protocol, c.serverAddr, c.serverPorts, c.tlsConfig, c.quicConfig, c.obfuscator, c.hopInterval, dialer)
+ if err != nil {
+ return err
+ }
+ // Control stream
+ ctx, ctxCancel := context.WithTimeout(context.Background(), protocolTimeout)
+ stream, err := qs.OpenStreamSync(ctx)
+ ctxCancel()
+ if err != nil {
+ _ = qs.CloseWithError(closeErrorCodeProtocol, "protocol error")
+ return err
+ }
+ ok, msg, err := c.handleControlStream(qs, stream)
+ if err != nil {
+ _ = qs.CloseWithError(closeErrorCodeProtocol, "protocol error")
+ return err
+ }
+ if !ok {
+ _ = qs.CloseWithError(closeErrorCodeAuth, "auth error")
+ return fmt.Errorf("auth error: %s", msg)
+ }
+ // All good
+ c.udpSessionMap = make(map[uint32]chan *udpMessage)
+ go c.handleMessage(qs)
+ c.quicSession = qs
+ return nil
+}
+
+func (c *Client) handleControlStream(qs quic.Connection, stream quic.Stream) (bool, string, error) {
+ // Send protocol version
+ _, err := stream.Write([]byte{protocolVersion})
+ if err != nil {
+ return false, "", err
+ }
+ // Send client hello
+ err = struc.Pack(stream, &clientHello{
+ Rate: transmissionRate{
+ SendBPS: c.sendBPS,
+ RecvBPS: c.recvBPS,
+ },
+ Auth: c.auth,
+ })
+ if err != nil {
+ return false, "", err
+ }
+ // Receive server hello
+ var sh serverHello
+ err = struc.Unpack(stream, &sh)
+ if err != nil {
+ return false, "", err
+ }
+ // Set the congestion accordingly
+ if sh.OK && c.congestionFactory != nil {
+ qs.SetCongestionControl(c.congestionFactory(sh.Rate.RecvBPS))
+ }
+ return sh.OK, sh.Message, nil
+}
+
+func (c *Client) handleMessage(qs quic.Connection) {
+ for {
+ msg, err := qs.ReceiveDatagram(context.Background())
+ if err != nil {
+ break
+ }
+ var udpMsg udpMessage
+ err = struc.Unpack(bytes.NewBuffer(msg), &udpMsg)
+ if err != nil {
+ continue
+ }
+ dfMsg := c.udpDefragger.Feed(udpMsg)
+ if dfMsg == nil {
+ continue
+ }
+ c.udpSessionMutex.RLock()
+ ch, ok := c.udpSessionMap[dfMsg.SessionID]
+ if ok {
+ select {
+ case ch <- dfMsg:
+ // OK
+ default:
+ // Silently drop the message when the channel is full
+ }
+ }
+ c.udpSessionMutex.RUnlock()
+ }
+}
+
+func (c *Client) openStreamWithReconnect(dialer utils.PacketDialer) (quic.Connection, quic.Stream, error) {
+ c.reconnectMutex.Lock()
+ defer c.reconnectMutex.Unlock()
+ if c.closed {
+ return nil, nil, ErrClosed
+ }
+ if c.quicSession == nil {
+ if err := c.connectToServer(dialer); err != nil {
+ // Still error, oops
+ return nil, nil, err
+ }
+ }
+ stream, err := c.quicSession.OpenStream()
+ if err == nil {
+ // All good
+ return c.quicSession, &wrappedQUICStream{stream}, nil
+ }
+ // Something is wrong
+ if nErr, ok := err.(net.Error); ok && nErr.Temporary() {
+ // Temporary error, just return
+ return nil, nil, err
+ }
+ // Permanent error, need to reconnect
+ if err := c.connectToServer(dialer); err != nil {
+ // Still error, oops
+ return nil, nil, err
+ }
+ // We are not going to try again even if it still fails the second time
+ stream, err = c.quicSession.OpenStream()
+ return c.quicSession, &wrappedQUICStream{stream}, err
+}
+
+func (c *Client) DialTCP(host string, port uint16, dialer utils.PacketDialer) (net.Conn, error) {
+ session, stream, err := c.openStreamWithReconnect(dialer)
+ if err != nil {
+ return nil, err
+ }
+ // Send request
+ err = struc.Pack(stream, &clientRequest{
+ UDP: false,
+ Host: host,
+ Port: port,
+ })
+ if err != nil {
+ _ = stream.Close()
+ return nil, err
+ }
+ // If fast open is enabled, we return the stream immediately
+ // and defer the response handling to the first Read() call
+ if !c.fastOpen {
+ // Read response
+ var sr serverResponse
+ err = struc.Unpack(stream, &sr)
+ if err != nil {
+ _ = stream.Close()
+ return nil, err
+ }
+ if !sr.OK {
+ _ = stream.Close()
+ return nil, fmt.Errorf("connection rejected: %s", sr.Message)
+ }
+ }
+
+ return &quicConn{
+ Orig: stream,
+ PseudoLocalAddr: session.LocalAddr(),
+ PseudoRemoteAddr: session.RemoteAddr(),
+ Established: !c.fastOpen,
+ }, nil
+}
+
+func (c *Client) DialUDP(dialer utils.PacketDialer) (UDPConn, error) {
+ session, stream, err := c.openStreamWithReconnect(dialer)
+ if err != nil {
+ return nil, err
+ }
+ // Send request
+ err = struc.Pack(stream, &clientRequest{
+ UDP: true,
+ })
+ if err != nil {
+ _ = stream.Close()
+ return nil, err
+ }
+ // Read response
+ var sr serverResponse
+ err = struc.Unpack(stream, &sr)
+ if err != nil {
+ _ = stream.Close()
+ return nil, err
+ }
+ if !sr.OK {
+ _ = stream.Close()
+ return nil, fmt.Errorf("connection rejected: %s", sr.Message)
+ }
+
+ // Create a session in the map
+ c.udpSessionMutex.Lock()
+ nCh := make(chan *udpMessage, 1024)
+ // Store the current session map for CloseFunc below
+ // to ensures that we are adding and removing sessions on the same map,
+ // as reconnecting will reassign the map
+ sessionMap := c.udpSessionMap
+ sessionMap[sr.UDPSessionID] = nCh
+ c.udpSessionMutex.Unlock()
+
+ pktConn := &quicPktConn{
+ Session: session,
+ Stream: stream,
+ CloseFunc: func() {
+ c.udpSessionMutex.Lock()
+ if ch, ok := sessionMap[sr.UDPSessionID]; ok {
+ close(ch)
+ delete(sessionMap, sr.UDPSessionID)
+ }
+ c.udpSessionMutex.Unlock()
+ },
+ UDPSessionID: sr.UDPSessionID,
+ MsgCh: nCh,
+ }
+ go pktConn.Hold()
+ return pktConn, nil
+}
+
+func (c *Client) Close() error {
+ c.reconnectMutex.Lock()
+ defer c.reconnectMutex.Unlock()
+ var err error
+ if c.quicSession != nil {
+ err = c.quicSession.CloseWithError(closeErrorCodeGeneric, "")
+ }
+ c.closed = true
+ return err
+}
+
+type quicConn struct {
+ Orig quic.Stream
+ PseudoLocalAddr net.Addr
+ PseudoRemoteAddr net.Addr
+ Established bool
+}
+
+func (w *quicConn) Read(b []byte) (n int, err error) {
+ if !w.Established {
+ var sr serverResponse
+ err := struc.Unpack(w.Orig, &sr)
+ if err != nil {
+ _ = w.Close()
+ return 0, err
+ }
+ if !sr.OK {
+ _ = w.Close()
+ return 0, fmt.Errorf("connection rejected: %s", sr.Message)
+ }
+ w.Established = true
+ }
+ return w.Orig.Read(b)
+}
+
+func (w *quicConn) Write(b []byte) (n int, err error) {
+ return w.Orig.Write(b)
+}
+
+func (w *quicConn) Close() error {
+ return w.Orig.Close()
+}
+
+func (w *quicConn) LocalAddr() net.Addr {
+ return w.PseudoLocalAddr
+}
+
+func (w *quicConn) RemoteAddr() net.Addr {
+ return w.PseudoRemoteAddr
+}
+
+func (w *quicConn) SetDeadline(t time.Time) error {
+ return w.Orig.SetDeadline(t)
+}
+
+func (w *quicConn) SetReadDeadline(t time.Time) error {
+ return w.Orig.SetReadDeadline(t)
+}
+
+func (w *quicConn) SetWriteDeadline(t time.Time) error {
+ return w.Orig.SetWriteDeadline(t)
+}
+
+type UDPConn interface {
+ ReadFrom() ([]byte, string, error)
+ WriteTo([]byte, string) error
+ Close() error
+ LocalAddr() net.Addr
+ SetDeadline(t time.Time) error
+ SetReadDeadline(t time.Time) error
+ SetWriteDeadline(t time.Time) error
+}
+
+type quicPktConn struct {
+ Session quic.Connection
+ Stream quic.Stream
+ CloseFunc func()
+ UDPSessionID uint32
+ MsgCh <-chan *udpMessage
+}
+
+func (c *quicPktConn) Hold() {
+ // Hold the stream until it's closed
+ buf := make([]byte, 1024)
+ for {
+ _, err := c.Stream.Read(buf)
+ if err != nil {
+ break
+ }
+ }
+ _ = c.Close()
+}
+
+func (c *quicPktConn) ReadFrom() ([]byte, string, error) {
+ msg := <-c.MsgCh
+ if msg == nil {
+ // Closed
+ return nil, "", ErrClosed
+ }
+ return msg.Data, net.JoinHostPort(msg.Host, strconv.Itoa(int(msg.Port))), nil
+}
+
+func (c *quicPktConn) WriteTo(p []byte, addr string) error {
+ host, port, err := utils.SplitHostPort(addr)
+ if err != nil {
+ return err
+ }
+ msg := udpMessage{
+ SessionID: c.UDPSessionID,
+ Host: host,
+ Port: port,
+ FragCount: 1,
+ Data: p,
+ }
+ // try no frag first
+ var msgBuf bytes.Buffer
+ _ = struc.Pack(&msgBuf, &msg)
+ err = c.Session.SendDatagram(msgBuf.Bytes())
+ if err != nil {
+ var errSize *quic.DatagramTooLargeError
+ if errors.As(err, &errSize) {
+ // need to frag
+ msg.MsgID = uint16(randv2.IntN(0xFFFF)) + 1 // msgID must be > 0 when fragCount > 1
+ fragMsgs := fragUDPMessage(msg, int(errSize.MaxDatagramPayloadSize))
+ for _, fragMsg := range fragMsgs {
+ msgBuf.Reset()
+ _ = struc.Pack(&msgBuf, &fragMsg)
+ err = c.Session.SendDatagram(msgBuf.Bytes())
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+ } else {
+ // some other error
+ return err
+ }
+ } else {
+ return nil
+ }
+}
+
+func (c *quicPktConn) Close() error {
+ c.CloseFunc()
+ return c.Stream.Close()
+}
+
+func (c *quicPktConn) LocalAddr() net.Addr {
+ return c.Session.LocalAddr()
+}
+
+func (c *quicPktConn) SetDeadline(t time.Time) error {
+ return c.Stream.SetDeadline(t)
+}
+
+func (c *quicPktConn) SetReadDeadline(t time.Time) error {
+ return c.Stream.SetReadDeadline(t)
+}
+
+func (c *quicPktConn) SetWriteDeadline(t time.Time) error {
+ return c.Stream.SetWriteDeadline(t)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/frag.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/frag.go
new file mode 100644
index 0000000..7a38774
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/frag.go
@@ -0,0 +1,67 @@
+package core
+
+func fragUDPMessage(m udpMessage, maxSize int) []udpMessage {
+ if m.Size() <= maxSize {
+ return []udpMessage{m}
+ }
+ fullPayload := m.Data
+ maxPayloadSize := maxSize - m.HeaderSize()
+ off := 0
+ fragID := uint8(0)
+ fragCount := uint8((len(fullPayload) + maxPayloadSize - 1) / maxPayloadSize) // round up
+ var frags []udpMessage
+ for off < len(fullPayload) {
+ payloadSize := len(fullPayload) - off
+ if payloadSize > maxPayloadSize {
+ payloadSize = maxPayloadSize
+ }
+ frag := m
+ frag.FragID = fragID
+ frag.FragCount = fragCount
+ frag.DataLen = uint16(payloadSize)
+ frag.Data = fullPayload[off : off+payloadSize]
+ frags = append(frags, frag)
+ off += payloadSize
+ fragID++
+ }
+ return frags
+}
+
+type defragger struct {
+ msgID uint16
+ frags []*udpMessage
+ count uint8
+}
+
+func (d *defragger) Feed(m udpMessage) *udpMessage {
+ if m.FragCount <= 1 {
+ return &m
+ }
+ if m.FragID >= m.FragCount {
+ // wtf is this?
+ return nil
+ }
+ if m.MsgID != d.msgID {
+ // new message, clear previous state
+ d.msgID = m.MsgID
+ d.frags = make([]*udpMessage, m.FragCount)
+ d.count = 1
+ d.frags[m.FragID] = &m
+ } else if d.frags[m.FragID] == nil {
+ d.frags[m.FragID] = &m
+ d.count++
+ if int(d.count) == len(d.frags) {
+ // all fragments received, assemble
+ var data []byte
+ for _, frag := range d.frags {
+ data = append(data, frag.Data...)
+ }
+ m.DataLen = uint16(len(data))
+ m.Data = data
+ m.FragID = 0
+ m.FragCount = 1
+ return &m
+ }
+ }
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/frag_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/frag_test.go
new file mode 100644
index 0000000..f2f2462
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/frag_test.go
@@ -0,0 +1,346 @@
+package core
+
+import (
+ "reflect"
+ "testing"
+)
+
+func Test_fragUDPMessage(t *testing.T) {
+ type args struct {
+ m udpMessage
+ maxSize int
+ }
+ tests := []struct {
+ name string
+ args args
+ want []udpMessage
+ }{
+ {
+ "no frag",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 0,
+ FragCount: 1,
+ DataLen: 5,
+ Data: []byte("hello"),
+ },
+ 100,
+ },
+ []udpMessage{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 0,
+ FragCount: 1,
+ DataLen: 5,
+ Data: []byte("hello"),
+ },
+ },
+ },
+ {
+ "2 frags",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 0,
+ FragCount: 1,
+ DataLen: 5,
+ Data: []byte("hello"),
+ },
+ 22,
+ },
+ []udpMessage{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 0,
+ FragCount: 2,
+ DataLen: 4,
+ Data: []byte("hell"),
+ },
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 1,
+ FragCount: 2,
+ DataLen: 1,
+ Data: []byte("o"),
+ },
+ },
+ },
+ {
+ "4 frags",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 0,
+ FragCount: 1,
+ DataLen: 20,
+ Data: []byte("wow wow wow lol lmao"),
+ },
+ 23,
+ },
+ []udpMessage{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 0,
+ FragCount: 4,
+ DataLen: 5,
+ Data: []byte("wow w"),
+ },
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 1,
+ FragCount: 4,
+ DataLen: 5,
+ Data: []byte("ow wo"),
+ },
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 2,
+ FragCount: 4,
+ DataLen: 5,
+ Data: []byte("w lol"),
+ },
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 3,
+ FragCount: 4,
+ DataLen: 5,
+ Data: []byte(" lmao"),
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ if got := fragUDPMessage(tt.args.m, tt.args.maxSize); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("fragUDPMessage() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
+
+func Test_defragger_Feed(t *testing.T) {
+ d := &defragger{}
+ type args struct {
+ m udpMessage
+ }
+ tests := []struct {
+ name string
+ args args
+ want *udpMessage
+ }{
+ {
+ "no frag",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 0,
+ FragCount: 1,
+ DataLen: 5,
+ Data: []byte("hello"),
+ },
+ },
+ &udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 123,
+ FragID: 0,
+ FragCount: 1,
+ DataLen: 5,
+ Data: []byte("hello"),
+ },
+ },
+ {
+ "frag 1 - 1/3",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 666,
+ FragID: 0,
+ FragCount: 3,
+ DataLen: 5,
+ Data: []byte("hello"),
+ },
+ },
+ nil,
+ },
+ {
+ "frag 1 - 2/3",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 666,
+ FragID: 1,
+ FragCount: 3,
+ DataLen: 8,
+ Data: []byte(" shitty "),
+ },
+ },
+ nil,
+ },
+ {
+ "frag 1 - 3/3",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 666,
+ FragID: 2,
+ FragCount: 3,
+ DataLen: 7,
+ Data: []byte("world!!"),
+ },
+ },
+ &udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 666,
+ FragID: 0,
+ FragCount: 1,
+ DataLen: 20,
+ Data: []byte("hello shitty world!!"),
+ },
+ },
+ {
+ "frag 2 - 1/2",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 777,
+ FragID: 0,
+ FragCount: 2,
+ DataLen: 5,
+ Data: []byte("hello"),
+ },
+ },
+ nil,
+ },
+ {
+ "frag 3 - 2/2",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 778,
+ FragID: 1,
+ FragCount: 2,
+ DataLen: 5,
+ Data: []byte(" moto"),
+ },
+ },
+ nil,
+ },
+ {
+ "frag 2 - 2/2",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 777,
+ FragID: 1,
+ FragCount: 2,
+ DataLen: 5,
+ Data: []byte(" moto"),
+ },
+ },
+ nil,
+ },
+ {
+ "frag 2 - 1/2 re",
+ args{
+ udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 777,
+ FragID: 0,
+ FragCount: 2,
+ DataLen: 5,
+ Data: []byte("hello"),
+ },
+ },
+ &udpMessage{
+ SessionID: 123,
+ HostLen: 4,
+ Host: "test",
+ Port: 123,
+ MsgID: 777,
+ FragID: 0,
+ FragCount: 1,
+ DataLen: 10,
+ Data: []byte("hello moto"),
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ if got := d.Feed(tt.args.m); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("Feed() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/protocol.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/protocol.go
new file mode 100644
index 0000000..7fd64d7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/protocol.go
@@ -0,0 +1,76 @@
+package core
+
+import (
+ "time"
+)
+
+const (
+ protocolVersion = uint8(3)
+ protocolVersionV2 = uint8(2)
+ protocolTimeout = 10 * time.Second
+
+ closeErrorCodeGeneric = 0
+ closeErrorCodeProtocol = 1
+ closeErrorCodeAuth = 2
+)
+
+type transmissionRate struct {
+ SendBPS uint64
+ RecvBPS uint64
+}
+
+type clientHello struct {
+ Rate transmissionRate
+ AuthLen uint16 `struc:"sizeof=Auth"`
+ Auth []byte
+}
+
+type serverHello struct {
+ OK bool
+ Rate transmissionRate
+ MessageLen uint16 `struc:"sizeof=Message"`
+ Message string
+}
+
+type clientRequest struct {
+ UDP bool
+ HostLen uint16 `struc:"sizeof=Host"`
+ Host string
+ Port uint16
+}
+
+type serverResponse struct {
+ OK bool
+ UDPSessionID uint32
+ MessageLen uint16 `struc:"sizeof=Message"`
+ Message string
+}
+
+type udpMessage struct {
+ SessionID uint32
+ HostLen uint16 `struc:"sizeof=Host"`
+ Host string
+ Port uint16
+ MsgID uint16 // doesn't matter when not fragmented, but must not be 0 when fragmented
+ FragID uint8 // doesn't matter when not fragmented, starts at 0 when fragmented
+ FragCount uint8 // must be 1 when not fragmented
+ DataLen uint16 `struc:"sizeof=Data"`
+ Data []byte
+}
+
+func (m udpMessage) HeaderSize() int {
+ return 4 + 2 + len(m.Host) + 2 + 2 + 1 + 1 + 2
+}
+
+func (m udpMessage) Size() int {
+ return m.HeaderSize() + len(m.Data)
+}
+
+type udpMessageV2 struct {
+ SessionID uint32
+ HostLen uint16 `struc:"sizeof=Host"`
+ Host string
+ Port uint16
+ DataLen uint16 `struc:"sizeof=Data"`
+ Data []byte
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/stream.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/stream.go
new file mode 100644
index 0000000..627b478
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/core/stream.go
@@ -0,0 +1,54 @@
+package core
+
+import (
+ "context"
+ "github.com/metacubex/quic-go"
+ "time"
+)
+
+// Handle stream close properly
+// Ref: https://github.com/libp2p/go-libp2p-quic-transport/blob/master/stream.go
+type wrappedQUICStream struct {
+ Stream quic.Stream
+}
+
+func (s *wrappedQUICStream) StreamID() quic.StreamID {
+ return s.Stream.StreamID()
+}
+
+func (s *wrappedQUICStream) Read(p []byte) (n int, err error) {
+ return s.Stream.Read(p)
+}
+
+func (s *wrappedQUICStream) CancelRead(code quic.StreamErrorCode) {
+ s.Stream.CancelRead(code)
+}
+
+func (s *wrappedQUICStream) SetReadDeadline(t time.Time) error {
+ return s.Stream.SetReadDeadline(t)
+}
+
+func (s *wrappedQUICStream) Write(p []byte) (n int, err error) {
+ return s.Stream.Write(p)
+}
+
+func (s *wrappedQUICStream) Close() error {
+ s.Stream.CancelRead(0)
+ return s.Stream.Close()
+}
+
+func (s *wrappedQUICStream) CancelWrite(code quic.StreamErrorCode) {
+ s.Stream.CancelWrite(code)
+}
+
+func (s *wrappedQUICStream) Context() context.Context {
+ return s.Stream.Context()
+}
+
+func (s *wrappedQUICStream) SetWriteDeadline(t time.Time) error {
+ return s.Stream.SetWriteDeadline(t)
+}
+
+func (s *wrappedQUICStream) SetDeadline(t time.Time) error {
+ return s.Stream.SetDeadline(t)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/dummy.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/dummy.go
new file mode 100644
index 0000000..3edff10
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/dummy.go
@@ -0,0 +1,18 @@
+package obfs
+
+type DummyObfuscator struct{}
+
+func NewDummyObfuscator() *DummyObfuscator {
+ return &DummyObfuscator{}
+}
+
+func (x *DummyObfuscator) Deobfuscate(in []byte, out []byte) int {
+ if len(out) < len(in) {
+ return 0
+ }
+ return copy(out, in)
+}
+
+func (x *DummyObfuscator) Obfuscate(in []byte, out []byte) int {
+ return copy(out, in)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/obfs.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/obfs.go
new file mode 100644
index 0000000..cb108a3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/obfs.go
@@ -0,0 +1,6 @@
+package obfs
+
+type Obfuscator interface {
+ Deobfuscate(in []byte, out []byte) int
+ Obfuscate(in []byte, out []byte) int
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/xplus.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/xplus.go
new file mode 100644
index 0000000..4d1e3f2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/xplus.go
@@ -0,0 +1,44 @@
+package obfs
+
+import (
+ "crypto/rand"
+ "crypto/sha256"
+)
+
+// [salt][obfuscated payload]
+
+const saltLen = 16
+
+type XPlusObfuscator struct {
+ Key []byte
+}
+
+func NewXPlusObfuscator(key []byte) *XPlusObfuscator {
+ return &XPlusObfuscator{
+ Key: key,
+ }
+}
+
+func (x *XPlusObfuscator) Deobfuscate(in []byte, out []byte) int {
+ pLen := len(in) - saltLen
+ if pLen <= 0 || len(out) < pLen {
+ // Invalid
+ return 0
+ }
+ key := sha256.Sum256(append(x.Key, in[:saltLen]...))
+ // Deobfuscate the payload
+ for i, c := range in[saltLen:] {
+ out[i] = c ^ key[i%sha256.Size]
+ }
+ return pLen
+}
+
+func (x *XPlusObfuscator) Obfuscate(in []byte, out []byte) int {
+ _, _ = rand.Read(out[:saltLen]) // salt
+ // Obfuscate the payload
+ key := sha256.Sum256(append(x.Key, out[:saltLen]...))
+ for i, c := range in {
+ out[i+saltLen] = c ^ key[i%sha256.Size]
+ }
+ return len(in) + saltLen
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/xplus_test.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/xplus_test.go
new file mode 100644
index 0000000..c1cf629
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/obfs/xplus_test.go
@@ -0,0 +1,31 @@
+package obfs
+
+import (
+ "bytes"
+ "testing"
+)
+
+func TestXPlusObfuscator(t *testing.T) {
+ x := NewXPlusObfuscator([]byte("Vaundy"))
+ tests := []struct {
+ name string
+ p []byte
+ }{
+ {name: "1", p: []byte("HelloWorld")},
+ {name: "2", p: []byte("Regret is just a horrible attempt at time travel that ends with you feeling like crap")},
+ {name: "3", p: []byte("To be, or not to be, that is the question:\nWhether 'tis nobler in the mind to suffer\n" +
+ "The slings and arrows of outrageous fortune,\nOr to take arms against a sea of troubles\n" +
+ "And by opposing end them. To die—to sleep,\nNo more; and by a sleep to say we end")},
+ {name: "empty", p: []byte("")},
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ buf := make([]byte, 10240)
+ n := x.Obfuscate(tt.p, buf)
+ n2 := x.Deobfuscate(buf[:n], buf[n:])
+ if !bytes.Equal(tt.p, buf[n:n+n2]) {
+ t.Errorf("Inconsistent deobfuscate result: got %v, want %v", buf[n:n+n2], tt.p)
+ }
+ })
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/pmtud_fix/avail.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/pmtud_fix/avail.go
new file mode 100644
index 0000000..af248f5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/pmtud_fix/avail.go
@@ -0,0 +1,7 @@
+//go:build linux || windows || darwin
+
+package pmtud_fix
+
+const (
+ DisablePathMTUDiscovery = false
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/pmtud_fix/unavail.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/pmtud_fix/unavail.go
new file mode 100644
index 0000000..35b849d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/pmtud_fix/unavail.go
@@ -0,0 +1,7 @@
+//go:build !linux && !windows && !darwin
+
+package pmtud_fix
+
+const (
+ DisablePathMTUDiscovery = true
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/transport/client.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/transport/client.go
new file mode 100644
index 0000000..91876ea
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/transport/client.go
@@ -0,0 +1,85 @@
+package transport
+
+import (
+ "crypto/tls"
+ "fmt"
+ "net"
+ "time"
+
+ "github.com/metacubex/quic-go"
+
+ "github.com/metacubex/mihomo/transport/hysteria/conns/faketcp"
+ "github.com/metacubex/mihomo/transport/hysteria/conns/udp"
+ "github.com/metacubex/mihomo/transport/hysteria/conns/wechat"
+ obfsPkg "github.com/metacubex/mihomo/transport/hysteria/obfs"
+ "github.com/metacubex/mihomo/transport/hysteria/utils"
+)
+
+type ClientTransport struct{}
+
+func (ct *ClientTransport) quicPacketConn(proto string, rAddr net.Addr, serverPorts string, obfs obfsPkg.Obfuscator, hopInterval time.Duration, dialer utils.PacketDialer) (net.PacketConn, error) {
+ server := rAddr.String()
+ if len(proto) == 0 || proto == "udp" {
+ conn, err := dialer.ListenPacket(rAddr)
+ if err != nil {
+ return nil, err
+ }
+ if obfs != nil {
+ if serverPorts != "" {
+ return udp.NewObfsUDPHopClientPacketConn(server, serverPorts, hopInterval, obfs, dialer)
+ }
+ oc := udp.NewObfsUDPConn(conn, obfs)
+ return oc, nil
+ } else {
+ if serverPorts != "" {
+ return udp.NewObfsUDPHopClientPacketConn(server, serverPorts, hopInterval, nil, dialer)
+ }
+ return conn, nil
+ }
+ } else if proto == "wechat-video" {
+ conn, err := dialer.ListenPacket(rAddr)
+ if err != nil {
+ return nil, err
+ }
+ if obfs == nil {
+ obfs = obfsPkg.NewDummyObfuscator()
+ }
+ return wechat.NewObfsWeChatUDPConn(conn, obfs), nil
+ } else if proto == "faketcp" {
+ var conn *faketcp.TCPConn
+ conn, err := faketcp.Dial("tcp", server)
+ if err != nil {
+ return nil, err
+ }
+ if obfs != nil {
+ oc := faketcp.NewObfsFakeTCPConn(conn, obfs)
+ return oc, nil
+ } else {
+ return conn, nil
+ }
+ } else {
+ return nil, fmt.Errorf("unsupported protocol: %s", proto)
+ }
+}
+
+func (ct *ClientTransport) QUICDial(proto string, server string, serverPorts string, tlsConfig *tls.Config, quicConfig *quic.Config, obfs obfsPkg.Obfuscator, hopInterval time.Duration, dialer utils.PacketDialer) (quic.Connection, error) {
+ serverUDPAddr, err := dialer.RemoteAddr(server)
+ if err != nil {
+ return nil, err
+ }
+
+ pktConn, err := ct.quicPacketConn(proto, serverUDPAddr, serverPorts, obfs, hopInterval, dialer)
+ if err != nil {
+ return nil, err
+ }
+
+ transport := quic.Transport{Conn: pktConn}
+ transport.SetCreatedConn(true) // auto close conn
+ transport.SetSingleUse(true) // auto close transport
+ qs, err := transport.Dial(dialer.Context(), serverUDPAddr, tlsConfig, quicConfig)
+ if err != nil {
+ _ = pktConn.Close()
+ return nil, err
+ }
+ return qs, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/utils/misc.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/utils/misc.go
new file mode 100644
index 0000000..670d737
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/hysteria/utils/misc.go
@@ -0,0 +1,49 @@
+package utils
+
+import (
+ "context"
+ "net"
+ "strconv"
+)
+
+func SplitHostPort(hostport string) (string, uint16, error) {
+ host, port, err := net.SplitHostPort(hostport)
+ if err != nil {
+ return "", 0, err
+ }
+ portUint, err := strconv.ParseUint(port, 10, 16)
+ if err != nil {
+ return "", 0, err
+ }
+ return host, uint16(portUint), err
+}
+
+func ParseIPZone(s string) (net.IP, string) {
+ s, zone := splitHostZone(s)
+ return net.ParseIP(s), zone
+}
+
+func splitHostZone(s string) (host, zone string) {
+ if i := last(s, '%'); i > 0 {
+ host, zone = s[:i], s[i+1:]
+ } else {
+ host = s
+ }
+ return
+}
+
+func last(s string, b byte) int {
+ i := len(s)
+ for i--; i >= 0; i-- {
+ if s[i] == b {
+ break
+ }
+ }
+ return i
+}
+
+type PacketDialer interface {
+ ListenPacket(rAddr net.Addr) (net.PacketConn, error)
+ Context() context.Context
+ RemoteAddr(host string) (net.Addr, error)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/restls/restls.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/restls/restls.go
new file mode 100644
index 0000000..0f3ba8a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/restls/restls.go
@@ -0,0 +1,39 @@
+package restls
+
+import (
+ "context"
+ "net"
+
+ tls "github.com/3andne/restls-client-go"
+)
+
+const (
+ Mode string = "restls"
+)
+
+type Restls struct {
+ *tls.UConn
+}
+
+func (r *Restls) Upstream() any {
+ return r.UConn.NetConn()
+}
+
+// NewRestls return a Restls Connection
+func NewRestls(ctx context.Context, conn net.Conn, config *tls.Config) (net.Conn, error) {
+ clientHellowID := tls.HelloChrome_Auto
+ if config != nil {
+ clientIDPtr := config.ClientID.Load()
+ if clientIDPtr != nil {
+ clientHellowID = *clientIDPtr
+ }
+ }
+ restls := &Restls{
+ UConn: tls.UClient(conn, config, clientHellowID),
+ }
+ if err := restls.HandshakeContext(ctx); err != nil {
+ return nil, err
+ }
+
+ return restls, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/README.md b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/README.md
new file mode 100644
index 0000000..c9fc815
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/README.md
@@ -0,0 +1,5 @@
+## Embedded go-shadowsocks2
+
+from https://github.com/Dreamacro/go-shadowsocks2
+
+origin https://github.com/riobard/go-shadowsocks2
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/core/cipher.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/core/cipher.go
new file mode 100644
index 0000000..7cb12c4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/core/cipher.go
@@ -0,0 +1,186 @@
+package core
+
+import (
+ "crypto/md5"
+ "errors"
+ "net"
+ "sort"
+ "strings"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/transport/shadowsocks/shadowaead"
+ "github.com/metacubex/mihomo/transport/shadowsocks/shadowstream"
+)
+
+type Cipher interface {
+ StreamConnCipher
+ PacketConnCipher
+}
+
+type StreamConnCipher interface {
+ StreamConn(net.Conn) net.Conn
+}
+
+type PacketConnCipher interface {
+ PacketConn(N.EnhancePacketConn) N.EnhancePacketConn
+}
+
+// ErrCipherNotSupported occurs when a cipher is not supported (likely because of security concerns).
+var ErrCipherNotSupported = errors.New("cipher not supported")
+
+const (
+ aeadAes128Gcm = "AEAD_AES_128_GCM"
+ aeadAes192Gcm = "AEAD_AES_192_GCM"
+ aeadAes256Gcm = "AEAD_AES_256_GCM"
+ aeadChacha20Poly1305 = "AEAD_CHACHA20_POLY1305"
+ aeadXChacha20Poly1305 = "AEAD_XCHACHA20_POLY1305"
+ aeadChacha8Poly1305 = "AEAD_CHACHA8_POLY1305"
+ aeadXChacha8Poly1305 = "AEAD_XCHACHA8_POLY1305"
+ aeadAes128Ccm = "AEAD_AES_128_CCM"
+ aeadAes192Ccm = "AEAD_AES_192_CCM"
+ aeadAes256Ccm = "AEAD_AES_256_CCM"
+)
+
+// List of AEAD ciphers: key size in bytes and constructor
+var aeadList = map[string]struct {
+ KeySize int
+ New func([]byte) (shadowaead.Cipher, error)
+}{
+ aeadAes128Gcm: {16, shadowaead.AESGCM},
+ aeadAes192Gcm: {24, shadowaead.AESGCM},
+ aeadAes256Gcm: {32, shadowaead.AESGCM},
+ aeadChacha20Poly1305: {32, shadowaead.Chacha20Poly1305},
+ aeadXChacha20Poly1305: {32, shadowaead.XChacha20Poly1305},
+ aeadChacha8Poly1305: {32, shadowaead.Chacha8Poly1305},
+ aeadXChacha8Poly1305: {32, shadowaead.XChacha8Poly1305},
+ aeadAes128Ccm: {16, shadowaead.AESCCM},
+ aeadAes192Ccm: {24, shadowaead.AESCCM},
+ aeadAes256Ccm: {32, shadowaead.AESCCM},
+}
+
+// List of stream ciphers: key size in bytes and constructor
+var streamList = map[string]struct {
+ KeySize int
+ New func(key []byte) (shadowstream.Cipher, error)
+}{
+ "RC4-MD5": {16, shadowstream.RC4MD5},
+ "AES-128-CTR": {16, shadowstream.AESCTR},
+ "AES-192-CTR": {24, shadowstream.AESCTR},
+ "AES-256-CTR": {32, shadowstream.AESCTR},
+ "AES-128-CFB": {16, shadowstream.AESCFB},
+ "AES-192-CFB": {24, shadowstream.AESCFB},
+ "AES-256-CFB": {32, shadowstream.AESCFB},
+ "CHACHA20": {32, shadowstream.ChaCha20},
+ "CHACHA20-IETF": {32, shadowstream.Chacha20IETF},
+ "XCHACHA20": {32, shadowstream.Xchacha20},
+}
+
+// ListCipher returns a list of available cipher names sorted alphabetically.
+func ListCipher() []string {
+ var l []string
+ for k := range aeadList {
+ l = append(l, k)
+ }
+ for k := range streamList {
+ l = append(l, k)
+ }
+ sort.Strings(l)
+ return l
+}
+
+// PickCipher returns a Cipher of the given name. Derive key from password if given key is empty.
+func PickCipher(name string, key []byte, password string) (Cipher, error) {
+ name = strings.ToUpper(name)
+
+ switch name {
+ case "DUMMY":
+ return &dummy{}, nil
+ case "CHACHA20-IETF-POLY1305":
+ name = aeadChacha20Poly1305
+ case "XCHACHA20-IETF-POLY1305":
+ name = aeadXChacha20Poly1305
+ case "AES-128-GCM":
+ name = aeadAes128Gcm
+ case "AES-192-GCM":
+ name = aeadAes192Gcm
+ case "AES-256-GCM":
+ name = aeadAes256Gcm
+ case "CHACHA8-IETF-POLY1305":
+ name = aeadChacha8Poly1305
+ case "XCHACHA8-IETF-POLY1305":
+ name = aeadXChacha8Poly1305
+ case "AES-128-CCM":
+ name = aeadAes128Ccm
+ case "AES-192-CCM":
+ name = aeadAes192Ccm
+ case "AES-256-CCM":
+ name = aeadAes256Ccm
+ }
+
+ if choice, ok := aeadList[name]; ok {
+ if len(key) == 0 {
+ key = Kdf(password, choice.KeySize)
+ }
+ if len(key) != choice.KeySize {
+ return nil, shadowaead.KeySizeError(choice.KeySize)
+ }
+ aead, err := choice.New(key)
+ return &AeadCipher{Cipher: aead, Key: key}, err
+ }
+
+ if choice, ok := streamList[name]; ok {
+ if len(key) == 0 {
+ key = Kdf(password, choice.KeySize)
+ }
+ if len(key) != choice.KeySize {
+ return nil, shadowstream.KeySizeError(choice.KeySize)
+ }
+ ciph, err := choice.New(key)
+ return &StreamCipher{Cipher: ciph, Key: key}, err
+ }
+
+ return nil, ErrCipherNotSupported
+}
+
+type AeadCipher struct {
+ shadowaead.Cipher
+
+ Key []byte
+}
+
+func (aead *AeadCipher) StreamConn(c net.Conn) net.Conn { return shadowaead.NewConn(c, aead) }
+func (aead *AeadCipher) PacketConn(c N.EnhancePacketConn) N.EnhancePacketConn {
+ return shadowaead.NewPacketConn(c, aead)
+}
+
+type StreamCipher struct {
+ shadowstream.Cipher
+
+ Key []byte
+}
+
+func (ciph *StreamCipher) StreamConn(c net.Conn) net.Conn { return shadowstream.NewConn(c, ciph) }
+func (ciph *StreamCipher) PacketConn(c N.EnhancePacketConn) N.EnhancePacketConn {
+ return shadowstream.NewPacketConn(c, ciph)
+}
+
+// dummy cipher does not encrypt
+
+type dummy struct{}
+
+func (dummy) StreamConn(c net.Conn) net.Conn { return c }
+func (dummy) PacketConn(c N.EnhancePacketConn) N.EnhancePacketConn { return c }
+
+// key-derivation function from original Shadowsocks
+func Kdf(password string, keyLen int) []byte {
+ var b, prev []byte
+ h := md5.New()
+ for len(b) < keyLen {
+ h.Write(prev)
+ h.Write([]byte(password))
+ b = h.Sum(b)
+ prev = b[len(b)-h.Size():]
+ h.Reset()
+ }
+ return b[:keyLen]
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowaead/cipher.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowaead/cipher.go
new file mode 100644
index 0000000..7981d5b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowaead/cipher.go
@@ -0,0 +1,133 @@
+package shadowaead
+
+import (
+ "crypto/aes"
+ "crypto/cipher"
+ "crypto/sha1"
+ "io"
+ "strconv"
+
+ "github.com/metacubex/chacha"
+ "gitlab.com/go-extension/aes-ccm"
+ "golang.org/x/crypto/chacha20poly1305"
+ "golang.org/x/crypto/hkdf"
+)
+
+type Cipher interface {
+ KeySize() int
+ SaltSize() int
+ Encrypter(salt []byte) (cipher.AEAD, error)
+ Decrypter(salt []byte) (cipher.AEAD, error)
+}
+
+type KeySizeError int
+
+func (e KeySizeError) Error() string {
+ return "key size error: need " + strconv.Itoa(int(e)) + " bytes"
+}
+
+func hkdfSHA1(secret, salt, info, outkey []byte) {
+ r := hkdf.New(sha1.New, secret, salt, info)
+ if _, err := io.ReadFull(r, outkey); err != nil {
+ panic(err) // should never happen
+ }
+}
+
+type metaCipher struct {
+ psk []byte
+ makeAEAD func(key []byte) (cipher.AEAD, error)
+}
+
+func (a *metaCipher) KeySize() int { return len(a.psk) }
+func (a *metaCipher) SaltSize() int {
+ if ks := a.KeySize(); ks > 16 {
+ return ks
+ }
+ return 16
+}
+
+func (a *metaCipher) Encrypter(salt []byte) (cipher.AEAD, error) {
+ subkey := make([]byte, a.KeySize())
+ hkdfSHA1(a.psk, salt, []byte("ss-subkey"), subkey)
+ return a.makeAEAD(subkey)
+}
+
+func (a *metaCipher) Decrypter(salt []byte) (cipher.AEAD, error) {
+ subkey := make([]byte, a.KeySize())
+ hkdfSHA1(a.psk, salt, []byte("ss-subkey"), subkey)
+ return a.makeAEAD(subkey)
+}
+
+func aesGCM(key []byte) (cipher.AEAD, error) {
+ blk, err := aes.NewCipher(key)
+ if err != nil {
+ return nil, err
+ }
+ return cipher.NewGCM(blk)
+}
+
+// AESGCM creates a new Cipher with a pre-shared key. len(psk) must be
+// one of 16, 24, or 32 to select AES-128/196/256-GCM.
+func AESGCM(psk []byte) (Cipher, error) {
+ switch l := len(psk); l {
+ case 16, 24, 32: // AES 128/196/256
+ default:
+ return nil, aes.KeySizeError(l)
+ }
+ return &metaCipher{psk: psk, makeAEAD: aesGCM}, nil
+}
+
+func aesCCM(key []byte) (cipher.AEAD, error) {
+ blk, err := aes.NewCipher(key)
+ if err != nil {
+ return nil, err
+ }
+ return ccm.NewCCM(blk)
+}
+
+// AESCCM creates a new Cipher with a pre-shared key. len(psk) must be
+// one of 16, 24, or 32 to select AES-128/196/256-GCM.
+func AESCCM(psk []byte) (Cipher, error) {
+ switch l := len(psk); l {
+ case 16, 24, 32: // AES 128/196/256
+ default:
+ return nil, aes.KeySizeError(l)
+ }
+ return &metaCipher{psk: psk, makeAEAD: aesCCM}, nil
+}
+
+// Chacha20Poly1305 creates a new Cipher with a pre-shared key. len(psk)
+// must be 32.
+func Chacha20Poly1305(psk []byte) (Cipher, error) {
+ if len(psk) != chacha20poly1305.KeySize {
+ return nil, KeySizeError(chacha20poly1305.KeySize)
+ }
+ return &metaCipher{psk: psk, makeAEAD: chacha20poly1305.New}, nil
+}
+
+// XChacha20Poly1305 creates a new Cipher with a pre-shared key. len(psk)
+// must be 32.
+func XChacha20Poly1305(psk []byte) (Cipher, error) {
+ if len(psk) != chacha20poly1305.KeySize {
+ return nil, KeySizeError(chacha20poly1305.KeySize)
+ }
+ return &metaCipher{psk: psk, makeAEAD: chacha20poly1305.NewX}, nil
+}
+
+// Chacha8Poly1305 creates a new Cipher with a pre-shared key. len(psk)
+// must be 32.
+func Chacha8Poly1305(psk []byte) (Cipher, error) {
+ if len(psk) != chacha.KeySize {
+ return nil, KeySizeError(chacha.KeySize)
+ }
+ return &metaCipher{psk: psk, makeAEAD: chacha.NewChaCha8IETFPoly1305}, nil
+}
+
+// XChacha8Poly1305 creates a new Cipher with a pre-shared key. len(psk)
+// must be 32.
+func XChacha8Poly1305(psk []byte) (Cipher, error) {
+ if len(psk) != chacha.KeySize {
+ return nil, KeySizeError(chacha.KeySize)
+ }
+ return &metaCipher{psk: psk, makeAEAD: chacha.NewXChaCha20IETFPoly1305}, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowaead/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowaead/packet.go
new file mode 100644
index 0000000..f9d21ec
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowaead/packet.go
@@ -0,0 +1,113 @@
+package shadowaead
+
+import (
+ "crypto/rand"
+ "errors"
+ "io"
+ "net"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+// ErrShortPacket means that the packet is too short for a valid encrypted packet.
+var ErrShortPacket = errors.New("short packet")
+
+var _zerononce [128]byte // read-only. 128 bytes is more than enough.
+
+// Pack encrypts plaintext using Cipher with a randomly generated salt and
+// returns a slice of dst containing the encrypted packet and any error occurred.
+// Ensure len(dst) >= ciph.SaltSize() + len(plaintext) + aead.Overhead().
+func Pack(dst, plaintext []byte, ciph Cipher) ([]byte, error) {
+ saltSize := ciph.SaltSize()
+ salt := dst[:saltSize]
+ if _, err := rand.Read(salt); err != nil {
+ return nil, err
+ }
+ aead, err := ciph.Encrypter(salt)
+ if err != nil {
+ return nil, err
+ }
+ if len(dst) < saltSize+len(plaintext)+aead.Overhead() {
+ return nil, io.ErrShortBuffer
+ }
+ b := aead.Seal(dst[saltSize:saltSize], _zerononce[:aead.NonceSize()], plaintext, nil)
+ return dst[:saltSize+len(b)], nil
+}
+
+// Unpack decrypts pkt using Cipher and returns a slice of dst containing the decrypted payload and any error occurred.
+// Ensure len(dst) >= len(pkt) - aead.SaltSize() - aead.Overhead().
+func Unpack(dst, pkt []byte, ciph Cipher) ([]byte, error) {
+ saltSize := ciph.SaltSize()
+ if len(pkt) < saltSize {
+ return nil, ErrShortPacket
+ }
+ salt := pkt[:saltSize]
+ aead, err := ciph.Decrypter(salt)
+ if err != nil {
+ return nil, err
+ }
+ if len(pkt) < saltSize+aead.Overhead() {
+ return nil, ErrShortPacket
+ }
+ if saltSize+len(dst)+aead.Overhead() < len(pkt) {
+ return nil, io.ErrShortBuffer
+ }
+ b, err := aead.Open(dst[:0], _zerononce[:aead.NonceSize()], pkt[saltSize:], nil)
+ return b, err
+}
+
+type PacketConn struct {
+ N.EnhancePacketConn
+ Cipher
+}
+
+const maxPacketSize = 64 * 1024
+
+// NewPacketConn wraps an N.EnhancePacketConn with cipher
+func NewPacketConn(c N.EnhancePacketConn, ciph Cipher) *PacketConn {
+ return &PacketConn{EnhancePacketConn: c, Cipher: ciph}
+}
+
+// WriteTo encrypts b and write to addr using the embedded PacketConn.
+func (c *PacketConn) WriteTo(b []byte, addr net.Addr) (int, error) {
+ buf := pool.Get(maxPacketSize)
+ defer pool.Put(buf)
+ buf, err := Pack(buf, b, c)
+ if err != nil {
+ return 0, err
+ }
+ _, err = c.EnhancePacketConn.WriteTo(buf, addr)
+ return len(b), err
+}
+
+// ReadFrom reads from the embedded PacketConn and decrypts into b.
+func (c *PacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ n, addr, err := c.EnhancePacketConn.ReadFrom(b)
+ if err != nil {
+ return n, addr, err
+ }
+ bb, err := Unpack(b[c.Cipher.SaltSize():], b[:n], c)
+ if err != nil {
+ return n, addr, err
+ }
+ copy(b, bb)
+ return len(bb), addr, err
+}
+
+func (c *PacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ data, put, addr, err = c.EnhancePacketConn.WaitReadFrom()
+ if err != nil {
+ return
+ }
+ data, err = Unpack(data[c.Cipher.SaltSize():], data, c)
+ if err != nil {
+ if put != nil {
+ put()
+ }
+ data = nil
+ put = nil
+ return
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowaead/stream.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowaead/stream.go
new file mode 100644
index 0000000..de0993b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowaead/stream.go
@@ -0,0 +1,285 @@
+package shadowaead
+
+import (
+ "crypto/cipher"
+ "crypto/rand"
+ "errors"
+ "io"
+ "net"
+
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+const (
+ // payloadSizeMask is the maximum size of payload in bytes.
+ payloadSizeMask = 0x3FFF // 16*1024 - 1
+ bufSize = 17 * 1024 // >= 2+aead.Overhead()+payloadSizeMask+aead.Overhead()
+)
+
+var ErrZeroChunk = errors.New("zero chunk")
+
+type Writer struct {
+ io.Writer
+ cipher.AEAD
+ nonce [32]byte // should be sufficient for most nonce sizes
+}
+
+// NewWriter wraps an io.Writer with authenticated encryption.
+func NewWriter(w io.Writer, aead cipher.AEAD) *Writer { return &Writer{Writer: w, AEAD: aead} }
+
+// Write encrypts p and writes to the embedded io.Writer.
+func (w *Writer) Write(p []byte) (n int, err error) {
+ buf := pool.Get(bufSize)
+ defer pool.Put(buf)
+ nonce := w.nonce[:w.NonceSize()]
+ tag := w.Overhead()
+ off := 2 + tag
+
+ // compatible with snell
+ if len(p) == 0 {
+ buf = buf[:off]
+ buf[0], buf[1] = byte(0), byte(0)
+ w.Seal(buf[:0], nonce, buf[:2], nil)
+ increment(nonce)
+ _, err = w.Writer.Write(buf)
+ return
+ }
+
+ for nr := 0; n < len(p) && err == nil; n += nr {
+ nr = payloadSizeMask
+ if n+nr > len(p) {
+ nr = len(p) - n
+ }
+ buf = buf[:off+nr+tag]
+ buf[0], buf[1] = byte(nr>>8), byte(nr) // big-endian payload size
+ w.Seal(buf[:0], nonce, buf[:2], nil)
+ increment(nonce)
+ w.Seal(buf[:off], nonce, p[n:n+nr], nil)
+ increment(nonce)
+ _, err = w.Writer.Write(buf)
+ }
+ return
+}
+
+// ReadFrom reads from the given io.Reader until EOF or error, encrypts and
+// writes to the embedded io.Writer. Returns number of bytes read from r and
+// any error encountered.
+func (w *Writer) ReadFrom(r io.Reader) (n int64, err error) {
+ buf := pool.Get(bufSize)
+ defer pool.Put(buf)
+ nonce := w.nonce[:w.NonceSize()]
+ tag := w.Overhead()
+ off := 2 + tag
+ for {
+ nr, er := r.Read(buf[off : off+payloadSizeMask])
+ n += int64(nr)
+ buf[0], buf[1] = byte(nr>>8), byte(nr)
+ w.Seal(buf[:0], nonce, buf[:2], nil)
+ increment(nonce)
+ w.Seal(buf[:off], nonce, buf[off:off+nr], nil)
+ increment(nonce)
+ if _, ew := w.Writer.Write(buf[:off+nr+tag]); ew != nil {
+ err = ew
+ return
+ }
+ if er != nil {
+ if er != io.EOF { // ignore EOF as per io.ReaderFrom contract
+ err = er
+ }
+ return
+ }
+ }
+}
+
+type Reader struct {
+ io.Reader
+ cipher.AEAD
+ nonce [32]byte // should be sufficient for most nonce sizes
+ buf []byte // to be put back into bufPool
+ off int // offset to unconsumed part of buf
+}
+
+// NewReader wraps an io.Reader with authenticated decryption.
+func NewReader(r io.Reader, aead cipher.AEAD) *Reader { return &Reader{Reader: r, AEAD: aead} }
+
+// Read and decrypt a record into p. len(p) >= max payload size + AEAD overhead.
+func (r *Reader) read(p []byte) (int, error) {
+ nonce := r.nonce[:r.NonceSize()]
+ tag := r.Overhead()
+
+ // decrypt payload size
+ p = p[:2+tag]
+ if _, err := io.ReadFull(r.Reader, p); err != nil {
+ return 0, err
+ }
+ _, err := r.Open(p[:0], nonce, p, nil)
+ increment(nonce)
+ if err != nil {
+ return 0, err
+ }
+
+ // decrypt payload
+ size := (int(p[0])<<8 + int(p[1])) & payloadSizeMask
+ if size == 0 {
+ return 0, ErrZeroChunk
+ }
+
+ p = p[:size+tag]
+ if _, err := io.ReadFull(r.Reader, p); err != nil {
+ return 0, err
+ }
+ _, err = r.Open(p[:0], nonce, p, nil)
+ increment(nonce)
+ if err != nil {
+ return 0, err
+ }
+ return size, nil
+}
+
+// Read reads from the embedded io.Reader, decrypts and writes to p.
+func (r *Reader) Read(p []byte) (int, error) {
+ if r.buf == nil {
+ if len(p) >= payloadSizeMask+r.Overhead() {
+ return r.read(p)
+ }
+ b := pool.Get(bufSize)
+ n, err := r.read(b)
+ if err != nil {
+ return 0, err
+ }
+ r.buf = b[:n]
+ r.off = 0
+ }
+
+ n := copy(p, r.buf[r.off:])
+ r.off += n
+ if r.off == len(r.buf) {
+ pool.Put(r.buf[:cap(r.buf)])
+ r.buf = nil
+ }
+ return n, nil
+}
+
+// WriteTo reads from the embedded io.Reader, decrypts and writes to w until
+// there's no more data to write or when an error occurs. Return number of
+// bytes written to w and any error encountered.
+func (r *Reader) WriteTo(w io.Writer) (n int64, err error) {
+ if r.buf == nil {
+ r.buf = pool.Get(bufSize)
+ r.off = len(r.buf)
+ }
+
+ for {
+ for r.off < len(r.buf) {
+ nw, ew := w.Write(r.buf[r.off:])
+ r.off += nw
+ n += int64(nw)
+ if ew != nil {
+ if r.off == len(r.buf) {
+ pool.Put(r.buf[:cap(r.buf)])
+ r.buf = nil
+ }
+ err = ew
+ return
+ }
+ }
+
+ nr, er := r.read(r.buf)
+ if er != nil {
+ if er != io.EOF {
+ err = er
+ }
+ return
+ }
+ r.buf = r.buf[:nr]
+ r.off = 0
+ }
+}
+
+// increment little-endian encoded unsigned integer b. Wrap around on overflow.
+func increment(b []byte) {
+ for i := range b {
+ b[i]++
+ if b[i] != 0 {
+ return
+ }
+ }
+}
+
+type Conn struct {
+ net.Conn
+ Cipher
+ r *Reader
+ w *Writer
+}
+
+// NewConn wraps a stream-oriented net.Conn with cipher.
+func NewConn(c net.Conn, ciph Cipher) *Conn { return &Conn{Conn: c, Cipher: ciph} }
+
+func (c *Conn) initReader() error {
+ salt := make([]byte, c.SaltSize())
+ if _, err := io.ReadFull(c.Conn, salt); err != nil {
+ return err
+ }
+
+ aead, err := c.Decrypter(salt)
+ if err != nil {
+ return err
+ }
+
+ c.r = NewReader(c.Conn, aead)
+ return nil
+}
+
+func (c *Conn) Read(b []byte) (int, error) {
+ if c.r == nil {
+ if err := c.initReader(); err != nil {
+ return 0, err
+ }
+ }
+ return c.r.Read(b)
+}
+
+func (c *Conn) WriteTo(w io.Writer) (int64, error) {
+ if c.r == nil {
+ if err := c.initReader(); err != nil {
+ return 0, err
+ }
+ }
+ return c.r.WriteTo(w)
+}
+
+func (c *Conn) initWriter() error {
+ salt := make([]byte, c.SaltSize())
+ if _, err := rand.Read(salt); err != nil {
+ return err
+ }
+ aead, err := c.Encrypter(salt)
+ if err != nil {
+ return err
+ }
+ _, err = c.Conn.Write(salt)
+ if err != nil {
+ return err
+ }
+ c.w = NewWriter(c.Conn, aead)
+ return nil
+}
+
+func (c *Conn) Write(b []byte) (int, error) {
+ if c.w == nil {
+ if err := c.initWriter(); err != nil {
+ return 0, err
+ }
+ }
+ return c.w.Write(b)
+}
+
+func (c *Conn) ReadFrom(r io.Reader) (int64, error) {
+ if c.w == nil {
+ if err := c.initWriter(); err != nil {
+ return 0, err
+ }
+ }
+ return c.w.ReadFrom(r)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/cipher.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/cipher.go
new file mode 100644
index 0000000..dd39d03
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/cipher.go
@@ -0,0 +1,116 @@
+package shadowstream
+
+import (
+ "crypto/aes"
+ "crypto/cipher"
+ "crypto/md5"
+ "crypto/rc4"
+ "strconv"
+
+ "golang.org/x/crypto/chacha20"
+)
+
+// Cipher generates a pair of stream ciphers for encryption and decryption.
+type Cipher interface {
+ IVSize() int
+ Encrypter(iv []byte) cipher.Stream
+ Decrypter(iv []byte) cipher.Stream
+}
+
+type KeySizeError int
+
+func (e KeySizeError) Error() string {
+ return "key size error: need " + strconv.Itoa(int(e)) + " bytes"
+}
+
+// CTR mode
+type ctrStream struct{ cipher.Block }
+
+func (b *ctrStream) IVSize() int { return b.BlockSize() }
+func (b *ctrStream) Decrypter(iv []byte) cipher.Stream { return b.Encrypter(iv) }
+func (b *ctrStream) Encrypter(iv []byte) cipher.Stream { return cipher.NewCTR(b, iv) }
+
+func AESCTR(key []byte) (Cipher, error) {
+ blk, err := aes.NewCipher(key)
+ if err != nil {
+ return nil, err
+ }
+ return &ctrStream{blk}, nil
+}
+
+// CFB mode
+type cfbStream struct{ cipher.Block }
+
+func (b *cfbStream) IVSize() int { return b.BlockSize() }
+func (b *cfbStream) Decrypter(iv []byte) cipher.Stream { return cipher.NewCFBDecrypter(b, iv) }
+func (b *cfbStream) Encrypter(iv []byte) cipher.Stream { return cipher.NewCFBEncrypter(b, iv) }
+
+func AESCFB(key []byte) (Cipher, error) {
+ blk, err := aes.NewCipher(key)
+ if err != nil {
+ return nil, err
+ }
+ return &cfbStream{blk}, nil
+}
+
+// IETF-variant of chacha20
+type chacha20ietfkey []byte
+
+func (k chacha20ietfkey) IVSize() int { return chacha20.NonceSize }
+func (k chacha20ietfkey) Decrypter(iv []byte) cipher.Stream { return k.Encrypter(iv) }
+func (k chacha20ietfkey) Encrypter(iv []byte) cipher.Stream {
+ ciph, err := chacha20.NewUnauthenticatedCipher(k, iv)
+ if err != nil {
+ panic(err) // should never happen
+ }
+ return ciph
+}
+
+func Chacha20IETF(key []byte) (Cipher, error) {
+ if len(key) != chacha20.KeySize {
+ return nil, KeySizeError(chacha20.KeySize)
+ }
+ return chacha20ietfkey(key), nil
+}
+
+type xchacha20key []byte
+
+func (k xchacha20key) IVSize() int { return chacha20.NonceSizeX }
+func (k xchacha20key) Decrypter(iv []byte) cipher.Stream { return k.Encrypter(iv) }
+func (k xchacha20key) Encrypter(iv []byte) cipher.Stream {
+ ciph, err := chacha20.NewUnauthenticatedCipher(k, iv)
+ if err != nil {
+ panic(err) // should never happen
+ }
+ return ciph
+}
+
+func Xchacha20(key []byte) (Cipher, error) {
+ if len(key) != chacha20.KeySize {
+ return nil, KeySizeError(chacha20.KeySize)
+ }
+ return xchacha20key(key), nil
+}
+
+type rc4Md5Key []byte
+
+func (k rc4Md5Key) IVSize() int {
+ return 16
+}
+
+func (k rc4Md5Key) Encrypter(iv []byte) cipher.Stream {
+ h := md5.New()
+ h.Write([]byte(k))
+ h.Write(iv)
+ rc4key := h.Sum(nil)
+ c, _ := rc4.NewCipher(rc4key)
+ return c
+}
+
+func (k rc4Md5Key) Decrypter(iv []byte) cipher.Stream {
+ return k.Encrypter(iv)
+}
+
+func RC4MD5(key []byte) (Cipher, error) {
+ return rc4Md5Key(key), nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/old_chacha20.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/old_chacha20.go
new file mode 100644
index 0000000..eb61232
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/old_chacha20.go
@@ -0,0 +1,23 @@
+package shadowstream
+
+import (
+ "crypto/cipher"
+
+ "github.com/metacubex/chacha"
+)
+
+type chacha20key []byte
+
+func (k chacha20key) IVSize() int {
+ return chacha.NonceSize
+}
+func (k chacha20key) Encrypter(iv []byte) cipher.Stream {
+ c, _ := chacha.NewChaCha20(iv, k)
+ return c
+}
+func (k chacha20key) Decrypter(iv []byte) cipher.Stream {
+ return k.Encrypter(iv)
+}
+func ChaCha20(key []byte) (Cipher, error) {
+ return chacha20key(key), nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/packet.go
new file mode 100644
index 0000000..39d09a7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/packet.go
@@ -0,0 +1,97 @@
+package shadowstream
+
+import (
+ "crypto/rand"
+ "errors"
+ "io"
+ "net"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+// ErrShortPacket means the packet is too short to be a valid encrypted packet.
+var ErrShortPacket = errors.New("short packet")
+
+// Pack encrypts plaintext using stream cipher s and a random IV.
+// Returns a slice of dst containing random IV and ciphertext.
+// Ensure len(dst) >= s.IVSize() + len(plaintext).
+func Pack(dst, plaintext []byte, s Cipher) ([]byte, error) {
+ if len(dst) < s.IVSize()+len(plaintext) {
+ return nil, io.ErrShortBuffer
+ }
+ iv := dst[:s.IVSize()]
+ _, err := rand.Read(iv)
+ if err != nil {
+ return nil, err
+ }
+ s.Encrypter(iv).XORKeyStream(dst[len(iv):], plaintext)
+ return dst[:len(iv)+len(plaintext)], nil
+}
+
+// Unpack decrypts pkt using stream cipher s.
+// Returns a slice of dst containing decrypted plaintext.
+func Unpack(dst, pkt []byte, s Cipher) ([]byte, error) {
+ if len(pkt) < s.IVSize() {
+ return nil, ErrShortPacket
+ }
+ if len(dst) < len(pkt)-s.IVSize() {
+ return nil, io.ErrShortBuffer
+ }
+ iv := pkt[:s.IVSize()]
+ s.Decrypter(iv).XORKeyStream(dst, pkt[len(iv):])
+ return dst[:len(pkt)-len(iv)], nil
+}
+
+type PacketConn struct {
+ N.EnhancePacketConn
+ Cipher
+}
+
+// NewPacketConn wraps an N.EnhancePacketConn with stream cipher encryption/decryption.
+func NewPacketConn(c N.EnhancePacketConn, ciph Cipher) *PacketConn {
+ return &PacketConn{EnhancePacketConn: c, Cipher: ciph}
+}
+
+const maxPacketSize = 64 * 1024
+
+func (c *PacketConn) WriteTo(b []byte, addr net.Addr) (int, error) {
+ buf := pool.Get(maxPacketSize)
+ defer pool.Put(buf)
+ buf, err := Pack(buf, b, c.Cipher)
+ if err != nil {
+ return 0, err
+ }
+ _, err = c.EnhancePacketConn.WriteTo(buf, addr)
+ return len(b), err
+}
+
+func (c *PacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ n, addr, err := c.EnhancePacketConn.ReadFrom(b)
+ if err != nil {
+ return n, addr, err
+ }
+ bb, err := Unpack(b[c.IVSize():], b[:n], c.Cipher)
+ if err != nil {
+ return n, addr, err
+ }
+ copy(b, bb)
+ return len(bb), addr, err
+}
+
+func (c *PacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ data, put, addr, err = c.EnhancePacketConn.WaitReadFrom()
+ if err != nil {
+ return
+ }
+ data, err = Unpack(data[c.IVSize():], data, c)
+ if err != nil {
+ if put != nil {
+ put()
+ }
+ data = nil
+ put = nil
+ return
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/stream.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/stream.go
new file mode 100644
index 0000000..6c4b0f6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowsocks/shadowstream/stream.go
@@ -0,0 +1,197 @@
+package shadowstream
+
+import (
+ "crypto/cipher"
+ "crypto/rand"
+ "io"
+ "net"
+)
+
+const bufSize = 2048
+
+type Writer struct {
+ io.Writer
+ cipher.Stream
+ buf [bufSize]byte
+}
+
+// NewWriter wraps an io.Writer with stream cipher encryption.
+func NewWriter(w io.Writer, s cipher.Stream) *Writer { return &Writer{Writer: w, Stream: s} }
+
+func (w *Writer) Write(p []byte) (n int, err error) {
+ buf := w.buf[:]
+ for nw := 0; n < len(p) && err == nil; n += nw {
+ end := n + len(buf)
+ if end > len(p) {
+ end = len(p)
+ }
+ w.XORKeyStream(buf, p[n:end])
+ nw, err = w.Writer.Write(buf[:end-n])
+ }
+ return
+}
+
+func (w *Writer) ReadFrom(r io.Reader) (n int64, err error) {
+ buf := w.buf[:]
+ for {
+ nr, er := r.Read(buf)
+ n += int64(nr)
+ b := buf[:nr]
+ w.XORKeyStream(b, b)
+ if _, err = w.Writer.Write(b); err != nil {
+ return
+ }
+ if er != nil {
+ if er != io.EOF { // ignore EOF as per io.ReaderFrom contract
+ err = er
+ }
+ return
+ }
+ }
+}
+
+type Reader struct {
+ io.Reader
+ cipher.Stream
+ buf [bufSize]byte
+}
+
+// NewReader wraps an io.Reader with stream cipher decryption.
+func NewReader(r io.Reader, s cipher.Stream) *Reader { return &Reader{Reader: r, Stream: s} }
+
+func (r *Reader) Read(p []byte) (n int, err error) {
+ n, err = r.Reader.Read(p)
+ if err != nil {
+ return 0, err
+ }
+ r.XORKeyStream(p, p[:n])
+ return
+}
+
+func (r *Reader) WriteTo(w io.Writer) (n int64, err error) {
+ buf := r.buf[:]
+ for {
+ nr, er := r.Reader.Read(buf)
+ if nr > 0 {
+ r.XORKeyStream(buf, buf[:nr])
+ nw, ew := w.Write(buf[:nr])
+ n += int64(nw)
+ if ew != nil {
+ err = ew
+ return
+ }
+ }
+ if er != nil {
+ if er != io.EOF { // ignore EOF as per io.Copy contract (using src.WriteTo shortcut)
+ err = er
+ }
+ return
+ }
+ }
+}
+
+// A Conn represents a Shadowsocks connection. It implements the net.Conn interface.
+type Conn struct {
+ net.Conn
+ Cipher
+ r *Reader
+ w *Writer
+ readIV []byte
+ writeIV []byte
+}
+
+// NewConn wraps a stream-oriented net.Conn with stream cipher encryption/decryption.
+func NewConn(c net.Conn, ciph Cipher) *Conn { return &Conn{Conn: c, Cipher: ciph} }
+
+func (c *Conn) initReader() error {
+ if c.r == nil {
+ iv, err := c.ObtainReadIV()
+ if err != nil {
+ return err
+ }
+ c.r = NewReader(c.Conn, c.Decrypter(iv))
+ }
+ return nil
+}
+
+func (c *Conn) Read(b []byte) (int, error) {
+ if c.r == nil {
+ if err := c.initReader(); err != nil {
+ return 0, err
+ }
+ }
+ return c.r.Read(b)
+}
+
+func (c *Conn) WriteTo(w io.Writer) (int64, error) {
+ if c.r == nil {
+ if err := c.initReader(); err != nil {
+ return 0, err
+ }
+ }
+ return c.r.WriteTo(w)
+}
+
+func (c *Conn) initWriter() error {
+ if c.w == nil {
+ iv, err := c.ObtainWriteIV()
+ if err != nil {
+ return err
+ }
+ if _, err := c.Conn.Write(iv); err != nil {
+ return err
+ }
+ c.w = NewWriter(c.Conn, c.Encrypter(iv))
+ }
+ return nil
+}
+
+func (c *Conn) Write(b []byte) (int, error) {
+ if c.w == nil {
+ if err := c.initWriter(); err != nil {
+ return 0, err
+ }
+ }
+ return c.w.Write(b)
+}
+
+func (c *Conn) ReadFrom(r io.Reader) (int64, error) {
+ if c.w == nil {
+ if err := c.initWriter(); err != nil {
+ return 0, err
+ }
+ }
+ return c.w.ReadFrom(r)
+}
+
+func (c *Conn) ObtainWriteIV() ([]byte, error) {
+ if len(c.writeIV) == c.IVSize() {
+ return c.writeIV, nil
+ }
+
+ iv := make([]byte, c.IVSize())
+
+ if _, err := rand.Read(iv); err != nil {
+ return nil, err
+ }
+
+ c.writeIV = iv
+
+ return iv, nil
+}
+
+func (c *Conn) ObtainReadIV() ([]byte, error) {
+ if len(c.readIV) == c.IVSize() {
+ return c.readIV, nil
+ }
+
+ iv := make([]byte, c.IVSize())
+
+ if _, err := io.ReadFull(c.Conn, iv); err != nil {
+ return nil, err
+ }
+
+ c.readIV = iv
+
+ return iv, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowtls/shadowtls.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowtls/shadowtls.go
new file mode 100644
index 0000000..a0a3d7f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/shadowtls/shadowtls.go
@@ -0,0 +1,151 @@
+package shadowtls
+
+import (
+ "context"
+ "crypto/hmac"
+ "crypto/sha1"
+ "crypto/tls"
+ "encoding/binary"
+ "fmt"
+ "hash"
+ "io"
+ "net"
+
+ "github.com/metacubex/mihomo/common/pool"
+ C "github.com/metacubex/mihomo/constant"
+)
+
+const (
+ chunkSize = 1 << 13
+ Mode string = "shadow-tls"
+ hashLen int = 8
+ tlsHeaderLen int = 5
+)
+
+var (
+ DefaultALPN = []string{"h2", "http/1.1"}
+)
+
+// ShadowTLS is shadow-tls implementation
+type ShadowTLS struct {
+ net.Conn
+ password []byte
+ remain int
+ firstRequest bool
+ tlsConfig *tls.Config
+}
+
+type HashedConn struct {
+ net.Conn
+ hasher hash.Hash
+}
+
+func newHashedStream(conn net.Conn, password []byte) HashedConn {
+ return HashedConn{
+ Conn: conn,
+ hasher: hmac.New(sha1.New, password),
+ }
+}
+
+func (h HashedConn) Read(b []byte) (n int, err error) {
+ n, err = h.Conn.Read(b)
+ h.hasher.Write(b[:n])
+ return
+}
+
+func (s *ShadowTLS) read(b []byte) (int, error) {
+ var buf [tlsHeaderLen]byte
+ _, err := io.ReadFull(s.Conn, buf[:])
+ if err != nil {
+ return 0, fmt.Errorf("shadowtls read failed %w", err)
+ }
+ if buf[0] != 0x17 || buf[1] != 0x3 || buf[2] != 0x3 {
+ return 0, fmt.Errorf("invalid shadowtls header %v", buf)
+ }
+ length := int(binary.BigEndian.Uint16(buf[3:]))
+
+ if length > len(b) {
+ n, err := s.Conn.Read(b)
+ if err != nil {
+ return n, err
+ }
+ s.remain = length - n
+ return n, nil
+ }
+
+ return io.ReadFull(s.Conn, b[:length])
+}
+
+func (s *ShadowTLS) Read(b []byte) (int, error) {
+ if s.remain > 0 {
+ length := s.remain
+ if length > len(b) {
+ length = len(b)
+ }
+
+ n, err := io.ReadFull(s.Conn, b[:length])
+ if err != nil {
+ return n, fmt.Errorf("shadowtls Read failed with %w", err)
+ }
+ s.remain -= n
+ return n, nil
+ }
+
+ return s.read(b)
+}
+
+func (s *ShadowTLS) Write(b []byte) (int, error) {
+ length := len(b)
+ for i := 0; i < length; i += chunkSize {
+ end := i + chunkSize
+ if end > length {
+ end = length
+ }
+
+ n, err := s.write(b[i:end])
+ if err != nil {
+ return n, fmt.Errorf("shadowtls Write failed with %w, i=%d, end=%d, n=%d", err, i, end, n)
+ }
+ }
+ return length, nil
+}
+
+func (s *ShadowTLS) write(b []byte) (int, error) {
+ var hashVal []byte
+ if s.firstRequest {
+ hashedConn := newHashedStream(s.Conn, s.password)
+ tlsConn := tls.Client(hashedConn, s.tlsConfig)
+ // fix tls handshake not timeout
+ ctx, cancel := context.WithTimeout(context.Background(), C.DefaultTLSTimeout)
+ defer cancel()
+ if err := tlsConn.HandshakeContext(ctx); err != nil {
+ return 0, fmt.Errorf("tls connect failed with %w", err)
+ }
+ hashVal = hashedConn.hasher.Sum(nil)[:hashLen]
+ s.firstRequest = false
+ }
+
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ buf.Write([]byte{0x17, 0x03, 0x03})
+ binary.Write(buf, binary.BigEndian, uint16(len(b)+len(hashVal)))
+ buf.Write(hashVal)
+ buf.Write(b)
+ _, err := s.Conn.Write(buf.Bytes())
+ if err != nil {
+ // return 0 because errors occur here make the
+ // whole situation irrecoverable
+ return 0, err
+ }
+ return len(b), nil
+}
+
+// NewShadowTLS return a ShadowTLS
+func NewShadowTLS(conn net.Conn, password string, tlsConfig *tls.Config) net.Conn {
+ return &ShadowTLS{
+ Conn: conn,
+ password: []byte(password),
+ firstRequest: true,
+ tlsConfig: tlsConfig,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/simple-obfs/http.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/simple-obfs/http.go
new file mode 100644
index 0000000..9c3f8e0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/simple-obfs/http.go
@@ -0,0 +1,99 @@
+package obfs
+
+import (
+ "bytes"
+ "crypto/rand"
+ "encoding/base64"
+ "fmt"
+ "io"
+ "net"
+ "net/http"
+
+ "github.com/metacubex/mihomo/common/pool"
+
+ "github.com/metacubex/randv2"
+)
+
+// HTTPObfs is shadowsocks http simple-obfs implementation
+type HTTPObfs struct {
+ net.Conn
+ host string
+ port string
+ buf []byte
+ offset int
+ firstRequest bool
+ firstResponse bool
+}
+
+func (ho *HTTPObfs) Read(b []byte) (int, error) {
+ if ho.buf != nil {
+ n := copy(b, ho.buf[ho.offset:])
+ ho.offset += n
+ if ho.offset == len(ho.buf) {
+ pool.Put(ho.buf)
+ ho.buf = nil
+ }
+ return n, nil
+ }
+
+ if ho.firstResponse {
+ buf := pool.Get(pool.RelayBufferSize)
+ n, err := ho.Conn.Read(buf)
+ if err != nil {
+ pool.Put(buf)
+ return 0, err
+ }
+ idx := bytes.Index(buf[:n], []byte("\r\n\r\n"))
+ if idx == -1 {
+ pool.Put(buf)
+ return 0, io.EOF
+ }
+ ho.firstResponse = false
+ length := n - (idx + 4)
+ n = copy(b, buf[idx+4:n])
+ if length > n {
+ ho.buf = buf[:idx+4+length]
+ ho.offset = idx + 4 + n
+ } else {
+ pool.Put(buf)
+ }
+ return n, nil
+ }
+ return ho.Conn.Read(b)
+}
+
+func (ho *HTTPObfs) Write(b []byte) (int, error) {
+ if ho.firstRequest {
+ randBytes := make([]byte, 16)
+ rand.Read(randBytes)
+ req, err := http.NewRequest("GET", fmt.Sprintf("http://%s/", ho.host), bytes.NewBuffer(b[:]))
+ if err != nil {
+ return 0, err
+ }
+ req.Header.Set("User-Agent", fmt.Sprintf("curl/7.%d.%d", randv2.Int()%54, randv2.Int()%2))
+ req.Header.Set("Upgrade", "websocket")
+ req.Header.Set("Connection", "Upgrade")
+ req.Host = ho.host
+ if ho.port != "80" {
+ req.Host = fmt.Sprintf("%s:%s", ho.host, ho.port)
+ }
+ req.Header.Set("Sec-WebSocket-Key", base64.URLEncoding.EncodeToString(randBytes))
+ req.ContentLength = int64(len(b))
+ err = req.Write(ho.Conn)
+ ho.firstRequest = false
+ return len(b), err
+ }
+
+ return ho.Conn.Write(b)
+}
+
+// NewHTTPObfs return a HTTPObfs
+func NewHTTPObfs(conn net.Conn, host string, port string) net.Conn {
+ return &HTTPObfs{
+ Conn: conn,
+ firstRequest: true,
+ firstResponse: true,
+ host: host,
+ port: port,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/simple-obfs/tls.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/simple-obfs/tls.go
new file mode 100644
index 0000000..a0cbc35
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/simple-obfs/tls.go
@@ -0,0 +1,201 @@
+package obfs
+
+import (
+ "bytes"
+ "crypto/rand"
+ "encoding/binary"
+ "io"
+ "net"
+ "time"
+
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+const (
+ chunkSize = 1 << 14 // 2 ** 14 == 16 * 1024
+)
+
+// TLSObfs is shadowsocks tls simple-obfs implementation
+type TLSObfs struct {
+ net.Conn
+ server string
+ remain int
+ firstRequest bool
+ firstResponse bool
+}
+
+func (to *TLSObfs) read(b []byte, discardN int) (int, error) {
+ buf := pool.Get(discardN)
+ _, err := io.ReadFull(to.Conn, buf)
+ pool.Put(buf)
+ if err != nil {
+ return 0, err
+ }
+
+ sizeBuf := make([]byte, 2)
+ _, err = io.ReadFull(to.Conn, sizeBuf)
+ if err != nil {
+ return 0, nil
+ }
+
+ length := int(binary.BigEndian.Uint16(sizeBuf))
+ if length > len(b) {
+ n, err := to.Conn.Read(b)
+ if err != nil {
+ return n, err
+ }
+ to.remain = length - n
+ return n, nil
+ }
+
+ return io.ReadFull(to.Conn, b[:length])
+}
+
+func (to *TLSObfs) Read(b []byte) (int, error) {
+ if to.remain > 0 {
+ length := to.remain
+ if length > len(b) {
+ length = len(b)
+ }
+
+ n, err := io.ReadFull(to.Conn, b[:length])
+ to.remain -= n
+ return n, err
+ }
+
+ if to.firstResponse {
+ // type + ver + lensize + 91 = 96
+ // type + ver + lensize + 1 = 6
+ // type + ver = 3
+ to.firstResponse = false
+ return to.read(b, 105)
+ }
+
+ // type + ver = 3
+ return to.read(b, 3)
+}
+
+func (to *TLSObfs) Write(b []byte) (int, error) {
+ length := len(b)
+ for i := 0; i < length; i += chunkSize {
+ end := i + chunkSize
+ if end > length {
+ end = length
+ }
+
+ n, err := to.write(b[i:end])
+ if err != nil {
+ return n, err
+ }
+ }
+ return length, nil
+}
+
+func (to *TLSObfs) write(b []byte) (int, error) {
+ if to.firstRequest {
+ helloMsg := makeClientHelloMsg(b, to.server)
+ _, err := to.Conn.Write(helloMsg)
+ to.firstRequest = false
+ return len(b), err
+ }
+
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ buf.Write([]byte{0x17, 0x03, 0x03})
+ binary.Write(buf, binary.BigEndian, uint16(len(b)))
+ buf.Write(b)
+ _, err := to.Conn.Write(buf.Bytes())
+ if err != nil {
+ // return 0 because errors occur here make the
+ // whole situation irrecoverable
+ return 0, err
+ }
+ return len(b), nil
+}
+
+// NewTLSObfs return a SimpleObfs
+func NewTLSObfs(conn net.Conn, server string) net.Conn {
+ return &TLSObfs{
+ Conn: conn,
+ server: server,
+ firstRequest: true,
+ firstResponse: true,
+ }
+}
+
+func makeClientHelloMsg(data []byte, server string) []byte {
+ random := make([]byte, 28)
+ sessionID := make([]byte, 32)
+ rand.Read(random)
+ rand.Read(sessionID)
+
+ buf := &bytes.Buffer{}
+
+ // handshake, TLS 1.0 version, length
+ buf.WriteByte(22)
+ buf.Write([]byte{0x03, 0x01})
+ length := uint16(212 + len(data) + len(server))
+ buf.WriteByte(byte(length >> 8))
+ buf.WriteByte(byte(length & 0xff))
+
+ // clientHello, length, TLS 1.2 version
+ buf.WriteByte(1)
+ buf.WriteByte(0)
+ binary.Write(buf, binary.BigEndian, uint16(208+len(data)+len(server)))
+ buf.Write([]byte{0x03, 0x03})
+
+ // random with timestamp, sid len, sid
+ binary.Write(buf, binary.BigEndian, uint32(time.Now().Unix()))
+ buf.Write(random)
+ buf.WriteByte(32)
+ buf.Write(sessionID)
+
+ // cipher suites
+ buf.Write([]byte{0x00, 0x38})
+ buf.Write([]byte{
+ 0xc0, 0x2c, 0xc0, 0x30, 0x00, 0x9f, 0xcc, 0xa9, 0xcc, 0xa8, 0xcc, 0xaa, 0xc0, 0x2b, 0xc0, 0x2f,
+ 0x00, 0x9e, 0xc0, 0x24, 0xc0, 0x28, 0x00, 0x6b, 0xc0, 0x23, 0xc0, 0x27, 0x00, 0x67, 0xc0, 0x0a,
+ 0xc0, 0x14, 0x00, 0x39, 0xc0, 0x09, 0xc0, 0x13, 0x00, 0x33, 0x00, 0x9d, 0x00, 0x9c, 0x00, 0x3d,
+ 0x00, 0x3c, 0x00, 0x35, 0x00, 0x2f, 0x00, 0xff,
+ })
+
+ // compression
+ buf.Write([]byte{0x01, 0x00})
+
+ // extension length
+ binary.Write(buf, binary.BigEndian, uint16(79+len(data)+len(server)))
+
+ // session ticket
+ buf.Write([]byte{0x00, 0x23})
+ binary.Write(buf, binary.BigEndian, uint16(len(data)))
+ buf.Write(data)
+
+ // server name
+ buf.Write([]byte{0x00, 0x00})
+ binary.Write(buf, binary.BigEndian, uint16(len(server)+5))
+ binary.Write(buf, binary.BigEndian, uint16(len(server)+3))
+ buf.WriteByte(0)
+ binary.Write(buf, binary.BigEndian, uint16(len(server)))
+ buf.Write([]byte(server))
+
+ // ec_point
+ buf.Write([]byte{0x00, 0x0b, 0x00, 0x04, 0x03, 0x01, 0x00, 0x02})
+
+ // groups
+ buf.Write([]byte{0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x17, 0x00, 0x19, 0x00, 0x18})
+
+ // signature
+ buf.Write([]byte{
+ 0x00, 0x0d, 0x00, 0x20, 0x00, 0x1e, 0x06, 0x01, 0x06, 0x02, 0x06, 0x03, 0x05,
+ 0x01, 0x05, 0x02, 0x05, 0x03, 0x04, 0x01, 0x04, 0x02, 0x04, 0x03, 0x03, 0x01,
+ 0x03, 0x02, 0x03, 0x03, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03,
+ })
+
+ // encrypt then mac
+ buf.Write([]byte{0x00, 0x16, 0x00, 0x00})
+
+ // extended master secret
+ buf.Write([]byte{0x00, 0x17, 0x00, 0x00})
+
+ return buf.Bytes()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/sing-shadowtls/shadowtls.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/sing-shadowtls/shadowtls.go
new file mode 100644
index 0000000..2012e20
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/sing-shadowtls/shadowtls.go
@@ -0,0 +1,89 @@
+package sing_shadowtls
+
+import (
+ "context"
+ "crypto/tls"
+ "net"
+
+ "github.com/metacubex/mihomo/component/ca"
+ tlsC "github.com/metacubex/mihomo/component/tls"
+ "github.com/metacubex/mihomo/log"
+
+ utls "github.com/metacubex/utls"
+ "github.com/sagernet/sing-shadowtls"
+ sing_common "github.com/sagernet/sing/common"
+)
+
+const (
+ Mode string = "shadow-tls"
+)
+
+var (
+ DefaultALPN = []string{"h2", "http/1.1"}
+)
+
+type ShadowTLSOption struct {
+ Password string
+ Host string
+ Fingerprint string
+ ClientFingerprint string
+ SkipCertVerify bool
+ Version int
+}
+
+func NewShadowTLS(ctx context.Context, conn net.Conn, option *ShadowTLSOption) (net.Conn, error) {
+ tlsConfig := &tls.Config{
+ NextProtos: DefaultALPN,
+ MinVersion: tls.VersionTLS12,
+ InsecureSkipVerify: option.SkipCertVerify,
+ ServerName: option.Host,
+ }
+
+ var err error
+ tlsConfig, err = ca.GetSpecifiedFingerprintTLSConfig(tlsConfig, option.Fingerprint)
+ if err != nil {
+ return nil, err
+ }
+
+ tlsHandshake := shadowtls.DefaultTLSHandshakeFunc(option.Password, tlsConfig)
+ if len(option.ClientFingerprint) != 0 {
+ if fingerprint, exists := tlsC.GetFingerprint(option.ClientFingerprint); exists {
+ tlsHandshake = uTLSHandshakeFunc(tlsConfig, *fingerprint.ClientHelloID)
+ }
+ }
+ client, err := shadowtls.NewClient(shadowtls.ClientConfig{
+ Version: option.Version,
+ Password: option.Password,
+ TLSHandshake: tlsHandshake,
+ Logger: log.SingLogger,
+ })
+ if err != nil {
+ return nil, err
+ }
+ return client.DialContextConn(ctx, conn)
+}
+
+func uTLSHandshakeFunc(config *tls.Config, clientHelloID utls.ClientHelloID) shadowtls.TLSHandshakeFunc {
+ return func(ctx context.Context, conn net.Conn, sessionIDGenerator shadowtls.TLSSessionIDGeneratorFunc) error {
+ tlsConfig := &utls.Config{
+ Rand: config.Rand,
+ Time: config.Time,
+ VerifyPeerCertificate: config.VerifyPeerCertificate,
+ RootCAs: config.RootCAs,
+ NextProtos: config.NextProtos,
+ ServerName: config.ServerName,
+ InsecureSkipVerify: config.InsecureSkipVerify,
+ CipherSuites: config.CipherSuites,
+ MinVersion: config.MinVersion,
+ MaxVersion: config.MaxVersion,
+ CurvePreferences: sing_common.Map(config.CurvePreferences, func(it tls.CurveID) utls.CurveID {
+ return utls.CurveID(it)
+ }),
+ SessionTicketsDisabled: config.SessionTicketsDisabled,
+ Renegotiation: utls.RenegotiationSupport(config.Renegotiation),
+ SessionIDGenerator: sessionIDGenerator,
+ }
+ tlsConn := utls.UClient(conn, tlsConfig, clientHelloID)
+ return tlsConn.HandshakeContext(ctx)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/snell/cipher.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/snell/cipher.go
new file mode 100644
index 0000000..e18ce51
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/snell/cipher.go
@@ -0,0 +1,56 @@
+package snell
+
+import (
+ "crypto/aes"
+ "crypto/cipher"
+
+ "github.com/metacubex/mihomo/transport/shadowsocks/shadowaead"
+
+ "golang.org/x/crypto/argon2"
+ "golang.org/x/crypto/chacha20poly1305"
+)
+
+type snellCipher struct {
+ psk []byte
+ keySize int
+ makeAEAD func(key []byte) (cipher.AEAD, error)
+}
+
+func (sc *snellCipher) KeySize() int { return sc.keySize }
+func (sc *snellCipher) SaltSize() int { return 16 }
+func (sc *snellCipher) Encrypter(salt []byte) (cipher.AEAD, error) {
+ return sc.makeAEAD(snellKDF(sc.psk, salt, sc.KeySize()))
+}
+
+func (sc *snellCipher) Decrypter(salt []byte) (cipher.AEAD, error) {
+ return sc.makeAEAD(snellKDF(sc.psk, salt, sc.KeySize()))
+}
+
+func snellKDF(psk, salt []byte, keySize int) []byte {
+ // snell use a special kdf function
+ return argon2.IDKey(psk, salt, 3, 8, 1, 32)[:keySize]
+}
+
+func aesGCM(key []byte) (cipher.AEAD, error) {
+ blk, err := aes.NewCipher(key)
+ if err != nil {
+ return nil, err
+ }
+ return cipher.NewGCM(blk)
+}
+
+func NewAES128GCM(psk []byte) shadowaead.Cipher {
+ return &snellCipher{
+ psk: psk,
+ keySize: 16,
+ makeAEAD: aesGCM,
+ }
+}
+
+func NewChacha20Poly1305(psk []byte) shadowaead.Cipher {
+ return &snellCipher{
+ psk: psk,
+ keySize: 32,
+ makeAEAD: chacha20poly1305.New,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/snell/pool.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/snell/pool.go
new file mode 100644
index 0000000..cc097df
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/snell/pool.go
@@ -0,0 +1,84 @@
+package snell
+
+import (
+ "context"
+ "net"
+ "time"
+
+ "github.com/metacubex/mihomo/component/pool"
+ "github.com/metacubex/mihomo/transport/shadowsocks/shadowaead"
+)
+
+type Pool struct {
+ pool *pool.Pool[*Snell]
+}
+
+func (p *Pool) Get() (net.Conn, error) {
+ return p.GetContext(context.Background())
+}
+
+func (p *Pool) GetContext(ctx context.Context) (net.Conn, error) {
+ elm, err := p.pool.GetContext(ctx)
+ if err != nil {
+ return nil, err
+ }
+
+ return &PoolConn{elm, p}, nil
+}
+
+func (p *Pool) Put(conn *Snell) {
+ if err := HalfClose(conn); err != nil {
+ _ = conn.Close()
+ return
+ }
+
+ p.pool.Put(conn)
+}
+
+type PoolConn struct {
+ *Snell
+ pool *Pool
+}
+
+func (pc *PoolConn) Read(b []byte) (int, error) {
+ // save old status of reply (it mutable by Read)
+ reply := pc.Snell.reply
+
+ n, err := pc.Snell.Read(b)
+ if err == shadowaead.ErrZeroChunk {
+ // if reply is false, it should be client halfclose.
+ // ignore error and read data again.
+ if !reply {
+ pc.Snell.reply = false
+ return pc.Snell.Read(b)
+ }
+ }
+ return n, err
+}
+
+func (pc *PoolConn) Write(b []byte) (int, error) {
+ return pc.Snell.Write(b)
+}
+
+func (pc *PoolConn) Close() error {
+ // mihomo use SetReadDeadline to break bidirectional copy between client and server.
+ // reset it before reuse connection to avoid io timeout error.
+ _ = pc.Snell.Conn.SetReadDeadline(time.Time{})
+ pc.pool.Put(pc.Snell)
+ return nil
+}
+
+func NewPool(factory func(context.Context) (*Snell, error)) *Pool {
+ p := pool.New[*Snell](
+ func(ctx context.Context) (*Snell, error) {
+ return factory(ctx)
+ },
+ pool.WithAge[*Snell](15000),
+ pool.WithSize[*Snell](10),
+ pool.WithEvict[*Snell](func(item *Snell) {
+ _ = item.Close()
+ }),
+ )
+
+ return &Pool{pool: p}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/snell/snell.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/snell/snell.go
new file mode 100644
index 0000000..fe3e4ee
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/snell/snell.go
@@ -0,0 +1,280 @@
+package snell
+
+import (
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "io"
+ "net"
+ "sync"
+
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/transport/shadowsocks/shadowaead"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+const (
+ Version1 = 1
+ Version2 = 2
+ Version3 = 3
+ DefaultSnellVersion = Version1
+
+ // max packet length
+ maxLength = 0x3FFF
+)
+
+const (
+ CommandPing byte = 0
+ CommandConnect byte = 1
+ CommandConnectV2 byte = 5
+ CommandUDP byte = 6
+ CommondUDPForward byte = 1
+
+ CommandTunnel byte = 0
+ CommandPong byte = 1
+ CommandError byte = 2
+
+ Version byte = 1
+)
+
+var endSignal = []byte{}
+
+type Snell struct {
+ net.Conn
+ buffer [1]byte
+ reply bool
+}
+
+func (s *Snell) Read(b []byte) (int, error) {
+ if s.reply {
+ return s.Conn.Read(b)
+ }
+
+ s.reply = true
+ if _, err := io.ReadFull(s.Conn, s.buffer[:]); err != nil {
+ return 0, err
+ }
+
+ if s.buffer[0] == CommandTunnel {
+ return s.Conn.Read(b)
+ } else if s.buffer[0] != CommandError {
+ return 0, errors.New("command not support")
+ }
+
+ // CommandError
+ // 1 byte error code
+ if _, err := io.ReadFull(s.Conn, s.buffer[:]); err != nil {
+ return 0, err
+ }
+ errcode := int(s.buffer[0])
+
+ // 1 byte error message length
+ if _, err := io.ReadFull(s.Conn, s.buffer[:]); err != nil {
+ return 0, err
+ }
+ length := int(s.buffer[0])
+ msg := make([]byte, length)
+
+ if _, err := io.ReadFull(s.Conn, msg); err != nil {
+ return 0, err
+ }
+
+ return 0, fmt.Errorf("server reported code: %d, message: %s", errcode, string(msg))
+}
+
+func WriteHeader(conn net.Conn, host string, port uint, version int) error {
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ buf.WriteByte(Version)
+ if version == Version2 {
+ buf.WriteByte(CommandConnectV2)
+ } else {
+ buf.WriteByte(CommandConnect)
+ }
+
+ // clientID length & id
+ buf.WriteByte(0)
+
+ // host & port
+ buf.WriteByte(uint8(len(host)))
+ buf.WriteString(host)
+ binary.Write(buf, binary.BigEndian, uint16(port))
+
+ if _, err := conn.Write(buf.Bytes()); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func WriteUDPHeader(conn net.Conn, version int) error {
+ if version < Version3 {
+ return errors.New("unsupport UDP version")
+ }
+
+ // version, command, clientID length
+ _, err := conn.Write([]byte{Version, CommandUDP, 0x00})
+ return err
+}
+
+// HalfClose works only on version2
+func HalfClose(conn net.Conn) error {
+ if _, err := conn.Write(endSignal); err != nil {
+ return err
+ }
+
+ if s, ok := conn.(*Snell); ok {
+ s.reply = false
+ }
+ return nil
+}
+
+func StreamConn(conn net.Conn, psk []byte, version int) *Snell {
+ var cipher shadowaead.Cipher
+ if version != Version1 {
+ cipher = NewAES128GCM(psk)
+ } else {
+ cipher = NewChacha20Poly1305(psk)
+ }
+ return &Snell{Conn: shadowaead.NewConn(conn, cipher)}
+}
+
+func PacketConn(conn net.Conn) net.PacketConn {
+ return &packetConn{
+ Conn: conn,
+ }
+}
+
+func writePacket(w io.Writer, socks5Addr, payload []byte) (int, error) {
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+
+ // compose snell UDP address format (refer: icpz/snell-server-reversed)
+ // a brand new wheel to replace socks5 address format, well done Yachen
+ buf.WriteByte(CommondUDPForward)
+ switch socks5Addr[0] {
+ case socks5.AtypDomainName:
+ hostLen := socks5Addr[1]
+ buf.Write(socks5Addr[1 : 1+1+hostLen+2])
+ case socks5.AtypIPv4:
+ buf.Write([]byte{0x00, 0x04})
+ buf.Write(socks5Addr[1 : 1+net.IPv4len+2])
+ case socks5.AtypIPv6:
+ buf.Write([]byte{0x00, 0x06})
+ buf.Write(socks5Addr[1 : 1+net.IPv6len+2])
+ }
+
+ buf.Write(payload)
+ _, err := w.Write(buf.Bytes())
+ if err != nil {
+ return 0, err
+ }
+ return len(payload), nil
+}
+
+func WritePacket(w io.Writer, socks5Addr, payload []byte) (int, error) {
+ if len(payload) <= maxLength {
+ return writePacket(w, socks5Addr, payload)
+ }
+
+ offset := 0
+ total := len(payload)
+ for {
+ cursor := offset + maxLength
+ if cursor > total {
+ cursor = total
+ }
+
+ n, err := writePacket(w, socks5Addr, payload[offset:cursor])
+ if err != nil {
+ return offset + n, err
+ }
+
+ offset = cursor
+ if offset == total {
+ break
+ }
+ }
+
+ return total, nil
+}
+
+func ReadPacket(r io.Reader, payload []byte) (net.Addr, int, error) {
+ buf := pool.Get(pool.UDPBufferSize)
+ defer pool.Put(buf)
+
+ n, err := r.Read(buf)
+ headLen := 1
+ if err != nil {
+ return nil, 0, err
+ }
+ if n < headLen {
+ return nil, 0, errors.New("insufficient UDP length")
+ }
+
+ // parse snell UDP response address format
+ switch buf[0] {
+ case 0x04:
+ headLen += net.IPv4len + 2
+ if n < headLen {
+ err = errors.New("insufficient UDP length")
+ break
+ }
+ buf[0] = socks5.AtypIPv4
+ case 0x06:
+ headLen += net.IPv6len + 2
+ if n < headLen {
+ err = errors.New("insufficient UDP length")
+ break
+ }
+ buf[0] = socks5.AtypIPv6
+ default:
+ err = errors.New("ip version invalid")
+ }
+
+ if err != nil {
+ return nil, 0, err
+ }
+
+ addr := socks5.SplitAddr(buf[0:])
+ if addr == nil {
+ return nil, 0, errors.New("remote address invalid")
+ }
+ uAddr := addr.UDPAddr()
+ if uAddr == nil {
+ return nil, 0, errors.New("parse addr error")
+ }
+
+ length := len(payload)
+ if n-headLen < length {
+ length = n - headLen
+ }
+ copy(payload[:], buf[headLen:headLen+length])
+
+ return uAddr, length, nil
+}
+
+type packetConn struct {
+ net.Conn
+ rMux sync.Mutex
+ wMux sync.Mutex
+}
+
+func (pc *packetConn) WriteTo(b []byte, addr net.Addr) (int, error) {
+ pc.wMux.Lock()
+ defer pc.wMux.Unlock()
+
+ return WritePacket(pc, socks5.ParseAddr(addr.String()), b)
+}
+
+func (pc *packetConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ pc.rMux.Lock()
+ defer pc.rMux.Unlock()
+
+ addr, n, err := ReadPacket(pc.Conn, b)
+ if err != nil {
+ return 0, nil, err
+ }
+
+ return n, addr, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/socks4/socks4.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/socks4/socks4.go
new file mode 100644
index 0000000..50708ed
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/socks4/socks4.go
@@ -0,0 +1,196 @@
+package socks4
+
+import (
+ "bytes"
+ "encoding/binary"
+ "errors"
+ "io"
+ "net"
+ "net/netip"
+ "strconv"
+
+ "github.com/metacubex/mihomo/component/auth"
+)
+
+const Version = 0x04
+
+type Command = uint8
+
+const (
+ CmdConnect Command = 0x01
+ CmdBind Command = 0x02
+)
+
+type Code = uint8
+
+const (
+ RequestGranted Code = 90
+ RequestRejected Code = 91
+ RequestIdentdFailed Code = 92
+ RequestIdentdMismatched Code = 93
+)
+
+var (
+ errVersionMismatched = errors.New("version code mismatched")
+ errCommandNotSupported = errors.New("command not supported")
+ errIPv6NotSupported = errors.New("IPv6 not supported")
+
+ ErrRequestRejected = errors.New("request rejected or failed")
+ ErrRequestIdentdFailed = errors.New("request rejected because SOCKS server cannot connect to identd on the client")
+ ErrRequestIdentdMismatched = errors.New("request rejected because the client program and identd report different user-ids")
+ ErrRequestUnknownCode = errors.New("request failed with unknown code")
+)
+
+var subnet = netip.PrefixFrom(netip.IPv4Unspecified(), 24)
+
+func ServerHandshake(rw io.ReadWriter, authenticator auth.Authenticator) (addr string, command Command, user string, err error) {
+ var req [8]byte
+ if _, err = io.ReadFull(rw, req[:]); err != nil {
+ return
+ }
+
+ if req[0] != Version {
+ err = errVersionMismatched
+ return
+ }
+
+ if command = req[1]; command != CmdConnect {
+ err = errCommandNotSupported
+ return
+ }
+
+ var (
+ dstIP = netip.AddrFrom4(*(*[4]byte)(req[4:8])) // [4]byte
+ dstPort = req[2:4] // [2]byte
+ )
+
+ var (
+ host string
+ port string
+ code uint8
+ userID []byte
+ )
+ if userID, err = readUntilNull(rw); err != nil {
+ return
+ }
+ user = string(userID)
+
+ if isReservedIP(dstIP) {
+ var target []byte
+ if target, err = readUntilNull(rw); err != nil {
+ return
+ }
+ host = string(target)
+ }
+
+ port = strconv.Itoa(int(binary.BigEndian.Uint16(dstPort)))
+ if host != "" {
+ addr = net.JoinHostPort(host, port)
+ } else {
+ addr = net.JoinHostPort(dstIP.String(), port)
+ }
+
+ // SOCKS4 only support USERID auth.
+ if authenticator == nil || authenticator.Verify(user, "") {
+ code = RequestGranted
+ } else {
+ code = RequestIdentdMismatched
+ err = ErrRequestIdentdMismatched
+ }
+
+ var reply [8]byte
+ reply[0] = 0x00 // reply code
+ reply[1] = code // result code
+ copy(reply[4:8], dstIP.AsSlice())
+ copy(reply[2:4], dstPort)
+
+ _, wErr := rw.Write(reply[:])
+ if err == nil {
+ err = wErr
+ }
+ return
+}
+
+func ClientHandshake(rw io.ReadWriter, addr string, command Command, userID string) (err error) {
+ host, portStr, err := net.SplitHostPort(addr)
+ if err != nil {
+ return err
+ }
+
+ port, err := strconv.ParseUint(portStr, 10, 16)
+ if err != nil {
+ return err
+ }
+
+ dstIP, err := netip.ParseAddr(host)
+ if err != nil /* HOST */ {
+ dstIP = netip.AddrFrom4([4]byte{0, 0, 0, 1})
+ } else if dstIP.Is6() /* IPv6 */ {
+ return errIPv6NotSupported
+ }
+
+ req := &bytes.Buffer{}
+ req.WriteByte(Version)
+ req.WriteByte(command)
+ _ = binary.Write(req, binary.BigEndian, uint16(port))
+ req.Write(dstIP.AsSlice())
+ req.WriteString(userID)
+ req.WriteByte(0) /* NULL */
+
+ if isReservedIP(dstIP) /* SOCKS4A */ {
+ req.WriteString(host)
+ req.WriteByte(0) /* NULL */
+ }
+
+ if _, err = rw.Write(req.Bytes()); err != nil {
+ return err
+ }
+
+ var resp [8]byte
+ if _, err = io.ReadFull(rw, resp[:]); err != nil {
+ return err
+ }
+
+ if resp[0] != 0x00 {
+ return errVersionMismatched
+ }
+
+ switch resp[1] {
+ case RequestGranted:
+ return nil
+ case RequestRejected:
+ return ErrRequestRejected
+ case RequestIdentdFailed:
+ return ErrRequestIdentdFailed
+ case RequestIdentdMismatched:
+ return ErrRequestIdentdMismatched
+ default:
+ return ErrRequestUnknownCode
+ }
+}
+
+// For version 4A, if the client cannot resolve the destination host's
+// domain name to find its IP address, it should set the first three bytes
+// of DSTIP to NULL and the last byte to a non-zero value. (This corresponds
+// to IP address 0.0.0.x, with x nonzero. As decreed by IANA -- The
+// Internet Assigned Numbers Authority -- such an address is inadmissible
+// as a destination IP address and thus should never occur if the client
+// can resolve the domain name.)
+func isReservedIP(ip netip.Addr) bool {
+ return !ip.IsUnspecified() && subnet.Contains(ip)
+}
+
+func readUntilNull(r io.Reader) ([]byte, error) {
+ buf := &bytes.Buffer{}
+ var data [1]byte
+
+ for {
+ if _, err := r.Read(data[:]); err != nil {
+ return nil, err
+ }
+ if data[0] == 0 {
+ return buf.Bytes(), nil
+ }
+ buf.WriteByte(data[0])
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/socks5/socks5.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/socks5/socks5.go
new file mode 100644
index 0000000..61b555f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/socks5/socks5.go
@@ -0,0 +1,495 @@
+package socks5
+
+import (
+ "bytes"
+ "encoding/binary"
+ "errors"
+ "io"
+ "net"
+ "net/netip"
+ "strconv"
+
+ "github.com/metacubex/mihomo/component/auth"
+)
+
+// Error represents a SOCKS error
+type Error byte
+
+func (err Error) Error() string {
+ return "SOCKS error: " + strconv.Itoa(int(err))
+}
+
+// Command is request commands as defined in RFC 1928 section 4.
+type Command = uint8
+
+const Version = 5
+
+// SOCKS request commands as defined in RFC 1928 section 4.
+const (
+ CmdConnect Command = 1
+ CmdBind Command = 2
+ CmdUDPAssociate Command = 3
+)
+
+// SOCKS address types as defined in RFC 1928 section 5.
+const (
+ AtypIPv4 = 1
+ AtypDomainName = 3
+ AtypIPv6 = 4
+)
+
+// MaxAddrLen is the maximum size of SOCKS address in bytes.
+const MaxAddrLen = 1 + 1 + 255 + 2
+
+// MaxAuthLen is the maximum size of user/password field in SOCKS5 Auth
+const MaxAuthLen = 255
+
+// Addr represents a SOCKS address as defined in RFC 1928 section 5.
+type Addr []byte
+
+func (a Addr) String() string {
+ var host, port string
+
+ switch a[0] {
+ case AtypDomainName:
+ hostLen := uint16(a[1])
+ host = string(a[2 : 2+hostLen])
+ port = strconv.Itoa((int(a[2+hostLen]) << 8) | int(a[2+hostLen+1]))
+ case AtypIPv4:
+ host = net.IP(a[1 : 1+net.IPv4len]).String()
+ port = strconv.Itoa((int(a[1+net.IPv4len]) << 8) | int(a[1+net.IPv4len+1]))
+ case AtypIPv6:
+ host = net.IP(a[1 : 1+net.IPv6len]).String()
+ port = strconv.Itoa((int(a[1+net.IPv6len]) << 8) | int(a[1+net.IPv6len+1]))
+ }
+
+ return net.JoinHostPort(host, port)
+}
+
+// UDPAddr converts a socks5.Addr to *net.UDPAddr
+func (a Addr) UDPAddr() *net.UDPAddr {
+ if len(a) == 0 {
+ return nil
+ }
+ switch a[0] {
+ case AtypIPv4:
+ var ip [net.IPv4len]byte
+ copy(ip[0:], a[1:1+net.IPv4len])
+ return &net.UDPAddr{IP: net.IP(ip[:]), Port: int(binary.BigEndian.Uint16(a[1+net.IPv4len : 1+net.IPv4len+2]))}
+ case AtypIPv6:
+ var ip [net.IPv6len]byte
+ copy(ip[0:], a[1:1+net.IPv6len])
+ return &net.UDPAddr{IP: net.IP(ip[:]), Port: int(binary.BigEndian.Uint16(a[1+net.IPv6len : 1+net.IPv6len+2]))}
+ }
+ // Other Atyp
+ return nil
+}
+
+// SOCKS errors as defined in RFC 1928 section 6.
+const (
+ ErrGeneralFailure = Error(1)
+ ErrConnectionNotAllowed = Error(2)
+ ErrNetworkUnreachable = Error(3)
+ ErrHostUnreachable = Error(4)
+ ErrConnectionRefused = Error(5)
+ ErrTTLExpired = Error(6)
+ ErrCommandNotSupported = Error(7)
+ ErrAddressNotSupported = Error(8)
+)
+
+// Auth errors used to return a specific "Auth failed" error
+var ErrAuth = errors.New("auth failed")
+
+type User struct {
+ Username string
+ Password string
+}
+
+// ServerHandshake fast-tracks SOCKS initialization to get target address to connect on server side.
+func ServerHandshake(rw net.Conn, authenticator auth.Authenticator) (addr Addr, command Command, user string, err error) {
+ // Read RFC 1928 for request and reply structure and sizes.
+ buf := make([]byte, MaxAddrLen)
+ // read VER, NMETHODS, METHODS
+ if _, err = io.ReadFull(rw, buf[:2]); err != nil {
+ return
+ }
+ nmethods := buf[1]
+ if _, err = io.ReadFull(rw, buf[:nmethods]); err != nil {
+ return
+ }
+
+ // write VER METHOD
+ if authenticator != nil {
+ if _, err = rw.Write([]byte{5, 2}); err != nil {
+ return
+ }
+
+ // Get header
+ header := make([]byte, 2)
+ if _, err = io.ReadFull(rw, header); err != nil {
+ return
+ }
+
+ authBuf := make([]byte, MaxAuthLen)
+ // Get username
+ userLen := int(header[1])
+ if userLen <= 0 {
+ rw.Write([]byte{1, 1})
+ err = ErrAuth
+ return
+ }
+ if _, err = io.ReadFull(rw, authBuf[:userLen]); err != nil {
+ return
+ }
+ user = string(authBuf[:userLen])
+
+ // Get password
+ if _, err = rw.Read(header[:1]); err != nil {
+ return
+ }
+ passLen := int(header[0])
+ if passLen <= 0 {
+ rw.Write([]byte{1, 1})
+ err = ErrAuth
+ return
+ }
+ if _, err = io.ReadFull(rw, authBuf[:passLen]); err != nil {
+ return
+ }
+ pass := string(authBuf[:passLen])
+
+ // Verify
+ if ok := authenticator.Verify(string(user), string(pass)); !ok {
+ rw.Write([]byte{1, 1})
+ err = ErrAuth
+ return
+ }
+
+ // Response auth state
+ if _, err = rw.Write([]byte{1, 0}); err != nil {
+ return
+ }
+ } else {
+ if _, err = rw.Write([]byte{5, 0}); err != nil {
+ return
+ }
+ }
+
+ // read VER CMD RSV ATYP DST.ADDR DST.PORT
+ if _, err = io.ReadFull(rw, buf[:3]); err != nil {
+ return
+ }
+
+ command = buf[1]
+ addr, err = ReadAddr(rw, buf)
+ if err != nil {
+ return
+ }
+
+ switch command {
+ case CmdConnect, CmdUDPAssociate:
+ // Acquire server listened address info
+ localAddr := ParseAddr(rw.LocalAddr().String())
+ if localAddr == nil {
+ err = ErrAddressNotSupported
+ } else {
+ // write VER REP RSV ATYP BND.ADDR BND.PORT
+ _, err = rw.Write(bytes.Join([][]byte{{5, 0, 0}, localAddr}, []byte{}))
+ }
+ case CmdBind:
+ fallthrough
+ default:
+ err = ErrCommandNotSupported
+ }
+
+ return
+}
+
+// ClientHandshake fast-tracks SOCKS initialization to get target address to connect on client side.
+func ClientHandshake(rw io.ReadWriter, addr Addr, command Command, user *User) (Addr, error) {
+ buf := make([]byte, MaxAddrLen)
+ var err error
+
+ // VER, NMETHODS, METHODS
+ if user != nil {
+ _, err = rw.Write([]byte{5, 1, 2})
+ } else {
+ _, err = rw.Write([]byte{5, 1, 0})
+ }
+ if err != nil {
+ return nil, err
+ }
+
+ // VER, METHOD
+ if _, err := io.ReadFull(rw, buf[:2]); err != nil {
+ return nil, err
+ }
+
+ if buf[0] != 5 {
+ return nil, errors.New("SOCKS version error")
+ }
+
+ if buf[1] == 2 {
+ if user == nil {
+ return nil, ErrAuth
+ }
+
+ // password protocol version
+ authMsg := &bytes.Buffer{}
+ authMsg.WriteByte(1)
+ authMsg.WriteByte(uint8(len(user.Username)))
+ authMsg.WriteString(user.Username)
+ authMsg.WriteByte(uint8(len(user.Password)))
+ authMsg.WriteString(user.Password)
+
+ if _, err := rw.Write(authMsg.Bytes()); err != nil {
+ return nil, err
+ }
+
+ if _, err := io.ReadFull(rw, buf[:2]); err != nil {
+ return nil, err
+ }
+
+ if buf[1] != 0 {
+ return nil, errors.New("rejected username/password")
+ }
+ } else if buf[1] != 0 {
+ return nil, errors.New("SOCKS need auth")
+ }
+
+ // VER, CMD, RSV, ADDR
+ if _, err := rw.Write(bytes.Join([][]byte{{5, command, 0}, addr}, []byte{})); err != nil {
+ return nil, err
+ }
+
+ // VER, REP, RSV
+ if _, err := io.ReadFull(rw, buf[:3]); err != nil {
+ return nil, err
+ }
+
+ return ReadAddr(rw, buf)
+}
+
+func ReadAddr(r io.Reader, b []byte) (Addr, error) {
+ if len(b) < MaxAddrLen {
+ return nil, io.ErrShortBuffer
+ }
+ _, err := io.ReadFull(r, b[:1]) // read 1st byte for address type
+ if err != nil {
+ return nil, err
+ }
+
+ switch b[0] {
+ case AtypDomainName:
+ _, err = io.ReadFull(r, b[1:2]) // read 2nd byte for domain length
+ if err != nil {
+ return nil, err
+ }
+ domainLength := uint16(b[1])
+ _, err = io.ReadFull(r, b[2:2+domainLength+2])
+ return b[:1+1+domainLength+2], err
+ case AtypIPv4:
+ _, err = io.ReadFull(r, b[1:1+net.IPv4len+2])
+ return b[:1+net.IPv4len+2], err
+ case AtypIPv6:
+ _, err = io.ReadFull(r, b[1:1+net.IPv6len+2])
+ return b[:1+net.IPv6len+2], err
+ }
+
+ return nil, ErrAddressNotSupported
+}
+
+func ReadAddr0(r io.Reader) (Addr, error) {
+ aType, err := ReadByte(r) // read 1st byte for address type
+ if err != nil {
+ return nil, err
+ }
+
+ switch aType {
+ case AtypDomainName:
+ var domainLength byte
+ domainLength, err = ReadByte(r) // read 2nd byte for domain length
+ if err != nil {
+ return nil, err
+ }
+ b := make([]byte, 1+1+uint16(domainLength)+2)
+ _, err = io.ReadFull(r, b[2:])
+ b[0] = aType
+ b[1] = domainLength
+ return b, err
+ case AtypIPv4:
+ var b [1 + net.IPv4len + 2]byte
+ _, err = io.ReadFull(r, b[1:])
+ b[0] = aType
+ return b[:], err
+ case AtypIPv6:
+ var b [1 + net.IPv6len + 2]byte
+ _, err = io.ReadFull(r, b[1:])
+ b[0] = aType
+ return b[:], err
+ }
+
+ return nil, ErrAddressNotSupported
+}
+
+func ReadByte(reader io.Reader) (byte, error) {
+ if br, isBr := reader.(io.ByteReader); isBr {
+ return br.ReadByte()
+ }
+ var b [1]byte
+ if _, err := io.ReadFull(reader, b[:]); err != nil {
+ return 0, err
+ }
+ return b[0], nil
+}
+
+// SplitAddr slices a SOCKS address from beginning of b. Returns nil if failed.
+func SplitAddr(b []byte) Addr {
+ addrLen := 1
+ if len(b) < addrLen {
+ return nil
+ }
+
+ switch b[0] {
+ case AtypDomainName:
+ if len(b) < 2 {
+ return nil
+ }
+ addrLen = 1 + 1 + int(b[1]) + 2
+ case AtypIPv4:
+ addrLen = 1 + net.IPv4len + 2
+ case AtypIPv6:
+ addrLen = 1 + net.IPv6len + 2
+ default:
+ return nil
+
+ }
+
+ if len(b) < addrLen {
+ return nil
+ }
+
+ return b[:addrLen]
+}
+
+// ParseAddr parses the address in string s. Returns nil if failed.
+func ParseAddr(s string) Addr {
+ var addr Addr
+ host, port, err := net.SplitHostPort(s)
+ if err != nil {
+ return nil
+ }
+ if ip := net.ParseIP(host); ip != nil {
+ if ip4 := ip.To4(); ip4 != nil {
+ addr = make([]byte, 1+net.IPv4len+2)
+ addr[0] = AtypIPv4
+ copy(addr[1:], ip4)
+ } else {
+ addr = make([]byte, 1+net.IPv6len+2)
+ addr[0] = AtypIPv6
+ copy(addr[1:], ip)
+ }
+ } else {
+ if len(host) > 255 {
+ return nil
+ }
+ addr = make([]byte, 1+1+len(host)+2)
+ addr[0] = AtypDomainName
+ addr[1] = byte(len(host))
+ copy(addr[2:], host)
+ }
+
+ portnum, err := strconv.ParseUint(port, 10, 16)
+ if err != nil {
+ return nil
+ }
+
+ addr[len(addr)-2], addr[len(addr)-1] = byte(portnum>>8), byte(portnum)
+
+ return addr
+}
+
+// ParseAddrToSocksAddr parse a socks addr from net.addr
+// This is a fast path of ParseAddr(addr.String())
+func ParseAddrToSocksAddr(addr net.Addr) Addr {
+ var hostip net.IP
+ var port int
+ if udpaddr, ok := addr.(*net.UDPAddr); ok {
+ hostip = udpaddr.IP
+ port = udpaddr.Port
+ } else if tcpaddr, ok := addr.(*net.TCPAddr); ok {
+ hostip = tcpaddr.IP
+ port = tcpaddr.Port
+ }
+
+ // fallback parse
+ if hostip == nil {
+ return ParseAddr(addr.String())
+ }
+
+ var parsed Addr
+ if ip4 := hostip.To4(); ip4.DefaultMask() != nil {
+ parsed = make([]byte, 1+net.IPv4len+2)
+ parsed[0] = AtypIPv4
+ copy(parsed[1:], ip4)
+ binary.BigEndian.PutUint16(parsed[1+net.IPv4len:], uint16(port))
+
+ } else {
+ parsed = make([]byte, 1+net.IPv6len+2)
+ parsed[0] = AtypIPv6
+ copy(parsed[1:], hostip)
+ binary.BigEndian.PutUint16(parsed[1+net.IPv6len:], uint16(port))
+ }
+ return parsed
+}
+
+func AddrFromStdAddrPort(addrPort netip.AddrPort) Addr {
+ addr := addrPort.Addr()
+ if addr.Is4() {
+ ip4 := addr.As4()
+ return []byte{AtypIPv4, ip4[0], ip4[1], ip4[2], ip4[3], byte(addrPort.Port() >> 8), byte(addrPort.Port())}
+ }
+
+ buf := make([]byte, 1+net.IPv6len+2)
+ buf[0] = AtypIPv6
+ copy(buf[1:], addr.AsSlice())
+ buf[1+net.IPv6len] = byte(addrPort.Port() >> 8)
+ buf[1+net.IPv6len+1] = byte(addrPort.Port())
+ return buf
+}
+
+// DecodeUDPPacket split `packet` to addr payload, and this function is mutable with `packet`
+func DecodeUDPPacket(packet []byte) (addr Addr, payload []byte, err error) {
+ if len(packet) < 5 {
+ err = errors.New("insufficient length of packet")
+ return
+ }
+
+ // packet[0] and packet[1] are reserved
+ if !bytes.Equal(packet[:2], []byte{0, 0}) {
+ err = errors.New("reserved fields should be zero")
+ return
+ }
+
+ if packet[2] != 0 /* fragments */ {
+ err = errors.New("discarding fragmented payload")
+ return
+ }
+
+ addr = SplitAddr(packet[3:])
+ if addr == nil {
+ err = errors.New("failed to read UDP header")
+ }
+
+ payload = packet[3+len(addr):]
+ return
+}
+
+func EncodeUDPPacket(addr Addr, payload []byte) (packet []byte, err error) {
+ if addr == nil {
+ err = errors.New("address is invalid")
+ return
+ }
+ packet = bytes.Join([][]byte{{0, 0, 0}, addr, payload}, []byte{})
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/base.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/base.go
new file mode 100644
index 0000000..7fd1b84
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/base.go
@@ -0,0 +1,9 @@
+package obfs
+
+type Base struct {
+ Host string
+ Port int
+ Key []byte
+ IVSize int
+ Param string
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/http_post.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/http_post.go
new file mode 100644
index 0000000..4be6cbe
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/http_post.go
@@ -0,0 +1,9 @@
+package obfs
+
+func init() {
+ register("http_post", newHTTPPost, 0)
+}
+
+func newHTTPPost(b *Base) Obfs {
+ return &httpObfs{Base: b, post: true}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/http_simple.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/http_simple.go
new file mode 100644
index 0000000..d59b490
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/http_simple.go
@@ -0,0 +1,406 @@
+package obfs
+
+import (
+ "bytes"
+ "encoding/hex"
+ "io"
+ "net"
+ "strconv"
+ "strings"
+
+ "github.com/metacubex/mihomo/common/pool"
+
+ "github.com/metacubex/randv2"
+)
+
+func init() {
+ register("http_simple", newHTTPSimple, 0)
+}
+
+type httpObfs struct {
+ *Base
+ post bool
+}
+
+func newHTTPSimple(b *Base) Obfs {
+ return &httpObfs{Base: b}
+}
+
+type httpConn struct {
+ net.Conn
+ *httpObfs
+ hasSentHeader bool
+ hasRecvHeader bool
+ buf []byte
+}
+
+func (h *httpObfs) StreamConn(c net.Conn) net.Conn {
+ return &httpConn{Conn: c, httpObfs: h}
+}
+
+func (c *httpConn) Read(b []byte) (int, error) {
+ if c.buf != nil {
+ n := copy(b, c.buf)
+ if n == len(c.buf) {
+ c.buf = nil
+ } else {
+ c.buf = c.buf[n:]
+ }
+ return n, nil
+ }
+
+ if c.hasRecvHeader {
+ return c.Conn.Read(b)
+ }
+
+ buf := pool.Get(pool.RelayBufferSize)
+ defer pool.Put(buf)
+ n, err := c.Conn.Read(buf)
+ if err != nil {
+ return 0, err
+ }
+ pos := bytes.Index(buf[:n], []byte("\r\n\r\n"))
+ if pos == -1 {
+ return 0, io.EOF
+ }
+ c.hasRecvHeader = true
+ dataLength := n - pos - 4
+ n = copy(b, buf[4+pos:n])
+ if dataLength > n {
+ c.buf = append(c.buf, buf[4+pos+n:4+pos+dataLength]...)
+ }
+ return n, nil
+}
+
+func (c *httpConn) Write(b []byte) (int, error) {
+ if c.hasSentHeader {
+ return c.Conn.Write(b)
+ }
+ // 30: head length
+ headLength := c.IVSize + 30
+
+ bLength := len(b)
+ headDataLength := bLength
+ if bLength-headLength > 64 {
+ headDataLength = headLength + randv2.IntN(65)
+ }
+ headData := b[:headDataLength]
+ b = b[headDataLength:]
+
+ var body string
+ host := c.Host
+ if len(c.Param) > 0 {
+ pos := strings.Index(c.Param, "#")
+ if pos != -1 {
+ body = strings.ReplaceAll(c.Param[pos+1:], "\n", "\r\n")
+ body = strings.ReplaceAll(body, "\\n", "\r\n")
+ host = c.Param[:pos]
+ } else {
+ host = c.Param
+ }
+ }
+ hosts := strings.Split(host, ",")
+ host = hosts[randv2.IntN(len(hosts))]
+
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ if c.post {
+ buf.WriteString("POST /")
+ } else {
+ buf.WriteString("GET /")
+ }
+ packURLEncodedHeadData(buf, headData)
+ buf.WriteString(" HTTP/1.1\r\nHost: " + host)
+ if c.Port != 80 {
+ buf.WriteString(":" + strconv.Itoa(c.Port))
+ }
+ buf.WriteString("\r\n")
+ if len(body) > 0 {
+ buf.WriteString(body + "\r\n\r\n")
+ } else {
+ buf.WriteString("User-Agent: ")
+ buf.WriteString(userAgent[randv2.IntN(len(userAgent))])
+ buf.WriteString("\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.8\r\nAccept-Encoding: gzip, deflate\r\n")
+ if c.post {
+ packBoundary(buf)
+ }
+ buf.WriteString("DNT: 1\r\nConnection: keep-alive\r\n\r\n")
+ }
+ buf.Write(b)
+ _, err := c.Conn.Write(buf.Bytes())
+ if err != nil {
+ return 0, nil
+ }
+ c.hasSentHeader = true
+ return bLength, nil
+}
+
+func packURLEncodedHeadData(buf *bytes.Buffer, data []byte) {
+ dataLength := len(data)
+ for i := 0; i < dataLength; i++ {
+ buf.WriteRune('%')
+ buf.WriteString(hex.EncodeToString(data[i : i+1]))
+ }
+}
+
+func packBoundary(buf *bytes.Buffer) {
+ buf.WriteString("Content-Type: multipart/form-data; boundary=")
+ set := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+ for i := 0; i < 32; i++ {
+ buf.WriteByte(set[randv2.IntN(62)])
+ }
+ buf.WriteString("\r\n")
+}
+
+var userAgent = []string{
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; Moto C Build/NRD90M.059) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-G532M Build/MMB29T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1.1; SM-J120M Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; Moto G (5) Build/NPPS25.137-93-14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-G570M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0; CAM-L03 Build/HUAWEICAM-L03) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3",
+ "Mozilla/5.0 (Linux; Android 8.0.0; FIG-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36",
+ "Mozilla/5.0 (X11; Datanyze; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1.1; SM-J111M Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-J700M Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36",
+ "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Slackware/Chrome/12.0.742.100 Safari/534.30",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
+ "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 8.0.0; WAS-LX3 Build/HUAWEIWAS-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.1805 Safari/537.36 MVisionPlayer/1.0.0.0",
+ "Mozilla/5.0 (Linux; Android 7.0; TRT-LX3 Build/HUAWEITRT-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0; vivo 1610 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.124 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 4.4.2; de-de; SAMSUNG GT-I9195 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 8.0.0; ANE-LX3 Build/HUAWEIANE-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (X11; U; Linux i586; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.1 Safari/533.2",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.65 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-G610M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-J500M Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0; vivo 1606 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.124 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-G610M Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.1; vivo 1716 Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-G570M Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0; MYA-L22 Build/HUAWEIMYA-L22) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1; A1601 Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; TRT-LX2 Build/HUAWEITRT-LX2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/59.0.3071.125 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.649.0 Safari/534.17",
+ "Mozilla/5.0 (Linux; Android 6.0; CAM-L21 Build/HUAWEICAM-L21; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24",
+ "Mozilla/5.0 (Linux; Android 7.1.2; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 4.4.2; SM-G7102 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1; HUAWEI CUN-L22 Build/HUAWEICUN-L22; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1.1; A37fw Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-J730GM Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-G610F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.1.2; Redmi Note 5A Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; Redmi Note 4 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36",
+ "Mozilla/5.0 (Unknown; Linux) AppleWebKit/538.1 (KHTML, like Gecko) Chrome/v1.0.0 Safari/538.1",
+ "Mozilla/5.0 (Linux; Android 7.0; BLL-L22 Build/HUAWEIBLL-L22) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.91 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.0; SM-J710F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-G532M Build/MMB29T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.91 Mobile Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.1.1; CPH1723 Build/N6F26Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 8.0.0; FIG-LX3 Build/HUAWEIFIG-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.649.0 Safari/534.17",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.65 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 7.1; Mi A1 Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36 MVisionPlayer/1.0.0.0",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 5.1; A37f Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; CPH1607 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; vivo 1603 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-G532M Build/MMB29T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; Redmi 4A Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.116 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0.1; SM-G532G Build/MMB29T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.83 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36",
+ "Mozilla/5.0 (Linux; Android 6.0; vivo 1713 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.124 Mobile Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
+ "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/obfs.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/obfs.go
new file mode 100644
index 0000000..c56acc8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/obfs.go
@@ -0,0 +1,42 @@
+package obfs
+
+import (
+ "errors"
+ "fmt"
+ "net"
+)
+
+var (
+ errTLS12TicketAuthIncorrectMagicNumber = errors.New("tls1.2_ticket_auth incorrect magic number")
+ errTLS12TicketAuthTooShortData = errors.New("tls1.2_ticket_auth too short data")
+ errTLS12TicketAuthHMACError = errors.New("tls1.2_ticket_auth hmac verifying failed")
+)
+
+type authData struct {
+ clientID [32]byte
+}
+
+type Obfs interface {
+ StreamConn(net.Conn) net.Conn
+}
+
+type obfsCreator func(b *Base) Obfs
+
+var obfsList = make(map[string]struct {
+ overhead int
+ new obfsCreator
+})
+
+func register(name string, c obfsCreator, o int) {
+ obfsList[name] = struct {
+ overhead int
+ new obfsCreator
+ }{overhead: o, new: c}
+}
+
+func PickObfs(name string, b *Base) (Obfs, int, error) {
+ if choice, ok := obfsList[name]; ok {
+ return choice.new(b), choice.overhead, nil
+ }
+ return nil, 0, fmt.Errorf("Obfs %s not supported", name)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/plain.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/plain.go
new file mode 100644
index 0000000..eb998a4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/plain.go
@@ -0,0 +1,15 @@
+package obfs
+
+import "net"
+
+type plain struct{}
+
+func init() {
+ register("plain", newPlain, 0)
+}
+
+func newPlain(b *Base) Obfs {
+ return &plain{}
+}
+
+func (p *plain) StreamConn(c net.Conn) net.Conn { return c }
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/random_head.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/random_head.go
new file mode 100644
index 0000000..a5ad2da
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/random_head.go
@@ -0,0 +1,73 @@
+package obfs
+
+import (
+ "crypto/rand"
+ "encoding/binary"
+ "hash/crc32"
+ "net"
+
+ "github.com/metacubex/mihomo/common/pool"
+
+ "github.com/metacubex/randv2"
+)
+
+func init() {
+ register("random_head", newRandomHead, 0)
+}
+
+type randomHead struct {
+ *Base
+}
+
+func newRandomHead(b *Base) Obfs {
+ return &randomHead{Base: b}
+}
+
+type randomHeadConn struct {
+ net.Conn
+ *randomHead
+ hasSentHeader bool
+ rawTransSent bool
+ rawTransRecv bool
+ buf []byte
+}
+
+func (r *randomHead) StreamConn(c net.Conn) net.Conn {
+ return &randomHeadConn{Conn: c, randomHead: r}
+}
+
+func (c *randomHeadConn) Read(b []byte) (int, error) {
+ if c.rawTransRecv {
+ return c.Conn.Read(b)
+ }
+ buf := pool.Get(pool.RelayBufferSize)
+ defer pool.Put(buf)
+ c.Conn.Read(buf)
+ c.rawTransRecv = true
+ c.Write(nil)
+ return 0, nil
+}
+
+func (c *randomHeadConn) Write(b []byte) (int, error) {
+ if c.rawTransSent {
+ return c.Conn.Write(b)
+ }
+ c.buf = append(c.buf, b...)
+ if !c.hasSentHeader {
+ c.hasSentHeader = true
+ dataLength := randv2.IntN(96) + 4
+ buf := pool.Get(dataLength + 4)
+ defer pool.Put(buf)
+ rand.Read(buf[:dataLength])
+ binary.LittleEndian.PutUint32(buf[dataLength:], 0xffffffff-crc32.ChecksumIEEE(buf[:dataLength]))
+ _, err := c.Conn.Write(buf)
+ return len(b), err
+ }
+ if c.rawTransRecv {
+ _, err := c.Conn.Write(c.buf)
+ c.buf = nil
+ c.rawTransSent = true
+ return len(b), err
+ }
+ return len(b), nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/tls1.2_ticket_auth.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/tls1.2_ticket_auth.go
new file mode 100644
index 0000000..d5955ed
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/obfs/tls1.2_ticket_auth.go
@@ -0,0 +1,228 @@
+package obfs
+
+import (
+ "bytes"
+ "crypto/hmac"
+ "crypto/rand"
+ "encoding/binary"
+ "net"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/transport/ssr/tools"
+
+ "github.com/metacubex/randv2"
+)
+
+func init() {
+ register("tls1.2_ticket_auth", newTLS12Ticket, 5)
+ register("tls1.2_ticket_fastauth", newTLS12Ticket, 5)
+}
+
+type tls12Ticket struct {
+ *Base
+ *authData
+}
+
+func newTLS12Ticket(b *Base) Obfs {
+ r := &tls12Ticket{Base: b, authData: &authData{}}
+ rand.Read(r.clientID[:])
+ return r
+}
+
+type tls12TicketConn struct {
+ net.Conn
+ *tls12Ticket
+ handshakeStatus int
+ decoded bytes.Buffer
+ underDecoded bytes.Buffer
+ sendBuf bytes.Buffer
+}
+
+func (t *tls12Ticket) StreamConn(c net.Conn) net.Conn {
+ return &tls12TicketConn{Conn: c, tls12Ticket: t}
+}
+
+func (c *tls12TicketConn) Read(b []byte) (int, error) {
+ if c.decoded.Len() > 0 {
+ return c.decoded.Read(b)
+ }
+
+ buf := pool.Get(pool.RelayBufferSize)
+ defer pool.Put(buf)
+ n, err := c.Conn.Read(buf)
+ if err != nil {
+ return 0, err
+ }
+
+ if c.handshakeStatus == 8 {
+ c.underDecoded.Write(buf[:n])
+ for c.underDecoded.Len() > 5 {
+ if !bytes.Equal(c.underDecoded.Bytes()[:3], []byte{0x17, 3, 3}) {
+ c.underDecoded.Reset()
+ return 0, errTLS12TicketAuthIncorrectMagicNumber
+ }
+ size := int(binary.BigEndian.Uint16(c.underDecoded.Bytes()[3:5]))
+ if c.underDecoded.Len() < 5+size {
+ break
+ }
+ c.underDecoded.Next(5)
+ c.decoded.Write(c.underDecoded.Next(size))
+ }
+ n, _ = c.decoded.Read(b)
+ return n, nil
+ }
+
+ if n < 11+32+1+32 {
+ return 0, errTLS12TicketAuthTooShortData
+ }
+
+ if !hmac.Equal(buf[33:43], c.hmacSHA1(buf[11:33])[:10]) || !hmac.Equal(buf[n-10:n], c.hmacSHA1(buf[:n-10])[:10]) {
+ return 0, errTLS12TicketAuthHMACError
+ }
+
+ c.Write(nil)
+ return 0, nil
+}
+
+func (c *tls12TicketConn) Write(b []byte) (int, error) {
+ length := len(b)
+ if c.handshakeStatus == 8 {
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ for len(b) > 2048 {
+ size := randv2.IntN(4096) + 100
+ if len(b) < size {
+ size = len(b)
+ }
+ packData(buf, b[:size])
+ b = b[size:]
+ }
+ if len(b) > 0 {
+ packData(buf, b)
+ }
+ _, err := c.Conn.Write(buf.Bytes())
+ if err != nil {
+ return 0, err
+ }
+ return length, nil
+ }
+
+ if len(b) > 0 {
+ packData(&c.sendBuf, b)
+ }
+
+ if c.handshakeStatus == 0 {
+ c.handshakeStatus = 1
+
+ data := pool.GetBuffer()
+ defer pool.PutBuffer(data)
+
+ data.Write([]byte{3, 3})
+ c.packAuthData(data)
+ data.WriteByte(0x20)
+ data.Write(c.clientID[:])
+ data.Write([]byte{0x00, 0x1c, 0xc0, 0x2b, 0xc0, 0x2f, 0xcc, 0xa9, 0xcc, 0xa8, 0xcc, 0x14, 0xcc, 0x13, 0xc0, 0x0a, 0xc0, 0x14, 0xc0, 0x09, 0xc0, 0x13, 0x00, 0x9c, 0x00, 0x35, 0x00, 0x2f, 0x00, 0x0a})
+ data.Write([]byte{0x1, 0x0})
+
+ ext := pool.GetBuffer()
+ defer pool.PutBuffer(ext)
+
+ host := c.getHost()
+ ext.Write([]byte{0xff, 0x01, 0x00, 0x01, 0x00})
+ packSNIData(ext, host)
+ ext.Write([]byte{0, 0x17, 0, 0})
+ c.packTicketBuf(ext, host)
+ ext.Write([]byte{0x00, 0x0d, 0x00, 0x16, 0x00, 0x14, 0x06, 0x01, 0x06, 0x03, 0x05, 0x01, 0x05, 0x03, 0x04, 0x01, 0x04, 0x03, 0x03, 0x01, 0x03, 0x03, 0x02, 0x01, 0x02, 0x03})
+ ext.Write([]byte{0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00})
+ ext.Write([]byte{0x00, 0x12, 0x00, 0x00})
+ ext.Write([]byte{0x75, 0x50, 0x00, 0x00})
+ ext.Write([]byte{0x00, 0x0b, 0x00, 0x02, 0x01, 0x00})
+ ext.Write([]byte{0x00, 0x0a, 0x00, 0x06, 0x00, 0x04, 0x00, 0x17, 0x00, 0x18})
+
+ binary.Write(data, binary.BigEndian, uint16(ext.Len()))
+ data.ReadFrom(ext)
+
+ ret := pool.GetBuffer()
+ defer pool.PutBuffer(ret)
+
+ ret.Write([]byte{0x16, 3, 1})
+ binary.Write(ret, binary.BigEndian, uint16(data.Len()+4))
+ ret.Write([]byte{1, 0})
+ binary.Write(ret, binary.BigEndian, uint16(data.Len()))
+ ret.ReadFrom(data)
+
+ _, err := c.Conn.Write(ret.Bytes())
+ if err != nil {
+ return 0, err
+ }
+ return length, nil
+ } else if c.handshakeStatus == 1 && len(b) == 0 {
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+
+ buf.Write([]byte{0x14, 3, 3, 0, 1, 1, 0x16, 3, 3, 0, 0x20})
+ tools.AppendRandBytes(buf, 22)
+ buf.Write(c.hmacSHA1(buf.Bytes())[:10])
+ buf.ReadFrom(&c.sendBuf)
+
+ c.handshakeStatus = 8
+
+ _, err := c.Conn.Write(buf.Bytes())
+ return 0, err
+ }
+ return length, nil
+}
+
+func packData(buf *bytes.Buffer, data []byte) {
+ buf.Write([]byte{0x17, 3, 3})
+ binary.Write(buf, binary.BigEndian, uint16(len(data)))
+ buf.Write(data)
+}
+
+func (t *tls12Ticket) packAuthData(buf *bytes.Buffer) {
+ binary.Write(buf, binary.BigEndian, uint32(time.Now().Unix()))
+ tools.AppendRandBytes(buf, 18)
+ buf.Write(t.hmacSHA1(buf.Bytes()[buf.Len()-22:])[:10])
+}
+
+func packSNIData(buf *bytes.Buffer, u string) {
+ len := uint16(len(u))
+ buf.Write([]byte{0, 0})
+ binary.Write(buf, binary.BigEndian, len+5)
+ binary.Write(buf, binary.BigEndian, len+3)
+ buf.WriteByte(0)
+ binary.Write(buf, binary.BigEndian, len)
+ buf.WriteString(u)
+}
+
+func (c *tls12TicketConn) packTicketBuf(buf *bytes.Buffer, u string) {
+ length := 16 * (randv2.IntN(17) + 8)
+ buf.Write([]byte{0, 0x23})
+ binary.Write(buf, binary.BigEndian, uint16(length))
+ tools.AppendRandBytes(buf, length)
+}
+
+func (t *tls12Ticket) hmacSHA1(data []byte) []byte {
+ key := pool.Get(len(t.Key) + 32)
+ defer pool.Put(key)
+ copy(key, t.Key)
+ copy(key[len(t.Key):], t.clientID[:])
+
+ sha1Data := tools.HmacSHA1(key, data)
+ return sha1Data[:10]
+}
+
+func (t *tls12Ticket) getHost() string {
+ host := t.Param
+ if len(host) == 0 {
+ host = t.Host
+ }
+ if len(host) > 0 && host[len(host)-1] >= '0' && host[len(host)-1] <= '9' {
+ host = ""
+ }
+ hosts := strings.Split(host, ",")
+ host = hosts[randv2.IntN(len(hosts))]
+ return host
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_aes128_md5.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_aes128_md5.go
new file mode 100644
index 0000000..c6ae415
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_aes128_md5.go
@@ -0,0 +1,18 @@
+package protocol
+
+import "github.com/metacubex/mihomo/transport/ssr/tools"
+
+func init() {
+ register("auth_aes128_md5", newAuthAES128MD5, 9)
+}
+
+func newAuthAES128MD5(b *Base) Protocol {
+ a := &authAES128{
+ Base: b,
+ authData: &authData{},
+ authAES128Function: &authAES128Function{salt: "auth_aes128_md5", hmac: tools.HmacMD5, hashDigest: tools.MD5Sum},
+ userData: &userData{},
+ }
+ a.initUserData()
+ return a
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_aes128_sha1.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_aes128_sha1.go
new file mode 100644
index 0000000..cfd5551
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_aes128_sha1.go
@@ -0,0 +1,283 @@
+package protocol
+
+import (
+ "bytes"
+ "crypto/rand"
+ "encoding/binary"
+ "math"
+ "net"
+ "strconv"
+ "strings"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/transport/ssr/tools"
+
+ "github.com/metacubex/randv2"
+)
+
+type (
+ hmacMethod func(key, data []byte) []byte
+ hashDigestMethod func([]byte) []byte
+)
+
+func init() {
+ register("auth_aes128_sha1", newAuthAES128SHA1, 9)
+}
+
+type authAES128Function struct {
+ salt string
+ hmac hmacMethod
+ hashDigest hashDigestMethod
+}
+
+type authAES128 struct {
+ *Base
+ *authData
+ *authAES128Function
+ *userData
+ iv []byte
+ hasSentHeader bool
+ rawTrans bool
+ packID uint32
+ recvID uint32
+}
+
+func newAuthAES128SHA1(b *Base) Protocol {
+ a := &authAES128{
+ Base: b,
+ authData: &authData{},
+ authAES128Function: &authAES128Function{salt: "auth_aes128_sha1", hmac: tools.HmacSHA1, hashDigest: tools.SHA1Sum},
+ userData: &userData{},
+ }
+ a.initUserData()
+ return a
+}
+
+func (a *authAES128) initUserData() {
+ params := strings.Split(a.Param, ":")
+ if len(params) > 1 {
+ if userID, err := strconv.ParseUint(params[0], 10, 32); err == nil {
+ binary.LittleEndian.PutUint32(a.userID[:], uint32(userID))
+ a.userKey = a.hashDigest([]byte(params[1]))
+ } else {
+ log.Warnln("Wrong protocol-param for %s, only digits are expected before ':'", a.salt)
+ }
+ }
+ if len(a.userKey) == 0 {
+ a.userKey = a.Key
+ rand.Read(a.userID[:])
+ }
+}
+
+func (a *authAES128) StreamConn(c net.Conn, iv []byte) net.Conn {
+ p := &authAES128{
+ Base: a.Base,
+ authData: a.next(),
+ authAES128Function: a.authAES128Function,
+ userData: a.userData,
+ packID: 1,
+ recvID: 1,
+ }
+ p.iv = iv
+ return &Conn{Conn: c, Protocol: p}
+}
+
+func (a *authAES128) PacketConn(c N.EnhancePacketConn) N.EnhancePacketConn {
+ p := &authAES128{
+ Base: a.Base,
+ authAES128Function: a.authAES128Function,
+ userData: a.userData,
+ }
+ return &PacketConn{EnhancePacketConn: c, Protocol: p}
+}
+
+func (a *authAES128) Decode(dst, src *bytes.Buffer) error {
+ if a.rawTrans {
+ dst.ReadFrom(src)
+ return nil
+ }
+ for src.Len() > 4 {
+ macKey := pool.Get(len(a.userKey) + 4)
+ defer pool.Put(macKey)
+ copy(macKey, a.userKey)
+ binary.LittleEndian.PutUint32(macKey[len(a.userKey):], a.recvID)
+ if !bytes.Equal(a.hmac(macKey, src.Bytes()[:2])[:2], src.Bytes()[2:4]) {
+ src.Reset()
+ return errAuthAES128MACError
+ }
+
+ length := int(binary.LittleEndian.Uint16(src.Bytes()[:2]))
+ if length >= 8192 || length < 7 {
+ a.rawTrans = true
+ src.Reset()
+ return errAuthAES128LengthError
+ }
+ if length > src.Len() {
+ break
+ }
+
+ if !bytes.Equal(a.hmac(macKey, src.Bytes()[:length-4])[:4], src.Bytes()[length-4:length]) {
+ a.rawTrans = true
+ src.Reset()
+ return errAuthAES128ChksumError
+ }
+
+ a.recvID++
+
+ pos := int(src.Bytes()[4])
+ if pos < 255 {
+ pos += 4
+ } else {
+ pos = int(binary.LittleEndian.Uint16(src.Bytes()[5:7])) + 4
+ }
+ dst.Write(src.Bytes()[pos : length-4])
+ src.Next(length)
+ }
+ return nil
+}
+
+func (a *authAES128) Encode(buf *bytes.Buffer, b []byte) error {
+ fullDataLength := len(b)
+ if !a.hasSentHeader {
+ dataLength := getDataLength(b)
+ a.packAuthData(buf, b[:dataLength])
+ b = b[dataLength:]
+ a.hasSentHeader = true
+ }
+ for len(b) > 8100 {
+ a.packData(buf, b[:8100], fullDataLength)
+ b = b[8100:]
+ }
+ if len(b) > 0 {
+ a.packData(buf, b, fullDataLength)
+ }
+ return nil
+}
+
+func (a *authAES128) DecodePacket(b []byte) ([]byte, error) {
+ if len(b) < 4 {
+ return nil, errAuthAES128LengthError
+ }
+ if !bytes.Equal(a.hmac(a.Key, b[:len(b)-4])[:4], b[len(b)-4:]) {
+ return nil, errAuthAES128ChksumError
+ }
+ return b[:len(b)-4], nil
+}
+
+func (a *authAES128) EncodePacket(buf *bytes.Buffer, b []byte) error {
+ buf.Write(b)
+ buf.Write(a.userID[:])
+ buf.Write(a.hmac(a.userKey, buf.Bytes())[:4])
+ return nil
+}
+
+func (a *authAES128) packData(poolBuf *bytes.Buffer, data []byte, fullDataLength int) {
+ dataLength := len(data)
+ randDataLength := a.getRandDataLengthForPackData(dataLength, fullDataLength)
+ /*
+ 2: uint16 LittleEndian packedDataLength
+ 2: hmac of packedDataLength
+ 3: maxRandDataLengthPrefix (min:1)
+ 4: hmac of packedData except the last 4 bytes
+ */
+ packedDataLength := 2 + 2 + 3 + randDataLength + dataLength + 4
+ if randDataLength < 128 {
+ packedDataLength -= 2
+ }
+
+ macKey := pool.Get(len(a.userKey) + 4)
+ defer pool.Put(macKey)
+ copy(macKey, a.userKey)
+ binary.LittleEndian.PutUint32(macKey[len(a.userKey):], a.packID)
+ a.packID++
+
+ binary.Write(poolBuf, binary.LittleEndian, uint16(packedDataLength))
+ poolBuf.Write(a.hmac(macKey, poolBuf.Bytes()[poolBuf.Len()-2:])[:2])
+ a.packRandData(poolBuf, randDataLength)
+ poolBuf.Write(data)
+ poolBuf.Write(a.hmac(macKey, poolBuf.Bytes()[poolBuf.Len()-packedDataLength+4:])[:4])
+}
+
+func trapezoidRandom(max int, d float64) int {
+ base := randv2.Float64()
+ if d-0 > 1e-6 {
+ a := 1 - d
+ base = (math.Sqrt(a*a+4*d*base) - a) / (2 * d)
+ }
+ return int(base * float64(max))
+}
+
+func (a *authAES128) getRandDataLengthForPackData(dataLength, fullDataLength int) int {
+ if fullDataLength >= 32*1024-a.Overhead {
+ return 0
+ }
+ // 1460: tcp_mss
+ revLength := 1460 - dataLength - 9
+ if revLength == 0 {
+ return 0
+ }
+ if revLength < 0 {
+ if revLength > -1460 {
+ return trapezoidRandom(revLength+1460, -0.3)
+ }
+ return randv2.IntN(32)
+ }
+ if dataLength > 900 {
+ return randv2.IntN(revLength)
+ }
+ return trapezoidRandom(revLength, -0.3)
+}
+
+func (a *authAES128) packAuthData(poolBuf *bytes.Buffer, data []byte) {
+ if len(data) == 0 {
+ return
+ }
+ dataLength := len(data)
+ randDataLength := a.getRandDataLengthForPackAuthData(dataLength)
+ /*
+ 7: checkHead(1) and hmac of checkHead(6)
+ 4: userID
+ 16: encrypted data of authdata(12), uint16 BigEndian packedDataLength(2) and uint16 BigEndian randDataLength(2)
+ 4: hmac of userID and encrypted data
+ 4: hmac of packedAuthData except the last 4 bytes
+ */
+ packedAuthDataLength := 7 + 4 + 16 + 4 + randDataLength + dataLength + 4
+
+ macKey := pool.Get(len(a.iv) + len(a.Key))
+ defer pool.Put(macKey)
+ copy(macKey, a.iv)
+ copy(macKey[len(a.iv):], a.Key)
+
+ poolBuf.WriteByte(byte(randv2.IntN(256)))
+ poolBuf.Write(a.hmac(macKey, poolBuf.Bytes())[:6])
+ poolBuf.Write(a.userID[:])
+ err := a.authData.putEncryptedData(poolBuf, a.userKey, [2]int{packedAuthDataLength, randDataLength}, a.salt)
+ if err != nil {
+ poolBuf.Reset()
+ return
+ }
+ poolBuf.Write(a.hmac(macKey, poolBuf.Bytes()[7:])[:4])
+ tools.AppendRandBytes(poolBuf, randDataLength)
+ poolBuf.Write(data)
+ poolBuf.Write(a.hmac(a.userKey, poolBuf.Bytes())[:4])
+}
+
+func (a *authAES128) getRandDataLengthForPackAuthData(size int) int {
+ if size > 400 {
+ return randv2.IntN(512)
+ }
+ return randv2.IntN(1024)
+}
+
+func (a *authAES128) packRandData(poolBuf *bytes.Buffer, size int) {
+ if size < 128 {
+ poolBuf.WriteByte(byte(size + 1))
+ tools.AppendRandBytes(poolBuf, size)
+ return
+ }
+ poolBuf.WriteByte(255)
+ binary.Write(poolBuf, binary.LittleEndian, uint16(size+3))
+ tools.AppendRandBytes(poolBuf, size)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_chain_a.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_chain_a.go
new file mode 100644
index 0000000..396172e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_chain_a.go
@@ -0,0 +1,320 @@
+package protocol
+
+import (
+ "bytes"
+ "crypto/cipher"
+ "crypto/rand"
+ "crypto/rc4"
+ "encoding/base64"
+ "encoding/binary"
+ "errors"
+ "net"
+ "strconv"
+ "strings"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/transport/shadowsocks/core"
+ "github.com/metacubex/mihomo/transport/ssr/tools"
+)
+
+func init() {
+ register("auth_chain_a", newAuthChainA, 4)
+}
+
+type randDataLengthMethod func(int, []byte, *tools.XorShift128Plus) int
+
+type authChainA struct {
+ *Base
+ *authData
+ *userData
+ iv []byte
+ salt string
+ hasSentHeader bool
+ rawTrans bool
+ lastClientHash []byte
+ lastServerHash []byte
+ encrypter cipher.Stream
+ decrypter cipher.Stream
+ randomClient tools.XorShift128Plus
+ randomServer tools.XorShift128Plus
+ randDataLength randDataLengthMethod
+ packID uint32
+ recvID uint32
+}
+
+func newAuthChainA(b *Base) Protocol {
+ a := &authChainA{
+ Base: b,
+ authData: &authData{},
+ userData: &userData{},
+ salt: "auth_chain_a",
+ }
+ a.initUserData()
+ return a
+}
+
+func (a *authChainA) initUserData() {
+ params := strings.Split(a.Param, ":")
+ if len(params) > 1 {
+ if userID, err := strconv.ParseUint(params[0], 10, 32); err == nil {
+ binary.LittleEndian.PutUint32(a.userID[:], uint32(userID))
+ a.userKey = []byte(params[1])
+ } else {
+ log.Warnln("Wrong protocol-param for %s, only digits are expected before ':'", a.salt)
+ }
+ }
+ if len(a.userKey) == 0 {
+ a.userKey = a.Key
+ rand.Read(a.userID[:])
+ }
+}
+
+func (a *authChainA) StreamConn(c net.Conn, iv []byte) net.Conn {
+ p := &authChainA{
+ Base: a.Base,
+ authData: a.next(),
+ userData: a.userData,
+ salt: a.salt,
+ packID: 1,
+ recvID: 1,
+ }
+ p.iv = iv
+ p.randDataLength = p.getRandLength
+ return &Conn{Conn: c, Protocol: p}
+}
+
+func (a *authChainA) PacketConn(c N.EnhancePacketConn) N.EnhancePacketConn {
+ p := &authChainA{
+ Base: a.Base,
+ salt: a.salt,
+ userData: a.userData,
+ }
+ return &PacketConn{EnhancePacketConn: c, Protocol: p}
+}
+
+func (a *authChainA) Decode(dst, src *bytes.Buffer) error {
+ if a.rawTrans {
+ dst.ReadFrom(src)
+ return nil
+ }
+ for src.Len() > 4 {
+ macKey := pool.Get(len(a.userKey) + 4)
+ defer pool.Put(macKey)
+ copy(macKey, a.userKey)
+ binary.LittleEndian.PutUint32(macKey[len(a.userKey):], a.recvID)
+
+ dataLength := int(binary.LittleEndian.Uint16(src.Bytes()[:2]) ^ binary.LittleEndian.Uint16(a.lastServerHash[14:16]))
+ randDataLength := a.randDataLength(dataLength, a.lastServerHash, &a.randomServer)
+ length := dataLength + randDataLength
+ // Temporary workaround for https://github.com/metacubex/mihomo/issues/1352
+ if dataLength < 0 || randDataLength < 0 || length < 0 {
+ return errors.New("ssr crashing blocked")
+ }
+
+ if length >= 4096 {
+ a.rawTrans = true
+ src.Reset()
+ return errAuthChainLengthError
+ }
+
+ if 4+length > src.Len() {
+ break
+ }
+
+ serverHash := tools.HmacMD5(macKey, src.Bytes()[:length+2])
+ if !bytes.Equal(serverHash[:2], src.Bytes()[length+2:length+4]) {
+ a.rawTrans = true
+ src.Reset()
+ return errAuthChainChksumError
+ }
+ a.lastServerHash = serverHash
+
+ pos := 2
+ if dataLength > 0 && randDataLength > 0 {
+ pos += getRandStartPos(randDataLength, &a.randomServer)
+ }
+ // Temporary workaround for https://github.com/metacubex/mihomo/issues/1352
+ if pos < 0 || pos+dataLength < 0 || dataLength < 0 {
+ return errors.New("ssr crashing blocked")
+ }
+
+ wantedData := src.Bytes()[pos : pos+dataLength]
+ a.decrypter.XORKeyStream(wantedData, wantedData)
+ if a.recvID == 1 {
+ dst.Write(wantedData[2:])
+ } else {
+ dst.Write(wantedData)
+ }
+ a.recvID++
+ src.Next(length + 4)
+ }
+ return nil
+}
+
+func (a *authChainA) Encode(buf *bytes.Buffer, b []byte) error {
+ if !a.hasSentHeader {
+ dataLength := getDataLength(b)
+ a.packAuthData(buf, b[:dataLength])
+ b = b[dataLength:]
+ a.hasSentHeader = true
+ }
+ for len(b) > 2800 {
+ a.packData(buf, b[:2800])
+ b = b[2800:]
+ }
+ if len(b) > 0 {
+ a.packData(buf, b)
+ }
+ return nil
+}
+
+func (a *authChainA) DecodePacket(b []byte) ([]byte, error) {
+ if len(b) < 9 {
+ return nil, errAuthChainLengthError
+ }
+ if !bytes.Equal(tools.HmacMD5(a.userKey, b[:len(b)-1])[:1], b[len(b)-1:]) {
+ return nil, errAuthChainChksumError
+ }
+ md5Data := tools.HmacMD5(a.Key, b[len(b)-8:len(b)-1])
+
+ randDataLength := udpGetRandLength(md5Data, &a.randomServer)
+
+ key := core.Kdf(base64.StdEncoding.EncodeToString(a.userKey)+base64.StdEncoding.EncodeToString(md5Data), 16)
+ rc4Cipher, err := rc4.NewCipher(key)
+ if err != nil {
+ return nil, err
+ }
+ wantedData := b[:len(b)-8-randDataLength]
+ rc4Cipher.XORKeyStream(wantedData, wantedData)
+ return wantedData, nil
+}
+
+func (a *authChainA) EncodePacket(buf *bytes.Buffer, b []byte) error {
+ authData := pool.Get(3)
+ defer pool.Put(authData)
+ rand.Read(authData)
+
+ md5Data := tools.HmacMD5(a.Key, authData)
+
+ randDataLength := udpGetRandLength(md5Data, &a.randomClient)
+
+ key := core.Kdf(base64.StdEncoding.EncodeToString(a.userKey)+base64.StdEncoding.EncodeToString(md5Data), 16)
+ rc4Cipher, err := rc4.NewCipher(key)
+ if err != nil {
+ return err
+ }
+ rc4Cipher.XORKeyStream(b, b)
+
+ buf.Write(b)
+ tools.AppendRandBytes(buf, randDataLength)
+ buf.Write(authData)
+ binary.Write(buf, binary.LittleEndian, binary.LittleEndian.Uint32(a.userID[:])^binary.LittleEndian.Uint32(md5Data[:4]))
+ buf.Write(tools.HmacMD5(a.userKey, buf.Bytes())[:1])
+ return nil
+}
+
+func (a *authChainA) packAuthData(poolBuf *bytes.Buffer, data []byte) {
+ /*
+ dataLength := len(data)
+ 12: checkHead(4) and hmac of checkHead(8)
+ 4: uint32 LittleEndian uid (uid = userID ^ last client hash)
+ 16: encrypted data of authdata(12), uint16 LittleEndian overhead(2) and uint16 LittleEndian number zero(2)
+ 4: last server hash(4)
+ packedAuthDataLength := 12 + 4 + 16 + 4 + dataLength
+ */
+
+ macKey := pool.Get(len(a.iv) + len(a.Key))
+ defer pool.Put(macKey)
+ copy(macKey, a.iv)
+ copy(macKey[len(a.iv):], a.Key)
+
+ // check head
+ tools.AppendRandBytes(poolBuf, 4)
+ a.lastClientHash = tools.HmacMD5(macKey, poolBuf.Bytes())
+ a.initRC4Cipher()
+ poolBuf.Write(a.lastClientHash[:8])
+ // uid
+ binary.Write(poolBuf, binary.LittleEndian, binary.LittleEndian.Uint32(a.userID[:])^binary.LittleEndian.Uint32(a.lastClientHash[8:12]))
+ // encrypted data
+ err := a.putEncryptedData(poolBuf, a.userKey, [2]int{a.Overhead, 0}, a.salt)
+ if err != nil {
+ poolBuf.Reset()
+ return
+ }
+ // last server hash
+ a.lastServerHash = tools.HmacMD5(a.userKey, poolBuf.Bytes()[12:])
+ poolBuf.Write(a.lastServerHash[:4])
+ // packed data
+ a.packData(poolBuf, data)
+}
+
+func (a *authChainA) packData(poolBuf *bytes.Buffer, data []byte) {
+ a.encrypter.XORKeyStream(data, data)
+
+ macKey := pool.Get(len(a.userKey) + 4)
+ defer pool.Put(macKey)
+ copy(macKey, a.userKey)
+ binary.LittleEndian.PutUint32(macKey[len(a.userKey):], a.packID)
+ a.packID++
+
+ length := uint16(len(data)) ^ binary.LittleEndian.Uint16(a.lastClientHash[14:16])
+
+ originalLength := poolBuf.Len()
+ binary.Write(poolBuf, binary.LittleEndian, length)
+ a.putMixedRandDataAndData(poolBuf, data)
+ a.lastClientHash = tools.HmacMD5(macKey, poolBuf.Bytes()[originalLength:])
+ poolBuf.Write(a.lastClientHash[:2])
+}
+
+func (a *authChainA) putMixedRandDataAndData(poolBuf *bytes.Buffer, data []byte) {
+ randDataLength := a.randDataLength(len(data), a.lastClientHash, &a.randomClient)
+ if len(data) == 0 {
+ tools.AppendRandBytes(poolBuf, randDataLength)
+ return
+ }
+ if randDataLength > 0 {
+ startPos := getRandStartPos(randDataLength, &a.randomClient)
+ tools.AppendRandBytes(poolBuf, startPos)
+ poolBuf.Write(data)
+ tools.AppendRandBytes(poolBuf, randDataLength-startPos)
+ return
+ }
+ poolBuf.Write(data)
+}
+
+func getRandStartPos(length int, random *tools.XorShift128Plus) int {
+ if length == 0 {
+ return 0
+ }
+ return int(int64(random.Next()%8589934609) % int64(length))
+}
+
+func (a *authChainA) getRandLength(length int, lastHash []byte, random *tools.XorShift128Plus) int {
+ if length > 1440 {
+ return 0
+ }
+ random.InitFromBinAndLength(lastHash, length)
+ if length > 1300 {
+ return int(random.Next() % 31)
+ }
+ if length > 900 {
+ return int(random.Next() % 127)
+ }
+ if length > 400 {
+ return int(random.Next() % 521)
+ }
+ return int(random.Next() % 1021)
+}
+
+func (a *authChainA) initRC4Cipher() {
+ key := core.Kdf(base64.StdEncoding.EncodeToString(a.userKey)+base64.StdEncoding.EncodeToString(a.lastClientHash), 16)
+ a.encrypter, _ = rc4.NewCipher(key)
+ a.decrypter, _ = rc4.NewCipher(key)
+}
+
+func udpGetRandLength(lastHash []byte, random *tools.XorShift128Plus) int {
+ random.InitFromBin(lastHash)
+ return int(random.Next() % 127)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_chain_b.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_chain_b.go
new file mode 100644
index 0000000..223613a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_chain_b.go
@@ -0,0 +1,97 @@
+package protocol
+
+import (
+ "net"
+ "sort"
+
+ "github.com/metacubex/mihomo/transport/ssr/tools"
+)
+
+func init() {
+ register("auth_chain_b", newAuthChainB, 4)
+}
+
+type authChainB struct {
+ *authChainA
+ dataSizeList []int
+ dataSizeList2 []int
+}
+
+func newAuthChainB(b *Base) Protocol {
+ a := &authChainB{
+ authChainA: &authChainA{
+ Base: b,
+ authData: &authData{},
+ userData: &userData{},
+ salt: "auth_chain_b",
+ },
+ }
+ a.initUserData()
+ return a
+}
+
+func (a *authChainB) StreamConn(c net.Conn, iv []byte) net.Conn {
+ p := &authChainB{
+ authChainA: &authChainA{
+ Base: a.Base,
+ authData: a.next(),
+ userData: a.userData,
+ salt: a.salt,
+ packID: 1,
+ recvID: 1,
+ },
+ }
+ p.iv = iv
+ p.randDataLength = p.getRandLength
+ p.initDataSize()
+ return &Conn{Conn: c, Protocol: p}
+}
+
+func (a *authChainB) initDataSize() {
+ a.dataSizeList = a.dataSizeList[:0]
+ a.dataSizeList2 = a.dataSizeList2[:0]
+
+ a.randomServer.InitFromBin(a.Key)
+ length := a.randomServer.Next()%8 + 4
+ for ; length > 0; length-- {
+ a.dataSizeList = append(a.dataSizeList, int(a.randomServer.Next()%2340%2040%1440))
+ }
+ sort.Ints(a.dataSizeList)
+
+ length = a.randomServer.Next()%16 + 8
+ for ; length > 0; length-- {
+ a.dataSizeList2 = append(a.dataSizeList2, int(a.randomServer.Next()%2340%2040%1440))
+ }
+ sort.Ints(a.dataSizeList2)
+}
+
+func (a *authChainB) getRandLength(length int, lashHash []byte, random *tools.XorShift128Plus) int {
+ if length >= 1440 {
+ return 0
+ }
+ random.InitFromBinAndLength(lashHash, length)
+ pos := sort.Search(len(a.dataSizeList), func(i int) bool { return a.dataSizeList[i] >= length+a.Overhead })
+ finalPos := pos + int(random.Next()%uint64(len(a.dataSizeList)))
+ if finalPos < len(a.dataSizeList) {
+ return a.dataSizeList[finalPos] - length - a.Overhead
+ }
+
+ pos = sort.Search(len(a.dataSizeList2), func(i int) bool { return a.dataSizeList2[i] >= length+a.Overhead })
+ finalPos = pos + int(random.Next()%uint64(len(a.dataSizeList2)))
+ if finalPos < len(a.dataSizeList2) {
+ return a.dataSizeList2[finalPos] - length - a.Overhead
+ }
+ if finalPos < pos+len(a.dataSizeList2)-1 {
+ return 0
+ }
+ if length > 1300 {
+ return int(random.Next() % 31)
+ }
+ if length > 900 {
+ return int(random.Next() % 127)
+ }
+ if length > 400 {
+ return int(random.Next() % 521)
+ }
+ return int(random.Next() % 1021)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_sha1_v4.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_sha1_v4.go
new file mode 100644
index 0000000..1c616c3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/auth_sha1_v4.go
@@ -0,0 +1,184 @@
+package protocol
+
+import (
+ "bytes"
+ "encoding/binary"
+ "hash/adler32"
+ "hash/crc32"
+ "net"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/transport/ssr/tools"
+
+ "github.com/metacubex/randv2"
+)
+
+func init() {
+ register("auth_sha1_v4", newAuthSHA1V4, 7)
+}
+
+type authSHA1V4 struct {
+ *Base
+ *authData
+ iv []byte
+ hasSentHeader bool
+ rawTrans bool
+}
+
+func newAuthSHA1V4(b *Base) Protocol {
+ return &authSHA1V4{Base: b, authData: &authData{}}
+}
+
+func (a *authSHA1V4) StreamConn(c net.Conn, iv []byte) net.Conn {
+ p := &authSHA1V4{Base: a.Base, authData: a.next()}
+ p.iv = iv
+ return &Conn{Conn: c, Protocol: p}
+}
+
+func (a *authSHA1V4) PacketConn(c N.EnhancePacketConn) N.EnhancePacketConn {
+ return c
+}
+
+func (a *authSHA1V4) Decode(dst, src *bytes.Buffer) error {
+ if a.rawTrans {
+ dst.ReadFrom(src)
+ return nil
+ }
+ for src.Len() > 4 {
+ if uint16(crc32.ChecksumIEEE(src.Bytes()[:2])&0xffff) != binary.LittleEndian.Uint16(src.Bytes()[2:4]) {
+ src.Reset()
+ return errAuthSHA1V4CRC32Error
+ }
+
+ length := int(binary.BigEndian.Uint16(src.Bytes()[:2]))
+ if length >= 8192 || length < 7 {
+ a.rawTrans = true
+ src.Reset()
+ return errAuthSHA1V4LengthError
+ }
+ if length > src.Len() {
+ break
+ }
+
+ if adler32.Checksum(src.Bytes()[:length-4]) != binary.LittleEndian.Uint32(src.Bytes()[length-4:length]) {
+ a.rawTrans = true
+ src.Reset()
+ return errAuthSHA1V4Adler32Error
+ }
+
+ pos := int(src.Bytes()[4])
+ if pos < 255 {
+ pos += 4
+ } else {
+ pos = int(binary.BigEndian.Uint16(src.Bytes()[5:7])) + 4
+ }
+ dst.Write(src.Bytes()[pos : length-4])
+ src.Next(length)
+ }
+ return nil
+}
+
+func (a *authSHA1V4) Encode(buf *bytes.Buffer, b []byte) error {
+ if !a.hasSentHeader {
+ dataLength := getDataLength(b)
+
+ a.packAuthData(buf, b[:dataLength])
+ b = b[dataLength:]
+
+ a.hasSentHeader = true
+ }
+ for len(b) > 8100 {
+ a.packData(buf, b[:8100])
+ b = b[8100:]
+ }
+ if len(b) > 0 {
+ a.packData(buf, b)
+ }
+
+ return nil
+}
+
+func (a *authSHA1V4) DecodePacket(b []byte) ([]byte, error) { return b, nil }
+
+func (a *authSHA1V4) EncodePacket(buf *bytes.Buffer, b []byte) error {
+ buf.Write(b)
+ return nil
+}
+
+func (a *authSHA1V4) packData(poolBuf *bytes.Buffer, data []byte) {
+ dataLength := len(data)
+ randDataLength := a.getRandDataLength(dataLength)
+ /*
+ 2: uint16 BigEndian packedDataLength
+ 2: uint16 LittleEndian crc32Data & 0xffff
+ 3: maxRandDataLengthPrefix (min:1)
+ 4: adler32Data
+ */
+ packedDataLength := 2 + 2 + 3 + randDataLength + dataLength + 4
+ if randDataLength < 128 {
+ packedDataLength -= 2
+ }
+
+ binary.Write(poolBuf, binary.BigEndian, uint16(packedDataLength))
+ binary.Write(poolBuf, binary.LittleEndian, uint16(crc32.ChecksumIEEE(poolBuf.Bytes()[poolBuf.Len()-2:])&0xffff))
+ a.packRandData(poolBuf, randDataLength)
+ poolBuf.Write(data)
+ binary.Write(poolBuf, binary.LittleEndian, adler32.Checksum(poolBuf.Bytes()[poolBuf.Len()-packedDataLength+4:]))
+}
+
+func (a *authSHA1V4) packAuthData(poolBuf *bytes.Buffer, data []byte) {
+ dataLength := len(data)
+ randDataLength := a.getRandDataLength(12 + dataLength)
+ /*
+ 2: uint16 BigEndian packedAuthDataLength
+ 4: uint32 LittleEndian crc32Data
+ 3: maxRandDataLengthPrefix (min: 1)
+ 12: authDataLength
+ 10: hmacSHA1DataLength
+ */
+ packedAuthDataLength := 2 + 4 + 3 + randDataLength + 12 + dataLength + 10
+ if randDataLength < 128 {
+ packedAuthDataLength -= 2
+ }
+
+ salt := []byte("auth_sha1_v4")
+ crcData := pool.Get(len(salt) + len(a.Key) + 2)
+ defer pool.Put(crcData)
+ binary.BigEndian.PutUint16(crcData, uint16(packedAuthDataLength))
+ copy(crcData[2:], salt)
+ copy(crcData[2+len(salt):], a.Key)
+
+ key := pool.Get(len(a.iv) + len(a.Key))
+ defer pool.Put(key)
+ copy(key, a.iv)
+ copy(key[len(a.iv):], a.Key)
+
+ poolBuf.Write(crcData[:2])
+ binary.Write(poolBuf, binary.LittleEndian, crc32.ChecksumIEEE(crcData))
+ a.packRandData(poolBuf, randDataLength)
+ a.putAuthData(poolBuf)
+ poolBuf.Write(data)
+ poolBuf.Write(tools.HmacSHA1(key, poolBuf.Bytes()[poolBuf.Len()-packedAuthDataLength+10:])[:10])
+}
+
+func (a *authSHA1V4) packRandData(poolBuf *bytes.Buffer, size int) {
+ if size < 128 {
+ poolBuf.WriteByte(byte(size + 1))
+ tools.AppendRandBytes(poolBuf, size)
+ return
+ }
+ poolBuf.WriteByte(255)
+ binary.Write(poolBuf, binary.BigEndian, uint16(size+3))
+ tools.AppendRandBytes(poolBuf, size)
+}
+
+func (a *authSHA1V4) getRandDataLength(size int) int {
+ if size > 1200 {
+ return 0
+ }
+ if size > 400 {
+ return randv2.IntN(256)
+ }
+ return randv2.IntN(512)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/base.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/base.go
new file mode 100644
index 0000000..7987017
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/base.go
@@ -0,0 +1,79 @@
+package protocol
+
+import (
+ "bytes"
+ "crypto/aes"
+ "crypto/cipher"
+ "crypto/rand"
+ "encoding/base64"
+ "encoding/binary"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/transport/shadowsocks/core"
+
+ "github.com/metacubex/randv2"
+)
+
+type Base struct {
+ Key []byte
+ Overhead int
+ Param string
+}
+
+type userData struct {
+ userKey []byte
+ userID [4]byte
+}
+
+type authData struct {
+ clientID [4]byte
+ connectionID uint32
+ mutex sync.Mutex
+}
+
+func (a *authData) next() *authData {
+ r := &authData{}
+ a.mutex.Lock()
+ defer a.mutex.Unlock()
+ if a.connectionID > 0xff000000 || a.connectionID == 0 {
+ rand.Read(a.clientID[:])
+ a.connectionID = randv2.Uint32() & 0xffffff
+ }
+ a.connectionID++
+ copy(r.clientID[:], a.clientID[:])
+ r.connectionID = a.connectionID
+ return r
+}
+
+func (a *authData) putAuthData(buf *bytes.Buffer) {
+ binary.Write(buf, binary.LittleEndian, uint32(time.Now().Unix()))
+ buf.Write(a.clientID[:])
+ binary.Write(buf, binary.LittleEndian, a.connectionID)
+}
+
+func (a *authData) putEncryptedData(b *bytes.Buffer, userKey []byte, paddings [2]int, salt string) error {
+ encrypt := pool.Get(16)
+ defer pool.Put(encrypt)
+ binary.LittleEndian.PutUint32(encrypt, uint32(time.Now().Unix()))
+ copy(encrypt[4:], a.clientID[:])
+ binary.LittleEndian.PutUint32(encrypt[8:], a.connectionID)
+ binary.LittleEndian.PutUint16(encrypt[12:], uint16(paddings[0]))
+ binary.LittleEndian.PutUint16(encrypt[14:], uint16(paddings[1]))
+
+ cipherKey := core.Kdf(base64.StdEncoding.EncodeToString(userKey)+salt, 16)
+ block, err := aes.NewCipher(cipherKey)
+ if err != nil {
+ log.Warnln("New cipher error: %s", err.Error())
+ return err
+ }
+ iv := bytes.Repeat([]byte{0}, 16)
+ cbcCipher := cipher.NewCBCEncrypter(block, iv)
+
+ cbcCipher.CryptBlocks(encrypt, encrypt)
+
+ b.Write(encrypt)
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/origin.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/origin.go
new file mode 100644
index 0000000..4d8b630
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/origin.go
@@ -0,0 +1,35 @@
+package protocol
+
+import (
+ "bytes"
+ "net"
+
+ N "github.com/metacubex/mihomo/common/net"
+)
+
+type origin struct{}
+
+func init() { register("origin", newOrigin, 0) }
+
+func newOrigin(b *Base) Protocol { return &origin{} }
+
+func (o *origin) StreamConn(c net.Conn, iv []byte) net.Conn { return c }
+
+func (o *origin) PacketConn(c N.EnhancePacketConn) N.EnhancePacketConn { return c }
+
+func (o *origin) Decode(dst, src *bytes.Buffer) error {
+ dst.ReadFrom(src)
+ return nil
+}
+
+func (o *origin) Encode(buf *bytes.Buffer, b []byte) error {
+ buf.Write(b)
+ return nil
+}
+
+func (o *origin) DecodePacket(b []byte) ([]byte, error) { return b, nil }
+
+func (o *origin) EncodePacket(buf *bytes.Buffer, b []byte) error {
+ buf.Write(b)
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/packet.go
new file mode 100644
index 0000000..86d573f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/packet.go
@@ -0,0 +1,54 @@
+package protocol
+
+import (
+ "net"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+type PacketConn struct {
+ N.EnhancePacketConn
+ Protocol
+}
+
+func (c *PacketConn) WriteTo(b []byte, addr net.Addr) (int, error) {
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ err := c.EncodePacket(buf, b)
+ if err != nil {
+ return 0, err
+ }
+ _, err = c.EnhancePacketConn.WriteTo(buf.Bytes(), addr)
+ return len(b), err
+}
+
+func (c *PacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ n, addr, err := c.EnhancePacketConn.ReadFrom(b)
+ if err != nil {
+ return n, addr, err
+ }
+ decoded, err := c.DecodePacket(b[:n])
+ if err != nil {
+ return n, addr, err
+ }
+ copy(b, decoded)
+ return len(decoded), addr, nil
+}
+
+func (c *PacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ data, put, addr, err = c.EnhancePacketConn.WaitReadFrom()
+ if err != nil {
+ return
+ }
+ data, err = c.DecodePacket(data)
+ if err != nil {
+ if put != nil {
+ put()
+ }
+ data = nil
+ put = nil
+ return
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/protocol.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/protocol.go
new file mode 100644
index 0000000..ad6bf6b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/protocol.go
@@ -0,0 +1,79 @@
+package protocol
+
+import (
+ "bytes"
+ "errors"
+ "fmt"
+ "net"
+
+ N "github.com/metacubex/mihomo/common/net"
+
+ "github.com/metacubex/randv2"
+)
+
+var (
+ errAuthSHA1V4CRC32Error = errors.New("auth_sha1_v4 decode data wrong crc32")
+ errAuthSHA1V4LengthError = errors.New("auth_sha1_v4 decode data wrong length")
+ errAuthSHA1V4Adler32Error = errors.New("auth_sha1_v4 decode data wrong adler32")
+ errAuthAES128MACError = errors.New("auth_aes128 decode data wrong mac")
+ errAuthAES128LengthError = errors.New("auth_aes128 decode data wrong length")
+ errAuthAES128ChksumError = errors.New("auth_aes128 decode data wrong checksum")
+ errAuthChainLengthError = errors.New("auth_chain decode data wrong length")
+ errAuthChainChksumError = errors.New("auth_chain decode data wrong checksum")
+)
+
+type Protocol interface {
+ StreamConn(net.Conn, []byte) net.Conn
+ PacketConn(N.EnhancePacketConn) N.EnhancePacketConn
+ Decode(dst, src *bytes.Buffer) error
+ Encode(buf *bytes.Buffer, b []byte) error
+ DecodePacket([]byte) ([]byte, error)
+ EncodePacket(buf *bytes.Buffer, b []byte) error
+}
+
+type protocolCreator func(b *Base) Protocol
+
+var protocolList = make(map[string]struct {
+ overhead int
+ new protocolCreator
+})
+
+func register(name string, c protocolCreator, o int) {
+ protocolList[name] = struct {
+ overhead int
+ new protocolCreator
+ }{overhead: o, new: c}
+}
+
+func PickProtocol(name string, b *Base) (Protocol, error) {
+ if choice, ok := protocolList[name]; ok {
+ b.Overhead += choice.overhead
+ return choice.new(b), nil
+ }
+ return nil, fmt.Errorf("protocol %s not supported", name)
+}
+
+func getHeadSize(b []byte, defaultValue int) int {
+ if len(b) < 2 {
+ return defaultValue
+ }
+ headType := b[0] & 7
+ switch headType {
+ case 1:
+ return 7
+ case 4:
+ return 19
+ case 3:
+ return 4 + int(b[1])
+ }
+ return defaultValue
+}
+
+func getDataLength(b []byte) int {
+ bLength := len(b)
+ dataLength := getHeadSize(b, 30) + randv2.IntN(32)
+ if bLength < dataLength {
+ return bLength
+ }
+ return dataLength
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/stream.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/stream.go
new file mode 100644
index 0000000..436859c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/protocol/stream.go
@@ -0,0 +1,50 @@
+package protocol
+
+import (
+ "bytes"
+ "net"
+
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+type Conn struct {
+ net.Conn
+ Protocol
+ decoded bytes.Buffer
+ underDecoded bytes.Buffer
+}
+
+func (c *Conn) Read(b []byte) (int, error) {
+ if c.decoded.Len() > 0 {
+ return c.decoded.Read(b)
+ }
+
+ buf := pool.Get(pool.RelayBufferSize)
+ defer pool.Put(buf)
+ n, err := c.Conn.Read(buf)
+ if err != nil {
+ return 0, err
+ }
+ c.underDecoded.Write(buf[:n])
+ err = c.Decode(&c.decoded, &c.underDecoded)
+ if err != nil {
+ return 0, err
+ }
+ n, _ = c.decoded.Read(b)
+ return n, nil
+}
+
+func (c *Conn) Write(b []byte) (int, error) {
+ bLength := len(b)
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ err := c.Encode(buf, b)
+ if err != nil {
+ return 0, err
+ }
+ _, err = c.Conn.Write(buf.Bytes())
+ if err != nil {
+ return 0, err
+ }
+ return bLength, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/tools/bufPool.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/tools/bufPool.go
new file mode 100644
index 0000000..ac15c97
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/tools/bufPool.go
@@ -0,0 +1,11 @@
+package tools
+
+import (
+ "bytes"
+ "crypto/rand"
+ "io"
+)
+
+func AppendRandBytes(b *bytes.Buffer, length int) {
+ b.ReadFrom(io.LimitReader(rand.Reader, int64(length)))
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/tools/crypto.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/tools/crypto.go
new file mode 100644
index 0000000..b2a4156
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/tools/crypto.go
@@ -0,0 +1,33 @@
+package tools
+
+import (
+ "crypto/hmac"
+ "crypto/md5"
+ "crypto/sha1"
+)
+
+const HmacSHA1Len = 10
+
+func HmacMD5(key, data []byte) []byte {
+ hmacMD5 := hmac.New(md5.New, key)
+ hmacMD5.Write(data)
+ return hmacMD5.Sum(nil)
+}
+
+func HmacSHA1(key, data []byte) []byte {
+ hmacSHA1 := hmac.New(sha1.New, key)
+ hmacSHA1.Write(data)
+ return hmacSHA1.Sum(nil)
+}
+
+func MD5Sum(b []byte) []byte {
+ h := md5.New()
+ h.Write(b)
+ return h.Sum(nil)
+}
+
+func SHA1Sum(b []byte) []byte {
+ h := sha1.New()
+ h.Write(b)
+ return h.Sum(nil)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/tools/random.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/tools/random.go
new file mode 100644
index 0000000..c76011e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/ssr/tools/random.go
@@ -0,0 +1,57 @@
+package tools
+
+import (
+ "encoding/binary"
+
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+// XorShift128Plus - a pseudorandom number generator
+type XorShift128Plus struct {
+ s [2]uint64
+}
+
+func (r *XorShift128Plus) Next() uint64 {
+ x := r.s[0]
+ y := r.s[1]
+ r.s[0] = y
+ x ^= x << 23
+ x ^= y ^ (x >> 17) ^ (y >> 26)
+ r.s[1] = x
+ return x + y
+}
+
+func (r *XorShift128Plus) InitFromBin(bin []byte) {
+ var full []byte
+ if len(bin) < 16 {
+ full := pool.Get(16)[:0]
+ defer pool.Put(full)
+ full = append(full, bin...)
+ for len(full) < 16 {
+ full = append(full, 0)
+ }
+ } else {
+ full = bin
+ }
+ r.s[0] = binary.LittleEndian.Uint64(full[:8])
+ r.s[1] = binary.LittleEndian.Uint64(full[8:16])
+}
+
+func (r *XorShift128Plus) InitFromBinAndLength(bin []byte, length int) {
+ var full []byte
+ if len(bin) < 16 {
+ full := pool.Get(16)[:0]
+ defer pool.Put(full)
+ full = append(full, bin...)
+ for len(full) < 16 {
+ full = append(full, 0)
+ }
+ }
+ full = bin
+ binary.LittleEndian.PutUint16(full, uint16(length))
+ r.s[0] = binary.LittleEndian.Uint64(full[:8])
+ r.s[1] = binary.LittleEndian.Uint64(full[8:16])
+ for i := 0; i < 4; i++ {
+ r.Next()
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/trojan/trojan.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/trojan/trojan.go
new file mode 100644
index 0000000..17f403c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/trojan/trojan.go
@@ -0,0 +1,348 @@
+package trojan
+
+import (
+ "context"
+ "crypto/sha256"
+ "crypto/tls"
+ "encoding/binary"
+ "encoding/hex"
+ "errors"
+ "io"
+ "net"
+ "net/http"
+ "sync"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/component/ca"
+ tlsC "github.com/metacubex/mihomo/component/tls"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+ "github.com/metacubex/mihomo/transport/vmess"
+)
+
+const (
+ // max packet length
+ maxLength = 8192
+)
+
+var (
+ defaultALPN = []string{"h2", "http/1.1"}
+ defaultWebsocketALPN = []string{"http/1.1"}
+
+ crlf = []byte{'\r', '\n'}
+)
+
+type Command = byte
+
+const (
+ CommandTCP byte = 1
+ CommandUDP byte = 3
+
+ // deprecated XTLS commands, as souvenirs
+ commandXRD byte = 0xf0 // XTLS direct mode
+ commandXRO byte = 0xf1 // XTLS origin mode
+)
+
+type Option struct {
+ Password string
+ ALPN []string
+ ServerName string
+ SkipCertVerify bool
+ Fingerprint string
+ ClientFingerprint string
+ Reality *tlsC.RealityConfig
+}
+
+type WebsocketOption struct {
+ Host string
+ Port string
+ Path string
+ Headers http.Header
+ V2rayHttpUpgrade bool
+ V2rayHttpUpgradeFastOpen bool
+}
+
+type Trojan struct {
+ option *Option
+ hexPassword []byte
+}
+
+func (t *Trojan) StreamConn(ctx context.Context, conn net.Conn) (net.Conn, error) {
+ alpn := defaultALPN
+ if len(t.option.ALPN) != 0 {
+ alpn = t.option.ALPN
+ }
+ tlsConfig := &tls.Config{
+ NextProtos: alpn,
+ MinVersion: tls.VersionTLS12,
+ InsecureSkipVerify: t.option.SkipCertVerify,
+ ServerName: t.option.ServerName,
+ }
+
+ var err error
+ tlsConfig, err = ca.GetSpecifiedFingerprintTLSConfig(tlsConfig, t.option.Fingerprint)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(t.option.ClientFingerprint) != 0 {
+ if t.option.Reality == nil {
+ utlsConn, valid := vmess.GetUTLSConn(conn, t.option.ClientFingerprint, tlsConfig)
+ if valid {
+ ctx, cancel := context.WithTimeout(context.Background(), C.DefaultTLSTimeout)
+ defer cancel()
+
+ err := utlsConn.(*tlsC.UConn).HandshakeContext(ctx)
+ return utlsConn, err
+ }
+ } else {
+ ctx, cancel := context.WithTimeout(context.Background(), C.DefaultTLSTimeout)
+ defer cancel()
+ return tlsC.GetRealityConn(ctx, conn, t.option.ClientFingerprint, tlsConfig, t.option.Reality)
+ }
+ }
+ if t.option.Reality != nil {
+ return nil, errors.New("REALITY is based on uTLS, please set a client-fingerprint")
+ }
+
+ tlsConn := tls.Client(conn, tlsConfig)
+
+ // fix tls handshake not timeout
+ ctx, cancel := context.WithTimeout(context.Background(), C.DefaultTLSTimeout)
+ defer cancel()
+
+ err = tlsConn.HandshakeContext(ctx)
+ return tlsConn, err
+}
+
+func (t *Trojan) StreamWebsocketConn(ctx context.Context, conn net.Conn, wsOptions *WebsocketOption) (net.Conn, error) {
+ alpn := defaultWebsocketALPN
+ if len(t.option.ALPN) != 0 {
+ alpn = t.option.ALPN
+ }
+
+ tlsConfig := &tls.Config{
+ NextProtos: alpn,
+ MinVersion: tls.VersionTLS12,
+ InsecureSkipVerify: t.option.SkipCertVerify,
+ ServerName: t.option.ServerName,
+ }
+
+ var err error
+ tlsConfig, err = ca.GetSpecifiedFingerprintTLSConfig(tlsConfig, t.option.Fingerprint)
+ if err != nil {
+ return nil, err
+ }
+
+ return vmess.StreamWebsocketConn(ctx, conn, &vmess.WebsocketConfig{
+ Host: wsOptions.Host,
+ Port: wsOptions.Port,
+ Path: wsOptions.Path,
+ Headers: wsOptions.Headers,
+ V2rayHttpUpgrade: wsOptions.V2rayHttpUpgrade,
+ V2rayHttpUpgradeFastOpen: wsOptions.V2rayHttpUpgradeFastOpen,
+ TLS: true,
+ TLSConfig: tlsConfig,
+ ClientFingerprint: t.option.ClientFingerprint,
+ })
+}
+
+func (t *Trojan) WriteHeader(w io.Writer, command Command, socks5Addr []byte) error {
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+
+ buf.Write(t.hexPassword)
+ buf.Write(crlf)
+
+ buf.WriteByte(command)
+ buf.Write(socks5Addr)
+ buf.Write(crlf)
+
+ _, err := w.Write(buf.Bytes())
+ return err
+}
+
+func (t *Trojan) PacketConn(conn net.Conn) net.PacketConn {
+ return &PacketConn{
+ Conn: conn,
+ }
+}
+
+func writePacket(w io.Writer, socks5Addr, payload []byte) (int, error) {
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+
+ buf.Write(socks5Addr)
+ binary.Write(buf, binary.BigEndian, uint16(len(payload)))
+ buf.Write(crlf)
+ buf.Write(payload)
+
+ return w.Write(buf.Bytes())
+}
+
+func WritePacket(w io.Writer, socks5Addr, payload []byte) (int, error) {
+ if len(payload) <= maxLength {
+ return writePacket(w, socks5Addr, payload)
+ }
+
+ offset := 0
+ total := len(payload)
+ for {
+ cursor := offset + maxLength
+ if cursor > total {
+ cursor = total
+ }
+
+ n, err := writePacket(w, socks5Addr, payload[offset:cursor])
+ if err != nil {
+ return offset + n, err
+ }
+
+ offset = cursor
+ if offset == total {
+ break
+ }
+ }
+
+ return total, nil
+}
+
+func ReadPacket(r io.Reader, payload []byte) (net.Addr, int, int, error) {
+ addr, err := socks5.ReadAddr(r, payload)
+ if err != nil {
+ return nil, 0, 0, errors.New("read addr error")
+ }
+ uAddr := addr.UDPAddr()
+ if uAddr == nil {
+ return nil, 0, 0, errors.New("parse addr error")
+ }
+
+ if _, err = io.ReadFull(r, payload[:2]); err != nil {
+ return nil, 0, 0, errors.New("read length error")
+ }
+
+ total := int(binary.BigEndian.Uint16(payload[:2]))
+ if total > maxLength {
+ return nil, 0, 0, errors.New("packet invalid")
+ }
+
+ // read crlf
+ if _, err = io.ReadFull(r, payload[:2]); err != nil {
+ return nil, 0, 0, errors.New("read crlf error")
+ }
+
+ length := len(payload)
+ if total < length {
+ length = total
+ }
+
+ if _, err = io.ReadFull(r, payload[:length]); err != nil {
+ return nil, 0, 0, errors.New("read packet error")
+ }
+
+ return uAddr, length, total - length, nil
+}
+
+func New(option *Option) *Trojan {
+ return &Trojan{option, hexSha224([]byte(option.Password))}
+}
+
+var _ N.EnhancePacketConn = (*PacketConn)(nil)
+
+type PacketConn struct {
+ net.Conn
+ remain int
+ rAddr net.Addr
+ mux sync.Mutex
+}
+
+func (pc *PacketConn) WriteTo(b []byte, addr net.Addr) (int, error) {
+ return WritePacket(pc, socks5.ParseAddr(addr.String()), b)
+}
+
+func (pc *PacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+ pc.mux.Lock()
+ defer pc.mux.Unlock()
+ if pc.remain != 0 {
+ length := len(b)
+ if pc.remain < length {
+ length = pc.remain
+ }
+
+ n, err := pc.Conn.Read(b[:length])
+ if err != nil {
+ return 0, nil, err
+ }
+
+ pc.remain -= n
+ addr := pc.rAddr
+ if pc.remain == 0 {
+ pc.rAddr = nil
+ }
+
+ return n, addr, nil
+ }
+
+ addr, n, remain, err := ReadPacket(pc.Conn, b)
+ if err != nil {
+ return 0, nil, err
+ }
+
+ if remain != 0 {
+ pc.remain = remain
+ pc.rAddr = addr
+ }
+
+ return n, addr, nil
+}
+
+func (pc *PacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ pc.mux.Lock()
+ defer pc.mux.Unlock()
+
+ destination, err := socks5.ReadAddr0(pc.Conn)
+ if err != nil {
+ return nil, nil, nil, err
+ }
+ addr = destination.UDPAddr()
+
+ data = pool.Get(pool.UDPBufferSize)
+ put = func() {
+ _ = pool.Put(data)
+ }
+
+ _, err = io.ReadFull(pc.Conn, data[:2+2]) // u16be length + CR LF
+ if err != nil {
+ if put != nil {
+ put()
+ }
+ return nil, nil, nil, err
+ }
+ length := binary.BigEndian.Uint16(data)
+
+ if length > 0 {
+ data = data[:length]
+ _, err = io.ReadFull(pc.Conn, data)
+ if err != nil {
+ if put != nil {
+ put()
+ }
+ return nil, nil, nil, err
+ }
+ } else {
+ if put != nil {
+ put()
+ }
+ return nil, nil, addr, nil
+ }
+
+ return
+}
+
+func hexSha224(data []byte) []byte {
+ buf := make([]byte, 56)
+ hash := sha256.Sum224(data)
+ hex.Encode(buf, hash[:])
+ return buf
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/common/congestion.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/common/congestion.go
new file mode 100644
index 0000000..a0e2be6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/common/congestion.go
@@ -0,0 +1,57 @@
+package common
+
+import (
+ "github.com/metacubex/mihomo/transport/tuic/congestion"
+ congestionv2 "github.com/metacubex/mihomo/transport/tuic/congestion_v2"
+
+ "github.com/metacubex/quic-go"
+ c "github.com/metacubex/quic-go/congestion"
+)
+
+const (
+ DefaultStreamReceiveWindow = 15728640 // 15 MB/s
+ DefaultConnectionReceiveWindow = 67108864 // 64 MB/s
+)
+
+func SetCongestionController(quicConn quic.Connection, cc string, cwnd int) {
+ if cwnd == 0 {
+ cwnd = 32
+ }
+ switch cc {
+ case "cubic":
+ quicConn.SetCongestionControl(
+ congestion.NewCubicSender(
+ congestion.DefaultClock{},
+ congestion.GetInitialPacketSize(quicConn),
+ false,
+ ),
+ )
+ case "new_reno":
+ quicConn.SetCongestionControl(
+ congestion.NewCubicSender(
+ congestion.DefaultClock{},
+ congestion.GetInitialPacketSize(quicConn),
+ true,
+ ),
+ )
+ case "bbr_meta_v1":
+ quicConn.SetCongestionControl(
+ congestion.NewBBRSender(
+ congestion.DefaultClock{},
+ congestion.GetInitialPacketSize(quicConn),
+ c.ByteCount(cwnd)*congestion.InitialMaxDatagramSize,
+ congestion.DefaultBBRMaxCongestionWindow*congestion.InitialMaxDatagramSize,
+ ),
+ )
+ case "bbr_meta_v2":
+ fallthrough
+ case "bbr":
+ quicConn.SetCongestionControl(
+ congestionv2.NewBbrSender(
+ congestionv2.DefaultClock{},
+ congestionv2.GetInitialPacketSize(quicConn),
+ c.ByteCount(cwnd),
+ ),
+ )
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/common/stream.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/common/stream.go
new file mode 100644
index 0000000..e65f9a4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/common/stream.go
@@ -0,0 +1,67 @@
+package common
+
+import (
+ "net"
+ "sync"
+ "time"
+
+ "github.com/metacubex/quic-go"
+)
+
+type quicStreamConn struct {
+ quic.Stream
+ lock sync.Mutex
+ lAddr net.Addr
+ rAddr net.Addr
+
+ closeDeferFn func()
+
+ closeOnce sync.Once
+ closeErr error
+}
+
+func (q *quicStreamConn) Write(p []byte) (n int, err error) {
+ q.lock.Lock()
+ defer q.lock.Unlock()
+ return q.Stream.Write(p)
+}
+
+func (q *quicStreamConn) Close() error {
+ q.closeOnce.Do(func() {
+ q.closeErr = q.close()
+ })
+ return q.closeErr
+}
+
+func (q *quicStreamConn) close() error {
+ if q.closeDeferFn != nil {
+ defer q.closeDeferFn()
+ }
+
+ // https://github.com/cloudflare/cloudflared/commit/ed2bac026db46b239699ac5ce4fcf122d7cab2cd
+ // Make sure a possible writer does not block the lock forever. We need it, so we can close the writer
+ // side of the stream safely.
+ _ = q.Stream.SetWriteDeadline(time.Now())
+
+ // This lock is eventually acquired despite Write also acquiring it, because we set a deadline to writes.
+ q.lock.Lock()
+ defer q.lock.Unlock()
+
+ // We have to clean up the receiving stream ourselves since the Close in the bottom does not handle that.
+ q.Stream.CancelRead(0)
+ return q.Stream.Close()
+}
+
+func (q *quicStreamConn) LocalAddr() net.Addr {
+ return q.lAddr
+}
+
+func (q *quicStreamConn) RemoteAddr() net.Addr {
+ return q.rAddr
+}
+
+var _ net.Conn = (*quicStreamConn)(nil)
+
+func NewQuicStreamConn(stream quic.Stream, lAddr, rAddr net.Addr, closeDeferFn func()) net.Conn {
+ return &quicStreamConn{Stream: stream, lAddr: lAddr, rAddr: rAddr, closeDeferFn: closeDeferFn}
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/common/type.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/common/type.go
new file mode 100644
index 0000000..c663fa0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/common/type.go
@@ -0,0 +1,46 @@
+package common
+
+import (
+ "bufio"
+ "context"
+ "errors"
+ "net"
+ "time"
+
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/metacubex/quic-go"
+)
+
+var (
+ ClientClosed = errors.New("tuic: client closed")
+ TooManyOpenStreams = errors.New("tuic: too many open streams")
+)
+
+type DialFunc func(ctx context.Context, dialer C.Dialer) (transport *quic.Transport, addr net.Addr, err error)
+
+type Client interface {
+ DialContextWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn DialFunc) (net.Conn, error)
+ ListenPacketWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn DialFunc) (net.PacketConn, error)
+ OpenStreams() int64
+ DialerRef() C.Dialer
+ LastVisited() time.Time
+ SetLastVisited(last time.Time)
+ Close()
+}
+
+type ServerHandler interface {
+ AuthOk() bool
+ HandleTimeout()
+ HandleStream(conn *N.BufferedConn) (err error)
+ HandleMessage(message []byte) (err error)
+ HandleUniStream(reader *bufio.Reader) (err error)
+}
+
+type UdpRelayMode uint8
+
+const (
+ QUIC UdpRelayMode = iota
+ NATIVE
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/bandwidth.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/bandwidth.go
new file mode 100644
index 0000000..2a6b3a2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/bandwidth.go
@@ -0,0 +1,25 @@
+package congestion
+
+import (
+ "math"
+ "time"
+
+ "github.com/metacubex/quic-go/congestion"
+)
+
+// Bandwidth of a connection
+type Bandwidth uint64
+
+const infBandwidth Bandwidth = math.MaxUint64
+
+const (
+ // BitsPerSecond is 1 bit per second
+ BitsPerSecond Bandwidth = 1
+ // BytesPerSecond is 1 byte per second
+ BytesPerSecond = 8 * BitsPerSecond
+)
+
+// BandwidthFromDelta calculates the bandwidth from a number of bytes and a time delta
+func BandwidthFromDelta(bytes congestion.ByteCount, delta time.Duration) Bandwidth {
+ return Bandwidth(bytes) * Bandwidth(time.Second) / Bandwidth(delta) * BytesPerSecond
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/bandwidth_sampler.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/bandwidth_sampler.go
new file mode 100644
index 0000000..e415fe7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/bandwidth_sampler.go
@@ -0,0 +1,376 @@
+package congestion
+
+import (
+ "math"
+ "time"
+
+ "github.com/metacubex/quic-go/congestion"
+)
+
+var (
+ InfiniteBandwidth = Bandwidth(math.MaxUint64)
+)
+
+// SendTimeState is a subset of ConnectionStateOnSentPacket which is returned
+// to the caller when the packet is acked or lost.
+type SendTimeState struct {
+ // Whether other states in this object is valid.
+ isValid bool
+ // Whether the sender is app limited at the time the packet was sent.
+ // App limited bandwidth sample might be artificially low because the sender
+ // did not have enough data to send in order to saturate the link.
+ isAppLimited bool
+ // Total number of sent bytes at the time the packet was sent.
+ // Includes the packet itself.
+ totalBytesSent congestion.ByteCount
+ // Total number of acked bytes at the time the packet was sent.
+ totalBytesAcked congestion.ByteCount
+ // Total number of lost bytes at the time the packet was sent.
+ totalBytesLost congestion.ByteCount
+}
+
+// ConnectionStateOnSentPacket represents the information about a sent packet
+// and the state of the connection at the moment the packet was sent,
+// specifically the information about the most recently acknowledged packet at
+// that moment.
+type ConnectionStateOnSentPacket struct {
+ packetNumber congestion.PacketNumber
+ // Time at which the packet is sent.
+ sendTime time.Time
+ // Size of the packet.
+ size congestion.ByteCount
+ // The value of |totalBytesSentAtLastAckedPacket| at the time the
+ // packet was sent.
+ totalBytesSentAtLastAckedPacket congestion.ByteCount
+ // The value of |lastAckedPacketSentTime| at the time the packet was
+ // sent.
+ lastAckedPacketSentTime time.Time
+ // The value of |lastAckedPacketAckTime| at the time the packet was
+ // sent.
+ lastAckedPacketAckTime time.Time
+ // Send time states that are returned to the congestion controller when the
+ // packet is acked or lost.
+ sendTimeState SendTimeState
+}
+
+// BandwidthSample
+type BandwidthSample struct {
+ // The bandwidth at that particular sample. Zero if no valid bandwidth sample
+ // is available.
+ bandwidth Bandwidth
+ // The RTT measurement at this particular sample. Zero if no RTT sample is
+ // available. Does not correct for delayed ack time.
+ rtt time.Duration
+ // States captured when the packet was sent.
+ stateAtSend SendTimeState
+}
+
+func NewBandwidthSample() *BandwidthSample {
+ return &BandwidthSample{
+ // FIXME: the default value of original code is zero.
+ rtt: InfiniteRTT,
+ }
+}
+
+// BandwidthSampler keeps track of sent and acknowledged packets and outputs a
+// bandwidth sample for every packet acknowledged. The samples are taken for
+// individual packets, and are not filtered; the consumer has to filter the
+// bandwidth samples itself. In certain cases, the sampler will locally severely
+// underestimate the bandwidth, hence a maximum filter with a size of at least
+// one RTT is recommended.
+//
+// This class bases its samples on the slope of two curves: the number of bytes
+// sent over time, and the number of bytes acknowledged as received over time.
+// It produces a sample of both slopes for every packet that gets acknowledged,
+// based on a slope between two points on each of the corresponding curves. Note
+// that due to the packet loss, the number of bytes on each curve might get
+// further and further away from each other, meaning that it is not feasible to
+// compare byte values coming from different curves with each other.
+//
+// The obvious points for measuring slope sample are the ones corresponding to
+// the packet that was just acknowledged. Let us denote them as S_1 (point at
+// which the current packet was sent) and A_1 (point at which the current packet
+// was acknowledged). However, taking a slope requires two points on each line,
+// so estimating bandwidth requires picking a packet in the past with respect to
+// which the slope is measured.
+//
+// For that purpose, BandwidthSampler always keeps track of the most recently
+// acknowledged packet, and records it together with every outgoing packet.
+// When a packet gets acknowledged (A_1), it has not only information about when
+// it itself was sent (S_1), but also the information about the latest
+// acknowledged packet right before it was sent (S_0 and A_0).
+//
+// Based on that data, send and ack rate are estimated as:
+//
+// send_rate = (bytes(S_1) - bytes(S_0)) / (time(S_1) - time(S_0))
+// ack_rate = (bytes(A_1) - bytes(A_0)) / (time(A_1) - time(A_0))
+//
+// Here, the ack rate is intuitively the rate we want to treat as bandwidth.
+// However, in certain cases (e.g. ack compression) the ack rate at a point may
+// end up higher than the rate at which the data was originally sent, which is
+// not indicative of the real bandwidth. Hence, we use the send rate as an upper
+// bound, and the sample value is
+//
+// rate_sample = min(send_rate, ack_rate)
+//
+// An important edge case handled by the sampler is tracking the app-limited
+// samples. There are multiple meaning of "app-limited" used interchangeably,
+// hence it is important to understand and to be able to distinguish between
+// them.
+//
+// Meaning 1: connection state. The connection is said to be app-limited when
+// there is no outstanding data to send. This means that certain bandwidth
+// samples in the future would not be an accurate indication of the link
+// capacity, and it is important to inform consumer about that. Whenever
+// connection becomes app-limited, the sampler is notified via OnAppLimited()
+// method.
+//
+// Meaning 2: a phase in the bandwidth sampler. As soon as the bandwidth
+// sampler becomes notified about the connection being app-limited, it enters
+// app-limited phase. In that phase, all *sent* packets are marked as
+// app-limited. Note that the connection itself does not have to be
+// app-limited during the app-limited phase, and in fact it will not be
+// (otherwise how would it send packets?). The boolean flag below indicates
+// whether the sampler is in that phase.
+//
+// Meaning 3: a flag on the sent packet and on the sample. If a sent packet is
+// sent during the app-limited phase, the resulting sample related to the
+// packet will be marked as app-limited.
+//
+// With the terminology issue out of the way, let us consider the question of
+// what kind of situation it addresses.
+//
+// Consider a scenario where we first send packets 1 to 20 at a regular
+// bandwidth, and then immediately run out of data. After a few seconds, we send
+// packets 21 to 60, and only receive ack for 21 between sending packets 40 and
+// 41. In this case, when we sample bandwidth for packets 21 to 40, the S_0/A_0
+// we use to compute the slope is going to be packet 20, a few seconds apart
+// from the current packet, hence the resulting estimate would be extremely low
+// and not indicative of anything. Only at packet 41 the S_0/A_0 will become 21,
+// meaning that the bandwidth sample would exclude the quiescence.
+//
+// Based on the analysis of that scenario, we implement the following rule: once
+// OnAppLimited() is called, all sent packets will produce app-limited samples
+// up until an ack for a packet that was sent after OnAppLimited() was called.
+// Note that while the scenario above is not the only scenario when the
+// connection is app-limited, the approach works in other cases too.
+type BandwidthSampler struct {
+ // The total number of congestion controlled bytes sent during the connection.
+ totalBytesSent congestion.ByteCount
+ // The total number of congestion controlled bytes which were acknowledged.
+ totalBytesAcked congestion.ByteCount
+ // The total number of congestion controlled bytes which were lost.
+ totalBytesLost congestion.ByteCount
+ // The value of |totalBytesSent| at the time the last acknowledged packet
+ // was sent. Valid only when |lastAckedPacketSentTime| is valid.
+ totalBytesSentAtLastAckedPacket congestion.ByteCount
+ // The time at which the last acknowledged packet was sent. Set to
+ // QuicTime::Zero() if no valid timestamp is available.
+ lastAckedPacketSentTime time.Time
+ // The time at which the most recent packet was acknowledged.
+ lastAckedPacketAckTime time.Time
+ // The most recently sent packet.
+ lastSendPacket congestion.PacketNumber
+ // Indicates whether the bandwidth sampler is currently in an app-limited
+ // phase.
+ isAppLimited bool
+ // The packet that will be acknowledged after this one will cause the sampler
+ // to exit the app-limited phase.
+ endOfAppLimitedPhase congestion.PacketNumber
+ // Record of the connection state at the point where each packet in flight was
+ // sent, indexed by the packet number.
+ connectionStats *ConnectionStates
+}
+
+func NewBandwidthSampler() *BandwidthSampler {
+ return &BandwidthSampler{
+ connectionStats: &ConnectionStates{
+ stats: make(map[congestion.PacketNumber]*ConnectionStateOnSentPacket),
+ },
+ }
+}
+
+// OnPacketSent Inputs the sent packet information into the sampler. Assumes that all
+// packets are sent in order. The information about the packet will not be
+// released from the sampler until it the packet is either acknowledged or
+// declared lost.
+func (s *BandwidthSampler) OnPacketSent(sentTime time.Time, lastSentPacket congestion.PacketNumber, sentBytes, bytesInFlight congestion.ByteCount, hasRetransmittableData bool) {
+ s.lastSendPacket = lastSentPacket
+
+ if !hasRetransmittableData {
+ return
+ }
+
+ s.totalBytesSent += sentBytes
+
+ // If there are no packets in flight, the time at which the new transmission
+ // opens can be treated as the A_0 point for the purpose of bandwidth
+ // sampling. This underestimates bandwidth to some extent, and produces some
+ // artificially low samples for most packets in flight, but it provides with
+ // samples at important points where we would not have them otherwise, most
+ // importantly at the beginning of the connection.
+ if bytesInFlight == 0 {
+ s.lastAckedPacketAckTime = sentTime
+ s.totalBytesSentAtLastAckedPacket = s.totalBytesSent
+
+ // In this situation ack compression is not a concern, set send rate to
+ // effectively infinite.
+ s.lastAckedPacketSentTime = sentTime
+ }
+
+ s.connectionStats.Insert(lastSentPacket, sentTime, sentBytes, s)
+}
+
+// OnPacketAcked Notifies the sampler that the |lastAckedPacket| is acknowledged. Returns a
+// bandwidth sample. If no bandwidth sample is available,
+// QuicBandwidth::Zero() is returned.
+func (s *BandwidthSampler) OnPacketAcked(ackTime time.Time, lastAckedPacket congestion.PacketNumber) *BandwidthSample {
+ sentPacketState := s.connectionStats.Get(lastAckedPacket)
+ if sentPacketState == nil {
+ return NewBandwidthSample()
+ }
+
+ sample := s.onPacketAckedInner(ackTime, lastAckedPacket, sentPacketState)
+ s.connectionStats.Remove(lastAckedPacket)
+
+ return sample
+}
+
+// onPacketAckedInner Handles the actual bandwidth calculations, whereas the outer method handles
+// retrieving and removing |sentPacket|.
+func (s *BandwidthSampler) onPacketAckedInner(ackTime time.Time, lastAckedPacket congestion.PacketNumber, sentPacket *ConnectionStateOnSentPacket) *BandwidthSample {
+ s.totalBytesAcked += sentPacket.size
+
+ s.totalBytesSentAtLastAckedPacket = sentPacket.sendTimeState.totalBytesSent
+ s.lastAckedPacketSentTime = sentPacket.sendTime
+ s.lastAckedPacketAckTime = ackTime
+
+ // Exit app-limited phase once a packet that was sent while the connection is
+ // not app-limited is acknowledged.
+ if s.isAppLimited && lastAckedPacket > s.endOfAppLimitedPhase {
+ s.isAppLimited = false
+ }
+
+ // There might have been no packets acknowledged at the moment when the
+ // current packet was sent. In that case, there is no bandwidth sample to
+ // make.
+ if sentPacket.lastAckedPacketSentTime.IsZero() {
+ return NewBandwidthSample()
+ }
+
+ // Infinite rate indicates that the sampler is supposed to discard the
+ // current send rate sample and use only the ack rate.
+ sendRate := InfiniteBandwidth
+ if sentPacket.sendTime.After(sentPacket.lastAckedPacketSentTime) {
+ sendRate = BandwidthFromDelta(sentPacket.sendTimeState.totalBytesSent-sentPacket.totalBytesSentAtLastAckedPacket, sentPacket.sendTime.Sub(sentPacket.lastAckedPacketSentTime))
+ }
+
+ // During the slope calculation, ensure that ack time of the current packet is
+ // always larger than the time of the previous packet, otherwise division by
+ // zero or integer underflow can occur.
+ if !ackTime.After(sentPacket.lastAckedPacketAckTime) {
+ // TODO(wub): Compare this code count before and after fixing clock jitter
+ // issue.
+ // if sentPacket.lastAckedPacketAckTime.Equal(sentPacket.sendTime) {
+ // This is the 1st packet after quiescense.
+ // QUIC_CODE_COUNT_N(quic_prev_ack_time_larger_than_current_ack_time, 1, 2);
+ // } else {
+ // QUIC_CODE_COUNT_N(quic_prev_ack_time_larger_than_current_ack_time, 2, 2);
+ // }
+
+ return NewBandwidthSample()
+ }
+
+ ackRate := BandwidthFromDelta(s.totalBytesAcked-sentPacket.sendTimeState.totalBytesAcked,
+ ackTime.Sub(sentPacket.lastAckedPacketAckTime))
+
+ // Note: this sample does not account for delayed acknowledgement time. This
+ // means that the RTT measurements here can be artificially high, especially
+ // on low bandwidth connections.
+ sample := &BandwidthSample{
+ bandwidth: minBandwidth(sendRate, ackRate),
+ rtt: ackTime.Sub(sentPacket.sendTime),
+ }
+
+ SentPacketToSendTimeState(sentPacket, &sample.stateAtSend)
+ return sample
+}
+
+// OnCongestionEvent Informs the sampler that a packet is considered lost and it should no
+// longer keep track of it.
+func (s *BandwidthSampler) OnCongestionEvent(packetNumber congestion.PacketNumber) SendTimeState {
+ ok, sentPacket := s.connectionStats.Remove(packetNumber)
+ sendTimeState := SendTimeState{
+ isValid: ok,
+ }
+ if sentPacket != nil {
+ s.totalBytesLost += sentPacket.size
+ SentPacketToSendTimeState(sentPacket, &sendTimeState)
+ }
+
+ return sendTimeState
+}
+
+// OnAppLimited Informs the sampler that the connection is currently app-limited, causing
+// the sampler to enter the app-limited phase. The phase will expire by
+// itself.
+func (s *BandwidthSampler) OnAppLimited() {
+ s.isAppLimited = true
+ s.endOfAppLimitedPhase = s.lastSendPacket
+}
+
+// SentPacketToSendTimeState Copy a subset of the (private) ConnectionStateOnSentPacket to the (public)
+// SendTimeState. Always set send_time_state->is_valid to true.
+func SentPacketToSendTimeState(sentPacket *ConnectionStateOnSentPacket, sendTimeState *SendTimeState) {
+ sendTimeState.isAppLimited = sentPacket.sendTimeState.isAppLimited
+ sendTimeState.totalBytesSent = sentPacket.sendTimeState.totalBytesSent
+ sendTimeState.totalBytesAcked = sentPacket.sendTimeState.totalBytesAcked
+ sendTimeState.totalBytesLost = sentPacket.sendTimeState.totalBytesLost
+ sendTimeState.isValid = true
+}
+
+// ConnectionStates Record of the connection state at the point where each packet in flight was
+// sent, indexed by the packet number.
+// FIXME: using LinkedList replace map to fast remove all the packets lower than the specified packet number.
+type ConnectionStates struct {
+ stats map[congestion.PacketNumber]*ConnectionStateOnSentPacket
+}
+
+func (s *ConnectionStates) Insert(packetNumber congestion.PacketNumber, sentTime time.Time, bytes congestion.ByteCount, sampler *BandwidthSampler) bool {
+ if _, ok := s.stats[packetNumber]; ok {
+ return false
+ }
+
+ s.stats[packetNumber] = NewConnectionStateOnSentPacket(packetNumber, sentTime, bytes, sampler)
+ return true
+}
+
+func (s *ConnectionStates) Get(packetNumber congestion.PacketNumber) *ConnectionStateOnSentPacket {
+ return s.stats[packetNumber]
+}
+
+func (s *ConnectionStates) Remove(packetNumber congestion.PacketNumber) (bool, *ConnectionStateOnSentPacket) {
+ state, ok := s.stats[packetNumber]
+ if ok {
+ delete(s.stats, packetNumber)
+ }
+ return ok, state
+}
+
+func NewConnectionStateOnSentPacket(packetNumber congestion.PacketNumber, sentTime time.Time, bytes congestion.ByteCount, sampler *BandwidthSampler) *ConnectionStateOnSentPacket {
+ return &ConnectionStateOnSentPacket{
+ packetNumber: packetNumber,
+ sendTime: sentTime,
+ size: bytes,
+ lastAckedPacketSentTime: sampler.lastAckedPacketSentTime,
+ lastAckedPacketAckTime: sampler.lastAckedPacketAckTime,
+ totalBytesSentAtLastAckedPacket: sampler.totalBytesSentAtLastAckedPacket,
+ sendTimeState: SendTimeState{
+ isValid: true,
+ isAppLimited: sampler.isAppLimited,
+ totalBytesSent: sampler.totalBytesSent,
+ totalBytesAcked: sampler.totalBytesAcked,
+ totalBytesLost: sampler.totalBytesLost,
+ },
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/bbr_sender.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/bbr_sender.go
new file mode 100644
index 0000000..5a86336
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/bbr_sender.go
@@ -0,0 +1,946 @@
+package congestion
+
+// src from https://quiche.googlesource.com/quiche.git/+/66dea072431f94095dfc3dd2743cb94ef365f7ef/quic/core/congestion_control/bbr_sender.cc
+
+import (
+ "fmt"
+ "math"
+ "time"
+
+ "github.com/metacubex/quic-go"
+ "github.com/metacubex/quic-go/congestion"
+ "github.com/metacubex/randv2"
+)
+
+const (
+ // InitialMaxDatagramSize is the default maximum packet size used in QUIC for congestion window computations in bytes.
+ InitialMaxDatagramSize = 1280
+ InitialPacketSize = 1280
+ InitialCongestionWindow = 32
+ DefaultBBRMaxCongestionWindow = 10000
+)
+
+func GetInitialPacketSize(quicConn quic.Connection) congestion.ByteCount {
+ return congestion.ByteCount(quicConn.Config().InitialPacketSize)
+}
+
+var (
+
+ // Default initial rtt used before any samples are received.
+ InitialRtt = 100 * time.Millisecond
+
+ // The gain used for the STARTUP, equal to 4*ln(2).
+ DefaultHighGain = 2.77
+
+ // The gain used in STARTUP after loss has been detected.
+ // 1.5 is enough to allow for 25% exogenous loss and still observe a 25% growth
+ // in measured bandwidth.
+ StartupAfterLossGain = 1.5
+
+ // The cycle of gains used during the PROBE_BW stage.
+ PacingGain = []float64{1.25, 0.75, 1, 1, 1, 1, 1, 1}
+
+ // The length of the gain cycle.
+ GainCycleLength = len(PacingGain)
+
+ // The size of the bandwidth filter window, in round-trips.
+ BandwidthWindowSize = GainCycleLength + 2
+
+ // The time after which the current min_rtt value expires.
+ MinRttExpiry = 10 * time.Second
+
+ // The minimum time the connection can spend in PROBE_RTT mode.
+ ProbeRttTime = time.Millisecond * 200
+
+ // If the bandwidth does not increase by the factor of |kStartupGrowthTarget|
+ // within |kRoundTripsWithoutGrowthBeforeExitingStartup| rounds, the connection
+ // will exit the STARTUP mode.
+ StartupGrowthTarget = 1.25
+ RoundTripsWithoutGrowthBeforeExitingStartup = int64(3)
+
+ // Coefficient of target congestion window to use when basing PROBE_RTT on BDP.
+ ModerateProbeRttMultiplier = 0.75
+
+ // Coefficient to determine if a new RTT is sufficiently similar to min_rtt that
+ // we don't need to enter PROBE_RTT.
+ SimilarMinRttThreshold = 1.125
+
+ // Congestion window gain for QUIC BBR during PROBE_BW phase.
+ DefaultCongestionWindowGainConst = 2.0
+)
+
+type bbrMode int
+
+const (
+ // Startup phase of the connection.
+ STARTUP = iota
+ // After achieving the highest possible bandwidth during the startup, lower
+ // the pacing rate in order to drain the queue.
+ DRAIN
+ // Cruising mode.
+ PROBE_BW
+ // Temporarily slow down sending in order to empty the buffer and measure
+ // the real minimum RTT.
+ PROBE_RTT
+)
+
+type bbrRecoveryState int
+
+const (
+ // Do not limit.
+ NOT_IN_RECOVERY = iota
+
+ // Allow an extra outstanding byte for each byte acknowledged.
+ CONSERVATION
+
+ // Allow two extra outstanding bytes for each byte acknowledged (slow
+ // start).
+ GROWTH
+)
+
+type bbrSender struct {
+ mode bbrMode
+ clock Clock
+ rttStats congestion.RTTStatsProvider
+ bytesInFlight congestion.ByteCount
+ // return total bytes of unacked packets.
+ //GetBytesInFlight func() congestion.ByteCount
+ // Bandwidth sampler provides BBR with the bandwidth measurements at
+ // individual points.
+ sampler *BandwidthSampler
+ // The number of the round trips that have occurred during the connection.
+ roundTripCount int64
+ // The packet number of the most recently sent packet.
+ lastSendPacket congestion.PacketNumber
+ // Acknowledgement of any packet after |current_round_trip_end_| will cause
+ // the round trip counter to advance.
+ currentRoundTripEnd congestion.PacketNumber
+ // The filter that tracks the maximum bandwidth over the multiple recent
+ // round-trips.
+ maxBandwidth *WindowedFilter
+ // Tracks the maximum number of bytes acked faster than the sending rate.
+ maxAckHeight *WindowedFilter
+ // The time this aggregation started and the number of bytes acked during it.
+ aggregationEpochStartTime time.Time
+ aggregationEpochBytes congestion.ByteCount
+ // Minimum RTT estimate. Automatically expires within 10 seconds (and
+ // triggers PROBE_RTT mode) if no new value is sampled during that period.
+ minRtt time.Duration
+ // The time at which the current value of |min_rtt_| was assigned.
+ minRttTimestamp time.Time
+ // The maximum allowed number of bytes in flight.
+ congestionWindow congestion.ByteCount
+ // The initial value of the |congestion_window_|.
+ initialCongestionWindow congestion.ByteCount
+ // The largest value the |congestion_window_| can achieve.
+ initialMaxCongestionWindow congestion.ByteCount
+ // The smallest value the |congestion_window_| can achieve.
+ //minCongestionWindow congestion.ByteCount
+ // The pacing gain applied during the STARTUP phase.
+ highGain float64
+ // The CWND gain applied during the STARTUP phase.
+ highCwndGain float64
+ // The pacing gain applied during the DRAIN phase.
+ drainGain float64
+ // The current pacing rate of the connection.
+ pacingRate Bandwidth
+ // The gain currently applied to the pacing rate.
+ pacingGain float64
+ // The gain currently applied to the congestion window.
+ congestionWindowGain float64
+ // The gain used for the congestion window during PROBE_BW. Latched from
+ // quic_bbr_cwnd_gain flag.
+ congestionWindowGainConst float64
+ // The number of RTTs to stay in STARTUP mode. Defaults to 3.
+ numStartupRtts int64
+ // If true, exit startup if 1RTT has passed with no bandwidth increase and
+ // the connection is in recovery.
+ exitStartupOnLoss bool
+ // Number of round-trips in PROBE_BW mode, used for determining the current
+ // pacing gain cycle.
+ cycleCurrentOffset int
+ // The time at which the last pacing gain cycle was started.
+ lastCycleStart time.Time
+ // Indicates whether the connection has reached the full bandwidth mode.
+ isAtFullBandwidth bool
+ // Number of rounds during which there was no significant bandwidth increase.
+ roundsWithoutBandwidthGain int64
+ // The bandwidth compared to which the increase is measured.
+ bandwidthAtLastRound Bandwidth
+ // Set to true upon exiting quiescence.
+ exitingQuiescence bool
+ // Time at which PROBE_RTT has to be exited. Setting it to zero indicates
+ // that the time is yet unknown as the number of packets in flight has not
+ // reached the required value.
+ exitProbeRttAt time.Time
+ // Indicates whether a round-trip has passed since PROBE_RTT became active.
+ probeRttRoundPassed bool
+ // Indicates whether the most recent bandwidth sample was marked as
+ // app-limited.
+ lastSampleIsAppLimited bool
+ // Indicates whether any non app-limited samples have been recorded.
+ hasNoAppLimitedSample bool
+ // Indicates app-limited calls should be ignored as long as there's
+ // enough data inflight to see more bandwidth when necessary.
+ flexibleAppLimited bool
+ // Current state of recovery.
+ recoveryState bbrRecoveryState
+ // Receiving acknowledgement of a packet after |end_recovery_at_| will cause
+ // BBR to exit the recovery mode. A value above zero indicates at least one
+ // loss has been detected, so it must not be set back to zero.
+ endRecoveryAt congestion.PacketNumber
+ // A window used to limit the number of bytes in flight during loss recovery.
+ recoveryWindow congestion.ByteCount
+ // If true, consider all samples in recovery app-limited.
+ isAppLimitedRecovery bool
+ // When true, pace at 1.5x and disable packet conservation in STARTUP.
+ slowerStartup bool
+ // When true, disables packet conservation in STARTUP.
+ rateBasedStartup bool
+ // When non-zero, decreases the rate in STARTUP by the total number of bytes
+ // lost in STARTUP divided by CWND.
+ startupRateReductionMultiplier int64
+ // Sum of bytes lost in STARTUP.
+ startupBytesLost congestion.ByteCount
+ // When true, add the most recent ack aggregation measurement during STARTUP.
+ enableAckAggregationDuringStartup bool
+ // When true, expire the windowed ack aggregation values in STARTUP when
+ // bandwidth increases more than 25%.
+ expireAckAggregationInStartup bool
+ // If true, will not exit low gain mode until bytes_in_flight drops below BDP
+ // or it's time for high gain mode.
+ drainToTarget bool
+ // If true, use a CWND of 0.75*BDP during probe_rtt instead of 4 packets.
+ probeRttBasedOnBdp bool
+ // If true, skip probe_rtt and update the timestamp of the existing min_rtt to
+ // now if min_rtt over the last cycle is within 12.5% of the current min_rtt.
+ // Even if the min_rtt is 12.5% too low, the 25% gain cycling and 2x CWND gain
+ // should overcome an overly small min_rtt.
+ probeRttSkippedIfSimilarRtt bool
+ // If true, disable PROBE_RTT entirely as long as the connection was recently
+ // app limited.
+ probeRttDisabledIfAppLimited bool
+ appLimitedSinceLastProbeRtt bool
+ minRttSinceLastProbeRtt time.Duration
+ // Latched value of --quic_always_get_bw_sample_when_acked.
+ alwaysGetBwSampleWhenAcked bool
+
+ pacer *pacer
+
+ maxDatagramSize congestion.ByteCount
+}
+
+func NewBBRSender(
+ clock Clock,
+ initialMaxDatagramSize,
+ initialCongestionWindow,
+ initialMaxCongestionWindow congestion.ByteCount,
+) *bbrSender {
+ b := &bbrSender{
+ mode: STARTUP,
+ clock: clock,
+ sampler: NewBandwidthSampler(),
+ maxBandwidth: NewWindowedFilter(int64(BandwidthWindowSize), MaxFilter),
+ maxAckHeight: NewWindowedFilter(int64(BandwidthWindowSize), MaxFilter),
+ congestionWindow: initialCongestionWindow,
+ initialCongestionWindow: initialCongestionWindow,
+ highGain: DefaultHighGain,
+ highCwndGain: DefaultHighGain,
+ drainGain: 1.0 / DefaultHighGain,
+ pacingGain: 1.0,
+ congestionWindowGain: 1.0,
+ congestionWindowGainConst: DefaultCongestionWindowGainConst,
+ numStartupRtts: RoundTripsWithoutGrowthBeforeExitingStartup,
+ recoveryState: NOT_IN_RECOVERY,
+ recoveryWindow: initialMaxCongestionWindow,
+ minRttSinceLastProbeRtt: InfiniteRTT,
+ maxDatagramSize: initialMaxDatagramSize,
+ }
+ b.pacer = newPacer(b.BandwidthEstimate)
+ return b
+}
+
+func (b *bbrSender) maxCongestionWindow() congestion.ByteCount {
+ return b.maxDatagramSize * DefaultBBRMaxCongestionWindow
+}
+
+func (b *bbrSender) minCongestionWindow() congestion.ByteCount {
+ return b.maxDatagramSize * b.initialCongestionWindow
+}
+
+func (b *bbrSender) SetRTTStatsProvider(provider congestion.RTTStatsProvider) {
+ b.rttStats = provider
+}
+
+func (b *bbrSender) GetBytesInFlight() congestion.ByteCount {
+ return b.bytesInFlight
+}
+
+// TimeUntilSend returns when the next packet should be sent.
+func (b *bbrSender) TimeUntilSend(bytesInFlight congestion.ByteCount) time.Time {
+ b.bytesInFlight = bytesInFlight
+ return b.pacer.TimeUntilSend()
+}
+
+func (b *bbrSender) HasPacingBudget(now time.Time) bool {
+ return b.pacer.Budget(now) >= b.maxDatagramSize
+}
+
+func (b *bbrSender) SetMaxDatagramSize(s congestion.ByteCount) {
+ if s < b.maxDatagramSize {
+ panic(fmt.Sprintf("congestion BUG: decreased max datagram size from %d to %d", b.maxDatagramSize, s))
+ }
+ cwndIsMinCwnd := b.congestionWindow == b.minCongestionWindow()
+ b.maxDatagramSize = s
+ if cwndIsMinCwnd {
+ b.congestionWindow = b.minCongestionWindow()
+ }
+ b.pacer.SetMaxDatagramSize(s)
+}
+
+func (b *bbrSender) OnPacketSent(sentTime time.Time, bytesInFlight congestion.ByteCount, packetNumber congestion.PacketNumber, bytes congestion.ByteCount, isRetransmittable bool) {
+ b.pacer.SentPacket(sentTime, bytes)
+ b.lastSendPacket = packetNumber
+
+ b.bytesInFlight = bytesInFlight
+ if bytesInFlight == 0 && b.sampler.isAppLimited {
+ b.exitingQuiescence = true
+ }
+
+ if b.aggregationEpochStartTime.IsZero() {
+ b.aggregationEpochStartTime = sentTime
+ }
+
+ b.sampler.OnPacketSent(sentTime, packetNumber, bytes, bytesInFlight, isRetransmittable)
+}
+
+func (b *bbrSender) CanSend(bytesInFlight congestion.ByteCount) bool {
+ b.bytesInFlight = bytesInFlight
+ return bytesInFlight < b.GetCongestionWindow()
+}
+
+func (b *bbrSender) GetCongestionWindow() congestion.ByteCount {
+ if b.mode == PROBE_RTT {
+ return b.ProbeRttCongestionWindow()
+ }
+
+ if b.InRecovery() && !(b.rateBasedStartup && b.mode == STARTUP) {
+ return minByteCount(b.congestionWindow, b.recoveryWindow)
+ }
+
+ return b.congestionWindow
+}
+
+func (b *bbrSender) MaybeExitSlowStart() {
+
+}
+
+func (b *bbrSender) OnPacketAcked(number congestion.PacketNumber, ackedBytes congestion.ByteCount, priorInFlight congestion.ByteCount, eventTime time.Time) {
+ // Stub
+}
+
+func (b *bbrSender) OnCongestionEvent(number congestion.PacketNumber, lostBytes congestion.ByteCount, priorInFlight congestion.ByteCount) {
+ // Stub
+}
+
+func (b *bbrSender) OnCongestionEventEx(priorInFlight congestion.ByteCount, eventTime time.Time, ackedPackets []congestion.AckedPacketInfo, lostPackets []congestion.LostPacketInfo) {
+ totalBytesAckedBefore := b.sampler.totalBytesAcked
+ isRoundStart, minRttExpired := false, false
+
+ if lostPackets != nil {
+ b.DiscardLostPackets(lostPackets)
+ }
+
+ // Input the new data into the BBR model of the connection.
+ var excessAcked congestion.ByteCount
+ if len(ackedPackets) > 0 {
+ lastAckedPacket := ackedPackets[len(ackedPackets)-1].PacketNumber
+ isRoundStart = b.UpdateRoundTripCounter(lastAckedPacket)
+ minRttExpired = b.UpdateBandwidthAndMinRtt(eventTime, ackedPackets)
+ b.UpdateRecoveryState(len(lostPackets) > 0, isRoundStart)
+ bytesAcked := b.sampler.totalBytesAcked - totalBytesAckedBefore
+ excessAcked = b.UpdateAckAggregationBytes(eventTime, bytesAcked)
+ }
+
+ // Handle logic specific to PROBE_BW mode.
+ if b.mode == PROBE_BW {
+ b.UpdateGainCyclePhase(eventTime, priorInFlight, len(lostPackets) > 0)
+ }
+
+ // Handle logic specific to STARTUP and DRAIN modes.
+ if isRoundStart && !b.isAtFullBandwidth {
+ b.CheckIfFullBandwidthReached()
+ }
+ b.MaybeExitStartupOrDrain(eventTime)
+
+ // Handle logic specific to PROBE_RTT.
+ b.MaybeEnterOrExitProbeRtt(eventTime, isRoundStart, minRttExpired)
+
+ // Calculate number of packets acked and lost.
+ bytesAcked := b.sampler.totalBytesAcked - totalBytesAckedBefore
+ bytesLost := congestion.ByteCount(0)
+ for _, packet := range lostPackets {
+ bytesLost += packet.BytesLost
+ }
+
+ // After the model is updated, recalculate the pacing rate and congestion
+ // window.
+ b.CalculatePacingRate()
+ b.CalculateCongestionWindow(bytesAcked, excessAcked)
+ b.CalculateRecoveryWindow(bytesAcked, bytesLost)
+}
+
+//func (b *bbrSender) SetNumEmulatedConnections(n int) {
+//
+//}
+
+func (b *bbrSender) OnRetransmissionTimeout(packetsRetransmitted bool) {
+
+}
+
+//func (b *bbrSender) OnConnectionMigration() {
+//
+//}
+
+//// Experiments
+//func (b *bbrSender) SetSlowStartLargeReduction(enabled bool) {
+//
+//}
+
+//func (b *bbrSender) BandwidthEstimate() Bandwidth {
+// return Bandwidth(b.maxBandwidth.GetBest())
+//}
+
+// BandwidthEstimate returns the current bandwidth estimate
+func (b *bbrSender) BandwidthEstimate() Bandwidth {
+ if b.rttStats == nil {
+ return infBandwidth
+ }
+ srtt := b.rttStats.SmoothedRTT()
+ if srtt == 0 {
+ // If we haven't measured an rtt, the bandwidth estimate is unknown.
+ return infBandwidth
+ }
+ return BandwidthFromDelta(b.GetCongestionWindow(), srtt)
+}
+
+//func (b *bbrSender) HybridSlowStart() *HybridSlowStart {
+// return nil
+//}
+
+//func (b *bbrSender) SlowstartThreshold() congestion.ByteCount {
+// return 0
+//}
+
+//func (b *bbrSender) RenoBeta() float32 {
+// return 0.0
+//}
+
+func (b *bbrSender) InRecovery() bool {
+ return b.recoveryState != NOT_IN_RECOVERY
+}
+
+func (b *bbrSender) InSlowStart() bool {
+ return b.mode == STARTUP
+}
+
+//func (b *bbrSender) ShouldSendProbingPacket() bool {
+// if b.pacingGain <= 1 {
+// return false
+// }
+// // TODO(b/77975811): If the pipe is highly under-utilized, consider not
+// // sending a probing transmission, because the extra bandwidth is not needed.
+// // If flexible_app_limited is enabled, check if the pipe is sufficiently full.
+// if b.flexibleAppLimited {
+// return !b.IsPipeSufficientlyFull()
+// } else {
+// return true
+// }
+//}
+
+//func (b *bbrSender) IsPipeSufficientlyFull() bool {
+// // See if we need more bytes in flight to see more bandwidth.
+// if b.mode == STARTUP {
+// // STARTUP exits if it doesn't observe a 25% bandwidth increase, so the CWND
+// // must be more than 25% above the target.
+// return b.GetBytesInFlight() >= b.GetTargetCongestionWindow(1.5)
+// }
+// if b.pacingGain > 1 {
+// // Super-unity PROBE_BW doesn't exit until 1.25 * BDP is achieved.
+// return b.GetBytesInFlight() >= b.GetTargetCongestionWindow(b.pacingGain)
+// }
+// // If bytes_in_flight are above the target congestion window, it should be
+// // possible to observe the same or more bandwidth if it's available.
+// return b.GetBytesInFlight() >= b.GetTargetCongestionWindow(1.1)
+//}
+
+//func (b *bbrSender) SetFromConfig() {
+// // TODO: not impl.
+//}
+
+func (b *bbrSender) UpdateRoundTripCounter(lastAckedPacket congestion.PacketNumber) bool {
+ if b.currentRoundTripEnd == 0 || lastAckedPacket > b.currentRoundTripEnd {
+ b.currentRoundTripEnd = lastAckedPacket
+ b.roundTripCount++
+ // if b.rttStats != nil && b.InSlowStart() {
+ // TODO: ++stats_->slowstart_num_rtts;
+ // }
+ return true
+ }
+ return false
+}
+
+func (b *bbrSender) UpdateBandwidthAndMinRtt(now time.Time, ackedPackets []congestion.AckedPacketInfo) bool {
+ sampleMinRtt := InfiniteRTT
+
+ for _, packet := range ackedPackets {
+ if !b.alwaysGetBwSampleWhenAcked && packet.BytesAcked == 0 {
+ // Skip acked packets with 0 in flight bytes when updating bandwidth.
+ return false
+ }
+ bandwidthSample := b.sampler.OnPacketAcked(now, packet.PacketNumber)
+ if b.alwaysGetBwSampleWhenAcked && !bandwidthSample.stateAtSend.isValid {
+ // From the sampler's perspective, the packet has never been sent, or the
+ // packet has been acked or marked as lost previously.
+ return false
+ }
+ b.lastSampleIsAppLimited = bandwidthSample.stateAtSend.isAppLimited
+ // has_non_app_limited_sample_ |=
+ // !bandwidth_sample.state_at_send.is_app_limited;
+ if !bandwidthSample.stateAtSend.isAppLimited {
+ b.hasNoAppLimitedSample = true
+ }
+ if bandwidthSample.rtt > 0 {
+ sampleMinRtt = minRtt(sampleMinRtt, bandwidthSample.rtt)
+ }
+ if !bandwidthSample.stateAtSend.isAppLimited || bandwidthSample.bandwidth > b.BandwidthEstimate() {
+ b.maxBandwidth.Update(int64(bandwidthSample.bandwidth), b.roundTripCount)
+ }
+ }
+
+ // If none of the RTT samples are valid, return immediately.
+ if sampleMinRtt == InfiniteRTT {
+ return false
+ }
+
+ b.minRttSinceLastProbeRtt = minRtt(b.minRttSinceLastProbeRtt, sampleMinRtt)
+ // Do not expire min_rtt if none was ever available.
+ minRttExpired := b.minRtt > 0 && (now.After(b.minRttTimestamp.Add(MinRttExpiry)))
+ if minRttExpired || sampleMinRtt < b.minRtt || b.minRtt == 0 {
+ if minRttExpired && b.ShouldExtendMinRttExpiry() {
+ minRttExpired = false
+ } else {
+ b.minRtt = sampleMinRtt
+ }
+ b.minRttTimestamp = now
+ // Reset since_last_probe_rtt fields.
+ b.minRttSinceLastProbeRtt = InfiniteRTT
+ b.appLimitedSinceLastProbeRtt = false
+ }
+
+ return minRttExpired
+}
+
+func (b *bbrSender) ShouldExtendMinRttExpiry() bool {
+ if b.probeRttDisabledIfAppLimited && b.appLimitedSinceLastProbeRtt {
+ // Extend the current min_rtt if we've been app limited recently.
+ return true
+ }
+
+ minRttIncreasedSinceLastProbe := b.minRttSinceLastProbeRtt > time.Duration(float64(b.minRtt)*SimilarMinRttThreshold)
+ if b.probeRttSkippedIfSimilarRtt && b.appLimitedSinceLastProbeRtt && !minRttIncreasedSinceLastProbe {
+ // Extend the current min_rtt if we've been app limited recently and an rtt
+ // has been measured in that time that's less than 12.5% more than the
+ // current min_rtt.
+ return true
+ }
+
+ return false
+}
+
+func (b *bbrSender) DiscardLostPackets(lostPackets []congestion.LostPacketInfo) {
+ for _, packet := range lostPackets {
+ b.sampler.OnCongestionEvent(packet.PacketNumber)
+ if b.mode == STARTUP {
+ // if b.rttStats != nil {
+ // TODO: slow start.
+ // }
+ if b.startupRateReductionMultiplier != 0 {
+ b.startupBytesLost += packet.BytesLost
+ }
+ }
+ }
+}
+
+func (b *bbrSender) UpdateRecoveryState(hasLosses, isRoundStart bool) {
+ // Exit recovery when there are no losses for a round.
+ if !hasLosses {
+ b.endRecoveryAt = b.lastSendPacket
+ }
+ switch b.recoveryState {
+ case NOT_IN_RECOVERY:
+ // Enter conservation on the first loss.
+ if hasLosses {
+ b.recoveryState = CONSERVATION
+ // This will cause the |recovery_window_| to be set to the correct
+ // value in CalculateRecoveryWindow().
+ b.recoveryWindow = 0
+ // Since the conservation phase is meant to be lasting for a whole
+ // round, extend the current round as if it were started right now.
+ b.currentRoundTripEnd = b.lastSendPacket
+ if false && b.lastSampleIsAppLimited {
+ b.isAppLimitedRecovery = true
+ }
+ }
+ case CONSERVATION:
+ if isRoundStart {
+ b.recoveryState = GROWTH
+ }
+ fallthrough
+ case GROWTH:
+ // Exit recovery if appropriate.
+ if !hasLosses && b.lastSendPacket > b.endRecoveryAt {
+ b.recoveryState = NOT_IN_RECOVERY
+ b.isAppLimitedRecovery = false
+ }
+ }
+
+ if b.recoveryState != NOT_IN_RECOVERY && b.isAppLimitedRecovery {
+ b.sampler.OnAppLimited()
+ }
+}
+
+func (b *bbrSender) UpdateAckAggregationBytes(ackTime time.Time, ackedBytes congestion.ByteCount) congestion.ByteCount {
+ // Compute how many bytes are expected to be delivered, assuming max bandwidth
+ // is correct.
+ expectedAckedBytes := congestion.ByteCount(b.maxBandwidth.GetBest()) *
+ congestion.ByteCount((ackTime.Sub(b.aggregationEpochStartTime)))
+ // Reset the current aggregation epoch as soon as the ack arrival rate is less
+ // than or equal to the max bandwidth.
+ if b.aggregationEpochBytes <= expectedAckedBytes {
+ // Reset to start measuring a new aggregation epoch.
+ b.aggregationEpochBytes = ackedBytes
+ b.aggregationEpochStartTime = ackTime
+ return 0
+ }
+ // Compute how many extra bytes were delivered vs max bandwidth.
+ // Include the bytes most recently acknowledged to account for stretch acks.
+ b.aggregationEpochBytes += ackedBytes
+ b.maxAckHeight.Update(int64(b.aggregationEpochBytes-expectedAckedBytes), b.roundTripCount)
+ return b.aggregationEpochBytes - expectedAckedBytes
+}
+
+func (b *bbrSender) UpdateGainCyclePhase(now time.Time, priorInFlight congestion.ByteCount, hasLosses bool) {
+ bytesInFlight := b.GetBytesInFlight()
+ // In most cases, the cycle is advanced after an RTT passes.
+ shouldAdvanceGainCycling := now.Sub(b.lastCycleStart) > b.GetMinRtt()
+
+ // If the pacing gain is above 1.0, the connection is trying to probe the
+ // bandwidth by increasing the number of bytes in flight to at least
+ // pacing_gain * BDP. Make sure that it actually reaches the target, as long
+ // as there are no losses suggesting that the buffers are not able to hold
+ // that much.
+ if b.pacingGain > 1.0 && !hasLosses && priorInFlight < b.GetTargetCongestionWindow(b.pacingGain) {
+ shouldAdvanceGainCycling = false
+ }
+ // If pacing gain is below 1.0, the connection is trying to drain the extra
+ // queue which could have been incurred by probing prior to it. If the number
+ // of bytes in flight falls down to the estimated BDP value earlier, conclude
+ // that the queue has been successfully drained and exit this cycle early.
+ if b.pacingGain < 1.0 && bytesInFlight <= b.GetTargetCongestionWindow(1.0) {
+ shouldAdvanceGainCycling = true
+ }
+
+ if shouldAdvanceGainCycling {
+ b.cycleCurrentOffset = (b.cycleCurrentOffset + 1) % GainCycleLength
+ b.lastCycleStart = now
+ // Stay in low gain mode until the target BDP is hit.
+ // Low gain mode will be exited immediately when the target BDP is achieved.
+ if b.drainToTarget && b.pacingGain < 1.0 && PacingGain[b.cycleCurrentOffset] == 1.0 &&
+ bytesInFlight > b.GetTargetCongestionWindow(1.0) {
+ return
+ }
+ b.pacingGain = PacingGain[b.cycleCurrentOffset]
+ }
+}
+
+func (b *bbrSender) GetTargetCongestionWindow(gain float64) congestion.ByteCount {
+ bdp := congestion.ByteCount(b.GetMinRtt()) * congestion.ByteCount(b.BandwidthEstimate())
+ congestionWindow := congestion.ByteCount(gain * float64(bdp))
+
+ // BDP estimate will be zero if no bandwidth samples are available yet.
+ if congestionWindow == 0 {
+ congestionWindow = congestion.ByteCount(gain * float64(b.initialCongestionWindow))
+ }
+
+ return maxByteCount(congestionWindow, b.minCongestionWindow())
+}
+
+func (b *bbrSender) CheckIfFullBandwidthReached() {
+ if b.lastSampleIsAppLimited {
+ return
+ }
+
+ target := Bandwidth(float64(b.bandwidthAtLastRound) * StartupGrowthTarget)
+ if b.BandwidthEstimate() >= target {
+ b.bandwidthAtLastRound = b.BandwidthEstimate()
+ b.roundsWithoutBandwidthGain = 0
+ if b.expireAckAggregationInStartup {
+ // Expire old excess delivery measurements now that bandwidth increased.
+ b.maxAckHeight.Reset(0, b.roundTripCount)
+ }
+ return
+ }
+ b.roundsWithoutBandwidthGain++
+ if b.roundsWithoutBandwidthGain >= b.numStartupRtts || (b.exitStartupOnLoss && b.InRecovery()) {
+ b.isAtFullBandwidth = true
+ }
+}
+
+func (b *bbrSender) MaybeExitStartupOrDrain(now time.Time) {
+ if b.mode == STARTUP && b.isAtFullBandwidth {
+ b.OnExitStartup(now)
+ b.mode = DRAIN
+ b.pacingGain = b.drainGain
+ b.congestionWindowGain = b.highCwndGain
+ }
+ if b.mode == DRAIN && b.GetBytesInFlight() <= b.GetTargetCongestionWindow(1) {
+ b.EnterProbeBandwidthMode(now)
+ }
+}
+
+func (b *bbrSender) EnterProbeBandwidthMode(now time.Time) {
+ b.mode = PROBE_BW
+ b.congestionWindowGain = b.congestionWindowGainConst
+
+ // Pick a random offset for the gain cycle out of {0, 2..7} range. 1 is
+ // excluded because in that case increased gain and decreased gain would not
+ // follow each other.
+ b.cycleCurrentOffset = randv2.Int() % (GainCycleLength - 1)
+ if b.cycleCurrentOffset >= 1 {
+ b.cycleCurrentOffset += 1
+ }
+
+ b.lastCycleStart = now
+ b.pacingGain = PacingGain[b.cycleCurrentOffset]
+}
+
+func (b *bbrSender) MaybeEnterOrExitProbeRtt(now time.Time, isRoundStart, minRttExpired bool) {
+ if minRttExpired && !b.exitingQuiescence && b.mode != PROBE_RTT {
+ if b.InSlowStart() {
+ b.OnExitStartup(now)
+ }
+ b.mode = PROBE_RTT
+ b.pacingGain = 1.0
+ // Do not decide on the time to exit PROBE_RTT until the |bytes_in_flight|
+ // is at the target small value.
+ b.exitProbeRttAt = time.Time{}
+ }
+
+ if b.mode == PROBE_RTT {
+ b.sampler.OnAppLimited()
+ if b.exitProbeRttAt.IsZero() {
+ // If the window has reached the appropriate size, schedule exiting
+ // PROBE_RTT. The CWND during PROBE_RTT is kMinimumCongestionWindow, but
+ // we allow an extra packet since QUIC checks CWND before sending a
+ // packet.
+ if b.GetBytesInFlight() < b.ProbeRttCongestionWindow()+b.maxDatagramSize {
+ b.exitProbeRttAt = now.Add(ProbeRttTime)
+ b.probeRttRoundPassed = false
+ }
+ } else {
+ if isRoundStart {
+ b.probeRttRoundPassed = true
+ }
+ if !now.Before(b.exitProbeRttAt) && b.probeRttRoundPassed {
+ b.minRttTimestamp = now
+ if !b.isAtFullBandwidth {
+ b.EnterStartupMode(now)
+ } else {
+ b.EnterProbeBandwidthMode(now)
+ }
+ }
+ }
+ }
+ b.exitingQuiescence = false
+}
+
+func (b *bbrSender) ProbeRttCongestionWindow() congestion.ByteCount {
+ if b.probeRttBasedOnBdp {
+ return b.GetTargetCongestionWindow(ModerateProbeRttMultiplier)
+ } else {
+ return b.minCongestionWindow()
+ }
+}
+
+func (b *bbrSender) EnterStartupMode(now time.Time) {
+ // if b.rttStats != nil {
+ // TODO: slow start.
+ // }
+ b.mode = STARTUP
+ b.pacingGain = b.highGain
+ b.congestionWindowGain = b.highCwndGain
+}
+
+func (b *bbrSender) OnExitStartup(now time.Time) {
+ if b.rttStats == nil {
+ return
+ }
+ // TODO: slow start.
+}
+
+func (b *bbrSender) CalculatePacingRate() {
+ if b.BandwidthEstimate() == 0 {
+ return
+ }
+
+ targetRate := Bandwidth(b.pacingGain * float64(b.BandwidthEstimate()))
+ if b.isAtFullBandwidth {
+ b.pacingRate = targetRate
+ return
+ }
+
+ // Pace at the rate of initial_window / RTT as soon as RTT measurements are
+ // available.
+ if b.pacingRate == 0 && b.rttStats.MinRTT() > 0 {
+ b.pacingRate = BandwidthFromDelta(b.initialCongestionWindow, b.rttStats.MinRTT())
+ return
+ }
+ // Slow the pacing rate in STARTUP once loss has ever been detected.
+ hasEverDetectedLoss := b.endRecoveryAt > 0
+ if b.slowerStartup && hasEverDetectedLoss && b.hasNoAppLimitedSample {
+ b.pacingRate = Bandwidth(StartupAfterLossGain * float64(b.BandwidthEstimate()))
+ return
+ }
+
+ // Slow the pacing rate in STARTUP by the bytes_lost / CWND.
+ if b.startupRateReductionMultiplier != 0 && hasEverDetectedLoss && b.hasNoAppLimitedSample {
+ b.pacingRate = Bandwidth((1.0 - (float64(b.startupBytesLost) * float64(b.startupRateReductionMultiplier) / float64(b.congestionWindow))) * float64(targetRate))
+ // Ensure the pacing rate doesn't drop below the startup growth target times
+ // the bandwidth estimate.
+ b.pacingRate = maxBandwidth(b.pacingRate, Bandwidth(StartupGrowthTarget*float64(b.BandwidthEstimate())))
+ return
+ }
+
+ // Do not decrease the pacing rate during startup.
+ b.pacingRate = maxBandwidth(b.pacingRate, targetRate)
+}
+
+func (b *bbrSender) CalculateCongestionWindow(ackedBytes, excessAcked congestion.ByteCount) {
+ if b.mode == PROBE_RTT {
+ return
+ }
+
+ targetWindow := b.GetTargetCongestionWindow(b.congestionWindowGain)
+ if b.isAtFullBandwidth {
+ // Add the max recently measured ack aggregation to CWND.
+ targetWindow += congestion.ByteCount(b.maxAckHeight.GetBest())
+ } else if b.enableAckAggregationDuringStartup {
+ // Add the most recent excess acked. Because CWND never decreases in
+ // STARTUP, this will automatically create a very localized max filter.
+ targetWindow += excessAcked
+ }
+
+ // Instead of immediately setting the target CWND as the new one, BBR grows
+ // the CWND towards |target_window| by only increasing it |bytes_acked| at a
+ // time.
+ addBytesAcked := true || !b.InRecovery()
+ if b.isAtFullBandwidth {
+ b.congestionWindow = minByteCount(targetWindow, b.congestionWindow+ackedBytes)
+ } else if addBytesAcked && (b.congestionWindow < targetWindow || b.sampler.totalBytesAcked < b.initialCongestionWindow) {
+ // If the connection is not yet out of startup phase, do not decrease the
+ // window.
+ b.congestionWindow += ackedBytes
+ }
+
+ // Enforce the limits on the congestion window.
+ b.congestionWindow = maxByteCount(b.congestionWindow, b.minCongestionWindow())
+ b.congestionWindow = minByteCount(b.congestionWindow, b.maxCongestionWindow())
+}
+
+func (b *bbrSender) CalculateRecoveryWindow(ackedBytes, lostBytes congestion.ByteCount) {
+ if b.rateBasedStartup && b.mode == STARTUP {
+ return
+ }
+
+ if b.recoveryState == NOT_IN_RECOVERY {
+ return
+ }
+
+ // Set up the initial recovery window.
+ if b.recoveryWindow == 0 {
+ b.recoveryWindow = maxByteCount(b.GetBytesInFlight()+ackedBytes, b.minCongestionWindow())
+ return
+ }
+
+ // Remove losses from the recovery window, while accounting for a potential
+ // integer underflow.
+ if b.recoveryWindow >= lostBytes {
+ b.recoveryWindow -= lostBytes
+ } else {
+ b.recoveryWindow = congestion.ByteCount(b.maxDatagramSize)
+ }
+ // In CONSERVATION mode, just subtracting losses is sufficient. In GROWTH,
+ // release additional |bytes_acked| to achieve a slow-start-like behavior.
+ if b.recoveryState == GROWTH {
+ b.recoveryWindow += ackedBytes
+ }
+ // Sanity checks. Ensure that we always allow to send at least an MSS or
+ // |bytes_acked| in response, whichever is larger.
+ b.recoveryWindow = maxByteCount(b.recoveryWindow, b.GetBytesInFlight()+ackedBytes)
+ b.recoveryWindow = maxByteCount(b.recoveryWindow, b.minCongestionWindow())
+}
+
+var _ congestion.CongestionControl = (*bbrSender)(nil)
+
+func (b *bbrSender) GetMinRtt() time.Duration {
+ if b.minRtt > 0 {
+ return b.minRtt
+ } else {
+ return InitialRtt
+ }
+}
+
+func minRtt(a, b time.Duration) time.Duration {
+ if a < b {
+ return a
+ } else {
+ return b
+ }
+}
+
+func minBandwidth(a, b Bandwidth) Bandwidth {
+ if a < b {
+ return a
+ } else {
+ return b
+ }
+}
+
+func maxBandwidth(a, b Bandwidth) Bandwidth {
+ if a > b {
+ return a
+ } else {
+ return b
+ }
+}
+
+func maxByteCount(a, b congestion.ByteCount) congestion.ByteCount {
+ if a > b {
+ return a
+ } else {
+ return b
+ }
+}
+
+func minByteCount(a, b congestion.ByteCount) congestion.ByteCount {
+ if a < b {
+ return a
+ } else {
+ return b
+ }
+}
+
+var (
+ InfiniteRTT = time.Duration(math.MaxInt64)
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/clock.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/clock.go
new file mode 100644
index 0000000..405fae7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/clock.go
@@ -0,0 +1,18 @@
+package congestion
+
+import "time"
+
+// A Clock returns the current time
+type Clock interface {
+ Now() time.Time
+}
+
+// DefaultClock implements the Clock interface using the Go stdlib clock.
+type DefaultClock struct{}
+
+var _ Clock = DefaultClock{}
+
+// Now gets the current time
+func (DefaultClock) Now() time.Time {
+ return time.Now()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/cubic.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/cubic.go
new file mode 100644
index 0000000..a9bed43
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/cubic.go
@@ -0,0 +1,213 @@
+package congestion
+
+import (
+ "math"
+ "time"
+
+ "github.com/metacubex/quic-go/congestion"
+)
+
+// This cubic implementation is based on the one found in Chromiums's QUIC
+// implementation, in the files net/quic/congestion_control/cubic.{hh,cc}.
+
+// Constants based on TCP defaults.
+// The following constants are in 2^10 fractions of a second instead of ms to
+// allow a 10 shift right to divide.
+
+// 1024*1024^3 (first 1024 is from 0.100^3)
+// where 0.100 is 100 ms which is the scaling round trip time.
+const (
+ cubeScale = 40
+ cubeCongestionWindowScale = 410
+ cubeFactor congestion.ByteCount = 1 << cubeScale / cubeCongestionWindowScale / maxDatagramSize
+ // TODO: when re-enabling cubic, make sure to use the actual packet size here
+ maxDatagramSize = congestion.ByteCount(InitialPacketSize)
+)
+
+const defaultNumConnections = 1
+
+// Default Cubic backoff factor
+const beta float32 = 0.7
+
+// Additional backoff factor when loss occurs in the concave part of the Cubic
+// curve. This additional backoff factor is expected to give up bandwidth to
+// new concurrent flows and speed up convergence.
+const betaLastMax float32 = 0.85
+
+// Cubic implements the cubic algorithm from TCP
+type Cubic struct {
+ clock Clock
+
+ // Number of connections to simulate.
+ numConnections int
+
+ // Time when this cycle started, after last loss event.
+ epoch time.Time
+
+ // Max congestion window used just before last loss event.
+ // Note: to improve fairness to other streams an additional back off is
+ // applied to this value if the new value is below our latest value.
+ lastMaxCongestionWindow congestion.ByteCount
+
+ // Number of acked bytes since the cycle started (epoch).
+ ackedBytesCount congestion.ByteCount
+
+ // TCP Reno equivalent congestion window in packets.
+ estimatedTCPcongestionWindow congestion.ByteCount
+
+ // Origin point of cubic function.
+ originPointCongestionWindow congestion.ByteCount
+
+ // Time to origin point of cubic function in 2^10 fractions of a second.
+ timeToOriginPoint uint32
+
+ // Last congestion window in packets computed by cubic function.
+ lastTargetCongestionWindow congestion.ByteCount
+}
+
+// NewCubic returns a new Cubic instance
+func NewCubic(clock Clock) *Cubic {
+ c := &Cubic{
+ clock: clock,
+ numConnections: defaultNumConnections,
+ }
+ c.Reset()
+ return c
+}
+
+// Reset is called after a timeout to reset the cubic state
+func (c *Cubic) Reset() {
+ c.epoch = time.Time{}
+ c.lastMaxCongestionWindow = 0
+ c.ackedBytesCount = 0
+ c.estimatedTCPcongestionWindow = 0
+ c.originPointCongestionWindow = 0
+ c.timeToOriginPoint = 0
+ c.lastTargetCongestionWindow = 0
+}
+
+func (c *Cubic) alpha() float32 {
+ // TCPFriendly alpha is described in Section 3.3 of the CUBIC paper. Note that
+ // beta here is a cwnd multiplier, and is equal to 1-beta from the paper.
+ // We derive the equivalent alpha for an N-connection emulation as:
+ b := c.beta()
+ return 3 * float32(c.numConnections) * float32(c.numConnections) * (1 - b) / (1 + b)
+}
+
+func (c *Cubic) beta() float32 {
+ // kNConnectionBeta is the backoff factor after loss for our N-connection
+ // emulation, which emulates the effective backoff of an ensemble of N
+ // TCP-Reno connections on a single loss event. The effective multiplier is
+ // computed as:
+ return (float32(c.numConnections) - 1 + beta) / float32(c.numConnections)
+}
+
+func (c *Cubic) betaLastMax() float32 {
+ // betaLastMax is the additional backoff factor after loss for our
+ // N-connection emulation, which emulates the additional backoff of
+ // an ensemble of N TCP-Reno connections on a single loss event. The
+ // effective multiplier is computed as:
+ return (float32(c.numConnections) - 1 + betaLastMax) / float32(c.numConnections)
+}
+
+// OnApplicationLimited is called on ack arrival when sender is unable to use
+// the available congestion window. Resets Cubic state during quiescence.
+func (c *Cubic) OnApplicationLimited() {
+ // When sender is not using the available congestion window, the window does
+ // not grow. But to be RTT-independent, Cubic assumes that the sender has been
+ // using the entire window during the time since the beginning of the current
+ // "epoch" (the end of the last loss recovery period). Since
+ // application-limited periods break this assumption, we reset the epoch when
+ // in such a period. This reset effectively freezes congestion window growth
+ // through application-limited periods and allows Cubic growth to continue
+ // when the entire window is being used.
+ c.epoch = time.Time{}
+}
+
+// CongestionWindowAfterPacketLoss computes a new congestion window to use after
+// a loss event. Returns the new congestion window in packets. The new
+// congestion window is a multiplicative decrease of our current window.
+func (c *Cubic) CongestionWindowAfterPacketLoss(currentCongestionWindow congestion.ByteCount) congestion.ByteCount {
+ if currentCongestionWindow+maxDatagramSize < c.lastMaxCongestionWindow {
+ // We never reached the old max, so assume we are competing with another
+ // flow. Use our extra back off factor to allow the other flow to go up.
+ c.lastMaxCongestionWindow = congestion.ByteCount(c.betaLastMax() * float32(currentCongestionWindow))
+ } else {
+ c.lastMaxCongestionWindow = currentCongestionWindow
+ }
+ c.epoch = time.Time{} // Reset time.
+ return congestion.ByteCount(float32(currentCongestionWindow) * c.beta())
+}
+
+// CongestionWindowAfterAck computes a new congestion window to use after a received ACK.
+// Returns the new congestion window in packets. The new congestion window
+// follows a cubic function that depends on the time passed since last
+// packet loss.
+func (c *Cubic) CongestionWindowAfterAck(
+ ackedBytes congestion.ByteCount,
+ currentCongestionWindow congestion.ByteCount,
+ delayMin time.Duration,
+ eventTime time.Time,
+) congestion.ByteCount {
+ c.ackedBytesCount += ackedBytes
+
+ if c.epoch.IsZero() {
+ // First ACK after a loss event.
+ c.epoch = eventTime // Start of epoch.
+ c.ackedBytesCount = ackedBytes // Reset count.
+ // Reset estimated_tcp_congestion_window_ to be in sync with cubic.
+ c.estimatedTCPcongestionWindow = currentCongestionWindow
+ if c.lastMaxCongestionWindow <= currentCongestionWindow {
+ c.timeToOriginPoint = 0
+ c.originPointCongestionWindow = currentCongestionWindow
+ } else {
+ c.timeToOriginPoint = uint32(math.Cbrt(float64(cubeFactor * (c.lastMaxCongestionWindow - currentCongestionWindow))))
+ c.originPointCongestionWindow = c.lastMaxCongestionWindow
+ }
+ }
+
+ // Change the time unit from microseconds to 2^10 fractions per second. Take
+ // the round trip time in account. This is done to allow us to use shift as a
+ // divide operator.
+ elapsedTime := int64(eventTime.Add(delayMin).Sub(c.epoch)/time.Microsecond) << 10 / (1000 * 1000)
+
+ // Right-shifts of negative, signed numbers have implementation-dependent
+ // behavior, so force the offset to be positive, as is done in the kernel.
+ offset := int64(c.timeToOriginPoint) - elapsedTime
+ if offset < 0 {
+ offset = -offset
+ }
+
+ deltaCongestionWindow := congestion.ByteCount(cubeCongestionWindowScale*offset*offset*offset) * maxDatagramSize >> cubeScale
+ var targetCongestionWindow congestion.ByteCount
+ if elapsedTime > int64(c.timeToOriginPoint) {
+ targetCongestionWindow = c.originPointCongestionWindow + deltaCongestionWindow
+ } else {
+ targetCongestionWindow = c.originPointCongestionWindow - deltaCongestionWindow
+ }
+ // Limit the CWND increase to half the acked bytes.
+ targetCongestionWindow = Min(targetCongestionWindow, currentCongestionWindow+c.ackedBytesCount/2)
+
+ // Increase the window by approximately Alpha * 1 MSS of bytes every
+ // time we ack an estimated tcp window of bytes. For small
+ // congestion windows (less than 25), the formula below will
+ // increase slightly slower than linearly per estimated tcp window
+ // of bytes.
+ c.estimatedTCPcongestionWindow += congestion.ByteCount(float32(c.ackedBytesCount) * c.alpha() * float32(maxDatagramSize) / float32(c.estimatedTCPcongestionWindow))
+ c.ackedBytesCount = 0
+
+ // We have a new cubic congestion window.
+ c.lastTargetCongestionWindow = targetCongestionWindow
+
+ // Compute target congestion_window based on cubic target and estimated TCP
+ // congestion_window, use highest (fastest).
+ if targetCongestionWindow < c.estimatedTCPcongestionWindow {
+ targetCongestionWindow = c.estimatedTCPcongestionWindow
+ }
+ return targetCongestionWindow
+}
+
+// SetNumConnections sets the number of emulated connections
+func (c *Cubic) SetNumConnections(n int) {
+ c.numConnections = n
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/cubic_sender.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/cubic_sender.go
new file mode 100644
index 0000000..f544cd7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/cubic_sender.go
@@ -0,0 +1,297 @@
+package congestion
+
+import (
+ "fmt"
+ "time"
+
+ "github.com/metacubex/quic-go/congestion"
+)
+
+const (
+ maxBurstPackets = 3
+ renoBeta = 0.7 // Reno backoff factor.
+ minCongestionWindowPackets = 2
+ initialCongestionWindow = 32
+)
+
+const InvalidPacketNumber congestion.PacketNumber = -1
+const MaxCongestionWindowPackets = 20000
+const MaxByteCount = congestion.ByteCount(1<<62 - 1)
+
+type cubicSender struct {
+ hybridSlowStart HybridSlowStart
+ rttStats congestion.RTTStatsProvider
+ cubic *Cubic
+ pacer *pacer
+ clock Clock
+
+ reno bool
+
+ // Track the largest packet that has been sent.
+ largestSentPacketNumber congestion.PacketNumber
+
+ // Track the largest packet that has been acked.
+ largestAckedPacketNumber congestion.PacketNumber
+
+ // Track the largest packet number outstanding when a CWND cutback occurs.
+ largestSentAtLastCutback congestion.PacketNumber
+
+ // Whether the last loss event caused us to exit slowstart.
+ // Used for stats collection of slowstartPacketsLost
+ lastCutbackExitedSlowstart bool
+
+ // Congestion window in bytes.
+ congestionWindow congestion.ByteCount
+
+ // Slow start congestion window in bytes, aka ssthresh.
+ slowStartThreshold congestion.ByteCount
+
+ // ACK counter for the Reno implementation.
+ numAckedPackets uint64
+
+ initialCongestionWindow congestion.ByteCount
+ initialMaxCongestionWindow congestion.ByteCount
+
+ maxDatagramSize congestion.ByteCount
+}
+
+var (
+ _ congestion.CongestionControl = &cubicSender{}
+)
+
+// NewCubicSender makes a new cubic sender
+func NewCubicSender(
+ clock Clock,
+ initialMaxDatagramSize congestion.ByteCount,
+ reno bool,
+) *cubicSender {
+ return newCubicSender(
+ clock,
+ reno,
+ initialMaxDatagramSize,
+ initialCongestionWindow*initialMaxDatagramSize,
+ MaxCongestionWindowPackets*initialMaxDatagramSize,
+ )
+}
+
+func newCubicSender(
+ clock Clock,
+ reno bool,
+ initialMaxDatagramSize,
+ initialCongestionWindow,
+ initialMaxCongestionWindow congestion.ByteCount,
+) *cubicSender {
+ c := &cubicSender{
+ largestSentPacketNumber: InvalidPacketNumber,
+ largestAckedPacketNumber: InvalidPacketNumber,
+ largestSentAtLastCutback: InvalidPacketNumber,
+ initialCongestionWindow: initialCongestionWindow,
+ initialMaxCongestionWindow: initialMaxCongestionWindow,
+ congestionWindow: initialCongestionWindow,
+ slowStartThreshold: MaxByteCount,
+ cubic: NewCubic(clock),
+ clock: clock,
+ reno: reno,
+ maxDatagramSize: initialMaxDatagramSize,
+ }
+ c.pacer = newPacer(c.BandwidthEstimate)
+ return c
+}
+
+func (c *cubicSender) SetRTTStatsProvider(provider congestion.RTTStatsProvider) {
+ c.rttStats = provider
+}
+
+// TimeUntilSend returns when the next packet should be sent.
+func (c *cubicSender) TimeUntilSend(_ congestion.ByteCount) time.Time {
+ return c.pacer.TimeUntilSend()
+}
+
+func (c *cubicSender) HasPacingBudget(now time.Time) bool {
+ return c.pacer.Budget(now) >= c.maxDatagramSize
+}
+
+func (c *cubicSender) maxCongestionWindow() congestion.ByteCount {
+ return c.maxDatagramSize * MaxCongestionWindowPackets
+}
+
+func (c *cubicSender) minCongestionWindow() congestion.ByteCount {
+ return c.maxDatagramSize * minCongestionWindowPackets
+}
+
+func (c *cubicSender) OnPacketSent(
+ sentTime time.Time,
+ _ congestion.ByteCount,
+ packetNumber congestion.PacketNumber,
+ bytes congestion.ByteCount,
+ isRetransmittable bool,
+) {
+ c.pacer.SentPacket(sentTime, bytes)
+ if !isRetransmittable {
+ return
+ }
+ c.largestSentPacketNumber = packetNumber
+ c.hybridSlowStart.OnPacketSent(packetNumber)
+}
+
+func (c *cubicSender) CanSend(bytesInFlight congestion.ByteCount) bool {
+ return bytesInFlight < c.GetCongestionWindow()
+}
+
+func (c *cubicSender) InRecovery() bool {
+ return c.largestAckedPacketNumber != InvalidPacketNumber && c.largestAckedPacketNumber <= c.largestSentAtLastCutback
+}
+
+func (c *cubicSender) InSlowStart() bool {
+ return c.GetCongestionWindow() < c.slowStartThreshold
+}
+
+func (c *cubicSender) GetCongestionWindow() congestion.ByteCount {
+ return c.congestionWindow
+}
+
+func (c *cubicSender) MaybeExitSlowStart() {
+ if c.InSlowStart() &&
+ c.hybridSlowStart.ShouldExitSlowStart(c.rttStats.LatestRTT(), c.rttStats.MinRTT(), c.GetCongestionWindow()/c.maxDatagramSize) {
+ // exit slow start
+ c.slowStartThreshold = c.congestionWindow
+ }
+}
+
+func (c *cubicSender) OnPacketAcked(
+ ackedPacketNumber congestion.PacketNumber,
+ ackedBytes congestion.ByteCount,
+ priorInFlight congestion.ByteCount,
+ eventTime time.Time,
+) {
+ c.largestAckedPacketNumber = Max(ackedPacketNumber, c.largestAckedPacketNumber)
+ if c.InRecovery() {
+ return
+ }
+ c.maybeIncreaseCwnd(ackedPacketNumber, ackedBytes, priorInFlight, eventTime)
+ if c.InSlowStart() {
+ c.hybridSlowStart.OnPacketAcked(ackedPacketNumber)
+ }
+}
+
+func (c *cubicSender) OnCongestionEvent(packetNumber congestion.PacketNumber, lostBytes, priorInFlight congestion.ByteCount) {
+ // TCP NewReno (RFC6582) says that once a loss occurs, any losses in packets
+ // already sent should be treated as a single loss event, since it's expected.
+ if packetNumber <= c.largestSentAtLastCutback {
+ return
+ }
+ c.lastCutbackExitedSlowstart = c.InSlowStart()
+
+ if c.reno {
+ c.congestionWindow = congestion.ByteCount(float64(c.congestionWindow) * renoBeta)
+ } else {
+ c.congestionWindow = c.cubic.CongestionWindowAfterPacketLoss(c.congestionWindow)
+ }
+ if minCwnd := c.minCongestionWindow(); c.congestionWindow < minCwnd {
+ c.congestionWindow = minCwnd
+ }
+ c.slowStartThreshold = c.congestionWindow
+ c.largestSentAtLastCutback = c.largestSentPacketNumber
+ // reset packet count from congestion avoidance mode. We start
+ // counting again when we're out of recovery.
+ c.numAckedPackets = 0
+}
+
+func (b *cubicSender) OnCongestionEventEx(priorInFlight congestion.ByteCount, eventTime time.Time, ackedPackets []congestion.AckedPacketInfo, lostPackets []congestion.LostPacketInfo) {
+ // Stub
+}
+
+// Called when we receive an ack. Normal TCP tracks how many packets one ack
+// represents, but quic has a separate ack for each packet.
+func (c *cubicSender) maybeIncreaseCwnd(
+ _ congestion.PacketNumber,
+ ackedBytes congestion.ByteCount,
+ priorInFlight congestion.ByteCount,
+ eventTime time.Time,
+) {
+ // Do not increase the congestion window unless the sender is close to using
+ // the current window.
+ if !c.isCwndLimited(priorInFlight) {
+ c.cubic.OnApplicationLimited()
+ return
+ }
+ if c.congestionWindow >= c.maxCongestionWindow() {
+ return
+ }
+ if c.InSlowStart() {
+ // TCP slow start, exponential growth, increase by one for each ACK.
+ c.congestionWindow += c.maxDatagramSize
+ return
+ }
+ // Congestion avoidance
+ if c.reno {
+ // Classic Reno congestion avoidance.
+ c.numAckedPackets++
+ if c.numAckedPackets >= uint64(c.congestionWindow/c.maxDatagramSize) {
+ c.congestionWindow += c.maxDatagramSize
+ c.numAckedPackets = 0
+ }
+ } else {
+ c.congestionWindow = Min(c.maxCongestionWindow(), c.cubic.CongestionWindowAfterAck(ackedBytes, c.congestionWindow, c.rttStats.MinRTT(), eventTime))
+ }
+}
+
+func (c *cubicSender) isCwndLimited(bytesInFlight congestion.ByteCount) bool {
+ congestionWindow := c.GetCongestionWindow()
+ if bytesInFlight >= congestionWindow {
+ return true
+ }
+ availableBytes := congestionWindow - bytesInFlight
+ slowStartLimited := c.InSlowStart() && bytesInFlight > congestionWindow/2
+ return slowStartLimited || availableBytes <= maxBurstPackets*c.maxDatagramSize
+}
+
+// BandwidthEstimate returns the current bandwidth estimate
+func (c *cubicSender) BandwidthEstimate() Bandwidth {
+ if c.rttStats == nil {
+ return infBandwidth
+ }
+ srtt := c.rttStats.SmoothedRTT()
+ if srtt == 0 {
+ // If we haven't measured an rtt, the bandwidth estimate is unknown.
+ return infBandwidth
+ }
+ return BandwidthFromDelta(c.GetCongestionWindow(), srtt)
+}
+
+// OnRetransmissionTimeout is called on an retransmission timeout
+func (c *cubicSender) OnRetransmissionTimeout(packetsRetransmitted bool) {
+ c.largestSentAtLastCutback = InvalidPacketNumber
+ if !packetsRetransmitted {
+ return
+ }
+ c.hybridSlowStart.Restart()
+ c.cubic.Reset()
+ c.slowStartThreshold = c.congestionWindow / 2
+ c.congestionWindow = c.minCongestionWindow()
+}
+
+// OnConnectionMigration is called when the connection is migrated (?)
+func (c *cubicSender) OnConnectionMigration() {
+ c.hybridSlowStart.Restart()
+ c.largestSentPacketNumber = InvalidPacketNumber
+ c.largestAckedPacketNumber = InvalidPacketNumber
+ c.largestSentAtLastCutback = InvalidPacketNumber
+ c.lastCutbackExitedSlowstart = false
+ c.cubic.Reset()
+ c.numAckedPackets = 0
+ c.congestionWindow = c.initialCongestionWindow
+ c.slowStartThreshold = c.initialMaxCongestionWindow
+}
+
+func (c *cubicSender) SetMaxDatagramSize(s congestion.ByteCount) {
+ if s < c.maxDatagramSize {
+ panic(fmt.Sprintf("congestion BUG: decreased max datagram size from %d to %d", c.maxDatagramSize, s))
+ }
+ cwndIsMinCwnd := c.congestionWindow == c.minCongestionWindow()
+ c.maxDatagramSize = s
+ if cwndIsMinCwnd {
+ c.congestionWindow = c.minCongestionWindow()
+ }
+ c.pacer.SetMaxDatagramSize(s)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/hybrid_slow_start.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/hybrid_slow_start.go
new file mode 100644
index 0000000..7586774
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/hybrid_slow_start.go
@@ -0,0 +1,112 @@
+package congestion
+
+import (
+ "time"
+
+ "github.com/metacubex/quic-go/congestion"
+)
+
+// Note(pwestin): the magic clamping numbers come from the original code in
+// tcp_cubic.c.
+const hybridStartLowWindow = congestion.ByteCount(16)
+
+// Number of delay samples for detecting the increase of delay.
+const hybridStartMinSamples = uint32(8)
+
+// Exit slow start if the min rtt has increased by more than 1/8th.
+const hybridStartDelayFactorExp = 3 // 2^3 = 8
+// The original paper specifies 2 and 8ms, but those have changed over time.
+const (
+ hybridStartDelayMinThresholdUs = int64(4000)
+ hybridStartDelayMaxThresholdUs = int64(16000)
+)
+
+// HybridSlowStart implements the TCP hybrid slow start algorithm
+type HybridSlowStart struct {
+ endPacketNumber congestion.PacketNumber
+ lastSentPacketNumber congestion.PacketNumber
+ started bool
+ currentMinRTT time.Duration
+ rttSampleCount uint32
+ hystartFound bool
+}
+
+// StartReceiveRound is called for the start of each receive round (burst) in the slow start phase.
+func (s *HybridSlowStart) StartReceiveRound(lastSent congestion.PacketNumber) {
+ s.endPacketNumber = lastSent
+ s.currentMinRTT = 0
+ s.rttSampleCount = 0
+ s.started = true
+}
+
+// IsEndOfRound returns true if this ack is the last packet number of our current slow start round.
+func (s *HybridSlowStart) IsEndOfRound(ack congestion.PacketNumber) bool {
+ return s.endPacketNumber < ack
+}
+
+// ShouldExitSlowStart should be called on every new ack frame, since a new
+// RTT measurement can be made then.
+// rtt: the RTT for this ack packet.
+// minRTT: is the lowest delay (RTT) we have seen during the session.
+// congestionWindow: the congestion window in packets.
+func (s *HybridSlowStart) ShouldExitSlowStart(latestRTT time.Duration, minRTT time.Duration, congestionWindow congestion.ByteCount) bool {
+ if !s.started {
+ // Time to start the hybrid slow start.
+ s.StartReceiveRound(s.lastSentPacketNumber)
+ }
+ if s.hystartFound {
+ return true
+ }
+ // Second detection parameter - delay increase detection.
+ // Compare the minimum delay (s.currentMinRTT) of the current
+ // burst of packets relative to the minimum delay during the session.
+ // Note: we only look at the first few(8) packets in each burst, since we
+ // only want to compare the lowest RTT of the burst relative to previous
+ // bursts.
+ s.rttSampleCount++
+ if s.rttSampleCount <= hybridStartMinSamples {
+ if s.currentMinRTT == 0 || s.currentMinRTT > latestRTT {
+ s.currentMinRTT = latestRTT
+ }
+ }
+ // We only need to check this once per round.
+ if s.rttSampleCount == hybridStartMinSamples {
+ // Divide minRTT by 8 to get a rtt increase threshold for exiting.
+ minRTTincreaseThresholdUs := int64(minRTT / time.Microsecond >> hybridStartDelayFactorExp)
+ // Ensure the rtt threshold is never less than 2ms or more than 16ms.
+ minRTTincreaseThresholdUs = Min(minRTTincreaseThresholdUs, hybridStartDelayMaxThresholdUs)
+ minRTTincreaseThreshold := time.Duration(Max(minRTTincreaseThresholdUs, hybridStartDelayMinThresholdUs)) * time.Microsecond
+
+ if s.currentMinRTT > (minRTT + minRTTincreaseThreshold) {
+ s.hystartFound = true
+ }
+ }
+ // Exit from slow start if the cwnd is greater than 16 and
+ // increasing delay is found.
+ return congestionWindow >= hybridStartLowWindow && s.hystartFound
+}
+
+// OnPacketSent is called when a packet was sent
+func (s *HybridSlowStart) OnPacketSent(packetNumber congestion.PacketNumber) {
+ s.lastSentPacketNumber = packetNumber
+}
+
+// OnPacketAcked gets invoked after ShouldExitSlowStart, so it's best to end
+// the round when the final packet of the burst is received and start it on
+// the next incoming ack.
+func (s *HybridSlowStart) OnPacketAcked(ackedPacketNumber congestion.PacketNumber) {
+ if s.IsEndOfRound(ackedPacketNumber) {
+ s.started = false
+ }
+}
+
+// Started returns true if started
+func (s *HybridSlowStart) Started() bool {
+ return s.started
+}
+
+// Restart the slow start phase
+func (s *HybridSlowStart) Restart() {
+ s.started = false
+ s.hystartFound = false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/minmax.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/minmax.go
new file mode 100644
index 0000000..0a8f4ad
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/minmax.go
@@ -0,0 +1,56 @@
+package congestion
+
+import (
+ "math"
+ "time"
+)
+
+// InfDuration is a duration of infinite length
+const InfDuration = time.Duration(math.MaxInt64)
+
+// MinNonZeroDuration return the minimum duration that's not zero.
+func MinNonZeroDuration(a, b time.Duration) time.Duration {
+ if a == 0 {
+ return b
+ }
+ if b == 0 {
+ return a
+ }
+ return Min(a, b)
+}
+
+// AbsDuration returns the absolute value of a time duration
+func AbsDuration(d time.Duration) time.Duration {
+ if d >= 0 {
+ return d
+ }
+ return -d
+}
+
+// MinTime returns the earlier time
+func MinTime(a, b time.Time) time.Time {
+ if a.After(b) {
+ return b
+ }
+ return a
+}
+
+// MinNonZeroTime returns the earlist time that is not time.Time{}
+// If both a and b are time.Time{}, it returns time.Time{}
+func MinNonZeroTime(a, b time.Time) time.Time {
+ if a.IsZero() {
+ return b
+ }
+ if b.IsZero() {
+ return a
+ }
+ return MinTime(a, b)
+}
+
+// MaxTime returns the later time
+func MaxTime(a, b time.Time) time.Time {
+ if a.After(b) {
+ return a
+ }
+ return b
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/minmax_go120.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/minmax_go120.go
new file mode 100644
index 0000000..1266edb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/minmax_go120.go
@@ -0,0 +1,19 @@
+//go:build !go1.21
+
+package congestion
+
+import "golang.org/x/exp/constraints"
+
+func Max[T constraints.Ordered](a, b T) T {
+ if a < b {
+ return b
+ }
+ return a
+}
+
+func Min[T constraints.Ordered](a, b T) T {
+ if a < b {
+ return a
+ }
+ return b
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/minmax_go121.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/minmax_go121.go
new file mode 100644
index 0000000..65b0672
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/minmax_go121.go
@@ -0,0 +1,13 @@
+//go:build go1.21
+
+package congestion
+
+import "cmp"
+
+func Max[T cmp.Ordered](a, b T) T {
+ return max(a, b)
+}
+
+func Min[T cmp.Ordered](a, b T) T {
+ return min(a, b)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/pacer.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/pacer.go
new file mode 100644
index 0000000..f60ef5f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/pacer.go
@@ -0,0 +1,79 @@
+package congestion
+
+import (
+ "math"
+ "time"
+
+ "github.com/metacubex/quic-go/congestion"
+)
+
+const initialMaxDatagramSize = congestion.ByteCount(1252)
+const MinPacingDelay = time.Millisecond
+const TimerGranularity = time.Millisecond
+const maxBurstSizePackets = 10
+
+// The pacer implements a token bucket pacing algorithm.
+type pacer struct {
+ budgetAtLastSent congestion.ByteCount
+ maxDatagramSize congestion.ByteCount
+ lastSentTime time.Time
+ getAdjustedBandwidth func() uint64 // in bytes/s
+}
+
+func newPacer(getBandwidth func() Bandwidth) *pacer {
+ p := &pacer{
+ maxDatagramSize: initialMaxDatagramSize,
+ getAdjustedBandwidth: func() uint64 {
+ // Bandwidth is in bits/s. We need the value in bytes/s.
+ bw := uint64(getBandwidth() / BytesPerSecond)
+ // Use a slightly higher value than the actual measured bandwidth.
+ // RTT variations then won't result in under-utilization of the congestion window.
+ // Ultimately, this will result in sending packets as acknowledgments are received rather than when timers fire,
+ // provided the congestion window is fully utilized and acknowledgments arrive at regular intervals.
+ return bw * 5 / 4
+ },
+ }
+ p.budgetAtLastSent = p.maxBurstSize()
+ return p
+}
+
+func (p *pacer) SentPacket(sendTime time.Time, size congestion.ByteCount) {
+ budget := p.Budget(sendTime)
+ if size > budget {
+ p.budgetAtLastSent = 0
+ } else {
+ p.budgetAtLastSent = budget - size
+ }
+ p.lastSentTime = sendTime
+}
+
+func (p *pacer) Budget(now time.Time) congestion.ByteCount {
+ if p.lastSentTime.IsZero() {
+ return p.maxBurstSize()
+ }
+ budget := p.budgetAtLastSent + (congestion.ByteCount(p.getAdjustedBandwidth())*congestion.ByteCount(now.Sub(p.lastSentTime).Nanoseconds()))/1e9
+ return Min(p.maxBurstSize(), budget)
+}
+
+func (p *pacer) maxBurstSize() congestion.ByteCount {
+ return Max(
+ congestion.ByteCount(uint64((MinPacingDelay+TimerGranularity).Nanoseconds())*p.getAdjustedBandwidth())/1e9,
+ maxBurstSizePackets*p.maxDatagramSize,
+ )
+}
+
+// TimeUntilSend returns when the next packet should be sent.
+// It returns the zero value of time.Time if a packet can be sent immediately.
+func (p *pacer) TimeUntilSend() time.Time {
+ if p.budgetAtLastSent >= p.maxDatagramSize {
+ return time.Time{}
+ }
+ return p.lastSentTime.Add(Max(
+ MinPacingDelay,
+ time.Duration(math.Ceil(float64(p.maxDatagramSize-p.budgetAtLastSent)*1e9/float64(p.getAdjustedBandwidth())))*time.Nanosecond,
+ ))
+}
+
+func (p *pacer) SetMaxDatagramSize(s congestion.ByteCount) {
+ p.maxDatagramSize = s
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/windowed_filter.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/windowed_filter.go
new file mode 100644
index 0000000..4da595b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion/windowed_filter.go
@@ -0,0 +1,132 @@
+package congestion
+
+// WindowedFilter Use the following to construct a windowed filter object of type T.
+// For example, a min filter using QuicTime as the time type:
+//
+// WindowedFilter, QuicTime, QuicTime::Delta> ObjectName;
+//
+// A max filter using 64-bit integers as the time type:
+//
+// WindowedFilter, uint64_t, int64_t> ObjectName;
+//
+// Specifically, this template takes four arguments:
+// 1. T -- type of the measurement that is being filtered.
+// 2. Compare -- MinFilter or MaxFilter, depending on the type of filter
+// desired.
+// 3. TimeT -- the type used to represent timestamps.
+// 4. TimeDeltaT -- the type used to represent continuous time intervals between
+// two timestamps. Has to be the type of (a - b) if both |a| and |b| are
+// of type TimeT.
+type WindowedFilter struct {
+ // Time length of window.
+ windowLength int64
+ estimates []Sample
+ comparator func(int64, int64) bool
+}
+
+type Sample struct {
+ sample int64
+ time int64
+}
+
+// Compares two values and returns true if the first is greater than or equal
+// to the second.
+func MaxFilter(a, b int64) bool {
+ return a >= b
+}
+
+// Compares two values and returns true if the first is less than or equal
+// to the second.
+func MinFilter(a, b int64) bool {
+ return a <= b
+}
+
+func NewWindowedFilter(windowLength int64, comparator func(int64, int64) bool) *WindowedFilter {
+ return &WindowedFilter{
+ windowLength: windowLength,
+ estimates: make([]Sample, 3),
+ comparator: comparator,
+ }
+}
+
+// Changes the window length. Does not update any current samples.
+func (f *WindowedFilter) SetWindowLength(windowLength int64) {
+ f.windowLength = windowLength
+}
+
+func (f *WindowedFilter) GetBest() int64 {
+ return f.estimates[0].sample
+}
+
+func (f *WindowedFilter) GetSecondBest() int64 {
+ return f.estimates[1].sample
+}
+
+func (f *WindowedFilter) GetThirdBest() int64 {
+ return f.estimates[2].sample
+}
+
+func (f *WindowedFilter) Update(sample int64, time int64) {
+ if f.estimates[0].time == 0 || f.comparator(sample, f.estimates[0].sample) || (time-f.estimates[2].time) > f.windowLength {
+ f.Reset(sample, time)
+ return
+ }
+
+ if f.comparator(sample, f.estimates[1].sample) {
+ f.estimates[1].sample = sample
+ f.estimates[1].time = time
+ f.estimates[2].sample = sample
+ f.estimates[2].time = time
+ } else if f.comparator(sample, f.estimates[2].sample) {
+ f.estimates[2].sample = sample
+ f.estimates[2].time = time
+ }
+
+ // Expire and update estimates as necessary.
+ if time-f.estimates[0].time > f.windowLength {
+ // The best estimate hasn't been updated for an entire window, so promote
+ // second and third best estimates.
+ f.estimates[0].sample = f.estimates[1].sample
+ f.estimates[0].time = f.estimates[1].time
+ f.estimates[1].sample = f.estimates[2].sample
+ f.estimates[1].time = f.estimates[2].time
+ f.estimates[2].sample = sample
+ f.estimates[2].time = time
+ // Need to iterate one more time. Check if the new best estimate is
+ // outside the window as well, since it may also have been recorded a
+ // long time ago. Don't need to iterate once more since we cover that
+ // case at the beginning of the method.
+ if time-f.estimates[0].time > f.windowLength {
+ f.estimates[0].sample = f.estimates[1].sample
+ f.estimates[0].time = f.estimates[1].time
+ f.estimates[1].sample = f.estimates[2].sample
+ f.estimates[1].time = f.estimates[2].time
+ }
+ return
+ }
+ if f.estimates[1].sample == f.estimates[0].sample && time-f.estimates[1].time > f.windowLength>>2 {
+ // A quarter of the window has passed without a better sample, so the
+ // second-best estimate is taken from the second quarter of the window.
+ f.estimates[1].sample = sample
+ f.estimates[1].time = time
+ f.estimates[2].sample = sample
+ f.estimates[2].time = time
+ return
+ }
+
+ if f.estimates[2].sample == f.estimates[1].sample && time-f.estimates[2].time > f.windowLength>>1 {
+ // We've passed a half of the window without a better estimate, so take
+ // a third-best estimate from the second half of the window.
+ f.estimates[2].sample = sample
+ f.estimates[2].time = time
+ }
+}
+
+func (f *WindowedFilter) Reset(newSample int64, newTime int64) {
+ f.estimates[0].sample = newSample
+ f.estimates[0].time = newTime
+ f.estimates[1].sample = newSample
+ f.estimates[1].time = newTime
+ f.estimates[2].sample = newSample
+ f.estimates[2].time = newTime
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/bandwidth.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/bandwidth.go
new file mode 100644
index 0000000..df39a07
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/bandwidth.go
@@ -0,0 +1,27 @@
+package congestion
+
+import (
+ "math"
+ "time"
+
+ "github.com/metacubex/quic-go/congestion"
+)
+
+const (
+ infBandwidth = Bandwidth(math.MaxUint64)
+)
+
+// Bandwidth of a connection
+type Bandwidth uint64
+
+const (
+ // BitsPerSecond is 1 bit per second
+ BitsPerSecond Bandwidth = 1
+ // BytesPerSecond is 1 byte per second
+ BytesPerSecond = 8 * BitsPerSecond
+)
+
+// BandwidthFromDelta calculates the bandwidth from a number of bytes and a time delta
+func BandwidthFromDelta(bytes congestion.ByteCount, delta time.Duration) Bandwidth {
+ return Bandwidth(bytes) * Bandwidth(time.Second) / Bandwidth(delta) * BytesPerSecond
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/bandwidth_sampler.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/bandwidth_sampler.go
new file mode 100644
index 0000000..9028df6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/bandwidth_sampler.go
@@ -0,0 +1,874 @@
+package congestion
+
+import (
+ "math"
+ "time"
+
+ "github.com/metacubex/quic-go/congestion"
+)
+
+const (
+ infRTT = time.Duration(math.MaxInt64)
+ defaultConnectionStateMapQueueSize = 256
+ defaultCandidatesBufferSize = 256
+)
+
+type roundTripCount uint64
+
+// SendTimeState is a subset of ConnectionStateOnSentPacket which is returned
+// to the caller when the packet is acked or lost.
+type sendTimeState struct {
+ // Whether other states in this object is valid.
+ isValid bool
+ // Whether the sender is app limited at the time the packet was sent.
+ // App limited bandwidth sample might be artificially low because the sender
+ // did not have enough data to send in order to saturate the link.
+ isAppLimited bool
+ // Total number of sent bytes at the time the packet was sent.
+ // Includes the packet itself.
+ totalBytesSent congestion.ByteCount
+ // Total number of acked bytes at the time the packet was sent.
+ totalBytesAcked congestion.ByteCount
+ // Total number of lost bytes at the time the packet was sent.
+ totalBytesLost congestion.ByteCount
+ // Total number of inflight bytes at the time the packet was sent.
+ // Includes the packet itself.
+ // It should be equal to |total_bytes_sent| minus the sum of
+ // |total_bytes_acked|, |total_bytes_lost| and total neutered bytes.
+ bytesInFlight congestion.ByteCount
+}
+
+func newSendTimeState(
+ isAppLimited bool,
+ totalBytesSent congestion.ByteCount,
+ totalBytesAcked congestion.ByteCount,
+ totalBytesLost congestion.ByteCount,
+ bytesInFlight congestion.ByteCount,
+) *sendTimeState {
+ return &sendTimeState{
+ isValid: true,
+ isAppLimited: isAppLimited,
+ totalBytesSent: totalBytesSent,
+ totalBytesAcked: totalBytesAcked,
+ totalBytesLost: totalBytesLost,
+ bytesInFlight: bytesInFlight,
+ }
+}
+
+type extraAckedEvent struct {
+ // The excess bytes acknowlwedged in the time delta for this event.
+ extraAcked congestion.ByteCount
+
+ // The bytes acknowledged and time delta from the event.
+ bytesAcked congestion.ByteCount
+ timeDelta time.Duration
+ // The round trip of the event.
+ round roundTripCount
+}
+
+func maxExtraAckedEventFunc(a, b extraAckedEvent) int {
+ if a.extraAcked > b.extraAcked {
+ return 1
+ } else if a.extraAcked < b.extraAcked {
+ return -1
+ }
+ return 0
+}
+
+// BandwidthSample
+type bandwidthSample struct {
+ // The bandwidth at that particular sample. Zero if no valid bandwidth sample
+ // is available.
+ bandwidth Bandwidth
+ // The RTT measurement at this particular sample. Zero if no RTT sample is
+ // available. Does not correct for delayed ack time.
+ rtt time.Duration
+ // |send_rate| is computed from the current packet being acked('P') and an
+ // earlier packet that is acked before P was sent.
+ sendRate Bandwidth
+ // States captured when the packet was sent.
+ stateAtSend sendTimeState
+}
+
+func newBandwidthSample() *bandwidthSample {
+ return &bandwidthSample{
+ sendRate: infBandwidth,
+ }
+}
+
+// MaxAckHeightTracker is part of the BandwidthSampler. It is called after every
+// ack event to keep track the degree of ack aggregation(a.k.a "ack height").
+type maxAckHeightTracker struct {
+ // Tracks the maximum number of bytes acked faster than the estimated
+ // bandwidth.
+ maxAckHeightFilter *WindowedFilter[extraAckedEvent, roundTripCount]
+ // The time this aggregation started and the number of bytes acked during it.
+ aggregationEpochStartTime time.Time
+ aggregationEpochBytes congestion.ByteCount
+ // The last sent packet number before the current aggregation epoch started.
+ lastSentPacketNumberBeforeEpoch congestion.PacketNumber
+ // The number of ack aggregation epochs ever started, including the ongoing
+ // one. Stats only.
+ numAckAggregationEpochs uint64
+ ackAggregationBandwidthThreshold float64
+ startNewAggregationEpochAfterFullRound bool
+ reduceExtraAckedOnBandwidthIncrease bool
+}
+
+func newMaxAckHeightTracker(windowLength roundTripCount) *maxAckHeightTracker {
+ return &maxAckHeightTracker{
+ maxAckHeightFilter: NewWindowedFilter(windowLength, maxExtraAckedEventFunc),
+ lastSentPacketNumberBeforeEpoch: invalidPacketNumber,
+ ackAggregationBandwidthThreshold: 1.0,
+ }
+}
+
+func (m *maxAckHeightTracker) Get() congestion.ByteCount {
+ return m.maxAckHeightFilter.GetBest().extraAcked
+}
+
+func (m *maxAckHeightTracker) Update(
+ bandwidthEstimate Bandwidth,
+ isNewMaxBandwidth bool,
+ roundTripCount roundTripCount,
+ lastSentPacketNumber congestion.PacketNumber,
+ lastAckedPacketNumber congestion.PacketNumber,
+ ackTime time.Time,
+ bytesAcked congestion.ByteCount,
+) congestion.ByteCount {
+ forceNewEpoch := false
+
+ if m.reduceExtraAckedOnBandwidthIncrease && isNewMaxBandwidth {
+ // Save and clear existing entries.
+ best := m.maxAckHeightFilter.GetBest()
+ secondBest := m.maxAckHeightFilter.GetSecondBest()
+ thirdBest := m.maxAckHeightFilter.GetThirdBest()
+ m.maxAckHeightFilter.Clear()
+
+ // Reinsert the heights into the filter after recalculating.
+ expectedBytesAcked := bytesFromBandwidthAndTimeDelta(bandwidthEstimate, best.timeDelta)
+ if expectedBytesAcked < best.bytesAcked {
+ best.extraAcked = best.bytesAcked - expectedBytesAcked
+ m.maxAckHeightFilter.Update(best, best.round)
+ }
+ expectedBytesAcked = bytesFromBandwidthAndTimeDelta(bandwidthEstimate, secondBest.timeDelta)
+ if expectedBytesAcked < secondBest.bytesAcked {
+ secondBest.extraAcked = secondBest.bytesAcked - expectedBytesAcked
+ m.maxAckHeightFilter.Update(secondBest, secondBest.round)
+ }
+ expectedBytesAcked = bytesFromBandwidthAndTimeDelta(bandwidthEstimate, thirdBest.timeDelta)
+ if expectedBytesAcked < thirdBest.bytesAcked {
+ thirdBest.extraAcked = thirdBest.bytesAcked - expectedBytesAcked
+ m.maxAckHeightFilter.Update(thirdBest, thirdBest.round)
+ }
+ }
+
+ // If any packet sent after the start of the epoch has been acked, start a new
+ // epoch.
+ if m.startNewAggregationEpochAfterFullRound &&
+ m.lastSentPacketNumberBeforeEpoch != invalidPacketNumber &&
+ lastAckedPacketNumber != invalidPacketNumber &&
+ lastAckedPacketNumber > m.lastSentPacketNumberBeforeEpoch {
+ forceNewEpoch = true
+ }
+ if m.aggregationEpochStartTime.IsZero() || forceNewEpoch {
+ m.aggregationEpochBytes = bytesAcked
+ m.aggregationEpochStartTime = ackTime
+ m.lastSentPacketNumberBeforeEpoch = lastSentPacketNumber
+ m.numAckAggregationEpochs++
+ return 0
+ }
+
+ // Compute how many bytes are expected to be delivered, assuming max bandwidth
+ // is correct.
+ aggregationDelta := ackTime.Sub(m.aggregationEpochStartTime)
+ expectedBytesAcked := bytesFromBandwidthAndTimeDelta(bandwidthEstimate, aggregationDelta)
+ // Reset the current aggregation epoch as soon as the ack arrival rate is less
+ // than or equal to the max bandwidth.
+ if m.aggregationEpochBytes <= congestion.ByteCount(m.ackAggregationBandwidthThreshold*float64(expectedBytesAcked)) {
+ // Reset to start measuring a new aggregation epoch.
+ m.aggregationEpochBytes = bytesAcked
+ m.aggregationEpochStartTime = ackTime
+ m.lastSentPacketNumberBeforeEpoch = lastSentPacketNumber
+ m.numAckAggregationEpochs++
+ return 0
+ }
+
+ m.aggregationEpochBytes += bytesAcked
+
+ // Compute how many extra bytes were delivered vs max bandwidth.
+ extraBytesAcked := m.aggregationEpochBytes - expectedBytesAcked
+ newEvent := extraAckedEvent{
+ extraAcked: expectedBytesAcked,
+ bytesAcked: m.aggregationEpochBytes,
+ timeDelta: aggregationDelta,
+ }
+ m.maxAckHeightFilter.Update(newEvent, roundTripCount)
+ return extraBytesAcked
+}
+
+func (m *maxAckHeightTracker) SetFilterWindowLength(length roundTripCount) {
+ m.maxAckHeightFilter.SetWindowLength(length)
+}
+
+func (m *maxAckHeightTracker) Reset(newHeight congestion.ByteCount, newTime roundTripCount) {
+ newEvent := extraAckedEvent{
+ extraAcked: newHeight,
+ round: newTime,
+ }
+ m.maxAckHeightFilter.Reset(newEvent, newTime)
+}
+
+func (m *maxAckHeightTracker) SetAckAggregationBandwidthThreshold(threshold float64) {
+ m.ackAggregationBandwidthThreshold = threshold
+}
+
+func (m *maxAckHeightTracker) SetStartNewAggregationEpochAfterFullRound(value bool) {
+ m.startNewAggregationEpochAfterFullRound = value
+}
+
+func (m *maxAckHeightTracker) SetReduceExtraAckedOnBandwidthIncrease(value bool) {
+ m.reduceExtraAckedOnBandwidthIncrease = value
+}
+
+func (m *maxAckHeightTracker) AckAggregationBandwidthThreshold() float64 {
+ return m.ackAggregationBandwidthThreshold
+}
+
+func (m *maxAckHeightTracker) NumAckAggregationEpochs() uint64 {
+ return m.numAckAggregationEpochs
+}
+
+// AckPoint represents a point on the ack line.
+type ackPoint struct {
+ ackTime time.Time
+ totalBytesAcked congestion.ByteCount
+}
+
+// RecentAckPoints maintains the most recent 2 ack points at distinct times.
+type recentAckPoints struct {
+ ackPoints [2]ackPoint
+}
+
+func (r *recentAckPoints) Update(ackTime time.Time, totalBytesAcked congestion.ByteCount) {
+ if ackTime.Before(r.ackPoints[1].ackTime) {
+ r.ackPoints[1].ackTime = ackTime
+ } else if ackTime.After(r.ackPoints[1].ackTime) {
+ r.ackPoints[0] = r.ackPoints[1]
+ r.ackPoints[1].ackTime = ackTime
+ }
+
+ r.ackPoints[1].totalBytesAcked = totalBytesAcked
+}
+
+func (r *recentAckPoints) Clear() {
+ r.ackPoints[0] = ackPoint{}
+ r.ackPoints[1] = ackPoint{}
+}
+
+func (r *recentAckPoints) MostRecentPoint() *ackPoint {
+ return &r.ackPoints[1]
+}
+
+func (r *recentAckPoints) LessRecentPoint() *ackPoint {
+ if r.ackPoints[0].totalBytesAcked != 0 {
+ return &r.ackPoints[0]
+ }
+
+ return &r.ackPoints[1]
+}
+
+// ConnectionStateOnSentPacket represents the information about a sent packet
+// and the state of the connection at the moment the packet was sent,
+// specifically the information about the most recently acknowledged packet at
+// that moment.
+type connectionStateOnSentPacket struct {
+ // Time at which the packet is sent.
+ sentTime time.Time
+ // Size of the packet.
+ size congestion.ByteCount
+ // The value of |totalBytesSentAtLastAckedPacket| at the time the
+ // packet was sent.
+ totalBytesSentAtLastAckedPacket congestion.ByteCount
+ // The value of |lastAckedPacketSentTime| at the time the packet was
+ // sent.
+ lastAckedPacketSentTime time.Time
+ // The value of |lastAckedPacketAckTime| at the time the packet was
+ // sent.
+ lastAckedPacketAckTime time.Time
+ // Send time states that are returned to the congestion controller when the
+ // packet is acked or lost.
+ sendTimeState sendTimeState
+}
+
+// Snapshot constructor. Records the current state of the bandwidth
+// sampler.
+// |bytes_in_flight| is the bytes in flight right after the packet is sent.
+func newConnectionStateOnSentPacket(
+ sentTime time.Time,
+ size congestion.ByteCount,
+ bytesInFlight congestion.ByteCount,
+ sampler *bandwidthSampler,
+) *connectionStateOnSentPacket {
+ return &connectionStateOnSentPacket{
+ sentTime: sentTime,
+ size: size,
+ totalBytesSentAtLastAckedPacket: sampler.totalBytesSentAtLastAckedPacket,
+ lastAckedPacketSentTime: sampler.lastAckedPacketSentTime,
+ lastAckedPacketAckTime: sampler.lastAckedPacketAckTime,
+ sendTimeState: *newSendTimeState(
+ sampler.isAppLimited,
+ sampler.totalBytesSent,
+ sampler.totalBytesAcked,
+ sampler.totalBytesLost,
+ bytesInFlight,
+ ),
+ }
+}
+
+// BandwidthSampler keeps track of sent and acknowledged packets and outputs a
+// bandwidth sample for every packet acknowledged. The samples are taken for
+// individual packets, and are not filtered; the consumer has to filter the
+// bandwidth samples itself. In certain cases, the sampler will locally severely
+// underestimate the bandwidth, hence a maximum filter with a size of at least
+// one RTT is recommended.
+//
+// This class bases its samples on the slope of two curves: the number of bytes
+// sent over time, and the number of bytes acknowledged as received over time.
+// It produces a sample of both slopes for every packet that gets acknowledged,
+// based on a slope between two points on each of the corresponding curves. Note
+// that due to the packet loss, the number of bytes on each curve might get
+// further and further away from each other, meaning that it is not feasible to
+// compare byte values coming from different curves with each other.
+//
+// The obvious points for measuring slope sample are the ones corresponding to
+// the packet that was just acknowledged. Let us denote them as S_1 (point at
+// which the current packet was sent) and A_1 (point at which the current packet
+// was acknowledged). However, taking a slope requires two points on each line,
+// so estimating bandwidth requires picking a packet in the past with respect to
+// which the slope is measured.
+//
+// For that purpose, BandwidthSampler always keeps track of the most recently
+// acknowledged packet, and records it together with every outgoing packet.
+// When a packet gets acknowledged (A_1), it has not only information about when
+// it itself was sent (S_1), but also the information about the latest
+// acknowledged packet right before it was sent (S_0 and A_0).
+//
+// Based on that data, send and ack rate are estimated as:
+//
+// send_rate = (bytes(S_1) - bytes(S_0)) / (time(S_1) - time(S_0))
+// ack_rate = (bytes(A_1) - bytes(A_0)) / (time(A_1) - time(A_0))
+//
+// Here, the ack rate is intuitively the rate we want to treat as bandwidth.
+// However, in certain cases (e.g. ack compression) the ack rate at a point may
+// end up higher than the rate at which the data was originally sent, which is
+// not indicative of the real bandwidth. Hence, we use the send rate as an upper
+// bound, and the sample value is
+//
+// rate_sample = Min(send_rate, ack_rate)
+//
+// An important edge case handled by the sampler is tracking the app-limited
+// samples. There are multiple meaning of "app-limited" used interchangeably,
+// hence it is important to understand and to be able to distinguish between
+// them.
+//
+// Meaning 1: connection state. The connection is said to be app-limited when
+// there is no outstanding data to send. This means that certain bandwidth
+// samples in the future would not be an accurate indication of the link
+// capacity, and it is important to inform consumer about that. Whenever
+// connection becomes app-limited, the sampler is notified via OnAppLimited()
+// method.
+//
+// Meaning 2: a phase in the bandwidth sampler. As soon as the bandwidth
+// sampler becomes notified about the connection being app-limited, it enters
+// app-limited phase. In that phase, all *sent* packets are marked as
+// app-limited. Note that the connection itself does not have to be
+// app-limited during the app-limited phase, and in fact it will not be
+// (otherwise how would it send packets?). The boolean flag below indicates
+// whether the sampler is in that phase.
+//
+// Meaning 3: a flag on the sent packet and on the sample. If a sent packet is
+// sent during the app-limited phase, the resulting sample related to the
+// packet will be marked as app-limited.
+//
+// With the terminology issue out of the way, let us consider the question of
+// what kind of situation it addresses.
+//
+// Consider a scenario where we first send packets 1 to 20 at a regular
+// bandwidth, and then immediately run out of data. After a few seconds, we send
+// packets 21 to 60, and only receive ack for 21 between sending packets 40 and
+// 41. In this case, when we sample bandwidth for packets 21 to 40, the S_0/A_0
+// we use to compute the slope is going to be packet 20, a few seconds apart
+// from the current packet, hence the resulting estimate would be extremely low
+// and not indicative of anything. Only at packet 41 the S_0/A_0 will become 21,
+// meaning that the bandwidth sample would exclude the quiescence.
+//
+// Based on the analysis of that scenario, we implement the following rule: once
+// OnAppLimited() is called, all sent packets will produce app-limited samples
+// up until an ack for a packet that was sent after OnAppLimited() was called.
+// Note that while the scenario above is not the only scenario when the
+// connection is app-limited, the approach works in other cases too.
+
+type congestionEventSample struct {
+ // The maximum bandwidth sample from all acked packets.
+ // QuicBandwidth::Zero() if no samples are available.
+ sampleMaxBandwidth Bandwidth
+ // Whether |sample_max_bandwidth| is from a app-limited sample.
+ sampleIsAppLimited bool
+ // The minimum rtt sample from all acked packets.
+ // QuicTime::Delta::Infinite() if no samples are available.
+ sampleRtt time.Duration
+ // For each packet p in acked packets, this is the max value of INFLIGHT(p),
+ // where INFLIGHT(p) is the number of bytes acked while p is inflight.
+ sampleMaxInflight congestion.ByteCount
+ // The send state of the largest packet in acked_packets, unless it is
+ // empty. If acked_packets is empty, it's the send state of the largest
+ // packet in lost_packets.
+ lastPacketSendState sendTimeState
+ // The number of extra bytes acked from this ack event, compared to what is
+ // expected from the flow's bandwidth. Larger value means more ack
+ // aggregation.
+ extraAcked congestion.ByteCount
+}
+
+func newCongestionEventSample() *congestionEventSample {
+ return &congestionEventSample{
+ sampleRtt: infRTT,
+ }
+}
+
+type bandwidthSampler struct {
+ // The total number of congestion controlled bytes sent during the connection.
+ totalBytesSent congestion.ByteCount
+
+ // The total number of congestion controlled bytes which were acknowledged.
+ totalBytesAcked congestion.ByteCount
+
+ // The total number of congestion controlled bytes which were lost.
+ totalBytesLost congestion.ByteCount
+
+ // The total number of congestion controlled bytes which have been neutered.
+ totalBytesNeutered congestion.ByteCount
+
+ // The value of |total_bytes_sent_| at the time the last acknowledged packet
+ // was sent. Valid only when |last_acked_packet_sent_time_| is valid.
+ totalBytesSentAtLastAckedPacket congestion.ByteCount
+
+ // The time at which the last acknowledged packet was sent. Set to
+ // QuicTime::Zero() if no valid timestamp is available.
+ lastAckedPacketSentTime time.Time
+
+ // The time at which the most recent packet was acknowledged.
+ lastAckedPacketAckTime time.Time
+
+ // The most recently sent packet.
+ lastSentPacket congestion.PacketNumber
+
+ // The most recently acked packet.
+ lastAckedPacket congestion.PacketNumber
+
+ // Indicates whether the bandwidth sampler is currently in an app-limited
+ // phase.
+ isAppLimited bool
+
+ // The packet that will be acknowledged after this one will cause the sampler
+ // to exit the app-limited phase.
+ endOfAppLimitedPhase congestion.PacketNumber
+
+ // Record of the connection state at the point where each packet in flight was
+ // sent, indexed by the packet number.
+ connectionStateMap *packetNumberIndexedQueue[connectionStateOnSentPacket]
+
+ recentAckPoints recentAckPoints
+ a0Candidates RingBuffer[ackPoint]
+
+ // Maximum number of tracked packets.
+ maxTrackedPackets congestion.ByteCount
+
+ maxAckHeightTracker *maxAckHeightTracker
+ totalBytesAckedAfterLastAckEvent congestion.ByteCount
+
+ // True if connection option 'BSAO' is set.
+ overestimateAvoidance bool
+
+ // True if connection option 'BBRB' is set.
+ limitMaxAckHeightTrackerBySendRate bool
+}
+
+func newBandwidthSampler(maxAckHeightTrackerWindowLength roundTripCount) *bandwidthSampler {
+ b := &bandwidthSampler{
+ maxAckHeightTracker: newMaxAckHeightTracker(maxAckHeightTrackerWindowLength),
+ connectionStateMap: newPacketNumberIndexedQueue[connectionStateOnSentPacket](defaultConnectionStateMapQueueSize),
+ lastSentPacket: invalidPacketNumber,
+ lastAckedPacket: invalidPacketNumber,
+ endOfAppLimitedPhase: invalidPacketNumber,
+ }
+
+ b.a0Candidates.Init(defaultCandidatesBufferSize)
+
+ return b
+}
+
+func (b *bandwidthSampler) MaxAckHeight() congestion.ByteCount {
+ return b.maxAckHeightTracker.Get()
+}
+
+func (b *bandwidthSampler) NumAckAggregationEpochs() uint64 {
+ return b.maxAckHeightTracker.NumAckAggregationEpochs()
+}
+
+func (b *bandwidthSampler) SetMaxAckHeightTrackerWindowLength(length roundTripCount) {
+ b.maxAckHeightTracker.SetFilterWindowLength(length)
+}
+
+func (b *bandwidthSampler) ResetMaxAckHeightTracker(newHeight congestion.ByteCount, newTime roundTripCount) {
+ b.maxAckHeightTracker.Reset(newHeight, newTime)
+}
+
+func (b *bandwidthSampler) SetStartNewAggregationEpochAfterFullRound(value bool) {
+ b.maxAckHeightTracker.SetStartNewAggregationEpochAfterFullRound(value)
+}
+
+func (b *bandwidthSampler) SetLimitMaxAckHeightTrackerBySendRate(value bool) {
+ b.limitMaxAckHeightTrackerBySendRate = value
+}
+
+func (b *bandwidthSampler) SetReduceExtraAckedOnBandwidthIncrease(value bool) {
+ b.maxAckHeightTracker.SetReduceExtraAckedOnBandwidthIncrease(value)
+}
+
+func (b *bandwidthSampler) EnableOverestimateAvoidance() {
+ if b.overestimateAvoidance {
+ return
+ }
+
+ b.overestimateAvoidance = true
+ b.maxAckHeightTracker.SetAckAggregationBandwidthThreshold(2.0)
+}
+
+func (b *bandwidthSampler) IsOverestimateAvoidanceEnabled() bool {
+ return b.overestimateAvoidance
+}
+
+func (b *bandwidthSampler) OnPacketSent(
+ sentTime time.Time,
+ packetNumber congestion.PacketNumber,
+ bytes congestion.ByteCount,
+ bytesInFlight congestion.ByteCount,
+ isRetransmittable bool,
+) {
+ b.lastSentPacket = packetNumber
+
+ if !isRetransmittable {
+ return
+ }
+
+ b.totalBytesSent += bytes
+
+ // If there are no packets in flight, the time at which the new transmission
+ // opens can be treated as the A_0 point for the purpose of bandwidth
+ // sampling. This underestimates bandwidth to some extent, and produces some
+ // artificially low samples for most packets in flight, but it provides with
+ // samples at important points where we would not have them otherwise, most
+ // importantly at the beginning of the connection.
+ if bytesInFlight == 0 {
+ b.lastAckedPacketAckTime = sentTime
+ if b.overestimateAvoidance {
+ b.recentAckPoints.Clear()
+ b.recentAckPoints.Update(sentTime, b.totalBytesAcked)
+ b.a0Candidates.Clear()
+ b.a0Candidates.PushBack(*b.recentAckPoints.MostRecentPoint())
+ }
+ b.totalBytesSentAtLastAckedPacket = b.totalBytesSent
+
+ // In this situation ack compression is not a concern, set send rate to
+ // effectively infinite.
+ b.lastAckedPacketSentTime = sentTime
+ }
+
+ b.connectionStateMap.Emplace(packetNumber, newConnectionStateOnSentPacket(
+ sentTime,
+ bytes,
+ bytesInFlight+bytes,
+ b,
+ ))
+}
+
+func (b *bandwidthSampler) OnCongestionEvent(
+ ackTime time.Time,
+ ackedPackets []congestion.AckedPacketInfo,
+ lostPackets []congestion.LostPacketInfo,
+ maxBandwidth Bandwidth,
+ estBandwidthUpperBound Bandwidth,
+ roundTripCount roundTripCount,
+) congestionEventSample {
+ eventSample := newCongestionEventSample()
+
+ var lastLostPacketSendState sendTimeState
+
+ for _, p := range lostPackets {
+ sendState := b.OnPacketLost(p.PacketNumber, p.BytesLost)
+ if sendState.isValid {
+ lastLostPacketSendState = sendState
+ }
+ }
+
+ if len(ackedPackets) == 0 {
+ // Only populate send state for a loss-only event.
+ eventSample.lastPacketSendState = lastLostPacketSendState
+ return *eventSample
+ }
+
+ var lastAckedPacketSendState sendTimeState
+ var maxSendRate Bandwidth
+
+ for _, p := range ackedPackets {
+ sample := b.onPacketAcknowledged(ackTime, p.PacketNumber)
+ if !sample.stateAtSend.isValid {
+ continue
+ }
+
+ lastAckedPacketSendState = sample.stateAtSend
+
+ if sample.rtt != 0 {
+ eventSample.sampleRtt = Min(eventSample.sampleRtt, sample.rtt)
+ }
+ if sample.bandwidth > eventSample.sampleMaxBandwidth {
+ eventSample.sampleMaxBandwidth = sample.bandwidth
+ eventSample.sampleIsAppLimited = sample.stateAtSend.isAppLimited
+ }
+ if sample.sendRate != infBandwidth {
+ maxSendRate = Max(maxSendRate, sample.sendRate)
+ }
+ inflightSample := b.totalBytesAcked - lastAckedPacketSendState.totalBytesAcked
+ if inflightSample > eventSample.sampleMaxInflight {
+ eventSample.sampleMaxInflight = inflightSample
+ }
+ }
+
+ if !lastLostPacketSendState.isValid {
+ eventSample.lastPacketSendState = lastAckedPacketSendState
+ } else if !lastAckedPacketSendState.isValid {
+ eventSample.lastPacketSendState = lastLostPacketSendState
+ } else {
+ // If two packets are inflight and an alarm is armed to lose a packet and it
+ // wakes up late, then the first of two in flight packets could have been
+ // acknowledged before the wakeup, which re-evaluates loss detection, and
+ // could declare the later of the two lost.
+ if lostPackets[len(lostPackets)-1].PacketNumber > ackedPackets[len(ackedPackets)-1].PacketNumber {
+ eventSample.lastPacketSendState = lastLostPacketSendState
+ } else {
+ eventSample.lastPacketSendState = lastAckedPacketSendState
+ }
+ }
+
+ isNewMaxBandwidth := eventSample.sampleMaxBandwidth > maxBandwidth
+ maxBandwidth = Max(maxBandwidth, eventSample.sampleMaxBandwidth)
+ if b.limitMaxAckHeightTrackerBySendRate {
+ maxBandwidth = Max(maxBandwidth, maxSendRate)
+ }
+
+ eventSample.extraAcked = b.onAckEventEnd(Min(estBandwidthUpperBound, maxBandwidth), isNewMaxBandwidth, roundTripCount)
+
+ return *eventSample
+}
+
+func (b *bandwidthSampler) OnPacketLost(packetNumber congestion.PacketNumber, bytesLost congestion.ByteCount) (s sendTimeState) {
+ b.totalBytesLost += bytesLost
+ if sentPacketPointer := b.connectionStateMap.GetEntry(packetNumber); sentPacketPointer != nil {
+ sentPacketToSendTimeState(sentPacketPointer, &s)
+ }
+ return s
+}
+
+func (b *bandwidthSampler) OnPacketNeutered(packetNumber congestion.PacketNumber) {
+ b.connectionStateMap.Remove(packetNumber, func(sentPacket connectionStateOnSentPacket) {
+ b.totalBytesNeutered += sentPacket.size
+ })
+}
+
+func (b *bandwidthSampler) OnAppLimited() {
+ b.isAppLimited = true
+ b.endOfAppLimitedPhase = b.lastSentPacket
+}
+
+func (b *bandwidthSampler) RemoveObsoletePackets(leastUnacked congestion.PacketNumber) {
+ // A packet can become obsolete when it is removed from QuicUnackedPacketMap's
+ // view of inflight before it is acked or marked as lost. For example, when
+ // QuicSentPacketManager::RetransmitCryptoPackets retransmits a crypto packet,
+ // the packet is removed from QuicUnackedPacketMap's inflight, but is not
+ // marked as acked or lost in the BandwidthSampler.
+ b.connectionStateMap.RemoveUpTo(leastUnacked)
+}
+
+func (b *bandwidthSampler) TotalBytesSent() congestion.ByteCount {
+ return b.totalBytesSent
+}
+
+func (b *bandwidthSampler) TotalBytesLost() congestion.ByteCount {
+ return b.totalBytesLost
+}
+
+func (b *bandwidthSampler) TotalBytesAcked() congestion.ByteCount {
+ return b.totalBytesAcked
+}
+
+func (b *bandwidthSampler) TotalBytesNeutered() congestion.ByteCount {
+ return b.totalBytesNeutered
+}
+
+func (b *bandwidthSampler) IsAppLimited() bool {
+ return b.isAppLimited
+}
+
+func (b *bandwidthSampler) EndOfAppLimitedPhase() congestion.PacketNumber {
+ return b.endOfAppLimitedPhase
+}
+
+func (b *bandwidthSampler) max_ack_height() congestion.ByteCount {
+ return b.maxAckHeightTracker.Get()
+}
+
+func (b *bandwidthSampler) chooseA0Point(totalBytesAcked congestion.ByteCount, a0 *ackPoint) bool {
+ if b.a0Candidates.Empty() {
+ return false
+ }
+
+ if b.a0Candidates.Len() == 1 {
+ *a0 = *b.a0Candidates.Front()
+ return true
+ }
+
+ for i := 1; i < b.a0Candidates.Len(); i++ {
+ if b.a0Candidates.Offset(i).totalBytesAcked > totalBytesAcked {
+ *a0 = *b.a0Candidates.Offset(i - 1)
+ if i > 1 {
+ for j := 0; j < i-1; j++ {
+ b.a0Candidates.PopFront()
+ }
+ }
+ return true
+ }
+ }
+
+ *a0 = *b.a0Candidates.Back()
+ for k := 0; k < b.a0Candidates.Len()-1; k++ {
+ b.a0Candidates.PopFront()
+ }
+ return true
+}
+
+func (b *bandwidthSampler) onPacketAcknowledged(ackTime time.Time, packetNumber congestion.PacketNumber) bandwidthSample {
+ sample := newBandwidthSample()
+ b.lastAckedPacket = packetNumber
+ sentPacketPointer := b.connectionStateMap.GetEntry(packetNumber)
+ if sentPacketPointer == nil {
+ return *sample
+ }
+
+ // OnPacketAcknowledgedInner
+ b.totalBytesAcked += sentPacketPointer.size
+ b.totalBytesSentAtLastAckedPacket = sentPacketPointer.sendTimeState.totalBytesSent
+ b.lastAckedPacketSentTime = sentPacketPointer.sentTime
+ b.lastAckedPacketAckTime = ackTime
+ if b.overestimateAvoidance {
+ b.recentAckPoints.Update(ackTime, b.totalBytesAcked)
+ }
+
+ if b.isAppLimited {
+ // Exit app-limited phase in two cases:
+ // (1) end_of_app_limited_phase_ is not initialized, i.e., so far all
+ // packets are sent while there are buffered packets or pending data.
+ // (2) The current acked packet is after the sent packet marked as the end
+ // of the app limit phase.
+ if b.endOfAppLimitedPhase == invalidPacketNumber ||
+ packetNumber > b.endOfAppLimitedPhase {
+ b.isAppLimited = false
+ }
+ }
+
+ // There might have been no packets acknowledged at the moment when the
+ // current packet was sent. In that case, there is no bandwidth sample to
+ // make.
+ if sentPacketPointer.lastAckedPacketSentTime.IsZero() {
+ return *sample
+ }
+
+ // Infinite rate indicates that the sampler is supposed to discard the
+ // current send rate sample and use only the ack rate.
+ sendRate := infBandwidth
+ if sentPacketPointer.sentTime.After(sentPacketPointer.lastAckedPacketSentTime) {
+ sendRate = BandwidthFromDelta(
+ sentPacketPointer.sendTimeState.totalBytesSent-sentPacketPointer.totalBytesSentAtLastAckedPacket,
+ sentPacketPointer.sentTime.Sub(sentPacketPointer.lastAckedPacketSentTime))
+ }
+
+ var a0 ackPoint
+ if b.overestimateAvoidance && b.chooseA0Point(sentPacketPointer.sendTimeState.totalBytesAcked, &a0) {
+ } else {
+ a0.ackTime = sentPacketPointer.lastAckedPacketAckTime
+ a0.totalBytesAcked = sentPacketPointer.sendTimeState.totalBytesAcked
+ }
+
+ // During the slope calculation, ensure that ack time of the current packet is
+ // always larger than the time of the previous packet, otherwise division by
+ // zero or integer underflow can occur.
+ if ackTime.Sub(a0.ackTime) <= 0 {
+ return *sample
+ }
+
+ ackRate := BandwidthFromDelta(b.totalBytesAcked-a0.totalBytesAcked, ackTime.Sub(a0.ackTime))
+
+ sample.bandwidth = Min(sendRate, ackRate)
+ // Note: this sample does not account for delayed acknowledgement time. This
+ // means that the RTT measurements here can be artificially high, especially
+ // on low bandwidth connections.
+ sample.rtt = ackTime.Sub(sentPacketPointer.sentTime)
+ sample.sendRate = sendRate
+ sentPacketToSendTimeState(sentPacketPointer, &sample.stateAtSend)
+
+ return *sample
+}
+
+func (b *bandwidthSampler) onAckEventEnd(
+ bandwidthEstimate Bandwidth,
+ isNewMaxBandwidth bool,
+ roundTripCount roundTripCount,
+) congestion.ByteCount {
+ newlyAckedBytes := b.totalBytesAcked - b.totalBytesAckedAfterLastAckEvent
+ if newlyAckedBytes == 0 {
+ return 0
+ }
+ b.totalBytesAckedAfterLastAckEvent = b.totalBytesAcked
+ extraAcked := b.maxAckHeightTracker.Update(
+ bandwidthEstimate,
+ isNewMaxBandwidth,
+ roundTripCount,
+ b.lastSentPacket,
+ b.lastAckedPacket,
+ b.lastAckedPacketAckTime,
+ newlyAckedBytes)
+ // If |extra_acked| is zero, i.e. this ack event marks the start of a new ack
+ // aggregation epoch, save LessRecentPoint, which is the last ack point of the
+ // previous epoch, as a A0 candidate.
+ if b.overestimateAvoidance && extraAcked == 0 {
+ b.a0Candidates.PushBack(*b.recentAckPoints.LessRecentPoint())
+ }
+ return extraAcked
+}
+
+func sentPacketToSendTimeState(sentPacket *connectionStateOnSentPacket, sendTimeState *sendTimeState) {
+ *sendTimeState = sentPacket.sendTimeState
+ sendTimeState.isValid = true
+}
+
+// BytesFromBandwidthAndTimeDelta calculates the bytes
+// from a bandwidth(bits per second) and a time delta
+func bytesFromBandwidthAndTimeDelta(bandwidth Bandwidth, delta time.Duration) congestion.ByteCount {
+ return (congestion.ByteCount(bandwidth) * congestion.ByteCount(delta)) /
+ (congestion.ByteCount(time.Second) * 8)
+}
+
+func timeDeltaFromBytesAndBandwidth(bytes congestion.ByteCount, bandwidth Bandwidth) time.Duration {
+ return time.Duration(bytes*8) * time.Second / time.Duration(bandwidth)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/bbr_sender.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/bbr_sender.go
new file mode 100644
index 0000000..d8852fb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/bbr_sender.go
@@ -0,0 +1,935 @@
+package congestion
+
+// src from https://github.com/google/quiche/blob/e7872fc9e12bb1d46a118949c3d4da36de58aa44/quiche/quic/core/congestion_control/bbr_sender.cc
+
+import (
+ "fmt"
+ "time"
+
+ "github.com/metacubex/quic-go"
+ "github.com/metacubex/quic-go/congestion"
+
+ "github.com/metacubex/randv2"
+)
+
+// BbrSender implements BBR congestion control algorithm. BBR aims to estimate
+// the current available Bottleneck Bandwidth and RTT (hence the name), and
+// regulates the pacing rate and the size of the congestion window based on
+// those signals.
+//
+// BBR relies on pacing in order to function properly. Do not use BBR when
+// pacing is disabled.
+//
+
+const (
+ minBps = 65536 // 64 kbps
+
+ invalidPacketNumber = -1
+ initialCongestionWindowPackets = 32
+
+ // Constants based on TCP defaults.
+ // The minimum CWND to ensure delayed acks don't reduce bandwidth measurements.
+ // Does not inflate the pacing rate.
+ defaultMinimumCongestionWindow = 4 * congestion.ByteCount(congestion.InitialPacketSize)
+
+ // The gain used for the STARTUP, equal to 2/ln(2).
+ defaultHighGain = 2.885
+ // The newly derived gain for STARTUP, equal to 4 * ln(2)
+ derivedHighGain = 2.773
+ // The newly derived CWND gain for STARTUP, 2.
+ derivedHighCWNDGain = 2.0
+)
+
+// The cycle of gains used during the PROBE_BW stage.
+var pacingGain = [...]float64{1.25, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}
+
+const (
+ // The length of the gain cycle.
+ gainCycleLength = len(pacingGain)
+ // The size of the bandwidth filter window, in round-trips.
+ bandwidthWindowSize = gainCycleLength + 2
+
+ // The time after which the current min_rtt value expires.
+ minRttExpiry = 10 * time.Second
+ // The minimum time the connection can spend in PROBE_RTT mode.
+ probeRttTime = 200 * time.Millisecond
+ // If the bandwidth does not increase by the factor of |kStartupGrowthTarget|
+ // within |kRoundTripsWithoutGrowthBeforeExitingStartup| rounds, the connection
+ // will exit the STARTUP mode.
+ startupGrowthTarget = 1.25
+ roundTripsWithoutGrowthBeforeExitingStartup = int64(3)
+
+ // Flag.
+ defaultStartupFullLossCount = 8
+ quicBbr2DefaultLossThreshold = 0.02
+ maxBbrBurstPackets = 10
+)
+
+type bbrMode int
+
+const (
+ // Startup phase of the connection.
+ bbrModeStartup = iota
+ // After achieving the highest possible bandwidth during the startup, lower
+ // the pacing rate in order to drain the queue.
+ bbrModeDrain
+ // Cruising mode.
+ bbrModeProbeBw
+ // Temporarily slow down sending in order to empty the buffer and measure
+ // the real minimum RTT.
+ bbrModeProbeRtt
+)
+
+// Indicates how the congestion control limits the amount of bytes in flight.
+type bbrRecoveryState int
+
+const (
+ // Do not limit.
+ bbrRecoveryStateNotInRecovery = iota
+ // Allow an extra outstanding byte for each byte acknowledged.
+ bbrRecoveryStateConservation
+ // Allow two extra outstanding bytes for each byte acknowledged (slow
+ // start).
+ bbrRecoveryStateGrowth
+)
+
+type bbrSender struct {
+ rttStats congestion.RTTStatsProvider
+ clock Clock
+ pacer *Pacer
+
+ mode bbrMode
+
+ // Bandwidth sampler provides BBR with the bandwidth measurements at
+ // individual points.
+ sampler *bandwidthSampler
+
+ // The number of the round trips that have occurred during the connection.
+ roundTripCount roundTripCount
+
+ // The packet number of the most recently sent packet.
+ lastSentPacket congestion.PacketNumber
+ // Acknowledgement of any packet after |current_round_trip_end_| will cause
+ // the round trip counter to advance.
+ currentRoundTripEnd congestion.PacketNumber
+
+ // Number of congestion events with some losses, in the current round.
+ numLossEventsInRound uint64
+
+ // Number of total bytes lost in the current round.
+ bytesLostInRound congestion.ByteCount
+
+ // The filter that tracks the maximum bandwidth over the multiple recent
+ // round-trips.
+ maxBandwidth *WindowedFilter[Bandwidth, roundTripCount]
+
+ // Minimum RTT estimate. Automatically expires within 10 seconds (and
+ // triggers PROBE_RTT mode) if no new value is sampled during that period.
+ minRtt time.Duration
+ // The time at which the current value of |min_rtt_| was assigned.
+ minRttTimestamp time.Time
+
+ // The maximum allowed number of bytes in flight.
+ congestionWindow congestion.ByteCount
+
+ // The initial value of the |congestion_window_|.
+ initialCongestionWindow congestion.ByteCount
+
+ // The largest value the |congestion_window_| can achieve.
+ maxCongestionWindow congestion.ByteCount
+
+ // The smallest value the |congestion_window_| can achieve.
+ minCongestionWindow congestion.ByteCount
+
+ // The pacing gain applied during the STARTUP phase.
+ highGain float64
+
+ // The CWND gain applied during the STARTUP phase.
+ highCwndGain float64
+
+ // The pacing gain applied during the DRAIN phase.
+ drainGain float64
+
+ // The current pacing rate of the connection.
+ pacingRate Bandwidth
+
+ // The gain currently applied to the pacing rate.
+ pacingGain float64
+ // The gain currently applied to the congestion window.
+ congestionWindowGain float64
+
+ // The gain used for the congestion window during PROBE_BW. Latched from
+ // quic_bbr_cwnd_gain flag.
+ congestionWindowGainConstant float64
+ // The number of RTTs to stay in STARTUP mode. Defaults to 3.
+ numStartupRtts int64
+
+ // Number of round-trips in PROBE_BW mode, used for determining the current
+ // pacing gain cycle.
+ cycleCurrentOffset int
+ // The time at which the last pacing gain cycle was started.
+ lastCycleStart time.Time
+
+ // Indicates whether the connection has reached the full bandwidth mode.
+ isAtFullBandwidth bool
+ // Number of rounds during which there was no significant bandwidth increase.
+ roundsWithoutBandwidthGain int64
+ // The bandwidth compared to which the increase is measured.
+ bandwidthAtLastRound Bandwidth
+
+ // Set to true upon exiting quiescence.
+ exitingQuiescence bool
+
+ // Time at which PROBE_RTT has to be exited. Setting it to zero indicates
+ // that the time is yet unknown as the number of packets in flight has not
+ // reached the required value.
+ exitProbeRttAt time.Time
+ // Indicates whether a round-trip has passed since PROBE_RTT became active.
+ probeRttRoundPassed bool
+
+ // Indicates whether the most recent bandwidth sample was marked as
+ // app-limited.
+ lastSampleIsAppLimited bool
+ // Indicates whether any non app-limited samples have been recorded.
+ hasNoAppLimitedSample bool
+
+ // Current state of recovery.
+ recoveryState bbrRecoveryState
+ // Receiving acknowledgement of a packet after |end_recovery_at_| will cause
+ // BBR to exit the recovery mode. A value above zero indicates at least one
+ // loss has been detected, so it must not be set back to zero.
+ endRecoveryAt congestion.PacketNumber
+ // A window used to limit the number of bytes in flight during loss recovery.
+ recoveryWindow congestion.ByteCount
+ // If true, consider all samples in recovery app-limited.
+ isAppLimitedRecovery bool // not used
+
+ // When true, pace at 1.5x and disable packet conservation in STARTUP.
+ slowerStartup bool // not used
+ // When true, disables packet conservation in STARTUP.
+ rateBasedStartup bool // not used
+
+ // When true, add the most recent ack aggregation measurement during STARTUP.
+ enableAckAggregationDuringStartup bool
+ // When true, expire the windowed ack aggregation values in STARTUP when
+ // bandwidth increases more than 25%.
+ expireAckAggregationInStartup bool
+
+ // If true, will not exit low gain mode until bytes_in_flight drops below BDP
+ // or it's time for high gain mode.
+ drainToTarget bool
+
+ // If true, slow down pacing rate in STARTUP when overshooting is detected.
+ detectOvershooting bool
+ // Bytes lost while detect_overshooting_ is true.
+ bytesLostWhileDetectingOvershooting congestion.ByteCount
+ // Slow down pacing rate if
+ // bytes_lost_while_detecting_overshooting_ *
+ // bytes_lost_multiplier_while_detecting_overshooting_ > IW.
+ bytesLostMultiplierWhileDetectingOvershooting uint8
+ // When overshooting is detected, do not drop pacing_rate_ below this value /
+ // min_rtt.
+ cwndToCalculateMinPacingRate congestion.ByteCount
+
+ // Max congestion window when adjusting network parameters.
+ maxCongestionWindowWithNetworkParametersAdjusted congestion.ByteCount // not used
+
+ // Params.
+ maxDatagramSize congestion.ByteCount
+ // Recorded on packet sent. equivalent |unacked_packets_->bytes_in_flight()|
+ bytesInFlight congestion.ByteCount
+}
+
+var _ congestion.CongestionControl = &bbrSender{}
+
+func NewBbrSender(
+ clock Clock,
+ initialMaxDatagramSize congestion.ByteCount,
+ initialCongestionWindowPackets congestion.ByteCount,
+) *bbrSender {
+ return newBbrSender(
+ clock,
+ initialMaxDatagramSize,
+ initialCongestionWindowPackets*initialMaxDatagramSize,
+ congestion.MaxCongestionWindowPackets*initialMaxDatagramSize,
+ )
+}
+
+func newBbrSender(
+ clock Clock,
+ initialMaxDatagramSize,
+ initialCongestionWindow,
+ initialMaxCongestionWindow congestion.ByteCount,
+) *bbrSender {
+ b := &bbrSender{
+ clock: clock,
+ mode: bbrModeStartup,
+ sampler: newBandwidthSampler(roundTripCount(bandwidthWindowSize)),
+ lastSentPacket: invalidPacketNumber,
+ currentRoundTripEnd: invalidPacketNumber,
+ maxBandwidth: NewWindowedFilter(roundTripCount(bandwidthWindowSize), MaxFilter[Bandwidth]),
+ congestionWindow: initialCongestionWindow,
+ initialCongestionWindow: initialCongestionWindow,
+ maxCongestionWindow: initialMaxCongestionWindow,
+ minCongestionWindow: defaultMinimumCongestionWindow,
+ highGain: defaultHighGain,
+ highCwndGain: defaultHighGain,
+ drainGain: 1.0 / defaultHighGain,
+ pacingGain: 1.0,
+ congestionWindowGain: 1.0,
+ congestionWindowGainConstant: 2.0,
+ numStartupRtts: roundTripsWithoutGrowthBeforeExitingStartup,
+ recoveryState: bbrRecoveryStateNotInRecovery,
+ endRecoveryAt: invalidPacketNumber,
+ recoveryWindow: initialMaxCongestionWindow,
+ bytesLostMultiplierWhileDetectingOvershooting: 2,
+ cwndToCalculateMinPacingRate: initialCongestionWindow,
+ maxCongestionWindowWithNetworkParametersAdjusted: initialMaxCongestionWindow,
+ maxDatagramSize: initialMaxDatagramSize,
+ }
+ b.pacer = NewPacer(b.bandwidthForPacer)
+
+ /*
+ if b.tracer != nil {
+ b.lastState = logging.CongestionStateStartup
+ b.tracer.UpdatedCongestionState(logging.CongestionStateStartup)
+ }
+ */
+
+ b.enterStartupMode(b.clock.Now())
+ b.setHighCwndGain(derivedHighCWNDGain)
+
+ return b
+}
+
+func (b *bbrSender) SetRTTStatsProvider(provider congestion.RTTStatsProvider) {
+ b.rttStats = provider
+}
+
+// TimeUntilSend implements the SendAlgorithm interface.
+func (b *bbrSender) TimeUntilSend(bytesInFlight congestion.ByteCount) time.Time {
+ return b.pacer.TimeUntilSend()
+}
+
+// HasPacingBudget implements the SendAlgorithm interface.
+func (b *bbrSender) HasPacingBudget(now time.Time) bool {
+ return b.pacer.Budget(now) >= b.maxDatagramSize
+}
+
+// OnPacketSent implements the SendAlgorithm interface.
+func (b *bbrSender) OnPacketSent(
+ sentTime time.Time,
+ bytesInFlight congestion.ByteCount,
+ packetNumber congestion.PacketNumber,
+ bytes congestion.ByteCount,
+ isRetransmittable bool,
+) {
+ b.pacer.SentPacket(sentTime, bytes)
+
+ b.lastSentPacket = packetNumber
+ b.bytesInFlight = bytesInFlight
+
+ if bytesInFlight == 0 {
+ b.exitingQuiescence = true
+ }
+
+ b.sampler.OnPacketSent(sentTime, packetNumber, bytes, bytesInFlight, isRetransmittable)
+
+ b.maybeAppLimited(bytesInFlight)
+}
+
+// CanSend implements the SendAlgorithm interface.
+func (b *bbrSender) CanSend(bytesInFlight congestion.ByteCount) bool {
+ return bytesInFlight < b.GetCongestionWindow()
+}
+
+// MaybeExitSlowStart implements the SendAlgorithm interface.
+func (b *bbrSender) MaybeExitSlowStart() {
+ // Do nothing
+}
+
+// OnPacketAcked implements the SendAlgorithm interface.
+func (b *bbrSender) OnPacketAcked(number congestion.PacketNumber, ackedBytes, priorInFlight congestion.ByteCount, eventTime time.Time) {
+ // Do nothing.
+}
+
+// OnPacketLost implements the SendAlgorithm interface.
+func (b *bbrSender) OnPacketLost(number congestion.PacketNumber, lostBytes, priorInFlight congestion.ByteCount) {
+ // Do nothing.
+}
+
+// OnRetransmissionTimeout implements the SendAlgorithm interface.
+func (b *bbrSender) OnRetransmissionTimeout(packetsRetransmitted bool) {
+ // Do nothing.
+}
+
+// SetMaxDatagramSize implements the SendAlgorithm interface.
+func (b *bbrSender) SetMaxDatagramSize(s congestion.ByteCount) {
+ if s < b.maxDatagramSize {
+ panic(fmt.Sprintf("congestion BUG: decreased max datagram size from %d to %d", b.maxDatagramSize, s))
+ }
+ cwndIsMinCwnd := b.congestionWindow == b.minCongestionWindow
+ b.maxDatagramSize = s
+ if cwndIsMinCwnd {
+ b.congestionWindow = b.minCongestionWindow
+ }
+ b.pacer.SetMaxDatagramSize(s)
+}
+
+// InSlowStart implements the SendAlgorithmWithDebugInfos interface.
+func (b *bbrSender) InSlowStart() bool {
+ return b.mode == bbrModeStartup
+}
+
+// InRecovery implements the SendAlgorithmWithDebugInfos interface.
+func (b *bbrSender) InRecovery() bool {
+ return b.recoveryState != bbrRecoveryStateNotInRecovery
+}
+
+// GetCongestionWindow implements the SendAlgorithmWithDebugInfos interface.
+func (b *bbrSender) GetCongestionWindow() congestion.ByteCount {
+ if b.mode == bbrModeProbeRtt {
+ return b.probeRttCongestionWindow()
+ }
+
+ if b.InRecovery() {
+ return Min(b.congestionWindow, b.recoveryWindow)
+ }
+
+ return b.congestionWindow
+}
+
+func (b *bbrSender) OnCongestionEvent(number congestion.PacketNumber, lostBytes, priorInFlight congestion.ByteCount) {
+ // Do nothing.
+}
+
+func (b *bbrSender) OnCongestionEventEx(priorInFlight congestion.ByteCount, eventTime time.Time, ackedPackets []congestion.AckedPacketInfo, lostPackets []congestion.LostPacketInfo) {
+ totalBytesAckedBefore := b.sampler.TotalBytesAcked()
+ totalBytesLostBefore := b.sampler.TotalBytesLost()
+
+ var isRoundStart, minRttExpired bool
+ var excessAcked, bytesLost congestion.ByteCount
+
+ // The send state of the largest packet in acked_packets, unless it is
+ // empty. If acked_packets is empty, it's the send state of the largest
+ // packet in lost_packets.
+ var lastPacketSendState sendTimeState
+
+ // Update bytesInFlight
+ b.bytesInFlight = priorInFlight
+ for _, p := range ackedPackets {
+ b.bytesInFlight -= p.BytesAcked
+ }
+ for _, p := range lostPackets {
+ b.bytesInFlight -= p.BytesLost
+ }
+
+ if len(ackedPackets) != 0 {
+ lastAckedPacket := ackedPackets[len(ackedPackets)-1].PacketNumber
+ isRoundStart = b.updateRoundTripCounter(lastAckedPacket)
+ b.updateRecoveryState(lastAckedPacket, len(lostPackets) != 0, isRoundStart)
+ }
+
+ sample := b.sampler.OnCongestionEvent(eventTime,
+ ackedPackets, lostPackets, b.maxBandwidth.GetBest(), infBandwidth, b.roundTripCount)
+ if sample.lastPacketSendState.isValid {
+ b.lastSampleIsAppLimited = sample.lastPacketSendState.isAppLimited
+ b.hasNoAppLimitedSample = b.hasNoAppLimitedSample || !b.lastSampleIsAppLimited
+ }
+ // Avoid updating |max_bandwidth_| if a) this is a loss-only event, or b) all
+ // packets in |acked_packets| did not generate valid samples. (e.g. ack of
+ // ack-only packets). In both cases, sampler_.total_bytes_acked() will not
+ // change.
+ if totalBytesAckedBefore != b.sampler.TotalBytesAcked() {
+ if !sample.sampleIsAppLimited || sample.sampleMaxBandwidth > b.maxBandwidth.GetBest() {
+ b.maxBandwidth.Update(sample.sampleMaxBandwidth, b.roundTripCount)
+ }
+ }
+
+ if sample.sampleRtt != infRTT {
+ minRttExpired = b.maybeUpdateMinRtt(eventTime, sample.sampleRtt)
+ }
+ bytesLost = b.sampler.TotalBytesLost() - totalBytesLostBefore
+
+ excessAcked = sample.extraAcked
+ lastPacketSendState = sample.lastPacketSendState
+
+ if len(lostPackets) != 0 {
+ b.numLossEventsInRound++
+ b.bytesLostInRound += bytesLost
+ }
+
+ // Handle logic specific to PROBE_BW mode.
+ if b.mode == bbrModeProbeBw {
+ b.updateGainCyclePhase(eventTime, priorInFlight, len(lostPackets) != 0)
+ }
+
+ // Handle logic specific to STARTUP and DRAIN modes.
+ if isRoundStart && !b.isAtFullBandwidth {
+ b.checkIfFullBandwidthReached(&lastPacketSendState)
+ }
+
+ b.maybeExitStartupOrDrain(eventTime)
+
+ // Handle logic specific to PROBE_RTT.
+ b.maybeEnterOrExitProbeRtt(eventTime, isRoundStart, minRttExpired)
+
+ // Calculate number of packets acked and lost.
+ bytesAcked := b.sampler.TotalBytesAcked() - totalBytesAckedBefore
+
+ // After the model is updated, recalculate the pacing rate and congestion
+ // window.
+ b.calculatePacingRate(bytesLost)
+ b.calculateCongestionWindow(bytesAcked, excessAcked)
+ b.calculateRecoveryWindow(bytesAcked, bytesLost)
+
+ // Cleanup internal state.
+ // This is where we clean up obsolete (acked or lost) packets from the bandwidth sampler.
+ // The "least unacked" should actually be FirstOutstanding, but since we are not passing
+ // that through OnCongestionEventEx, we will only do an estimate using acked/lost packets
+ // for now. Because of fast retransmission, they should differ by no more than 2 packets.
+ // (this is controlled by packetThreshold in quic-go's sentPacketHandler)
+ var leastUnacked congestion.PacketNumber
+ if len(ackedPackets) != 0 {
+ leastUnacked = ackedPackets[len(ackedPackets)-1].PacketNumber - 2
+ } else {
+ leastUnacked = lostPackets[len(lostPackets)-1].PacketNumber + 1
+ }
+ b.sampler.RemoveObsoletePackets(leastUnacked)
+
+ if isRoundStart {
+ b.numLossEventsInRound = 0
+ b.bytesLostInRound = 0
+ }
+}
+
+func (b *bbrSender) PacingRate() Bandwidth {
+ if b.pacingRate == 0 {
+ return Bandwidth(b.highGain * float64(
+ BandwidthFromDelta(b.initialCongestionWindow, b.getMinRtt())))
+ }
+
+ return b.pacingRate
+}
+
+func (b *bbrSender) hasGoodBandwidthEstimateForResumption() bool {
+ return b.hasNonAppLimitedSample()
+}
+
+func (b *bbrSender) hasNonAppLimitedSample() bool {
+ return b.hasNoAppLimitedSample
+}
+
+// Sets the pacing gain used in STARTUP. Must be greater than 1.
+func (b *bbrSender) setHighGain(highGain float64) {
+ b.highGain = highGain
+ if b.mode == bbrModeStartup {
+ b.pacingGain = highGain
+ }
+}
+
+// Sets the CWND gain used in STARTUP. Must be greater than 1.
+func (b *bbrSender) setHighCwndGain(highCwndGain float64) {
+ b.highCwndGain = highCwndGain
+ if b.mode == bbrModeStartup {
+ b.congestionWindowGain = highCwndGain
+ }
+}
+
+// Sets the gain used in DRAIN. Must be less than 1.
+func (b *bbrSender) setDrainGain(drainGain float64) {
+ b.drainGain = drainGain
+}
+
+// Get the current bandwidth estimate. Note that Bandwidth is in bits per second.
+func (b *bbrSender) bandwidthEstimate() Bandwidth {
+ return b.maxBandwidth.GetBest()
+}
+
+func (b *bbrSender) bandwidthForPacer() congestion.ByteCount {
+ bps := congestion.ByteCount(float64(b.bandwidthEstimate()) * b.congestionWindowGain / float64(BytesPerSecond))
+ if bps < minBps {
+ // We need to make sure that the bandwidth value for pacer is never zero,
+ // otherwise it will go into an edge case where HasPacingBudget = false
+ // but TimeUntilSend is before, causing the quic-go send loop to go crazy and get stuck.
+ return minBps
+ }
+ return bps
+}
+
+// Returns the current estimate of the RTT of the connection. Outside of the
+// edge cases, this is minimum RTT.
+func (b *bbrSender) getMinRtt() time.Duration {
+ if b.minRtt != 0 {
+ return b.minRtt
+ }
+ // min_rtt could be available if the handshake packet gets neutered then
+ // gets acknowledged. This could only happen for QUIC crypto where we do not
+ // drop keys.
+ minRtt := b.rttStats.MinRTT()
+ if minRtt == 0 {
+ return 100 * time.Millisecond
+ } else {
+ return minRtt
+ }
+}
+
+// Computes the target congestion window using the specified gain.
+func (b *bbrSender) getTargetCongestionWindow(gain float64) congestion.ByteCount {
+ bdp := bdpFromRttAndBandwidth(b.getMinRtt(), b.bandwidthEstimate())
+ congestionWindow := congestion.ByteCount(gain * float64(bdp))
+
+ // BDP estimate will be zero if no bandwidth samples are available yet.
+ if congestionWindow == 0 {
+ congestionWindow = congestion.ByteCount(gain * float64(b.initialCongestionWindow))
+ }
+
+ return Max(congestionWindow, b.minCongestionWindow)
+}
+
+// The target congestion window during PROBE_RTT.
+func (b *bbrSender) probeRttCongestionWindow() congestion.ByteCount {
+ return b.minCongestionWindow
+}
+
+func (b *bbrSender) maybeUpdateMinRtt(now time.Time, sampleMinRtt time.Duration) bool {
+ // Do not expire min_rtt if none was ever available.
+ minRttExpired := b.minRtt != 0 && now.After(b.minRttTimestamp.Add(minRttExpiry))
+ if minRttExpired || sampleMinRtt < b.minRtt || b.minRtt == 0 {
+ b.minRtt = sampleMinRtt
+ b.minRttTimestamp = now
+ }
+
+ return minRttExpired
+}
+
+// Enters the STARTUP mode.
+func (b *bbrSender) enterStartupMode(now time.Time) {
+ b.mode = bbrModeStartup
+ // b.maybeTraceStateChange(logging.CongestionStateStartup)
+ b.pacingGain = b.highGain
+ b.congestionWindowGain = b.highCwndGain
+}
+
+// Enters the PROBE_BW mode.
+func (b *bbrSender) enterProbeBandwidthMode(now time.Time) {
+ b.mode = bbrModeProbeBw
+ // b.maybeTraceStateChange(logging.CongestionStateProbeBw)
+ b.congestionWindowGain = b.congestionWindowGainConstant
+
+ // Pick a random offset for the gain cycle out of {0, 2..7} range. 1 is
+ // excluded because in that case increased gain and decreased gain would not
+ // follow each other.
+ b.cycleCurrentOffset = int(randv2.Int32N(congestion.PacketsPerConnectionID)) % (gainCycleLength - 1)
+ if b.cycleCurrentOffset >= 1 {
+ b.cycleCurrentOffset += 1
+ }
+
+ b.lastCycleStart = now
+ b.pacingGain = pacingGain[b.cycleCurrentOffset]
+}
+
+// Updates the round-trip counter if a round-trip has passed. Returns true if
+// the counter has been advanced.
+func (b *bbrSender) updateRoundTripCounter(lastAckedPacket congestion.PacketNumber) bool {
+ if b.currentRoundTripEnd == invalidPacketNumber || lastAckedPacket > b.currentRoundTripEnd {
+ b.roundTripCount++
+ b.currentRoundTripEnd = b.lastSentPacket
+ return true
+ }
+ return false
+}
+
+// Updates the current gain used in PROBE_BW mode.
+func (b *bbrSender) updateGainCyclePhase(now time.Time, priorInFlight congestion.ByteCount, hasLosses bool) {
+ // In most cases, the cycle is advanced after an RTT passes.
+ shouldAdvanceGainCycling := now.After(b.lastCycleStart.Add(b.getMinRtt()))
+ // If the pacing gain is above 1.0, the connection is trying to probe the
+ // bandwidth by increasing the number of bytes in flight to at least
+ // pacing_gain * BDP. Make sure that it actually reaches the target, as long
+ // as there are no losses suggesting that the buffers are not able to hold
+ // that much.
+ if b.pacingGain > 1.0 && !hasLosses && priorInFlight < b.getTargetCongestionWindow(b.pacingGain) {
+ shouldAdvanceGainCycling = false
+ }
+
+ // If pacing gain is below 1.0, the connection is trying to drain the extra
+ // queue which could have been incurred by probing prior to it. If the number
+ // of bytes in flight falls down to the estimated BDP value earlier, conclude
+ // that the queue has been successfully drained and exit this cycle early.
+ if b.pacingGain < 1.0 && b.bytesInFlight <= b.getTargetCongestionWindow(1) {
+ shouldAdvanceGainCycling = true
+ }
+
+ if shouldAdvanceGainCycling {
+ b.cycleCurrentOffset = (b.cycleCurrentOffset + 1) % gainCycleLength
+ b.lastCycleStart = now
+ // Stay in low gain mode until the target BDP is hit.
+ // Low gain mode will be exited immediately when the target BDP is achieved.
+ if b.drainToTarget && b.pacingGain < 1 &&
+ pacingGain[b.cycleCurrentOffset] == 1 &&
+ b.bytesInFlight > b.getTargetCongestionWindow(1) {
+ return
+ }
+ b.pacingGain = pacingGain[b.cycleCurrentOffset]
+ }
+}
+
+// Tracks for how many round-trips the bandwidth has not increased
+// significantly.
+func (b *bbrSender) checkIfFullBandwidthReached(lastPacketSendState *sendTimeState) {
+ if b.lastSampleIsAppLimited {
+ return
+ }
+
+ target := Bandwidth(float64(b.bandwidthAtLastRound) * startupGrowthTarget)
+ if b.bandwidthEstimate() >= target {
+ b.bandwidthAtLastRound = b.bandwidthEstimate()
+ b.roundsWithoutBandwidthGain = 0
+ if b.expireAckAggregationInStartup {
+ // Expire old excess delivery measurements now that bandwidth increased.
+ b.sampler.ResetMaxAckHeightTracker(0, b.roundTripCount)
+ }
+ return
+ }
+
+ b.roundsWithoutBandwidthGain++
+ if b.roundsWithoutBandwidthGain >= b.numStartupRtts ||
+ b.shouldExitStartupDueToLoss(lastPacketSendState) {
+ b.isAtFullBandwidth = true
+ }
+}
+
+func (b *bbrSender) maybeAppLimited(bytesInFlight congestion.ByteCount) {
+ congestionWindow := b.GetCongestionWindow()
+ if bytesInFlight >= congestionWindow {
+ return
+ }
+ availableBytes := congestionWindow - bytesInFlight
+ if availableBytes > maxBbrBurstPackets*b.maxDatagramSize {
+ b.sampler.OnAppLimited()
+ }
+}
+
+// Transitions from STARTUP to DRAIN and from DRAIN to PROBE_BW if
+// appropriate.
+func (b *bbrSender) maybeExitStartupOrDrain(now time.Time) {
+ if b.mode == bbrModeStartup && b.isAtFullBandwidth {
+ b.mode = bbrModeDrain
+ // b.maybeTraceStateChange(logging.CongestionStateDrain)
+ b.pacingGain = b.drainGain
+ b.congestionWindowGain = b.highCwndGain
+ }
+ if b.mode == bbrModeDrain && b.bytesInFlight <= b.getTargetCongestionWindow(1) {
+ b.enterProbeBandwidthMode(now)
+ }
+}
+
+// Decides whether to enter or exit PROBE_RTT.
+func (b *bbrSender) maybeEnterOrExitProbeRtt(now time.Time, isRoundStart, minRttExpired bool) {
+ if minRttExpired && !b.exitingQuiescence && b.mode != bbrModeProbeRtt {
+ b.mode = bbrModeProbeRtt
+ // b.maybeTraceStateChange(logging.CongestionStateProbRtt)
+ b.pacingGain = 1.0
+ // Do not decide on the time to exit PROBE_RTT until the |bytes_in_flight|
+ // is at the target small value.
+ b.exitProbeRttAt = time.Time{}
+ }
+
+ if b.mode == bbrModeProbeRtt {
+ b.sampler.OnAppLimited()
+ // b.maybeTraceStateChange(logging.CongestionStateApplicationLimited)
+
+ if b.exitProbeRttAt.IsZero() {
+ // If the window has reached the appropriate size, schedule exiting
+ // PROBE_RTT. The CWND during PROBE_RTT is kMinimumCongestionWindow, but
+ // we allow an extra packet since QUIC checks CWND before sending a
+ // packet.
+ if b.bytesInFlight < b.probeRttCongestionWindow()+congestion.MaxPacketBufferSize {
+ b.exitProbeRttAt = now.Add(probeRttTime)
+ b.probeRttRoundPassed = false
+ }
+ } else {
+ if isRoundStart {
+ b.probeRttRoundPassed = true
+ }
+ if now.Sub(b.exitProbeRttAt) >= 0 && b.probeRttRoundPassed {
+ b.minRttTimestamp = now
+ if !b.isAtFullBandwidth {
+ b.enterStartupMode(now)
+ } else {
+ b.enterProbeBandwidthMode(now)
+ }
+ }
+ }
+ }
+
+ b.exitingQuiescence = false
+}
+
+// Determines whether BBR needs to enter, exit or advance state of the
+// recovery.
+func (b *bbrSender) updateRecoveryState(lastAckedPacket congestion.PacketNumber, hasLosses, isRoundStart bool) {
+ // Disable recovery in startup, if loss-based exit is enabled.
+ if !b.isAtFullBandwidth {
+ return
+ }
+
+ // Exit recovery when there are no losses for a round.
+ if hasLosses {
+ b.endRecoveryAt = b.lastSentPacket
+ }
+
+ switch b.recoveryState {
+ case bbrRecoveryStateNotInRecovery:
+ if hasLosses {
+ b.recoveryState = bbrRecoveryStateConservation
+ // This will cause the |recovery_window_| to be set to the correct
+ // value in CalculateRecoveryWindow().
+ b.recoveryWindow = 0
+ // Since the conservation phase is meant to be lasting for a whole
+ // round, extend the current round as if it were started right now.
+ b.currentRoundTripEnd = b.lastSentPacket
+ }
+ case bbrRecoveryStateConservation:
+ if isRoundStart {
+ b.recoveryState = bbrRecoveryStateGrowth
+ }
+ fallthrough
+ case bbrRecoveryStateGrowth:
+ // Exit recovery if appropriate.
+ if !hasLosses && lastAckedPacket > b.endRecoveryAt {
+ b.recoveryState = bbrRecoveryStateNotInRecovery
+ }
+ }
+}
+
+// Determines the appropriate pacing rate for the connection.
+func (b *bbrSender) calculatePacingRate(bytesLost congestion.ByteCount) {
+ if b.bandwidthEstimate() == 0 {
+ return
+ }
+
+ targetRate := Bandwidth(b.pacingGain * float64(b.bandwidthEstimate()))
+ if b.isAtFullBandwidth {
+ b.pacingRate = targetRate
+ return
+ }
+
+ // Pace at the rate of initial_window / RTT as soon as RTT measurements are
+ // available.
+ if b.pacingRate == 0 && b.rttStats.MinRTT() != 0 {
+ b.pacingRate = BandwidthFromDelta(b.initialCongestionWindow, b.rttStats.MinRTT())
+ return
+ }
+
+ if b.detectOvershooting {
+ b.bytesLostWhileDetectingOvershooting += bytesLost
+ // Check for overshooting with network parameters adjusted when pacing rate
+ // > target_rate and loss has been detected.
+ if b.pacingRate > targetRate && b.bytesLostWhileDetectingOvershooting > 0 {
+ if b.hasNoAppLimitedSample ||
+ b.bytesLostWhileDetectingOvershooting*congestion.ByteCount(b.bytesLostMultiplierWhileDetectingOvershooting) > b.initialCongestionWindow {
+ // We are fairly sure overshoot happens if 1) there is at least one
+ // non app-limited bw sample or 2) half of IW gets lost. Slow pacing
+ // rate.
+ b.pacingRate = Max(targetRate, BandwidthFromDelta(b.cwndToCalculateMinPacingRate, b.rttStats.MinRTT()))
+ b.bytesLostWhileDetectingOvershooting = 0
+ b.detectOvershooting = false
+ }
+ }
+ }
+
+ // Do not decrease the pacing rate during startup.
+ b.pacingRate = Max(b.pacingRate, targetRate)
+}
+
+// Determines the appropriate congestion window for the connection.
+func (b *bbrSender) calculateCongestionWindow(bytesAcked, excessAcked congestion.ByteCount) {
+ if b.mode == bbrModeProbeRtt {
+ return
+ }
+
+ targetWindow := b.getTargetCongestionWindow(b.congestionWindowGain)
+ if b.isAtFullBandwidth {
+ // Add the max recently measured ack aggregation to CWND.
+ targetWindow += b.sampler.MaxAckHeight()
+ } else if b.enableAckAggregationDuringStartup {
+ // Add the most recent excess acked. Because CWND never decreases in
+ // STARTUP, this will automatically create a very localized max filter.
+ targetWindow += excessAcked
+ }
+
+ // Instead of immediately setting the target CWND as the new one, BBR grows
+ // the CWND towards |target_window| by only increasing it |bytes_acked| at a
+ // time.
+ if b.isAtFullBandwidth {
+ b.congestionWindow = Min(targetWindow, b.congestionWindow+bytesAcked)
+ } else if b.congestionWindow < targetWindow ||
+ b.sampler.TotalBytesAcked() < b.initialCongestionWindow {
+ // If the connection is not yet out of startup phase, do not decrease the
+ // window.
+ b.congestionWindow += bytesAcked
+ }
+
+ // Enforce the limits on the congestion window.
+ b.congestionWindow = Max(b.congestionWindow, b.minCongestionWindow)
+ b.congestionWindow = Min(b.congestionWindow, b.maxCongestionWindow)
+}
+
+// Determines the appropriate window that constrains the in-flight during recovery.
+func (b *bbrSender) calculateRecoveryWindow(bytesAcked, bytesLost congestion.ByteCount) {
+ if b.recoveryState == bbrRecoveryStateNotInRecovery {
+ return
+ }
+
+ // Set up the initial recovery window.
+ if b.recoveryWindow == 0 {
+ b.recoveryWindow = b.bytesInFlight + bytesAcked
+ b.recoveryWindow = Max(b.minCongestionWindow, b.recoveryWindow)
+ return
+ }
+
+ // Remove losses from the recovery window, while accounting for a potential
+ // integer underflow.
+ if b.recoveryWindow >= bytesLost {
+ b.recoveryWindow = b.recoveryWindow - bytesLost
+ } else {
+ b.recoveryWindow = b.maxDatagramSize
+ }
+
+ // In CONSERVATION mode, just subtracting losses is sufficient. In GROWTH,
+ // release additional |bytes_acked| to achieve a slow-start-like behavior.
+ if b.recoveryState == bbrRecoveryStateGrowth {
+ b.recoveryWindow += bytesAcked
+ }
+
+ // Always allow sending at least |bytes_acked| in response.
+ b.recoveryWindow = Max(b.recoveryWindow, b.bytesInFlight+bytesAcked)
+ b.recoveryWindow = Max(b.minCongestionWindow, b.recoveryWindow)
+}
+
+// Return whether we should exit STARTUP due to excessive loss.
+func (b *bbrSender) shouldExitStartupDueToLoss(lastPacketSendState *sendTimeState) bool {
+ if b.numLossEventsInRound < defaultStartupFullLossCount || !lastPacketSendState.isValid {
+ return false
+ }
+
+ inflightAtSend := lastPacketSendState.bytesInFlight
+
+ if inflightAtSend > 0 && b.bytesLostInRound > 0 {
+ if b.bytesLostInRound > congestion.ByteCount(float64(inflightAtSend)*quicBbr2DefaultLossThreshold) {
+ return true
+ }
+ return false
+ }
+ return false
+}
+
+func bdpFromRttAndBandwidth(rtt time.Duration, bandwidth Bandwidth) congestion.ByteCount {
+ return congestion.ByteCount(rtt) * congestion.ByteCount(bandwidth) / congestion.ByteCount(BytesPerSecond) / congestion.ByteCount(time.Second)
+}
+
+func GetInitialPacketSize(quicConn quic.Connection) congestion.ByteCount {
+ return congestion.ByteCount(quicConn.Config().InitialPacketSize)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/clock.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/clock.go
new file mode 100644
index 0000000..405fae7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/clock.go
@@ -0,0 +1,18 @@
+package congestion
+
+import "time"
+
+// A Clock returns the current time
+type Clock interface {
+ Now() time.Time
+}
+
+// DefaultClock implements the Clock interface using the Go stdlib clock.
+type DefaultClock struct{}
+
+var _ Clock = DefaultClock{}
+
+// Now gets the current time
+func (DefaultClock) Now() time.Time {
+ return time.Now()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/minmax_go120.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/minmax_go120.go
new file mode 100644
index 0000000..1266edb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/minmax_go120.go
@@ -0,0 +1,19 @@
+//go:build !go1.21
+
+package congestion
+
+import "golang.org/x/exp/constraints"
+
+func Max[T constraints.Ordered](a, b T) T {
+ if a < b {
+ return b
+ }
+ return a
+}
+
+func Min[T constraints.Ordered](a, b T) T {
+ if a < b {
+ return a
+ }
+ return b
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/minmax_go121.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/minmax_go121.go
new file mode 100644
index 0000000..65b0672
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/minmax_go121.go
@@ -0,0 +1,13 @@
+//go:build go1.21
+
+package congestion
+
+import "cmp"
+
+func Max[T cmp.Ordered](a, b T) T {
+ return max(a, b)
+}
+
+func Min[T cmp.Ordered](a, b T) T {
+ return min(a, b)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/pacer.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/pacer.go
new file mode 100644
index 0000000..174b3db
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/pacer.go
@@ -0,0 +1,74 @@
+package congestion
+
+import (
+ "math"
+ "time"
+
+ "github.com/metacubex/quic-go/congestion"
+)
+
+const (
+ maxBurstPackets = 10
+)
+
+// Pacer implements a token bucket pacing algorithm.
+type Pacer struct {
+ budgetAtLastSent congestion.ByteCount
+ maxDatagramSize congestion.ByteCount
+ lastSentTime time.Time
+ getBandwidth func() congestion.ByteCount // in bytes/s
+}
+
+func NewPacer(getBandwidth func() congestion.ByteCount) *Pacer {
+ p := &Pacer{
+ budgetAtLastSent: maxBurstPackets * congestion.InitialPacketSize,
+ maxDatagramSize: congestion.InitialPacketSize,
+ getBandwidth: getBandwidth,
+ }
+ return p
+}
+
+func (p *Pacer) SentPacket(sendTime time.Time, size congestion.ByteCount) {
+ budget := p.Budget(sendTime)
+ if size > budget {
+ p.budgetAtLastSent = 0
+ } else {
+ p.budgetAtLastSent = budget - size
+ }
+ p.lastSentTime = sendTime
+}
+
+func (p *Pacer) Budget(now time.Time) congestion.ByteCount {
+ if p.lastSentTime.IsZero() {
+ return p.maxBurstSize()
+ }
+ budget := p.budgetAtLastSent + (p.getBandwidth()*congestion.ByteCount(now.Sub(p.lastSentTime).Nanoseconds()))/1e9
+ if budget < 0 { // protect against overflows
+ budget = congestion.ByteCount(1<<62 - 1)
+ }
+ return Min(p.maxBurstSize(), budget)
+}
+
+func (p *Pacer) maxBurstSize() congestion.ByteCount {
+ return Max(
+ congestion.ByteCount((congestion.MinPacingDelay+time.Millisecond).Nanoseconds())*p.getBandwidth()/1e9,
+ maxBurstPackets*p.maxDatagramSize,
+ )
+}
+
+// TimeUntilSend returns when the next packet should be sent.
+// It returns the zero value of time.Time if a packet can be sent immediately.
+func (p *Pacer) TimeUntilSend() time.Time {
+ if p.budgetAtLastSent >= p.maxDatagramSize {
+ return time.Time{}
+ }
+ return p.lastSentTime.Add(Max(
+ congestion.MinPacingDelay,
+ time.Duration(math.Ceil(float64(p.maxDatagramSize-p.budgetAtLastSent)*1e9/
+ float64(p.getBandwidth())))*time.Nanosecond,
+ ))
+}
+
+func (p *Pacer) SetMaxDatagramSize(s congestion.ByteCount) {
+ p.maxDatagramSize = s
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/packet_number_indexed_queue.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/packet_number_indexed_queue.go
new file mode 100644
index 0000000..119d36f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/packet_number_indexed_queue.go
@@ -0,0 +1,199 @@
+package congestion
+
+import (
+ "github.com/metacubex/quic-go/congestion"
+)
+
+// packetNumberIndexedQueue is a queue of mostly continuous numbered entries
+// which supports the following operations:
+// - adding elements to the end of the queue, or at some point past the end
+// - removing elements in any order
+// - retrieving elements
+// If all elements are inserted in order, all of the operations above are
+// amortized O(1) time.
+//
+// Internally, the data structure is a deque where each element is marked as
+// present or not. The deque starts at the lowest present index. Whenever an
+// element is removed, it's marked as not present, and the front of the deque is
+// cleared of elements that are not present.
+//
+// The tail of the queue is not cleared due to the assumption of entries being
+// inserted in order, though removing all elements of the queue will return it
+// to its initial state.
+//
+// Note that this data structure is inherently hazardous, since an addition of
+// just two entries will cause it to consume all of the memory available.
+// Because of that, it is not a general-purpose container and should not be used
+// as one.
+
+type entryWrapper[T any] struct {
+ present bool
+ entry T
+}
+
+type packetNumberIndexedQueue[T any] struct {
+ entries RingBuffer[entryWrapper[T]]
+ numberOfPresentEntries int
+ firstPacket congestion.PacketNumber
+}
+
+func newPacketNumberIndexedQueue[T any](size int) *packetNumberIndexedQueue[T] {
+ q := &packetNumberIndexedQueue[T]{
+ firstPacket: invalidPacketNumber,
+ }
+
+ q.entries.Init(size)
+
+ return q
+}
+
+// Emplace inserts data associated |packet_number| into (or past) the end of the
+// queue, filling up the missing intermediate entries as necessary. Returns
+// true if the element has been inserted successfully, false if it was already
+// in the queue or inserted out of order.
+func (p *packetNumberIndexedQueue[T]) Emplace(packetNumber congestion.PacketNumber, entry *T) bool {
+ if packetNumber == invalidPacketNumber || entry == nil {
+ return false
+ }
+
+ if p.IsEmpty() {
+ p.entries.PushBack(entryWrapper[T]{
+ present: true,
+ entry: *entry,
+ })
+ p.numberOfPresentEntries = 1
+ p.firstPacket = packetNumber
+ return true
+ }
+
+ // Do not allow insertion out-of-order.
+ if packetNumber <= p.LastPacket() {
+ return false
+ }
+
+ // Handle potentially missing elements.
+ offset := int(packetNumber - p.FirstPacket())
+ if gap := offset - p.entries.Len(); gap > 0 {
+ for i := 0; i < gap; i++ {
+ p.entries.PushBack(entryWrapper[T]{})
+ }
+ }
+
+ p.entries.PushBack(entryWrapper[T]{
+ present: true,
+ entry: *entry,
+ })
+ p.numberOfPresentEntries++
+ return true
+}
+
+// GetEntry Retrieve the entry associated with the packet number. Returns the pointer
+// to the entry in case of success, or nullptr if the entry does not exist.
+func (p *packetNumberIndexedQueue[T]) GetEntry(packetNumber congestion.PacketNumber) *T {
+ ew := p.getEntryWraper(packetNumber)
+ if ew == nil {
+ return nil
+ }
+
+ return &ew.entry
+}
+
+// Remove, Same as above, but if an entry is present in the queue, also call f(entry)
+// before removing it.
+func (p *packetNumberIndexedQueue[T]) Remove(packetNumber congestion.PacketNumber, f func(T)) bool {
+ ew := p.getEntryWraper(packetNumber)
+ if ew == nil {
+ return false
+ }
+ if f != nil {
+ f(ew.entry)
+ }
+ ew.present = false
+ p.numberOfPresentEntries--
+
+ if packetNumber == p.FirstPacket() {
+ p.clearup()
+ }
+
+ return true
+}
+
+// RemoveUpTo, but not including |packet_number|.
+// Unused slots in the front are also removed, which means when the function
+// returns, |first_packet()| can be larger than |packet_number|.
+func (p *packetNumberIndexedQueue[T]) RemoveUpTo(packetNumber congestion.PacketNumber) {
+ for !p.entries.Empty() &&
+ p.firstPacket != invalidPacketNumber &&
+ p.firstPacket < packetNumber {
+ if p.entries.Front().present {
+ p.numberOfPresentEntries--
+ }
+ p.entries.PopFront()
+ p.firstPacket++
+ }
+ p.clearup()
+
+ return
+}
+
+// IsEmpty return if queue is empty.
+func (p *packetNumberIndexedQueue[T]) IsEmpty() bool {
+ return p.numberOfPresentEntries == 0
+}
+
+// NumberOfPresentEntries returns the number of entries in the queue.
+func (p *packetNumberIndexedQueue[T]) NumberOfPresentEntries() int {
+ return p.numberOfPresentEntries
+}
+
+// EntrySlotsUsed returns the number of entries allocated in the underlying deque. This is
+// proportional to the memory usage of the queue.
+func (p *packetNumberIndexedQueue[T]) EntrySlotsUsed() int {
+ return p.entries.Len()
+}
+
+// LastPacket returns packet number of the first entry in the queue.
+func (p *packetNumberIndexedQueue[T]) FirstPacket() (packetNumber congestion.PacketNumber) {
+ return p.firstPacket
+}
+
+// LastPacket returns packet number of the last entry ever inserted in the queue. Note that the
+// entry in question may have already been removed. Zero if the queue is
+// empty.
+func (p *packetNumberIndexedQueue[T]) LastPacket() (packetNumber congestion.PacketNumber) {
+ if p.IsEmpty() {
+ return invalidPacketNumber
+ }
+
+ return p.firstPacket + congestion.PacketNumber(p.entries.Len()-1)
+}
+
+func (p *packetNumberIndexedQueue[T]) clearup() {
+ for !p.entries.Empty() && !p.entries.Front().present {
+ p.entries.PopFront()
+ p.firstPacket++
+ }
+ if p.entries.Empty() {
+ p.firstPacket = invalidPacketNumber
+ }
+}
+
+func (p *packetNumberIndexedQueue[T]) getEntryWraper(packetNumber congestion.PacketNumber) *entryWrapper[T] {
+ if packetNumber == invalidPacketNumber ||
+ p.IsEmpty() ||
+ packetNumber < p.firstPacket {
+ return nil
+ }
+
+ offset := int(packetNumber - p.firstPacket)
+ if offset >= p.entries.Len() {
+ return nil
+ }
+
+ ew := p.entries.Offset(offset)
+ if ew == nil || !ew.present {
+ return nil
+ }
+
+ return ew
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/ringbuffer.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/ringbuffer.go
new file mode 100644
index 0000000..e110c00
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/ringbuffer.go
@@ -0,0 +1,118 @@
+package congestion
+
+// A RingBuffer is a ring buffer.
+// It acts as a heap that doesn't cause any allocations.
+type RingBuffer[T any] struct {
+ ring []T
+ headPos, tailPos int
+ full bool
+}
+
+// Init preallocs a buffer with a certain size.
+func (r *RingBuffer[T]) Init(size int) {
+ r.ring = make([]T, size)
+}
+
+// Len returns the number of elements in the ring buffer.
+func (r *RingBuffer[T]) Len() int {
+ if r.full {
+ return len(r.ring)
+ }
+ if r.tailPos >= r.headPos {
+ return r.tailPos - r.headPos
+ }
+ return r.tailPos - r.headPos + len(r.ring)
+}
+
+// Empty says if the ring buffer is empty.
+func (r *RingBuffer[T]) Empty() bool {
+ return !r.full && r.headPos == r.tailPos
+}
+
+// PushBack adds a new element.
+// If the ring buffer is full, its capacity is increased first.
+func (r *RingBuffer[T]) PushBack(t T) {
+ if r.full || len(r.ring) == 0 {
+ r.grow()
+ }
+ r.ring[r.tailPos] = t
+ r.tailPos++
+ if r.tailPos == len(r.ring) {
+ r.tailPos = 0
+ }
+ if r.tailPos == r.headPos {
+ r.full = true
+ }
+}
+
+// PopFront returns the next element.
+// It must not be called when the buffer is empty, that means that
+// callers might need to check if there are elements in the buffer first.
+func (r *RingBuffer[T]) PopFront() T {
+ if r.Empty() {
+ panic("github.com/quic-go/quic-go/internal/utils/ringbuffer: pop from an empty queue")
+ }
+ r.full = false
+ t := r.ring[r.headPos]
+ r.ring[r.headPos] = *new(T)
+ r.headPos++
+ if r.headPos == len(r.ring) {
+ r.headPos = 0
+ }
+ return t
+}
+
+// Offset returns the offset element.
+// It must not be called when the buffer is empty, that means that
+// callers might need to check if there are elements in the buffer first
+// and check if the index larger than buffer length.
+func (r *RingBuffer[T]) Offset(index int) *T {
+ if r.Empty() || index >= r.Len() {
+ panic("github.com/quic-go/quic-go/internal/utils/ringbuffer: offset from invalid index")
+ }
+ offset := (r.headPos + index) % len(r.ring)
+ return &r.ring[offset]
+}
+
+// Front returns the front element.
+// It must not be called when the buffer is empty, that means that
+// callers might need to check if there are elements in the buffer first.
+func (r *RingBuffer[T]) Front() *T {
+ if r.Empty() {
+ panic("github.com/quic-go/quic-go/internal/utils/ringbuffer: front from an empty queue")
+ }
+ return &r.ring[r.headPos]
+}
+
+// Back returns the back element.
+// It must not be called when the buffer is empty, that means that
+// callers might need to check if there are elements in the buffer first.
+func (r *RingBuffer[T]) Back() *T {
+ if r.Empty() {
+ panic("github.com/quic-go/quic-go/internal/utils/ringbuffer: back from an empty queue")
+ }
+ return r.Offset(r.Len() - 1)
+}
+
+// Grow the maximum size of the queue.
+// This method assume the queue is full.
+func (r *RingBuffer[T]) grow() {
+ oldRing := r.ring
+ newSize := len(oldRing) * 2
+ if newSize == 0 {
+ newSize = 1
+ }
+ r.ring = make([]T, newSize)
+ headLen := copy(r.ring, oldRing[r.headPos:])
+ copy(r.ring[headLen:], oldRing[:r.headPos])
+ r.headPos, r.tailPos, r.full = 0, len(oldRing), false
+}
+
+// Clear removes all elements.
+func (r *RingBuffer[T]) Clear() {
+ var zeroValue T
+ for i := range r.ring {
+ r.ring[i] = zeroValue
+ }
+ r.headPos, r.tailPos, r.full = 0, 0, false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/windowed_filter.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/windowed_filter.go
new file mode 100644
index 0000000..2421b48
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/congestion_v2/windowed_filter.go
@@ -0,0 +1,162 @@
+package congestion
+
+import (
+ "golang.org/x/exp/constraints"
+)
+
+// Implements Kathleen Nichols' algorithm for tracking the minimum (or maximum)
+// estimate of a stream of samples over some fixed time interval. (E.g.,
+// the minimum RTT over the past five minutes.) The algorithm keeps track of
+// the best, second best, and third best min (or max) estimates, maintaining an
+// invariant that the measurement time of the n'th best >= n-1'th best.
+
+// The algorithm works as follows. On a reset, all three estimates are set to
+// the same sample. The second best estimate is then recorded in the second
+// quarter of the window, and a third best estimate is recorded in the second
+// half of the window, bounding the worst case error when the true min is
+// monotonically increasing (or true max is monotonically decreasing) over the
+// window.
+//
+// A new best sample replaces all three estimates, since the new best is lower
+// (or higher) than everything else in the window and it is the most recent.
+// The window thus effectively gets reset on every new min. The same property
+// holds true for second best and third best estimates. Specifically, when a
+// sample arrives that is better than the second best but not better than the
+// best, it replaces the second and third best estimates but not the best
+// estimate. Similarly, a sample that is better than the third best estimate
+// but not the other estimates replaces only the third best estimate.
+//
+// Finally, when the best expires, it is replaced by the second best, which in
+// turn is replaced by the third best. The newest sample replaces the third
+// best.
+
+type WindowedFilterValue interface {
+ any
+}
+
+type WindowedFilterTime interface {
+ constraints.Integer | constraints.Float
+}
+
+type WindowedFilter[V WindowedFilterValue, T WindowedFilterTime] struct {
+ // Time length of window.
+ windowLength T
+ estimates []entry[V, T]
+ comparator func(V, V) int
+}
+
+type entry[V WindowedFilterValue, T WindowedFilterTime] struct {
+ sample V
+ time T
+}
+
+// Compares two values and returns true if the first is greater than or equal
+// to the second.
+func MaxFilter[O constraints.Ordered](a, b O) int {
+ if a > b {
+ return 1
+ } else if a < b {
+ return -1
+ }
+ return 0
+}
+
+// Compares two values and returns true if the first is less than or equal
+// to the second.
+func MinFilter[O constraints.Ordered](a, b O) int {
+ if a < b {
+ return 1
+ } else if a > b {
+ return -1
+ }
+ return 0
+}
+
+func NewWindowedFilter[V WindowedFilterValue, T WindowedFilterTime](windowLength T, comparator func(V, V) int) *WindowedFilter[V, T] {
+ return &WindowedFilter[V, T]{
+ windowLength: windowLength,
+ estimates: make([]entry[V, T], 3, 3),
+ comparator: comparator,
+ }
+}
+
+// Changes the window length. Does not update any current samples.
+func (f *WindowedFilter[V, T]) SetWindowLength(windowLength T) {
+ f.windowLength = windowLength
+}
+
+func (f *WindowedFilter[V, T]) GetBest() V {
+ return f.estimates[0].sample
+}
+
+func (f *WindowedFilter[V, T]) GetSecondBest() V {
+ return f.estimates[1].sample
+}
+
+func (f *WindowedFilter[V, T]) GetThirdBest() V {
+ return f.estimates[2].sample
+}
+
+// Updates best estimates with |sample|, and expires and updates best
+// estimates as necessary.
+func (f *WindowedFilter[V, T]) Update(newSample V, newTime T) {
+ // Reset all estimates if they have not yet been initialized, if new sample
+ // is a new best, or if the newest recorded estimate is too old.
+ if f.comparator(f.estimates[0].sample, *new(V)) == 0 ||
+ f.comparator(newSample, f.estimates[0].sample) >= 0 ||
+ newTime-f.estimates[2].time > f.windowLength {
+ f.Reset(newSample, newTime)
+ return
+ }
+
+ if f.comparator(newSample, f.estimates[1].sample) >= 0 {
+ f.estimates[1] = entry[V, T]{newSample, newTime}
+ f.estimates[2] = f.estimates[1]
+ } else if f.comparator(newSample, f.estimates[2].sample) >= 0 {
+ f.estimates[2] = entry[V, T]{newSample, newTime}
+ }
+
+ // Expire and update estimates as necessary.
+ if newTime-f.estimates[0].time > f.windowLength {
+ // The best estimate hasn't been updated for an entire window, so promote
+ // second and third best estimates.
+ f.estimates[0] = f.estimates[1]
+ f.estimates[1] = f.estimates[2]
+ f.estimates[2] = entry[V, T]{newSample, newTime}
+ // Need to iterate one more time. Check if the new best estimate is
+ // outside the window as well, since it may also have been recorded a
+ // long time ago. Don't need to iterate once more since we cover that
+ // case at the beginning of the method.
+ if newTime-f.estimates[0].time > f.windowLength {
+ f.estimates[0] = f.estimates[1]
+ f.estimates[1] = f.estimates[2]
+ }
+ return
+ }
+ if f.comparator(f.estimates[1].sample, f.estimates[0].sample) == 0 &&
+ newTime-f.estimates[1].time > f.windowLength/4 {
+ // A quarter of the window has passed without a better sample, so the
+ // second-best estimate is taken from the second quarter of the window.
+ f.estimates[1] = entry[V, T]{newSample, newTime}
+ f.estimates[2] = f.estimates[1]
+ return
+ }
+
+ if f.comparator(f.estimates[2].sample, f.estimates[1].sample) == 0 &&
+ newTime-f.estimates[2].time > f.windowLength/2 {
+ // We've passed a half of the window without a better estimate, so take
+ // a third-best estimate from the second half of the window.
+ f.estimates[2] = entry[V, T]{newSample, newTime}
+ }
+}
+
+// Resets all estimates to new sample.
+func (f *WindowedFilter[V, T]) Reset(newSample V, newTime T) {
+ f.estimates[2] = entry[V, T]{newSample, newTime}
+ f.estimates[1] = f.estimates[2]
+ f.estimates[0] = f.estimates[1]
+}
+
+func (f *WindowedFilter[V, T]) Clear() {
+ f.estimates = make([]entry[V, T], 3, 3)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/pool_client.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/pool_client.go
new file mode 100644
index 0000000..b4c319d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/pool_client.go
@@ -0,0 +1,212 @@
+package tuic
+
+import (
+ "context"
+ "errors"
+ "net"
+ "runtime"
+ "sync"
+ "time"
+
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/metacubex/quic-go"
+
+ list "github.com/bahlo/generic-list-go"
+)
+
+type dialResult struct {
+ transport *quic.Transport
+ addr net.Addr
+ err error
+}
+
+type PoolClient struct {
+ newClientOptionV4 *ClientOptionV4
+ newClientOptionV5 *ClientOptionV5
+ dialResultMap map[C.Dialer]dialResult
+ dialResultMutex *sync.Mutex
+ tcpClients *list.List[Client]
+ tcpClientsMutex *sync.Mutex
+ udpClients *list.List[Client]
+ udpClientsMutex *sync.Mutex
+}
+
+func (t *PoolClient) DialContextWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn DialFunc) (net.Conn, error) {
+ newDialFn := func(ctx context.Context, dialer C.Dialer) (transport *quic.Transport, addr net.Addr, err error) {
+ return t.dial(ctx, dialer, dialFn)
+ }
+ conn, err := t.getClient(false, dialer).DialContextWithDialer(ctx, metadata, dialer, newDialFn)
+ if errors.Is(err, TooManyOpenStreams) {
+ conn, err = t.newClient(false, dialer).DialContextWithDialer(ctx, metadata, dialer, newDialFn)
+ }
+ if err != nil {
+ return nil, err
+ }
+ return N.NewRefConn(conn, t), err
+}
+
+func (t *PoolClient) ListenPacketWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn DialFunc) (net.PacketConn, error) {
+ newDialFn := func(ctx context.Context, dialer C.Dialer) (transport *quic.Transport, addr net.Addr, err error) {
+ return t.dial(ctx, dialer, dialFn)
+ }
+ pc, err := t.getClient(true, dialer).ListenPacketWithDialer(ctx, metadata, dialer, newDialFn)
+ if errors.Is(err, TooManyOpenStreams) {
+ pc, err = t.newClient(true, dialer).ListenPacketWithDialer(ctx, metadata, dialer, newDialFn)
+ }
+ if err != nil {
+ return nil, err
+ }
+ return N.NewRefPacketConn(pc, t), nil
+}
+
+func (t *PoolClient) dial(ctx context.Context, dialer C.Dialer, dialFn DialFunc) (transport *quic.Transport, addr net.Addr, err error) {
+ t.dialResultMutex.Lock()
+ dr, ok := t.dialResultMap[dialer]
+ t.dialResultMutex.Unlock()
+ if ok {
+ return dr.transport, dr.addr, dr.err
+ }
+
+ transport, addr, err = dialFn(ctx, dialer)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ if _, ok := transport.Conn.(*net.UDPConn); ok { // only cache the system's UDPConn
+ transport.SetSingleUse(false) // don't close transport in each dial
+ dr.transport, dr.addr, dr.err = transport, addr, err
+
+ t.dialResultMutex.Lock()
+ t.dialResultMap[dialer] = dr
+ t.dialResultMutex.Unlock()
+ }
+
+ return transport, addr, err
+}
+
+func (t *PoolClient) forceClose() {
+ t.dialResultMutex.Lock()
+ defer t.dialResultMutex.Unlock()
+ for key := range t.dialResultMap {
+ transport := t.dialResultMap[key].transport
+ if transport != nil {
+ _ = transport.Close()
+ }
+ delete(t.dialResultMap, key)
+ }
+}
+
+func (t *PoolClient) newClient(udp bool, dialer C.Dialer) (client Client) {
+ clients := t.tcpClients
+ clientsMutex := t.tcpClientsMutex
+ if udp {
+ clients = t.udpClients
+ clientsMutex = t.udpClientsMutex
+ }
+
+ clientsMutex.Lock()
+ defer clientsMutex.Unlock()
+
+ if t.newClientOptionV4 != nil {
+ client = NewClientV4(t.newClientOptionV4, udp, dialer)
+ } else {
+ client = NewClientV5(t.newClientOptionV5, udp, dialer)
+ }
+
+ client.SetLastVisited(time.Now())
+
+ clients.PushFront(client)
+ return client
+}
+
+func (t *PoolClient) getClient(udp bool, dialer C.Dialer) Client {
+ clients := t.tcpClients
+ clientsMutex := t.tcpClientsMutex
+ if udp {
+ clients = t.udpClients
+ clientsMutex = t.udpClientsMutex
+ }
+ var bestClient Client
+
+ func() {
+ clientsMutex.Lock()
+ defer clientsMutex.Unlock()
+ for it := clients.Front(); it != nil; {
+ client := it.Value
+ if client == nil {
+ next := it.Next()
+ clients.Remove(it)
+ it = next
+ continue
+ }
+ if client.DialerRef() == dialer {
+ if bestClient == nil {
+ bestClient = client
+ } else {
+ if client.OpenStreams() < bestClient.OpenStreams() {
+ bestClient = client
+ }
+ }
+ }
+ it = it.Next()
+ }
+ }()
+ for it := clients.Front(); it != nil; {
+ client := it.Value
+ if client != bestClient && client.OpenStreams() == 0 && time.Now().Sub(client.LastVisited()) > 30*time.Minute {
+ client.Close()
+ next := it.Next()
+ clients.Remove(it)
+ it = next
+ continue
+ }
+ it = it.Next()
+ }
+
+ if bestClient == nil {
+ return t.newClient(udp, dialer)
+ } else {
+ bestClient.SetLastVisited(time.Now())
+ return bestClient
+ }
+}
+
+func NewPoolClientV4(clientOption *ClientOptionV4) *PoolClient {
+ p := &PoolClient{
+ dialResultMap: make(map[C.Dialer]dialResult),
+ dialResultMutex: &sync.Mutex{},
+ tcpClients: list.New[Client](),
+ tcpClientsMutex: &sync.Mutex{},
+ udpClients: list.New[Client](),
+ udpClientsMutex: &sync.Mutex{},
+ }
+ newClientOption := *clientOption
+ p.newClientOptionV4 = &newClientOption
+ runtime.SetFinalizer(p, closeClientPool)
+ log.Debugln("New TuicV4 PoolClient at %p", p)
+ return p
+}
+
+func NewPoolClientV5(clientOption *ClientOptionV5) *PoolClient {
+ p := &PoolClient{
+ dialResultMap: make(map[C.Dialer]dialResult),
+ dialResultMutex: &sync.Mutex{},
+ tcpClients: list.New[Client](),
+ tcpClientsMutex: &sync.Mutex{},
+ udpClients: list.New[Client](),
+ udpClientsMutex: &sync.Mutex{},
+ }
+ newClientOption := *clientOption
+ p.newClientOptionV5 = &newClientOption
+ runtime.SetFinalizer(p, closeClientPool)
+ log.Debugln("New TuicV5 PoolClient at %p", p)
+ return p
+}
+
+func closeClientPool(client *PoolClient) {
+ log.Debugln("Close Tuic PoolClient at %p", client)
+ client.forceClose()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/server.go
new file mode 100644
index 0000000..354533a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/server.go
@@ -0,0 +1,238 @@
+package tuic
+
+import (
+ "bufio"
+ "context"
+ "crypto/tls"
+ "net"
+ "time"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+ "github.com/metacubex/mihomo/transport/tuic/common"
+ v4 "github.com/metacubex/mihomo/transport/tuic/v4"
+ v5 "github.com/metacubex/mihomo/transport/tuic/v5"
+
+ "github.com/gofrs/uuid/v5"
+ "github.com/metacubex/quic-go"
+)
+
+type ServerOption struct {
+ HandleTcpFn func(conn net.Conn, addr socks5.Addr, additions ...inbound.Addition) error
+ HandleUdpFn func(addr socks5.Addr, packet C.UDPPacket, additions ...inbound.Addition) error
+
+ TlsConfig *tls.Config
+ QuicConfig *quic.Config
+ Tokens [][32]byte // V4 special
+ Users map[[16]byte]string // V5 special
+ CongestionController string
+ AuthenticationTimeout time.Duration
+ MaxUdpRelayPacketSize int
+ CWND int
+}
+
+type Server struct {
+ *ServerOption
+ optionV4 *v4.ServerOption
+ optionV5 *v5.ServerOption
+ listener *quic.EarlyListener
+}
+
+func (s *Server) Serve() error {
+ for {
+ conn, err := s.listener.Accept(context.Background())
+ if err != nil {
+ return err
+ }
+ common.SetCongestionController(conn, s.CongestionController, s.CWND)
+ h := &serverHandler{
+ Server: s,
+ quicConn: conn,
+ uuid: utils.NewUUIDV4(),
+ }
+ if h.optionV4 != nil {
+ h.v4Handler = v4.NewServerHandler(h.optionV4, conn, h.uuid)
+ }
+ if h.optionV5 != nil {
+ h.v5Handler = v5.NewServerHandler(h.optionV5, conn, h.uuid)
+ }
+ go h.handle()
+ }
+}
+
+func (s *Server) Close() error {
+ return s.listener.Close()
+}
+
+type serverHandler struct {
+ *Server
+ quicConn quic.EarlyConnection
+ uuid uuid.UUID
+
+ v4Handler common.ServerHandler
+ v5Handler common.ServerHandler
+}
+
+func (s *serverHandler) handle() {
+ go func() {
+ _ = s.handleUniStream()
+ }()
+ go func() {
+ _ = s.handleStream()
+ }()
+ go func() {
+ _ = s.handleMessage()
+ }()
+
+ <-s.quicConn.HandshakeComplete()
+ time.AfterFunc(s.AuthenticationTimeout, func() {
+ if s.v4Handler != nil {
+ if s.v4Handler.AuthOk() {
+ return
+ }
+ }
+
+ if s.v5Handler != nil {
+ if s.v5Handler.AuthOk() {
+ return
+ }
+ }
+
+ if s.v4Handler != nil {
+ s.v4Handler.HandleTimeout()
+ }
+
+ if s.v5Handler != nil {
+ s.v5Handler.HandleTimeout()
+ }
+ })
+}
+
+func (s *serverHandler) handleMessage() (err error) {
+ for {
+ var message []byte
+ message, err = s.quicConn.ReceiveDatagram(context.Background())
+ if err != nil {
+ return err
+ }
+ go func() (err error) {
+ if len(message) > 0 {
+ switch message[0] {
+ case v4.VER:
+ if s.v4Handler != nil {
+ return s.v4Handler.HandleMessage(message)
+ }
+ case v5.VER:
+ if s.v5Handler != nil {
+ return s.v5Handler.HandleMessage(message)
+ }
+ }
+ }
+ return
+ }()
+ }
+}
+
+func (s *serverHandler) handleStream() (err error) {
+ for {
+ var quicStream quic.Stream
+ quicStream, err = s.quicConn.AcceptStream(context.Background())
+ if err != nil {
+ return err
+ }
+ go func() (err error) {
+ stream := common.NewQuicStreamConn(
+ quicStream,
+ s.quicConn.LocalAddr(),
+ s.quicConn.RemoteAddr(),
+ nil,
+ )
+ conn := N.NewBufferedConn(stream)
+
+ verBytes, err := conn.Peek(1)
+ if err != nil {
+ _ = conn.Close()
+ return err
+ }
+
+ switch verBytes[0] {
+ case v4.VER:
+ if s.v4Handler != nil {
+ return s.v4Handler.HandleStream(conn)
+ }
+ case v5.VER:
+ if s.v5Handler != nil {
+ return s.v5Handler.HandleStream(conn)
+ }
+ }
+ return
+ }()
+ }
+}
+
+func (s *serverHandler) handleUniStream() (err error) {
+ for {
+ var stream quic.ReceiveStream
+ stream, err = s.quicConn.AcceptUniStream(context.Background())
+ if err != nil {
+ return err
+ }
+ go func() (err error) {
+ defer func() {
+ stream.CancelRead(0)
+ }()
+ reader := bufio.NewReader(stream)
+ verBytes, err := reader.Peek(1)
+ if err != nil {
+ return err
+ }
+
+ switch verBytes[0] {
+ case v4.VER:
+ if s.v4Handler != nil {
+ return s.v4Handler.HandleUniStream(reader)
+ }
+ case v5.VER:
+ if s.v5Handler != nil {
+ return s.v5Handler.HandleUniStream(reader)
+ }
+ }
+ return
+ }()
+ }
+}
+
+func NewServer(option *ServerOption, pc net.PacketConn) (*Server, error) {
+ listener, err := quic.ListenEarly(pc, option.TlsConfig, option.QuicConfig)
+ if err != nil {
+ return nil, err
+ }
+ server := &Server{
+ ServerOption: option,
+ listener: listener,
+ }
+ if len(option.Tokens) > 0 {
+ server.optionV4 = &v4.ServerOption{
+ HandleTcpFn: option.HandleTcpFn,
+ HandleUdpFn: option.HandleUdpFn,
+ Tokens: option.Tokens,
+ MaxUdpRelayPacketSize: option.MaxUdpRelayPacketSize,
+ }
+ }
+ if len(option.Users) > 0 {
+ maxUdpRelayPacketSize := option.MaxUdpRelayPacketSize
+ if maxUdpRelayPacketSize > MaxFragSizeV5 {
+ maxUdpRelayPacketSize = MaxFragSizeV5
+ }
+ server.optionV5 = &v5.ServerOption{
+ HandleTcpFn: option.HandleTcpFn,
+ HandleUdpFn: option.HandleUdpFn,
+ Users: option.Users,
+ MaxUdpRelayPacketSize: option.MaxUdpRelayPacketSize,
+ }
+ }
+ return server, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/tuic.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/tuic.go
new file mode 100644
index 0000000..02aaa3a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/tuic.go
@@ -0,0 +1,40 @@
+package tuic
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/tuic/common"
+ v4 "github.com/metacubex/mihomo/transport/tuic/v4"
+ v5 "github.com/metacubex/mihomo/transport/tuic/v5"
+)
+
+type ClientOptionV4 = v4.ClientOption
+type ClientOptionV5 = v5.ClientOption
+
+type Client = common.Client
+
+func NewClientV4(clientOption *ClientOptionV4, udp bool, dialerRef C.Dialer) Client {
+ return v4.NewClient(clientOption, udp, dialerRef)
+}
+
+func NewClientV5(clientOption *ClientOptionV5, udp bool, dialerRef C.Dialer) Client {
+ return v5.NewClient(clientOption, udp, dialerRef)
+}
+
+type DialFunc = common.DialFunc
+
+var TooManyOpenStreams = common.TooManyOpenStreams
+
+const DefaultStreamReceiveWindow = common.DefaultStreamReceiveWindow
+const DefaultConnectionReceiveWindow = common.DefaultConnectionReceiveWindow
+
+var GenTKN = v4.GenTKN
+var PacketOverHeadV4 = v4.PacketOverHead
+var PacketOverHeadV5 = v5.PacketOverHead
+var MaxFragSizeV5 = v5.MaxFragSize
+
+type UdpRelayMode = common.UdpRelayMode
+
+const (
+ QUIC = common.QUIC
+ NATIVE = common.NATIVE
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/client.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/client.go
new file mode 100644
index 0000000..62b419b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/client.go
@@ -0,0 +1,436 @@
+package v4
+
+import (
+ "bufio"
+ "bytes"
+ "context"
+ "crypto/tls"
+ "errors"
+ "net"
+ "runtime"
+ "sync"
+ "sync/atomic"
+ "time"
+
+ atomic2 "github.com/metacubex/mihomo/common/atomic"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/transport/tuic/common"
+
+ "github.com/metacubex/quic-go"
+ "github.com/metacubex/randv2"
+ "github.com/puzpuzpuz/xsync/v3"
+)
+
+type ClientOption struct {
+ TlsConfig *tls.Config
+ QuicConfig *quic.Config
+ Token [32]byte
+ UdpRelayMode common.UdpRelayMode
+ CongestionController string
+ ReduceRtt bool
+ RequestTimeout time.Duration
+ MaxUdpRelayPacketSize int
+ FastOpen bool
+ MaxOpenStreams int64
+ CWND int
+}
+
+type clientImpl struct {
+ *ClientOption
+ udp bool
+
+ quicConn quic.Connection
+ connMutex sync.Mutex
+
+ openStreams atomic.Int64
+ closed atomic.Bool
+
+ udpInputMap *xsync.MapOf[uint32, net.Conn]
+
+ // only ready for PoolClient
+ dialerRef C.Dialer
+ lastVisited atomic2.TypedValue[time.Time]
+}
+
+func (t *clientImpl) OpenStreams() int64 {
+ return t.openStreams.Load()
+}
+
+func (t *clientImpl) DialerRef() C.Dialer {
+ return t.dialerRef
+}
+
+func (t *clientImpl) LastVisited() time.Time {
+ return t.lastVisited.Load()
+}
+
+func (t *clientImpl) SetLastVisited(last time.Time) {
+ t.lastVisited.Store(last)
+}
+
+func (t *clientImpl) getQuicConn(ctx context.Context, dialer C.Dialer, dialFn common.DialFunc) (quic.Connection, error) {
+ t.connMutex.Lock()
+ defer t.connMutex.Unlock()
+ if t.quicConn != nil {
+ return t.quicConn, nil
+ }
+ transport, addr, err := dialFn(ctx, dialer)
+ if err != nil {
+ return nil, err
+ }
+ var quicConn quic.Connection
+ if t.ReduceRtt {
+ quicConn, err = transport.DialEarly(ctx, addr, t.TlsConfig, t.QuicConfig)
+ } else {
+ quicConn, err = transport.Dial(ctx, addr, t.TlsConfig, t.QuicConfig)
+ }
+ if err != nil {
+ return nil, err
+ }
+
+ common.SetCongestionController(quicConn, t.CongestionController, t.CWND)
+
+ go func() {
+ _ = t.sendAuthentication(quicConn)
+ }()
+
+ if t.udp {
+ go func() {
+ switch t.UdpRelayMode {
+ case common.QUIC:
+ _ = t.handleUniStream(quicConn)
+ default: // native
+ _ = t.handleMessage(quicConn)
+ }
+ }()
+ }
+
+ t.quicConn = quicConn
+ t.openStreams.Store(0)
+ return quicConn, nil
+}
+
+func (t *clientImpl) sendAuthentication(quicConn quic.Connection) (err error) {
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ }()
+ stream, err := quicConn.OpenUniStream()
+ if err != nil {
+ return err
+ }
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ err = NewAuthenticate(t.Token).WriteTo(buf)
+ if err != nil {
+ return err
+ }
+ _, err = buf.WriteTo(stream)
+ if err != nil {
+ return err
+ }
+ err = stream.Close()
+ if err != nil {
+ return
+ }
+ return nil
+}
+
+func (t *clientImpl) handleUniStream(quicConn quic.Connection) (err error) {
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ }()
+ for {
+ var stream quic.ReceiveStream
+ stream, err = quicConn.AcceptUniStream(context.Background())
+ if err != nil {
+ return err
+ }
+ go func() (err error) {
+ var assocId uint32
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ if err != nil && assocId != 0 {
+ if val, ok := t.udpInputMap.LoadAndDelete(assocId); ok {
+ if conn, ok := val.(net.Conn); ok {
+ _ = conn.Close()
+ }
+ }
+ }
+ stream.CancelRead(0)
+ }()
+ reader := bufio.NewReader(stream)
+ commandHead, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ switch commandHead.TYPE {
+ case PacketType:
+ var packet Packet
+ packet, err = ReadPacketWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ if t.udp && t.UdpRelayMode == common.QUIC {
+ assocId = packet.ASSOC_ID
+ if val, ok := t.udpInputMap.Load(assocId); ok {
+ if conn, ok := val.(net.Conn); ok {
+ writer := bufio.NewWriterSize(conn, packet.BytesLen())
+ _ = packet.WriteTo(writer)
+ _ = writer.Flush()
+ }
+ }
+ }
+ }
+ return
+ }()
+ }
+}
+
+func (t *clientImpl) handleMessage(quicConn quic.Connection) (err error) {
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ }()
+ for {
+ var message []byte
+ message, err = quicConn.ReceiveDatagram(context.Background())
+ if err != nil {
+ return err
+ }
+ go func() (err error) {
+ var assocId uint32
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ if err != nil && assocId != 0 {
+ if val, ok := t.udpInputMap.LoadAndDelete(assocId); ok {
+ if conn, ok := val.(net.Conn); ok {
+ _ = conn.Close()
+ }
+ }
+ }
+ }()
+ reader := bytes.NewBuffer(message)
+ commandHead, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ switch commandHead.TYPE {
+ case PacketType:
+ var packet Packet
+ packet, err = ReadPacketWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ if t.udp && t.UdpRelayMode == common.NATIVE {
+ assocId = packet.ASSOC_ID
+ if val, ok := t.udpInputMap.Load(assocId); ok {
+ if conn, ok := val.(net.Conn); ok {
+ _, _ = conn.Write(message)
+ }
+ }
+ }
+ }
+ return
+ }()
+ }
+}
+
+func (t *clientImpl) deferQuicConn(quicConn quic.Connection, err error) {
+ var netError net.Error
+ if err != nil && errors.As(err, &netError) {
+ t.forceClose(quicConn, err)
+ }
+}
+
+func (t *clientImpl) forceClose(quicConn quic.Connection, err error) {
+ t.connMutex.Lock()
+ defer t.connMutex.Unlock()
+ if quicConn == nil {
+ quicConn = t.quicConn
+ }
+ if quicConn != nil {
+ if quicConn == t.quicConn {
+ t.quicConn = nil
+ }
+ }
+ errStr := ""
+ if err != nil {
+ errStr = err.Error()
+ }
+ if quicConn != nil {
+ _ = quicConn.CloseWithError(ProtocolError, errStr)
+ }
+ udpInputMap := t.udpInputMap
+ udpInputMap.Range(func(key uint32, value net.Conn) bool {
+ conn := value
+ _ = conn.Close()
+ udpInputMap.Delete(key)
+ return true
+ })
+}
+
+func (t *clientImpl) Close() {
+ t.closed.Store(true)
+ if t.openStreams.Load() == 0 {
+ t.forceClose(nil, common.ClientClosed)
+ }
+}
+
+func (t *clientImpl) DialContextWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn common.DialFunc) (net.Conn, error) {
+ quicConn, err := t.getQuicConn(ctx, dialer, dialFn)
+ if err != nil {
+ return nil, err
+ }
+ openStreams := t.openStreams.Add(1)
+ if openStreams >= t.MaxOpenStreams {
+ t.openStreams.Add(-1)
+ return nil, common.TooManyOpenStreams
+ }
+ stream, err := func() (stream net.Conn, err error) {
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ }()
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ err = NewConnect(NewAddress(metadata)).WriteTo(buf)
+ if err != nil {
+ return nil, err
+ }
+ quicStream, err := quicConn.OpenStream()
+ if err != nil {
+ return nil, err
+ }
+ stream = common.NewQuicStreamConn(
+ quicStream,
+ quicConn.LocalAddr(),
+ quicConn.RemoteAddr(),
+ func() {
+ time.AfterFunc(C.DefaultTCPTimeout, func() {
+ openStreams := t.openStreams.Add(-1)
+ if openStreams == 0 && t.closed.Load() {
+ t.forceClose(quicConn, common.ClientClosed)
+ }
+ })
+ },
+ )
+ _, err = buf.WriteTo(stream)
+ if err != nil {
+ _ = stream.Close()
+ return nil, err
+ }
+ return stream, err
+ }()
+ if err != nil {
+ return nil, err
+ }
+
+ bufConn := N.NewBufferedConn(stream)
+ response := func() error {
+ if t.RequestTimeout > 0 {
+ _ = bufConn.SetReadDeadline(time.Now().Add(t.RequestTimeout))
+ }
+ response, err := ReadResponse(bufConn)
+ if err != nil {
+ _ = bufConn.Close()
+ return err
+ }
+ if response.IsFailed() {
+ _ = bufConn.Close()
+ return errors.New("connect failed")
+ }
+ _ = bufConn.SetReadDeadline(time.Time{})
+ return nil
+ }
+ if t.FastOpen {
+ return N.NewEarlyConn(bufConn, response), nil
+ }
+ err = response()
+ if err != nil {
+ return nil, err
+ }
+ return bufConn, nil
+}
+
+func (t *clientImpl) ListenPacketWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn common.DialFunc) (net.PacketConn, error) {
+ quicConn, err := t.getQuicConn(ctx, dialer, dialFn)
+ if err != nil {
+ return nil, err
+ }
+ openStreams := t.openStreams.Add(1)
+ if openStreams >= t.MaxOpenStreams {
+ t.openStreams.Add(-1)
+ return nil, common.TooManyOpenStreams
+ }
+
+ pipe1, pipe2 := N.Pipe()
+ var connId uint32
+ for {
+ connId = randv2.Uint32()
+ _, loaded := t.udpInputMap.LoadOrStore(connId, pipe1)
+ if !loaded {
+ break
+ }
+ }
+ pc := &quicStreamPacketConn{
+ connId: connId,
+ quicConn: quicConn,
+ inputConn: N.NewBufferedConn(pipe2),
+ udpRelayMode: t.UdpRelayMode,
+ maxUdpRelayPacketSize: t.MaxUdpRelayPacketSize,
+ deferQuicConnFn: t.deferQuicConn,
+ closeDeferFn: func() {
+ t.udpInputMap.Delete(connId)
+ time.AfterFunc(C.DefaultUDPTimeout, func() {
+ openStreams := t.openStreams.Add(-1)
+ if openStreams == 0 && t.closed.Load() {
+ t.forceClose(quicConn, common.ClientClosed)
+ }
+ })
+ },
+ }
+ return pc, nil
+}
+
+type Client struct {
+ *clientImpl // use an independent pointer to let Finalizer can work no matter somewhere handle an influence in clientImpl inner
+}
+
+func (t *Client) DialContextWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn common.DialFunc) (net.Conn, error) {
+ conn, err := t.clientImpl.DialContextWithDialer(ctx, metadata, dialer, dialFn)
+ if err != nil {
+ return nil, err
+ }
+ return N.NewRefConn(conn, t), err
+}
+
+func (t *Client) ListenPacketWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn common.DialFunc) (net.PacketConn, error) {
+ pc, err := t.clientImpl.ListenPacketWithDialer(ctx, metadata, dialer, dialFn)
+ if err != nil {
+ return nil, err
+ }
+ return N.NewRefPacketConn(pc, t), nil
+}
+
+func (t *Client) forceClose() {
+ t.clientImpl.forceClose(nil, common.ClientClosed)
+}
+
+func NewClient(clientOption *ClientOption, udp bool, dialerRef C.Dialer) *Client {
+ ci := &clientImpl{
+ ClientOption: clientOption,
+ udp: udp,
+ dialerRef: dialerRef,
+ udpInputMap: xsync.NewMapOf[uint32, net.Conn](),
+ }
+ c := &Client{ci}
+ runtime.SetFinalizer(c, closeClient)
+ log.Debugln("New TuicV4 Client at %p", c)
+ return c
+}
+
+func closeClient(client *Client) {
+ log.Debugln("Close TuicV4 Client at %p", client)
+ client.forceClose()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/packet.go
new file mode 100644
index 0000000..47484e7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/packet.go
@@ -0,0 +1,178 @@
+package v4
+
+import (
+ "net"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/transport/tuic/common"
+
+ "github.com/metacubex/quic-go"
+)
+
+type quicStreamPacketConn struct {
+ connId uint32
+ quicConn quic.Connection
+ inputConn *N.BufferedConn
+
+ udpRelayMode common.UdpRelayMode
+ maxUdpRelayPacketSize int
+
+ deferQuicConnFn func(quicConn quic.Connection, err error)
+ closeDeferFn func()
+ writeClosed *atomic.Bool
+
+ closeOnce sync.Once
+ closeErr error
+ closed bool
+}
+
+func (q *quicStreamPacketConn) Close() error {
+ q.closeOnce.Do(func() {
+ q.closed = true
+ q.closeErr = q.close()
+ })
+ return q.closeErr
+}
+
+func (q *quicStreamPacketConn) close() (err error) {
+ if q.closeDeferFn != nil {
+ defer q.closeDeferFn()
+ }
+ if q.deferQuicConnFn != nil {
+ defer func() {
+ q.deferQuicConnFn(q.quicConn, err)
+ }()
+ }
+ if q.inputConn != nil {
+ _ = q.inputConn.Close()
+ q.inputConn = nil
+
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ err = NewDissociate(q.connId).WriteTo(buf)
+ if err != nil {
+ return
+ }
+ var stream quic.SendStream
+ stream, err = q.quicConn.OpenUniStream()
+ if err != nil {
+ return
+ }
+ _, err = buf.WriteTo(stream)
+ if err != nil {
+ return
+ }
+ err = stream.Close()
+ if err != nil {
+ return
+ }
+ }
+ return
+}
+
+func (q *quicStreamPacketConn) SetDeadline(t time.Time) error {
+ //TODO implement me
+ return nil
+}
+
+func (q *quicStreamPacketConn) SetReadDeadline(t time.Time) error {
+ if q.inputConn != nil {
+ return q.inputConn.SetReadDeadline(t)
+ }
+ return nil
+}
+
+func (q *quicStreamPacketConn) SetWriteDeadline(t time.Time) error {
+ //TODO implement me
+ return nil
+}
+
+func (q *quicStreamPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
+ if q.inputConn != nil {
+ var packet Packet
+ packet, err = ReadPacket(q.inputConn)
+ if err != nil {
+ return
+ }
+ n = copy(p, packet.DATA)
+ addr = packet.ADDR.UDPAddr()
+ } else {
+ err = net.ErrClosed
+ }
+ return
+}
+
+func (q *quicStreamPacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ if q.inputConn != nil {
+ var packet Packet
+ packet, err = ReadPacket(q.inputConn)
+ if err != nil {
+ return
+ }
+ data = packet.DATA
+ addr = packet.ADDR.UDPAddr()
+ } else {
+ err = net.ErrClosed
+ }
+ return
+}
+
+func (q *quicStreamPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
+ if q.udpRelayMode != common.QUIC && len(p) > q.maxUdpRelayPacketSize {
+ return 0, &quic.DatagramTooLargeError{MaxDatagramPayloadSize: int64(q.maxUdpRelayPacketSize)}
+ }
+ if q.closed {
+ return 0, net.ErrClosed
+ }
+ if q.writeClosed != nil && q.writeClosed.Load() {
+ _ = q.Close()
+ return 0, net.ErrClosed
+ }
+ if q.deferQuicConnFn != nil {
+ defer func() {
+ q.deferQuicConnFn(q.quicConn, err)
+ }()
+ }
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ address, err := NewAddressNetAddr(addr)
+ if err != nil {
+ return
+ }
+ err = NewPacket(q.connId, uint16(len(p)), address, p).WriteTo(buf)
+ if err != nil {
+ return
+ }
+ switch q.udpRelayMode {
+ case common.QUIC:
+ var stream quic.SendStream
+ stream, err = q.quicConn.OpenUniStream()
+ if err != nil {
+ return
+ }
+ defer stream.Close()
+ _, err = buf.WriteTo(stream)
+ if err != nil {
+ return
+ }
+ default: // native
+ data := buf.Bytes()
+ err = q.quicConn.SendDatagram(data)
+ if err != nil {
+ return
+ }
+ }
+ n = len(p)
+
+ return
+}
+
+func (q *quicStreamPacketConn) LocalAddr() net.Addr {
+ return q.quicConn.LocalAddr()
+}
+
+var _ net.PacketConn = (*quicStreamPacketConn)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/protocol.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/protocol.go
new file mode 100644
index 0000000..2953674
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/protocol.go
@@ -0,0 +1,598 @@
+package v4
+
+import (
+ "encoding/binary"
+ "fmt"
+ "io"
+ "net"
+ "net/netip"
+ "strconv"
+
+ "github.com/metacubex/quic-go"
+ "lukechampine.com/blake3"
+
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+)
+
+type BufferedReader interface {
+ io.Reader
+ io.ByteReader
+}
+
+type BufferedWriter interface {
+ io.Writer
+ io.ByteWriter
+}
+
+type CommandType byte
+
+const (
+ AuthenticateType = CommandType(0x00)
+ ConnectType = CommandType(0x01)
+ PacketType = CommandType(0x02)
+ DissociateType = CommandType(0x03)
+ HeartbeatType = CommandType(0x04)
+ ResponseType = CommandType(0xff)
+)
+
+const VER byte = 0x04
+
+func (c CommandType) String() string {
+ switch c {
+ case AuthenticateType:
+ return "Authenticate"
+ case ConnectType:
+ return "Connect"
+ case PacketType:
+ return "Packet"
+ case DissociateType:
+ return "Dissociate"
+ case HeartbeatType:
+ return "Heartbeat"
+ case ResponseType:
+ return "Response"
+ default:
+ return fmt.Sprintf("UnknowCommand: %#x", byte(c))
+ }
+}
+
+func (c CommandType) BytesLen() int {
+ return 1
+}
+
+type CommandHead struct {
+ VER byte
+ TYPE CommandType
+}
+
+func NewCommandHead(TYPE CommandType) CommandHead {
+ return CommandHead{
+ VER: VER,
+ TYPE: TYPE,
+ }
+}
+
+func ReadCommandHead(reader BufferedReader) (c CommandHead, err error) {
+ c.VER, err = reader.ReadByte()
+ if err != nil {
+ return
+ }
+ TYPE, err := reader.ReadByte()
+ if err != nil {
+ return
+ }
+ c.TYPE = CommandType(TYPE)
+ return
+}
+
+func (c CommandHead) WriteTo(writer BufferedWriter) (err error) {
+ err = writer.WriteByte(c.VER)
+ if err != nil {
+ return
+ }
+ err = writer.WriteByte(byte(c.TYPE))
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c CommandHead) BytesLen() int {
+ return 1 + c.TYPE.BytesLen()
+}
+
+type Authenticate struct {
+ CommandHead
+ TKN [32]byte
+}
+
+func NewAuthenticate(TKN [32]byte) Authenticate {
+ return Authenticate{
+ CommandHead: NewCommandHead(AuthenticateType),
+ TKN: TKN,
+ }
+}
+
+func ReadAuthenticateWithHead(head CommandHead, reader BufferedReader) (c Authenticate, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != AuthenticateType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ _, err = io.ReadFull(reader, c.TKN[:])
+ if err != nil {
+ return
+ }
+ return
+}
+
+func ReadAuthenticate(reader BufferedReader) (c Authenticate, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadAuthenticateWithHead(head, reader)
+}
+
+func GenTKN(token string) [32]byte {
+ return blake3.Sum256([]byte(token))
+}
+
+func (c Authenticate) WriteTo(writer BufferedWriter) (err error) {
+ err = c.CommandHead.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ _, err = writer.Write(c.TKN[:])
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Authenticate) BytesLen() int {
+ return c.CommandHead.BytesLen() + 32
+}
+
+type Connect struct {
+ CommandHead
+ ADDR Address
+}
+
+func NewConnect(ADDR Address) Connect {
+ return Connect{
+ CommandHead: NewCommandHead(ConnectType),
+ ADDR: ADDR,
+ }
+}
+
+func ReadConnectWithHead(head CommandHead, reader BufferedReader) (c Connect, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != ConnectType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ c.ADDR, err = ReadAddress(reader)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func ReadConnect(reader BufferedReader) (c Connect, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadConnectWithHead(head, reader)
+}
+
+func (c Connect) WriteTo(writer BufferedWriter) (err error) {
+ err = c.CommandHead.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ err = c.ADDR.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Connect) BytesLen() int {
+ return c.CommandHead.BytesLen() + c.ADDR.BytesLen()
+}
+
+type Packet struct {
+ CommandHead
+ ASSOC_ID uint32
+ LEN uint16
+ ADDR Address
+ DATA []byte
+}
+
+func NewPacket(ASSOC_ID uint32, LEN uint16, ADDR Address, DATA []byte) Packet {
+ return Packet{
+ CommandHead: NewCommandHead(PacketType),
+ ASSOC_ID: ASSOC_ID,
+ LEN: LEN,
+ ADDR: ADDR,
+ DATA: DATA,
+ }
+}
+
+func ReadPacketWithHead(head CommandHead, reader BufferedReader) (c Packet, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != PacketType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ err = binary.Read(reader, binary.BigEndian, &c.ASSOC_ID)
+ if err != nil {
+ return
+ }
+ err = binary.Read(reader, binary.BigEndian, &c.LEN)
+ if err != nil {
+ return
+ }
+ c.ADDR, err = ReadAddress(reader)
+ if err != nil {
+ return
+ }
+ c.DATA = make([]byte, c.LEN)
+ _, err = io.ReadFull(reader, c.DATA)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func ReadPacket(reader BufferedReader) (c Packet, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadPacketWithHead(head, reader)
+}
+
+func (c Packet) WriteTo(writer BufferedWriter) (err error) {
+ err = c.CommandHead.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.ASSOC_ID)
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.LEN)
+ if err != nil {
+ return
+ }
+ err = c.ADDR.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ _, err = writer.Write(c.DATA)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Packet) BytesLen() int {
+ return c.CommandHead.BytesLen() + 4 + 2 + c.ADDR.BytesLen() + len(c.DATA)
+}
+
+var PacketOverHead = NewPacket(0, 0, NewAddressAddrPort(netip.AddrPortFrom(netip.IPv6Unspecified(), 0)), nil).BytesLen()
+
+type Dissociate struct {
+ CommandHead
+ ASSOC_ID uint32
+}
+
+func NewDissociate(ASSOC_ID uint32) Dissociate {
+ return Dissociate{
+ CommandHead: NewCommandHead(DissociateType),
+ ASSOC_ID: ASSOC_ID,
+ }
+}
+
+func ReadDissociateWithHead(head CommandHead, reader BufferedReader) (c Dissociate, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != DissociateType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ err = binary.Read(reader, binary.BigEndian, &c.ASSOC_ID)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func ReadDissociate(reader BufferedReader) (c Dissociate, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadDissociateWithHead(head, reader)
+}
+
+func (c Dissociate) WriteTo(writer BufferedWriter) (err error) {
+ err = c.CommandHead.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.ASSOC_ID)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Dissociate) BytesLen() int {
+ return c.CommandHead.BytesLen() + 4
+}
+
+type Heartbeat struct {
+ CommandHead
+}
+
+func NewHeartbeat() Heartbeat {
+ return Heartbeat{
+ CommandHead: NewCommandHead(HeartbeatType),
+ }
+}
+
+func ReadHeartbeatWithHead(head CommandHead, reader BufferedReader) (c Heartbeat, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != HeartbeatType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ return
+}
+
+func ReadHeartbeat(reader BufferedReader) (c Heartbeat, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadHeartbeatWithHead(head, reader)
+}
+
+type Response struct {
+ CommandHead
+ REP byte
+}
+
+func NewResponse(REP byte) Response {
+ return Response{
+ CommandHead: NewCommandHead(ResponseType),
+ REP: REP,
+ }
+}
+
+func NewResponseSucceed() Response {
+ return NewResponse(0x00)
+}
+
+func NewResponseFailed() Response {
+ return NewResponse(0xff)
+}
+
+func ReadResponseWithHead(head CommandHead, reader BufferedReader) (c Response, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != ResponseType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ c.REP, err = reader.ReadByte()
+ if err != nil {
+ return
+ }
+ return
+}
+
+func ReadResponse(reader BufferedReader) (c Response, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadResponseWithHead(head, reader)
+}
+
+func (c Response) WriteTo(writer BufferedWriter) (err error) {
+ err = c.CommandHead.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ err = writer.WriteByte(c.REP)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Response) IsSucceed() bool {
+ return c.REP == 0x00
+}
+
+func (c Response) IsFailed() bool {
+ return c.REP == 0xff
+}
+
+func (c Response) BytesLen() int {
+ return c.CommandHead.BytesLen() + 1
+}
+
+// Addr types
+const (
+ AtypDomainName byte = 0
+ AtypIPv4 byte = 1
+ AtypIPv6 byte = 2
+)
+
+type Address struct {
+ TYPE byte
+ ADDR []byte
+ PORT uint16
+}
+
+func NewAddress(metadata *C.Metadata) Address {
+ var addrType byte
+ var addr []byte
+ switch metadata.AddrType() {
+ case socks5.AtypIPv4:
+ addrType = AtypIPv4
+ addr = metadata.DstIP.AsSlice()
+ case socks5.AtypIPv6:
+ addrType = AtypIPv6
+ addr = metadata.DstIP.AsSlice()
+ case socks5.AtypDomainName:
+ addrType = AtypDomainName
+ addr = make([]byte, len(metadata.Host)+1)
+ addr[0] = byte(len(metadata.Host))
+ copy(addr[1:], metadata.Host)
+ }
+
+ return Address{
+ TYPE: addrType,
+ ADDR: addr,
+ PORT: metadata.DstPort,
+ }
+}
+
+func NewAddressNetAddr(addr net.Addr) (Address, error) {
+ if addr, ok := addr.(interface{ AddrPort() netip.AddrPort }); ok {
+ if addrPort := addr.AddrPort(); addrPort.IsValid() { // sing's M.Socksaddr maybe return an invalid AddrPort if it's a DomainName
+ return NewAddressAddrPort(addrPort), nil
+ }
+ }
+ addrStr := addr.String()
+ if addrPort, err := netip.ParseAddrPort(addrStr); err == nil {
+ return NewAddressAddrPort(addrPort), nil
+ }
+ metadata := &C.Metadata{}
+ if err := metadata.SetRemoteAddress(addrStr); err != nil {
+ return Address{}, err
+ }
+ return NewAddress(metadata), nil
+}
+
+func NewAddressAddrPort(addrPort netip.AddrPort) Address {
+ var addrType byte
+ port := addrPort.Port()
+ addr := addrPort.Addr().Unmap()
+ if addr.Is4() {
+ addrType = AtypIPv4
+ } else {
+ addrType = AtypIPv6
+ }
+ return Address{
+ TYPE: addrType,
+ ADDR: addr.AsSlice(),
+ PORT: port,
+ }
+}
+
+func ReadAddress(reader BufferedReader) (c Address, err error) {
+ c.TYPE, err = reader.ReadByte()
+ if err != nil {
+ return
+ }
+ switch c.TYPE {
+ case AtypIPv4:
+ c.ADDR = make([]byte, net.IPv4len)
+ _, err = io.ReadFull(reader, c.ADDR)
+ if err != nil {
+ return
+ }
+ case AtypIPv6:
+ c.ADDR = make([]byte, net.IPv6len)
+ _, err = io.ReadFull(reader, c.ADDR)
+ if err != nil {
+ return
+ }
+ case AtypDomainName:
+ var addrLen byte
+ addrLen, err = reader.ReadByte()
+ if err != nil {
+ return
+ }
+ c.ADDR = make([]byte, addrLen+1)
+ c.ADDR[0] = addrLen
+ _, err = io.ReadFull(reader, c.ADDR[1:])
+ if err != nil {
+ return
+ }
+ }
+
+ err = binary.Read(reader, binary.BigEndian, &c.PORT)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Address) WriteTo(writer BufferedWriter) (err error) {
+ err = writer.WriteByte(c.TYPE)
+ if err != nil {
+ return
+ }
+ _, err = writer.Write(c.ADDR[:])
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.PORT)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Address) String() string {
+ switch c.TYPE {
+ case AtypDomainName:
+ return net.JoinHostPort(string(c.ADDR[1:]), strconv.Itoa(int(c.PORT)))
+ default:
+ addr, _ := netip.AddrFromSlice(c.ADDR)
+ addrPort := netip.AddrPortFrom(addr, c.PORT)
+ return addrPort.String()
+ }
+}
+
+func (c Address) SocksAddr() socks5.Addr {
+ addr := make([]byte, 1+len(c.ADDR)+2)
+ switch c.TYPE {
+ case AtypIPv4:
+ addr[0] = socks5.AtypIPv4
+ case AtypIPv6:
+ addr[0] = socks5.AtypIPv6
+ case AtypDomainName:
+ addr[0] = socks5.AtypDomainName
+ }
+ copy(addr[1:], c.ADDR)
+ binary.BigEndian.PutUint16(addr[len(addr)-2:], c.PORT)
+ return addr
+}
+
+func (c Address) UDPAddr() *net.UDPAddr {
+ return &net.UDPAddr{
+ IP: c.ADDR,
+ Port: int(c.PORT),
+ Zone: "",
+ }
+}
+
+func (c Address) BytesLen() int {
+ return 1 + len(c.ADDR) + 2
+}
+
+const (
+ ProtocolError = quic.ApplicationErrorCode(0xfffffff0)
+ AuthenticationFailed = quic.ApplicationErrorCode(0xfffffff1)
+ AuthenticationTimeout = quic.ApplicationErrorCode(0xfffffff2)
+ BadCommand = quic.ApplicationErrorCode(0xfffffff3)
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/server.go
new file mode 100644
index 0000000..2430866
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v4/server.go
@@ -0,0 +1,218 @@
+package v4
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "net"
+ "sync"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/common/atomic"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+ "github.com/metacubex/mihomo/transport/tuic/common"
+
+ "github.com/gofrs/uuid/v5"
+ "github.com/metacubex/quic-go"
+ "github.com/puzpuzpuz/xsync/v3"
+)
+
+type ServerOption struct {
+ HandleTcpFn func(conn net.Conn, addr socks5.Addr, additions ...inbound.Addition) error
+ HandleUdpFn func(addr socks5.Addr, packet C.UDPPacket, additions ...inbound.Addition) error
+
+ Tokens [][32]byte
+ MaxUdpRelayPacketSize int
+}
+
+func NewServerHandler(option *ServerOption, quicConn quic.EarlyConnection, uuid uuid.UUID) common.ServerHandler {
+ return &serverHandler{
+ ServerOption: option,
+ quicConn: quicConn,
+ uuid: uuid,
+ authCh: make(chan struct{}),
+ udpInputMap: xsync.NewMapOf[uint32, *atomic.Bool](),
+ }
+}
+
+type serverHandler struct {
+ *ServerOption
+ quicConn quic.EarlyConnection
+ uuid uuid.UUID
+
+ authCh chan struct{}
+ authOk atomic.Bool
+ authOnce sync.Once
+
+ udpInputMap *xsync.MapOf[uint32, *atomic.Bool]
+}
+
+func (s *serverHandler) AuthOk() bool {
+ return s.authOk.Load()
+}
+
+func (s *serverHandler) HandleTimeout() {
+ s.authOnce.Do(func() {
+ _ = s.quicConn.CloseWithError(AuthenticationTimeout, "AuthenticationTimeout")
+ s.authOk.Store(false)
+ close(s.authCh)
+ })
+}
+
+func (s *serverHandler) HandleMessage(message []byte) (err error) {
+ buffer := bytes.NewBuffer(message)
+ packet, err := ReadPacket(buffer)
+ if err != nil {
+ return
+ }
+ return s.parsePacket(&packet, common.NATIVE)
+}
+
+func (s *serverHandler) parsePacket(packet *Packet, udpRelayMode common.UdpRelayMode) (err error) {
+ <-s.authCh
+ if !s.authOk.Load() {
+ return
+ }
+ var assocId uint32
+
+ assocId = packet.ASSOC_ID
+
+ writeClosed, _ := s.udpInputMap.LoadOrCompute(assocId, func() *atomic.Bool { return &atomic.Bool{} })
+ if writeClosed.Load() {
+ return nil
+ }
+
+ pc := &quicStreamPacketConn{
+ connId: assocId,
+ quicConn: s.quicConn,
+ inputConn: nil,
+ udpRelayMode: udpRelayMode,
+ maxUdpRelayPacketSize: s.MaxUdpRelayPacketSize,
+ deferQuicConnFn: nil,
+ closeDeferFn: nil,
+ writeClosed: writeClosed,
+ }
+
+ return s.HandleUdpFn(packet.ADDR.SocksAddr(), &serverUDPPacket{
+ pc: pc,
+ packet: packet,
+ rAddr: N.NewCustomAddr("tuic", fmt.Sprintf("tuic-%s-%d", s.uuid, assocId), s.quicConn.RemoteAddr()), // for tunnel's handleUDPConn
+ })
+}
+
+func (s *serverHandler) HandleStream(conn *N.BufferedConn) (err error) {
+ connect, err := ReadConnect(conn)
+ if err != nil {
+ return err
+ }
+ <-s.authCh
+ if !s.authOk.Load() {
+ return conn.Close()
+ }
+
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ err = s.HandleTcpFn(conn, connect.ADDR.SocksAddr())
+ if err != nil {
+ err = NewResponseFailed().WriteTo(buf)
+ defer conn.Close()
+ } else {
+ err = NewResponseSucceed().WriteTo(buf)
+ }
+ if err != nil {
+ _ = conn.Close()
+ return err
+ }
+ _, err = buf.WriteTo(conn)
+ if err != nil {
+ _ = conn.Close()
+ return err
+ }
+
+ return
+}
+
+func (s *serverHandler) HandleUniStream(reader *bufio.Reader) (err error) {
+ commandHead, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ switch commandHead.TYPE {
+ case AuthenticateType:
+ var authenticate Authenticate
+ authenticate, err = ReadAuthenticateWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ authOk := false
+ for _, tkn := range s.Tokens {
+ if authenticate.TKN == tkn {
+ authOk = true
+ break
+ }
+ }
+ s.authOnce.Do(func() {
+ if !authOk {
+ _ = s.quicConn.CloseWithError(AuthenticationFailed, "AuthenticationFailed")
+ }
+ s.authOk.Store(authOk)
+ close(s.authCh)
+ })
+ case PacketType:
+ var packet Packet
+ packet, err = ReadPacketWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ return s.parsePacket(&packet, common.QUIC)
+ case DissociateType:
+ var disassociate Dissociate
+ disassociate, err = ReadDissociateWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ if writeClosed, loaded := s.udpInputMap.LoadAndDelete(disassociate.ASSOC_ID); loaded {
+ writeClosed.Store(true)
+ }
+ case HeartbeatType:
+ var heartbeat Heartbeat
+ heartbeat, err = ReadHeartbeatWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ heartbeat.BytesLen()
+ }
+ return
+}
+
+type serverUDPPacket struct {
+ pc *quicStreamPacketConn
+ packet *Packet
+ rAddr net.Addr
+}
+
+func (s *serverUDPPacket) InAddr() net.Addr {
+ return s.pc.LocalAddr()
+}
+
+func (s *serverUDPPacket) LocalAddr() net.Addr {
+ return s.rAddr
+}
+
+func (s *serverUDPPacket) Data() []byte {
+ return s.packet.DATA
+}
+
+func (s *serverUDPPacket) WriteBack(b []byte, addr net.Addr) (n int, err error) {
+ return s.pc.WriteTo(b, addr)
+}
+
+func (s *serverUDPPacket) Drop() {
+ s.packet.DATA = nil
+}
+
+var _ C.UDPPacket = (*serverUDPPacket)(nil)
+var _ C.UDPPacketInAddr = (*serverUDPPacket)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/client.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/client.go
new file mode 100644
index 0000000..a3c13d2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/client.go
@@ -0,0 +1,420 @@
+package v5
+
+import (
+ "bufio"
+ "bytes"
+ "context"
+ "crypto/tls"
+ "errors"
+ "net"
+ "runtime"
+ "sync"
+ "sync/atomic"
+ "time"
+
+ atomic2 "github.com/metacubex/mihomo/common/atomic"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/transport/tuic/common"
+
+ "github.com/metacubex/quic-go"
+ "github.com/metacubex/randv2"
+ "github.com/puzpuzpuz/xsync/v3"
+)
+
+type ClientOption struct {
+ TlsConfig *tls.Config
+ QuicConfig *quic.Config
+ Uuid [16]byte
+ Password string
+ UdpRelayMode common.UdpRelayMode
+ CongestionController string
+ ReduceRtt bool
+ MaxUdpRelayPacketSize int
+ MaxOpenStreams int64
+ CWND int
+}
+
+type clientImpl struct {
+ *ClientOption
+ udp bool
+
+ quicConn quic.Connection
+ connMutex sync.Mutex
+
+ openStreams atomic.Int64
+ closed atomic.Bool
+
+ udpInputMap *xsync.MapOf[uint16, net.Conn]
+
+ // only ready for PoolClient
+ dialerRef C.Dialer
+ lastVisited atomic2.TypedValue[time.Time]
+}
+
+func (t *clientImpl) OpenStreams() int64 {
+ return t.openStreams.Load()
+}
+
+func (t *clientImpl) DialerRef() C.Dialer {
+ return t.dialerRef
+}
+
+func (t *clientImpl) LastVisited() time.Time {
+ return t.lastVisited.Load()
+}
+
+func (t *clientImpl) SetLastVisited(last time.Time) {
+ t.lastVisited.Store(last)
+}
+
+func (t *clientImpl) getQuicConn(ctx context.Context, dialer C.Dialer, dialFn common.DialFunc) (quic.Connection, error) {
+ t.connMutex.Lock()
+ defer t.connMutex.Unlock()
+ if t.quicConn != nil {
+ return t.quicConn, nil
+ }
+ transport, addr, err := dialFn(ctx, dialer)
+ if err != nil {
+ return nil, err
+ }
+ var quicConn quic.Connection
+ if t.ReduceRtt {
+ quicConn, err = transport.DialEarly(ctx, addr, t.TlsConfig, t.QuicConfig)
+ } else {
+ quicConn, err = transport.Dial(ctx, addr, t.TlsConfig, t.QuicConfig)
+ }
+ if err != nil {
+ return nil, err
+ }
+
+ common.SetCongestionController(quicConn, t.CongestionController, t.CWND)
+
+ go func() {
+ _ = t.sendAuthentication(quicConn)
+ }()
+
+ if t.udp && t.UdpRelayMode == common.QUIC {
+ go func() {
+ _ = t.handleUniStream(quicConn)
+ }()
+ }
+ go func() {
+ _ = t.handleMessage(quicConn) // always handleMessage because tuicV5 using datagram to send the Heartbeat
+ }()
+
+ t.quicConn = quicConn
+ t.openStreams.Store(0)
+ return quicConn, nil
+}
+
+func (t *clientImpl) sendAuthentication(quicConn quic.Connection) (err error) {
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ }()
+ stream, err := quicConn.OpenUniStream()
+ if err != nil {
+ return err
+ }
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ token, err := GenToken(quicConn.ConnectionState(), t.Uuid, t.Password)
+ if err != nil {
+ return err
+ }
+ err = NewAuthenticate(t.Uuid, token).WriteTo(buf)
+ if err != nil {
+ return err
+ }
+ _, err = buf.WriteTo(stream)
+ if err != nil {
+ return err
+ }
+ err = stream.Close()
+ if err != nil {
+ return
+ }
+ return nil
+}
+
+func (t *clientImpl) handleUniStream(quicConn quic.Connection) (err error) {
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ }()
+ for {
+ var stream quic.ReceiveStream
+ stream, err = quicConn.AcceptUniStream(context.Background())
+ if err != nil {
+ return err
+ }
+ go func() (err error) {
+ var assocId uint16
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ if err != nil && assocId != 0 {
+ if val, ok := t.udpInputMap.LoadAndDelete(assocId); ok {
+ if conn, ok := val.(net.Conn); ok {
+ _ = conn.Close()
+ }
+ }
+ }
+ stream.CancelRead(0)
+ }()
+ reader := bufio.NewReader(stream)
+ commandHead, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ switch commandHead.TYPE {
+ case PacketType:
+ var packet Packet
+ packet, err = ReadPacketWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ if t.udp && t.UdpRelayMode == common.QUIC {
+ assocId = packet.ASSOC_ID
+ if val, ok := t.udpInputMap.Load(assocId); ok {
+ if conn, ok := val.(net.Conn); ok {
+ writer := bufio.NewWriterSize(conn, packet.BytesLen())
+ _ = packet.WriteTo(writer)
+ _ = writer.Flush()
+ }
+ }
+ }
+ }
+ return
+ }()
+ }
+}
+
+func (t *clientImpl) handleMessage(quicConn quic.Connection) (err error) {
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ }()
+ for {
+ var message []byte
+ message, err = quicConn.ReceiveDatagram(context.Background())
+ if err != nil {
+ return err
+ }
+ go func() (err error) {
+ var assocId uint16
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ if err != nil && assocId != 0 {
+ if val, ok := t.udpInputMap.LoadAndDelete(assocId); ok {
+ if conn, ok := val.(net.Conn); ok {
+ _ = conn.Close()
+ }
+ }
+ }
+ }()
+ reader := bytes.NewBuffer(message)
+ commandHead, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ switch commandHead.TYPE {
+ case PacketType:
+ var packet Packet
+ packet, err = ReadPacketWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ if t.udp && t.UdpRelayMode == common.NATIVE {
+ assocId = packet.ASSOC_ID
+ if val, ok := t.udpInputMap.Load(assocId); ok {
+ if conn, ok := val.(net.Conn); ok {
+ _, _ = conn.Write(message)
+ }
+ }
+ }
+ case HeartbeatType:
+ var heartbeat Heartbeat
+ heartbeat, err = ReadHeartbeatWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ heartbeat.BytesLen()
+ }
+ return
+ }()
+ }
+}
+
+func (t *clientImpl) deferQuicConn(quicConn quic.Connection, err error) {
+ var netError net.Error
+ if err != nil && errors.As(err, &netError) {
+ t.forceClose(quicConn, err)
+ }
+}
+
+func (t *clientImpl) forceClose(quicConn quic.Connection, err error) {
+ t.connMutex.Lock()
+ defer t.connMutex.Unlock()
+ if quicConn == nil {
+ quicConn = t.quicConn
+ }
+ if quicConn != nil {
+ if quicConn == t.quicConn {
+ t.quicConn = nil
+ }
+ }
+ errStr := ""
+ if err != nil {
+ errStr = err.Error()
+ }
+ if quicConn != nil {
+ _ = quicConn.CloseWithError(ProtocolError, errStr)
+ }
+ udpInputMap := t.udpInputMap
+ udpInputMap.Range(func(key uint16, value net.Conn) bool {
+ conn := value
+ _ = conn.Close()
+ udpInputMap.Delete(key)
+ return true
+ })
+}
+
+func (t *clientImpl) Close() {
+ t.closed.Store(true)
+ if t.openStreams.Load() == 0 {
+ t.forceClose(nil, common.ClientClosed)
+ }
+}
+
+func (t *clientImpl) DialContextWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn common.DialFunc) (net.Conn, error) {
+ quicConn, err := t.getQuicConn(ctx, dialer, dialFn)
+ if err != nil {
+ return nil, err
+ }
+ openStreams := t.openStreams.Add(1)
+ if openStreams >= t.MaxOpenStreams {
+ t.openStreams.Add(-1)
+ return nil, common.TooManyOpenStreams
+ }
+ stream, err := func() (stream net.Conn, err error) {
+ defer func() {
+ t.deferQuicConn(quicConn, err)
+ }()
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ err = NewConnect(NewAddress(metadata)).WriteTo(buf)
+ if err != nil {
+ return nil, err
+ }
+ quicStream, err := quicConn.OpenStream()
+ if err != nil {
+ return nil, err
+ }
+ stream = common.NewQuicStreamConn(
+ quicStream,
+ quicConn.LocalAddr(),
+ quicConn.RemoteAddr(),
+ func() {
+ time.AfterFunc(C.DefaultTCPTimeout, func() {
+ openStreams := t.openStreams.Add(-1)
+ if openStreams == 0 && t.closed.Load() {
+ t.forceClose(quicConn, common.ClientClosed)
+ }
+ })
+ },
+ )
+ _, err = buf.WriteTo(stream)
+ if err != nil {
+ _ = stream.Close()
+ return nil, err
+ }
+ return stream, err
+ }()
+ if err != nil {
+ return nil, err
+ }
+
+ return stream, nil
+}
+
+func (t *clientImpl) ListenPacketWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn common.DialFunc) (net.PacketConn, error) {
+ quicConn, err := t.getQuicConn(ctx, dialer, dialFn)
+ if err != nil {
+ return nil, err
+ }
+ openStreams := t.openStreams.Add(1)
+ if openStreams >= t.MaxOpenStreams {
+ t.openStreams.Add(-1)
+ return nil, common.TooManyOpenStreams
+ }
+
+ pipe1, pipe2 := N.Pipe()
+ var connId uint16
+ for {
+ connId = uint16(randv2.IntN(0xFFFF))
+ _, loaded := t.udpInputMap.LoadOrStore(connId, pipe1)
+ if !loaded {
+ break
+ }
+ }
+ pc := &quicStreamPacketConn{
+ connId: connId,
+ quicConn: quicConn,
+ inputConn: N.NewBufferedConn(pipe2),
+ udpRelayMode: t.UdpRelayMode,
+ maxUdpRelayPacketSize: t.MaxUdpRelayPacketSize,
+ deferQuicConnFn: t.deferQuicConn,
+ closeDeferFn: func() {
+ t.udpInputMap.Delete(connId)
+ time.AfterFunc(C.DefaultUDPTimeout, func() {
+ openStreams := t.openStreams.Add(-1)
+ if openStreams == 0 && t.closed.Load() {
+ t.forceClose(quicConn, common.ClientClosed)
+ }
+ })
+ },
+ }
+ return pc, nil
+}
+
+type Client struct {
+ *clientImpl // use an independent pointer to let Finalizer can work no matter somewhere handle an influence in clientImpl inner
+}
+
+func (t *Client) DialContextWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn common.DialFunc) (net.Conn, error) {
+ conn, err := t.clientImpl.DialContextWithDialer(ctx, metadata, dialer, dialFn)
+ if err != nil {
+ return nil, err
+ }
+ return N.NewRefConn(conn, t), err
+}
+
+func (t *Client) ListenPacketWithDialer(ctx context.Context, metadata *C.Metadata, dialer C.Dialer, dialFn common.DialFunc) (net.PacketConn, error) {
+ pc, err := t.clientImpl.ListenPacketWithDialer(ctx, metadata, dialer, dialFn)
+ if err != nil {
+ return nil, err
+ }
+ return N.NewRefPacketConn(pc, t), nil
+}
+
+func (t *Client) forceClose() {
+ t.clientImpl.forceClose(nil, common.ClientClosed)
+}
+
+func NewClient(clientOption *ClientOption, udp bool, dialerRef C.Dialer) *Client {
+ ci := &clientImpl{
+ ClientOption: clientOption,
+ udp: udp,
+ dialerRef: dialerRef,
+ udpInputMap: xsync.NewMapOf[uint16, net.Conn](),
+ }
+ c := &Client{ci}
+ runtime.SetFinalizer(c, closeClient)
+ log.Debugln("New TuicV5 Client at %p", c)
+ return c
+}
+
+func closeClient(client *Client) {
+ log.Debugln("Close TuicV5 Client at %p", client)
+ client.forceClose()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/frag.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/frag.go
new file mode 100644
index 0000000..d680a5d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/frag.go
@@ -0,0 +1,116 @@
+package v5
+
+import (
+ "bytes"
+ "sync"
+
+ "github.com/metacubex/mihomo/common/lru"
+
+ "github.com/metacubex/quic-go"
+)
+
+// MaxFragSize is a safe udp relay packet size
+// because tuicv5 support udp fragment so we unneeded to do a magic modify for quic-go to increase MaxDatagramFrameSize
+// it may not work fine in some platform
+// "1200" from quic-go's MaxDatagramSize
+// "-3" from quic-go's DatagramFrame.MaxDataLen
+var MaxFragSize = 1200 - PacketOverHead - 3
+
+func fragWriteNative(quicConn quic.Connection, packet Packet, buf *bytes.Buffer, fragSize int) (err error) {
+ fullPayload := packet.DATA
+ off := 0
+ fragID := uint8(0)
+ fragCount := uint8((len(fullPayload) + fragSize - 1) / fragSize) // round up
+ packet.FRAG_TOTAL = fragCount
+ for off < len(fullPayload) {
+ payloadSize := len(fullPayload) - off
+ if payloadSize > fragSize {
+ payloadSize = fragSize
+ }
+ frag := packet
+ frag.FRAG_ID = fragID
+ frag.SIZE = uint16(payloadSize)
+ frag.DATA = fullPayload[off : off+payloadSize]
+ off += payloadSize
+ fragID++
+ buf.Reset()
+ err = frag.WriteTo(buf)
+ if err != nil {
+ return
+ }
+ data := buf.Bytes()
+ err = quicConn.SendDatagram(data)
+ if err != nil {
+ return
+ }
+ packet.ADDR.TYPE = AtypNone // avoid "fragment 2/2: address in non-first fragment"
+ }
+ return
+}
+
+type deFragger struct {
+ lru *lru.LruCache[uint16, *packetBag]
+ once sync.Once
+}
+
+type packetBag struct {
+ frags []*Packet
+ count uint8
+ mutex sync.Mutex
+}
+
+func newPacketBag() *packetBag {
+ return new(packetBag)
+}
+
+func (d *deFragger) init() {
+ if d.lru == nil {
+ d.lru = lru.New(
+ lru.WithAge[uint16, *packetBag](10),
+ lru.WithUpdateAgeOnGet[uint16, *packetBag](),
+ )
+ }
+}
+
+func (d *deFragger) Feed(m *Packet) *Packet {
+ if m.FRAG_TOTAL <= 1 {
+ return m
+ }
+ if m.FRAG_ID >= m.FRAG_TOTAL {
+ // wtf is this?
+ return nil
+ }
+ d.once.Do(d.init) // lazy init
+ bag, _ := d.lru.GetOrStore(m.PKT_ID, newPacketBag)
+ bag.mutex.Lock()
+ defer bag.mutex.Unlock()
+ if int(m.FRAG_TOTAL) != len(bag.frags) {
+ // new message, clear previous state
+ bag.frags = make([]*Packet, m.FRAG_TOTAL)
+ bag.count = 1
+ bag.frags[m.FRAG_ID] = m
+ return nil
+ }
+ if bag.frags[m.FRAG_ID] != nil {
+ return nil
+ }
+ bag.frags[m.FRAG_ID] = m
+ bag.count++
+ if int(bag.count) != len(bag.frags) {
+ return nil
+ }
+
+ // all fragments received, assemble
+ var data []byte
+ for _, frag := range bag.frags {
+ data = append(data, frag.DATA...)
+ }
+ p := *bag.frags[0] // recover from first fragment
+ p.SIZE = uint16(len(data))
+ p.DATA = data
+ p.FRAG_ID = 0
+ p.FRAG_TOTAL = 1
+ bag.frags = nil
+ d.lru.Delete(m.PKT_ID)
+ return &p
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/packet.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/packet.go
new file mode 100644
index 0000000..8281a11
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/packet.go
@@ -0,0 +1,207 @@
+package v5
+
+import (
+ "errors"
+ "net"
+ "sync"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/pool"
+ "github.com/metacubex/mihomo/transport/tuic/common"
+
+ "github.com/metacubex/quic-go"
+ "github.com/metacubex/randv2"
+)
+
+type quicStreamPacketConn struct {
+ connId uint16
+ quicConn quic.Connection
+ inputConn *N.BufferedConn
+
+ udpRelayMode common.UdpRelayMode
+ maxUdpRelayPacketSize int
+
+ deferQuicConnFn func(quicConn quic.Connection, err error)
+ closeDeferFn func()
+ writeClosed *atomic.Bool
+
+ closeOnce sync.Once
+ closeErr error
+ closed bool
+
+ deFragger
+}
+
+func (q *quicStreamPacketConn) Close() error {
+ q.closeOnce.Do(func() {
+ q.closed = true
+ q.closeErr = q.close()
+ })
+ return q.closeErr
+}
+
+func (q *quicStreamPacketConn) close() (err error) {
+ if q.closeDeferFn != nil {
+ defer q.closeDeferFn()
+ }
+ if q.deferQuicConnFn != nil {
+ defer func() {
+ q.deferQuicConnFn(q.quicConn, err)
+ }()
+ }
+ if q.inputConn != nil {
+ _ = q.inputConn.Close()
+ q.inputConn = nil
+
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ err = NewDissociate(q.connId).WriteTo(buf)
+ if err != nil {
+ return
+ }
+ var stream quic.SendStream
+ stream, err = q.quicConn.OpenUniStream()
+ if err != nil {
+ return
+ }
+ _, err = buf.WriteTo(stream)
+ if err != nil {
+ return
+ }
+ err = stream.Close()
+ if err != nil {
+ return
+ }
+ }
+ return
+}
+
+func (q *quicStreamPacketConn) SetDeadline(t time.Time) error {
+ //TODO implement me
+ return nil
+}
+
+func (q *quicStreamPacketConn) SetReadDeadline(t time.Time) error {
+ if q.inputConn != nil {
+ return q.inputConn.SetReadDeadline(t)
+ }
+ return nil
+}
+
+func (q *quicStreamPacketConn) SetWriteDeadline(t time.Time) error {
+ //TODO implement me
+ return nil
+}
+
+func (q *quicStreamPacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
+ if inputConn := q.inputConn; inputConn != nil { // copy inputConn avoid be nil in for loop
+ for {
+ var packet Packet
+ packet, err = ReadPacket(inputConn)
+ if err != nil {
+ return
+ }
+ if packetPtr := q.deFragger.Feed(&packet); packetPtr != nil {
+ n = copy(p, packet.DATA)
+ addr = packetPtr.ADDR.UDPAddr()
+ return
+ }
+ }
+ } else {
+ err = net.ErrClosed
+ }
+ return
+}
+
+func (q *quicStreamPacketConn) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ if inputConn := q.inputConn; inputConn != nil { // copy inputConn avoid be nil in for loop
+ for {
+ var packet Packet
+ packet, err = ReadPacket(inputConn)
+ if err != nil {
+ return
+ }
+ if packetPtr := q.deFragger.Feed(&packet); packetPtr != nil {
+ data = packetPtr.DATA
+ addr = packetPtr.ADDR.UDPAddr()
+ return
+ }
+ }
+ } else {
+ err = net.ErrClosed
+ }
+ return
+}
+
+func (q *quicStreamPacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
+ if len(p) > 0xffff { // uint16 max
+ return 0, &quic.DatagramTooLargeError{MaxDatagramPayloadSize: 0xffff}
+ }
+ if q.closed {
+ return 0, net.ErrClosed
+ }
+ if q.writeClosed != nil && q.writeClosed.Load() {
+ _ = q.Close()
+ return 0, net.ErrClosed
+ }
+ if q.deferQuicConnFn != nil {
+ defer func() {
+ q.deferQuicConnFn(q.quicConn, err)
+ }()
+ }
+ buf := pool.GetBuffer()
+ defer pool.PutBuffer(buf)
+ address, err := NewAddressNetAddr(addr)
+ if err != nil {
+ return
+ }
+ pktId := uint16(randv2.Uint32())
+ packet := NewPacket(q.connId, pktId, 1, 0, uint16(len(p)), address, p)
+ switch q.udpRelayMode {
+ case common.QUIC:
+ err = packet.WriteTo(buf)
+ if err != nil {
+ return
+ }
+ var stream quic.SendStream
+ stream, err = q.quicConn.OpenUniStream()
+ if err != nil {
+ return
+ }
+ defer stream.Close()
+ _, err = buf.WriteTo(stream)
+ if err != nil {
+ return
+ }
+ default: // native
+ if len(p) > q.maxUdpRelayPacketSize {
+ err = fragWriteNative(q.quicConn, packet, buf, q.maxUdpRelayPacketSize)
+ } else {
+ err = packet.WriteTo(buf)
+ if err != nil {
+ return
+ }
+ data := buf.Bytes()
+ err = q.quicConn.SendDatagram(data)
+ }
+
+ var tooLarge *quic.DatagramTooLargeError
+ if errors.As(err, &tooLarge) {
+ err = fragWriteNative(q.quicConn, packet, buf, int(tooLarge.MaxDatagramPayloadSize)-PacketOverHead)
+ }
+ if err != nil {
+ return
+ }
+ }
+ n = len(p)
+
+ return
+}
+
+func (q *quicStreamPacketConn) LocalAddr() net.Addr {
+ return q.quicConn.LocalAddr()
+}
+
+var _ net.PacketConn = (*quicStreamPacketConn)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/protocol.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/protocol.go
new file mode 100644
index 0000000..de51a08
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/protocol.go
@@ -0,0 +1,583 @@
+package v5
+
+import (
+ "encoding/binary"
+ "fmt"
+ "io"
+ "net"
+ "net/netip"
+ "strconv"
+
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+
+ "github.com/metacubex/quic-go"
+)
+
+type BufferedReader interface {
+ io.Reader
+ io.ByteReader
+}
+
+type BufferedWriter interface {
+ io.Writer
+ io.ByteWriter
+}
+
+type CommandType byte
+
+const (
+ AuthenticateType = CommandType(0x00)
+ ConnectType = CommandType(0x01)
+ PacketType = CommandType(0x02)
+ DissociateType = CommandType(0x03)
+ HeartbeatType = CommandType(0x04)
+)
+
+const VER byte = 0x05
+
+func (c CommandType) String() string {
+ switch c {
+ case AuthenticateType:
+ return "Authenticate"
+ case ConnectType:
+ return "Connect"
+ case PacketType:
+ return "Packet"
+ case DissociateType:
+ return "Dissociate"
+ case HeartbeatType:
+ return "Heartbeat"
+ default:
+ return fmt.Sprintf("UnknowCommand: %#x", byte(c))
+ }
+}
+
+func (c CommandType) BytesLen() int {
+ return 1
+}
+
+type CommandHead struct {
+ VER byte
+ TYPE CommandType
+}
+
+func NewCommandHead(TYPE CommandType) CommandHead {
+ return CommandHead{
+ VER: VER,
+ TYPE: TYPE,
+ }
+}
+
+func ReadCommandHead(reader BufferedReader) (c CommandHead, err error) {
+ c.VER, err = reader.ReadByte()
+ if err != nil {
+ return
+ }
+ TYPE, err := reader.ReadByte()
+ if err != nil {
+ return
+ }
+ c.TYPE = CommandType(TYPE)
+ return
+}
+
+func (c CommandHead) WriteTo(writer BufferedWriter) (err error) {
+ err = writer.WriteByte(c.VER)
+ if err != nil {
+ return
+ }
+ err = writer.WriteByte(byte(c.TYPE))
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c CommandHead) BytesLen() int {
+ return 1 + c.TYPE.BytesLen()
+}
+
+type Authenticate struct {
+ CommandHead
+ UUID [16]byte
+ TOKEN [32]byte
+}
+
+func NewAuthenticate(UUID [16]byte, TOKEN [32]byte) Authenticate {
+ return Authenticate{
+ CommandHead: NewCommandHead(AuthenticateType),
+ UUID: UUID,
+ TOKEN: TOKEN,
+ }
+}
+
+func ReadAuthenticateWithHead(head CommandHead, reader BufferedReader) (c Authenticate, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != AuthenticateType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ _, err = io.ReadFull(reader, c.UUID[:])
+ if err != nil {
+ return
+ }
+ _, err = io.ReadFull(reader, c.TOKEN[:])
+ if err != nil {
+ return
+ }
+ return
+}
+
+func ReadAuthenticate(reader BufferedReader) (c Authenticate, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadAuthenticateWithHead(head, reader)
+}
+
+func GenToken(state quic.ConnectionState, uuid [16]byte, password string) (token [32]byte, err error) {
+ var tokenBytes []byte
+ tokenBytes, err = state.TLS.ExportKeyingMaterial(utils.StringFromImmutableBytes(uuid[:]), utils.ImmutableBytesFromString(password), 32)
+ if err != nil {
+ return
+ }
+ copy(token[:], tokenBytes)
+ return
+}
+
+func (c Authenticate) WriteTo(writer BufferedWriter) (err error) {
+ err = c.CommandHead.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ _, err = writer.Write(c.UUID[:])
+ if err != nil {
+ return
+ }
+ _, err = writer.Write(c.TOKEN[:])
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Authenticate) BytesLen() int {
+ return c.CommandHead.BytesLen() + 16 + 32
+}
+
+type Connect struct {
+ CommandHead
+ ADDR Address
+}
+
+func NewConnect(ADDR Address) Connect {
+ return Connect{
+ CommandHead: NewCommandHead(ConnectType),
+ ADDR: ADDR,
+ }
+}
+
+func ReadConnectWithHead(head CommandHead, reader BufferedReader) (c Connect, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != ConnectType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ c.ADDR, err = ReadAddress(reader)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func ReadConnect(reader BufferedReader) (c Connect, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadConnectWithHead(head, reader)
+}
+
+func (c Connect) WriteTo(writer BufferedWriter) (err error) {
+ err = c.CommandHead.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ err = c.ADDR.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Connect) BytesLen() int {
+ return c.CommandHead.BytesLen() + c.ADDR.BytesLen()
+}
+
+type Packet struct {
+ CommandHead
+ ASSOC_ID uint16
+ PKT_ID uint16
+ FRAG_TOTAL uint8
+ FRAG_ID uint8
+ SIZE uint16
+ ADDR Address
+ DATA []byte
+}
+
+func NewPacket(ASSOC_ID uint16, PKT_ID uint16, FRGA_TOTAL uint8, FRAG_ID uint8, SIZE uint16, ADDR Address, DATA []byte) Packet {
+ return Packet{
+ CommandHead: NewCommandHead(PacketType),
+ ASSOC_ID: ASSOC_ID,
+ PKT_ID: PKT_ID,
+ FRAG_ID: FRAG_ID,
+ FRAG_TOTAL: FRGA_TOTAL,
+ SIZE: SIZE,
+ ADDR: ADDR,
+ DATA: DATA,
+ }
+}
+
+func ReadPacketWithHead(head CommandHead, reader BufferedReader) (c Packet, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != PacketType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ err = binary.Read(reader, binary.BigEndian, &c.ASSOC_ID)
+ if err != nil {
+ return
+ }
+ err = binary.Read(reader, binary.BigEndian, &c.PKT_ID)
+ if err != nil {
+ return
+ }
+ err = binary.Read(reader, binary.BigEndian, &c.FRAG_TOTAL)
+ if err != nil {
+ return
+ }
+ err = binary.Read(reader, binary.BigEndian, &c.FRAG_ID)
+ if err != nil {
+ return
+ }
+ err = binary.Read(reader, binary.BigEndian, &c.SIZE)
+ if err != nil {
+ return
+ }
+ c.ADDR, err = ReadAddress(reader)
+ if err != nil {
+ return
+ }
+ c.DATA = make([]byte, c.SIZE)
+ _, err = io.ReadFull(reader, c.DATA)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func ReadPacket(reader BufferedReader) (c Packet, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadPacketWithHead(head, reader)
+}
+
+func (c Packet) WriteTo(writer BufferedWriter) (err error) {
+ err = c.CommandHead.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.ASSOC_ID)
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.PKT_ID)
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.FRAG_TOTAL)
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.FRAG_ID)
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.SIZE)
+ if err != nil {
+ return
+ }
+ err = c.ADDR.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ _, err = writer.Write(c.DATA)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Packet) BytesLen() int {
+ return c.CommandHead.BytesLen() + 4 + 2 + c.ADDR.BytesLen() + len(c.DATA)
+}
+
+var PacketOverHead = NewPacket(0, 0, 0, 0, 0, NewAddressAddrPort(netip.AddrPortFrom(netip.IPv6Unspecified(), 0)), nil).BytesLen()
+
+type Dissociate struct {
+ CommandHead
+ ASSOC_ID uint16
+}
+
+func NewDissociate(ASSOC_ID uint16) Dissociate {
+ return Dissociate{
+ CommandHead: NewCommandHead(DissociateType),
+ ASSOC_ID: ASSOC_ID,
+ }
+}
+
+func ReadDissociateWithHead(head CommandHead, reader BufferedReader) (c Dissociate, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != DissociateType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ err = binary.Read(reader, binary.BigEndian, &c.ASSOC_ID)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func ReadDissociate(reader BufferedReader) (c Dissociate, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadDissociateWithHead(head, reader)
+}
+
+func (c Dissociate) WriteTo(writer BufferedWriter) (err error) {
+ err = c.CommandHead.WriteTo(writer)
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.ASSOC_ID)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Dissociate) BytesLen() int {
+ return c.CommandHead.BytesLen() + 4
+}
+
+type Heartbeat struct {
+ CommandHead
+}
+
+func NewHeartbeat() Heartbeat {
+ return Heartbeat{
+ CommandHead: NewCommandHead(HeartbeatType),
+ }
+}
+
+func ReadHeartbeatWithHead(head CommandHead, reader BufferedReader) (c Heartbeat, err error) {
+ c.CommandHead = head
+ if c.CommandHead.TYPE != HeartbeatType {
+ err = fmt.Errorf("error command type: %s", c.CommandHead.TYPE)
+ return
+ }
+ return
+}
+
+func ReadHeartbeat(reader BufferedReader) (c Heartbeat, err error) {
+ head, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ return ReadHeartbeatWithHead(head, reader)
+}
+
+// Addr types
+const (
+ AtypDomainName byte = 0
+ AtypIPv4 byte = 1
+ AtypIPv6 byte = 2
+ AtypNone byte = 255 // Address type None is used in Packet commands that is not the first fragment of a UDP packet.
+)
+
+type Address struct {
+ TYPE byte
+ ADDR []byte
+ PORT uint16
+}
+
+func NewAddress(metadata *C.Metadata) Address {
+ var addrType byte
+ var addr []byte
+ switch metadata.AddrType() {
+ case socks5.AtypIPv4:
+ addrType = AtypIPv4
+ addr = metadata.DstIP.AsSlice()
+ case socks5.AtypIPv6:
+ addrType = AtypIPv6
+ addr = metadata.DstIP.AsSlice()
+ case socks5.AtypDomainName:
+ addrType = AtypDomainName
+ addr = make([]byte, len(metadata.Host)+1)
+ addr[0] = byte(len(metadata.Host))
+ copy(addr[1:], metadata.Host)
+ }
+
+ return Address{
+ TYPE: addrType,
+ ADDR: addr,
+ PORT: metadata.DstPort,
+ }
+}
+
+func NewAddressNetAddr(addr net.Addr) (Address, error) {
+ if addr, ok := addr.(interface{ AddrPort() netip.AddrPort }); ok {
+ if addrPort := addr.AddrPort(); addrPort.IsValid() { // sing's M.Socksaddr maybe return an invalid AddrPort if it's a DomainName
+ return NewAddressAddrPort(addrPort), nil
+ }
+ }
+ addrStr := addr.String()
+ if addrPort, err := netip.ParseAddrPort(addrStr); err == nil {
+ return NewAddressAddrPort(addrPort), nil
+ }
+ metadata := &C.Metadata{}
+ if err := metadata.SetRemoteAddress(addrStr); err != nil {
+ return Address{}, err
+ }
+ return NewAddress(metadata), nil
+}
+
+func NewAddressAddrPort(addrPort netip.AddrPort) Address {
+ var addrType byte
+ port := addrPort.Port()
+ addr := addrPort.Addr().Unmap()
+ if addr.Is4() {
+ addrType = AtypIPv4
+ } else {
+ addrType = AtypIPv6
+ }
+ return Address{
+ TYPE: addrType,
+ ADDR: addr.AsSlice(),
+ PORT: port,
+ }
+}
+
+func ReadAddress(reader BufferedReader) (c Address, err error) {
+ c.TYPE, err = reader.ReadByte()
+ if err != nil {
+ return
+ }
+ switch c.TYPE {
+ case AtypIPv4:
+ c.ADDR = make([]byte, net.IPv4len)
+ _, err = io.ReadFull(reader, c.ADDR)
+ if err != nil {
+ return
+ }
+ case AtypIPv6:
+ c.ADDR = make([]byte, net.IPv6len)
+ _, err = io.ReadFull(reader, c.ADDR)
+ if err != nil {
+ return
+ }
+ case AtypDomainName:
+ var addrLen byte
+ addrLen, err = reader.ReadByte()
+ if err != nil {
+ return
+ }
+ c.ADDR = make([]byte, addrLen+1)
+ c.ADDR[0] = addrLen
+ _, err = io.ReadFull(reader, c.ADDR[1:])
+ if err != nil {
+ return
+ }
+ }
+
+ if c.TYPE == AtypNone {
+ return
+ }
+ err = binary.Read(reader, binary.BigEndian, &c.PORT)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Address) WriteTo(writer BufferedWriter) (err error) {
+ err = writer.WriteByte(c.TYPE)
+ if err != nil {
+ return
+ }
+ if c.TYPE == AtypNone {
+ return
+ }
+ _, err = writer.Write(c.ADDR[:])
+ if err != nil {
+ return
+ }
+ err = binary.Write(writer, binary.BigEndian, c.PORT)
+ if err != nil {
+ return
+ }
+ return
+}
+
+func (c Address) String() string {
+ switch c.TYPE {
+ case AtypDomainName:
+ return net.JoinHostPort(string(c.ADDR[1:]), strconv.Itoa(int(c.PORT)))
+ default:
+ addr, _ := netip.AddrFromSlice(c.ADDR)
+ addrPort := netip.AddrPortFrom(addr, c.PORT)
+ return addrPort.String()
+ }
+}
+
+func (c Address) SocksAddr() socks5.Addr {
+ addr := make([]byte, 1+len(c.ADDR)+2)
+ switch c.TYPE {
+ case AtypIPv4:
+ addr[0] = socks5.AtypIPv4
+ case AtypIPv6:
+ addr[0] = socks5.AtypIPv6
+ case AtypDomainName:
+ addr[0] = socks5.AtypDomainName
+ }
+ copy(addr[1:], c.ADDR)
+ binary.BigEndian.PutUint16(addr[len(addr)-2:], c.PORT)
+ return addr
+}
+
+func (c Address) UDPAddr() *net.UDPAddr {
+ return &net.UDPAddr{
+ IP: c.ADDR,
+ Port: int(c.PORT),
+ Zone: "",
+ }
+}
+
+func (c Address) BytesLen() int {
+ return 1 + len(c.ADDR) + 2
+}
+
+const (
+ ProtocolError = quic.ApplicationErrorCode(0xfffffff0)
+ AuthenticationFailed = quic.ApplicationErrorCode(0xfffffff1)
+ AuthenticationTimeout = quic.ApplicationErrorCode(0xfffffff2)
+ BadCommand = quic.ApplicationErrorCode(0xfffffff3)
+)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/server.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/server.go
new file mode 100644
index 0000000..8454b64
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/tuic/v5/server.go
@@ -0,0 +1,229 @@
+package v5
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "net"
+ "sync"
+
+ "github.com/metacubex/mihomo/adapter/inbound"
+ "github.com/metacubex/mihomo/common/atomic"
+ N "github.com/metacubex/mihomo/common/net"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/transport/socks5"
+ "github.com/metacubex/mihomo/transport/tuic/common"
+
+ "github.com/gofrs/uuid/v5"
+ "github.com/metacubex/quic-go"
+ "github.com/puzpuzpuz/xsync/v3"
+)
+
+type ServerOption struct {
+ HandleTcpFn func(conn net.Conn, addr socks5.Addr, additions ...inbound.Addition) error
+ HandleUdpFn func(addr socks5.Addr, packet C.UDPPacket, additions ...inbound.Addition) error
+
+ Users map[[16]byte]string
+ MaxUdpRelayPacketSize int
+}
+
+func NewServerHandler(option *ServerOption, quicConn quic.EarlyConnection, uuid uuid.UUID) common.ServerHandler {
+ return &serverHandler{
+ ServerOption: option,
+ quicConn: quicConn,
+ uuid: uuid,
+ authCh: make(chan struct{}),
+ udpInputMap: xsync.NewMapOf[uint16, *serverUDPInput](),
+ }
+}
+
+type serverHandler struct {
+ *ServerOption
+ quicConn quic.EarlyConnection
+ uuid uuid.UUID
+
+ authCh chan struct{}
+ authOk atomic.Bool
+ authUUID atomic.TypedValue[string]
+ authOnce sync.Once
+
+ udpInputMap *xsync.MapOf[uint16, *serverUDPInput]
+}
+
+func (s *serverHandler) AuthOk() bool {
+ return s.authOk.Load()
+}
+
+func (s *serverHandler) HandleTimeout() {
+ s.authOnce.Do(func() {
+ _ = s.quicConn.CloseWithError(AuthenticationTimeout, "AuthenticationTimeout")
+ s.authOk.Store(false)
+ close(s.authCh)
+ })
+}
+
+func (s *serverHandler) HandleMessage(message []byte) (err error) {
+ reader := bytes.NewBuffer(message)
+ commandHead, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ switch commandHead.TYPE {
+ case PacketType:
+ var packet Packet
+ packet, err = ReadPacketWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ return s.parsePacket(&packet, common.NATIVE)
+ case HeartbeatType:
+ var heartbeat Heartbeat
+ heartbeat, err = ReadHeartbeatWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ heartbeat.BytesLen()
+ }
+ return
+}
+
+func (s *serverHandler) parsePacket(packet *Packet, udpRelayMode common.UdpRelayMode) (err error) {
+ <-s.authCh
+ if !s.authOk.Load() {
+ return
+ }
+ var assocId uint16
+
+ assocId = packet.ASSOC_ID
+
+ input, _ := s.udpInputMap.LoadOrCompute(assocId, func() *serverUDPInput { return &serverUDPInput{} })
+ if input.writeClosed.Load() {
+ return nil
+ }
+ packetPtr := input.Feed(packet)
+ if packetPtr == nil {
+ return
+ }
+
+ pc := &quicStreamPacketConn{
+ connId: assocId,
+ quicConn: s.quicConn,
+ inputConn: nil,
+ udpRelayMode: udpRelayMode,
+ maxUdpRelayPacketSize: s.MaxUdpRelayPacketSize,
+ deferQuicConnFn: nil,
+ closeDeferFn: nil,
+ writeClosed: &input.writeClosed,
+ }
+
+ return s.HandleUdpFn(packetPtr.ADDR.SocksAddr(), &serverUDPPacket{
+ pc: pc,
+ packet: packetPtr,
+ rAddr: N.NewCustomAddr("tuic", fmt.Sprintf("tuic-%s-%d", s.uuid, assocId), s.quicConn.RemoteAddr()), // for tunnel's handleUDPConn
+ }, inbound.WithInUser(s.authUUID.Load()))
+}
+
+func (s *serverHandler) HandleStream(conn *N.BufferedConn) (err error) {
+ connect, err := ReadConnect(conn)
+ if err != nil {
+ return err
+ }
+ <-s.authCh
+ if !s.authOk.Load() {
+ return conn.Close()
+ }
+
+ err = s.HandleTcpFn(conn, connect.ADDR.SocksAddr(), inbound.WithInUser(s.authUUID.Load()))
+ if err != nil {
+ _ = conn.Close()
+ return err
+ }
+ return
+}
+
+func (s *serverHandler) HandleUniStream(reader *bufio.Reader) (err error) {
+ commandHead, err := ReadCommandHead(reader)
+ if err != nil {
+ return
+ }
+ switch commandHead.TYPE {
+ case AuthenticateType:
+ var authenticate Authenticate
+ authenticate, err = ReadAuthenticateWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ authOk := false
+ var authUUID uuid.UUID
+ var token [32]byte
+ if password, ok := s.Users[authenticate.UUID]; ok {
+ token, err = GenToken(s.quicConn.ConnectionState(), authenticate.UUID, password)
+ if err != nil {
+ return
+ }
+ if token == authenticate.TOKEN {
+ authOk = true
+ authUUID = authenticate.UUID
+ }
+ }
+ s.authOnce.Do(func() {
+ if !authOk {
+ _ = s.quicConn.CloseWithError(AuthenticationFailed, "AuthenticationFailed")
+ }
+ s.authOk.Store(authOk)
+ s.authUUID.Store(authUUID.String())
+ close(s.authCh)
+ })
+ case PacketType:
+ var packet Packet
+ packet, err = ReadPacketWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ return s.parsePacket(&packet, common.QUIC)
+ case DissociateType:
+ var disassociate Dissociate
+ disassociate, err = ReadDissociateWithHead(commandHead, reader)
+ if err != nil {
+ return
+ }
+ if input, loaded := s.udpInputMap.LoadAndDelete(disassociate.ASSOC_ID); loaded {
+ input.writeClosed.Store(true)
+ }
+ }
+ return
+}
+
+type serverUDPInput struct {
+ writeClosed atomic.Bool
+ deFragger
+}
+
+type serverUDPPacket struct {
+ pc *quicStreamPacketConn
+ packet *Packet
+ rAddr net.Addr
+}
+
+func (s *serverUDPPacket) InAddr() net.Addr {
+ return s.pc.LocalAddr()
+}
+
+func (s *serverUDPPacket) LocalAddr() net.Addr {
+ return s.rAddr
+}
+
+func (s *serverUDPPacket) Data() []byte {
+ return s.packet.DATA
+}
+
+func (s *serverUDPPacket) WriteBack(b []byte, addr net.Addr) (n int, err error) {
+ return s.pc.WriteTo(b, addr)
+}
+
+func (s *serverUDPPacket) Drop() {
+ s.packet.DATA = nil
+}
+
+var _ C.UDPPacket = (*serverUDPPacket)(nil)
+var _ C.UDPPacketInAddr = (*serverUDPPacket)(nil)
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/v2ray-plugin/mux.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/v2ray-plugin/mux.go
new file mode 100644
index 0000000..6bff27b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/v2ray-plugin/mux.go
@@ -0,0 +1,173 @@
+package obfs
+
+import (
+ "bytes"
+ "encoding/binary"
+ "errors"
+ "io"
+ "net"
+)
+
+type SessionStatus = byte
+
+const (
+ SessionStatusNew SessionStatus = 0x01
+ SessionStatusKeep SessionStatus = 0x02
+ SessionStatusEnd SessionStatus = 0x03
+ SessionStatusKeepAlive SessionStatus = 0x04
+)
+
+const (
+ OptionNone = byte(0x00)
+ OptionData = byte(0x01)
+ OptionError = byte(0x02)
+)
+
+type MuxOption struct {
+ ID [2]byte
+ Port uint16
+ Host string
+ Type string
+}
+
+// Mux is an mux-compatible client for v2ray-plugin, not a complete implementation
+type Mux struct {
+ net.Conn
+ buf bytes.Buffer
+ id [2]byte
+ length [2]byte
+ status [2]byte
+ otb []byte
+ remain int
+}
+
+func (m *Mux) Read(b []byte) (int, error) {
+ if m.remain != 0 {
+ length := m.remain
+ if len(b) < m.remain {
+ length = len(b)
+ }
+
+ n, err := m.Conn.Read(b[:length])
+ if err != nil {
+ return 0, err
+ }
+ m.remain -= n
+ return n, nil
+ }
+
+ for {
+ _, err := io.ReadFull(m.Conn, m.length[:])
+ if err != nil {
+ return 0, err
+ }
+ length := binary.BigEndian.Uint16(m.length[:])
+ if length > 512 {
+ return 0, errors.New("invalid metalen")
+ }
+
+ _, err = io.ReadFull(m.Conn, m.id[:])
+ if err != nil {
+ return 0, err
+ }
+
+ _, err = m.Conn.Read(m.status[:])
+ if err != nil {
+ return 0, err
+ }
+
+ opcode := m.status[0]
+ if opcode == SessionStatusKeepAlive {
+ continue
+ }
+
+ opts := m.status[1]
+
+ if opts != OptionData {
+ continue
+ }
+
+ _, err = io.ReadFull(m.Conn, m.length[:])
+ if err != nil {
+ return 0, err
+ }
+ dataLen := int(binary.BigEndian.Uint16(m.length[:]))
+ m.remain = dataLen
+ if dataLen > len(b) {
+ dataLen = len(b)
+ }
+
+ n, err := m.Conn.Read(b[:dataLen])
+ m.remain -= n
+ return n, err
+ }
+}
+
+func (m *Mux) Write(b []byte) (int, error) {
+ if m.otb != nil {
+ // create a sub connection
+ if _, err := m.Conn.Write(m.otb); err != nil {
+ return 0, err
+ }
+ m.otb = nil
+ }
+ m.buf.Reset()
+ binary.Write(&m.buf, binary.BigEndian, uint16(4))
+ m.buf.Write(m.id[:])
+ m.buf.WriteByte(SessionStatusKeep)
+ m.buf.WriteByte(OptionData)
+ binary.Write(&m.buf, binary.BigEndian, uint16(len(b)))
+ m.buf.Write(b)
+
+ return m.Conn.Write(m.buf.Bytes())
+}
+
+func (m *Mux) Close() error {
+ _, err := m.Conn.Write([]byte{0x0, 0x4, m.id[0], m.id[1], SessionStatusEnd, OptionNone})
+ if err != nil {
+ return err
+ }
+ return m.Conn.Close()
+}
+
+func NewMux(conn net.Conn, option MuxOption) *Mux {
+ buf := &bytes.Buffer{}
+
+ // fill empty length
+ buf.Write([]byte{0x0, 0x0})
+ buf.Write(option.ID[:])
+ buf.WriteByte(SessionStatusNew)
+ buf.WriteByte(OptionNone)
+
+ // tcp
+ netType := byte(0x1)
+ if option.Type == "udp" {
+ netType = byte(0x2)
+ }
+ buf.WriteByte(netType)
+
+ // port
+ binary.Write(buf, binary.BigEndian, option.Port)
+
+ // address
+ ip := net.ParseIP(option.Host)
+ if ip == nil {
+ buf.WriteByte(0x2)
+ buf.WriteString(option.Host)
+ } else if ipv4 := ip.To4(); ipv4 != nil {
+ buf.WriteByte(0x1)
+ buf.Write(ipv4)
+ } else {
+ buf.WriteByte(0x3)
+ buf.Write(ip.To16())
+ }
+
+ metadata := buf.Bytes()
+ binary.BigEndian.PutUint16(metadata[:2], uint16(len(metadata)-2))
+
+ return &Mux{
+ Conn: conn,
+ id: option.ID,
+ otb: metadata,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/v2ray-plugin/websocket.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/v2ray-plugin/websocket.go
new file mode 100644
index 0000000..90ff5ef
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/v2ray-plugin/websocket.go
@@ -0,0 +1,75 @@
+package obfs
+
+import (
+ "context"
+ "crypto/tls"
+ "net"
+ "net/http"
+
+ "github.com/metacubex/mihomo/component/ca"
+ "github.com/metacubex/mihomo/transport/vmess"
+)
+
+// Option is options of websocket obfs
+type Option struct {
+ Host string
+ Port string
+ Path string
+ Headers map[string]string
+ TLS bool
+ SkipCertVerify bool
+ Fingerprint string
+ Mux bool
+ V2rayHttpUpgrade bool
+ V2rayHttpUpgradeFastOpen bool
+}
+
+// NewV2rayObfs return a HTTPObfs
+func NewV2rayObfs(ctx context.Context, conn net.Conn, option *Option) (net.Conn, error) {
+ header := http.Header{}
+ for k, v := range option.Headers {
+ header.Add(k, v)
+ }
+
+ config := &vmess.WebsocketConfig{
+ Host: option.Host,
+ Port: option.Port,
+ Path: option.Path,
+ V2rayHttpUpgrade: option.V2rayHttpUpgrade,
+ V2rayHttpUpgradeFastOpen: option.V2rayHttpUpgradeFastOpen,
+ Headers: header,
+ }
+
+ if option.TLS {
+ config.TLS = true
+ tlsConfig := &tls.Config{
+ ServerName: option.Host,
+ InsecureSkipVerify: option.SkipCertVerify,
+ NextProtos: []string{"http/1.1"},
+ }
+ var err error
+ config.TLSConfig, err = ca.GetSpecifiedFingerprintTLSConfig(tlsConfig, option.Fingerprint)
+ if err != nil {
+ return nil, err
+ }
+
+ if host := config.Headers.Get("Host"); host != "" {
+ config.TLSConfig.ServerName = host
+ }
+ }
+
+ var err error
+ conn, err = vmess.StreamWebsocketConn(ctx, conn, config)
+ if err != nil {
+ return nil, err
+ }
+
+ if option.Mux {
+ conn = NewMux(conn, MuxOption{
+ ID: [2]byte{0, 0},
+ Host: "127.0.0.1",
+ Port: 0,
+ })
+ }
+ return conn, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/config.pb.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/config.pb.go
new file mode 100644
index 0000000..14fcc5f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/config.pb.go
@@ -0,0 +1,158 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.28.0
+// protoc v3.19.1
+// source: transport/vless/config.proto
+
+package vless
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type Addons struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Flow string `protobuf:"bytes,1,opt,name=Flow,proto3" json:"Flow,omitempty"`
+ Seed []byte `protobuf:"bytes,2,opt,name=Seed,proto3" json:"Seed,omitempty"`
+}
+
+func (x *Addons) Reset() {
+ *x = Addons{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_transport_vless_config_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Addons) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Addons) ProtoMessage() {}
+
+func (x *Addons) ProtoReflect() protoreflect.Message {
+ mi := &file_transport_vless_config_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Addons.ProtoReflect.Descriptor instead.
+func (*Addons) Descriptor() ([]byte, []int) {
+ return file_transport_vless_config_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Addons) GetFlow() string {
+ if x != nil {
+ return x.Flow
+ }
+ return ""
+}
+
+func (x *Addons) GetSeed() []byte {
+ if x != nil {
+ return x.Seed
+ }
+ return nil
+}
+
+var File_transport_vless_config_proto protoreflect.FileDescriptor
+
+var file_transport_vless_config_proto_rawDesc = []byte{
+ 0x0a, 0x1c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x76, 0x6c, 0x65, 0x73,
+ 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15,
+ 0x63, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e,
+ 0x76, 0x6c, 0x65, 0x73, 0x73, 0x22, 0x30, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x12,
+ 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x46,
+ 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x65, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0c, 0x52, 0x04, 0x53, 0x65, 0x65, 0x64, 0x42, 0x61, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x63,
+ 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x76,
+ 0x6c, 0x65, 0x73, 0x73, 0x50, 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x2f, 0x44, 0x72, 0x65, 0x61, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x2f, 0x63, 0x6c, 0x61,
+ 0x73, 0x68, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x76, 0x6c, 0x65,
+ 0x73, 0x73, 0xaa, 0x02, 0x15, 0x43, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73,
+ 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
+}
+
+var (
+ file_transport_vless_config_proto_rawDescOnce sync.Once
+ file_transport_vless_config_proto_rawDescData = file_transport_vless_config_proto_rawDesc
+)
+
+func file_transport_vless_config_proto_rawDescGZIP() []byte {
+ file_transport_vless_config_proto_rawDescOnce.Do(func() {
+ file_transport_vless_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_vless_config_proto_rawDescData)
+ })
+ return file_transport_vless_config_proto_rawDescData
+}
+
+var file_transport_vless_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_transport_vless_config_proto_goTypes = []interface{}{
+ (*Addons)(nil), // 0: mihomo.transport.vless.Addons
+}
+var file_transport_vless_config_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_transport_vless_config_proto_init() }
+func file_transport_vless_config_proto_init() {
+ if File_transport_vless_config_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_transport_vless_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Addons); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_transport_vless_config_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_transport_vless_config_proto_goTypes,
+ DependencyIndexes: file_transport_vless_config_proto_depIdxs,
+ MessageInfos: file_transport_vless_config_proto_msgTypes,
+ }.Build()
+ File_transport_vless_config_proto = out.File
+ file_transport_vless_config_proto_rawDesc = nil
+ file_transport_vless_config_proto_goTypes = nil
+ file_transport_vless_config_proto_depIdxs = nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/config.proto b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/config.proto
new file mode 100644
index 0000000..44cad47
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/config.proto
@@ -0,0 +1,12 @@
+syntax = "proto3";
+
+package mihomo.transport.vless;
+option csharp_namespace = "Mihomo.Transport.Vless";
+option go_package = "github.com/metacubex/mihomo/transport/vless";
+option java_package = "com.mihomo.transport.vless";
+option java_multiple_files = true;
+
+message Addons {
+ string Flow = 1;
+ bytes Seed = 2;
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/conn.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/conn.go
new file mode 100644
index 0000000..0222489
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/conn.go
@@ -0,0 +1,213 @@
+package vless
+
+import (
+ "encoding/binary"
+ "errors"
+ "io"
+ "net"
+ "sync"
+
+ "github.com/metacubex/mihomo/common/buf"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/transport/vless/vision"
+
+ "github.com/gofrs/uuid/v5"
+ "google.golang.org/protobuf/proto"
+)
+
+type Conn struct {
+ N.ExtendedWriter
+ N.ExtendedReader
+ net.Conn
+ dst *DstAddr
+ id *uuid.UUID
+ addons *Addons
+ received bool
+
+ handshakeMutex sync.Mutex
+ needHandshake bool
+ err error
+}
+
+func (vc *Conn) Read(b []byte) (int, error) {
+ if vc.received {
+ return vc.ExtendedReader.Read(b)
+ }
+
+ if err := vc.recvResponse(); err != nil {
+ return 0, err
+ }
+ vc.received = true
+ return vc.ExtendedReader.Read(b)
+}
+
+func (vc *Conn) ReadBuffer(buffer *buf.Buffer) error {
+ if vc.received {
+ return vc.ExtendedReader.ReadBuffer(buffer)
+ }
+
+ if err := vc.recvResponse(); err != nil {
+ return err
+ }
+ vc.received = true
+ return vc.ExtendedReader.ReadBuffer(buffer)
+}
+
+func (vc *Conn) Write(p []byte) (int, error) {
+ if vc.needHandshake {
+ vc.handshakeMutex.Lock()
+ if vc.needHandshake {
+ vc.needHandshake = false
+ if vc.sendRequest(p) {
+ vc.handshakeMutex.Unlock()
+ if vc.err != nil {
+ return 0, vc.err
+ }
+ return len(p), vc.err
+ }
+ if vc.err != nil {
+ vc.handshakeMutex.Unlock()
+ return 0, vc.err
+ }
+ }
+ vc.handshakeMutex.Unlock()
+ }
+
+ return vc.ExtendedWriter.Write(p)
+}
+
+func (vc *Conn) WriteBuffer(buffer *buf.Buffer) error {
+ if vc.needHandshake {
+ vc.handshakeMutex.Lock()
+ if vc.needHandshake {
+ vc.needHandshake = false
+ if vc.sendRequest(buffer.Bytes()) {
+ vc.handshakeMutex.Unlock()
+ return vc.err
+ }
+ if vc.err != nil {
+ vc.handshakeMutex.Unlock()
+ return vc.err
+ }
+ }
+ vc.handshakeMutex.Unlock()
+ }
+
+ return vc.ExtendedWriter.WriteBuffer(buffer)
+}
+
+func (vc *Conn) sendRequest(p []byte) bool {
+ var addonsBytes []byte
+ if vc.addons != nil {
+ addonsBytes, vc.err = proto.Marshal(vc.addons)
+ if vc.err != nil {
+ return true
+ }
+ }
+
+ var buffer *buf.Buffer
+ if vc.IsXTLSVisionEnabled() {
+ buffer = buf.New()
+ defer buffer.Release()
+ } else {
+ requestLen := 1 // protocol version
+ requestLen += 16 // UUID
+ requestLen += 1 // addons length
+ requestLen += len(addonsBytes)
+ requestLen += 1 // command
+ if !vc.dst.Mux {
+ requestLen += 2 // port
+ requestLen += 1 // addr type
+ requestLen += len(vc.dst.Addr)
+ }
+ requestLen += len(p)
+
+ buffer = buf.NewSize(requestLen)
+ defer buffer.Release()
+ }
+
+ buf.Must(
+ buffer.WriteByte(Version), // protocol version
+ buf.Error(buffer.Write(vc.id.Bytes())), // 16 bytes of uuid
+ buffer.WriteByte(byte(len(addonsBytes))),
+ buf.Error(buffer.Write(addonsBytes)),
+ )
+
+ if vc.dst.Mux {
+ buf.Must(buffer.WriteByte(CommandMux))
+ } else {
+ if vc.dst.UDP {
+ buf.Must(buffer.WriteByte(CommandUDP))
+ } else {
+ buf.Must(buffer.WriteByte(CommandTCP))
+ }
+
+ binary.BigEndian.PutUint16(buffer.Extend(2), vc.dst.Port)
+ buf.Must(
+ buffer.WriteByte(vc.dst.AddrType),
+ buf.Error(buffer.Write(vc.dst.Addr)),
+ )
+ }
+
+ buf.Must(buf.Error(buffer.Write(p)))
+
+ _, vc.err = vc.ExtendedWriter.Write(buffer.Bytes())
+ return true
+}
+
+func (vc *Conn) recvResponse() error {
+ var buffer [2]byte
+ _, vc.err = io.ReadFull(vc.ExtendedReader, buffer[:])
+ if vc.err != nil {
+ return vc.err
+ }
+
+ if buffer[0] != Version {
+ return errors.New("unexpected response version")
+ }
+
+ length := int64(buffer[1])
+ if length != 0 { // addon data length > 0
+ io.CopyN(io.Discard, vc.ExtendedReader, length) // just discard
+ }
+
+ return nil
+}
+
+func (vc *Conn) Upstream() any {
+ return vc.Conn
+}
+
+func (vc *Conn) NeedHandshake() bool {
+ return vc.needHandshake
+}
+
+func (vc *Conn) IsXTLSVisionEnabled() bool {
+ return vc.addons != nil && vc.addons.Flow == XRV
+}
+
+// newConn return a Conn instance
+func newConn(conn net.Conn, client *Client, dst *DstAddr) (net.Conn, error) {
+ c := &Conn{
+ ExtendedReader: N.NewExtendedReader(conn),
+ ExtendedWriter: N.NewExtendedWriter(conn),
+ Conn: conn,
+ id: client.uuid,
+ dst: dst,
+ needHandshake: true,
+ }
+
+ if client.Addons != nil {
+ switch client.Addons.Flow {
+ case XRV:
+ visionConn, err := vision.NewConn(c, c.id)
+ if err != nil {
+ return nil, err
+ }
+ c.addons = client.Addons
+ return visionConn, nil
+ }
+ }
+
+ return c, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/conn.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/conn.go
new file mode 100644
index 0000000..69ccfba
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/conn.go
@@ -0,0 +1,299 @@
+package vision
+
+import (
+ "bytes"
+ "crypto/subtle"
+ gotls "crypto/tls"
+ "encoding/binary"
+ "fmt"
+ "io"
+ "net"
+
+ "github.com/metacubex/mihomo/common/buf"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/gofrs/uuid/v5"
+ utls "github.com/metacubex/utls"
+)
+
+var (
+ _ N.ExtendedConn = (*Conn)(nil)
+)
+
+type Conn struct {
+ net.Conn
+ N.ExtendedReader
+ N.ExtendedWriter
+ upstream net.Conn
+ userUUID *uuid.UUID
+
+ tlsConn net.Conn
+ input *bytes.Reader
+ rawInput *bytes.Buffer
+
+ needHandshake bool
+ packetsToFilter int
+ isTLS bool
+ isTLS12orAbove bool
+ enableXTLS bool
+ cipher uint16
+ remainingServerHello uint16
+ readRemainingContent int
+ readRemainingPadding int
+ readProcess bool
+ readFilterUUID bool
+ readLastCommand byte
+ writeFilterApplicationData bool
+ writeDirect bool
+}
+
+func (vc *Conn) Read(b []byte) (int, error) {
+ if vc.readProcess {
+ buffer := buf.With(b)
+ err := vc.ReadBuffer(buffer)
+ return buffer.Len(), err
+ }
+ return vc.ExtendedReader.Read(b)
+}
+
+func (vc *Conn) ReadBuffer(buffer *buf.Buffer) error {
+ toRead := buffer.FreeBytes()
+ if vc.readRemainingContent > 0 {
+ if vc.readRemainingContent < buffer.FreeLen() {
+ toRead = toRead[:vc.readRemainingContent]
+ }
+ n, err := vc.ExtendedReader.Read(toRead)
+ buffer.Truncate(n)
+ vc.readRemainingContent -= n
+ vc.FilterTLS(toRead)
+ return err
+ }
+ if vc.readRemainingPadding > 0 {
+ _, err := io.CopyN(io.Discard, vc.ExtendedReader, int64(vc.readRemainingPadding))
+ if err != nil {
+ return err
+ }
+ vc.readRemainingPadding = 0
+ }
+ if vc.readProcess {
+ switch vc.readLastCommand {
+ case commandPaddingContinue:
+ //if vc.isTLS || vc.packetsToFilter > 0 {
+ headerUUIDLen := 0
+ if vc.readFilterUUID {
+ headerUUIDLen = uuid.Size
+ }
+ var header []byte
+ if need := headerUUIDLen + PaddingHeaderLen - uuid.Size; buffer.FreeLen() < need {
+ header = make([]byte, need)
+ } else {
+ header = buffer.FreeBytes()[:need]
+ }
+ _, err := io.ReadFull(vc.ExtendedReader, header)
+ if err != nil {
+ return err
+ }
+ if vc.readFilterUUID {
+ vc.readFilterUUID = false
+ if subtle.ConstantTimeCompare(vc.userUUID.Bytes(), header[:uuid.Size]) != 1 {
+ err = fmt.Errorf("XTLS Vision server responded unknown UUID: %s",
+ uuid.FromBytesOrNil(header[:uuid.Size]).String())
+ log.Errorln(err.Error())
+ return err
+ }
+ header = header[uuid.Size:]
+ }
+ vc.readRemainingPadding = int(binary.BigEndian.Uint16(header[3:]))
+ vc.readRemainingContent = int(binary.BigEndian.Uint16(header[1:]))
+ vc.readLastCommand = header[0]
+ log.Debugln("XTLS Vision read padding: command=%d, payloadLen=%d, paddingLen=%d",
+ vc.readLastCommand, vc.readRemainingContent, vc.readRemainingPadding)
+ return vc.ReadBuffer(buffer)
+ //}
+ case commandPaddingEnd:
+ vc.readProcess = false
+ return vc.ReadBuffer(buffer)
+ case commandPaddingDirect:
+ needReturn := false
+ if vc.input != nil {
+ _, err := buffer.ReadFrom(vc.input)
+ if err != nil {
+ return err
+ }
+ if vc.input.Len() == 0 {
+ needReturn = true
+ vc.input = nil
+ } else { // buffer is full
+ return nil
+ }
+ }
+ if vc.rawInput != nil {
+ _, err := buffer.ReadFrom(vc.rawInput)
+ if err != nil {
+ return err
+ }
+ needReturn = true
+ if vc.rawInput.Len() == 0 {
+ vc.rawInput = nil
+ }
+ }
+ if vc.input == nil && vc.rawInput == nil {
+ vc.readProcess = false
+ vc.ExtendedReader = N.NewExtendedReader(vc.Conn)
+ log.Debugln("XTLS Vision direct read start")
+ }
+ if needReturn {
+ return nil
+ }
+ default:
+ err := fmt.Errorf("XTLS Vision read unknown command: %d", vc.readLastCommand)
+ log.Debugln(err.Error())
+ return err
+ }
+ }
+ return vc.ExtendedReader.ReadBuffer(buffer)
+}
+
+func (vc *Conn) Write(p []byte) (int, error) {
+ if vc.writeFilterApplicationData {
+ return N.WriteBuffer(vc, buf.As(p))
+ }
+ return vc.ExtendedWriter.Write(p)
+}
+
+func (vc *Conn) WriteBuffer(buffer *buf.Buffer) (err error) {
+ if vc.needHandshake {
+ vc.needHandshake = false
+ if buffer.IsEmpty() {
+ ApplyPadding(buffer, commandPaddingContinue, vc.userUUID, false)
+ } else {
+ vc.FilterTLS(buffer.Bytes())
+ ApplyPadding(buffer, commandPaddingContinue, vc.userUUID, vc.isTLS)
+ }
+ err = vc.ExtendedWriter.WriteBuffer(buffer)
+ if err != nil {
+ buffer.Release()
+ return err
+ }
+ switch underlying := vc.tlsConn.(type) {
+ case *gotls.Conn:
+ if underlying.ConnectionState().Version != gotls.VersionTLS13 {
+ buffer.Release()
+ return ErrNotTLS13
+ }
+ case *utls.UConn:
+ if underlying.ConnectionState().Version != utls.VersionTLS13 {
+ buffer.Release()
+ return ErrNotTLS13
+ }
+ }
+ vc.tlsConn = nil
+ return nil
+ }
+
+ if vc.writeFilterApplicationData {
+ buffer2 := ReshapeBuffer(buffer)
+ defer buffer2.Release()
+ vc.FilterTLS(buffer.Bytes())
+ command := commandPaddingContinue
+ if !vc.isTLS {
+ command = commandPaddingEnd
+
+ // disable XTLS
+ //vc.readProcess = false
+ vc.writeFilterApplicationData = false
+ vc.packetsToFilter = 0
+ } else if buffer.Len() > 6 && bytes.Equal(buffer.To(3), tlsApplicationDataStart) || vc.packetsToFilter <= 0 {
+ command = commandPaddingEnd
+ if vc.enableXTLS {
+ command = commandPaddingDirect
+ vc.writeDirect = true
+ }
+ vc.writeFilterApplicationData = false
+ }
+ ApplyPadding(buffer, command, nil, vc.isTLS)
+ err = vc.ExtendedWriter.WriteBuffer(buffer)
+ if err != nil {
+ return err
+ }
+ if vc.writeDirect {
+ vc.ExtendedWriter = N.NewExtendedWriter(vc.Conn)
+ log.Debugln("XTLS Vision direct write start")
+ //time.Sleep(5 * time.Millisecond)
+ }
+ if buffer2 != nil {
+ if vc.writeDirect || !vc.isTLS {
+ return vc.ExtendedWriter.WriteBuffer(buffer2)
+ }
+ vc.FilterTLS(buffer2.Bytes())
+ command = commandPaddingContinue
+ if buffer2.Len() > 6 && bytes.Equal(buffer2.To(3), tlsApplicationDataStart) || vc.packetsToFilter <= 0 {
+ command = commandPaddingEnd
+ if vc.enableXTLS {
+ command = commandPaddingDirect
+ vc.writeDirect = true
+ }
+ vc.writeFilterApplicationData = false
+ }
+ ApplyPadding(buffer2, command, nil, vc.isTLS)
+ err = vc.ExtendedWriter.WriteBuffer(buffer2)
+ if vc.writeDirect {
+ vc.ExtendedWriter = N.NewExtendedWriter(vc.Conn)
+ log.Debugln("XTLS Vision direct write start")
+ //time.Sleep(10 * time.Millisecond)
+ }
+ }
+ return err
+ }
+ /*if vc.writeDirect {
+ log.Debugln("XTLS Vision Direct write, payloadLen=%d", buffer.Len())
+ }*/
+ return vc.ExtendedWriter.WriteBuffer(buffer)
+}
+
+func (vc *Conn) FrontHeadroom() int {
+ if vc.readFilterUUID {
+ return PaddingHeaderLen
+ }
+ return PaddingHeaderLen - uuid.Size
+}
+
+func (vc *Conn) RearHeadroom() int {
+ return 500 + 900
+}
+
+func (vc *Conn) NeedHandshake() bool {
+ return vc.needHandshake
+}
+
+func (vc *Conn) Upstream() any {
+ if vc.writeDirect ||
+ vc.readLastCommand == commandPaddingDirect {
+ return vc.Conn
+ }
+ return vc.upstream
+}
+
+func (vc *Conn) ReaderPossiblyReplaceable() bool {
+ return vc.readProcess
+}
+
+func (vc *Conn) ReaderReplaceable() bool {
+ if !vc.readProcess &&
+ vc.readLastCommand == commandPaddingDirect {
+ return true
+ }
+ return false
+}
+
+func (vc *Conn) WriterPossiblyReplaceable() bool {
+ return vc.writeFilterApplicationData
+}
+
+func (vc *Conn) WriterReplaceable() bool {
+ if vc.writeDirect {
+ return true
+ }
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/filter.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/filter.go
new file mode 100644
index 0000000..55b5663
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/filter.go
@@ -0,0 +1,90 @@
+package vision
+
+import (
+ "bytes"
+ "encoding/binary"
+
+ "github.com/metacubex/mihomo/log"
+)
+
+var (
+ tls13SupportedVersions = []byte{0x00, 0x2b, 0x00, 0x02, 0x03, 0x04}
+ tlsClientHandshakeStart = []byte{0x16, 0x03}
+ tlsServerHandshakeStart = []byte{0x16, 0x03, 0x03}
+ tlsApplicationDataStart = []byte{0x17, 0x03, 0x03}
+
+ tls13CipherSuiteMap = map[uint16]string{
+ 0x1301: "TLS_AES_128_GCM_SHA256",
+ 0x1302: "TLS_AES_256_GCM_SHA384",
+ 0x1303: "TLS_CHACHA20_POLY1305_SHA256",
+ 0x1304: "TLS_AES_128_CCM_SHA256",
+ 0x1305: "TLS_AES_128_CCM_8_SHA256",
+ }
+)
+
+const (
+ tlsHandshakeTypeClientHello byte = 0x01
+ tlsHandshakeTypeServerHello byte = 0x02
+)
+
+func (vc *Conn) FilterTLS(buffer []byte) (index int) {
+ if vc.packetsToFilter <= 0 {
+ return 0
+ }
+ lenP := len(buffer)
+ vc.packetsToFilter--
+ if index = bytes.Index(buffer, tlsServerHandshakeStart); index != -1 {
+ if lenP > index+5 {
+ if buffer[0] == 22 && buffer[1] == 3 && buffer[2] == 3 {
+ vc.isTLS = true
+ if buffer[5] == tlsHandshakeTypeServerHello {
+ //log.Debugln("isTLS12orAbove")
+ vc.remainingServerHello = binary.BigEndian.Uint16(buffer[index+3:]) + 5
+ vc.isTLS12orAbove = true
+ if lenP-index >= 79 && vc.remainingServerHello >= 79 {
+ sessionIDLen := int(buffer[index+43])
+ vc.cipher = binary.BigEndian.Uint16(buffer[index+43+sessionIDLen+1:])
+ }
+ }
+ }
+ }
+ } else if index = bytes.Index(buffer, tlsClientHandshakeStart); index != -1 {
+ if lenP > index+5 && buffer[index+5] == tlsHandshakeTypeClientHello {
+ vc.isTLS = true
+ }
+ }
+
+ if vc.remainingServerHello > 0 {
+ end := int(vc.remainingServerHello)
+ i := index
+ if i < 0 {
+ i = 0
+ }
+ if i+end > lenP {
+ end = lenP
+ vc.remainingServerHello -= uint16(end - i)
+ } else {
+ vc.remainingServerHello -= uint16(end)
+ end += i
+ }
+ if bytes.Contains(buffer[i:end], tls13SupportedVersions) {
+ // TLS 1.3 Client Hello
+ cs, ok := tls13CipherSuiteMap[vc.cipher]
+ if ok && cs != "TLS_AES_128_CCM_8_SHA256" {
+ vc.enableXTLS = true
+ }
+ log.Debugln("XTLS Vision found TLS 1.3, packetLength=%d, CipherSuite=%s", lenP, cs)
+ vc.packetsToFilter = 0
+ return
+ } else if vc.remainingServerHello <= 0 {
+ log.Debugln("XTLS Vision found TLS 1.2, packetLength=%d", lenP)
+ vc.packetsToFilter = 0
+ return
+ }
+ log.Debugln("XTLS Vision found inconclusive server hello, packetLength=%d, remainingServerHelloBytes=%d", lenP, vc.remainingServerHello)
+ }
+ if vc.packetsToFilter <= 0 {
+ log.Debugln("XTLS Vision stop filtering")
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/padding.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/padding.go
new file mode 100644
index 0000000..dd9cb26
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/padding.go
@@ -0,0 +1,81 @@
+package vision
+
+import (
+ "bytes"
+ "encoding/binary"
+
+ "github.com/metacubex/mihomo/common/buf"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/gofrs/uuid/v5"
+ "github.com/metacubex/randv2"
+)
+
+const (
+ PaddingHeaderLen = uuid.Size + 1 + 2 + 2 // =21
+
+ commandPaddingContinue byte = 0x00
+ commandPaddingEnd byte = 0x01
+ commandPaddingDirect byte = 0x02
+)
+
+func WriteWithPadding(buffer *buf.Buffer, p []byte, command byte, userUUID *uuid.UUID, paddingTLS bool) {
+ contentLen := int32(len(p))
+ var paddingLen int32
+ if contentLen < 900 {
+ if paddingTLS {
+ //log.Debugln("long padding")
+ paddingLen = randv2.Int32N(500) + 900 - contentLen
+ } else {
+ paddingLen = randv2.Int32N(256)
+ }
+ }
+ if userUUID != nil {
+ buffer.Write(userUUID.Bytes())
+ }
+
+ buffer.WriteByte(command)
+ binary.BigEndian.PutUint16(buffer.Extend(2), uint16(contentLen))
+ binary.BigEndian.PutUint16(buffer.Extend(2), uint16(paddingLen))
+ buffer.Write(p)
+
+ buffer.Extend(int(paddingLen))
+ log.Debugln("XTLS Vision write padding1: command=%v, payloadLen=%v, paddingLen=%v", command, contentLen, paddingLen)
+}
+
+func ApplyPadding(buffer *buf.Buffer, command byte, userUUID *uuid.UUID, paddingTLS bool) {
+ contentLen := int32(buffer.Len())
+ var paddingLen int32
+ if contentLen < 900 {
+ if paddingTLS {
+ //log.Debugln("long padding")
+ paddingLen = randv2.Int32N(500) + 900 - contentLen
+ } else {
+ paddingLen = randv2.Int32N(256)
+ }
+ }
+
+ binary.BigEndian.PutUint16(buffer.ExtendHeader(2), uint16(paddingLen))
+ binary.BigEndian.PutUint16(buffer.ExtendHeader(2), uint16(contentLen))
+ buffer.ExtendHeader(1)[0] = command
+ if userUUID != nil {
+ copy(buffer.ExtendHeader(uuid.Size), userUUID.Bytes())
+ }
+
+ buffer.Extend(int(paddingLen))
+ log.Debugln("XTLS Vision write padding2: command=%d, payloadLen=%d, paddingLen=%d", command, contentLen, paddingLen)
+}
+
+func ReshapeBuffer(buffer *buf.Buffer) *buf.Buffer {
+ if buffer.Len() <= buf.BufferSize-PaddingHeaderLen {
+ return nil
+ }
+ cutAt := bytes.LastIndex(buffer.Bytes(), tlsApplicationDataStart)
+ if cutAt == -1 {
+ cutAt = buf.BufferSize / 2
+ }
+ buffer2 := buf.New()
+ buffer2.Write(buffer.From(cutAt))
+ buffer.Truncate(cutAt)
+ return buffer2
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/vision.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/vision.go
new file mode 100644
index 0000000..3b9e937
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vision/vision.go
@@ -0,0 +1,70 @@
+// Package vision implements VLESS flow `xtls-rprx-vision` introduced by Xray-core.
+package vision
+
+import (
+ "bytes"
+ gotls "crypto/tls"
+ "errors"
+ "fmt"
+ "net"
+ "reflect"
+ "unsafe"
+
+ N "github.com/metacubex/mihomo/common/net"
+ tlsC "github.com/metacubex/mihomo/component/tls"
+
+ "github.com/gofrs/uuid/v5"
+ utls "github.com/metacubex/utls"
+ "github.com/sagernet/sing/common"
+)
+
+var ErrNotTLS13 = errors.New("XTLS Vision based on TLS 1.3 outer connection")
+
+type connWithUpstream interface {
+ net.Conn
+ common.WithUpstream
+}
+
+func NewConn(conn connWithUpstream, userUUID *uuid.UUID) (*Conn, error) {
+ c := &Conn{
+ ExtendedReader: N.NewExtendedReader(conn),
+ ExtendedWriter: N.NewExtendedWriter(conn),
+ upstream: conn,
+ userUUID: userUUID,
+ packetsToFilter: 6,
+ needHandshake: true,
+ readProcess: true,
+ readFilterUUID: true,
+ writeFilterApplicationData: true,
+ }
+ var t reflect.Type
+ var p unsafe.Pointer
+ switch underlying := conn.Upstream().(type) {
+ case *gotls.Conn:
+ //log.Debugln("type tls")
+ c.Conn = underlying.NetConn()
+ c.tlsConn = underlying
+ t = reflect.TypeOf(underlying).Elem()
+ p = unsafe.Pointer(underlying)
+ case *utls.UConn:
+ //log.Debugln("type *utls.UConn")
+ c.Conn = underlying.NetConn()
+ c.tlsConn = underlying
+ t = reflect.TypeOf(underlying.Conn).Elem()
+ p = unsafe.Pointer(underlying.Conn)
+ case *tlsC.UConn:
+ //log.Debugln("type *tlsC.UConn")
+ c.Conn = underlying.NetConn()
+ c.tlsConn = underlying.UConn
+ t = reflect.TypeOf(underlying.Conn).Elem()
+ //log.Debugln("t:%v", t)
+ p = unsafe.Pointer(underlying.Conn)
+ default:
+ return nil, fmt.Errorf(`failed to use vision, maybe "security" is not "tls" or "utls"`)
+ }
+ i, _ := t.FieldByName("input")
+ r, _ := t.FieldByName("rawInput")
+ c.input = (*bytes.Reader)(unsafe.Add(p, i.Offset))
+ c.rawInput = (*bytes.Buffer)(unsafe.Add(p, r.Offset))
+ return c, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vless.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vless.go
new file mode 100644
index 0000000..ce07cdb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vless/vless.go
@@ -0,0 +1,65 @@
+package vless
+
+import (
+ "net"
+
+ "github.com/metacubex/mihomo/common/utils"
+
+ "github.com/gofrs/uuid/v5"
+)
+
+const (
+ XRO = "xtls-rprx-origin"
+ XRD = "xtls-rprx-direct"
+ XRS = "xtls-rprx-splice"
+ XRV = "xtls-rprx-vision"
+
+ Version byte = 0 // protocol version. preview version is 0
+)
+
+// Command types
+const (
+ CommandTCP byte = 1
+ CommandUDP byte = 2
+ CommandMux byte = 3
+)
+
+// Addr types
+const (
+ AtypIPv4 byte = 1
+ AtypDomainName byte = 2
+ AtypIPv6 byte = 3
+)
+
+// DstAddr store destination address
+type DstAddr struct {
+ UDP bool
+ AddrType byte
+ Addr []byte
+ Port uint16
+ Mux bool // currently used for XUDP only
+}
+
+// Client is vless connection generator
+type Client struct {
+ uuid *uuid.UUID
+ Addons *Addons
+}
+
+// StreamConn return a Conn with net.Conn and DstAddr
+func (c *Client) StreamConn(conn net.Conn, dst *DstAddr) (net.Conn, error) {
+ return newConn(conn, c, dst)
+}
+
+// NewClient return Client instance
+func NewClient(uuidStr string, addons *Addons) (*Client, error) {
+ uid, err := utils.UUIDMap(uuidStr)
+ if err != nil {
+ return nil, err
+ }
+
+ return &Client{
+ uuid: &uid,
+ Addons: addons,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/aead.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/aead.go
new file mode 100644
index 0000000..89ec6a3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/aead.go
@@ -0,0 +1,124 @@
+package vmess
+
+import (
+ "crypto/cipher"
+ "encoding/binary"
+ "errors"
+ "io"
+ "sync"
+
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+type aeadWriter struct {
+ io.Writer
+ cipher.AEAD
+ nonce [32]byte
+ count uint16
+ iv []byte
+
+ writeLock sync.Mutex
+}
+
+func newAEADWriter(w io.Writer, aead cipher.AEAD, iv []byte) *aeadWriter {
+ return &aeadWriter{Writer: w, AEAD: aead, iv: iv}
+}
+
+func (w *aeadWriter) Write(b []byte) (n int, err error) {
+ w.writeLock.Lock()
+ buf := pool.Get(pool.RelayBufferSize)
+ defer func() {
+ w.writeLock.Unlock()
+ pool.Put(buf)
+ }()
+ length := len(b)
+ for {
+ if length == 0 {
+ break
+ }
+ readLen := chunkSize - w.Overhead()
+ if length < readLen {
+ readLen = length
+ }
+ payloadBuf := buf[lenSize : lenSize+chunkSize-w.Overhead()]
+ copy(payloadBuf, b[n:n+readLen])
+
+ binary.BigEndian.PutUint16(buf[:lenSize], uint16(readLen+w.Overhead()))
+ binary.BigEndian.PutUint16(w.nonce[:2], w.count)
+ copy(w.nonce[2:], w.iv[2:12])
+
+ w.Seal(payloadBuf[:0], w.nonce[:w.NonceSize()], payloadBuf[:readLen], nil)
+ w.count++
+
+ _, err = w.Writer.Write(buf[:lenSize+readLen+w.Overhead()])
+ if err != nil {
+ break
+ }
+ n += readLen
+ length -= readLen
+ }
+ return
+}
+
+type aeadReader struct {
+ io.Reader
+ cipher.AEAD
+ nonce [32]byte
+ buf []byte
+ offset int
+ iv []byte
+ sizeBuf []byte
+ count uint16
+}
+
+func newAEADReader(r io.Reader, aead cipher.AEAD, iv []byte) *aeadReader {
+ return &aeadReader{Reader: r, AEAD: aead, iv: iv, sizeBuf: make([]byte, lenSize)}
+}
+
+func (r *aeadReader) Read(b []byte) (int, error) {
+ if r.buf != nil {
+ n := copy(b, r.buf[r.offset:])
+ r.offset += n
+ if r.offset == len(r.buf) {
+ pool.Put(r.buf)
+ r.buf = nil
+ }
+ return n, nil
+ }
+
+ _, err := io.ReadFull(r.Reader, r.sizeBuf)
+ if err != nil {
+ return 0, err
+ }
+
+ size := int(binary.BigEndian.Uint16(r.sizeBuf))
+ if size > maxSize {
+ return 0, errors.New("buffer is larger than standard")
+ }
+
+ buf := pool.Get(size)
+ _, err = io.ReadFull(r.Reader, buf[:size])
+ if err != nil {
+ pool.Put(buf)
+ return 0, err
+ }
+
+ binary.BigEndian.PutUint16(r.nonce[:2], r.count)
+ copy(r.nonce[2:], r.iv[2:12])
+
+ _, err = r.Open(buf[:0], r.nonce[:r.NonceSize()], buf[:size], nil)
+ r.count++
+ if err != nil {
+ return 0, err
+ }
+ realLen := size - r.Overhead()
+ n := copy(b, buf[:realLen])
+ if len(b) >= realLen {
+ pool.Put(buf)
+ return n, nil
+ }
+
+ r.offset = n
+ r.buf = buf[:realLen]
+ return n, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/chunk.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/chunk.go
new file mode 100644
index 0000000..f52fc82
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/chunk.go
@@ -0,0 +1,102 @@
+package vmess
+
+import (
+ "encoding/binary"
+ "errors"
+ "io"
+
+ "github.com/metacubex/mihomo/common/pool"
+)
+
+const (
+ lenSize = 2
+ chunkSize = 1 << 14 // 2 ** 14 == 16 * 1024
+ maxSize = 17 * 1024 // 2 + chunkSize + aead.Overhead()
+)
+
+type chunkReader struct {
+ io.Reader
+ buf []byte
+ sizeBuf []byte
+ offset int
+}
+
+func newChunkReader(reader io.Reader) *chunkReader {
+ return &chunkReader{Reader: reader, sizeBuf: make([]byte, lenSize)}
+}
+
+func newChunkWriter(writer io.WriteCloser) *chunkWriter {
+ return &chunkWriter{Writer: writer}
+}
+
+func (cr *chunkReader) Read(b []byte) (int, error) {
+ if cr.buf != nil {
+ n := copy(b, cr.buf[cr.offset:])
+ cr.offset += n
+ if cr.offset == len(cr.buf) {
+ pool.Put(cr.buf)
+ cr.buf = nil
+ }
+ return n, nil
+ }
+
+ _, err := io.ReadFull(cr.Reader, cr.sizeBuf)
+ if err != nil {
+ return 0, err
+ }
+
+ size := int(binary.BigEndian.Uint16(cr.sizeBuf))
+ if size > maxSize {
+ return 0, errors.New("buffer is larger than standard")
+ }
+
+ if len(b) >= size {
+ _, err := io.ReadFull(cr.Reader, b[:size])
+ if err != nil {
+ return 0, err
+ }
+
+ return size, nil
+ }
+
+ buf := pool.Get(size)
+ _, err = io.ReadFull(cr.Reader, buf)
+ if err != nil {
+ pool.Put(buf)
+ return 0, err
+ }
+ n := copy(b, buf)
+ cr.offset = n
+ cr.buf = buf
+ return n, nil
+}
+
+type chunkWriter struct {
+ io.Writer
+}
+
+func (cw *chunkWriter) Write(b []byte) (n int, err error) {
+ buf := pool.Get(pool.RelayBufferSize)
+ defer pool.Put(buf)
+ length := len(b)
+ for {
+ if length == 0 {
+ break
+ }
+ readLen := chunkSize
+ if length < chunkSize {
+ readLen = length
+ }
+ payloadBuf := buf[lenSize : lenSize+chunkSize]
+ copy(payloadBuf, b[n:n+readLen])
+
+ binary.BigEndian.PutUint16(buf[:lenSize], uint16(readLen))
+ _, err = cw.Writer.Write(buf[:lenSize+readLen])
+ if err != nil {
+ break
+ }
+ n += readLen
+ length -= readLen
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/conn.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/conn.go
new file mode 100644
index 0000000..b65a447
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/conn.go
@@ -0,0 +1,273 @@
+package vmess
+
+import (
+ "bytes"
+ "crypto/aes"
+ "crypto/cipher"
+ "crypto/hmac"
+ "crypto/md5"
+ "crypto/rand"
+ "crypto/sha256"
+ "encoding/binary"
+ "errors"
+ "hash/fnv"
+ "io"
+ "net"
+ "time"
+
+ "github.com/metacubex/randv2"
+ "golang.org/x/crypto/chacha20poly1305"
+)
+
+// Conn wrapper a net.Conn with vmess protocol
+type Conn struct {
+ net.Conn
+ reader io.Reader
+ writer io.Writer
+ dst *DstAddr
+ id *ID
+ reqBodyIV []byte
+ reqBodyKey []byte
+ respBodyIV []byte
+ respBodyKey []byte
+ respV byte
+ security byte
+ isAead bool
+
+ received bool
+}
+
+func (vc *Conn) Write(b []byte) (int, error) {
+ return vc.writer.Write(b)
+}
+
+func (vc *Conn) Read(b []byte) (int, error) {
+ if vc.received {
+ return vc.reader.Read(b)
+ }
+
+ if err := vc.recvResponse(); err != nil {
+ return 0, err
+ }
+ vc.received = true
+ return vc.reader.Read(b)
+}
+
+func (vc *Conn) sendRequest() error {
+ timestamp := time.Now()
+
+ mbuf := &bytes.Buffer{}
+
+ if !vc.isAead {
+ h := hmac.New(md5.New, vc.id.UUID.Bytes())
+ binary.Write(h, binary.BigEndian, uint64(timestamp.Unix()))
+ mbuf.Write(h.Sum(nil))
+ }
+
+ buf := &bytes.Buffer{}
+
+ // Ver IV Key V Opt
+ buf.WriteByte(Version)
+ buf.Write(vc.reqBodyIV[:])
+ buf.Write(vc.reqBodyKey[:])
+ buf.WriteByte(vc.respV)
+ buf.WriteByte(OptionChunkStream)
+
+ p := randv2.IntN(16)
+ // P Sec Reserve Cmd
+ buf.WriteByte(byte(p<<4) | byte(vc.security))
+ buf.WriteByte(0)
+ if vc.dst.UDP {
+ buf.WriteByte(CommandUDP)
+ } else {
+ buf.WriteByte(CommandTCP)
+ }
+
+ // Port AddrType Addr
+ binary.Write(buf, binary.BigEndian, uint16(vc.dst.Port))
+ buf.WriteByte(vc.dst.AddrType)
+ buf.Write(vc.dst.Addr)
+
+ // padding
+ if p > 0 {
+ padding := make([]byte, p)
+ rand.Read(padding)
+ buf.Write(padding)
+ }
+
+ fnv1a := fnv.New32a()
+ fnv1a.Write(buf.Bytes())
+ buf.Write(fnv1a.Sum(nil))
+
+ if !vc.isAead {
+ block, err := aes.NewCipher(vc.id.CmdKey)
+ if err != nil {
+ return err
+ }
+
+ stream := cipher.NewCFBEncrypter(block, hashTimestamp(timestamp))
+ stream.XORKeyStream(buf.Bytes(), buf.Bytes())
+ mbuf.Write(buf.Bytes())
+ _, err = vc.Conn.Write(mbuf.Bytes())
+ return err
+ }
+
+ var fixedLengthCmdKey [16]byte
+ copy(fixedLengthCmdKey[:], vc.id.CmdKey)
+ vmessout := sealVMessAEADHeader(fixedLengthCmdKey, buf.Bytes(), timestamp)
+ _, err := vc.Conn.Write(vmessout)
+ return err
+}
+
+func (vc *Conn) recvResponse() error {
+ var buf []byte
+ if !vc.isAead {
+ block, err := aes.NewCipher(vc.respBodyKey[:])
+ if err != nil {
+ return err
+ }
+
+ stream := cipher.NewCFBDecrypter(block, vc.respBodyIV[:])
+ buf = make([]byte, 4)
+ _, err = io.ReadFull(vc.Conn, buf)
+ if err != nil {
+ return err
+ }
+ stream.XORKeyStream(buf, buf)
+ } else {
+ aeadResponseHeaderLengthEncryptionKey := kdf(vc.respBodyKey[:], kdfSaltConstAEADRespHeaderLenKey)[:16]
+ aeadResponseHeaderLengthEncryptionIV := kdf(vc.respBodyIV[:], kdfSaltConstAEADRespHeaderLenIV)[:12]
+
+ aeadResponseHeaderLengthEncryptionKeyAESBlock, _ := aes.NewCipher(aeadResponseHeaderLengthEncryptionKey)
+ aeadResponseHeaderLengthEncryptionAEAD, _ := cipher.NewGCM(aeadResponseHeaderLengthEncryptionKeyAESBlock)
+
+ aeadEncryptedResponseHeaderLength := make([]byte, 18)
+ if _, err := io.ReadFull(vc.Conn, aeadEncryptedResponseHeaderLength); err != nil {
+ return err
+ }
+
+ decryptedResponseHeaderLengthBinaryBuffer, err := aeadResponseHeaderLengthEncryptionAEAD.Open(nil, aeadResponseHeaderLengthEncryptionIV, aeadEncryptedResponseHeaderLength[:], nil)
+ if err != nil {
+ return err
+ }
+
+ decryptedResponseHeaderLength := binary.BigEndian.Uint16(decryptedResponseHeaderLengthBinaryBuffer)
+ aeadResponseHeaderPayloadEncryptionKey := kdf(vc.respBodyKey[:], kdfSaltConstAEADRespHeaderPayloadKey)[:16]
+ aeadResponseHeaderPayloadEncryptionIV := kdf(vc.respBodyIV[:], kdfSaltConstAEADRespHeaderPayloadIV)[:12]
+ aeadResponseHeaderPayloadEncryptionKeyAESBlock, _ := aes.NewCipher(aeadResponseHeaderPayloadEncryptionKey)
+ aeadResponseHeaderPayloadEncryptionAEAD, _ := cipher.NewGCM(aeadResponseHeaderPayloadEncryptionKeyAESBlock)
+
+ encryptedResponseHeaderBuffer := make([]byte, decryptedResponseHeaderLength+16)
+ if _, err := io.ReadFull(vc.Conn, encryptedResponseHeaderBuffer); err != nil {
+ return err
+ }
+
+ buf, err = aeadResponseHeaderPayloadEncryptionAEAD.Open(nil, aeadResponseHeaderPayloadEncryptionIV, encryptedResponseHeaderBuffer, nil)
+ if err != nil {
+ return err
+ }
+
+ if len(buf) < 4 {
+ return errors.New("unexpected buffer length")
+ }
+ }
+
+ if buf[0] != vc.respV {
+ return errors.New("unexpected response header")
+ }
+
+ if buf[2] != 0 {
+ return errors.New("dynamic port is not supported now")
+ }
+
+ return nil
+}
+
+func hashTimestamp(t time.Time) []byte {
+ md5hash := md5.New()
+ ts := make([]byte, 8)
+ binary.BigEndian.PutUint64(ts, uint64(t.Unix()))
+ md5hash.Write(ts)
+ md5hash.Write(ts)
+ md5hash.Write(ts)
+ md5hash.Write(ts)
+ return md5hash.Sum(nil)
+}
+
+// newConn return a Conn instance
+func newConn(conn net.Conn, id *ID, dst *DstAddr, security Security, isAead bool) (*Conn, error) {
+ randBytes := make([]byte, 33)
+ rand.Read(randBytes)
+ reqBodyIV := make([]byte, 16)
+ reqBodyKey := make([]byte, 16)
+ copy(reqBodyIV[:], randBytes[:16])
+ copy(reqBodyKey[:], randBytes[16:32])
+ respV := randBytes[32]
+
+ var (
+ respBodyKey []byte
+ respBodyIV []byte
+ )
+
+ if isAead {
+ bodyKey := sha256.Sum256(reqBodyKey)
+ bodyIV := sha256.Sum256(reqBodyIV)
+ respBodyKey = bodyKey[:16]
+ respBodyIV = bodyIV[:16]
+ } else {
+ bodyKey := md5.Sum(reqBodyKey)
+ bodyIV := md5.Sum(reqBodyIV)
+ respBodyKey = bodyKey[:]
+ respBodyIV = bodyIV[:]
+ }
+
+ var writer io.Writer
+ var reader io.Reader
+ switch security {
+ case SecurityNone:
+ reader = newChunkReader(conn)
+ writer = newChunkWriter(conn)
+ case SecurityAES128GCM:
+ block, _ := aes.NewCipher(reqBodyKey[:])
+ aead, _ := cipher.NewGCM(block)
+ writer = newAEADWriter(conn, aead, reqBodyIV[:])
+
+ block, _ = aes.NewCipher(respBodyKey[:])
+ aead, _ = cipher.NewGCM(block)
+ reader = newAEADReader(conn, aead, respBodyIV[:])
+ case SecurityCHACHA20POLY1305:
+ key := make([]byte, 32)
+ t := md5.Sum(reqBodyKey[:])
+ copy(key, t[:])
+ t = md5.Sum(key[:16])
+ copy(key[16:], t[:])
+ aead, _ := chacha20poly1305.New(key)
+ writer = newAEADWriter(conn, aead, reqBodyIV[:])
+
+ t = md5.Sum(respBodyKey[:])
+ copy(key, t[:])
+ t = md5.Sum(key[:16])
+ copy(key[16:], t[:])
+ aead, _ = chacha20poly1305.New(key)
+ reader = newAEADReader(conn, aead, respBodyIV[:])
+ }
+
+ c := &Conn{
+ Conn: conn,
+ id: id,
+ dst: dst,
+ reqBodyIV: reqBodyIV,
+ reqBodyKey: reqBodyKey,
+ respV: respV,
+ respBodyIV: respBodyIV[:],
+ respBodyKey: respBodyKey[:],
+ reader: reader,
+ writer: writer,
+ security: security,
+ isAead: isAead,
+ }
+ if err := c.sendRequest(); err != nil {
+ return nil, err
+ }
+ return c, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/h2.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/h2.go
new file mode 100644
index 0000000..a39ec5d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/h2.go
@@ -0,0 +1,116 @@
+package vmess
+
+import (
+ "context"
+ "io"
+ "net"
+ "net/http"
+ "net/url"
+
+ "github.com/metacubex/randv2"
+ "golang.org/x/net/http2"
+)
+
+type h2Conn struct {
+ net.Conn
+ *http2.ClientConn
+ pwriter *io.PipeWriter
+ res *http.Response
+ cfg *H2Config
+}
+
+type H2Config struct {
+ Hosts []string
+ Path string
+}
+
+func (hc *h2Conn) establishConn() error {
+ preader, pwriter := io.Pipe()
+
+ host := hc.cfg.Hosts[randv2.IntN(len(hc.cfg.Hosts))]
+ path := hc.cfg.Path
+ // TODO: connect use VMess Host instead of H2 Host
+ req := http.Request{
+ Method: "PUT",
+ Host: host,
+ URL: &url.URL{
+ Scheme: "https",
+ Host: host,
+ Path: path,
+ },
+ Proto: "HTTP/2",
+ ProtoMajor: 2,
+ ProtoMinor: 0,
+ Body: preader,
+ Header: map[string][]string{
+ "Accept-Encoding": {"identity"},
+ },
+ }
+
+ // it will be close at : `func (hc *h2Conn) Close() error`
+ res, err := hc.ClientConn.RoundTrip(&req)
+ if err != nil {
+ return err
+ }
+
+ hc.pwriter = pwriter
+ hc.res = res
+
+ return nil
+}
+
+// Read implements net.Conn.Read()
+func (hc *h2Conn) Read(b []byte) (int, error) {
+ if hc.res != nil && !hc.res.Close {
+ n, err := hc.res.Body.Read(b)
+ return n, err
+ }
+
+ if err := hc.establishConn(); err != nil {
+ return 0, err
+ }
+ return hc.res.Body.Read(b)
+}
+
+// Write implements io.Writer.
+func (hc *h2Conn) Write(b []byte) (int, error) {
+ if hc.pwriter != nil {
+ return hc.pwriter.Write(b)
+ }
+
+ if err := hc.establishConn(); err != nil {
+ return 0, err
+ }
+ return hc.pwriter.Write(b)
+}
+
+func (hc *h2Conn) Close() error {
+ if hc.pwriter != nil {
+ if err := hc.pwriter.Close(); err != nil {
+ return err
+ }
+ }
+ ctx := context.Background()
+ if hc.res != nil {
+ ctx = hc.res.Request.Context()
+ }
+ if err := hc.ClientConn.Shutdown(ctx); err != nil {
+ return err
+ }
+ return hc.Conn.Close()
+}
+
+func StreamH2Conn(conn net.Conn, cfg *H2Config) (net.Conn, error) {
+ transport := &http2.Transport{}
+
+ cconn, err := transport.NewClientConn(conn)
+ if err != nil {
+ return nil, err
+ }
+
+ return &h2Conn{
+ Conn: conn,
+ ClientConn: cconn,
+ cfg: cfg,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/header.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/header.go
new file mode 100644
index 0000000..67d407e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/header.go
@@ -0,0 +1,103 @@
+package vmess
+
+import (
+ "bytes"
+ "crypto/aes"
+ "crypto/cipher"
+ "crypto/hmac"
+ "crypto/rand"
+ "crypto/sha256"
+ "encoding/binary"
+ "hash"
+ "hash/crc32"
+ "time"
+)
+
+const (
+ kdfSaltConstAuthIDEncryptionKey = "AES Auth ID Encryption"
+ kdfSaltConstAEADRespHeaderLenKey = "AEAD Resp Header Len Key"
+ kdfSaltConstAEADRespHeaderLenIV = "AEAD Resp Header Len IV"
+ kdfSaltConstAEADRespHeaderPayloadKey = "AEAD Resp Header Key"
+ kdfSaltConstAEADRespHeaderPayloadIV = "AEAD Resp Header IV"
+ kdfSaltConstVMessAEADKDF = "VMess AEAD KDF"
+ kdfSaltConstVMessHeaderPayloadAEADKey = "VMess Header AEAD Key"
+ kdfSaltConstVMessHeaderPayloadAEADIV = "VMess Header AEAD Nonce"
+ kdfSaltConstVMessHeaderPayloadLengthAEADKey = "VMess Header AEAD Key_Length"
+ kdfSaltConstVMessHeaderPayloadLengthAEADIV = "VMess Header AEAD Nonce_Length"
+)
+
+func kdf(key []byte, path ...string) []byte {
+ hmacCreator := &hMacCreator{value: []byte(kdfSaltConstVMessAEADKDF)}
+ for _, v := range path {
+ hmacCreator = &hMacCreator{value: []byte(v), parent: hmacCreator}
+ }
+ hmacf := hmacCreator.Create()
+ hmacf.Write(key)
+ return hmacf.Sum(nil)
+}
+
+type hMacCreator struct {
+ parent *hMacCreator
+ value []byte
+}
+
+func (h *hMacCreator) Create() hash.Hash {
+ if h.parent == nil {
+ return hmac.New(sha256.New, h.value)
+ }
+ return hmac.New(h.parent.Create, h.value)
+}
+
+func createAuthID(cmdKey []byte, time int64) [16]byte {
+ buf := &bytes.Buffer{}
+ binary.Write(buf, binary.BigEndian, time)
+
+ random := make([]byte, 4)
+ rand.Read(random)
+ buf.Write(random)
+ zero := crc32.ChecksumIEEE(buf.Bytes())
+ binary.Write(buf, binary.BigEndian, zero)
+
+ aesBlock, _ := aes.NewCipher(kdf(cmdKey[:], kdfSaltConstAuthIDEncryptionKey)[:16])
+ var result [16]byte
+ aesBlock.Encrypt(result[:], buf.Bytes())
+ return result
+}
+
+func sealVMessAEADHeader(key [16]byte, data []byte, t time.Time) []byte {
+ generatedAuthID := createAuthID(key[:], t.Unix())
+ connectionNonce := make([]byte, 8)
+ rand.Read(connectionNonce)
+
+ aeadPayloadLengthSerializedByte := make([]byte, 2)
+ binary.BigEndian.PutUint16(aeadPayloadLengthSerializedByte, uint16(len(data)))
+
+ var payloadHeaderLengthAEADEncrypted []byte
+
+ {
+ payloadHeaderLengthAEADKey := kdf(key[:], kdfSaltConstVMessHeaderPayloadLengthAEADKey, string(generatedAuthID[:]), string(connectionNonce))[:16]
+ payloadHeaderLengthAEADNonce := kdf(key[:], kdfSaltConstVMessHeaderPayloadLengthAEADIV, string(generatedAuthID[:]), string(connectionNonce))[:12]
+ payloadHeaderLengthAEADAESBlock, _ := aes.NewCipher(payloadHeaderLengthAEADKey)
+ payloadHeaderAEAD, _ := cipher.NewGCM(payloadHeaderLengthAEADAESBlock)
+ payloadHeaderLengthAEADEncrypted = payloadHeaderAEAD.Seal(nil, payloadHeaderLengthAEADNonce, aeadPayloadLengthSerializedByte, generatedAuthID[:])
+ }
+
+ var payloadHeaderAEADEncrypted []byte
+
+ {
+ payloadHeaderAEADKey := kdf(key[:], kdfSaltConstVMessHeaderPayloadAEADKey, string(generatedAuthID[:]), string(connectionNonce))[:16]
+ payloadHeaderAEADNonce := kdf(key[:], kdfSaltConstVMessHeaderPayloadAEADIV, string(generatedAuthID[:]), string(connectionNonce))[:12]
+ payloadHeaderAEADAESBlock, _ := aes.NewCipher(payloadHeaderAEADKey)
+ payloadHeaderAEAD, _ := cipher.NewGCM(payloadHeaderAEADAESBlock)
+ payloadHeaderAEADEncrypted = payloadHeaderAEAD.Seal(nil, payloadHeaderAEADNonce, data, generatedAuthID[:])
+ }
+
+ outputBuffer := &bytes.Buffer{}
+
+ outputBuffer.Write(generatedAuthID[:])
+ outputBuffer.Write(payloadHeaderLengthAEADEncrypted)
+ outputBuffer.Write(connectionNonce)
+ outputBuffer.Write(payloadHeaderAEADEncrypted)
+
+ return outputBuffer.Bytes()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/http.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/http.go
new file mode 100644
index 0000000..3c66fe6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/http.go
@@ -0,0 +1,93 @@
+package vmess
+
+import (
+ "bufio"
+ "bytes"
+ "errors"
+ "fmt"
+ "net"
+ "net/http"
+ "net/textproto"
+
+ "github.com/metacubex/mihomo/common/utils"
+
+ "github.com/metacubex/randv2"
+)
+
+type httpConn struct {
+ net.Conn
+ cfg *HTTPConfig
+ reader *bufio.Reader
+ whandshake bool
+}
+
+type HTTPConfig struct {
+ Method string
+ Host string
+ Path []string
+ Headers map[string][]string
+}
+
+// Read implements net.Conn.Read()
+func (hc *httpConn) Read(b []byte) (int, error) {
+ if hc.reader != nil {
+ n, err := hc.reader.Read(b)
+ return n, err
+ }
+
+ reader := textproto.NewConn(hc.Conn)
+ // First line: GET /index.html HTTP/1.0
+ if _, err := reader.ReadLine(); err != nil {
+ return 0, err
+ }
+
+ if _, err := reader.ReadMIMEHeader(); err != nil {
+ return 0, err
+ }
+
+ hc.reader = reader.R
+ return reader.R.Read(b)
+}
+
+// Write implements io.Writer.
+func (hc *httpConn) Write(b []byte) (int, error) {
+ if hc.whandshake {
+ return hc.Conn.Write(b)
+ }
+
+ if len(hc.cfg.Path) == 0 {
+ return -1, errors.New("path is empty")
+ }
+
+ path := hc.cfg.Path[randv2.IntN(len(hc.cfg.Path))]
+ host := hc.cfg.Host
+ if header := hc.cfg.Headers["Host"]; len(header) != 0 {
+ host = header[randv2.IntN(len(header))]
+ }
+
+ u := fmt.Sprintf("http://%s%s", net.JoinHostPort(host, "80"), path)
+ req, err := http.NewRequest(utils.EmptyOr(hc.cfg.Method, http.MethodGet), u, bytes.NewBuffer(b))
+ if err != nil {
+ return 0, err
+ }
+ for key, list := range hc.cfg.Headers {
+ req.Header.Set(key, list[randv2.IntN(len(list))])
+ }
+ req.ContentLength = int64(len(b))
+ if err := req.Write(hc.Conn); err != nil {
+ return 0, err
+ }
+ hc.whandshake = true
+ return len(b), nil
+}
+
+func (hc *httpConn) Close() error {
+ return hc.Conn.Close()
+}
+
+func StreamHTTPConn(conn net.Conn, cfg *HTTPConfig) net.Conn {
+ return &httpConn{
+ Conn: conn,
+ cfg: cfg,
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/tls.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/tls.go
new file mode 100644
index 0000000..bdaa8cc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/tls.go
@@ -0,0 +1,65 @@
+package vmess
+
+import (
+ "context"
+ "crypto/tls"
+ "errors"
+ "net"
+
+ "github.com/metacubex/mihomo/component/ca"
+ tlsC "github.com/metacubex/mihomo/component/tls"
+)
+
+type TLSConfig struct {
+ Host string
+ SkipCertVerify bool
+ FingerPrint string
+ ClientFingerprint string
+ NextProtos []string
+ Reality *tlsC.RealityConfig
+}
+
+func StreamTLSConn(ctx context.Context, conn net.Conn, cfg *TLSConfig) (net.Conn, error) {
+ tlsConfig := &tls.Config{
+ ServerName: cfg.Host,
+ InsecureSkipVerify: cfg.SkipCertVerify,
+ NextProtos: cfg.NextProtos,
+ }
+
+ var err error
+ tlsConfig, err = ca.GetSpecifiedFingerprintTLSConfig(tlsConfig, cfg.FingerPrint)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(cfg.ClientFingerprint) != 0 {
+ if cfg.Reality == nil {
+ utlsConn, valid := GetUTLSConn(conn, cfg.ClientFingerprint, tlsConfig)
+ if valid {
+ err := utlsConn.(*tlsC.UConn).HandshakeContext(ctx)
+ return utlsConn, err
+ }
+ } else {
+ return tlsC.GetRealityConn(ctx, conn, cfg.ClientFingerprint, tlsConfig, cfg.Reality)
+ }
+ }
+ if cfg.Reality != nil {
+ return nil, errors.New("REALITY is based on uTLS, please set a client-fingerprint")
+ }
+
+ tlsConn := tls.Client(conn, tlsConfig)
+
+ err = tlsConn.HandshakeContext(ctx)
+ return tlsConn, err
+}
+
+func GetUTLSConn(conn net.Conn, ClientFingerprint string, tlsConfig *tls.Config) (net.Conn, bool) {
+
+ if fingerprint, exists := tlsC.GetFingerprint(ClientFingerprint); exists {
+ utlsConn := tlsC.UClient(conn, tlsConfig, fingerprint)
+
+ return utlsConn, true
+ }
+
+ return nil, false
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/user.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/user.go
new file mode 100644
index 0000000..091df0a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/user.go
@@ -0,0 +1,55 @@
+package vmess
+
+import (
+ "bytes"
+ "crypto/md5"
+
+ "github.com/gofrs/uuid/v5"
+)
+
+// ID cmdKey length
+const (
+ IDBytesLen = 16
+)
+
+// The ID of en entity, in the form of a UUID.
+type ID struct {
+ UUID *uuid.UUID
+ CmdKey []byte
+}
+
+// newID returns an ID with given UUID.
+func newID(uuid *uuid.UUID) *ID {
+ id := &ID{UUID: uuid, CmdKey: make([]byte, IDBytesLen)}
+ md5hash := md5.New()
+ md5hash.Write(uuid.Bytes())
+ md5hash.Write([]byte("c48619fe-8f02-49e0-b9e9-edf763e17e21"))
+ md5hash.Sum(id.CmdKey[:0])
+ return id
+}
+
+func nextID(u *uuid.UUID) *uuid.UUID {
+ md5hash := md5.New()
+ md5hash.Write(u.Bytes())
+ md5hash.Write([]byte("16167dc8-16b6-4e6d-b8bb-65dd68113a81"))
+ var newid uuid.UUID
+ for {
+ md5hash.Sum(newid[:0])
+ if !bytes.Equal(newid.Bytes(), u.Bytes()) {
+ return &newid
+ }
+ md5hash.Write([]byte("533eff8a-4113-4b10-b5ce-0f5d76b98cd2"))
+ }
+}
+
+func newAlterIDs(primary *ID, alterIDCount uint16) []*ID {
+ alterIDs := make([]*ID, alterIDCount)
+ prevID := primary.UUID
+ for idx := range alterIDs {
+ newid := nextID(prevID)
+ alterIDs[idx] = &ID{UUID: newid, CmdKey: primary.CmdKey[:]}
+ prevID = newid
+ }
+ alterIDs = append(alterIDs, primary)
+ return alterIDs
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/vmess.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/vmess.go
new file mode 100644
index 0000000..22c77ab
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/vmess.go
@@ -0,0 +1,115 @@
+package vmess
+
+import (
+ "fmt"
+ "net"
+ "runtime"
+
+ "github.com/metacubex/mihomo/common/utils"
+
+ "github.com/gofrs/uuid/v5"
+ "github.com/metacubex/randv2"
+)
+
+// Version of vmess
+const Version byte = 1
+
+// Request Options
+const (
+ OptionChunkStream byte = 1
+ OptionChunkMasking byte = 4
+)
+
+// Security type vmess
+type Security = byte
+
+// Cipher types
+const (
+ SecurityAES128GCM Security = 3
+ SecurityCHACHA20POLY1305 Security = 4
+ SecurityNone Security = 5
+)
+
+// CipherMapping return
+var CipherMapping = map[string]byte{
+ "none": SecurityNone,
+ "aes-128-gcm": SecurityAES128GCM,
+ "chacha20-poly1305": SecurityCHACHA20POLY1305,
+}
+
+// Command types
+const (
+ CommandTCP byte = 1
+ CommandUDP byte = 2
+)
+
+// Addr types
+const (
+ AtypIPv4 byte = 1
+ AtypDomainName byte = 2
+ AtypIPv6 byte = 3
+)
+
+// DstAddr store destination address
+type DstAddr struct {
+ UDP bool
+ AddrType byte
+ Addr []byte
+ Port uint
+}
+
+// Client is vmess connection generator
+type Client struct {
+ user []*ID
+ uuid *uuid.UUID
+ security Security
+ isAead bool
+}
+
+// Config of vmess
+type Config struct {
+ UUID string
+ AlterID uint16
+ Security string
+ Port string
+ HostName string
+ IsAead bool
+}
+
+// StreamConn return a Conn with net.Conn and DstAddr
+func (c *Client) StreamConn(conn net.Conn, dst *DstAddr) (net.Conn, error) {
+ r := randv2.IntN(len(c.user))
+ return newConn(conn, c.user[r], dst, c.security, c.isAead)
+}
+
+// NewClient return Client instance
+func NewClient(config Config) (*Client, error) {
+ uid, err := utils.UUIDMap(config.UUID)
+ if err != nil {
+ return nil, err
+ }
+
+ var security Security
+ switch config.Security {
+ case "aes-128-gcm":
+ security = SecurityAES128GCM
+ case "chacha20-poly1305":
+ security = SecurityCHACHA20POLY1305
+ case "none":
+ security = SecurityNone
+ case "auto":
+ security = SecurityCHACHA20POLY1305
+ if runtime.GOARCH == "amd64" || runtime.GOARCH == "s390x" || runtime.GOARCH == "arm64" {
+ security = SecurityAES128GCM
+ }
+ default:
+ return nil, fmt.Errorf("unknown security type: %s", config.Security)
+ }
+
+ return &Client{
+ user: newAlterIDs(newID(&uid), config.AlterID),
+ uuid: &uid,
+ security: security,
+ isAead: config.IsAead,
+ }, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/websocket.go b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/websocket.go
new file mode 100644
index 0000000..ca3a57b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/transport/vmess/websocket.go
@@ -0,0 +1,595 @@
+package vmess
+
+import (
+ "bufio"
+ "bytes"
+ "context"
+ "crypto/rand"
+ "crypto/sha1"
+ "crypto/tls"
+ "encoding/base64"
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "io"
+ "net"
+ "net/http"
+ "net/url"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/metacubex/mihomo/common/buf"
+ N "github.com/metacubex/mihomo/common/net"
+ tlsC "github.com/metacubex/mihomo/component/tls"
+ "github.com/metacubex/mihomo/log"
+
+ "github.com/gobwas/ws"
+ "github.com/gobwas/ws/wsutil"
+ "github.com/metacubex/randv2"
+)
+
+type websocketConn struct {
+ net.Conn
+ state ws.State
+ reader *wsutil.Reader
+ controlHandler wsutil.FrameHandlerFunc
+
+ rawWriter N.ExtendedWriter
+}
+
+type websocketWithEarlyDataConn struct {
+ net.Conn
+ wsWriter N.ExtendedWriter
+ underlay net.Conn
+ closed bool
+ dialed chan bool
+ cancel context.CancelFunc
+ ctx context.Context
+ config *WebsocketConfig
+}
+
+type WebsocketConfig struct {
+ Host string
+ Port string
+ Path string
+ Headers http.Header
+ TLS bool
+ TLSConfig *tls.Config
+ MaxEarlyData int
+ EarlyDataHeaderName string
+ ClientFingerprint string
+ V2rayHttpUpgrade bool
+ V2rayHttpUpgradeFastOpen bool
+}
+
+// Read implements net.Conn.Read()
+// modify from gobwas/ws/wsutil.readData
+func (wsc *websocketConn) Read(b []byte) (n int, err error) {
+ defer func() { // avoid gobwas/ws pbytes.GetLen panic
+ if value := recover(); value != nil {
+ err = fmt.Errorf("websocket error: %s", value)
+ }
+ }()
+ var header ws.Header
+ for {
+ n, err = wsc.reader.Read(b)
+ // in gobwas/ws: "The error is io.EOF only if all of message bytes were read."
+ // but maybe next frame still have data, so drop it
+ if errors.Is(err, io.EOF) {
+ err = nil
+ }
+ if !errors.Is(err, wsutil.ErrNoFrameAdvance) {
+ return
+ }
+ header, err = wsc.reader.NextFrame()
+ if err != nil {
+ return
+ }
+ if header.OpCode.IsControl() {
+ err = wsc.controlHandler(header, wsc.reader)
+ if err != nil {
+ return
+ }
+ continue
+ }
+ if header.OpCode&(ws.OpBinary|ws.OpText) == 0 {
+ err = wsc.reader.Discard()
+ if err != nil {
+ return
+ }
+ continue
+ }
+ }
+}
+
+// Write implements io.Writer.
+func (wsc *websocketConn) Write(b []byte) (n int, err error) {
+ err = wsutil.WriteMessage(wsc.Conn, wsc.state, ws.OpBinary, b)
+ if err != nil {
+ return
+ }
+ n = len(b)
+ return
+}
+
+func (wsc *websocketConn) WriteBuffer(buffer *buf.Buffer) error {
+ var payloadBitLength int
+ dataLen := buffer.Len()
+ data := buffer.Bytes()
+ if dataLen < 126 {
+ payloadBitLength = 1
+ } else if dataLen < 65536 {
+ payloadBitLength = 3
+ } else {
+ payloadBitLength = 9
+ }
+
+ var headerLen int
+ headerLen += 1 // FIN / RSV / OPCODE
+ headerLen += payloadBitLength
+ if wsc.state.ClientSide() {
+ headerLen += 4 // MASK KEY
+ }
+
+ header := buffer.ExtendHeader(headerLen)
+ header[0] = byte(ws.OpBinary) | 0x80
+ if wsc.state.ClientSide() {
+ header[1] = 1 << 7
+ } else {
+ header[1] = 0
+ }
+
+ if dataLen < 126 {
+ header[1] |= byte(dataLen)
+ } else if dataLen < 65536 {
+ header[1] |= 126
+ binary.BigEndian.PutUint16(header[2:], uint16(dataLen))
+ } else {
+ header[1] |= 127
+ binary.BigEndian.PutUint64(header[2:], uint64(dataLen))
+ }
+
+ if wsc.state.ClientSide() {
+ maskKey := randv2.Uint32()
+ binary.LittleEndian.PutUint32(header[1+payloadBitLength:], maskKey)
+ N.MaskWebSocket(maskKey, data)
+ }
+
+ return wsc.rawWriter.WriteBuffer(buffer)
+}
+
+func (wsc *websocketConn) FrontHeadroom() int {
+ return 14
+}
+
+func (wsc *websocketConn) Upstream() any {
+ return wsc.Conn
+}
+
+func (wsc *websocketConn) Close() error {
+ _ = wsc.Conn.SetWriteDeadline(time.Now().Add(time.Second * 5))
+ _ = wsutil.WriteMessage(wsc.Conn, wsc.state, ws.OpClose, ws.NewCloseFrameBody(ws.StatusNormalClosure, ""))
+ _ = wsc.Conn.Close()
+ return nil
+}
+
+func (wsedc *websocketWithEarlyDataConn) Dial(earlyData []byte) error {
+ base64DataBuf := &bytes.Buffer{}
+ base64EarlyDataEncoder := base64.NewEncoder(base64.RawURLEncoding, base64DataBuf)
+
+ earlyDataBuf := bytes.NewBuffer(earlyData)
+ if _, err := base64EarlyDataEncoder.Write(earlyDataBuf.Next(wsedc.config.MaxEarlyData)); err != nil {
+ return fmt.Errorf("failed to encode early data: %w", err)
+ }
+
+ if errc := base64EarlyDataEncoder.Close(); errc != nil {
+ return fmt.Errorf("failed to encode early data tail: %w", errc)
+ }
+
+ var err error
+ if wsedc.Conn, err = streamWebsocketConn(wsedc.ctx, wsedc.underlay, wsedc.config, base64DataBuf); err != nil {
+ wsedc.Close()
+ return fmt.Errorf("failed to dial WebSocket: %w", err)
+ }
+
+ wsedc.dialed <- true
+ wsedc.wsWriter = N.NewExtendedWriter(wsedc.Conn)
+ if earlyDataBuf.Len() != 0 {
+ _, err = wsedc.Conn.Write(earlyDataBuf.Bytes())
+ }
+
+ return err
+}
+
+func (wsedc *websocketWithEarlyDataConn) Write(b []byte) (int, error) {
+ if wsedc.closed {
+ return 0, io.ErrClosedPipe
+ }
+ if wsedc.Conn == nil {
+ if err := wsedc.Dial(b); err != nil {
+ return 0, err
+ }
+ return len(b), nil
+ }
+
+ return wsedc.Conn.Write(b)
+}
+
+func (wsedc *websocketWithEarlyDataConn) WriteBuffer(buffer *buf.Buffer) error {
+ if wsedc.closed {
+ return io.ErrClosedPipe
+ }
+ if wsedc.Conn == nil {
+ if err := wsedc.Dial(buffer.Bytes()); err != nil {
+ return err
+ }
+ return nil
+ }
+
+ return wsedc.wsWriter.WriteBuffer(buffer)
+}
+
+func (wsedc *websocketWithEarlyDataConn) Read(b []byte) (int, error) {
+ if wsedc.closed {
+ return 0, io.ErrClosedPipe
+ }
+ if wsedc.Conn == nil {
+ select {
+ case <-wsedc.ctx.Done():
+ return 0, io.ErrUnexpectedEOF
+ case <-wsedc.dialed:
+ }
+ }
+ return wsedc.Conn.Read(b)
+}
+
+func (wsedc *websocketWithEarlyDataConn) Close() error {
+ wsedc.closed = true
+ wsedc.cancel()
+ if wsedc.Conn == nil {
+ return nil
+ }
+ return wsedc.Conn.Close()
+}
+
+func (wsedc *websocketWithEarlyDataConn) LocalAddr() net.Addr {
+ if wsedc.Conn == nil {
+ return wsedc.underlay.LocalAddr()
+ }
+ return wsedc.Conn.LocalAddr()
+}
+
+func (wsedc *websocketWithEarlyDataConn) RemoteAddr() net.Addr {
+ if wsedc.Conn == nil {
+ return wsedc.underlay.RemoteAddr()
+ }
+ return wsedc.Conn.RemoteAddr()
+}
+
+func (wsedc *websocketWithEarlyDataConn) SetDeadline(t time.Time) error {
+ if err := wsedc.SetReadDeadline(t); err != nil {
+ return err
+ }
+ return wsedc.SetWriteDeadline(t)
+}
+
+func (wsedc *websocketWithEarlyDataConn) SetReadDeadline(t time.Time) error {
+ if wsedc.Conn == nil {
+ return nil
+ }
+ return wsedc.Conn.SetReadDeadline(t)
+}
+
+func (wsedc *websocketWithEarlyDataConn) SetWriteDeadline(t time.Time) error {
+ if wsedc.Conn == nil {
+ return nil
+ }
+ return wsedc.Conn.SetWriteDeadline(t)
+}
+
+func (wsedc *websocketWithEarlyDataConn) FrontHeadroom() int {
+ return 14
+}
+
+func (wsedc *websocketWithEarlyDataConn) Upstream() any {
+ return wsedc.underlay
+}
+
+//func (wsedc *websocketWithEarlyDataConn) LazyHeadroom() bool {
+// return wsedc.Conn == nil
+//}
+//
+//func (wsedc *websocketWithEarlyDataConn) Upstream() any {
+// if wsedc.Conn == nil { // ensure return a nil interface not an interface with nil value
+// return nil
+// }
+// return wsedc.Conn
+//}
+
+func (wsedc *websocketWithEarlyDataConn) NeedHandshake() bool {
+ return wsedc.Conn == nil
+}
+
+func streamWebsocketWithEarlyDataConn(conn net.Conn, c *WebsocketConfig) (net.Conn, error) {
+ ctx, cancel := context.WithCancel(context.Background())
+ conn = &websocketWithEarlyDataConn{
+ dialed: make(chan bool, 1),
+ cancel: cancel,
+ ctx: ctx,
+ underlay: conn,
+ config: c,
+ }
+ // websocketWithEarlyDataConn can't correct handle Deadline
+ // it will not apply the already set Deadline after Dial()
+ // so call N.NewDeadlineConn to add a safe wrapper
+ return N.NewDeadlineConn(conn), nil
+}
+
+func streamWebsocketConn(ctx context.Context, conn net.Conn, c *WebsocketConfig, earlyData *bytes.Buffer) (net.Conn, error) {
+ u, err := url.Parse(c.Path)
+ if err != nil {
+ return nil, fmt.Errorf("parse url %s error: %w", c.Path, err)
+ }
+
+ uri := url.URL{
+ Scheme: "ws",
+ Host: net.JoinHostPort(c.Host, c.Port),
+ Path: u.Path,
+ RawQuery: u.RawQuery,
+ }
+
+ if !strings.HasPrefix(uri.Path, "/") {
+ uri.Path = "/" + uri.Path
+ }
+
+ if c.TLS {
+ uri.Scheme = "wss"
+ config := c.TLSConfig
+ if config == nil { // The config cannot be nil
+ config = &tls.Config{NextProtos: []string{"http/1.1"}}
+ }
+ if config.ServerName == "" && !config.InsecureSkipVerify { // users must set either ServerName or InsecureSkipVerify in the config.
+ config = config.Clone()
+ config.ServerName = uri.Host
+ }
+
+ if len(c.ClientFingerprint) != 0 {
+ if fingerprint, exists := tlsC.GetFingerprint(c.ClientFingerprint); exists {
+ utlsConn := tlsC.UClient(conn, config, fingerprint)
+ if err = utlsConn.BuildWebsocketHandshakeState(); err != nil {
+ return nil, fmt.Errorf("parse url %s error: %w", c.Path, err)
+ }
+ conn = utlsConn
+ }
+ } else {
+ conn = tls.Client(conn, config)
+ }
+
+ if tlsConn, ok := conn.(interface {
+ HandshakeContext(ctx context.Context) error
+ }); ok {
+ if err = tlsConn.HandshakeContext(ctx); err != nil {
+ return nil, err
+ }
+ }
+ }
+
+ request := &http.Request{
+ Method: http.MethodGet,
+ URL: &uri,
+ Header: c.Headers.Clone(),
+ Host: c.Host,
+ }
+
+ request.Header.Set("Connection", "Upgrade")
+ request.Header.Set("Upgrade", "websocket")
+
+ if host := request.Header.Get("Host"); host != "" {
+ // For client requests, Host optionally overrides the Host
+ // header to send. If empty, the Request.Write method uses
+ // the value of URL.Host. Host may contain an international
+ // domain name.
+ request.Host = host
+ }
+ request.Header.Del("Host")
+
+ var secKey string
+ if !c.V2rayHttpUpgrade {
+ const nonceKeySize = 16
+ // NOTE: bts does not escape.
+ bts := make([]byte, nonceKeySize)
+ if _, err = rand.Read(bts); err != nil {
+ return nil, fmt.Errorf("rand read error: %w", err)
+ }
+ secKey = base64.StdEncoding.EncodeToString(bts)
+ request.Header.Set("Sec-WebSocket-Version", "13")
+ request.Header.Set("Sec-WebSocket-Key", secKey)
+ }
+
+ if earlyData != nil {
+ earlyDataString := earlyData.String()
+ if c.EarlyDataHeaderName == "" {
+ uri.Path += earlyDataString
+ } else {
+ request.Header.Set(c.EarlyDataHeaderName, earlyDataString)
+ }
+ }
+
+ if ctx.Done() != nil {
+ done := N.SetupContextForConn(ctx, conn)
+ defer done(&err)
+ }
+
+ err = request.Write(conn)
+ if err != nil {
+ return nil, err
+ }
+ bufferedConn := N.NewBufferedConn(conn)
+
+ if c.V2rayHttpUpgrade && c.V2rayHttpUpgradeFastOpen {
+ return N.NewEarlyConn(bufferedConn, func() error {
+ response, err := http.ReadResponse(bufferedConn.Reader(), request)
+ if err != nil {
+ return err
+ }
+ if response.StatusCode != http.StatusSwitchingProtocols ||
+ !strings.EqualFold(response.Header.Get("Connection"), "upgrade") ||
+ !strings.EqualFold(response.Header.Get("Upgrade"), "websocket") {
+ return fmt.Errorf("unexpected status: %s", response.Status)
+ }
+ return nil
+ }), nil
+ }
+
+ response, err := http.ReadResponse(bufferedConn.Reader(), request)
+ if err != nil {
+ return nil, err
+ }
+ if response.StatusCode != http.StatusSwitchingProtocols ||
+ !strings.EqualFold(response.Header.Get("Connection"), "upgrade") ||
+ !strings.EqualFold(response.Header.Get("Upgrade"), "websocket") {
+ return nil, fmt.Errorf("unexpected status: %s", response.Status)
+ }
+
+ if c.V2rayHttpUpgrade {
+ return bufferedConn, nil
+ }
+
+ if log.Level() == log.DEBUG { // we might not check this for performance
+ secAccept := response.Header.Get("Sec-Websocket-Accept")
+ const acceptSize = 28 // base64.StdEncoding.EncodedLen(sha1.Size)
+ if lenSecAccept := len(secAccept); lenSecAccept != acceptSize {
+ return nil, fmt.Errorf("unexpected Sec-Websocket-Accept length: %d", lenSecAccept)
+ }
+ if getSecAccept(secKey) != secAccept {
+ return nil, errors.New("unexpected Sec-Websocket-Accept")
+ }
+ }
+
+ conn = newWebsocketConn(conn, ws.StateClientSide)
+ // websocketConn can't correct handle ReadDeadline
+ // so call N.NewDeadlineConn to add a safe wrapper
+ return N.NewDeadlineConn(conn), nil
+}
+
+func getSecAccept(secKey string) string {
+ const magic = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
+ const nonceSize = 24 // base64.StdEncoding.EncodedLen(nonceKeySize)
+ p := make([]byte, nonceSize+len(magic))
+ copy(p[:nonceSize], secKey)
+ copy(p[nonceSize:], magic)
+ sum := sha1.Sum(p)
+ return base64.StdEncoding.EncodeToString(sum[:])
+}
+
+func StreamWebsocketConn(ctx context.Context, conn net.Conn, c *WebsocketConfig) (net.Conn, error) {
+ if u, err := url.Parse(c.Path); err == nil {
+ if q := u.Query(); q.Get("ed") != "" {
+ if ed, err := strconv.Atoi(q.Get("ed")); err == nil {
+ c.MaxEarlyData = ed
+ c.EarlyDataHeaderName = "Sec-WebSocket-Protocol"
+ q.Del("ed")
+ u.RawQuery = q.Encode()
+ c.Path = u.String()
+ }
+ }
+ }
+
+ if c.MaxEarlyData > 0 {
+ return streamWebsocketWithEarlyDataConn(conn, c)
+ }
+
+ return streamWebsocketConn(ctx, conn, c, nil)
+}
+
+func newWebsocketConn(conn net.Conn, state ws.State) *websocketConn {
+ controlHandler := wsutil.ControlFrameHandler(conn, state)
+ return &websocketConn{
+ Conn: conn,
+ state: state,
+ reader: &wsutil.Reader{
+ Source: conn,
+ State: state,
+ SkipHeaderCheck: true,
+ CheckUTF8: false,
+ OnIntermediate: controlHandler,
+ },
+ controlHandler: controlHandler,
+ rawWriter: N.NewExtendedWriter(conn),
+ }
+}
+
+var replacer = strings.NewReplacer("+", "-", "/", "_", "=", "")
+
+func decodeEd(s string) ([]byte, error) {
+ return base64.RawURLEncoding.DecodeString(replacer.Replace(s))
+}
+
+func decodeXray0rtt(requestHeader http.Header) []byte {
+ // read inHeader's `Sec-WebSocket-Protocol` for Xray's 0rtt ws
+ if secProtocol := requestHeader.Get("Sec-WebSocket-Protocol"); len(secProtocol) > 0 {
+ if edBuf, err := decodeEd(secProtocol); err == nil { // sure could base64 decode
+ return edBuf
+ }
+ }
+ return nil
+}
+
+func IsWebSocketUpgrade(r *http.Request) bool {
+ return r.Header.Get("Upgrade") == "websocket"
+}
+
+func IsV2rayHttpUpdate(r *http.Request) bool {
+ return IsWebSocketUpgrade(r) && r.Header.Get("Sec-WebSocket-Key") == ""
+}
+
+func StreamUpgradedWebsocketConn(w http.ResponseWriter, r *http.Request) (net.Conn, error) {
+ var conn net.Conn
+ var rw *bufio.ReadWriter
+ var err error
+ isRaw := IsV2rayHttpUpdate(r)
+ w.Header().Set("Connection", "upgrade")
+ w.Header().Set("Upgrade", "websocket")
+ if !isRaw {
+ w.Header().Set("Sec-Websocket-Accept", getSecAccept(r.Header.Get("Sec-WebSocket-Key")))
+ }
+ w.WriteHeader(http.StatusSwitchingProtocols)
+ if flusher, isFlusher := w.(interface{ FlushError() error }); isFlusher {
+ err = flusher.FlushError()
+ if err != nil {
+ return nil, fmt.Errorf("flush response: %w", err)
+ }
+ }
+ hijacker, canHijack := w.(http.Hijacker)
+ if !canHijack {
+ return nil, errors.New("invalid connection, maybe HTTP/2")
+ }
+ conn, rw, err = hijacker.Hijack()
+ if err != nil {
+ return nil, fmt.Errorf("hijack failed: %w", err)
+ }
+
+ // rw.Writer was flushed, so we only need warp rw.Reader
+ conn = N.WarpConnWithBioReader(conn, rw.Reader)
+
+ if !isRaw {
+ conn = newWebsocketConn(conn, ws.StateServerSide)
+ // websocketConn can't correct handle ReadDeadline
+ // so call N.NewDeadlineConn to add a safe wrapper
+ conn = N.NewDeadlineConn(conn)
+ }
+
+ if edBuf := decodeXray0rtt(r.Header); len(edBuf) > 0 {
+ appendOk := false
+ if bufConn, ok := conn.(*N.BufferedConn); ok {
+ appendOk = bufConn.AppendData(edBuf)
+ }
+ if !appendOk {
+ conn = N.NewCachedConn(conn, edBuf)
+ }
+
+ }
+
+ return conn, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/connection.go b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/connection.go
new file mode 100644
index 0000000..1ea0678
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/connection.go
@@ -0,0 +1,181 @@
+package tunnel
+
+import (
+ "context"
+ "errors"
+ "net"
+ "net/netip"
+ "time"
+
+ "github.com/metacubex/mihomo/common/lru"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+type packetSender struct {
+ ctx context.Context
+ cancel context.CancelFunc
+ ch chan C.PacketAdapter
+ cache *lru.LruCache[string, netip.Addr]
+}
+
+// newPacketSender return a chan based C.PacketSender
+// It ensures that packets can be sent sequentially and without blocking
+func newPacketSender() C.PacketSender {
+ ctx, cancel := context.WithCancel(context.Background())
+ ch := make(chan C.PacketAdapter, senderCapacity)
+ return &packetSender{
+ ctx: ctx,
+ cancel: cancel,
+ ch: ch,
+ cache: lru.New[string, netip.Addr](lru.WithSize[string, netip.Addr](senderCapacity)),
+ }
+}
+
+func (s *packetSender) Process(pc C.PacketConn, proxy C.WriteBackProxy) {
+ for {
+ select {
+ case <-s.ctx.Done():
+ return // sender closed
+ case packet := <-s.ch:
+ if proxy != nil {
+ proxy.UpdateWriteBack(packet)
+ }
+ if err := s.ResolveUDP(packet.Metadata()); err != nil {
+ log.Warnln("[UDP] Resolve Ip error: %s", err)
+ } else {
+ _ = handleUDPToRemote(packet, pc, packet.Metadata())
+ }
+ packet.Drop()
+ }
+ }
+}
+
+func (s *packetSender) dropAll() {
+ for {
+ select {
+ case data := <-s.ch:
+ data.Drop() // drop all data still in chan
+ default:
+ return // no data, exit goroutine
+ }
+ }
+}
+
+func (s *packetSender) Send(packet C.PacketAdapter) {
+ select {
+ case <-s.ctx.Done():
+ packet.Drop() // sender closed before Send()
+ return
+ default:
+ }
+
+ select {
+ case s.ch <- packet:
+ // put ok, so don't drop packet, will process by other side of chan
+ case <-s.ctx.Done():
+ packet.Drop() // sender closed when putting data to chan
+ default:
+ packet.Drop() // chan is full
+ }
+}
+
+func (s *packetSender) Close() {
+ s.cancel()
+ s.dropAll()
+}
+
+func (s *packetSender) ResolveUDP(metadata *C.Metadata) (err error) {
+ // local resolve UDP dns
+ if !metadata.Resolved() {
+ ip, ok := s.cache.Get(metadata.Host)
+ if !ok {
+ ip, err = resolver.ResolveIP(s.ctx, metadata.Host)
+ if err != nil {
+ return err
+ }
+ s.cache.Set(metadata.Host, ip)
+ }
+
+ metadata.DstIP = ip
+ }
+ return nil
+}
+
+func handleUDPToRemote(packet C.UDPPacket, pc C.PacketConn, metadata *C.Metadata) error {
+ addr := metadata.UDPAddr()
+ if addr == nil {
+ return errors.New("udp addr invalid")
+ }
+
+ if _, err := pc.WriteTo(packet.Data(), addr); err != nil {
+ return err
+ }
+ // reset timeout
+ _ = pc.SetReadDeadline(time.Now().Add(udpTimeout))
+
+ return nil
+}
+
+func handleUDPToLocal(writeBack C.WriteBack, pc N.EnhancePacketConn, sender C.PacketSender, key string, oAddrPort netip.AddrPort, fAddr netip.Addr) {
+ defer func() {
+ sender.Close()
+ _ = pc.Close()
+ closeAllLocalCoon(key)
+ natTable.Delete(key)
+ }()
+
+ for {
+ _ = pc.SetReadDeadline(time.Now().Add(udpTimeout))
+ data, put, from, err := pc.WaitReadFrom()
+ if err != nil {
+ return
+ }
+
+ fromUDPAddr, isUDPAddr := from.(*net.UDPAddr)
+ if !isUDPAddr {
+ fromUDPAddr = net.UDPAddrFromAddrPort(oAddrPort) // oAddrPort was Unmapped
+ log.Warnln("server return a [%T](%s) which isn't a *net.UDPAddr, force replace to (%s), this may be caused by a wrongly implemented server", from, from, oAddrPort)
+ } else if fromUDPAddr == nil {
+ fromUDPAddr = net.UDPAddrFromAddrPort(oAddrPort) // oAddrPort was Unmapped
+ log.Warnln("server return a nil *net.UDPAddr, force replace to (%s), this may be caused by a wrongly implemented server", oAddrPort)
+ } else {
+ _fromUDPAddr := *fromUDPAddr
+ fromUDPAddr = &_fromUDPAddr // make a copy
+ if fromAddr, ok := netip.AddrFromSlice(fromUDPAddr.IP); ok {
+ fromAddr = fromAddr.Unmap()
+ if fAddr.IsValid() && (oAddrPort.Addr() == fromAddr) { // oAddrPort was Unmapped
+ fromAddr = fAddr.Unmap()
+ }
+ fromUDPAddr.IP = fromAddr.AsSlice()
+ if fromAddr.Is4() {
+ fromUDPAddr.Zone = "" // only ipv6 can have the zone
+ }
+ }
+ }
+
+ _, err = writeBack.WriteBack(data, fromUDPAddr)
+ if put != nil {
+ put()
+ }
+ if err != nil {
+ return
+ }
+ }
+}
+
+func closeAllLocalCoon(lAddr string) {
+ natTable.RangeForLocalConn(lAddr, func(key string, value *net.UDPConn) bool {
+ conn := value
+
+ conn.Close()
+ log.Debugln("Closing TProxy local conn... lAddr=%s rAddr=%s", lAddr, key)
+ return true
+ })
+}
+
+func handleSocket(inbound, outbound net.Conn) {
+ N.Relay(inbound, outbound)
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/dns_dialer.go b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/dns_dialer.go
new file mode 100644
index 0000000..1839869
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/dns_dialer.go
@@ -0,0 +1,186 @@
+package tunnel
+
+// WARNING: all function in this file should only be using in dns module
+
+import (
+ "context"
+ "fmt"
+ "net"
+ "strings"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/tunnel/statistic"
+)
+
+const DnsRespectRules = "RULES"
+
+type DNSDialer struct {
+ r resolver.Resolver
+ proxyAdapter C.ProxyAdapter
+ proxyName string
+ opts []dialer.Option
+}
+
+func NewDNSDialer(r resolver.Resolver, proxyAdapter C.ProxyAdapter, proxyName string, opts ...dialer.Option) *DNSDialer {
+ return &DNSDialer{r: r, proxyAdapter: proxyAdapter, proxyName: proxyName, opts: opts}
+}
+
+func (d *DNSDialer) DialContext(ctx context.Context, network, addr string) (net.Conn, error) {
+ r := d.r
+ proxyName := d.proxyName
+ proxyAdapter := d.proxyAdapter
+ opts := d.opts
+ var rule C.Rule
+ metadata := &C.Metadata{
+ NetWork: C.TCP,
+ Type: C.INNER,
+ }
+ err := metadata.SetRemoteAddress(addr) // tcp can resolve host by remote
+ if err != nil {
+ return nil, err
+ }
+ if !strings.Contains(network, "tcp") {
+ metadata.NetWork = C.UDP
+ if !metadata.Resolved() {
+ // udp must resolve host first
+ dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r)
+ if err != nil {
+ return nil, err
+ }
+ metadata.DstIP = dstIP
+ }
+ }
+
+ if proxyAdapter == nil && len(proxyName) != 0 {
+ if proxyName == DnsRespectRules {
+ if !metadata.Resolved() {
+ // resolve here before resolveMetadata to avoid its inner resolver.ResolveIP
+ dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r)
+ if err != nil {
+ return nil, err
+ }
+ metadata.DstIP = dstIP
+ }
+ proxyAdapter, rule, err = resolveMetadata(metadata)
+ if err != nil {
+ return nil, err
+ }
+ } else {
+ var ok bool
+ proxyAdapter, ok = Proxies()[proxyName]
+ if !ok {
+ opts = append(opts, dialer.WithInterface(proxyName))
+ }
+ }
+ }
+
+ if metadata.NetWork == C.TCP {
+ if proxyAdapter == nil {
+ opts = append(opts, dialer.WithResolver(r))
+ return dialer.DialContext(ctx, network, addr, opts...)
+ }
+
+ if proxyAdapter.IsL3Protocol(metadata) { // L3 proxy should resolve domain before to avoid loopback
+ if !metadata.Resolved() {
+ dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r)
+ if err != nil {
+ return nil, err
+ }
+ metadata.DstIP = dstIP
+ }
+ metadata.Host = "" // clear host to avoid double resolve in proxy
+ }
+
+ conn, err := proxyAdapter.DialContext(ctx, metadata, opts...)
+ if err != nil {
+ logMetadataErr(metadata, rule, proxyAdapter, err)
+ return nil, err
+ }
+ logMetadata(metadata, rule, conn)
+
+ conn = statistic.NewTCPTracker(conn, statistic.DefaultManager, metadata, rule, 0, 0, false)
+
+ return conn, nil
+ } else {
+ if proxyAdapter == nil {
+ return dialer.DialContext(ctx, network, metadata.AddrPort().String(), opts...)
+ }
+
+ if !proxyAdapter.SupportUDP() {
+ return nil, fmt.Errorf("proxy adapter [%s] UDP is not supported", proxyAdapter)
+ }
+
+ packetConn, err := proxyAdapter.ListenPacketContext(ctx, metadata, opts...)
+ if err != nil {
+ logMetadataErr(metadata, rule, proxyAdapter, err)
+ return nil, err
+ }
+ logMetadata(metadata, rule, packetConn)
+
+ packetConn = statistic.NewUDPTracker(packetConn, statistic.DefaultManager, metadata, rule, 0, 0, false)
+
+ return N.NewBindPacketConn(packetConn, metadata.UDPAddr()), nil
+ }
+
+}
+
+func (d *DNSDialer) ListenPacket(ctx context.Context, network, addr string) (net.PacketConn, error) {
+ r := d.r
+ proxyAdapter := d.proxyAdapter
+ proxyName := d.proxyName
+ opts := d.opts
+ metadata := &C.Metadata{
+ NetWork: C.UDP,
+ Type: C.INNER,
+ }
+ err := metadata.SetRemoteAddress(addr)
+ if err != nil {
+ return nil, err
+ }
+ if !metadata.Resolved() {
+ // udp must resolve host first
+ dstIP, err := resolver.ResolveIPWithResolver(ctx, metadata.Host, r)
+ if err != nil {
+ return nil, err
+ }
+ metadata.DstIP = dstIP
+ }
+
+ var rule C.Rule
+ if proxyAdapter == nil {
+ if proxyName == DnsRespectRules {
+ proxyAdapter, rule, err = resolveMetadata(metadata)
+ if err != nil {
+ return nil, err
+ }
+ } else {
+ var ok bool
+ proxyAdapter, ok = Proxies()[proxyName]
+ if !ok {
+ opts = append(opts, dialer.WithInterface(proxyName))
+ }
+ }
+ }
+
+ if proxyAdapter == nil {
+ return dialer.NewDialer(opts...).ListenPacket(ctx, network, "", metadata.AddrPort())
+ }
+
+ if !proxyAdapter.SupportUDP() {
+ return nil, fmt.Errorf("proxy adapter [%s] UDP is not supported", proxyAdapter)
+ }
+
+ packetConn, err := proxyAdapter.ListenPacketContext(ctx, metadata, opts...)
+ if err != nil {
+ logMetadataErr(metadata, rule, proxyAdapter, err)
+ return nil, err
+ }
+ logMetadata(metadata, rule, packetConn)
+
+ packetConn = statistic.NewUDPTracker(packetConn, statistic.DefaultManager, metadata, rule, 0, 0, false)
+
+ return packetConn, nil
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/mode.go b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/mode.go
new file mode 100644
index 0000000..dd89c3a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/mode.go
@@ -0,0 +1,84 @@
+package tunnel
+
+import (
+ "encoding/json"
+ "errors"
+ "strings"
+)
+
+type TunnelMode int
+
+// ModeMapping is a mapping for Mode enum
+var ModeMapping = map[string]TunnelMode{
+ Global.String(): Global,
+ Rule.String(): Rule,
+ Direct.String(): Direct,
+}
+
+const (
+ Global TunnelMode = iota
+ Rule
+ Direct
+)
+
+// UnmarshalYAML unserialize Mode with yaml
+func (m *TunnelMode) UnmarshalYAML(unmarshal func(any) error) error {
+ var tp string
+ unmarshal(&tp)
+ mode, exist := ModeMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *m = mode
+ return nil
+}
+
+// UnmarshalJSON unserialize Mode
+func (m *TunnelMode) UnmarshalJSON(data []byte) error {
+ var tp string
+ json.Unmarshal(data, &tp)
+ mode, exist := ModeMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *m = mode
+ return nil
+}
+
+// UnmarshalText unserialize Mode
+func (m *TunnelMode) UnmarshalText(data []byte) error {
+ mode, exist := ModeMapping[strings.ToLower(string(data))]
+ if !exist {
+ return errors.New("invalid mode")
+ }
+ *m = mode
+ return nil
+}
+
+// MarshalYAML serialize TunnelMode with yaml
+func (m TunnelMode) MarshalYAML() (any, error) {
+ return m.String(), nil
+}
+
+// MarshalJSON serialize Mode
+func (m TunnelMode) MarshalJSON() ([]byte, error) {
+ return json.Marshal(m.String())
+}
+
+// MarshalText serialize Mode
+func (m TunnelMode) MarshalText() ([]byte, error) {
+ return []byte(m.String()), nil
+}
+
+func (m TunnelMode) String() string {
+ switch m {
+ case Global:
+ return "global"
+ case Rule:
+ return "rule"
+ case Direct:
+ return "direct"
+ default:
+ return "Unknown"
+ }
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/statistic/manager.go b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/statistic/manager.go
new file mode 100644
index 0000000..0b30929
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/statistic/manager.go
@@ -0,0 +1,127 @@
+package statistic
+
+import (
+ "os"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+
+ "github.com/puzpuzpuz/xsync/v3"
+ "github.com/shirou/gopsutil/v3/process"
+)
+
+var DefaultManager *Manager
+
+func init() {
+ DefaultManager = &Manager{
+ connections: xsync.NewMapOf[string, Tracker](),
+ uploadTemp: atomic.NewInt64(0),
+ downloadTemp: atomic.NewInt64(0),
+ uploadBlip: atomic.NewInt64(0),
+ downloadBlip: atomic.NewInt64(0),
+ uploadTotal: atomic.NewInt64(0),
+ downloadTotal: atomic.NewInt64(0),
+ process: &process.Process{Pid: int32(os.Getpid())},
+ }
+
+ go DefaultManager.handle()
+}
+
+type Manager struct {
+ connections *xsync.MapOf[string, Tracker]
+ uploadTemp atomic.Int64
+ downloadTemp atomic.Int64
+ uploadBlip atomic.Int64
+ downloadBlip atomic.Int64
+ uploadTotal atomic.Int64
+ downloadTotal atomic.Int64
+ process *process.Process
+ memory uint64
+}
+
+func (m *Manager) Join(c Tracker) {
+ m.connections.Store(c.ID(), c)
+}
+
+func (m *Manager) Leave(c Tracker) {
+ m.connections.Delete(c.ID())
+}
+
+func (m *Manager) Get(id string) (c Tracker) {
+ if value, ok := m.connections.Load(id); ok {
+ c = value
+ }
+ return
+}
+
+func (m *Manager) Range(f func(c Tracker) bool) {
+ m.connections.Range(func(key string, value Tracker) bool {
+ return f(value)
+ })
+}
+
+func (m *Manager) PushUploaded(size int64) {
+ m.uploadTemp.Add(size)
+ m.uploadTotal.Add(size)
+}
+
+func (m *Manager) PushDownloaded(size int64) {
+ m.downloadTemp.Add(size)
+ m.downloadTotal.Add(size)
+}
+
+func (m *Manager) Now() (up int64, down int64) {
+ return m.uploadBlip.Load(), m.downloadBlip.Load()
+}
+
+func (m *Manager) Memory() uint64 {
+ m.updateMemory()
+ return m.memory
+}
+
+func (m *Manager) Snapshot() *Snapshot {
+ var connections []*TrackerInfo
+ m.Range(func(c Tracker) bool {
+ connections = append(connections, c.Info())
+ return true
+ })
+ return &Snapshot{
+ UploadTotal: m.uploadTotal.Load(),
+ DownloadTotal: m.downloadTotal.Load(),
+ Connections: connections,
+ Memory: m.memory,
+ }
+}
+
+func (m *Manager) updateMemory() {
+ stat, err := m.process.MemoryInfo()
+ if err != nil {
+ return
+ }
+ m.memory = stat.RSS
+}
+
+func (m *Manager) ResetStatistic() {
+ m.uploadTemp.Store(0)
+ m.uploadBlip.Store(0)
+ m.uploadTotal.Store(0)
+ m.downloadTemp.Store(0)
+ m.downloadBlip.Store(0)
+ m.downloadTotal.Store(0)
+}
+
+func (m *Manager) handle() {
+ ticker := time.NewTicker(time.Second)
+
+ for range ticker.C {
+ m.uploadBlip.Store(m.uploadTemp.Swap(0))
+ m.downloadBlip.Store(m.downloadTemp.Swap(0))
+ }
+}
+
+type Snapshot struct {
+ DownloadTotal int64 `json:"downloadTotal"`
+ UploadTotal int64 `json:"uploadTotal"`
+ Connections []*TrackerInfo `json:"connections"`
+ Memory uint64 `json:"memory"`
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/statistic/patch_android.go b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/statistic/patch_android.go
new file mode 100644
index 0000000..f1eee34
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/statistic/patch_android.go
@@ -0,0 +1,7 @@
+//go:build android && cmfa
+
+package statistic
+
+func (m *Manager) Total() (up, down int64) {
+ return m.uploadTotal.Load(), m.downloadTotal.Load()
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/statistic/tracker.go b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/statistic/tracker.go
new file mode 100644
index 0000000..0bf7995
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/statistic/tracker.go
@@ -0,0 +1,261 @@
+package statistic
+
+import (
+ "io"
+ "net"
+ "net/netip"
+ "time"
+
+ "github.com/metacubex/mihomo/common/atomic"
+ "github.com/metacubex/mihomo/common/buf"
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ C "github.com/metacubex/mihomo/constant"
+
+ "github.com/gofrs/uuid/v5"
+)
+
+type Tracker interface {
+ ID() string
+ Close() error
+ Info() *TrackerInfo
+ C.Connection
+}
+
+type TrackerInfo struct {
+ UUID uuid.UUID `json:"id"`
+ Metadata *C.Metadata `json:"metadata"`
+ UploadTotal atomic.Int64 `json:"upload"`
+ DownloadTotal atomic.Int64 `json:"download"`
+ Start time.Time `json:"start"`
+ Chain C.Chain `json:"chains"`
+ Rule string `json:"rule"`
+ RulePayload string `json:"rulePayload"`
+}
+
+type tcpTracker struct {
+ C.Conn `json:"-"`
+ *TrackerInfo
+ manager *Manager
+
+ pushToManager bool `json:"-"`
+}
+
+func (tt *tcpTracker) ID() string {
+ return tt.UUID.String()
+}
+
+func (tt *tcpTracker) Info() *TrackerInfo {
+ return tt.TrackerInfo
+}
+
+func (tt *tcpTracker) Read(b []byte) (int, error) {
+ n, err := tt.Conn.Read(b)
+ download := int64(n)
+ if tt.pushToManager {
+ tt.manager.PushDownloaded(download)
+ }
+ tt.DownloadTotal.Add(download)
+ return n, err
+}
+
+func (tt *tcpTracker) ReadBuffer(buffer *buf.Buffer) (err error) {
+ err = tt.Conn.ReadBuffer(buffer)
+ download := int64(buffer.Len())
+ if tt.pushToManager {
+ tt.manager.PushDownloaded(download)
+ }
+ tt.DownloadTotal.Add(download)
+ return
+}
+
+func (tt *tcpTracker) UnwrapReader() (io.Reader, []N.CountFunc) {
+ return tt.Conn, []N.CountFunc{func(download int64) {
+ if tt.pushToManager {
+ tt.manager.PushDownloaded(download)
+ }
+ tt.DownloadTotal.Add(download)
+ }}
+}
+
+func (tt *tcpTracker) Write(b []byte) (int, error) {
+ n, err := tt.Conn.Write(b)
+ upload := int64(n)
+ if tt.pushToManager {
+ tt.manager.PushUploaded(upload)
+ }
+ tt.UploadTotal.Add(upload)
+ return n, err
+}
+
+func (tt *tcpTracker) WriteBuffer(buffer *buf.Buffer) (err error) {
+ upload := int64(buffer.Len())
+ err = tt.Conn.WriteBuffer(buffer)
+ if tt.pushToManager {
+ tt.manager.PushUploaded(upload)
+ }
+ tt.UploadTotal.Add(upload)
+ return
+}
+
+func (tt *tcpTracker) UnwrapWriter() (io.Writer, []N.CountFunc) {
+ return tt.Conn, []N.CountFunc{func(upload int64) {
+ if tt.pushToManager {
+ tt.manager.PushUploaded(upload)
+ }
+ tt.UploadTotal.Add(upload)
+ }}
+}
+
+func (tt *tcpTracker) Close() error {
+ tt.manager.Leave(tt)
+ return tt.Conn.Close()
+}
+
+func (tt *tcpTracker) Upstream() any {
+ return tt.Conn
+}
+
+func parseRemoteDestination(addr net.Addr, conn C.Connection) string {
+ if addr == nil && conn != nil {
+ return conn.RemoteDestination()
+ }
+ if addrPort, err := netip.ParseAddrPort(addr.String()); err == nil && addrPort.Addr().IsValid() {
+ return addrPort.Addr().String()
+ } else {
+ if conn != nil {
+ return conn.RemoteDestination()
+ } else {
+ return ""
+ }
+ }
+}
+
+func NewTCPTracker(conn C.Conn, manager *Manager, metadata *C.Metadata, rule C.Rule, uploadTotal int64, downloadTotal int64, pushToManager bool) *tcpTracker {
+ if conn != nil {
+ metadata.RemoteDst = parseRemoteDestination(conn.RemoteAddr(), conn)
+ }
+
+ t := &tcpTracker{
+ Conn: conn,
+ manager: manager,
+ TrackerInfo: &TrackerInfo{
+ UUID: utils.NewUUIDV4(),
+ Start: time.Now(),
+ Metadata: metadata,
+ Chain: conn.Chains(),
+ Rule: "",
+ UploadTotal: atomic.NewInt64(uploadTotal),
+ DownloadTotal: atomic.NewInt64(downloadTotal),
+ },
+ pushToManager: pushToManager,
+ }
+
+ if pushToManager {
+ if uploadTotal > 0 {
+ manager.PushUploaded(uploadTotal)
+ }
+ if downloadTotal > 0 {
+ manager.PushDownloaded(downloadTotal)
+ }
+ }
+
+ if rule != nil {
+ t.TrackerInfo.Rule = rule.RuleType().String()
+ t.TrackerInfo.RulePayload = rule.Payload()
+ }
+
+ manager.Join(t)
+ return t
+}
+
+type udpTracker struct {
+ C.PacketConn `json:"-"`
+ *TrackerInfo
+ manager *Manager
+
+ pushToManager bool `json:"-"`
+}
+
+func (ut *udpTracker) ID() string {
+ return ut.UUID.String()
+}
+
+func (ut *udpTracker) Info() *TrackerInfo {
+ return ut.TrackerInfo
+}
+
+func (ut *udpTracker) ReadFrom(b []byte) (int, net.Addr, error) {
+ n, addr, err := ut.PacketConn.ReadFrom(b)
+ download := int64(n)
+ if ut.pushToManager {
+ ut.manager.PushDownloaded(download)
+ }
+ ut.DownloadTotal.Add(download)
+ return n, addr, err
+}
+
+func (ut *udpTracker) WaitReadFrom() (data []byte, put func(), addr net.Addr, err error) {
+ data, put, addr, err = ut.PacketConn.WaitReadFrom()
+ download := int64(len(data))
+ if ut.pushToManager {
+ ut.manager.PushDownloaded(download)
+ }
+ ut.DownloadTotal.Add(download)
+ return
+}
+
+func (ut *udpTracker) WriteTo(b []byte, addr net.Addr) (int, error) {
+ n, err := ut.PacketConn.WriteTo(b, addr)
+ upload := int64(n)
+ if ut.pushToManager {
+ ut.manager.PushUploaded(upload)
+ }
+ ut.UploadTotal.Add(upload)
+ return n, err
+}
+
+func (ut *udpTracker) Close() error {
+ ut.manager.Leave(ut)
+ return ut.PacketConn.Close()
+}
+
+func (ut *udpTracker) Upstream() any {
+ return ut.PacketConn
+}
+
+func NewUDPTracker(conn C.PacketConn, manager *Manager, metadata *C.Metadata, rule C.Rule, uploadTotal int64, downloadTotal int64, pushToManager bool) *udpTracker {
+ metadata.RemoteDst = parseRemoteDestination(nil, conn)
+
+ ut := &udpTracker{
+ PacketConn: conn,
+ manager: manager,
+ TrackerInfo: &TrackerInfo{
+ UUID: utils.NewUUIDV4(),
+ Start: time.Now(),
+ Metadata: metadata,
+ Chain: conn.Chains(),
+ Rule: "",
+ UploadTotal: atomic.NewInt64(uploadTotal),
+ DownloadTotal: atomic.NewInt64(downloadTotal),
+ },
+ pushToManager: pushToManager,
+ }
+
+ if pushToManager {
+ if uploadTotal > 0 {
+ manager.PushUploaded(uploadTotal)
+ }
+ if downloadTotal > 0 {
+ manager.PushDownloaded(downloadTotal)
+ }
+ }
+
+ if rule != nil {
+ ut.TrackerInfo.Rule = rule.RuleType().String()
+ ut.TrackerInfo.RulePayload = rule.Payload()
+ }
+
+ manager.Join(ut)
+ return ut
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/status.go b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/status.go
new file mode 100644
index 0000000..388d597
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/status.go
@@ -0,0 +1,107 @@
+package tunnel
+
+import (
+ "encoding/json"
+ "errors"
+ "strings"
+ "sync/atomic"
+)
+
+type TunnelStatus int
+
+// StatusMapping is a mapping for Status enum
+var StatusMapping = map[string]TunnelStatus{
+ Suspend.String(): Suspend,
+ Inner.String(): Inner,
+ Running.String(): Running,
+}
+
+const (
+ Suspend TunnelStatus = iota
+ Inner
+ Running
+)
+
+// UnmarshalYAML unserialize Status with yaml
+func (s *TunnelStatus) UnmarshalYAML(unmarshal func(any) error) error {
+ var tp string
+ unmarshal(&tp)
+ status, exist := StatusMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid status")
+ }
+ *s = status
+ return nil
+}
+
+// UnmarshalJSON unserialize Status
+func (s *TunnelStatus) UnmarshalJSON(data []byte) error {
+ var tp string
+ json.Unmarshal(data, &tp)
+ status, exist := StatusMapping[strings.ToLower(tp)]
+ if !exist {
+ return errors.New("invalid status")
+ }
+ *s = status
+ return nil
+}
+
+// UnmarshalText unserialize Status
+func (s *TunnelStatus) UnmarshalText(data []byte) error {
+ status, exist := StatusMapping[strings.ToLower(string(data))]
+ if !exist {
+ return errors.New("invalid status")
+ }
+ *s = status
+ return nil
+}
+
+// MarshalYAML serialize TunnelMode with yaml
+func (s TunnelStatus) MarshalYAML() (any, error) {
+ return s.String(), nil
+}
+
+// MarshalJSON serialize Status
+func (s TunnelStatus) MarshalJSON() ([]byte, error) {
+ return json.Marshal(s.String())
+}
+
+// MarshalText serialize Status
+func (s TunnelStatus) MarshalText() ([]byte, error) {
+ return []byte(s.String()), nil
+}
+
+func (s TunnelStatus) String() string {
+ switch s {
+ case Suspend:
+ return "suspend"
+ case Inner:
+ return "inner"
+ case Running:
+ return "running"
+ default:
+ return "Unknown"
+ }
+}
+
+type AtomicStatus struct {
+ value atomic.Int32
+}
+
+func (a *AtomicStatus) Store(s TunnelStatus) {
+ a.value.Store(int32(s))
+}
+
+func (a *AtomicStatus) Load() TunnelStatus {
+ return TunnelStatus(a.value.Load())
+}
+
+func (a *AtomicStatus) String() string {
+ return a.Load().String()
+}
+
+func newAtomicStatus(s TunnelStatus) *AtomicStatus {
+ a := &AtomicStatus{}
+ a.Store(s)
+ return a
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/tunnel.go b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/tunnel.go
new file mode 100644
index 0000000..b1b4add
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/clash/tunnel/tunnel.go
@@ -0,0 +1,727 @@
+package tunnel
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "net"
+ "net/netip"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "sync"
+ "time"
+
+ N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/component/loopback"
+ "github.com/metacubex/mihomo/component/nat"
+ P "github.com/metacubex/mihomo/component/process"
+ "github.com/metacubex/mihomo/component/resolver"
+ "github.com/metacubex/mihomo/component/slowdown"
+ "github.com/metacubex/mihomo/component/sniffer"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/features"
+ "github.com/metacubex/mihomo/constant/provider"
+ icontext "github.com/metacubex/mihomo/context"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/tunnel/statistic"
+)
+
+const (
+ queueCapacity = 64 // chan capacity tcpQueue and udpQueue
+ senderCapacity = 128 // chan capacity of PacketSender
+)
+
+var (
+ status = newAtomicStatus(Suspend)
+ udpInit sync.Once
+ udpQueues []chan C.PacketAdapter
+ natTable = nat.New()
+ rules []C.Rule
+ listeners = make(map[string]C.InboundListener)
+ subRules map[string][]C.Rule
+ proxies = make(map[string]C.Proxy)
+ providers map[string]provider.ProxyProvider
+ ruleProviders map[string]provider.RuleProvider
+ configMux sync.RWMutex
+
+ // for compatibility, lazy init
+ tcpQueue chan C.ConnContext
+ tcpInOnce sync.Once
+ udpQueue chan C.PacketAdapter
+ udpInOnce sync.Once
+
+ // Outbound Rule
+ mode = Rule
+
+ // default timeout for UDP session
+ udpTimeout = 60 * time.Second
+
+ findProcessMode P.FindProcessMode
+
+ fakeIPRange netip.Prefix
+
+ snifferDispatcher *sniffer.Dispatcher
+ sniffingEnable = false
+
+ ruleUpdateCallback = utils.NewCallback[provider.RuleProvider]()
+)
+
+type tunnel struct{}
+
+var Tunnel = tunnel{}
+var _ C.Tunnel = Tunnel
+var _ provider.Tunnel = Tunnel
+
+func (t tunnel) HandleTCPConn(conn net.Conn, metadata *C.Metadata) {
+ connCtx := icontext.NewConnContext(conn, metadata)
+ handleTCPConn(connCtx)
+}
+
+func initUDP() {
+ numUDPWorkers := 4
+ if num := runtime.GOMAXPROCS(0); num > numUDPWorkers {
+ numUDPWorkers = num
+ }
+
+ udpQueues = make([]chan C.PacketAdapter, numUDPWorkers)
+ for i := 0; i < numUDPWorkers; i++ {
+ queue := make(chan C.PacketAdapter, queueCapacity)
+ udpQueues[i] = queue
+ go processUDP(queue)
+ }
+}
+
+func (t tunnel) HandleUDPPacket(packet C.UDPPacket, metadata *C.Metadata) {
+ udpInit.Do(initUDP)
+
+ packetAdapter := C.NewPacketAdapter(packet, metadata)
+ key := packetAdapter.Key()
+
+ hash := utils.MapHash(key)
+ queueNo := uint(hash) % uint(len(udpQueues))
+
+ select {
+ case udpQueues[queueNo] <- packetAdapter:
+ default:
+ packet.Drop()
+ }
+}
+
+func (t tunnel) NatTable() C.NatTable {
+ return natTable
+}
+
+func (t tunnel) Providers() map[string]provider.ProxyProvider {
+ return providers
+}
+
+func (t tunnel) RuleProviders() map[string]provider.RuleProvider {
+ return ruleProviders
+}
+
+func (t tunnel) RuleUpdateCallback() *utils.Callback[provider.RuleProvider] {
+ return ruleUpdateCallback
+}
+
+func OnSuspend() {
+ status.Store(Suspend)
+}
+
+func OnInnerLoading() {
+ status.Store(Inner)
+}
+
+func OnRunning() {
+ status.Store(Running)
+}
+
+func Status() TunnelStatus {
+ return status.Load()
+}
+
+func SetFakeIPRange(p netip.Prefix) {
+ fakeIPRange = p
+}
+
+func FakeIPRange() netip.Prefix {
+ return fakeIPRange
+}
+
+func SetSniffing(b bool) {
+ if snifferDispatcher.Enable() {
+ configMux.Lock()
+ sniffingEnable = b
+ configMux.Unlock()
+ }
+}
+
+func IsSniffing() bool {
+ return sniffingEnable
+}
+
+// TCPIn return fan-in queue
+// Deprecated: using Tunnel instead
+func TCPIn() chan<- C.ConnContext {
+ tcpInOnce.Do(func() {
+ tcpQueue = make(chan C.ConnContext, queueCapacity)
+ go func() {
+ for connCtx := range tcpQueue {
+ go handleTCPConn(connCtx)
+ }
+ }()
+ })
+ return tcpQueue
+}
+
+// UDPIn return fan-in udp queue
+// Deprecated: using Tunnel instead
+func UDPIn() chan<- C.PacketAdapter {
+ udpInOnce.Do(func() {
+ udpQueue = make(chan C.PacketAdapter, queueCapacity)
+ go func() {
+ for packet := range udpQueue {
+ Tunnel.HandleUDPPacket(packet, packet.Metadata())
+ }
+ }()
+ })
+ return udpQueue
+}
+
+// NatTable return nat table
+func NatTable() C.NatTable {
+ return natTable
+}
+
+// Rules return all rules
+func Rules() []C.Rule {
+ return rules
+}
+
+func Listeners() map[string]C.InboundListener {
+ return listeners
+}
+
+// UpdateRules handle update rules
+func UpdateRules(newRules []C.Rule, newSubRule map[string][]C.Rule, rp map[string]provider.RuleProvider) {
+ configMux.Lock()
+ rules = newRules
+ ruleProviders = rp
+ subRules = newSubRule
+ configMux.Unlock()
+}
+
+// Proxies return all proxies
+func Proxies() map[string]C.Proxy {
+ return proxies
+}
+
+func ProxiesWithProviders() map[string]C.Proxy {
+ allProxies := make(map[string]C.Proxy)
+ for name, proxy := range proxies {
+ allProxies[name] = proxy
+ }
+ for _, p := range providers {
+ for _, proxy := range p.Proxies() {
+ name := proxy.Name()
+ allProxies[name] = proxy
+ }
+ }
+ return allProxies
+}
+
+// Providers return all compatible providers
+func Providers() map[string]provider.ProxyProvider {
+ return providers
+}
+
+// RuleProviders return all loaded rule providers
+func RuleProviders() map[string]provider.RuleProvider {
+ return ruleProviders
+}
+
+// UpdateProxies handle update proxies
+func UpdateProxies(newProxies map[string]C.Proxy, newProviders map[string]provider.ProxyProvider) {
+ configMux.Lock()
+ proxies = newProxies
+ providers = newProviders
+ configMux.Unlock()
+}
+
+func UpdateListeners(newListeners map[string]C.InboundListener) {
+ configMux.Lock()
+ defer configMux.Unlock()
+ listeners = newListeners
+}
+
+func UpdateSniffer(dispatcher *sniffer.Dispatcher) {
+ configMux.Lock()
+ snifferDispatcher = dispatcher
+ sniffingEnable = dispatcher.Enable()
+ configMux.Unlock()
+}
+
+// Mode return current mode
+func Mode() TunnelMode {
+ return mode
+}
+
+// SetMode change the mode of tunnel
+func SetMode(m TunnelMode) {
+ mode = m
+}
+
+func FindProcessMode() P.FindProcessMode {
+ return findProcessMode
+}
+
+// SetFindProcessMode replace SetAlwaysFindProcess
+// always find process info if legacyAlways = true or mode.Always() = true, may be increase many memory
+func SetFindProcessMode(mode P.FindProcessMode) {
+ findProcessMode = mode
+}
+
+func isHandle(t C.Type) bool {
+ status := status.Load()
+ return status == Running || (status == Inner && t == C.INNER)
+}
+
+func needLookupIP(metadata *C.Metadata) bool {
+ return resolver.MappingEnabled() && metadata.Host == "" && metadata.DstIP.IsValid()
+}
+
+func preHandleMetadata(metadata *C.Metadata) error {
+ // handle IP string on host
+ if ip, err := netip.ParseAddr(metadata.Host); err == nil {
+ metadata.DstIP = ip
+ metadata.Host = ""
+ }
+
+ // preprocess enhanced-mode metadata
+ if needLookupIP(metadata) {
+ host, exist := resolver.FindHostByIP(metadata.DstIP)
+ if exist {
+ metadata.Host = host
+ metadata.DNSMode = C.DNSMapping
+ if resolver.FakeIPEnabled() {
+ metadata.DstIP = netip.Addr{}
+ metadata.DNSMode = C.DNSFakeIP
+ } else if node, ok := resolver.DefaultHosts.Search(host, false); ok {
+ // redir-host should lookup the hosts
+ metadata.DstIP, _ = node.RandIP()
+ } else if node != nil && node.IsDomain {
+ metadata.Host = node.Domain
+ }
+ } else if resolver.IsFakeIP(metadata.DstIP) {
+ return fmt.Errorf("fake DNS record %s missing", metadata.DstIP)
+ }
+ } else if node, ok := resolver.DefaultHosts.Search(metadata.Host, true); ok {
+ // try use domain mapping
+ metadata.Host = node.Domain
+ }
+
+ return nil
+}
+
+func resolveMetadata(metadata *C.Metadata) (proxy C.Proxy, rule C.Rule, err error) {
+ if metadata.SpecialProxy != "" {
+ var exist bool
+ proxy, exist = proxies[metadata.SpecialProxy]
+ if !exist {
+ err = fmt.Errorf("proxy %s not found", metadata.SpecialProxy)
+ }
+ return
+ }
+
+ switch mode {
+ case Direct:
+ proxy = proxies["DIRECT"]
+ case Global:
+ proxy = proxies["GLOBAL"]
+ // Rule
+ default:
+ proxy, rule, err = match(metadata)
+ }
+ return
+}
+
+// processUDP starts a loop to handle udp packet
+func processUDP(queue chan C.PacketAdapter) {
+ for conn := range queue {
+ handleUDPConn(conn)
+ }
+}
+
+func handleUDPConn(packet C.PacketAdapter) {
+ if !isHandle(packet.Metadata().Type) {
+ packet.Drop()
+ return
+ }
+
+ metadata := packet.Metadata()
+ if !metadata.Valid() {
+ packet.Drop()
+ log.Warnln("[Metadata] not valid: %#v", metadata)
+ return
+ }
+
+ // make a fAddr if request ip is fakeip
+ var fAddr netip.Addr
+ if resolver.IsExistFakeIP(metadata.DstIP) {
+ fAddr = metadata.DstIP
+ }
+
+ if err := preHandleMetadata(metadata); err != nil {
+ packet.Drop()
+ log.Debugln("[Metadata PreHandle] error: %s", err)
+ return
+ }
+
+ if sniffingEnable && snifferDispatcher.Enable() {
+ snifferDispatcher.UDPSniff(packet)
+ }
+
+ key := packet.Key()
+ sender, loaded := natTable.GetOrCreate(key, newPacketSender)
+ if !loaded {
+ dial := func() (C.PacketConn, C.WriteBackProxy, error) {
+ if err := sender.ResolveUDP(metadata); err != nil {
+ log.Warnln("[UDP] Resolve Ip error: %s", err)
+ return nil, nil, err
+ }
+
+ proxy, rule, err := resolveMetadata(metadata)
+ if err != nil {
+ log.Warnln("[UDP] Parse metadata failed: %s", err.Error())
+ return nil, nil, err
+ }
+
+ ctx, cancel := context.WithTimeout(context.Background(), C.DefaultUDPTimeout)
+ defer cancel()
+ rawPc, err := retry(ctx, func(ctx context.Context) (C.PacketConn, error) {
+ return proxy.ListenPacketContext(ctx, metadata.Pure())
+ }, func(err error) {
+ logMetadataErr(metadata, rule, proxy, err)
+ })
+ if err != nil {
+ return nil, nil, err
+ }
+ logMetadata(metadata, rule, rawPc)
+
+ pc := statistic.NewUDPTracker(rawPc, statistic.DefaultManager, metadata, rule, 0, 0, true)
+
+ if rawPc.Chains().Last() == "REJECT-DROP" {
+ _ = pc.Close()
+ return nil, nil, errors.New("rejected drop packet")
+ }
+
+ oAddrPort := metadata.AddrPort()
+ writeBackProxy := nat.NewWriteBackProxy(packet)
+
+ go handleUDPToLocal(writeBackProxy, pc, sender, key, oAddrPort, fAddr)
+ return pc, writeBackProxy, nil
+ }
+
+ go func() {
+ pc, proxy, err := dial()
+ if err != nil {
+ sender.Close()
+ natTable.Delete(key)
+ return
+ }
+ sender.Process(pc, proxy)
+ }()
+ }
+ sender.Send(packet) // nonblocking
+}
+
+func handleTCPConn(connCtx C.ConnContext) {
+ if !isHandle(connCtx.Metadata().Type) {
+ _ = connCtx.Conn().Close()
+ return
+ }
+
+ defer func(conn net.Conn) {
+ _ = conn.Close()
+ }(connCtx.Conn())
+
+ metadata := connCtx.Metadata()
+ if !metadata.Valid() {
+ log.Warnln("[Metadata] not valid: %#v", metadata)
+ return
+ }
+
+ preHandleFailed := false
+ if err := preHandleMetadata(metadata); err != nil {
+ log.Debugln("[Metadata PreHandle] error: %s", err)
+ preHandleFailed = true
+ }
+
+ conn := connCtx.Conn()
+ conn.ResetPeeked() // reset before sniffer
+ if sniffingEnable && snifferDispatcher.Enable() {
+ // Try to sniff a domain when `preHandleMetadata` failed, this is usually
+ // caused by a "Fake DNS record missing" error when enhanced-mode is fake-ip.
+ if snifferDispatcher.TCPSniff(conn, metadata) {
+ // we now have a domain name
+ preHandleFailed = false
+ }
+ }
+
+ // If both trials have failed, we can do nothing but give up
+ if preHandleFailed {
+ log.Debugln("[Metadata PreHandle] failed to sniff a domain for connection %s --> %s, give up",
+ metadata.SourceDetail(), metadata.RemoteAddress())
+ return
+ }
+
+ peekMutex := sync.Mutex{}
+ if !conn.Peeked() {
+ peekMutex.Lock()
+ go func() {
+ defer peekMutex.Unlock()
+ _ = conn.SetReadDeadline(time.Now().Add(200 * time.Millisecond))
+ _, _ = conn.Peek(1)
+ _ = conn.SetReadDeadline(time.Time{})
+ }()
+ }
+
+ proxy, rule, err := resolveMetadata(metadata)
+ if err != nil {
+ log.Warnln("[Metadata] parse failed: %s", err.Error())
+ return
+ }
+
+ dialMetadata := metadata
+ if len(metadata.Host) > 0 {
+ if node, ok := resolver.DefaultHosts.Search(metadata.Host, false); ok {
+ if dstIp, _ := node.RandIP(); !FakeIPRange().Contains(dstIp) {
+ dialMetadata.DstIP = dstIp
+ dialMetadata.DNSMode = C.DNSHosts
+ dialMetadata = dialMetadata.Pure()
+ }
+ }
+ }
+
+ var peekBytes []byte
+ var peekLen int
+
+ ctx, cancel := context.WithTimeout(context.Background(), C.DefaultTCPTimeout)
+ defer cancel()
+ remoteConn, err := retry(ctx, func(ctx context.Context) (remoteConn C.Conn, err error) {
+ remoteConn, err = proxy.DialContext(ctx, dialMetadata)
+ if err != nil {
+ return
+ }
+
+ if N.NeedHandshake(remoteConn) {
+ defer func() {
+ for _, chain := range remoteConn.Chains() {
+ if chain == "REJECT" {
+ err = nil
+ return
+ }
+ }
+ if err != nil {
+ remoteConn = nil
+ }
+ }()
+ peekMutex.Lock()
+ defer peekMutex.Unlock()
+ peekBytes, _ = conn.Peek(conn.Buffered())
+ _, err = remoteConn.Write(peekBytes)
+ if err != nil {
+ return
+ }
+ if peekLen = len(peekBytes); peekLen > 0 {
+ _, _ = conn.Discard(peekLen)
+ }
+ }
+ return
+ }, func(err error) {
+ logMetadataErr(metadata, rule, proxy, err)
+ })
+ if err != nil {
+ return
+ }
+ logMetadata(metadata, rule, remoteConn)
+
+ remoteConn = statistic.NewTCPTracker(remoteConn, statistic.DefaultManager, metadata, rule, 0, int64(peekLen), true)
+ defer func(remoteConn C.Conn) {
+ _ = remoteConn.Close()
+ }(remoteConn)
+
+ _ = conn.SetReadDeadline(time.Now()) // stop unfinished peek
+ peekMutex.Lock()
+ defer peekMutex.Unlock()
+ _ = conn.SetReadDeadline(time.Time{}) // reset
+ handleSocket(conn, remoteConn)
+}
+
+func logMetadataErr(metadata *C.Metadata, rule C.Rule, proxy C.ProxyAdapter, err error) {
+ if rule == nil {
+ log.Warnln("[%s] dial %s %s --> %s error: %s", strings.ToUpper(metadata.NetWork.String()), proxy.Name(), metadata.SourceDetail(), metadata.RemoteAddress(), err.Error())
+ } else {
+ log.Warnln("[%s] dial %s (match %s/%s) %s --> %s error: %s", strings.ToUpper(metadata.NetWork.String()), proxy.Name(), rule.RuleType().String(), rule.Payload(), metadata.SourceDetail(), metadata.RemoteAddress(), err.Error())
+ }
+}
+
+func logMetadata(metadata *C.Metadata, rule C.Rule, remoteConn C.Connection) {
+ switch {
+ case metadata.SpecialProxy != "":
+ log.Infoln("[%s] %s --> %s using %s", strings.ToUpper(metadata.NetWork.String()), metadata.SourceDetail(), metadata.RemoteAddress(), metadata.SpecialProxy)
+ case rule != nil:
+ if rule.Payload() != "" {
+ log.Infoln("[%s] %s --> %s match %s using %s", strings.ToUpper(metadata.NetWork.String()), metadata.SourceDetail(), metadata.RemoteAddress(), fmt.Sprintf("%s(%s)", rule.RuleType().String(), rule.Payload()), remoteConn.Chains().String())
+ } else {
+ log.Infoln("[%s] %s --> %s match %s using %s", strings.ToUpper(metadata.NetWork.String()), metadata.SourceDetail(), metadata.RemoteAddress(), rule.RuleType().String(), remoteConn.Chains().String())
+ }
+ case mode == Global:
+ log.Infoln("[%s] %s --> %s using GLOBAL", strings.ToUpper(metadata.NetWork.String()), metadata.SourceDetail(), metadata.RemoteAddress())
+ case mode == Direct:
+ log.Infoln("[%s] %s --> %s using DIRECT", strings.ToUpper(metadata.NetWork.String()), metadata.SourceDetail(), metadata.RemoteAddress())
+ default:
+ log.Infoln("[%s] %s --> %s doesn't match any rule using %s", strings.ToUpper(metadata.NetWork.String()), metadata.SourceDetail(), metadata.RemoteAddress(), remoteConn.Chains().Last())
+ }
+}
+
+func shouldResolveIP(rule C.Rule, metadata *C.Metadata) bool {
+ return rule.ShouldResolveIP() && metadata.Host != "" && !metadata.DstIP.IsValid()
+}
+
+func match(metadata *C.Metadata) (C.Proxy, C.Rule, error) {
+ configMux.RLock()
+ defer configMux.RUnlock()
+ var (
+ resolved bool
+ attemptProcessLookup = metadata.Type != C.INNER
+ )
+
+ if node, ok := resolver.DefaultHosts.Search(metadata.Host, false); ok {
+ metadata.DstIP, _ = node.RandIP()
+ resolved = true
+ }
+
+ for _, rule := range getRules(metadata) {
+ if !resolved && shouldResolveIP(rule, metadata) {
+ func() {
+ ctx, cancel := context.WithTimeout(context.Background(), resolver.DefaultDNSTimeout)
+ defer cancel()
+ ip, err := resolver.ResolveIP(ctx, metadata.Host)
+ if err != nil {
+ log.Debugln("[DNS] resolve %s error: %s", metadata.Host, err.Error())
+ } else {
+ log.Debugln("[DNS] %s --> %s", metadata.Host, ip.String())
+ metadata.DstIP = ip
+ }
+ resolved = true
+ }()
+ }
+
+ if attemptProcessLookup && !findProcessMode.Off() && (findProcessMode.Always() || rule.ShouldFindProcess()) {
+ attemptProcessLookup = false
+ if !features.CMFA {
+ // normal check for process
+ uid, path, err := P.FindProcessName(metadata.NetWork.String(), metadata.SrcIP, int(metadata.SrcPort))
+ if err != nil {
+ log.Debugln("[Process] find process error for %s: %v", metadata.String(), err)
+ } else {
+ metadata.Process = filepath.Base(path)
+ metadata.ProcessPath = path
+ metadata.Uid = uid
+
+ if pkg, err := P.FindPackageName(metadata); err == nil { // for android (not CMFA) package names
+ metadata.Process = pkg
+ }
+ }
+ } else {
+ // check package names
+ pkg, err := P.FindPackageName(metadata)
+ if err != nil {
+ log.Debugln("[Process] find process error for %s: %v", metadata.String(), err)
+ } else {
+ metadata.Process = pkg
+ }
+ }
+ }
+
+ if matched, ada := rule.Match(metadata); matched {
+ adapter, ok := proxies[ada]
+ if !ok {
+ continue
+ }
+
+ // parse multi-layer nesting
+ passed := false
+ for adapter := adapter; adapter != nil; adapter = adapter.Unwrap(metadata, false) {
+ if adapter.Type() == C.Pass {
+ passed = true
+ break
+ }
+ }
+ if passed {
+ log.Debugln("%s match Pass rule", adapter.Name())
+ continue
+ }
+
+ if metadata.NetWork == C.UDP && !adapter.SupportUDP() {
+ log.Debugln("%s UDP is not supported", adapter.Name())
+ continue
+ }
+
+ return adapter, rule, nil
+ }
+ }
+
+ return proxies["DIRECT"], nil, nil
+}
+
+func getRules(metadata *C.Metadata) []C.Rule {
+ if sr, ok := subRules[metadata.SpecialRules]; ok {
+ log.Debugln("[Rule] use %s rules", metadata.SpecialRules)
+ return sr
+ } else {
+ log.Debugln("[Rule] use default rules")
+ return rules
+ }
+}
+
+func shouldStopRetry(err error) bool {
+ if errors.Is(err, resolver.ErrIPNotFound) {
+ return true
+ }
+ if errors.Is(err, resolver.ErrIPVersion) {
+ return true
+ }
+ if errors.Is(err, resolver.ErrIPv6Disabled) {
+ return true
+ }
+ if errors.Is(err, loopback.ErrReject) {
+ return true
+ }
+ return false
+}
+
+func retry[T any](ctx context.Context, ft func(context.Context) (T, error), fe func(err error)) (t T, err error) {
+ s := slowdown.New()
+ for i := 0; i < 10; i++ {
+ t, err = ft(ctx)
+ if err != nil {
+ if fe != nil {
+ fe(err)
+ }
+ if shouldStopRetry(err) {
+ return
+ }
+ if s.Wait(ctx) == nil {
+ continue
+ } else {
+ return
+ }
+ } else {
+ break
+ }
+ }
+ return
+}
diff --git a/Android-kotlin-Code/core/src/foss/golang/go.mod b/Android-kotlin-Code/core/src/foss/golang/go.mod
new file mode 100644
index 0000000..302c346
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/go.mod
@@ -0,0 +1,118 @@
+module foss
+
+go 1.20
+
+require cfa v0.0.0
+
+require (
+ github.com/3andne/restls-client-go v0.1.6 // indirect
+ github.com/RyuaNerin/go-krypto v1.2.4 // indirect
+ github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344 // indirect
+ github.com/ajg/form v1.5.1 // indirect
+ github.com/andybalholm/brotli v1.0.6 // indirect
+ github.com/bahlo/generic-list-go v0.2.0 // indirect
+ github.com/buger/jsonparser v1.1.1 // indirect
+ github.com/cloudflare/circl v1.3.7 // indirect
+ github.com/coreos/go-iptables v0.8.0 // indirect
+ github.com/dlclark/regexp2 v1.11.4 // indirect
+ github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9 // indirect
+ github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391 // indirect
+ github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1 // indirect
+ github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010 // indirect
+ github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/gaukas/godicttls v0.0.4 // indirect
+ github.com/go-chi/chi/v5 v5.1.0 // indirect
+ github.com/go-chi/render v1.0.3 // indirect
+ github.com/go-ole/go-ole v1.3.0 // indirect
+ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
+ github.com/gobwas/httphead v0.1.0 // indirect
+ github.com/gobwas/pool v0.2.1 // indirect
+ github.com/gobwas/ws v1.4.0 // indirect
+ github.com/gofrs/uuid/v5 v5.3.0 // indirect
+ github.com/google/btree v1.1.2 // indirect
+ github.com/google/go-cmp v0.6.0 // indirect
+ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect
+ github.com/hashicorp/yamux v0.1.1 // indirect
+ github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475 // indirect
+ github.com/josharian/native v1.1.0 // indirect
+ github.com/klauspost/compress v1.17.9 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.8 // indirect
+ github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
+ github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 // indirect
+ github.com/mailru/easyjson v0.7.7 // indirect
+ github.com/mdlayher/netlink v1.7.2 // indirect
+ github.com/mdlayher/socket v0.4.1 // indirect
+ github.com/metacubex/amneziawg-go v0.0.0-20240922133038-fdf3a4d5a4ab // indirect
+ github.com/metacubex/bbolt v0.0.0-20240822011022-aed6d4850399 // indirect
+ github.com/metacubex/chacha v0.1.0 // indirect
+ github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759 // indirect
+ github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec // indirect
+ github.com/metacubex/mihomo v1.7.0 // indirect
+ github.com/metacubex/quic-go v0.47.1-0.20240909010619-6b38f24bfcc4 // indirect
+ github.com/metacubex/randv2 v0.2.0 // indirect
+ github.com/metacubex/sing-quic v0.0.0-20240827003841-cd97758ed8b4 // indirect
+ github.com/metacubex/sing-shadowsocks v0.2.8 // indirect
+ github.com/metacubex/sing-shadowsocks2 v0.2.2 // indirect
+ github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1 // indirect
+ github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9 // indirect
+ github.com/metacubex/sing-wireguard v0.0.0-20240924052438-b0976fc59ea3 // indirect
+ github.com/metacubex/tfo-go v0.0.0-20241006021335-daedaf0ca7aa // indirect
+ github.com/metacubex/utls v1.6.6 // indirect
+ github.com/metacubex/wireguard-go v0.0.0-20240922131502-c182e7471181 // indirect
+ github.com/miekg/dns v1.1.62 // indirect
+ github.com/mroth/weightedrand/v2 v2.1.0 // indirect
+ github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7 // indirect
+ github.com/onsi/ginkgo/v2 v2.9.5 // indirect
+ github.com/openacid/low v0.1.21 // indirect
+ github.com/oschwald/maxminddb-golang v1.12.0 // indirect
+ github.com/pierrec/lz4/v4 v4.1.14 // indirect
+ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
+ github.com/puzpuzpuz/xsync/v3 v3.4.0 // indirect
+ github.com/quic-go/qpack v0.4.0 // indirect
+ github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
+ github.com/sagernet/cors v1.2.1 // indirect
+ github.com/sagernet/fswatch v0.1.1 // indirect
+ github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a // indirect
+ github.com/sagernet/nftables v0.3.0-beta.4 // indirect
+ github.com/sagernet/sing v0.5.0-alpha.13 // indirect
+ github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6 // indirect
+ github.com/sagernet/sing-shadowtls v0.1.4 // indirect
+ github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 // indirect
+ github.com/samber/lo v1.47.0 // indirect
+ github.com/shirou/gopsutil/v3 v3.24.5 // indirect
+ github.com/shoenig/go-m1cpu v0.1.6 // indirect
+ github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b // indirect
+ github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c // indirect
+ github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e // indirect
+ github.com/sirupsen/logrus v1.9.3 // indirect
+ github.com/tklauser/go-sysconf v0.3.12 // indirect
+ github.com/tklauser/numcpus v0.6.1 // indirect
+ github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 // indirect
+ github.com/vishvananda/netns v0.0.4 // indirect
+ github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect
+ github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
+ github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
+ github.com/yusufpapurcu/wmi v1.2.4 // indirect
+ gitlab.com/go-extension/aes-ccm v0.0.0-20230221065045-e58665ef23c7 // indirect
+ gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec // indirect
+ go.uber.org/mock v0.4.0 // indirect
+ go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect
+ golang.org/x/crypto v0.28.0 // indirect
+ golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e // indirect
+ golang.org/x/mod v0.20.0 // indirect
+ golang.org/x/net v0.30.0 // indirect
+ golang.org/x/sync v0.8.0 // indirect
+ golang.org/x/sys v0.26.0 // indirect
+ golang.org/x/text v0.19.0 // indirect
+ golang.org/x/time v0.5.0 // indirect
+ golang.org/x/tools v0.24.0 // indirect
+ google.golang.org/protobuf v1.34.2 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
+ lukechampine.com/blake3 v1.3.0 // indirect
+)
+
+replace github.com/sagernet/sing => github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297
+
+replace cfa => ../../main/golang
+
+replace github.com/metacubex/mihomo => ./clash
diff --git a/Android-kotlin-Code/core/src/foss/golang/go.sum b/Android-kotlin-Code/core/src/foss/golang/go.sum
new file mode 100644
index 0000000..f76f3a5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/go.sum
@@ -0,0 +1,278 @@
+github.com/3andne/restls-client-go v0.1.6 h1:tRx/YilqW7iHpgmEL4E1D8dAsuB0tFF3uvncS+B6I08=
+github.com/3andne/restls-client-go v0.1.6/go.mod h1:iEdTZNt9kzPIxjIGSMScUFSBrUH6bFRNg0BWlP4orEY=
+github.com/RyuaNerin/elliptic2 v1.0.0/go.mod h1:wWB8fWrJI/6EPJkyV/r1Rj0hxUgrusmqSj8JN6yNf/A=
+github.com/RyuaNerin/go-krypto v1.2.4 h1:mXuNdK6M317aPV0llW6Xpjbo4moOlPF7Yxz4tb4b4Go=
+github.com/RyuaNerin/go-krypto v1.2.4/go.mod h1:QqCYkoutU3yInyD9INt2PGolVRsc3W4oraQadVGXJ/8=
+github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344 h1:cDVUiFo+npB0ZASqnw4q90ylaVAbnYyx0JYqK4YcGok=
+github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344/go.mod h1:9pIqrY6SXNL8vjRQE5Hd/OL5GyK/9MrGUWs87z/eFfk=
+github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
+github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
+github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI=
+github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
+github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=
+github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=
+github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
+github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
+github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
+github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
+github.com/coreos/go-iptables v0.8.0 h1:MPc2P89IhuVpLI7ETL/2tx3XZ61VeICZjYqDEgNsPRc=
+github.com/coreos/go-iptables v0.8.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
+github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9 h1:/5RkVc9Rc81XmMyVqawCiDyrBHZbLAZgTTCqou4mwj8=
+github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9/go.mod h1:hkIFzoiIPZYxdFOOLyDho59b7SrDfo+w3h+yWdlg45I=
+github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391 h1:8j2RH289RJplhA6WfdaPqzg1MjH2K8wX5e0uhAxrw2g=
+github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391/go.mod h1:K2R7GhgxrlJzHw2qiPWsCZXf/kXEJN9PLnQK73Ll0po=
+github.com/ericlagergren/saferand v0.0.0-20220206064634-960a4dd2bc5c h1:RUzBDdZ+e/HEe2Nh8lYsduiPAZygUfVXJn0Ncj5sHMg=
+github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1 h1:tlDMEdcPRQKBEz5nGDMvswiajqh7k8ogWRlhRwKy5mY=
+github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1/go.mod h1:4RfsapbGx2j/vU5xC/5/9qB3kn9Awp1YDiEnN43QrJ4=
+github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010 h1:fuGucgPk5dN6wzfnxl3D0D3rVLw4v2SbBT9jb4VnxzA=
+github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010/go.mod h1:JtBcj7sBuTTRupn7c2bFspMDIObMJsVK8TeUvpShPok=
+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/gaukas/godicttls v0.0.4 h1:NlRaXb3J6hAnTmWdsEKb9bcSBD6BvcIjdGdeb0zfXbk=
+github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67deKr9/NCI=
+github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
+github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-chi/render v1.0.3 h1:AsXqd2a1/INaIfUSKq3G5uA8weYx20FOsM7uSoCyyt4=
+github.com/go-chi/render v1.0.3/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0=
+github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
+github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU=
+github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
+github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og=
+github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
+github.com/gobwas/ws v1.4.0 h1:CTaoG1tojrh4ucGPcoJFiAQUAsEWekEWvLy7GsVNqGs=
+github.com/gobwas/ws v1.4.0/go.mod h1:G3gNqMNtPppf5XUz7O4shetPpcZ1VJ7zt18dlUeakrc=
+github.com/gofrs/uuid/v5 v5.3.0 h1:m0mUMr+oVYUdxpMLgSYCZiXe7PuVPnI94+OMeVBNedk=
+github.com/gofrs/uuid/v5 v5.3.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
+github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/tink/go v1.6.1 h1:t7JHqO8Ath2w2ig5vjwQYJzhGEZymedQc90lQXUBa4I=
+github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
+github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475 h1:hxST5pwMBEOWmxpkX20w9oZG+hXdhKmAIPQ3NGGAxas=
+github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475/go.mod h1:KclMyHxX06VrVr0DJmeFSUb1ankt7xTfoOA35pCkoic=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/josharian/native v1.0.1-0.20221213033349-c1e37c09b531/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA=
+github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
+github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
+github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
+github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 h1:EnfXoSqDfSNJv0VBNqY/88RNnhSGYkrHaO0mmFGbVsc=
+github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40/go.mod h1:vy1vK6wD6j7xX6O6hXe621WabdtNkou2h7uRtTfRMyg=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g=
+github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw=
+github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U=
+github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA=
+github.com/metacubex/amneziawg-go v0.0.0-20240922133038-fdf3a4d5a4ab h1:Chbw+/31UC14YFNr78pESt5Vowlc62zziw05JCUqoL4=
+github.com/metacubex/amneziawg-go v0.0.0-20240922133038-fdf3a4d5a4ab/go.mod h1:xVKK8jC5Sd3hfh7WjmCq+HorehIbrBijaUWmcuKjPcI=
+github.com/metacubex/bbolt v0.0.0-20240822011022-aed6d4850399 h1:oBowHVKZycNtAFbZ6avaCSZJYeme2Nrj+4RpV2cNJig=
+github.com/metacubex/bbolt v0.0.0-20240822011022-aed6d4850399/go.mod h1:4xcieuIK+M4bGQmQYZVqEaIYqjS1ahO4kXG7EmDgEro=
+github.com/metacubex/chacha v0.1.0 h1:tg9RSJ18NvL38cCWNyYH1eiG6qDCyyXIaTLQthon0sc=
+github.com/metacubex/chacha v0.1.0/go.mod h1:Djn9bPZxLTXbJFSeyo0/qzEzQI+gUSSzttuzZM75GH8=
+github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759 h1:cjd4biTvOzK9ubNCCkQ+ldc4YSH/rILn53l/xGBFHHI=
+github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759/go.mod h1:UHOv2xu+RIgLwpXca7TLrXleEd4oR3sPatW6IF8wU88=
+github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec h1:HxreOiFTUrJXJautEo8rnE1uKTVGY8wtZepY1Tii/Nc=
+github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec/go.mod h1:8BVmQ+3cxjqzWElafm24rb2Ae4jRI6vAXNXWqWjfrXw=
+github.com/metacubex/quic-go v0.47.1-0.20240909010619-6b38f24bfcc4 h1:CgdUBRxmNlxEGkp35HwvgQ10jwOOUJKWdOxpi8yWi8o=
+github.com/metacubex/quic-go v0.47.1-0.20240909010619-6b38f24bfcc4/go.mod h1:Y7yRGqFE6UQL/3aKPYmiYdjfVkeujJaStP4+jiZMcN8=
+github.com/metacubex/randv2 v0.2.0 h1:uP38uBvV2SxYfLj53kuvAjbND4RUDfFJjwr4UigMiLs=
+github.com/metacubex/randv2 v0.2.0/go.mod h1:kFi2SzrQ5WuneuoLLCMkABtiBu6VRrMrWFqSPyj2cxY=
+github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297 h1:YG/JkwGPbca5rUtEMHIu8ZuqzR7BSVm1iqY8hNoMeMA=
+github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
+github.com/metacubex/sing-quic v0.0.0-20240827003841-cd97758ed8b4 h1:HobpULaPK6OoxrHMmgcwLkwwIduXVmwdcznwUfH1GQM=
+github.com/metacubex/sing-quic v0.0.0-20240827003841-cd97758ed8b4/go.mod h1:g7Mxj7b7zm7YVqD975mk/hSmrb0A0G4bVvIMr2MMzn8=
+github.com/metacubex/sing-shadowsocks v0.2.8 h1:wIhlaigswzjPw4hej75sEvWte3QR0+AJRafgwBHO5B4=
+github.com/metacubex/sing-shadowsocks v0.2.8/go.mod h1:X3x88XtJpBxG0W0/ECOJL6Ib0SJ3xdniAkU/6/RMWU0=
+github.com/metacubex/sing-shadowsocks2 v0.2.2 h1:eaf42uVx4Lr21S6MDYs0ZdTvGA0GEhDpb9no4+gdXPo=
+github.com/metacubex/sing-shadowsocks2 v0.2.2/go.mod h1:BhOug03a/RbI7y6hp6q+6ITM1dXjnLTmeWBHSTwvv2Q=
+github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1 h1:ypfofGDZbP8p3Y4P/m74JYu7sQViesi3c8nbmT6cS0Y=
+github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1/go.mod h1:olbEx9yVcaw5tHTNlRamRoxmMKcvDvcVS1YLnQGzvWE=
+github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9 h1:OAXiCosqY8xKDp3pqTW3qbrCprZ1l6WkrXSFSCwyY4I=
+github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9/go.mod h1:olVkD4FChQ5gKMHG4ZzuD7+fMkJY1G8vwOKpRehjrmY=
+github.com/metacubex/sing-wireguard v0.0.0-20240924052438-b0976fc59ea3 h1:xg71VmzLS6ByAzi/57phwDvjE+dLLs+ozH00k4DnOns=
+github.com/metacubex/sing-wireguard v0.0.0-20240924052438-b0976fc59ea3/go.mod h1:6nitcmzPDL3MXnLdhu6Hm126Zk4S1fBbX3P7jxUxSFw=
+github.com/metacubex/tfo-go v0.0.0-20241006021335-daedaf0ca7aa h1:9mcjV+RGZVC3reJBNDjjNPyS8PmFG97zq56X7WNaFO4=
+github.com/metacubex/tfo-go v0.0.0-20241006021335-daedaf0ca7aa/go.mod h1:4tLB5c8U0CxpkFM+AJJB77jEaVDbLH5XQvy42vAGsWw=
+github.com/metacubex/utls v1.6.6 h1:3D12YKHTf2Z41UPhQU2dWerNWJ5TVQD9gKoQ+H+iLC8=
+github.com/metacubex/utls v1.6.6/go.mod h1:+WLFUnXjcpdxXCnyX25nggw8C6YonZ8zOK2Zm/oRvdo=
+github.com/metacubex/wireguard-go v0.0.0-20240922131502-c182e7471181 h1:hJLQviGySBuaynlCwf/oYgIxbVbGRUIKZCxdya9YrbQ=
+github.com/metacubex/wireguard-go v0.0.0-20240922131502-c182e7471181/go.mod h1:phewKljNYiTVT31Gcif8RiCKnTUOgVWFJjccqYM8s+Y=
+github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ=
+github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ=
+github.com/mroth/weightedrand/v2 v2.1.0 h1:o1ascnB1CIVzsqlfArQQjeMy1U0NcIbBO5rfd5E/OeU=
+github.com/mroth/weightedrand/v2 v2.1.0/go.mod h1:f2faGsfOGOwc1p94wzHKKZyTpcJUW7OJ/9U4yfiNAOU=
+github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7 h1:1102pQc2SEPp5+xrS26wEaeb26sZy6k9/ZXlZN+eXE4=
+github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7/go.mod h1:UqoUn6cHESlliMhOnKLWr+CBH+e3bazUPvFj1XZwAjs=
+github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q=
+github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k=
+github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE=
+github.com/openacid/errors v0.8.1/go.mod h1:GUQEJJOJE3W9skHm8E8Y4phdl2LLEN8iD7c5gcGgdx0=
+github.com/openacid/low v0.1.21 h1:Tr2GNu4N/+rGRYdOsEHOE89cxUIaDViZbVmKz29uKGo=
+github.com/openacid/low v0.1.21/go.mod h1:q+MsKI6Pz2xsCkzV4BLj7NR5M4EX0sGz5AqotpZDVh0=
+github.com/openacid/must v0.1.3/go.mod h1:luPiXCuJlEo3UUFQngVQokV0MPGryeYvtCbQPs3U1+I=
+github.com/openacid/testkeys v0.1.6/go.mod h1:MfA7cACzBpbiwekivj8StqX0WIRmqlMsci1c37CA3Do=
+github.com/oschwald/maxminddb-golang v1.12.0 h1:9FnTOD0YOhP7DGxGsq4glzpGy5+w7pq50AS6wALUMYs=
+github.com/oschwald/maxminddb-golang v1.12.0/go.mod h1:q0Nob5lTCqyQ8WT6FYgS1L7PXKVVbgiymefNwIjPzgY=
+github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE=
+github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
+github.com/puzpuzpuz/xsync/v3 v3.4.0 h1:DuVBAdXuGFHv8adVXjWWZ63pJq+NRXOWVXlKDBZ+mJ4=
+github.com/puzpuzpuz/xsync/v3 v3.4.0/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA=
+github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
+github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
+github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs=
+github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k=
+github.com/sagernet/cors v1.2.1 h1:Cv5Z8y9YSD6Gm+qSpNrL3LO4lD3eQVvbFYJSG7JCMHQ=
+github.com/sagernet/cors v1.2.1/go.mod h1:O64VyOjjhrkLmQIjF4KGRrJO/5dVXFdpEmCW/eISRAI=
+github.com/sagernet/fswatch v0.1.1 h1:YqID+93B7VRfqIH3PArW/XpJv5H4OLEVWDfProGoRQs=
+github.com/sagernet/fswatch v0.1.1/go.mod h1:nz85laH0mkQqJfaOrqPpkwtU1znMFNVTpT/5oRsVz/o=
+github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a h1:ObwtHN2VpqE0ZNjr6sGeT00J8uU7JF4cNUdb44/Duis=
+github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
+github.com/sagernet/nftables v0.3.0-beta.4 h1:kbULlAwAC3jvdGAC1P5Fa3GSxVwQJibNenDW2zaXr8I=
+github.com/sagernet/nftables v0.3.0-beta.4/go.mod h1:OQXAjvjNGGFxaTgVCSTRIhYB5/llyVDeapVoENYBDS8=
+github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6 h1:5bCAkvDDzSMITiHFjolBwpdqYsvycdTu71FsMEFXQ14=
+github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6/go.mod h1:khzr9AOPocLa+g53dBplwNDz4gdsyx/YM3swtAhlkHQ=
+github.com/sagernet/sing-shadowtls v0.1.4 h1:aTgBSJEgnumzFenPvc+kbD9/W0PywzWevnVpEx6Tw3k=
+github.com/sagernet/sing-shadowtls v0.1.4/go.mod h1:F8NBgsY5YN2beQavdgdm1DPlhaKQlaL6lpDdcBglGK4=
+github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 h1:DImB4lELfQhplLTxeq2z31Fpv8CQqqrUwTbrIRumZqQ=
+github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7/go.mod h1:FP9X2xjT/Az1EsG/orYYoC+5MojWnuI7hrffz8fGwwo=
+github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc=
+github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
+github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
+github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk=
+github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
+github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
+github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
+github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b h1:rXHg9GrUEtWZhEkrykicdND3VPjlVbYiLdX9J7gimS8=
+github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b/go.mod h1:X7qrxNQViEaAN9LNZOPl9PfvQtp3V3c7LTo0dvGi0fM=
+github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c h1:DjKMC30y6yjG3IxDaeAj3PCoRr+IsO+bzyT+Se2m2Hk=
+github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c/go.mod h1:NV/a66PhhWYVmUMaotlXJ8fIEFB98u+c8l/CQIEFLrU=
+github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e h1:ur8uMsPIFG3i4Gi093BQITvwH9znsz2VUZmnmwHvpIo=
+github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e/go.mod h1:+e5fBW3bpPyo+3uLo513gIUblc03egGjMM0+5GKbzK8=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
+github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
+github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
+github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
+github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 h1:tHNk7XK9GkmKUR6Gh8gVBKXc2MVSZ4G/NnWLtzw4gNA=
+github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923/go.mod h1:eLL9Nub3yfAho7qB0MzZizFhTU2QkLeoVsWdHtDW264=
+github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
+github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=
+github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
+github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8=
+github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM=
+github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8=
+github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
+github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
+github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
+github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
+github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
+github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
+github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
+gitlab.com/go-extension/aes-ccm v0.0.0-20230221065045-e58665ef23c7 h1:UNrDfkQqiEYzdMlNsVvBYOAJWZjdktqFE9tQh5BT2+4=
+gitlab.com/go-extension/aes-ccm v0.0.0-20230221065045-e58665ef23c7/go.mod h1:E+rxHvJG9H6PUdzq9NRG6csuLN3XUx98BfGOVWNYnXs=
+gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec h1:FpfFs4EhNehiVfzQttTuxanPIT43FtkkCFypIod8LHo=
+gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec/go.mod h1:BZ1RAoRPbCxum9Grlv5aeksu2H8BiKehBYooU2LFiOQ=
+go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
+go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
+go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBseWJUpBw5I82+2U4M=
+go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
+golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
+golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e h1:I88y4caeGeuDQxgdoFPUq097j7kNfw6uvuiNxUBfcBk=
+golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
+golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
+golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
+golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
+golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
+golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
+golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE=
+lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
diff --git a/Android-kotlin-Code/core/src/foss/golang/main.go b/Android-kotlin-Code/core/src/foss/golang/main.go
new file mode 100644
index 0000000..1ac67cb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/foss/golang/main.go
@@ -0,0 +1,5 @@
+package golang
+
+import (
+ _ "cfa/native/all"
+)
diff --git a/Android-kotlin-Code/core/src/main/AndroidManifest.xml b/Android-kotlin-Code/core/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..2584c46
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt b/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt
new file mode 100644
index 0000000..82f2a82
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/cpp/CMakeLists.txt
@@ -0,0 +1,69 @@
+cmake_minimum_required(VERSION 3.0)
+
+# 获取git hash
+
+message(STATUS "CMAKE_CURRENT_SOURCE_DIR= ${CMAKE_CURRENT_SOURCE_DIR}")
+execute_process(
+ COMMAND git submodule foreach git log -1 --format=%H
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ OUTPUT_VARIABLE COMMIT_HASH
+)
+string(REPLACE "\n" ";" COMMIT_HASH "${COMMIT_HASH}")
+list(GET COMMIT_HASH 1 COMMIT_HASH)
+string (REGEX REPLACE "[\n\t\r]" "" COMMIT_HASH ${COMMIT_HASH})
+string(SUBSTRING ${COMMIT_HASH} 0 7 COMMIT_HASH)
+message(STATUS "git hash= ${COMMIT_HASH}")
+
+# 获取分支名称
+execute_process(
+ COMMAND git submodule foreach git branch -r --contains ${COMMIT_HASH}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ OUTPUT_VARIABLE CURRENT_BRANCH
+)
+string(REPLACE "\n" ";" CURRENT_BRANCH "${CURRENT_BRANCH}")
+list(GET CURRENT_BRANCH 1 CURRENT_BRANCH)
+string (REGEX REPLACE "origin/" "" CURRENT_BRANCH ${CURRENT_BRANCH})
+string (REGEX REPLACE "[\n\t\r]" "" CURRENT_BRANCH ${CURRENT_BRANCH})
+#string(SUBSTRING ${CURRENT_BRANCH} 0 8 CURRENT_BRANCH)
+message(STATUS "git current branch = ${CURRENT_BRANCH}")
+
+# 获取生成时间
+string(TIMESTAMP COMPILE_TIME "%y%m%d")
+string (REGEX REPLACE "[\n\t\r]" "" COMPILE_TIME ${COMPILE_TIME})
+string(REGEX REPLACE "\"" "" COMPILE_TIME ${COMPILE_TIME})
+
+# 生成版本信息
+set(GIT_VERSION "${CURRENT_BRANCH}_${COMMIT_HASH}_${COMPILE_TIME}")
+message(STATUS "version info = ${GIT_VERSION}")
+
+# 去除空格
+string(REGEX REPLACE "[ ]+" "" GIT_VERSION "${GIT_VERSION}")
+
+# 保存变量到文件
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/version.h @ONLY)
+
+project(clash-bridge C)
+
+
+set(CMAKE_POSITION_INDEPENDENT_CODE on)
+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")
+
+set(GO_OUTPUT_BASE ${GO_OUTPUT}/${FLAVOR_NAME})
+
+if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
+ set(GO_OUTPUT_BASE "${GO_OUTPUT_BASE}Debug")
+elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
+ set(GO_OUTPUT_BASE "${GO_OUTPUT_BASE}Release")
+elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
+ set(GO_OUTPUT_BASE "${GO_OUTPUT_BASE}Release")
+else ()
+ message(FATAL_ERROR "Unknown build type ${CMAKE_BUILD_TYPE}")
+endif ()
+
+include_directories("${GO_OUTPUT_BASE}/${CMAKE_ANDROID_ARCH_ABI}")
+include_directories("${GO_SOURCE}")
+
+link_directories("${GO_OUTPUT_BASE}/${CMAKE_ANDROID_ARCH_ABI}")
+
+add_library(bridge SHARED main.c jni_helper.c bridge_helper.c)
+target_link_libraries(bridge log clash)
diff --git a/Android-kotlin-Code/core/src/main/cpp/bridge_helper.c b/Android-kotlin-Code/core/src/main/cpp/bridge_helper.c
new file mode 100644
index 0000000..921b913
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/cpp/bridge_helper.c
@@ -0,0 +1,12 @@
+#include "bridge_helper.h"
+
+uint64_t down_scale_traffic(uint64_t value) {
+ if (value > 1042 * 1024 * 1024)
+ return ((value * 100u / 1024u / 1024u / 1024u) & 0x3FFFFFFFu) | (3u << 30u);
+ if (value > 1024 * 1024)
+ return ((value * 100u / 1024u / 1024u) & 0x3FFFFFFFu) | (2u << 30u);
+ if (value > 1024)
+ return ((value * 100u / 1024u) & 0x3FFFFFFFu) | (1u << 30u);
+ return value & 0x3FFFFFFFu;
+}
+
diff --git a/Android-kotlin-Code/core/src/main/cpp/bridge_helper.h b/Android-kotlin-Code/core/src/main/cpp/bridge_helper.h
new file mode 100644
index 0000000..5c7bb28
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/cpp/bridge_helper.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#include
+
+uint64_t down_scale_traffic(uint64_t value);
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/cpp/jni_helper.c b/Android-kotlin-Code/core/src/main/cpp/jni_helper.c
new file mode 100644
index 0000000..27140ab
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/cpp/jni_helper.c
@@ -0,0 +1,82 @@
+#include "jni_helper.h"
+
+#include
+#include
+
+static JavaVM *global_vm;
+
+static jclass c_string;
+static jmethodID m_new_string;
+static jmethodID m_get_bytes;
+
+void initialize_jni(JavaVM *vm, JNIEnv *env) {
+ global_vm = vm;
+
+ c_string = (jclass) new_global(find_class("java/lang/String"));
+ m_new_string = find_method(c_string, "", "([B)V");
+ m_get_bytes = find_method(c_string, "getBytes", "()[B");
+}
+
+JavaVM *global_java_vm() {
+ return global_vm;
+}
+
+char *jni_get_string(JNIEnv *env, jstring str) {
+ jbyteArray array = (*env)->CallObjectMethod(env, str, m_get_bytes);
+ int length = (*env)->GetArrayLength(env, array);
+
+ char *content = (char *) malloc(length + 1);
+
+ (*env)->GetByteArrayRegion(env, array, 0, length, (jbyte *) content);
+
+ content[length] = 0;
+
+ return content;
+}
+
+jstring jni_new_string(JNIEnv *env, const char *str) {
+ int length = strlen(str);
+ jbyteArray array = (*env)->NewByteArray(env, length);
+
+ (*env)->SetByteArrayRegion(env, array, 0, length, (const jbyte *) str);
+
+ return (jstring) (*env)->NewObject(env, c_string, m_new_string, array);
+}
+
+int jni_catch_exception(JNIEnv *env) {
+ int result = (*env)->ExceptionCheck(env);
+
+ if (result) {
+ (*env)->ExceptionDescribe(env);
+ (*env)->ExceptionClear(env);
+ }
+
+ return result;
+}
+
+void jni_attach_thread(struct _scoped_jni *jni) {
+ JavaVM *vm = global_java_vm();
+
+ if ((*vm)->GetEnv(vm, (void **) &jni->env, JNI_VERSION_1_6) == JNI_OK) {
+ jni->require_release = 0;
+ return;
+ }
+
+ if ((*vm)->AttachCurrentThread(vm, &jni->env, NULL) != JNI_OK) {
+ abort();
+ }
+
+ jni->require_release = 1;
+}
+
+void jni_detach_thread(struct _scoped_jni *jni) {
+ JavaVM *vm = global_java_vm();
+
+ if (jni->require_release) {
+ (*vm)->DetachCurrentThread(vm);
+ }
+}
+
+void release_string(char **str) {
+ free(*str);
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/cpp/jni_helper.h b/Android-kotlin-Code/core/src/main/cpp/jni_helper.h
new file mode 100644
index 0000000..54156a8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/cpp/jni_helper.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+
+struct _scoped_jni {
+ JNIEnv *env;
+ int require_release;
+};
+
+extern void initialize_jni(JavaVM *vm, JNIEnv *env);
+extern jstring jni_new_string(JNIEnv *env, const char *str);
+extern char *jni_get_string(JNIEnv *env, jstring str);
+extern int jni_catch_exception(JNIEnv *env);
+extern void jni_attach_thread(struct _scoped_jni *jni);
+extern void jni_detach_thread(struct _scoped_jni *env);
+extern void release_string(char **str);
+
+#define ATTACH_JNI() __attribute__((unused, cleanup(jni_detach_thread))) \
+ struct _scoped_jni _jni; \
+ jni_attach_thread(&_jni); \
+ JNIEnv *env = _jni.env
+
+#define scoped_string __attribute__((cleanup(release_string))) char*
+
+#define find_class(name) (*env)->FindClass(env, name)
+#define find_method(cls, name, signature) (*env)->GetMethodID(env, cls, name, signature)
+#define new_global(obj) (*env)->NewGlobalRef(env, obj)
+#define del_global(obj) (*env)->DeleteGlobalRef(env, obj)
+#define get_string(jstr) jni_get_string(env, jstr)
+#define new_string(cstr) jni_new_string(env, cstr)
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/cpp/main.c b/Android-kotlin-Code/core/src/main/cpp/main.c
new file mode 100644
index 0000000..914bf7d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/cpp/main.c
@@ -0,0 +1,529 @@
+#include
+#include
+#include
+#include
+
+#include "bridge_helper.h"
+#include "libclash.h"
+#include "jni_helper.h"
+#include "trace.h"
+
+#include "version.h" // 添加当前编译core版本号变量
+
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeInit(JNIEnv *env, jobject thiz,
+ jstring home,
+ jstring version_name, jint sdk_version) {
+ TRACE_METHOD();
+
+ scoped_string _home = get_string(home);
+ scoped_string _version_name = get_string(version_name);
+ char* _git_version = make_String(GIT_VERSION);
+
+ coreInit(_home, _version_name, _git_version, sdk_version);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeReset(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ reset();
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeForceGc(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ forceGc();
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeSuspend(JNIEnv *env, jobject thiz,
+ jboolean suspended) {
+ TRACE_METHOD();
+
+ suspend((int) suspended);
+}
+
+
+JNIEXPORT jstring JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeQueryTunnelState(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ scoped_string response = queryTunnelState();
+
+ return new_string(response);
+}
+
+JNIEXPORT jlong JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeQueryTrafficNow(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ uint64_t upload = 0l, download = 0l;
+
+ queryNow(&upload, &download);
+
+ return (jlong) (down_scale_traffic(upload) << 32u | down_scale_traffic(download));
+}
+
+JNIEXPORT jlong JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeQueryTrafficTotal(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ uint64_t upload = 0l, download = 0l;
+
+ queryTotal(&upload, &download);
+
+ return (jlong) (down_scale_traffic(upload) << 32u | down_scale_traffic(download));
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeNotifyDnsChanged(JNIEnv *env, jobject thiz,
+ jstring dns_list) {
+ TRACE_METHOD();
+
+ scoped_string _dns_list = get_string(dns_list);
+
+ notifyDnsChanged(_dns_list);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeNotifyTimeZoneChanged(JNIEnv *env, jobject thiz,
+ jstring name, jint offset) {
+ TRACE_METHOD();
+
+ scoped_string _name = get_string(name);
+
+ notifyTimeZoneChanged(_name, offset);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeNotifyInstalledAppChanged(JNIEnv *env,
+ jobject thiz,
+ jstring uid_list) {
+ TRACE_METHOD();
+
+ scoped_string _uid_list = get_string(uid_list);
+
+ notifyInstalledAppsChanged(_uid_list);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeStartTun(JNIEnv *env, jobject thiz,
+ jint fd,
+ jstring stack,
+ jstring gateway,
+ jstring portal,
+ jstring dns,
+ jobject cb) {
+ TRACE_METHOD();
+
+ scoped_string _stack = get_string(stack);
+ scoped_string _gateway = get_string(gateway);
+ scoped_string _portal = get_string(portal);
+ scoped_string _dns = get_string(dns);
+ jobject _interface = new_global(cb);
+
+ startTun(fd, _stack, _gateway, _portal, _dns, _interface);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeStopTun(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ stopTun();
+}
+
+JNIEXPORT jstring JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeStartHttp(JNIEnv *env, jobject thiz,
+ jstring listen_at) {
+ TRACE_METHOD();
+
+ scoped_string _listen_at = get_string(listen_at);
+
+ scoped_string listened = startHttp(_listen_at);
+
+ if (listened == NULL)
+ return NULL;
+
+ return new_string(listened);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeStopHttp(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ stopHttp();
+}
+
+JNIEXPORT jstring JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeQueryGroupNames(JNIEnv *env, jobject thiz,
+ jboolean exclude_not_selectable) {
+ TRACE_METHOD();
+
+ scoped_string response = queryGroupNames((int) exclude_not_selectable);
+
+ return new_string(response);
+}
+
+JNIEXPORT jstring JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeQueryGroup(JNIEnv *env, jobject thiz,
+ jstring name, jstring mode) {
+ TRACE_METHOD();
+
+ scoped_string _name = get_string(name);
+ scoped_string _mode = get_string(mode);
+
+ scoped_string response = queryGroup(_name, _mode);
+
+ if (response == NULL)
+ return NULL;
+
+ return new_string(response);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeHealthCheck(JNIEnv *env, jobject thiz,
+ jobject completable,
+ jstring name) {
+ TRACE_METHOD();
+
+ jobject _completable = new_global(completable);
+ scoped_string _name = get_string(name);
+
+ healthCheck(_completable, _name);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeHealthCheckAll(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ healthCheckAll();
+}
+
+JNIEXPORT jboolean JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativePatchSelector(JNIEnv *env, jobject thiz,
+ jstring selector, jstring name) {
+ TRACE_METHOD();
+
+ scoped_string _selector = get_string(selector);
+ scoped_string _name = get_string(name);
+
+ return (jboolean) patchSelector(_selector, _name);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeLoad(JNIEnv *env, jobject thiz,
+ jobject completable, jstring path) {
+ TRACE_METHOD();
+
+ jobject _completable = new_global(completable);
+ scoped_string _path = get_string(path);
+
+ load(_completable, _path);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeFetchAndValid(JNIEnv *env, jobject thiz,
+ jobject callback,
+ jstring path,
+ jstring url, jboolean force) {
+ TRACE_METHOD();
+
+ jobject _completable = new_global(callback);
+ scoped_string _path = get_string(path);
+ scoped_string _url = get_string(url);
+
+ fetchAndValid(_completable, _path, _url, force);
+}
+
+JNIEXPORT jstring JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeQueryProviders(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ scoped_string response = queryProviders();
+
+ return new_string(response);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeUpdateProvider(JNIEnv *env, jobject thiz,
+ jobject completable,
+ jstring type,
+ jstring name) {
+ TRACE_METHOD();
+
+ jobject _completable = new_global(completable);
+ scoped_string _type = get_string(type);
+ scoped_string _name = get_string(name);
+
+ updateProvider(_completable, _type, _name);
+}
+
+JNIEXPORT jstring JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeReadOverride(JNIEnv *env, jobject thiz,
+ jint slot) {
+ TRACE_METHOD();
+
+ scoped_string response = readOverride(slot);
+
+ return new_string(response);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeWriteOverride(JNIEnv *env, jobject thiz,
+ jint slot,
+ jstring content) {
+ TRACE_METHOD();
+
+ scoped_string _content = get_string(content);
+
+ writeOverride(slot, _content);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeClearOverride(JNIEnv *env, jobject thiz,
+ jint slot) {
+ TRACE_METHOD();
+
+ clearOverride(slot);
+}
+
+JNIEXPORT jstring JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeQueryConfiguration(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ scoped_string response = queryConfiguration();
+
+ return new_string(response);
+}
+
+JNIEXPORT void JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeSubscribeLogcat(JNIEnv *env, jobject thiz,
+ jobject callback) {
+ TRACE_METHOD();
+
+ jobject _callback = new_global(callback);
+
+ subscribeLogcat(_callback);
+}
+
+
+static jmethodID m_tun_interface_mark_socket;
+static jmethodID m_tun_interface_query_socket_uid;
+static jmethodID m_completable_complete;
+static jmethodID m_completable_complete_exceptionally;
+static jmethodID m_logcat_interface_received;
+static jmethodID m_clash_exception;
+static jmethodID m_fetch_callback_report;
+static jmethodID m_fetch_callback_complete;
+static jmethodID m_open;
+static jmethodID m_get_message;
+static jclass c_clash_exception;
+static jclass c_content;
+static jobject o_unit;
+
+static void call_tun_interface_mark_socket_impl(void *tun_interface, int fd) {
+ TRACE_METHOD();
+
+ ATTACH_JNI();
+
+ (*env)->CallVoidMethod(env, (jobject) tun_interface,
+ (jmethodID) m_tun_interface_mark_socket,
+ (jint) fd);
+}
+
+static int call_tun_interface_query_socket_uid_impl(void *tun_interface, int protocol,
+ const char *source, const char *target) {
+ TRACE_METHOD();
+
+ ATTACH_JNI();
+
+ return (*env)->CallIntMethod(env, (jobject) tun_interface,
+ (jmethodID) m_tun_interface_query_socket_uid,
+ (jint) protocol,
+ (jstring) new_string(source),
+ (jstring) new_string(target));
+}
+
+static void call_completable_complete_impl(void *completable, const char *exception) {
+ TRACE_METHOD();
+
+ ATTACH_JNI();
+
+ if (exception == NULL) {
+ (*env)->CallBooleanMethod(env,
+ (jobject) completable,
+ (jmethodID) m_completable_complete,
+ (jobject) o_unit);
+ } else {
+ jthrowable _exception = (jthrowable)
+ (*env)->NewObject(env,
+ (jclass) c_clash_exception,
+ (jmethodID) m_clash_exception,
+ (jstring) new_string(exception)
+ );
+
+ (*env)->CallBooleanMethod(env,
+ (jobject) completable,
+ (jmethodID) m_completable_complete_exceptionally,
+ (jobject) _exception);
+ }
+}
+
+static void call_fetch_callback_report_impl(void *fetch_callback, const char *status_json) {
+ TRACE_METHOD();
+
+ ATTACH_JNI();
+
+ jstring _status_json = new_string(status_json);
+
+ (*env)->CallVoidMethod(env,
+ (jobject) fetch_callback,
+ (jmethodID) m_fetch_callback_report,
+ (jstring) _status_json);
+}
+
+static void call_fetch_callback_complete_impl(void *fetch_callback, const char *error) {
+ TRACE_METHOD();
+
+ ATTACH_JNI();
+
+ jstring _error = NULL;
+
+ if (error != NULL)
+ _error = new_string(error);
+
+ (*env)->CallVoidMethod(env,
+ (jobject) fetch_callback,
+ (jmethodID) m_fetch_callback_complete,
+ (jstring) _error);
+}
+
+static int call_logcat_interface_received_impl(void *callback, const char *payload) {
+ TRACE_METHOD();
+
+ ATTACH_JNI();
+
+ (*env)->CallVoidMethod(env,
+ (jobject) callback,
+ (jmethodID) m_logcat_interface_received,
+ (jstring) new_string(payload));
+
+ if (jni_catch_exception(env)) {
+ return 1;
+ }
+
+ return 0;
+}
+
+static int open_content_impl(const char *url, char *error, int error_length) {
+ TRACE_METHOD();
+
+ ATTACH_JNI();
+
+ int fd = (*env)->CallStaticIntMethod(env, c_content, m_open, new_string(url));
+
+ if ((*env)->ExceptionCheck(env)) {
+ jthrowable exception = (*env)->ExceptionOccurred(env);
+
+ (*env)->ExceptionClear(env);
+
+ jstring message = (jstring) (*env)->CallObjectMethod(
+ env,
+ (jthrowable) exception,
+ (jmethodID) m_get_message
+ );
+
+ if (message == NULL) {
+ strncpy(error, "unknown", error_length - 1);
+ } else {
+ scoped_string _message = get_string(message);
+
+ strncpy(error, _message, error_length - 1);
+ }
+
+ return -1;
+ }
+
+ return fd;
+}
+
+static void release_jni_object_impl(void *obj) {
+ TRACE_METHOD();
+
+ ATTACH_JNI();
+
+ del_global((jobject) obj);
+}
+
+JNIEXPORT jint JNICALL
+JNI_OnLoad(JavaVM *vm, void *reserved) {
+ TRACE_METHOD();
+
+ JNIEnv *env = NULL;
+
+ if ((*vm)->GetEnv(vm, (void **) &env, JNI_VERSION_1_6) != JNI_OK)
+ return JNI_ERR;
+
+ initialize_jni(vm, env);
+
+ jclass c_tun_interface = find_class("com/github/kr328/clash/core/bridge/TunInterface");
+ jclass c_completable = find_class("kotlinx/coroutines/CompletableDeferred");
+ jclass c_fetch_callback = find_class("com/github/kr328/clash/core/bridge/FetchCallback");
+ jclass c_logcat_interface = find_class("com/github/kr328/clash/core/bridge/LogcatInterface");
+ jclass _c_clash_exception = find_class("com/github/kr328/clash/core/bridge/ClashException");
+ jclass _c_content = find_class("com/github/kr328/clash/core/bridge/Content");
+ jclass c_throwable = find_class("java/lang/Throwable");
+ jclass c_unit = find_class("kotlin/Unit");
+
+ m_tun_interface_mark_socket = find_method(c_tun_interface, "markSocket",
+ "(I)V");
+ m_tun_interface_query_socket_uid = find_method(c_tun_interface, "querySocketUid",
+ "(ILjava/lang/String;Ljava/lang/String;)I");
+ m_completable_complete = find_method(c_completable, "complete",
+ "(Ljava/lang/Object;)Z");
+ m_fetch_callback_report = find_method(c_fetch_callback, "report",
+ "(Ljava/lang/String;)V");
+ m_fetch_callback_complete = find_method(c_fetch_callback, "complete",
+ "(Ljava/lang/String;)V");
+ m_completable_complete_exceptionally = find_method(c_completable, "completeExceptionally",
+ "(Ljava/lang/Throwable;)Z");
+ m_logcat_interface_received = find_method(c_logcat_interface, "received",
+ "(Ljava/lang/String;)V");
+ m_clash_exception = find_method(_c_clash_exception, "",
+ "(Ljava/lang/String;)V");
+ m_get_message = find_method(c_throwable, "getMessage",
+ "()Ljava/lang/String;");
+ m_open = (*env)->GetStaticMethodID(env, _c_content, "open",
+ "(Ljava/lang/String;)I");
+
+ o_unit = (*env)->GetStaticObjectField(env, c_unit,
+ (*env)->GetStaticFieldID(env, c_unit, "INSTANCE",
+ "Lkotlin/Unit;"));
+
+ c_clash_exception = (jclass) new_global(_c_clash_exception);
+ c_content = (jclass) new_global(_c_content);
+ o_unit = new_global(o_unit);
+
+ mark_socket_func = &call_tun_interface_mark_socket_impl;
+ query_socket_uid_func = &call_tun_interface_query_socket_uid_impl;
+ complete_func = &call_completable_complete_impl;
+ fetch_report_func = &call_fetch_callback_report_impl;
+ fetch_complete_func = &call_fetch_callback_complete_impl;
+ logcat_received_func = &call_logcat_interface_received_impl;
+ open_content_func = &open_content_impl;
+ release_object_func = &release_jni_object_impl;
+
+ return JNI_VERSION_1_6;
+}
+
+JNIEXPORT jstring JNICALL
+Java_com_github_kr328_clash_core_bridge_Bridge_nativeCoreVersion(JNIEnv *env, jobject thiz) {
+ TRACE_METHOD();
+
+ char* Version = make_String(GIT_VERSION);
+
+ return new_string(Version);
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/cpp/version.h b/Android-kotlin-Code/core/src/main/cpp/version.h
new file mode 100644
index 0000000..4e9649e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/cpp/version.h
@@ -0,0 +1,12 @@
+#ifndef VERSION_H_IN
+#define VERSION_H_IN
+
+/**
+ * 当前编译core版本号
+ */
+
+#define GIT_VERSION Alpha_ca3f1eb_241023
+#define make_Str(x) #x
+#define make_String(x) make_Str(x)
+
+#endif
diff --git a/Android-kotlin-Code/core/src/main/cpp/version.h.in b/Android-kotlin-Code/core/src/main/cpp/version.h.in
new file mode 100644
index 0000000..8953e7c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/cpp/version.h.in
@@ -0,0 +1,12 @@
+#ifndef VERSION_H_IN
+#define VERSION_H_IN
+
+/**
+ * 当前编译core版本号
+ */
+
+#define GIT_VERSION @GIT_VERSION@
+#define make_Str(x) #x
+#define make_String(x) make_Str(x)
+
+#endif
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/golang/go.mod b/Android-kotlin-Code/core/src/main/golang/go.mod
new file mode 100644
index 0000000..5373b17
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/go.mod
@@ -0,0 +1,117 @@
+module cfa
+
+go 1.20
+
+require (
+ github.com/dlclark/regexp2 v1.11.4
+ github.com/metacubex/mihomo v1.7.0
+ golang.org/x/sync v0.8.0
+ gopkg.in/yaml.v3 v3.0.1
+)
+
+replace github.com/metacubex/mihomo => ../../foss/golang/clash
+
+replace github.com/sagernet/sing => github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297
+
+require (
+ github.com/3andne/restls-client-go v0.1.6 // indirect
+ github.com/RyuaNerin/go-krypto v1.2.4 // indirect
+ github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344 // indirect
+ github.com/ajg/form v1.5.1 // indirect
+ github.com/andybalholm/brotli v1.0.6 // indirect
+ github.com/bahlo/generic-list-go v0.2.0 // indirect
+ github.com/buger/jsonparser v1.1.1 // indirect
+ github.com/cloudflare/circl v1.3.7 // indirect
+ github.com/coreos/go-iptables v0.8.0 // indirect
+ github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9 // indirect
+ github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391 // indirect
+ github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1 // indirect
+ github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010 // indirect
+ github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/gaukas/godicttls v0.0.4 // indirect
+ github.com/go-chi/chi/v5 v5.1.0 // indirect
+ github.com/go-chi/render v1.0.3 // indirect
+ github.com/go-ole/go-ole v1.3.0 // indirect
+ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
+ github.com/gobwas/httphead v0.1.0 // indirect
+ github.com/gobwas/pool v0.2.1 // indirect
+ github.com/gobwas/ws v1.4.0 // indirect
+ github.com/gofrs/uuid/v5 v5.3.0 // indirect
+ github.com/google/btree v1.1.2 // indirect
+ github.com/google/go-cmp v0.6.0 // indirect
+ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect
+ github.com/hashicorp/yamux v0.1.1 // indirect
+ github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475 // indirect
+ github.com/josharian/native v1.1.0 // indirect
+ github.com/klauspost/compress v1.17.9 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.8 // indirect
+ github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
+ github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 // indirect
+ github.com/mailru/easyjson v0.7.7 // indirect
+ github.com/mdlayher/netlink v1.7.2 // indirect
+ github.com/mdlayher/socket v0.4.1 // indirect
+ github.com/metacubex/amneziawg-go v0.0.0-20240922133038-fdf3a4d5a4ab // indirect
+ github.com/metacubex/bbolt v0.0.0-20240822011022-aed6d4850399 // indirect
+ github.com/metacubex/chacha v0.1.0 // indirect
+ github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759 // indirect
+ github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec // indirect
+ github.com/metacubex/quic-go v0.47.1-0.20240909010619-6b38f24bfcc4 // indirect
+ github.com/metacubex/randv2 v0.2.0 // indirect
+ github.com/metacubex/sing-quic v0.0.0-20240827003841-cd97758ed8b4 // indirect
+ github.com/metacubex/sing-shadowsocks v0.2.8 // indirect
+ github.com/metacubex/sing-shadowsocks2 v0.2.2 // indirect
+ github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1 // indirect
+ github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9 // indirect
+ github.com/metacubex/sing-wireguard v0.0.0-20240924052438-b0976fc59ea3 // indirect
+ github.com/metacubex/tfo-go v0.0.0-20241006021335-daedaf0ca7aa // indirect
+ github.com/metacubex/utls v1.6.6 // indirect
+ github.com/metacubex/wireguard-go v0.0.0-20240922131502-c182e7471181 // indirect
+ github.com/miekg/dns v1.1.62 // indirect
+ github.com/mroth/weightedrand/v2 v2.1.0 // indirect
+ github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7 // indirect
+ github.com/onsi/ginkgo/v2 v2.9.5 // indirect
+ github.com/openacid/low v0.1.21 // indirect
+ github.com/oschwald/maxminddb-golang v1.12.0 // indirect
+ github.com/pierrec/lz4/v4 v4.1.14 // indirect
+ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
+ github.com/puzpuzpuz/xsync/v3 v3.4.0 // indirect
+ github.com/quic-go/qpack v0.4.0 // indirect
+ github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
+ github.com/sagernet/cors v1.2.1 // indirect
+ github.com/sagernet/fswatch v0.1.1 // indirect
+ github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a // indirect
+ github.com/sagernet/nftables v0.3.0-beta.4 // indirect
+ github.com/sagernet/sing v0.5.0-alpha.13 // indirect
+ github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6 // indirect
+ github.com/sagernet/sing-shadowtls v0.1.4 // indirect
+ github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 // indirect
+ github.com/samber/lo v1.47.0 // indirect
+ github.com/shirou/gopsutil/v3 v3.24.5 // indirect
+ github.com/shoenig/go-m1cpu v0.1.6 // indirect
+ github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b // indirect
+ github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c // indirect
+ github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e // indirect
+ github.com/sirupsen/logrus v1.9.3 // indirect
+ github.com/tklauser/go-sysconf v0.3.12 // indirect
+ github.com/tklauser/numcpus v0.6.1 // indirect
+ github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 // indirect
+ github.com/vishvananda/netns v0.0.4 // indirect
+ github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect
+ github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
+ github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
+ github.com/yusufpapurcu/wmi v1.2.4 // indirect
+ gitlab.com/go-extension/aes-ccm v0.0.0-20230221065045-e58665ef23c7 // indirect
+ gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec // indirect
+ go.uber.org/mock v0.4.0 // indirect
+ go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect
+ golang.org/x/crypto v0.28.0 // indirect
+ golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e // indirect
+ golang.org/x/mod v0.20.0 // indirect
+ golang.org/x/net v0.30.0 // indirect
+ golang.org/x/sys v0.26.0 // indirect
+ golang.org/x/text v0.19.0 // indirect
+ golang.org/x/time v0.5.0 // indirect
+ golang.org/x/tools v0.24.0 // indirect
+ google.golang.org/protobuf v1.34.2 // indirect
+ lukechampine.com/blake3 v1.3.0 // indirect
+)
diff --git a/Android-kotlin-Code/core/src/main/golang/go.sum b/Android-kotlin-Code/core/src/main/golang/go.sum
new file mode 100644
index 0000000..f76f3a5
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/go.sum
@@ -0,0 +1,278 @@
+github.com/3andne/restls-client-go v0.1.6 h1:tRx/YilqW7iHpgmEL4E1D8dAsuB0tFF3uvncS+B6I08=
+github.com/3andne/restls-client-go v0.1.6/go.mod h1:iEdTZNt9kzPIxjIGSMScUFSBrUH6bFRNg0BWlP4orEY=
+github.com/RyuaNerin/elliptic2 v1.0.0/go.mod h1:wWB8fWrJI/6EPJkyV/r1Rj0hxUgrusmqSj8JN6yNf/A=
+github.com/RyuaNerin/go-krypto v1.2.4 h1:mXuNdK6M317aPV0llW6Xpjbo4moOlPF7Yxz4tb4b4Go=
+github.com/RyuaNerin/go-krypto v1.2.4/go.mod h1:QqCYkoutU3yInyD9INt2PGolVRsc3W4oraQadVGXJ/8=
+github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344 h1:cDVUiFo+npB0ZASqnw4q90ylaVAbnYyx0JYqK4YcGok=
+github.com/Yawning/aez v0.0.0-20211027044916-e49e68abd344/go.mod h1:9pIqrY6SXNL8vjRQE5Hd/OL5GyK/9MrGUWs87z/eFfk=
+github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
+github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
+github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI=
+github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
+github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=
+github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=
+github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
+github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
+github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
+github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
+github.com/coreos/go-iptables v0.8.0 h1:MPc2P89IhuVpLI7ETL/2tx3XZ61VeICZjYqDEgNsPRc=
+github.com/coreos/go-iptables v0.8.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
+github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9 h1:/5RkVc9Rc81XmMyVqawCiDyrBHZbLAZgTTCqou4mwj8=
+github.com/ericlagergren/aegis v0.0.0-20230312195928-b4ce538b56f9/go.mod h1:hkIFzoiIPZYxdFOOLyDho59b7SrDfo+w3h+yWdlg45I=
+github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391 h1:8j2RH289RJplhA6WfdaPqzg1MjH2K8wX5e0uhAxrw2g=
+github.com/ericlagergren/polyval v0.0.0-20220411101811-e25bc10ba391/go.mod h1:K2R7GhgxrlJzHw2qiPWsCZXf/kXEJN9PLnQK73Ll0po=
+github.com/ericlagergren/saferand v0.0.0-20220206064634-960a4dd2bc5c h1:RUzBDdZ+e/HEe2Nh8lYsduiPAZygUfVXJn0Ncj5sHMg=
+github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1 h1:tlDMEdcPRQKBEz5nGDMvswiajqh7k8ogWRlhRwKy5mY=
+github.com/ericlagergren/siv v0.0.0-20220507050439-0b757b3aa5f1/go.mod h1:4RfsapbGx2j/vU5xC/5/9qB3kn9Awp1YDiEnN43QrJ4=
+github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010 h1:fuGucgPk5dN6wzfnxl3D0D3rVLw4v2SbBT9jb4VnxzA=
+github.com/ericlagergren/subtle v0.0.0-20220507045147-890d697da010/go.mod h1:JtBcj7sBuTTRupn7c2bFspMDIObMJsVK8TeUvpShPok=
+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/gaukas/godicttls v0.0.4 h1:NlRaXb3J6hAnTmWdsEKb9bcSBD6BvcIjdGdeb0zfXbk=
+github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67deKr9/NCI=
+github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
+github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-chi/render v1.0.3 h1:AsXqd2a1/INaIfUSKq3G5uA8weYx20FOsM7uSoCyyt4=
+github.com/go-chi/render v1.0.3/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0=
+github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
+github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
+github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU=
+github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
+github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og=
+github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
+github.com/gobwas/ws v1.4.0 h1:CTaoG1tojrh4ucGPcoJFiAQUAsEWekEWvLy7GsVNqGs=
+github.com/gobwas/ws v1.4.0/go.mod h1:G3gNqMNtPppf5XUz7O4shetPpcZ1VJ7zt18dlUeakrc=
+github.com/gofrs/uuid/v5 v5.3.0 h1:m0mUMr+oVYUdxpMLgSYCZiXe7PuVPnI94+OMeVBNedk=
+github.com/gofrs/uuid/v5 v5.3.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
+github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/tink/go v1.6.1 h1:t7JHqO8Ath2w2ig5vjwQYJzhGEZymedQc90lQXUBa4I=
+github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
+github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475 h1:hxST5pwMBEOWmxpkX20w9oZG+hXdhKmAIPQ3NGGAxas=
+github.com/insomniacslk/dhcp v0.0.0-20240829085014-a3a4c1f04475/go.mod h1:KclMyHxX06VrVr0DJmeFSUb1ankt7xTfoOA35pCkoic=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/josharian/native v1.0.1-0.20221213033349-c1e37c09b531/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA=
+github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w=
+github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
+github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
+github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
+github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
+github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 h1:EnfXoSqDfSNJv0VBNqY/88RNnhSGYkrHaO0mmFGbVsc=
+github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40/go.mod h1:vy1vK6wD6j7xX6O6hXe621WabdtNkou2h7uRtTfRMyg=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g=
+github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw=
+github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U=
+github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA=
+github.com/metacubex/amneziawg-go v0.0.0-20240922133038-fdf3a4d5a4ab h1:Chbw+/31UC14YFNr78pESt5Vowlc62zziw05JCUqoL4=
+github.com/metacubex/amneziawg-go v0.0.0-20240922133038-fdf3a4d5a4ab/go.mod h1:xVKK8jC5Sd3hfh7WjmCq+HorehIbrBijaUWmcuKjPcI=
+github.com/metacubex/bbolt v0.0.0-20240822011022-aed6d4850399 h1:oBowHVKZycNtAFbZ6avaCSZJYeme2Nrj+4RpV2cNJig=
+github.com/metacubex/bbolt v0.0.0-20240822011022-aed6d4850399/go.mod h1:4xcieuIK+M4bGQmQYZVqEaIYqjS1ahO4kXG7EmDgEro=
+github.com/metacubex/chacha v0.1.0 h1:tg9RSJ18NvL38cCWNyYH1eiG6qDCyyXIaTLQthon0sc=
+github.com/metacubex/chacha v0.1.0/go.mod h1:Djn9bPZxLTXbJFSeyo0/qzEzQI+gUSSzttuzZM75GH8=
+github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759 h1:cjd4biTvOzK9ubNCCkQ+ldc4YSH/rILn53l/xGBFHHI=
+github.com/metacubex/gopacket v1.1.20-0.20230608035415-7e2f98a3e759/go.mod h1:UHOv2xu+RIgLwpXca7TLrXleEd4oR3sPatW6IF8wU88=
+github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec h1:HxreOiFTUrJXJautEo8rnE1uKTVGY8wtZepY1Tii/Nc=
+github.com/metacubex/gvisor v0.0.0-20240320004321-933faba989ec/go.mod h1:8BVmQ+3cxjqzWElafm24rb2Ae4jRI6vAXNXWqWjfrXw=
+github.com/metacubex/quic-go v0.47.1-0.20240909010619-6b38f24bfcc4 h1:CgdUBRxmNlxEGkp35HwvgQ10jwOOUJKWdOxpi8yWi8o=
+github.com/metacubex/quic-go v0.47.1-0.20240909010619-6b38f24bfcc4/go.mod h1:Y7yRGqFE6UQL/3aKPYmiYdjfVkeujJaStP4+jiZMcN8=
+github.com/metacubex/randv2 v0.2.0 h1:uP38uBvV2SxYfLj53kuvAjbND4RUDfFJjwr4UigMiLs=
+github.com/metacubex/randv2 v0.2.0/go.mod h1:kFi2SzrQ5WuneuoLLCMkABtiBu6VRrMrWFqSPyj2cxY=
+github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297 h1:YG/JkwGPbca5rUtEMHIu8ZuqzR7BSVm1iqY8hNoMeMA=
+github.com/metacubex/sing v0.0.0-20240724044459-6f3cf5896297/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
+github.com/metacubex/sing-quic v0.0.0-20240827003841-cd97758ed8b4 h1:HobpULaPK6OoxrHMmgcwLkwwIduXVmwdcznwUfH1GQM=
+github.com/metacubex/sing-quic v0.0.0-20240827003841-cd97758ed8b4/go.mod h1:g7Mxj7b7zm7YVqD975mk/hSmrb0A0G4bVvIMr2MMzn8=
+github.com/metacubex/sing-shadowsocks v0.2.8 h1:wIhlaigswzjPw4hej75sEvWte3QR0+AJRafgwBHO5B4=
+github.com/metacubex/sing-shadowsocks v0.2.8/go.mod h1:X3x88XtJpBxG0W0/ECOJL6Ib0SJ3xdniAkU/6/RMWU0=
+github.com/metacubex/sing-shadowsocks2 v0.2.2 h1:eaf42uVx4Lr21S6MDYs0ZdTvGA0GEhDpb9no4+gdXPo=
+github.com/metacubex/sing-shadowsocks2 v0.2.2/go.mod h1:BhOug03a/RbI7y6hp6q+6ITM1dXjnLTmeWBHSTwvv2Q=
+github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1 h1:ypfofGDZbP8p3Y4P/m74JYu7sQViesi3c8nbmT6cS0Y=
+github.com/metacubex/sing-tun v0.2.7-0.20240729131039-ed03f557dee1/go.mod h1:olbEx9yVcaw5tHTNlRamRoxmMKcvDvcVS1YLnQGzvWE=
+github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9 h1:OAXiCosqY8xKDp3pqTW3qbrCprZ1l6WkrXSFSCwyY4I=
+github.com/metacubex/sing-vmess v0.1.9-0.20240719134745-1df6fb20bbf9/go.mod h1:olVkD4FChQ5gKMHG4ZzuD7+fMkJY1G8vwOKpRehjrmY=
+github.com/metacubex/sing-wireguard v0.0.0-20240924052438-b0976fc59ea3 h1:xg71VmzLS6ByAzi/57phwDvjE+dLLs+ozH00k4DnOns=
+github.com/metacubex/sing-wireguard v0.0.0-20240924052438-b0976fc59ea3/go.mod h1:6nitcmzPDL3MXnLdhu6Hm126Zk4S1fBbX3P7jxUxSFw=
+github.com/metacubex/tfo-go v0.0.0-20241006021335-daedaf0ca7aa h1:9mcjV+RGZVC3reJBNDjjNPyS8PmFG97zq56X7WNaFO4=
+github.com/metacubex/tfo-go v0.0.0-20241006021335-daedaf0ca7aa/go.mod h1:4tLB5c8U0CxpkFM+AJJB77jEaVDbLH5XQvy42vAGsWw=
+github.com/metacubex/utls v1.6.6 h1:3D12YKHTf2Z41UPhQU2dWerNWJ5TVQD9gKoQ+H+iLC8=
+github.com/metacubex/utls v1.6.6/go.mod h1:+WLFUnXjcpdxXCnyX25nggw8C6YonZ8zOK2Zm/oRvdo=
+github.com/metacubex/wireguard-go v0.0.0-20240922131502-c182e7471181 h1:hJLQviGySBuaynlCwf/oYgIxbVbGRUIKZCxdya9YrbQ=
+github.com/metacubex/wireguard-go v0.0.0-20240922131502-c182e7471181/go.mod h1:phewKljNYiTVT31Gcif8RiCKnTUOgVWFJjccqYM8s+Y=
+github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ=
+github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ=
+github.com/mroth/weightedrand/v2 v2.1.0 h1:o1ascnB1CIVzsqlfArQQjeMy1U0NcIbBO5rfd5E/OeU=
+github.com/mroth/weightedrand/v2 v2.1.0/go.mod h1:f2faGsfOGOwc1p94wzHKKZyTpcJUW7OJ/9U4yfiNAOU=
+github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7 h1:1102pQc2SEPp5+xrS26wEaeb26sZy6k9/ZXlZN+eXE4=
+github.com/oasisprotocol/deoxysii v0.0.0-20220228165953-2091330c22b7/go.mod h1:UqoUn6cHESlliMhOnKLWr+CBH+e3bazUPvFj1XZwAjs=
+github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q=
+github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k=
+github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE=
+github.com/openacid/errors v0.8.1/go.mod h1:GUQEJJOJE3W9skHm8E8Y4phdl2LLEN8iD7c5gcGgdx0=
+github.com/openacid/low v0.1.21 h1:Tr2GNu4N/+rGRYdOsEHOE89cxUIaDViZbVmKz29uKGo=
+github.com/openacid/low v0.1.21/go.mod h1:q+MsKI6Pz2xsCkzV4BLj7NR5M4EX0sGz5AqotpZDVh0=
+github.com/openacid/must v0.1.3/go.mod h1:luPiXCuJlEo3UUFQngVQokV0MPGryeYvtCbQPs3U1+I=
+github.com/openacid/testkeys v0.1.6/go.mod h1:MfA7cACzBpbiwekivj8StqX0WIRmqlMsci1c37CA3Do=
+github.com/oschwald/maxminddb-golang v1.12.0 h1:9FnTOD0YOhP7DGxGsq4glzpGy5+w7pq50AS6wALUMYs=
+github.com/oschwald/maxminddb-golang v1.12.0/go.mod h1:q0Nob5lTCqyQ8WT6FYgS1L7PXKVVbgiymefNwIjPzgY=
+github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE=
+github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
+github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
+github.com/puzpuzpuz/xsync/v3 v3.4.0 h1:DuVBAdXuGFHv8adVXjWWZ63pJq+NRXOWVXlKDBZ+mJ4=
+github.com/puzpuzpuz/xsync/v3 v3.4.0/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA=
+github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo=
+github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A=
+github.com/quic-go/qtls-go1-20 v0.4.1 h1:D33340mCNDAIKBqXuAvexTNMUByrYmFYVfKfDN5nfFs=
+github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k=
+github.com/sagernet/cors v1.2.1 h1:Cv5Z8y9YSD6Gm+qSpNrL3LO4lD3eQVvbFYJSG7JCMHQ=
+github.com/sagernet/cors v1.2.1/go.mod h1:O64VyOjjhrkLmQIjF4KGRrJO/5dVXFdpEmCW/eISRAI=
+github.com/sagernet/fswatch v0.1.1 h1:YqID+93B7VRfqIH3PArW/XpJv5H4OLEVWDfProGoRQs=
+github.com/sagernet/fswatch v0.1.1/go.mod h1:nz85laH0mkQqJfaOrqPpkwtU1znMFNVTpT/5oRsVz/o=
+github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a h1:ObwtHN2VpqE0ZNjr6sGeT00J8uU7JF4cNUdb44/Duis=
+github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
+github.com/sagernet/nftables v0.3.0-beta.4 h1:kbULlAwAC3jvdGAC1P5Fa3GSxVwQJibNenDW2zaXr8I=
+github.com/sagernet/nftables v0.3.0-beta.4/go.mod h1:OQXAjvjNGGFxaTgVCSTRIhYB5/llyVDeapVoENYBDS8=
+github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6 h1:5bCAkvDDzSMITiHFjolBwpdqYsvycdTu71FsMEFXQ14=
+github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6/go.mod h1:khzr9AOPocLa+g53dBplwNDz4gdsyx/YM3swtAhlkHQ=
+github.com/sagernet/sing-shadowtls v0.1.4 h1:aTgBSJEgnumzFenPvc+kbD9/W0PywzWevnVpEx6Tw3k=
+github.com/sagernet/sing-shadowtls v0.1.4/go.mod h1:F8NBgsY5YN2beQavdgdm1DPlhaKQlaL6lpDdcBglGK4=
+github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 h1:DImB4lELfQhplLTxeq2z31Fpv8CQqqrUwTbrIRumZqQ=
+github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7/go.mod h1:FP9X2xjT/Az1EsG/orYYoC+5MojWnuI7hrffz8fGwwo=
+github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc=
+github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU=
+github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
+github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk=
+github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
+github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
+github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
+github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b h1:rXHg9GrUEtWZhEkrykicdND3VPjlVbYiLdX9J7gimS8=
+github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b/go.mod h1:X7qrxNQViEaAN9LNZOPl9PfvQtp3V3c7LTo0dvGi0fM=
+github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c h1:DjKMC30y6yjG3IxDaeAj3PCoRr+IsO+bzyT+Se2m2Hk=
+github.com/sina-ghaderi/rabaead v0.0.0-20220730151906-ab6e06b96e8c/go.mod h1:NV/a66PhhWYVmUMaotlXJ8fIEFB98u+c8l/CQIEFLrU=
+github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e h1:ur8uMsPIFG3i4Gi093BQITvwH9znsz2VUZmnmwHvpIo=
+github.com/sina-ghaderi/rabbitio v0.0.0-20220730151941-9ce26f4f872e/go.mod h1:+e5fBW3bpPyo+3uLo513gIUblc03egGjMM0+5GKbzK8=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
+github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
+github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
+github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
+github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 h1:tHNk7XK9GkmKUR6Gh8gVBKXc2MVSZ4G/NnWLtzw4gNA=
+github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923/go.mod h1:eLL9Nub3yfAho7qB0MzZizFhTU2QkLeoVsWdHtDW264=
+github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
+github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=
+github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
+github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8=
+github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM=
+github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8=
+github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
+github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
+github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
+github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
+github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
+github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
+github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
+gitlab.com/go-extension/aes-ccm v0.0.0-20230221065045-e58665ef23c7 h1:UNrDfkQqiEYzdMlNsVvBYOAJWZjdktqFE9tQh5BT2+4=
+gitlab.com/go-extension/aes-ccm v0.0.0-20230221065045-e58665ef23c7/go.mod h1:E+rxHvJG9H6PUdzq9NRG6csuLN3XUx98BfGOVWNYnXs=
+gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec h1:FpfFs4EhNehiVfzQttTuxanPIT43FtkkCFypIod8LHo=
+gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec/go.mod h1:BZ1RAoRPbCxum9Grlv5aeksu2H8BiKehBYooU2LFiOQ=
+go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
+go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
+go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBseWJUpBw5I82+2U4M=
+go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
+golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
+golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e h1:I88y4caeGeuDQxgdoFPUq097j7kNfw6uvuiNxUBfcBk=
+golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
+golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
+golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
+golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
+golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
+golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
+golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE=
+lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
diff --git a/Android-kotlin-Code/core/src/main/golang/native/all/imports.go b/Android-kotlin-Code/core/src/main/golang/native/all/imports.go
new file mode 100644
index 0000000..0008d78
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/all/imports.go
@@ -0,0 +1,16 @@
+package all
+
+import (
+ _ "cfa/native/app"
+ _ "cfa/native/common"
+ _ "cfa/native/config"
+ _ "cfa/native/delegate"
+ _ "cfa/native/platform"
+ _ "cfa/native/proxy"
+ _ "cfa/native/tun"
+ _ "cfa/native/tunnel"
+
+ _ "golang.org/x/sync/semaphore"
+
+ _ "github.com/metacubex/mihomo/log"
+)
diff --git a/Android-kotlin-Code/core/src/main/golang/native/app.go b/Android-kotlin-Code/core/src/main/golang/native/app.go
new file mode 100644
index 0000000..1c9ad60
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/app.go
@@ -0,0 +1,61 @@
+package main
+
+//#include "bridge.h"
+import "C"
+
+import (
+ "errors"
+ "unsafe"
+
+ "cfa/native/app"
+
+ "github.com/metacubex/mihomo/log"
+)
+
+func openRemoteContent(url string) (int, error) {
+ u := C.CString(url)
+ e := (*C.char)(C.malloc(1024))
+
+ log.Debugln("Open remote url: %s", url)
+
+ defer C.free(unsafe.Pointer(e))
+
+ fd := C.open_content(u, e, 1024)
+
+ if fd < 0 {
+ return -1, errors.New(C.GoString(e))
+ }
+
+ return int(fd), nil
+}
+
+//export notifyDnsChanged
+func notifyDnsChanged(dnsList C.c_string) {
+ d := C.GoString(dnsList)
+
+ app.NotifyDnsChanged(d)
+}
+
+//export notifyInstalledAppsChanged
+func notifyInstalledAppsChanged(uids C.c_string) {
+ u := C.GoString(uids)
+
+ app.NotifyInstallAppsChanged(u)
+}
+
+//export notifyTimeZoneChanged
+func notifyTimeZoneChanged(name C.c_string, offset C.int) {
+ app.NotifyTimeZoneChanged(C.GoString(name), int(offset))
+}
+
+
+//export queryConfiguration
+func queryConfiguration() *C.char {
+ response := &struct{}{}
+
+ return marshalJson(&response)
+}
+
+func init() {
+ app.ApplyContentContext(openRemoteContent)
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/golang/native/app/app.go b/Android-kotlin-Code/core/src/main/golang/native/app/app.go
new file mode 100644
index 0000000..7575d1e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/app/app.go
@@ -0,0 +1,53 @@
+package app
+
+import (
+ "strconv"
+ "strings"
+ "time"
+)
+
+var appVersionName string
+var platformVersion int
+var installedAppsUid = map[int]string{}
+
+func ApplyVersionName(versionName string) {
+ appVersionName = versionName
+}
+
+func ApplyPlatformVersion(version int) {
+ platformVersion = version
+}
+
+func VersionName() string {
+ return appVersionName
+}
+
+func PlatformVersion() int {
+ return platformVersion
+}
+
+func NotifyInstallAppsChanged(uidList string) {
+ uids := map[int]string{}
+
+ for _, item := range strings.Split(uidList, ",") {
+ kv := strings.Split(item, ":")
+ if len(kv) == 2 {
+ uid, err := strconv.Atoi(kv[0])
+ if err != nil {
+ continue
+ }
+
+ uids[uid] = kv[1]
+ }
+ }
+
+ installedAppsUid = uids
+}
+
+func QueryAppByUid(uid int) string {
+ return installedAppsUid[uid]
+}
+
+func NotifyTimeZoneChanged(name string, offset int) {
+ time.Local = time.FixedZone(name, offset)
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/golang/native/app/content.go b/Android-kotlin-Code/core/src/main/golang/native/app/content.go
new file mode 100644
index 0000000..b344c6b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/app/content.go
@@ -0,0 +1,27 @@
+package app
+
+import (
+ "errors"
+ "os"
+ "syscall"
+)
+
+var openContentImpl = func(url string) (int, error) {
+ return -1, errors.New("not implement")
+}
+
+func OpenContent(url string) (*os.File, error) {
+ fd, err := openContentImpl(url)
+
+ if err != nil {
+ return nil, err
+ }
+
+ _ = syscall.SetNonblock(fd, true)
+
+ return os.NewFile(uintptr(fd), "fd"), nil
+}
+
+func ApplyContentContext(openContent func(string) (int, error)) {
+ openContentImpl = openContent
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/app/dns.go b/Android-kotlin-Code/core/src/main/golang/native/app/dns.go
new file mode 100644
index 0000000..d5af82a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/app/dns.go
@@ -0,0 +1,16 @@
+package app
+
+import (
+ "strings"
+
+ "github.com/metacubex/mihomo/dns"
+)
+
+func NotifyDnsChanged(dnsList string) {
+ var addr []string
+ if len(dnsList) > 0 {
+ addr = strings.Split(dnsList, ",")
+ }
+ dns.UpdateSystemDNS(addr)
+ dns.FlushCacheWithDefaultResolver()
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/app/tun.go b/Android-kotlin-Code/core/src/main/golang/native/app/tun.go
new file mode 100644
index 0000000..5bf7b0a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/app/tun.go
@@ -0,0 +1,51 @@
+package app
+
+import (
+ "net"
+ "syscall"
+
+ "cfa/native/platform"
+)
+
+var markSocketImpl func(fd int)
+var querySocketUidImpl func(protocol int, source, target string) int
+
+func MarkSocket(fd int) {
+ markSocketImpl(fd)
+}
+
+func QuerySocketUid(source, target net.Addr) int {
+ var protocol int
+
+ switch source.Network() {
+ case "udp", "udp4", "udp6":
+ protocol = syscall.IPPROTO_UDP
+ case "tcp", "tcp4", "tcp6":
+ protocol = syscall.IPPROTO_TCP
+ default:
+ return -1
+ }
+
+ if PlatformVersion() < 29 {
+ return platform.QuerySocketUidFromProcFs(source, target)
+ }
+
+ return querySocketUidImpl(protocol, source.String(), target.String())
+}
+
+func ApplyTunContext(markSocket func(fd int), querySocketUid func(int, string, string) int) {
+ if markSocket == nil {
+ markSocket = func(fd int) {}
+ }
+
+ if querySocketUid == nil {
+ querySocketUid = func(int, string, string) int { return -1 }
+ }
+
+ markSocketImpl = markSocket
+ querySocketUidImpl = querySocketUid
+}
+
+func init() {
+ ApplyTunContext(nil, nil)
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/app/ui.go b/Android-kotlin-Code/core/src/main/golang/native/app/ui.go
new file mode 100644
index 0000000..2ba13e6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/app/ui.go
@@ -0,0 +1,34 @@
+package app
+
+import (
+ "github.com/dlclark/regexp2"
+
+ "github.com/metacubex/mihomo/log"
+)
+
+var uiSubtitlePattern *regexp2.Regexp
+
+func ApplySubtitlePattern(pattern string) {
+ if pattern == "" {
+ uiSubtitlePattern = nil
+
+ return
+ }
+
+ if o := uiSubtitlePattern; o != nil && o.String() == pattern {
+ return
+ }
+
+ reg, err := regexp2.Compile(pattern, regexp2.IgnoreCase|regexp2.Compiled)
+ if err == nil {
+ uiSubtitlePattern = reg
+ } else {
+ uiSubtitlePattern = nil
+
+ log.Warnln("Compile ui-subtitle-pattern: %s", err.Error())
+ }
+}
+
+func SubtitlePattern() *regexp2.Regexp {
+ return uiSubtitlePattern
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/bridge.c b/Android-kotlin-Code/core/src/main/golang/native/bridge.c
new file mode 100644
index 0000000..d4dabab
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/bridge.c
@@ -0,0 +1,115 @@
+#include "bridge.h"
+#include "trace.h"
+
+void (*mark_socket_func)(void *tun_interface, int fd);
+
+int (*query_socket_uid_func)(void *tun_interface, int protocol, const char *source, const char *target);
+
+void (*complete_func)(void *completable, const char *exception);
+
+void (*fetch_report_func)(void *fetch_callback, const char *status_json);
+
+void (*fetch_complete_func)(void *fetch_callback, const char *error);
+
+int (*logcat_received_func)(void *logcat_interface, const char *payload);
+
+int (*open_content_func)(const char *url, char *error, int error_length);
+
+void (*release_object_func)(void *obj);
+
+void mark_socket(void *interface, int fd) {
+ TRACE_METHOD();
+
+ mark_socket_func(interface, fd);
+}
+
+int query_socket_uid(void *interface, int protocol, char *source, char *target) {
+ TRACE_METHOD();
+
+ int result = query_socket_uid_func(interface, protocol, source, target);
+
+ free(source);
+ free(target);
+
+ return result;
+}
+
+void complete(void *obj, char *error) {
+ TRACE_METHOD();
+
+ complete_func(obj, error);
+
+ free(error);
+}
+
+void fetch_complete(void *fetch_callback, char *exception) {
+ TRACE_METHOD();
+
+ fetch_complete_func(fetch_callback, exception);
+
+ free(exception);
+}
+
+void fetch_report(void *fetch_callback, char *json_status) {
+ TRACE_METHOD();
+
+ fetch_report_func(fetch_callback, json_status);
+
+ free(json_status);
+}
+
+int logcat_received(void *logcat_interface, char *payload) {
+ TRACE_METHOD();
+
+ int result = logcat_received_func(logcat_interface, payload);
+
+ free(payload);
+
+ return result;
+}
+
+int open_content(char *url, char *error, int error_length) {
+ TRACE_METHOD();
+
+ int result = open_content_func(url, error, error_length);
+
+ free(url);
+
+ return result;
+}
+
+void release_object(void *obj) {
+ TRACE_METHOD();
+
+ release_object_func(obj);
+}
+
+void log_info(char *msg) {
+ __android_log_write(ANDROID_LOG_INFO, TAG, msg);
+
+ free(msg);
+}
+
+void log_error(char *msg) {
+ __android_log_write(ANDROID_LOG_ERROR, TAG, msg);
+
+ free(msg);
+}
+
+void log_warn(char *msg) {
+ __android_log_write(ANDROID_LOG_WARN, TAG, msg);
+
+ free(msg);
+}
+
+void log_debug(char *msg) {
+ __android_log_write(ANDROID_LOG_DEBUG, TAG, msg);
+
+ free(msg);
+}
+
+void log_verbose(char *msg) {
+ __android_log_write(ANDROID_LOG_VERBOSE, TAG, msg);
+
+ free(msg);
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/bridge.h b/Android-kotlin-Code/core/src/main/golang/native/bridge.h
new file mode 100644
index 0000000..62aae12
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/bridge.h
@@ -0,0 +1,53 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+
+#define TAG "ClashMetaForAndroid"
+
+typedef const char *c_string;
+
+extern void (*mark_socket_func)(void *tun_interface, int fd);
+
+extern int (*query_socket_uid_func)(void *tun_interface, int protocol, const char *source, const char *target);
+
+extern void (*complete_func)(void *completable, const char *exception);
+
+extern void (*fetch_report_func)(void *fetch_callback, const char *status_json);
+
+extern void (*fetch_complete_func)(void *fetch_callback, const char *error);
+
+extern int (*logcat_received_func)(void *logcat_interface, const char *payload);
+
+extern void (*release_object_func)(void *obj);
+
+extern int (*open_content_func)(const char *url, char *error, int error_length);
+
+// cgo
+extern void mark_socket(void *interface, int fd);
+
+extern int query_socket_uid(void *interface, int protocol, char *source, char *target);
+
+extern void complete(void *obj, char *error);
+
+extern void fetch_complete(void *completable, char *exception);
+
+extern void fetch_report(void *fetch_callback, char *status_json);
+
+extern int logcat_received(void *logcat_interface, char *payload);
+
+extern void release_object(void *obj);
+
+extern int open_content(char *url, char *error, int error_length);
+
+extern void log_info(char *msg);
+
+extern void log_error(char *msg);
+
+extern void log_warn(char *msg);
+
+extern void log_debug(char *msg);
+
+extern void log_verbose(char *msg);
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/golang/native/common/path.go b/Android-kotlin-Code/core/src/main/golang/native/common/path.go
new file mode 100644
index 0000000..42542a6
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/common/path.go
@@ -0,0 +1,23 @@
+package common
+
+import "strings"
+
+func ResolveAsRoot(path string) string {
+ directories := strings.Split(path, "/")
+ result := make([]string, 0, len(directories))
+
+ for _, directory := range directories {
+ switch directory {
+ case "", ".":
+ continue
+ case "..":
+ if len(result) > 0 {
+ result = result[:len(result)-1]
+ }
+ default:
+ result = append(result, directory)
+ }
+ }
+
+ return strings.Join(result, "/")
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/config.go b/Android-kotlin-Code/core/src/main/golang/native/config.go
new file mode 100644
index 0000000..f1e4160
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/config.go
@@ -0,0 +1,62 @@
+package main
+
+//#include "bridge.h"
+import "C"
+
+import (
+ "runtime"
+ "unsafe"
+
+ "cfa/native/config"
+)
+
+type remoteValidCallback struct {
+ callback unsafe.Pointer
+}
+
+func (r *remoteValidCallback) reportStatus(json string) {
+ C.fetch_report(r.callback, marshalString(json))
+}
+
+//export fetchAndValid
+func fetchAndValid(callback unsafe.Pointer, path, url C.c_string, force C.int) {
+ go func(path, url string, callback unsafe.Pointer) {
+ cb := &remoteValidCallback{callback: callback}
+
+ err := config.FetchAndValid(path, url, force != 0, cb.reportStatus)
+
+ C.fetch_complete(callback, marshalString(err))
+
+ C.release_object(callback)
+
+ runtime.GC()
+ }(C.GoString(path), C.GoString(url), callback)
+}
+
+//export load
+func load(completable unsafe.Pointer, path C.c_string) {
+ go func(path string) {
+ C.complete(completable, marshalString(config.Load(path)))
+
+ C.release_object(completable)
+
+ runtime.GC()
+ }(C.GoString(path))
+}
+
+//export readOverride
+func readOverride(slot C.int) *C.char {
+ return C.CString(config.ReadOverride(config.OverrideSlot(slot)))
+}
+
+//export writeOverride
+func writeOverride(slot C.int, content C.c_string) {
+ c := C.GoString(content)
+
+ config.WriteOverride(config.OverrideSlot(slot), c)
+}
+
+//export clearOverride
+func clearOverride(slot C.int) {
+ config.ClearOverride(config.OverrideSlot(slot))
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/golang/native/config/defaults.go b/Android-kotlin-Code/core/src/main/golang/native/config/defaults.go
new file mode 100644
index 0000000..49d00c4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/config/defaults.go
@@ -0,0 +1,41 @@
+package config
+
+var (
+ defaultNameServers = []string{
+ "223.5.5.5",
+ "119.29.29.29",
+ "8.8.4.4",
+ "1.0.0.1",
+ }
+ defaultFakeIPFilter = []string{
+ // Stun Services
+ "+.stun.*.*",
+ "+.stun.*.*.*",
+ "+.stun.*.*.*.*",
+ "+.stun.*.*.*.*.*",
+
+ // Google Voices
+ "lens.l.google.com",
+
+ // Nintendo Switch STUN
+ "*.n.n.srv.nintendo.net",
+
+ // PlayStation STUN
+ "+.stun.playstation.net",
+
+ // XBox
+ "xbox.*.*.microsoft.com",
+ "*.*.xboxlive.com",
+
+ // Microsoft Captive Portal
+ "*.msftncsi.com",
+ "*.msftconnecttest.com",
+
+ // Bilibili CDN
+ "*.mcdn.bilivideo.cn",
+
+ // Windows Default LAN WorkGroup
+ "WORKGROUP",
+ }
+ defaultFakeIPRange = "28.0.0.0/8"
+)
diff --git a/Android-kotlin-Code/core/src/main/golang/native/config/fetch.go b/Android-kotlin-Code/core/src/main/golang/native/config/fetch.go
new file mode 100644
index 0000000..ba08ebc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/config/fetch.go
@@ -0,0 +1,168 @@
+package config
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+ "io"
+ "net/http"
+ U "net/url"
+ "os"
+ P "path"
+ "runtime"
+ "time"
+
+ "cfa/native/app"
+
+ clashHttp "github.com/metacubex/mihomo/component/http"
+)
+
+type Status struct {
+ Action string `json:"action"`
+ Args []string `json:"args"`
+ Progress int `json:"progress"`
+ MaxProgress int `json:"max"`
+}
+
+func openUrl(ctx context.Context, url string) (io.ReadCloser, error) {
+ response, err := clashHttp.HttpRequest(ctx, url, http.MethodGet, http.Header{"User-Agent": {"ClashMetaForAndroid/" + app.VersionName()}}, nil)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return response.Body, nil
+}
+
+func openContent(url string) (io.ReadCloser, error) {
+ return app.OpenContent(url)
+}
+
+func fetch(url *U.URL, file string) error {
+ ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
+ defer cancel()
+
+ var reader io.ReadCloser
+ var err error
+
+ switch url.Scheme {
+ case "http", "https":
+ reader, err = openUrl(ctx, url.String())
+ case "content":
+ reader, err = openContent(url.String())
+ default:
+ err = fmt.Errorf("unsupported scheme %s of %s", url.Scheme, url)
+ }
+
+ if err != nil {
+ return err
+ }
+
+ defer reader.Close()
+
+ _ = os.MkdirAll(P.Dir(file), 0700)
+
+ f, err := os.OpenFile(file, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0600)
+ if err != nil {
+ return err
+ }
+
+ defer f.Close()
+
+ _, err = io.Copy(f, reader)
+ if err != nil {
+ _ = os.Remove(file)
+ }
+
+ return err
+}
+
+func FetchAndValid(
+ path string,
+ url string,
+ force bool,
+ reportStatus func(string),
+) error {
+ configPath := P.Join(path, "config.yaml")
+
+ if _, err := os.Stat(configPath); os.IsNotExist(err) || force {
+ url, err := U.Parse(url)
+ if err != nil {
+ return err
+ }
+
+ bytes, _ := json.Marshal(&Status{
+ Action: "FetchConfiguration",
+ Args: []string{url.Host},
+ Progress: -1,
+ MaxProgress: -1,
+ })
+
+ reportStatus(string(bytes))
+
+ if err := fetch(url, configPath); err != nil {
+ return err
+ }
+ }
+
+ defer runtime.GC()
+
+ rawCfg, err := UnmarshalAndPatch(path)
+ if err != nil {
+ return err
+ }
+
+ forEachProviders(rawCfg, func(index int, total int, name string, provider map[string]any, prefix string) {
+ bytes, _ := json.Marshal(&Status{
+ Action: "FetchProviders",
+ Args: []string{name},
+ Progress: index,
+ MaxProgress: total,
+ })
+
+ reportStatus(string(bytes))
+
+ u, uok := provider["url"]
+ p, pok := provider["path"]
+
+ if !uok || !pok {
+ return
+ }
+
+ us, uok := u.(string)
+ ps, pok := p.(string)
+
+ if !uok || !pok {
+ return
+ }
+
+ if _, err := os.Stat(ps); err == nil {
+ return
+ }
+
+ url, err := U.Parse(us)
+ if err != nil {
+ return
+ }
+
+ _ = fetch(url, ps)
+ })
+
+ bytes, _ := json.Marshal(&Status{
+ Action: "Verifying",
+ Args: []string{},
+ Progress: 0xffff,
+ MaxProgress: 0xffff,
+ })
+
+ reportStatus(string(bytes))
+
+ cfg, err := Parse(rawCfg)
+ if err != nil {
+ return err
+ }
+
+ destroyProviders(cfg)
+
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/config/load.go b/Android-kotlin-Code/core/src/main/golang/native/config/load.go
new file mode 100644
index 0000000..c6b3a4f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/config/load.go
@@ -0,0 +1,96 @@
+package config
+
+import (
+ "os"
+ P "path"
+ "runtime"
+ "strings"
+
+ "gopkg.in/yaml.v3"
+
+ "cfa/native/app"
+
+ "github.com/metacubex/mihomo/config"
+ "github.com/metacubex/mihomo/hub"
+ "github.com/metacubex/mihomo/log"
+)
+
+func logDns(cfg *config.RawConfig) {
+ bytes, err := yaml.Marshal(&cfg.DNS)
+ if err != nil {
+ log.Warnln("Marshal dns: %s", err.Error())
+
+ return
+ }
+
+ log.Infoln("dns:")
+
+ for _, line := range strings.Split(string(bytes), "\n") {
+ log.Infoln(" %s", line)
+ }
+}
+
+func UnmarshalAndPatch(profilePath string) (*config.RawConfig, error) {
+ configPath := P.Join(profilePath, "config.yaml")
+
+ configData, err := os.ReadFile(configPath)
+ if err != nil {
+ return nil, err
+ }
+
+ rawConfig, err := config.UnmarshalRawConfig(configData)
+ if err != nil {
+ return nil, err
+ }
+
+ if err := process(rawConfig, profilePath); err != nil {
+ return nil, err
+ }
+
+ return rawConfig, nil
+}
+
+func Parse(rawConfig *config.RawConfig) (*config.Config, error) {
+ cfg, err := config.ParseRawConfig(rawConfig)
+ if err != nil {
+ return nil, err
+ }
+
+ return cfg, nil
+}
+
+func Load(path string) error {
+ rawCfg, err := UnmarshalAndPatch(path)
+ if err != nil {
+ log.Errorln("Load %s: %s", path, err.Error())
+
+ return err
+ }
+
+ logDns(rawCfg)
+
+ cfg, err := Parse(rawCfg)
+ if err != nil {
+ log.Errorln("Load %s: %s", path, err.Error())
+
+ return err
+ }
+
+ // like hub.Parse()
+ hub.ApplyConfig(cfg)
+
+ app.ApplySubtitlePattern(rawCfg.ClashForAndroid.UiSubtitlePattern)
+
+ runtime.GC()
+
+ return nil
+}
+
+func LoadDefault() {
+ cfg, err := config.Parse([]byte{})
+ if err != nil {
+ panic(err.Error())
+ }
+
+ hub.ApplyConfig(cfg)
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/config/override.go b/Android-kotlin-Code/core/src/main/golang/native/config/override.go
new file mode 100644
index 0000000..cf0ae94
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/config/override.go
@@ -0,0 +1,68 @@
+package config
+
+import (
+ "io"
+ "os"
+
+ "github.com/metacubex/mihomo/constant"
+)
+
+type OverrideSlot int
+
+const (
+ OverrideSlotPersist OverrideSlot = iota
+ OverrideSlotSession
+)
+
+const defaultPersistOverride = `{}`
+const defaultSessionOverride = `{}`
+
+var sessionOverride = defaultSessionOverride
+
+func overridePersistPath() string {
+ return constant.Path.Resolve("override.json")
+}
+
+func ReadOverride(slot OverrideSlot) string {
+ switch slot {
+ case OverrideSlotPersist:
+ file, err := os.OpenFile(overridePersistPath(), os.O_RDONLY, 0600)
+ if err != nil {
+ return defaultPersistOverride
+ }
+
+ buf, err := io.ReadAll(file)
+ if err != nil {
+ return defaultPersistOverride
+ }
+
+ return string(buf)
+ case OverrideSlotSession:
+ return sessionOverride
+ }
+
+ return ""
+}
+
+func WriteOverride(slot OverrideSlot, content string) {
+ switch slot {
+ case OverrideSlotPersist:
+ file, err := os.OpenFile(overridePersistPath(), os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0600)
+ if err != nil {
+ return
+ }
+
+ _, err = file.Write([]byte(content))
+ case OverrideSlotSession:
+ sessionOverride = content
+ }
+}
+
+func ClearOverride(slot OverrideSlot) {
+ switch slot {
+ case OverrideSlotPersist:
+ _ = os.Remove(overridePersistPath())
+ case OverrideSlotSession:
+ sessionOverride = defaultSessionOverride
+ }
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/config/process.go b/Android-kotlin-Code/core/src/main/golang/native/config/process.go
new file mode 100644
index 0000000..9c98696
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/config/process.go
@@ -0,0 +1,148 @@
+package config
+
+import (
+ "encoding/json"
+ "errors"
+ "fmt"
+ "strings"
+
+ "github.com/dlclark/regexp2"
+
+ "cfa/native/common"
+
+ "github.com/metacubex/mihomo/common/utils"
+ "github.com/metacubex/mihomo/config"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/log"
+)
+
+var processors = []processor{
+ patchExternalController, // must before patchOverride, so we only apply ExternalController in Override settings
+ patchOverride,
+ patchGeneral,
+ patchProfile,
+ patchDns,
+ patchTun,
+ patchListeners,
+ patchProviders,
+ validConfig,
+}
+
+type processor func(cfg *config.RawConfig, profileDir string) error
+
+func patchOverride(cfg *config.RawConfig, _ string) error {
+ if err := json.NewDecoder(strings.NewReader(ReadOverride(OverrideSlotPersist))).Decode(cfg); err != nil {
+ log.Warnln("Apply persist override: %s", err.Error())
+ }
+ if err := json.NewDecoder(strings.NewReader(ReadOverride(OverrideSlotSession))).Decode(cfg); err != nil {
+ log.Warnln("Apply session override: %s", err.Error())
+ }
+
+ return nil
+}
+
+func patchExternalController(cfg *config.RawConfig, _ string) error {
+ cfg.ExternalController = ""
+ cfg.ExternalControllerTLS = ""
+
+ return nil
+}
+
+func patchGeneral(cfg *config.RawConfig, profileDir string) error {
+ cfg.Interface = ""
+ cfg.RoutingMark = 0
+ if cfg.ExternalController != "" || cfg.ExternalControllerTLS != "" {
+ cfg.ExternalUI = profileDir + "/ui"
+ }
+
+ return nil
+}
+
+func patchProfile(cfg *config.RawConfig, _ string) error {
+ cfg.Profile.StoreSelected = false
+ cfg.Profile.StoreFakeIP = true
+
+ return nil
+}
+
+func patchDns(cfg *config.RawConfig, _ string) error {
+ if !cfg.DNS.Enable {
+ cfg.DNS = config.RawDNS{
+ Enable: true,
+ UseHosts: true,
+ DefaultNameserver: defaultNameServers,
+ NameServer: defaultNameServers,
+ EnhancedMode: C.DNSFakeIP,
+ FakeIPRange: defaultFakeIPRange,
+ FakeIPFilter: defaultFakeIPFilter,
+ }
+
+ cfg.ClashForAndroid.AppendSystemDNS = true
+ }
+
+ if cfg.ClashForAndroid.AppendSystemDNS {
+ cfg.DNS.NameServer = append(cfg.DNS.NameServer, "system://")
+ }
+
+ return nil
+}
+
+func patchTun(cfg *config.RawConfig, _ string) error {
+ cfg.Tun.Enable = false
+ cfg.Tun.AutoRoute = false
+ cfg.Tun.AutoDetectInterface = false
+ return nil
+}
+
+func patchListeners(cfg *config.RawConfig, _ string) error {
+ newListeners := make([]map[string]any, 0, len(cfg.Listeners))
+ for _, mapping := range cfg.Listeners {
+ if proxyType, existType := mapping["type"].(string); existType {
+ switch proxyType {
+ case "tproxy", "redir", "tun":
+ continue // remove those listeners which is not supported
+ }
+ }
+ newListeners = append(newListeners, mapping)
+ }
+ cfg.Listeners = newListeners
+ return nil
+}
+
+func patchProviders(cfg *config.RawConfig, profileDir string) error {
+ forEachProviders(cfg, func(index int, total int, key string, provider map[string]any, prefix string) {
+ path, _ := provider["path"].(string)
+ if len(path) > 0 {
+ path = common.ResolveAsRoot(path)
+ } else if url, ok := provider["url"].(string); ok {
+ path = prefix + "/" + utils.MakeHash([]byte(url)).String() // same as C.GetPathByHash
+ } else {
+ return // both path and url is empty, WTF???
+ }
+ provider["path"] = profileDir + "/providers/" + path
+ })
+
+ return nil
+}
+
+func validConfig(cfg *config.RawConfig, _ string) error {
+ if len(cfg.Proxy) == 0 && len(cfg.ProxyProvider) == 0 {
+ return errors.New("profile does not contain `proxies` or `proxy-providers`")
+ }
+
+ if _, err := regexp2.Compile(cfg.ClashForAndroid.UiSubtitlePattern, 0); err != nil {
+ return fmt.Errorf("compile ui-subtitle-pattern: %s", err.Error())
+ }
+
+ return nil
+}
+
+func process(cfg *config.RawConfig, profileDir string) error {
+ for _, p := range processors {
+ if err := p(cfg, profileDir); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/config/provider.go b/Android-kotlin-Code/core/src/main/golang/native/config/provider.go
new file mode 100644
index 0000000..ebf4f34
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/config/provider.go
@@ -0,0 +1,43 @@
+package config
+
+import (
+ "io"
+
+ "github.com/metacubex/mihomo/config"
+)
+
+const (
+ PROXIES = "proxies"
+ RULES = "rules"
+)
+
+func forEachProviders(rawCfg *config.RawConfig, fun func(index int, total int, key string, provider map[string]any, prefix string)) {
+ total := len(rawCfg.ProxyProvider) + len(rawCfg.RuleProvider)
+ index := 0
+
+ for k, v := range rawCfg.ProxyProvider {
+ fun(index, total, k, v, PROXIES)
+
+ index++
+ }
+
+ for k, v := range rawCfg.RuleProvider {
+ fun(index, total, k, v, RULES)
+
+ index++
+ }
+}
+
+func destroyProviders(cfg *config.Config) {
+ for _, p := range cfg.Providers {
+ if p, ok := p.(io.Closer); ok {
+ _ = p.Close()
+ }
+ }
+
+ for _, p := range cfg.RuleProviders {
+ if p, ok := p.(io.Closer); ok {
+ _ = p.Close()
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/debug.go b/Android-kotlin-Code/core/src/main/golang/native/debug.go
new file mode 100644
index 0000000..9bf7ac7
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/debug.go
@@ -0,0 +1,18 @@
+// +build debug
+
+package main
+
+import (
+ "net/http"
+ _ "net/http/pprof"
+
+ "github.com/metacubex/mihomo/log"
+)
+
+func init() {
+ go func() {
+ log.Debugln("pprof service listen at: 0.0.0.0:8888")
+
+ _ = http.ListenAndServe("0.0.0.0:8888", nil)
+ }()
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/delegate/init.go b/Android-kotlin-Code/core/src/main/golang/native/delegate/init.go
new file mode 100644
index 0000000..9b57bc2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/delegate/init.go
@@ -0,0 +1,59 @@
+package delegate
+
+import (
+ "errors"
+ "fmt"
+ "strings"
+ "syscall"
+
+ "github.com/metacubex/mihomo/component/process"
+ "github.com/metacubex/mihomo/log"
+
+ "cfa/native/app"
+ "cfa/native/platform"
+
+ "github.com/metacubex/mihomo/component/dialer"
+ "github.com/metacubex/mihomo/constant"
+)
+
+var errBlocked = errors.New("blocked")
+
+func Init(home, versionName, gitVersion string, platformVersion int) {
+ log.Infoln("Init core, home: %s, versionName: %s, gitVersion: %s, platformVersion: %d", home, versionName, gitVersion, platformVersion)
+ constant.SetHomeDir(home)
+ // gitVersion = ${CURRENT_BRANCH}_${COMMIT_HASH}_${COMPILE_TIME}
+ if versions := strings.Split(gitVersion, "_"); len(versions) == 3 {
+ constant.Version = fmt.Sprintf("%s-%s-CMFA-%s", strings.ToLower(versions[0]), versions[1], strings.ToLower(versionName))
+ constant.BuildTime = versions[2]
+ } else {
+ constant.Version = gitVersion
+ }
+ constant.Version = strings.ToLower(constant.Version)
+ app.ApplyVersionName(versionName)
+ app.ApplyPlatformVersion(platformVersion)
+
+ process.DefaultPackageNameResolver = func(metadata *constant.Metadata) (string, error) {
+ src, dst := metadata.RawSrcAddr, metadata.RawDstAddr
+
+ if src == nil || dst == nil {
+ return "", process.ErrInvalidNetwork
+ }
+
+ uid := app.QuerySocketUid(metadata.RawSrcAddr, metadata.RawDstAddr)
+ pkg := app.QueryAppByUid(uid)
+
+ log.Debugln("[PKG] %s --> %s by %d[%s]", metadata.SourceAddress(), metadata.RemoteAddress(), uid, pkg)
+
+ return pkg, nil
+ }
+
+ dialer.DefaultSocketHook = func(network, address string, conn syscall.RawConn) error {
+ if platform.ShouldBlockConnection() {
+ return errBlocked
+ }
+
+ return conn.Control(func(fd uintptr) {
+ app.MarkSocket(int(fd))
+ })
+ }
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/log.go b/Android-kotlin-Code/core/src/main/golang/native/log.go
new file mode 100644
index 0000000..0af650a
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/log.go
@@ -0,0 +1,72 @@
+package main
+
+//#include "bridge.h"
+import "C"
+
+import (
+ "strings"
+ "time"
+ "unsafe"
+
+ "github.com/metacubex/mihomo/log"
+)
+
+type message struct {
+ Level string `json:"level"`
+ Message string `json:"message"`
+ Time int64 `json:"time"`
+}
+
+func init() {
+ go func() {
+ sub := log.Subscribe()
+ defer log.UnSubscribe(sub)
+
+ for msg := range sub {
+ cPayload := C.CString(msg.Payload)
+
+ switch msg.LogLevel {
+ case log.INFO:
+ C.log_info(cPayload)
+ case log.ERROR:
+ C.log_error(cPayload)
+ case log.WARNING:
+ C.log_warn(cPayload)
+ case log.DEBUG:
+ C.log_debug(cPayload)
+ case log.SILENT:
+ C.log_verbose(cPayload)
+ }
+ }
+ }()
+}
+
+//export subscribeLogcat
+func subscribeLogcat(remote unsafe.Pointer) {
+ go func(remote unsafe.Pointer) {
+ sub := log.Subscribe()
+ defer log.UnSubscribe(sub)
+
+ for msg := range sub {
+ if msg.LogLevel < log.Level() && !strings.HasPrefix(msg.Payload, "[APP]") {
+ continue
+ }
+
+ rMsg := &message{
+ Level: msg.LogLevel.String(),
+ Message: msg.Payload,
+ Time: time.Now().UnixNano() / 1000 / 1000,
+ }
+
+ if C.logcat_received(remote, marshalJson(rMsg)) != 0 {
+ C.release_object(remote)
+
+ log.Debugln("Logcat subscriber closed")
+
+ break
+ }
+ }
+ }(remote)
+
+ log.Infoln("[APP] Logcat level: %s", log.Level().String())
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/main.go b/Android-kotlin-Code/core/src/main/golang/native/main.go
new file mode 100644
index 0000000..077587d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/main.go
@@ -0,0 +1,55 @@
+package main
+
+/*
+#cgo LDFLAGS: -llog
+
+#include "bridge.h"
+*/
+import "C"
+
+import (
+ "runtime"
+ "runtime/debug"
+
+ "cfa/native/config"
+ "cfa/native/delegate"
+ "cfa/native/tunnel"
+
+ "github.com/metacubex/mihomo/log"
+)
+
+func main() {
+ panic("Stub!")
+}
+
+//export coreInit
+func coreInit(home, versionName, gitVersion C.c_string, sdkVersion C.int) {
+ h := C.GoString(home)
+ v := C.GoString(versionName)
+ g := C.GoString(gitVersion)
+ s := int(sdkVersion)
+
+ delegate.Init(h, v, g, s)
+
+ reset()
+}
+
+//export reset
+func reset() {
+ config.LoadDefault()
+ tunnel.ResetStatistic()
+ tunnel.CloseAllConnections()
+
+ runtime.GC()
+ debug.FreeOSMemory()
+}
+
+//export forceGc
+func forceGc() {
+ go func() {
+ log.Infoln("[APP] request force GC")
+
+ runtime.GC()
+ debug.FreeOSMemory()
+ }()
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/platform/limit.go b/Android-kotlin-Code/core/src/main/golang/native/platform/limit.go
new file mode 100644
index 0000000..018d2f3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/platform/limit.go
@@ -0,0 +1,42 @@
+// +build linux
+
+package platform
+
+import "syscall"
+
+var nullFd int
+var maxFdCount int
+
+func init() {
+ fd, err := syscall.Open("/dev/null", syscall.O_WRONLY, 0644)
+ if err != nil {
+ panic(err.Error())
+ }
+
+ nullFd = fd
+
+ var limit syscall.Rlimit
+
+ if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &limit); err != nil {
+ maxFdCount = 1024
+ } else {
+ maxFdCount = int(limit.Cur)
+ }
+
+ maxFdCount = maxFdCount / 4 * 3
+}
+
+func ShouldBlockConnection() bool {
+ fd, err := syscall.Dup(nullFd)
+ if err != nil {
+ return true
+ }
+
+ _ = syscall.Close(fd)
+
+ if fd > maxFdCount {
+ return true
+ }
+
+ return false
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/platform/procfs.go b/Android-kotlin-Code/core/src/main/golang/native/platform/procfs.go
new file mode 100644
index 0000000..1ee2a61
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/platform/procfs.go
@@ -0,0 +1,171 @@
+// +build linux
+
+package platform
+
+import (
+ "bufio"
+ "encoding/binary"
+ "encoding/hex"
+ "fmt"
+ "net"
+ "os"
+ "strconv"
+ "strings"
+ "unsafe"
+)
+
+var netIndexOfLocal = -1
+var netIndexOfUid = -1
+
+var nativeEndian binary.ByteOrder
+
+func QuerySocketUidFromProcFs(source, _ net.Addr) int {
+ if netIndexOfLocal < 0 || netIndexOfUid < 0 {
+ return -1
+ }
+
+ network := source.Network()
+
+ if strings.HasSuffix(network, "4") || strings.HasSuffix(network, "6") {
+ network = network[:len(network)-1]
+ }
+
+ path := "/proc/net/" + network
+
+ var sIP net.IP
+ var sPort int
+
+ switch s := source.(type) {
+ case *net.TCPAddr:
+ sIP = s.IP
+ sPort = s.Port
+ case *net.UDPAddr:
+ sIP = s.IP
+ sPort = s.Port
+ default:
+ return -1
+ }
+
+ sIP = sIP.To16()
+ if sIP == nil {
+ return -1
+ }
+
+ uid := doQuery(path+"6", sIP, sPort)
+ if uid == -1 {
+ sIP = sIP.To4()
+ if sIP == nil {
+ return -1
+ }
+ uid = doQuery(path, sIP, sPort)
+ }
+
+ return uid
+}
+
+func doQuery(path string, sIP net.IP, sPort int) int {
+ file, err := os.Open(path)
+ if err != nil {
+ return -1
+ }
+
+ defer file.Close()
+
+ reader := bufio.NewReader(file)
+
+ var bytes [2]byte
+
+ binary.BigEndian.PutUint16(bytes[:], uint16(sPort))
+
+ local := fmt.Sprintf("%s:%s", hex.EncodeToString(nativeEndianIP(sIP)), hex.EncodeToString(bytes[:]))
+
+ for {
+ row, _, err := reader.ReadLine()
+ if err != nil {
+ return -1
+ }
+
+ fields := strings.Fields(string(row))
+
+ if len(fields) <= netIndexOfLocal || len(fields) <= netIndexOfUid {
+ continue
+ }
+
+ if strings.EqualFold(local, fields[netIndexOfLocal]) {
+ uid, err := strconv.Atoi(fields[netIndexOfUid])
+ if err != nil {
+ return -1
+ }
+
+ return uid
+ }
+ }
+}
+
+func nativeEndianIP(ip net.IP) []byte {
+ result := make([]byte, len(ip))
+
+ for i := 0; i < len(ip); i += 4 {
+ value := binary.BigEndian.Uint32(ip[i:])
+
+ nativeEndian.PutUint32(result[i:], value)
+ }
+
+ return result
+}
+
+func init() {
+ file, err := os.Open("/proc/net/tcp")
+ if err != nil {
+ return
+ }
+
+ defer file.Close()
+
+ reader := bufio.NewReader(file)
+
+ header, _, err := reader.ReadLine()
+ if err != nil {
+ return
+ }
+
+ columns := strings.Fields(string(header))
+
+ var txQueue, rxQueue, tr, tmWhen bool
+
+ for idx, col := range columns {
+ offset := 0
+
+ if txQueue && rxQueue {
+ offset--
+ }
+
+ if tr && tmWhen {
+ offset--
+ }
+
+ switch col {
+ case "tx_queue":
+ txQueue = true
+ case "rx_queue":
+ rxQueue = true
+ case "tr":
+ tr = true
+ case "tm->when":
+ tmWhen = true
+ case "local_address":
+ netIndexOfLocal = idx + offset
+ case "uid":
+ netIndexOfUid = idx + offset
+ }
+ }
+}
+
+func init() {
+ var x uint32 = 0x01020304
+ if *(*byte)(unsafe.Pointer(&x)) == 0x01 {
+ nativeEndian = binary.BigEndian
+ } else {
+ nativeEndian = binary.LittleEndian
+ }
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/proxy.go b/Android-kotlin-Code/core/src/main/golang/native/proxy.go
new file mode 100644
index 0000000..bd2b090
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/proxy.go
@@ -0,0 +1,25 @@
+package main
+
+//#include "bridge.h"
+import "C"
+
+import (
+ "cfa/native/proxy"
+)
+
+//export startHttp
+func startHttp(listenAt C.c_string) *C.char {
+ l := C.GoString(listenAt)
+
+ listen, err := proxy.Start(l)
+ if err != nil {
+ return nil
+ }
+
+ return C.CString(listen)
+}
+
+//export stopHttp
+func stopHttp() {
+ proxy.Stop()
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/golang/native/proxy/http.go b/Android-kotlin-Code/core/src/main/golang/native/proxy/http.go
new file mode 100644
index 0000000..9c5d64b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/proxy/http.go
@@ -0,0 +1,40 @@
+package proxy
+
+import (
+ "sync"
+
+ "github.com/metacubex/mihomo/listener/http"
+ "github.com/metacubex/mihomo/tunnel"
+)
+
+var listener *http.Listener
+var lock sync.Mutex
+
+func Start(listen string) (listenAt string, err error) {
+ lock.Lock()
+ defer lock.Unlock()
+
+ stopLocked()
+
+ listener, err = http.NewWithAuthenticate(listen, tunnel.Tunnel, false)
+ if err == nil {
+ listenAt = listener.Address()
+ }
+
+ return
+}
+
+func Stop() {
+ lock.Lock()
+ defer lock.Unlock()
+
+ stopLocked()
+}
+
+func stopLocked() {
+ if listener != nil {
+ listener.Close()
+ }
+
+ listener = nil
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/trace.c b/Android-kotlin-Code/core/src/main/golang/native/trace.c
new file mode 100644
index 0000000..447abe3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/trace.c
@@ -0,0 +1,9 @@
+#include "trace.h"
+
+#if ENABLE_TRACE
+
+void trace_method_exit(const char **name) {
+ __android_log_print(ANDROID_LOG_VERBOSE, TAG, "TRACE-OUT %s", *name);
+}
+
+#endif
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/golang/native/trace.h b/Android-kotlin-Code/core/src/main/golang/native/trace.h
new file mode 100644
index 0000000..79cd067
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/trace.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "bridge.h"
+
+#include
+
+#define ENABLE_TRACE 0
+
+#if ENABLE_TRACE
+
+extern void trace_method_exit(const char **name);
+
+#define TRACE_METHOD() __attribute__((cleanup(trace_method_exit))) const char *__method_name = __FUNCTION__; __android_log_print(ANDROID_LOG_VERBOSE, TAG, "TRACE-IN %s", __method_name)
+
+#else
+
+#define TRACE_METHOD()
+
+#endif
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tun.go b/Android-kotlin-Code/core/src/main/golang/native/tun.go
new file mode 100644
index 0000000..860a1fd
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tun.go
@@ -0,0 +1,109 @@
+package main
+
+//#include "bridge.h"
+import "C"
+
+import (
+ "context"
+ "io"
+ "sync"
+ "unsafe"
+
+ "golang.org/x/sync/semaphore"
+
+ "cfa/native/app"
+ "cfa/native/tun"
+)
+
+var rTunLock sync.Mutex
+var rTun *remoteTun
+
+type remoteTun struct {
+ closer io.Closer
+ callback unsafe.Pointer
+
+ closed bool
+ limit *semaphore.Weighted
+}
+
+func (t *remoteTun) markSocket(fd int) {
+ _ = t.limit.Acquire(context.Background(), 1)
+ defer t.limit.Release(1)
+
+ if t.closed {
+ return
+ }
+
+ C.mark_socket(t.callback, C.int(fd))
+}
+
+func (t *remoteTun) querySocketUid(protocol int, source, target string) int {
+ _ = t.limit.Acquire(context.Background(), 1)
+ defer t.limit.Release(1)
+
+ if t.closed {
+ return -1
+ }
+
+ return int(C.query_socket_uid(t.callback, C.int(protocol), C.CString(source), C.CString(target)))
+}
+
+func (t *remoteTun) close() {
+ _ = t.limit.Acquire(context.TODO(), 4)
+ defer t.limit.Release(4)
+
+ t.closed = true
+
+ if t.closer != nil {
+ _ = t.closer.Close()
+ }
+
+ app.ApplyTunContext(nil, nil)
+
+ C.release_object(t.callback)
+}
+
+//export startTun
+func startTun(fd C.int, stack, gateway, portal, dns C.c_string, callback unsafe.Pointer) C.int {
+ rTunLock.Lock()
+ defer rTunLock.Unlock()
+
+ if rTun != nil {
+ rTun.close()
+ rTun = nil
+ }
+
+ f := int(fd)
+ s := C.GoString(stack)
+ g := C.GoString(gateway)
+ p := C.GoString(portal)
+ d := C.GoString(dns)
+
+ remote := &remoteTun{callback: callback, closed: false, limit: semaphore.NewWeighted(4)}
+
+ app.ApplyTunContext(remote.markSocket, remote.querySocketUid)
+
+ closer, err := tun.Start(f, s, g, p, d)
+ if err != nil {
+ remote.close()
+
+ return 1
+ }
+
+ remote.closer = closer
+
+ rTun = remote
+
+ return 0
+}
+
+//export stopTun
+func stopTun() {
+ rTunLock.Lock()
+ defer rTunLock.Unlock()
+
+ if rTun != nil {
+ rTun.close()
+ rTun = nil
+ }
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tun/tun.go b/Android-kotlin-Code/core/src/main/golang/native/tun/tun.go
new file mode 100644
index 0000000..ee2c2a9
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tun/tun.go
@@ -0,0 +1,77 @@
+package tun
+
+import (
+ "encoding/json"
+ "io"
+ "net"
+ "net/netip"
+ "strings"
+
+ C "github.com/metacubex/mihomo/constant"
+ LC "github.com/metacubex/mihomo/listener/config"
+ "github.com/metacubex/mihomo/listener/sing_tun"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/tunnel"
+)
+
+func Start(fd int, stack, gateway, portal, dns string) (io.Closer, error) {
+ log.Debugln("TUN: fd = %d, stack = %s, gateway = %s, portal = %s, dns = %s", fd, stack, gateway, portal, dns)
+
+ tunStack, ok := C.StackTypeMapping[strings.ToLower(stack)]
+ if !ok {
+ tunStack = C.TunSystem
+ }
+
+ var prefix4 []netip.Prefix
+ var prefix6 []netip.Prefix
+ for _, gatewayStr := range strings.Split(gateway, ",") { // "172.19.0.1/30" or "172.19.0.1/30,fdfe:dcba:9876::1/126"
+ gatewayStr = strings.TrimSpace(gatewayStr)
+ if len(gatewayStr) == 0 {
+ continue
+ }
+ prefix, err := netip.ParsePrefix(gatewayStr)
+ if err != nil {
+ log.Errorln("TUN:", err)
+ return nil, err
+ }
+
+ if prefix.Addr().Is4() {
+ prefix4 = append(prefix4, prefix)
+ } else {
+ prefix6 = append(prefix6, prefix)
+ }
+ }
+
+ var dnsHijack []string
+ for _, dnsStr := range strings.Split(dns, ",") { // "172.19.0.2" or "0.0.0.0"
+ dnsStr = strings.TrimSpace(dnsStr)
+ if len(dnsStr) == 0 {
+ continue
+ }
+ dnsHijack = append(dnsHijack, net.JoinHostPort(dnsStr, "53"))
+ }
+
+ options := LC.Tun{
+ Enable: true,
+ Device: sing_tun.InterfaceName,
+ Stack: tunStack,
+ DNSHijack: dnsHijack,
+ AutoRoute: false, // had set route in TunService.kt
+ AutoDetectInterface: false, // implements by VpnService::protect
+ Inet4Address: prefix4,
+ Inet6Address: prefix6,
+ MTU: 9000, // private const val TUN_MTU = 9000 in TunService.kt
+ FileDescriptor: fd,
+ }
+
+ tunOptions, _ := json.Marshal(options)
+ log.Debugln(string(tunOptions))
+
+ listener, err := sing_tun.New(options, tunnel.Tunnel)
+ if err != nil {
+ log.Errorln("TUN:", err)
+ return nil, err
+ }
+
+ return listener, nil
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tunnel.go b/Android-kotlin-Code/core/src/main/golang/native/tunnel.go
new file mode 100644
index 0000000..3e48863
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tunnel.go
@@ -0,0 +1,111 @@
+package main
+
+//#include "bridge.h"
+import "C"
+
+import (
+ "unsafe"
+
+ "cfa/native/app"
+ "cfa/native/tunnel"
+)
+
+//export queryTunnelState
+func queryTunnelState() *C.char {
+ mode := tunnel.QueryMode()
+
+ response := &struct {
+ Mode string `json:"mode"`
+ }{mode}
+
+ return marshalJson(response)
+}
+
+//export queryNow
+func queryNow(upload, download *C.uint64_t) {
+ up, down := tunnel.Now()
+
+ *upload = C.uint64_t(up)
+ *download = C.uint64_t(down)
+}
+
+//export queryTotal
+func queryTotal(upload, download *C.uint64_t) {
+ up, down := tunnel.Total()
+
+ *upload = C.uint64_t(up)
+ *download = C.uint64_t(down)
+}
+
+//export queryGroupNames
+func queryGroupNames(excludeNotSelectable C.int) *C.char {
+ return marshalJson(tunnel.QueryProxyGroupNames(excludeNotSelectable != 0))
+}
+
+//export queryGroup
+func queryGroup(name C.c_string, sortMode C.c_string) *C.char {
+ n := C.GoString(name)
+ s := C.GoString(sortMode)
+
+ mode := tunnel.Default
+
+ switch s {
+ case "Title":
+ mode = tunnel.Title
+ case "Delay":
+ mode = tunnel.Delay
+ }
+
+ response := tunnel.QueryProxyGroup(n, mode, app.SubtitlePattern())
+
+ if response == nil {
+ return nil
+ }
+
+ return marshalJson(response)
+}
+
+//export healthCheck
+func healthCheck(completable unsafe.Pointer, name C.c_string) {
+ go func(name string) {
+ tunnel.HealthCheck(name)
+
+ C.complete(completable, nil)
+ }(C.GoString(name))
+}
+
+//export healthCheckAll
+func healthCheckAll() {
+ tunnel.HealthCheckAll()
+}
+
+//export patchSelector
+func patchSelector(selector, name C.c_string) C.int {
+ s := C.GoString(selector)
+ n := C.GoString(name)
+
+ if tunnel.PatchSelector(s, n) {
+ return 1
+ }
+
+ return 0
+}
+
+//export queryProviders
+func queryProviders() *C.char {
+ return marshalJson(tunnel.QueryProviders())
+}
+
+//export updateProvider
+func updateProvider(completable unsafe.Pointer, pType C.c_string, name C.c_string) {
+ go func(pType, name string) {
+ C.complete(completable, marshalString(tunnel.UpdateProvider(pType, name)))
+
+ C.release_object(completable)
+ }(C.GoString(pType), C.GoString(name))
+}
+
+//export suspend
+func suspend(suspended C.int) {
+ tunnel.Suspend(suspended != 0)
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tunnel/conn.go b/Android-kotlin-Code/core/src/main/golang/native/tunnel/conn.go
new file mode 100644
index 0000000..a57131d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tunnel/conn.go
@@ -0,0 +1,34 @@
+package tunnel
+
+import (
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/tunnel/statistic"
+)
+
+func CloseAllConnections() {
+ statistic.DefaultManager.Range(func(c statistic.Tracker) bool {
+ _ = c.Close()
+ return true
+ })
+}
+
+func closeMatch(filter func(conn C.Connection) bool) {
+ statistic.DefaultManager.Range(func(c statistic.Tracker) bool {
+ if filter(c) {
+ _ = c.Close()
+ }
+ return true
+ })
+}
+
+func closeConnByGroup(name string) {
+ closeMatch(func(conn C.Connection) bool {
+ for _, c := range conn.Chains() {
+ if c == name {
+ return true
+ }
+ }
+
+ return false
+ })
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tunnel/connectivity.go b/Android-kotlin-Code/core/src/main/golang/native/tunnel/connectivity.go
new file mode 100644
index 0000000..be71678
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tunnel/connectivity.go
@@ -0,0 +1,49 @@
+package tunnel
+
+import (
+ "sync"
+
+ "github.com/metacubex/mihomo/adapter/outboundgroup"
+ "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/tunnel"
+)
+
+func HealthCheck(name string) {
+ p := tunnel.Proxies()[name]
+
+ if p == nil {
+ log.Warnln("Request health check for `%s`: not found", name)
+
+ return
+ }
+
+ g, ok := p.Adapter().(outboundgroup.ProxyGroup)
+ if !ok {
+ log.Warnln("Request health check for `%s`: invalid type %s", name, p.Type().String())
+
+ return
+ }
+
+ wg := &sync.WaitGroup{}
+
+ for _, pr := range g.Providers() {
+ wg.Add(1)
+
+ go func(provider provider.ProxyProvider) {
+ provider.HealthCheck()
+
+ wg.Done()
+ }(pr)
+ }
+
+ wg.Wait()
+}
+
+func HealthCheckAll() {
+ for _, g := range QueryProxyGroupNames(false) {
+ go func(group string) {
+ HealthCheck(group)
+ }(g)
+ }
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tunnel/loopback.go b/Android-kotlin-Code/core/src/main/golang/native/tunnel/loopback.go
new file mode 100644
index 0000000..bee1345
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tunnel/loopback.go
@@ -0,0 +1,7 @@
+package tunnel
+
+import (
+ "net/netip"
+)
+
+var loopback = netip.MustParseAddr("127.0.0.1")
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tunnel/providers.go b/Android-kotlin-Code/core/src/main/golang/native/tunnel/providers.go
new file mode 100644
index 0000000..5e3d2cb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tunnel/providers.go
@@ -0,0 +1,93 @@
+package tunnel
+
+import (
+ "errors"
+ "fmt"
+ "time"
+
+ "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/tunnel"
+)
+
+var ErrInvalidType = errors.New("invalid type")
+
+type Provider struct {
+ Name string `json:"name"`
+ VehicleType string `json:"vehicleType"`
+ Type string `json:"type"`
+ UpdatedAt int64 `json:"updatedAt"`
+}
+
+type UpdatableProvider interface {
+ UpdatedAt() time.Time
+}
+
+func QueryProviders() []*Provider {
+ r := tunnel.RuleProviders()
+ p := tunnel.Providers()
+
+ providers := make([]provider.Provider, 0, len(r)+len(p))
+
+ for _, rule := range r {
+ if rule.VehicleType() == provider.Compatible {
+ continue
+ }
+
+ providers = append(providers, rule)
+ }
+
+ for _, proxy := range p {
+ if proxy.VehicleType() == provider.Compatible {
+ continue
+ }
+
+ providers = append(providers, proxy)
+ }
+
+ result := make([]*Provider, 0, len(providers))
+
+ for _, p := range providers {
+ updatedAt := time.Time{}
+
+ if s, ok := p.(UpdatableProvider); ok {
+ updatedAt = s.UpdatedAt()
+ }
+
+ result = append(result, &Provider{
+ Name: p.Name(),
+ VehicleType: p.VehicleType().String(),
+ Type: p.Type().String(),
+ UpdatedAt: updatedAt.UnixNano() / 1000 / 1000,
+ })
+ }
+
+ return result
+}
+
+func UpdateProvider(t string, name string) error {
+ err := ErrInvalidType
+
+ switch t {
+ case "Rule":
+ p := tunnel.RuleProviders()[name]
+ if p == nil {
+ return fmt.Errorf("%s not found", name)
+ }
+
+ err = p.Update()
+ case "Proxy":
+ p := tunnel.Providers()[name]
+ if p == nil {
+ return fmt.Errorf("%s not found", name)
+ }
+
+ err = p.Update()
+ }
+
+ if err != nil {
+ log.Warnln("Updating provider %s: %s", name, err.Error())
+ }
+
+ return err
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tunnel/proxies.go b/Android-kotlin-Code/core/src/main/golang/native/tunnel/proxies.go
new file mode 100644
index 0000000..83ad15e
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tunnel/proxies.go
@@ -0,0 +1,240 @@
+package tunnel
+
+import (
+ "sort"
+ "strings"
+
+ "github.com/dlclark/regexp2"
+
+ "github.com/metacubex/mihomo/adapter/outboundgroup"
+ C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
+ "github.com/metacubex/mihomo/log"
+ "github.com/metacubex/mihomo/tunnel"
+)
+
+type SortMode int
+
+const (
+ Default SortMode = iota
+ Title
+ Delay
+)
+
+type Proxy struct {
+ Name string `json:"name"`
+ Title string `json:"title"`
+ Subtitle string `json:"subtitle"`
+ Type string `json:"type"`
+ Delay int `json:"delay"`
+}
+
+type ProxyGroup struct {
+ Type string `json:"type"`
+ Now string `json:"now"`
+ Proxies []*Proxy `json:"proxies"`
+}
+
+type sortableProxyList struct {
+ list []*Proxy
+ less func(a, b *Proxy) bool
+}
+
+func (s *sortableProxyList) Len() int {
+ return len(s.list)
+}
+
+func (s *sortableProxyList) Less(i, j int) bool {
+ return s.less(s.list[i], s.list[j])
+}
+
+func (s *sortableProxyList) Swap(i, j int) {
+ s.list[i], s.list[j] = s.list[j], s.list[i]
+}
+
+func QueryProxyGroupNames(excludeNotSelectable bool) []string {
+ mode := tunnel.Mode()
+
+ if mode == tunnel.Direct {
+ return []string{}
+ }
+
+ global := tunnel.Proxies()["GLOBAL"].Adapter().(outboundgroup.ProxyGroup)
+ proxies := global.Providers()[0].Proxies()
+ result := make([]string, 0, len(proxies)+1)
+
+ if mode == tunnel.Global {
+ result = append(result, "GLOBAL")
+ }
+
+ for _, p := range proxies {
+ if _, ok := p.Adapter().(outboundgroup.ProxyGroup); ok {
+ if !excludeNotSelectable || p.Type() == C.Selector {
+ result = append(result, p.Name())
+ }
+ }
+ }
+
+ return result
+}
+
+func QueryProxyGroup(name string, sortMode SortMode, uiSubtitlePattern *regexp2.Regexp) *ProxyGroup {
+ p := tunnel.Proxies()[name]
+
+ if p == nil {
+ log.Warnln("Query group `%s`: not found", name)
+
+ return nil
+ }
+
+ g, ok := p.Adapter().(outboundgroup.ProxyGroup)
+ if !ok {
+ log.Warnln("Query group `%s`: invalid type %s", name, p.Type().String())
+
+ return nil
+ }
+
+ proxies := convertProxies(g.Proxies(), uiSubtitlePattern)
+ // proxies := collectProviders(g.Providers(), uiSubtitlePattern)
+
+ switch sortMode {
+ case Title:
+ wrapper := &sortableProxyList{
+ list: proxies,
+ less: func(a, b *Proxy) bool {
+ return strings.Compare(a.Title, b.Title) < 0
+ },
+ }
+
+ sort.Sort(wrapper)
+ case Delay:
+ wrapper := &sortableProxyList{
+ list: proxies,
+ less: func(a, b *Proxy) bool {
+ return a.Delay < b.Delay
+ },
+ }
+
+ sort.Sort(wrapper)
+ case Default:
+ default:
+ }
+
+ return &ProxyGroup{
+ Type: g.Type().String(),
+ Now: g.Now(),
+ Proxies: proxies,
+ }
+}
+
+func PatchSelector(selector, name string) bool {
+ p := tunnel.Proxies()[selector]
+
+ if p == nil {
+ log.Warnln("Patch selector `%s`: not found", selector)
+
+ return false
+ }
+
+ g, ok := p.Adapter().(outboundgroup.ProxyGroup)
+ if !ok {
+ log.Warnln("Patch selector `%s`: invalid type %s", selector, p.Type().String())
+
+ return false
+ }
+
+ s, ok := g.(outboundgroup.SelectAble)
+ if !ok {
+ log.Warnln("Patch selector `%s`: invalid type %s", selector, p.Type().String())
+
+ return false
+ }
+
+ if err := s.Set(name); err != nil {
+ log.Warnln("Patch selector `%s`: %s", selector, err.Error())
+ }
+
+ log.Infoln("Patch selector %s -> %s", selector, name)
+
+ closeConnByGroup(selector)
+
+ return true
+}
+
+func convertProxies(proxies []C.Proxy, uiSubtitlePattern *regexp2.Regexp) []*Proxy {
+ result := make([]*Proxy, 0, 128)
+
+ for _, p := range proxies {
+ name := p.Name()
+ title := name
+ subtitle := p.Type().String()
+
+ if uiSubtitlePattern != nil {
+ if _, ok := p.Adapter().(outboundgroup.ProxyGroup); !ok {
+ runes := []rune(name)
+ match, err := uiSubtitlePattern.FindRunesMatch(runes)
+ if err == nil && match != nil {
+ title = string(runes[:match.Index]) + string(runes[match.Index+match.Length:])
+ subtitle = string(runes[match.Index : match.Index+match.Length])
+ }
+ }
+ }
+ testURL := "https://www.gstatic.com/generate_204"
+ for k := range p.ExtraDelayHistories() {
+ if len(k) > 0 {
+ testURL = k
+ break
+ }
+ }
+
+ result = append(result, &Proxy{
+ Name: name,
+ Title: strings.TrimSpace(title),
+ Subtitle: strings.TrimSpace(subtitle),
+ Type: p.Type().String(),
+ Delay: int(p.LastDelayForTestUrl(testURL)),
+ })
+ }
+ return result
+}
+
+func collectProviders(providers []provider.ProxyProvider, uiSubtitlePattern *regexp2.Regexp) []*Proxy {
+ result := make([]*Proxy, 0, 128)
+
+ for _, p := range providers {
+ for _, px := range p.Proxies() {
+ name := px.Name()
+ title := name
+ subtitle := px.Type().String()
+
+ if uiSubtitlePattern != nil {
+ if _, ok := px.Adapter().(outboundgroup.ProxyGroup); !ok {
+ runes := []rune(name)
+ match, err := uiSubtitlePattern.FindRunesMatch(runes)
+ if err == nil && match != nil {
+ title = string(runes[:match.Index]) + string(runes[match.Index+match.Length:])
+ subtitle = string(runes[match.Index : match.Index+match.Length])
+ }
+ }
+ }
+
+ testURL := "https://www.gstatic.com/generate_204"
+ for k := range px.ExtraDelayHistories() {
+ if len(k) > 0 {
+ testURL = k
+ break
+ }
+ }
+
+ result = append(result, &Proxy{
+ Name: name,
+ Title: strings.TrimSpace(title),
+ Subtitle: strings.TrimSpace(subtitle),
+ Type: px.Type().String(),
+ Delay: int(px.LastDelayForTestUrl(testURL)),
+ })
+ }
+ }
+
+ return result
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tunnel/state.go b/Android-kotlin-Code/core/src/main/golang/native/tunnel/state.go
new file mode 100644
index 0000000..90ed019
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tunnel/state.go
@@ -0,0 +1,9 @@
+package tunnel
+
+import (
+ "github.com/metacubex/mihomo/tunnel"
+)
+
+func QueryMode() string {
+ return tunnel.Mode().String()
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tunnel/statistic.go b/Android-kotlin-Code/core/src/main/golang/native/tunnel/statistic.go
new file mode 100644
index 0000000..7a00270
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tunnel/statistic.go
@@ -0,0 +1,17 @@
+package tunnel
+
+import (
+ "github.com/metacubex/mihomo/tunnel/statistic"
+)
+
+func ResetStatistic() {
+ statistic.DefaultManager.ResetStatistic()
+}
+
+func Now() (up int64, down int64) {
+ return statistic.DefaultManager.Now()
+}
+
+func Total() (up int64, down int64) {
+ return statistic.DefaultManager.Total()
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/tunnel/suspend.go b/Android-kotlin-Code/core/src/main/golang/native/tunnel/suspend.go
new file mode 100644
index 0000000..8926eb2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/tunnel/suspend.go
@@ -0,0 +1,9 @@
+package tunnel
+
+func Suspend(s bool) {
+ // cause by ACTION_SCREEN_OFF/ACTION_SCREEN_ON,
+ // but we don't know what should do so just ignored.
+ //
+ // WARNING: don't call core's Tunnel.OnSuspend/OnRunning at here,
+ // this will cause the core to stop processing new incoming connections when the screen is locked.
+}
diff --git a/Android-kotlin-Code/core/src/main/golang/native/utils.go b/Android-kotlin-Code/core/src/main/golang/native/utils.go
new file mode 100644
index 0000000..4f39bbf
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/golang/native/utils.go
@@ -0,0 +1,32 @@
+package main
+
+import "C"
+
+import (
+ "encoding/json"
+ "reflect"
+)
+
+func marshalJson(obj any) *C.char {
+ res, err := json.Marshal(obj)
+ if err != nil {
+ panic(err.Error())
+ }
+
+ return C.CString(string(res))
+}
+
+func marshalString(obj any) *C.char {
+ if obj == nil {
+ return nil
+ }
+
+ switch o := obj.(type) {
+ case error:
+ return C.CString(o.Error())
+ case string:
+ return C.CString(o)
+ }
+
+ panic("invalid marshal type " + reflect.TypeOf(obj).Name())
+}
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/Clash.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/Clash.kt
new file mode 100644
index 0000000..a58dc41
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/Clash.kt
@@ -0,0 +1,228 @@
+package com.github.kr328.clash.core
+
+import com.github.kr328.clash.core.bridge.*
+import com.github.kr328.clash.core.model.*
+import com.github.kr328.clash.core.util.parseInetSocketAddress
+import kotlinx.coroutines.CompletableDeferred
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.channels.ReceiveChannel
+import kotlinx.serialization.json.Json
+import kotlinx.serialization.json.JsonArray
+import kotlinx.serialization.json.jsonPrimitive
+import java.io.File
+import java.net.InetSocketAddress
+
+object Clash {
+ enum class OverrideSlot {
+ Persist, Session
+ }
+
+ private val ConfigurationOverrideJson = Json {
+ ignoreUnknownKeys = true
+ encodeDefaults = false
+ }
+
+ fun reset() {
+ Bridge.nativeReset()
+ }
+
+ fun forceGc() {
+ Bridge.nativeForceGc()
+ }
+
+ fun suspendCore(suspended: Boolean) {
+ Bridge.nativeSuspend(suspended)
+ }
+
+ fun queryTunnelState(): TunnelState {
+ val json = Bridge.nativeQueryTunnelState()
+
+ return Json.decodeFromString(TunnelState.serializer(), json)
+ }
+
+ fun queryTrafficNow(): Traffic {
+ return Bridge.nativeQueryTrafficNow()
+ }
+
+ fun queryTrafficTotal(): Traffic {
+ return Bridge.nativeQueryTrafficTotal()
+ }
+
+ fun notifyDnsChanged(dns: List) {
+ Bridge.nativeNotifyDnsChanged(dns.joinToString(separator = ","))
+ }
+
+ fun notifyTimeZoneChanged(name: String, offset: Int) {
+ Bridge.nativeNotifyTimeZoneChanged(name, offset)
+ }
+
+ fun notifyInstalledAppsChanged(uids: List>) {
+ val uidList = uids.joinToString(separator = ",") { "${it.first}:${it.second}" }
+
+ Bridge.nativeNotifyInstalledAppChanged(uidList)
+ }
+
+ fun startTun(
+ fd: Int,
+ stack: String,
+ gateway: String,
+ portal: String,
+ dns: String,
+ markSocket: (Int) -> Boolean,
+ querySocketUid: (protocol: Int, source: InetSocketAddress, target: InetSocketAddress) -> Int
+ ) {
+ Bridge.nativeStartTun(fd, stack, gateway, portal, dns, object : TunInterface {
+ override fun markSocket(fd: Int) {
+ markSocket(fd)
+ }
+
+ override fun querySocketUid(protocol: Int, source: String, target: String): Int {
+ return querySocketUid(
+ protocol,
+ parseInetSocketAddress(source),
+ parseInetSocketAddress(target)
+ )
+ }
+ })
+ }
+
+ fun stopTun() {
+ Bridge.nativeStopTun()
+ }
+
+ fun startHttp(listenAt: String): String? {
+ return Bridge.nativeStartHttp(listenAt)
+ }
+
+ fun stopHttp() {
+ Bridge.nativeStopHttp()
+ }
+
+ fun queryGroupNames(excludeNotSelectable: Boolean): List {
+ val names = Json.Default.decodeFromString(
+ JsonArray.serializer(),
+ Bridge.nativeQueryGroupNames(excludeNotSelectable)
+ )
+
+ return names.map {
+ require(it.jsonPrimitive.isString)
+
+ it.jsonPrimitive.content
+ }
+ }
+
+ fun queryGroup(name: String, sort: ProxySort): ProxyGroup {
+ return Bridge.nativeQueryGroup(name, sort.name)
+ ?.let { Json.Default.decodeFromString(ProxyGroup.serializer(), it) }
+ ?: ProxyGroup(Proxy.Type.Unknown, emptyList(), "")
+ }
+
+ fun healthCheck(name: String): CompletableDeferred {
+ return CompletableDeferred().apply {
+ Bridge.nativeHealthCheck(this, name)
+ }
+ }
+
+ fun healthCheckAll() {
+ Bridge.nativeHealthCheckAll()
+ }
+
+ fun patchSelector(selector: String, name: String): Boolean {
+ return Bridge.nativePatchSelector(selector, name)
+ }
+
+ fun fetchAndValid(
+ path: File,
+ url: String,
+ force: Boolean,
+ reportStatus: (FetchStatus) -> Unit
+ ): CompletableDeferred {
+ return CompletableDeferred().apply {
+ Bridge.nativeFetchAndValid(
+ object : FetchCallback {
+ override fun report(statusJson: String) {
+ reportStatus(
+ Json.Default.decodeFromString(
+ FetchStatus.serializer(),
+ statusJson
+ )
+ )
+ }
+
+ override fun complete(error: String?) {
+ if (error != null)
+ completeExceptionally(ClashException(error))
+ else
+ complete(Unit)
+ }
+ },
+ path.absolutePath,
+ url,
+ force
+ )
+ }
+ }
+
+ fun load(path: File): CompletableDeferred {
+ return CompletableDeferred().apply {
+ Bridge.nativeLoad(this, path.absolutePath)
+ }
+ }
+
+ fun queryProviders(): List {
+ val providers =
+ Json.Default.decodeFromString(JsonArray.serializer(), Bridge.nativeQueryProviders())
+
+ return List(providers.size) {
+ Json.Default.decodeFromJsonElement(Provider.serializer(), providers[it])
+ }
+ }
+
+ fun updateProvider(type: Provider.Type, name: String): CompletableDeferred {
+ return CompletableDeferred().apply {
+ Bridge.nativeUpdateProvider(this, type.toString(), name)
+ }
+ }
+
+ fun queryOverride(slot: OverrideSlot): ConfigurationOverride {
+ return try {
+ ConfigurationOverrideJson.decodeFromString(
+ ConfigurationOverride.serializer(),
+ Bridge.nativeReadOverride(slot.ordinal)
+ )
+ } catch (e: Exception) {
+ ConfigurationOverride()
+ }
+ }
+
+ fun patchOverride(slot: OverrideSlot, configuration: ConfigurationOverride) {
+ Bridge.nativeWriteOverride(
+ slot.ordinal,
+ ConfigurationOverrideJson.encodeToString(
+ ConfigurationOverride.serializer(),
+ configuration
+ )
+ )
+ }
+
+ fun clearOverride(slot: OverrideSlot) {
+ Bridge.nativeClearOverride(slot.ordinal)
+ }
+
+ fun queryConfiguration(): UiConfiguration {
+ return Json.Default.decodeFromString(
+ UiConfiguration.serializer(),
+ Bridge.nativeQueryConfiguration()
+ )
+ }
+
+ fun subscribeLogcat(): ReceiveChannel {
+ return Channel(32).apply {
+ Bridge.nativeSubscribeLogcat(object : LogcatInterface {
+ override fun received(jsonPayload: String) {
+ trySend(Json.decodeFromString(LogMessage.serializer(), jsonPayload))
+ }
+ })
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/Bridge.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/Bridge.kt
new file mode 100644
index 0000000..8aa26fb
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/Bridge.kt
@@ -0,0 +1,71 @@
+package com.github.kr328.clash.core.bridge
+
+import android.os.Build
+import android.os.ParcelFileDescriptor
+import androidx.annotation.Keep
+import com.github.kr328.clash.common.Global
+import com.github.kr328.clash.common.log.Log
+import kotlinx.coroutines.CompletableDeferred
+import java.io.File
+
+@Keep
+object Bridge {
+ external fun nativeReset()
+ external fun nativeForceGc()
+ external fun nativeSuspend(suspend: Boolean)
+ external fun nativeQueryTunnelState(): String
+ external fun nativeQueryTrafficNow(): Long
+ external fun nativeQueryTrafficTotal(): Long
+ external fun nativeNotifyDnsChanged(dnsList: String)
+ external fun nativeNotifyTimeZoneChanged(name: String, offset: Int)
+ external fun nativeNotifyInstalledAppChanged(uidList: String)
+ external fun nativeStartTun(fd: Int, stack: String, gateway: String, portal: String, dns: String, cb: TunInterface)
+ external fun nativeStopTun()
+ external fun nativeStartHttp(listenAt: String): String?
+ external fun nativeStopHttp()
+ external fun nativeQueryGroupNames(excludeNotSelectable: Boolean): String
+ external fun nativeQueryGroup(name: String, sort: String): String?
+ external fun nativeHealthCheck(completable: CompletableDeferred, name: String)
+ external fun nativeHealthCheckAll()
+ external fun nativePatchSelector(selector: String, name: String): Boolean
+ external fun nativeFetchAndValid(
+ completable: FetchCallback,
+ path: String,
+ url: String,
+ force: Boolean
+ )
+
+ external fun nativeLoad(completable: CompletableDeferred, path: String)
+ external fun nativeQueryProviders(): String
+ external fun nativeUpdateProvider(
+ completable: CompletableDeferred,
+ type: String,
+ name: String
+ )
+
+ external fun nativeReadOverride(slot: Int): String
+ external fun nativeWriteOverride(slot: Int, content: String)
+ external fun nativeClearOverride(slot: Int)
+ external fun nativeQueryConfiguration(): String
+ external fun nativeSubscribeLogcat(callback: LogcatInterface)
+ external fun nativeCoreVersion(): String
+
+ private external fun nativeInit(home: String, versionName: String, sdkVersion: Int)
+
+ init {
+ System.loadLibrary("bridge")
+
+ val ctx = Global.application
+
+ ParcelFileDescriptor.open(File(ctx.packageCodePath), ParcelFileDescriptor.MODE_READ_ONLY)
+ .detachFd()
+
+ val home = ctx.filesDir.resolve("clash").apply { mkdirs() }.absolutePath
+ val versionName = ctx.packageManager.getPackageInfo(ctx.packageName, 0).versionName
+ val sdkVersion = Build.VERSION.SDK_INT
+
+ Log.d("Home = $home")
+
+ nativeInit(home, versionName, sdkVersion)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/ClashException.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/ClashException.kt
new file mode 100644
index 0000000..c7d0e18
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/ClashException.kt
@@ -0,0 +1,6 @@
+package com.github.kr328.clash.core.bridge
+
+import androidx.annotation.Keep
+
+@Keep
+class ClashException(msg: String) : IllegalArgumentException(msg)
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/Content.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/Content.kt
new file mode 100644
index 0000000..b520fb8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/Content.kt
@@ -0,0 +1,21 @@
+package com.github.kr328.clash.core.bridge
+
+import android.net.Uri
+import androidx.annotation.Keep
+import com.github.kr328.clash.common.Global
+import java.io.FileNotFoundException
+
+@Keep
+object Content {
+ @JvmStatic
+ fun open(url: String): Int {
+ val uri = Uri.parse(url)
+
+ if (uri.scheme != "content") {
+ throw UnsupportedOperationException("Unsupported scheme ${uri.scheme}")
+ }
+
+ return Global.application.contentResolver.openFileDescriptor(uri, "r")?.detachFd()
+ ?: throw FileNotFoundException("$uri not found")
+ }
+}
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/FetchCallback.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/FetchCallback.kt
new file mode 100644
index 0000000..353808d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/FetchCallback.kt
@@ -0,0 +1,9 @@
+package com.github.kr328.clash.core.bridge
+
+import androidx.annotation.Keep
+
+@Keep
+interface FetchCallback {
+ fun report(statusJson: String)
+ fun complete(error: String?)
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/LogcatInterface.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/LogcatInterface.kt
new file mode 100644
index 0000000..73b2c98
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/LogcatInterface.kt
@@ -0,0 +1,8 @@
+package com.github.kr328.clash.core.bridge
+
+import androidx.annotation.Keep
+
+@Keep
+interface LogcatInterface {
+ fun received(jsonPayload: String)
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/TunInterface.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/TunInterface.kt
new file mode 100644
index 0000000..e0602a4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/bridge/TunInterface.kt
@@ -0,0 +1,9 @@
+package com.github.kr328.clash.core.bridge
+
+import androidx.annotation.Keep
+
+@Keep
+interface TunInterface {
+ fun markSocket(fd: Int)
+ fun querySocketUid(protocol: Int, source: String, target: String): Int
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt
new file mode 100644
index 0000000..3587a1d
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt
@@ -0,0 +1,242 @@
+package com.github.kr328.clash.core.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.github.kr328.clash.core.util.Parcelizer
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class ConfigurationOverride(
+ @SerialName("port")
+ var httpPort: Int? = null,
+
+ @SerialName("socks-port")
+ var socksPort: Int? = null,
+
+ @SerialName("redir-port")
+ var redirectPort: Int? = null,
+
+ @SerialName("tproxy-port")
+ var tproxyPort: Int? = null,
+
+ @SerialName("mixed-port")
+ var mixedPort: Int? = null,
+
+ @SerialName("authentication")
+ var authentication: List? = null,
+
+ @SerialName("allow-lan")
+ var allowLan: Boolean? = null,
+
+ @SerialName("bind-address")
+ var bindAddress: String? = null,
+
+ @SerialName("mode")
+ var mode: TunnelState.Mode? = null,
+
+ @SerialName("log-level")
+ var logLevel: LogMessage.Level? = null,
+
+ @SerialName("ipv6")
+ var ipv6: Boolean? = null,
+
+ @SerialName("external-controller")
+ var externalController: String? = null,
+
+ @SerialName("external-controller-tls")
+ var externalControllerTLS: String? = null,
+
+ @SerialName("external-controller-cors")
+ var externalControllerCors: ExternalControllerCors = ExternalControllerCors(),
+
+ @SerialName("secret")
+ var secret: String? = null,
+
+ @SerialName("hosts")
+ var hosts: Map? = null,
+
+ @SerialName("unified-delay")
+ var unifiedDelay: Boolean? = null,
+
+ @SerialName("geodata-mode")
+ var geodataMode: Boolean? = null,
+
+ @SerialName("tcp-concurrent")
+ var tcpConcurrent: Boolean? = null,
+
+ @SerialName("find-process-mode")
+ var findProcessMode: FindProcessMode? = null,
+
+ @SerialName("dns")
+ val dns: Dns = Dns(),
+
+ @SerialName("clash-for-android")
+ val app: App = App(),
+
+ @SerialName("sniffer")
+ val sniffer: Sniffer = Sniffer(),
+
+ @SerialName("geox-url")
+ val geoxurl: GeoXUrl = GeoXUrl(),
+) : Parcelable {
+ @Serializable
+ data class Dns(
+ @SerialName("enable")
+ var enable: Boolean? = null,
+
+ @SerialName("prefer-h3")
+ var preferH3: Boolean? = null,
+
+ @SerialName("listen")
+ var listen: String? = null,
+
+ @SerialName("ipv6")
+ var ipv6: Boolean? = null,
+
+ @SerialName("use-hosts")
+ var useHosts: Boolean? = null,
+
+ @SerialName("enhanced-mode")
+ var enhancedMode: DnsEnhancedMode? = null,
+
+ @SerialName("nameserver")
+ var nameServer: List? = null,
+
+ @SerialName("fallback")
+ var fallback: List? = null,
+
+ @SerialName("default-nameserver")
+ var defaultServer: List? = null,
+
+ @SerialName("fake-ip-filter")
+ var fakeIpFilter: List? = null,
+
+ @SerialName("fake-ip-filter-mode")
+ var fakeIPFilterMode: FilterMode? = null,
+
+ @SerialName("fallback-filter")
+ val fallbackFilter: DnsFallbackFilter = DnsFallbackFilter(),
+
+ @SerialName("nameserver-policy")
+ var nameserverPolicy: Map? = null,
+ )
+
+ @Serializable
+ data class DnsFallbackFilter(
+ @SerialName("geoip")
+ var geoIp: Boolean? = null,
+
+ @SerialName("geoip-code")
+ var geoIpCode: String? = null,
+
+ @SerialName("ipcidr")
+ var ipcidr: List? = null,
+
+ @SerialName("domain")
+ var domain: List? = null,
+ )
+
+ @Serializable
+ data class App(
+ @SerialName("append-system-dns")
+ var appendSystemDns: Boolean? = null
+ )
+
+ @Serializable
+ enum class FindProcessMode {
+ @SerialName("off")
+ Off,
+
+ @SerialName("strict")
+ Strict,
+
+ @SerialName("always")
+ Always,
+ }
+ @Serializable
+ enum class DnsEnhancedMode {
+ @SerialName("normal")
+ None,
+
+ @SerialName("redir-host")
+ Mapping,
+
+ @SerialName("fake-ip")
+ FakeIp,
+ }
+ @Serializable
+ enum class FilterMode {
+ @SerialName("blacklist")
+ BlackList,
+
+ @SerialName("whitelist")
+ WhiteList,
+ }
+
+ @Serializable
+ data class Sniffer(
+ @SerialName("enable")
+ var enable: Boolean? = null,
+
+ @SerialName("sniffing")
+ var sniffing: List? = null,
+
+ @SerialName("force-dns-mapping")
+ var forceDnsMapping: Boolean? = null,
+
+ @SerialName("parse-pure-ip")
+ var parsePureIp: Boolean? = null,
+
+ @SerialName("override-destination")
+ var overrideDestination: Boolean? = null,
+
+ @SerialName("force-domain")
+ var forceDomain: List? = null,
+
+ @SerialName("skip-domain")
+ var skipDomain: List? = null,
+
+ @SerialName("port-whitelist")
+ var portWhitelist: List? = null,
+ )
+
+ @Serializable
+ data class GeoXUrl(
+ @SerialName("geoip")
+ var geoip: String? = null,
+
+ @SerialName("mmdb")
+ var mmdb: String? = null,
+
+ @SerialName("geosite")
+ var geosite: String? = null,
+ )
+
+ @Serializable
+ data class ExternalControllerCors(
+ @SerialName("allow-origins")
+ var allowOrigins: List? = null,
+
+ @SerialName("allow-private-network")
+ var allowPrivateNetwork: Boolean? = null,
+ )
+
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ Parcelizer.encodeToParcel(serializer(), parcel, this)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): ConfigurationOverride {
+ return Parcelizer.decodeFromParcel(serializer(), parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/FetchStatus.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/FetchStatus.kt
new file mode 100644
index 0000000..2f23ab2
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/FetchStatus.kt
@@ -0,0 +1,38 @@
+package com.github.kr328.clash.core.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.github.kr328.clash.core.util.Parcelizer
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class FetchStatus(
+ val action: Action,
+ val args: List,
+ val progress: Int,
+ val max: Int
+) : Parcelable {
+ enum class Action {
+ FetchConfiguration,
+ FetchProviders,
+ Verifying,
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ override fun writeToParcel(dest: Parcel, flags: Int) {
+ Parcelizer.encodeToParcel(serializer(), dest, this)
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): FetchStatus {
+ return Parcelizer.decodeFromParcel(serializer(), parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/LogMessage.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/LogMessage.kt
new file mode 100644
index 0000000..2f71f8b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/LogMessage.kt
@@ -0,0 +1,56 @@
+@file:UseSerializers(DateSerializer::class)
+
+package com.github.kr328.clash.core.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.github.kr328.clash.core.util.DateSerializer
+import com.github.kr328.clash.core.util.Parcelizer
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+import kotlinx.serialization.UseSerializers
+import java.util.*
+
+@Serializable
+data class LogMessage(
+ val level: Level,
+ val message: String,
+ val time: Date,
+) : Parcelable {
+ @Serializable
+ enum class Level {
+ @SerialName("debug")
+ Debug,
+ @SerialName("info")
+ Info,
+ @SerialName("warning")
+ Warning,
+ @SerialName("error")
+ Error,
+ @SerialName("silent")
+ Silent,
+ @SerialName("unknown")
+ Unknown,
+ }
+
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ Parcelizer.encodeToParcel(serializer(), parcel, this)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ companion object {
+ @JvmField
+ val CREATOR = object : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): LogMessage {
+ return Parcelizer.decodeFromParcel(serializer(), parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/Provider.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/Provider.kt
new file mode 100644
index 0000000..7a2bf89
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/Provider.kt
@@ -0,0 +1,44 @@
+package com.github.kr328.clash.core.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.github.kr328.clash.core.util.Parcelizer
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class Provider(
+ val name: String,
+ val type: Type,
+ val vehicleType: VehicleType,
+ val updatedAt: Long
+) : Parcelable, Comparable {
+ enum class Type {
+ Proxy, Rule
+ }
+
+ enum class VehicleType {
+ HTTP, File, Compatible
+ }
+
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ Parcelizer.encodeToParcel(serializer(), parcel, this)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ override fun compareTo(other: Provider): Int {
+ return compareValuesBy(this, other, Provider::type, Provider::name)
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): Provider {
+ return Parcelizer.decodeFromParcel(serializer(), parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ProviderList.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ProviderList.kt
new file mode 100644
index 0000000..b96b16b
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ProviderList.kt
@@ -0,0 +1,28 @@
+package com.github.kr328.clash.core.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.github.kr328.clash.common.util.createListFromParcelSlice
+import com.github.kr328.clash.common.util.writeToParcelSlice
+
+class ProviderList(data: List) : List by data, Parcelable {
+ constructor(parcel: Parcel) : this(Provider.createListFromParcelSlice(parcel, 0, 20))
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ return writeToParcelSlice(parcel, flags)
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): ProviderList {
+ return ProviderList(parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/Proxy.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/Proxy.kt
new file mode 100644
index 0000000..fecbb43
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/Proxy.kt
@@ -0,0 +1,66 @@
+package com.github.kr328.clash.core.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.github.kr328.clash.core.util.Parcelizer
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class Proxy(
+ val name: String,
+ val title: String,
+ val subtitle: String,
+ val type: Type,
+ val delay: Int,
+) : Parcelable {
+ @Suppress("unused")
+ enum class Type(val group: Boolean) {
+ Direct(false),
+ Reject(false),
+ RejectDrop(false),
+ Compatible(false),
+ Pass(false),
+
+ Shadowsocks(false),
+ ShadowsocksR(false),
+ Snell(false),
+ Socks5(false),
+ Http(false),
+ Vmess(false),
+ Vless(false),
+ Trojan(false),
+ Hysteria(false),
+ Hysteria2(false),
+ Tuic(false),
+ WireGuard(false),
+ Dns(false),
+ Ssh(false),
+
+
+ Relay(true),
+ Selector(true),
+ Fallback(true),
+ URLTest(true),
+ LoadBalance(true),
+
+ Unknown(false);
+ }
+
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ Parcelizer.encodeToParcel(serializer(), parcel, this)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): Proxy {
+ return Parcelizer.decodeFromParcel(serializer(), parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroup.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroup.kt
new file mode 100644
index 0000000..62ff4f8
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroup.kt
@@ -0,0 +1,62 @@
+package com.github.kr328.clash.core.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.github.kr328.clash.common.util.createListFromParcelSlice
+import com.github.kr328.clash.common.util.writeToParcelSlice
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class ProxyGroup(
+ val type: Proxy.Type,
+ val proxies: List,
+ val now: String,
+) : Parcelable {
+ class SliceProxyList(data: List) : List by data, Parcelable {
+ constructor(parcel: Parcel) : this(Proxy.createListFromParcelSlice(parcel, 0, 50))
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ override fun writeToParcel(dest: Parcel, flags: Int) {
+ writeToParcelSlice(dest, flags)
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): SliceProxyList {
+ return SliceProxyList(parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+ }
+
+ constructor(parcel: Parcel) : this(
+ Proxy.Type.values()[parcel.readInt()],
+ SliceProxyList(parcel),
+ parcel.readString()!!,
+ )
+
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ parcel.writeInt(type.ordinal)
+ SliceProxyList(proxies).writeToParcel(parcel, 0)
+ parcel.writeString(now)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): ProxyGroup {
+ return ProxyGroup(parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ProxySort.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ProxySort.kt
new file mode 100644
index 0000000..25e139f
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/ProxySort.kt
@@ -0,0 +1,5 @@
+package com.github.kr328.clash.core.model
+
+enum class ProxySort {
+ Default, Title, Delay
+}
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/Traffic.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/Traffic.kt
new file mode 100644
index 0000000..d3c68f3
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/Traffic.kt
@@ -0,0 +1,3 @@
+package com.github.kr328.clash.core.model
+
+typealias Traffic = Long
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/TunnelState.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/TunnelState.kt
new file mode 100644
index 0000000..935d4b4
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/TunnelState.kt
@@ -0,0 +1,45 @@
+package com.github.kr328.clash.core.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.github.kr328.clash.core.util.Parcelizer
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class TunnelState(
+ val mode: Mode,
+) : Parcelable {
+ @Serializable
+ enum class Mode {
+ @SerialName("direct")
+ Direct,
+
+ @SerialName("global")
+ Global,
+
+ @SerialName("rule")
+ Rule,
+
+ @SerialName("script")
+ Script,
+ }
+
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ Parcelizer.encodeToParcel(serializer(), parcel, this)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): TunnelState {
+ return Parcelizer.decodeFromParcel(serializer(), parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/UiConfiguration.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/UiConfiguration.kt
new file mode 100644
index 0000000..2ea843c
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/model/UiConfiguration.kt
@@ -0,0 +1,27 @@
+package com.github.kr328.clash.core.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.github.kr328.clash.core.util.Parcelizer
+import kotlinx.serialization.Serializable
+
+@Serializable
+class UiConfiguration : Parcelable {
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ Parcelizer.encodeToParcel(serializer(), parcel, this)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): UiConfiguration {
+ return Parcelizer.decodeFromParcel(serializer(), parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+}
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Net.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Net.kt
new file mode 100644
index 0000000..131a5f0
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Net.kt
@@ -0,0 +1,11 @@
+package com.github.kr328.clash.core.util
+
+import java.net.InetAddress
+import java.net.InetSocketAddress
+import java.net.URL
+
+fun parseInetSocketAddress(address: String): InetSocketAddress {
+ val url = URL("https://$address")
+
+ return InetSocketAddress(InetAddress.getByName(url.host), url.port)
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Parcelizer.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Parcelizer.kt
new file mode 100644
index 0000000..e4163fc
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Parcelizer.kt
@@ -0,0 +1,256 @@
+package com.github.kr328.clash.core.util
+
+import android.os.Parcel
+import kotlinx.serialization.DeserializationStrategy
+import kotlinx.serialization.ExperimentalSerializationApi
+import kotlinx.serialization.SerializationStrategy
+import kotlinx.serialization.descriptors.SerialDescriptor
+import kotlinx.serialization.encoding.CompositeDecoder
+import kotlinx.serialization.encoding.CompositeEncoder
+import kotlinx.serialization.encoding.Decoder
+import kotlinx.serialization.encoding.Encoder
+import kotlinx.serialization.modules.EmptySerializersModule
+import kotlinx.serialization.modules.SerializersModule
+
+object Parcelizer {
+ private class ParcelDecoder(private val parcel: Parcel) : Decoder, CompositeDecoder {
+ override val serializersModule: SerializersModule = SerializersModule {}
+
+ @ExperimentalSerializationApi
+ override fun decodeSequentially(): Boolean = true
+ override fun decodeByteElement(descriptor: SerialDescriptor, index: Int) = decodeByte()
+ override fun decodeCharElement(descriptor: SerialDescriptor, index: Int) = decodeChar()
+ override fun decodeDoubleElement(descriptor: SerialDescriptor, index: Int) = decodeDouble()
+ override fun decodeElementIndex(descriptor: SerialDescriptor) = decodeInt()
+ override fun decodeFloatElement(descriptor: SerialDescriptor, index: Int) = decodeFloat()
+ override fun decodeBooleanElement(descriptor: SerialDescriptor, index: Int) =
+ decodeBoolean()
+
+ @ExperimentalSerializationApi
+ override fun decodeInlineElement(descriptor: SerialDescriptor, index: Int): Decoder {
+ return this
+ }
+
+ override fun decodeIntElement(descriptor: SerialDescriptor, index: Int) = decodeInt()
+ override fun decodeLongElement(descriptor: SerialDescriptor, index: Int) = decodeLong()
+ override fun decodeShortElement(descriptor: SerialDescriptor, index: Int) = decodeShort()
+ override fun decodeStringElement(descriptor: SerialDescriptor, index: Int) = decodeString()
+
+ @ExperimentalSerializationApi
+ override fun decodeNullableSerializableElement(
+ descriptor: SerialDescriptor,
+ index: Int,
+ deserializer: DeserializationStrategy,
+ previousValue: T?
+ ): T? = decodeNullableSerializableValue(deserializer)
+
+ override fun decodeSerializableElement(
+ descriptor: SerialDescriptor,
+ index: Int,
+ deserializer: DeserializationStrategy,
+ previousValue: T?
+ ): T = decodeSerializableValue(deserializer)
+
+
+ override fun endStructure(descriptor: SerialDescriptor) {
+
+ }
+
+ override fun beginStructure(descriptor: SerialDescriptor): CompositeDecoder {
+ return this
+ }
+
+ override fun decodeCollectionSize(descriptor: SerialDescriptor): Int {
+ return decodeInt()
+ }
+
+ override fun decodeBoolean(): Boolean {
+ return decodeByte() != (0.toByte())
+ }
+
+ override fun decodeByte(): Byte {
+ return parcel.readByte()
+ }
+
+ override fun decodeChar(): Char {
+ return decodeInt().toChar()
+ }
+
+ override fun decodeDouble(): Double {
+ return parcel.readDouble()
+ }
+
+ override fun decodeEnum(enumDescriptor: SerialDescriptor): Int {
+ return decodeInt()
+ }
+
+ override fun decodeFloat(): Float {
+ return parcel.readFloat()
+ }
+
+ @ExperimentalSerializationApi
+ override fun decodeInline(inlineDescriptor: SerialDescriptor): Decoder {
+ return this
+ }
+
+ override fun decodeInt(): Int {
+ return parcel.readInt()
+ }
+
+ override fun decodeLong(): Long {
+ return parcel.readLong()
+ }
+
+ @ExperimentalSerializationApi
+ override fun decodeNotNullMark(): Boolean {
+ return decodeBoolean()
+ }
+
+ @ExperimentalSerializationApi
+ override fun decodeNull(): Nothing? {
+ return null
+ }
+
+ override fun decodeShort(): Short {
+ return decodeInt().toShort()
+ }
+
+ override fun decodeString(): String {
+ return parcel.readString()!!
+ }
+ }
+
+ private class ParcelEncoder(private val parcel: Parcel) : Encoder, CompositeEncoder {
+ override val serializersModule: SerializersModule = SerializersModule {}
+
+ override fun encodeBooleanElement(
+ descriptor: SerialDescriptor,
+ index: Int,
+ value: Boolean
+ ) = encodeBoolean(value)
+
+ override fun encodeByteElement(descriptor: SerialDescriptor, index: Int, value: Byte) =
+ encodeByte(value)
+
+ override fun encodeCharElement(descriptor: SerialDescriptor, index: Int, value: Char) =
+ encodeChar(value)
+
+ override fun encodeDoubleElement(descriptor: SerialDescriptor, index: Int, value: Double) =
+ encodeDouble(value)
+
+ override fun encodeFloatElement(descriptor: SerialDescriptor, index: Int, value: Float) =
+ encodeFloat(value)
+
+ @ExperimentalSerializationApi
+ override fun encodeInlineElement(descriptor: SerialDescriptor, index: Int): Encoder {
+ return this
+ }
+
+ override fun encodeIntElement(descriptor: SerialDescriptor, index: Int, value: Int) =
+ encodeInt(value)
+
+ override fun encodeLongElement(descriptor: SerialDescriptor, index: Int, value: Long) =
+ encodeLong(value)
+
+ override fun encodeShortElement(descriptor: SerialDescriptor, index: Int, value: Short) =
+ encodeShort(value)
+
+ override fun encodeStringElement(descriptor: SerialDescriptor, index: Int, value: String) =
+ encodeString(value)
+
+ @ExperimentalSerializationApi
+ override fun encodeNullableSerializableElement(
+ descriptor: SerialDescriptor,
+ index: Int,
+ serializer: SerializationStrategy,
+ value: T?
+ ) = encodeNullableSerializableValue(serializer, value)
+
+ override fun encodeSerializableElement(
+ descriptor: SerialDescriptor,
+ index: Int,
+ serializer: SerializationStrategy,
+ value: T
+ ) = encodeSerializableValue(serializer, value)
+
+ override fun endStructure(descriptor: SerialDescriptor) {
+
+ }
+
+ override fun beginStructure(descriptor: SerialDescriptor): CompositeEncoder {
+ return this
+ }
+
+ override fun beginCollection(
+ descriptor: SerialDescriptor,
+ collectionSize: Int
+ ): CompositeEncoder {
+ encodeInt(collectionSize)
+
+ return super.beginCollection(descriptor, collectionSize)
+ }
+
+ override fun encodeBoolean(value: Boolean) {
+ encodeByte(if (value) 1 else 0)
+ }
+
+ override fun encodeByte(value: Byte) {
+ parcel.writeByte(value)
+ }
+
+ override fun encodeChar(value: Char) {
+ encodeInt(value.code)
+ }
+
+ override fun encodeDouble(value: Double) {
+ parcel.writeDouble(value)
+ }
+
+ override fun encodeEnum(enumDescriptor: SerialDescriptor, index: Int) {
+ encodeInt(index)
+ }
+
+ override fun encodeFloat(value: Float) {
+ parcel.writeFloat(value)
+ }
+
+ @ExperimentalSerializationApi
+ override fun encodeInline(inlineDescriptor: SerialDescriptor): Encoder {
+ return this
+ }
+
+ override fun encodeInt(value: Int) {
+ parcel.writeInt(value)
+ }
+
+ override fun encodeLong(value: Long) {
+ parcel.writeLong(value)
+ }
+
+ @ExperimentalSerializationApi
+ override fun encodeNull() {
+ encodeBoolean(false)
+ }
+
+ override fun encodeShort(value: Short) {
+ encodeInt(value.toInt())
+ }
+
+ override fun encodeString(value: String) {
+ parcel.writeString(value)
+ }
+
+ @ExperimentalSerializationApi
+ override fun encodeNotNullMark() {
+ encodeBoolean(true)
+ }
+ }
+
+ fun decodeFromParcel(deserializer: DeserializationStrategy, parcel: Parcel): T {
+ return deserializer.deserialize(ParcelDecoder(parcel))
+ }
+
+ fun encodeToParcel(serializer: SerializationStrategy, parcel: Parcel, value: T) {
+ serializer.serialize(ParcelEncoder(parcel), value)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Serializers.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Serializers.kt
new file mode 100644
index 0000000..182a6ca
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Serializers.kt
@@ -0,0 +1,22 @@
+package com.github.kr328.clash.core.util
+
+import kotlinx.serialization.KSerializer
+import kotlinx.serialization.descriptors.PrimitiveKind
+import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
+import kotlinx.serialization.descriptors.SerialDescriptor
+import kotlinx.serialization.encoding.Decoder
+import kotlinx.serialization.encoding.Encoder
+import java.util.*
+
+object DateSerializer : KSerializer {
+ override val descriptor: SerialDescriptor
+ get() = PrimitiveSerialDescriptor("Date", PrimitiveKind.LONG)
+
+ override fun deserialize(decoder: Decoder): Date {
+ return Date(decoder.decodeLong())
+ }
+
+ override fun serialize(encoder: Encoder, value: Date) {
+ encoder.encodeLong(value.time)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Traffic.kt b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Traffic.kt
new file mode 100644
index 0000000..050eb50
--- /dev/null
+++ b/Android-kotlin-Code/core/src/main/java/com/github/kr328/clash/core/util/Traffic.kt
@@ -0,0 +1,54 @@
+package com.github.kr328.clash.core.util
+
+import com.github.kr328.clash.core.model.Traffic
+
+fun Traffic.trafficUpload(): String {
+ return trafficString(scaleTraffic(this ushr 32))
+}
+
+fun Traffic.trafficDownload(): String {
+ return trafficString(scaleTraffic(this and 0xFFFFFFFF))
+}
+
+fun Traffic.trafficTotal(): String {
+ val upload = scaleTraffic(this ushr 32)
+ val download = scaleTraffic(this and 0xFFFFFFFF)
+
+ return trafficString(upload + download)
+}
+
+private fun trafficString(scaled: Long): String {
+ return when {
+ scaled > 1024 * 1024 * 1024 * 100L -> {
+ val data = scaled / 1024 / 1024 / 1024
+
+ String.format("%.2f GiB", data.toFloat() / 100)
+ }
+ scaled > 1024 * 1024 * 100L -> {
+ val data = scaled / 1024 / 1024
+
+ String.format("%.2f MiB", data.toFloat() / 100)
+ }
+ scaled > 1024 * 100L -> {
+ val data = scaled / 1024
+
+ String.format("%.2f KiB", data.toFloat() / 100)
+ }
+ else -> {
+ "$scaled Bytes"
+ }
+ }
+}
+
+private fun scaleTraffic(value: Long): Long {
+ val type = (value ushr 30) and 0x3
+ val data = value and 0x3FFFFFFF
+
+ return when (type) {
+ 0L -> data
+ 1L -> data * 1024
+ 2L -> data * 1024 * 1024
+ 3L -> data * 1024 * 1024 * 1024
+ else -> throw IllegalArgumentException("invalid value type")
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/design/build.gradle.kts b/Android-kotlin-Code/design/build.gradle.kts
new file mode 100644
index 0000000..443dcda
--- /dev/null
+++ b/Android-kotlin-Code/design/build.gradle.kts
@@ -0,0 +1,25 @@
+plugins {
+ kotlin("android")
+ kotlin("kapt")
+ id("com.android.library")
+}
+
+dependencies {
+
+
+ implementation("com.airbnb.android:lottie:6.5.2")
+
+ implementation(project(":common"))
+ implementation(project(":core"))
+ implementation(project(":service"))
+
+ implementation(libs.kotlin.coroutine)
+ implementation(libs.androidx.core)
+ implementation(libs.androidx.appcompat)
+ implementation(libs.androidx.activity)
+ implementation(libs.androidx.coordinator)
+ implementation(libs.androidx.recyclerview)
+ implementation(libs.androidx.fragment)
+ implementation(libs.androidx.viewpager)
+ implementation(libs.google.material)
+}
diff --git a/Android-kotlin-Code/design/consumer-rules.pro b/Android-kotlin-Code/design/consumer-rules.pro
new file mode 100644
index 0000000..e69de29
diff --git a/Android-kotlin-Code/design/proguard-rules.pro b/Android-kotlin-Code/design/proguard-rules.pro
new file mode 100644
index 0000000..f1b4245
--- /dev/null
+++ b/Android-kotlin-Code/design/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/Android-kotlin-Code/design/src/main/AndroidManifest.xml b/Android-kotlin-Code/design/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..c6fb966
--- /dev/null
+++ b/Android-kotlin-Code/design/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
diff --git a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/AccessControlDesign.kt b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/AccessControlDesign.kt
new file mode 100644
index 0000000..cc1d2c8
--- /dev/null
+++ b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/AccessControlDesign.kt
@@ -0,0 +1,134 @@
+package com.github.kr328.clash.design
+
+import android.content.Context
+import android.view.View
+import androidx.core.widget.addTextChangedListener
+import com.github.kr328.clash.design.adapter.AppAdapter
+import com.github.kr328.clash.design.component.AccessControlMenu
+import com.github.kr328.clash.design.databinding.DesignAccessControlBinding
+import com.github.kr328.clash.design.databinding.DialogSearchBinding
+import com.github.kr328.clash.design.dialog.FullScreenDialog
+import com.github.kr328.clash.design.model.AppInfo
+import com.github.kr328.clash.design.store.UiStore
+import com.github.kr328.clash.design.util.*
+import kotlinx.coroutines.*
+import kotlinx.coroutines.channels.Channel
+
+class AccessControlDesign(
+ context: Context,
+ uiStore: UiStore,
+ private val selected: MutableSet,
+) : Design(context) {
+ enum class Request {
+ ReloadApps,
+ SelectAll,
+ SelectNone,
+ SelectInvert,
+ Import,
+ Export,
+ }
+
+ private val binding = DesignAccessControlBinding
+ .inflate(context.layoutInflater, context.root, false)
+
+ private val adapter = AppAdapter(context, selected)
+
+ private val menu: AccessControlMenu by lazy {
+ AccessControlMenu(context, binding.menuView, uiStore, requests)
+ }
+
+ val apps: List
+ get() = adapter.apps
+
+ override val root: View
+ get() = binding.root
+
+ suspend fun patchApps(apps: List) {
+ adapter.swapDataSet(adapter::apps, apps, false)
+ }
+
+ suspend fun rebindAll() {
+ withContext(Dispatchers.Main) {
+ adapter.rebindAll()
+ }
+ }
+
+ init {
+ binding.self = this
+
+ binding.activityBarLayout.applyFrom(context)
+
+ binding.mainList.recyclerList.also {
+ it.bindAppBarElevation(binding.activityBarLayout)
+ it.applyLinearAdapter(context, adapter)
+ }
+
+ binding.menuView.setOnClickListener {
+ menu.show()
+ }
+
+ binding.searchView.setOnClickListener {
+ launch {
+ try {
+ requestSearch()
+ } finally {
+ withContext(NonCancellable) {
+ rebindAll()
+ }
+ }
+ }
+ }
+ }
+
+ private suspend fun requestSearch() {
+ coroutineScope {
+ val binding = DialogSearchBinding
+ .inflate(context.layoutInflater, context.root, false)
+ val adapter = AppAdapter(context, selected)
+ val dialog = FullScreenDialog(context)
+ val filter = Channel(Channel.CONFLATED)
+
+ dialog.setContentView(binding.root)
+
+ binding.surface = dialog.surface
+ binding.mainList.applyLinearAdapter(context, adapter)
+ binding.keywordView.addTextChangedListener {
+ filter.trySend(Unit)
+ }
+ binding.closeView.setOnClickListener {
+ dialog.dismiss()
+ }
+
+ dialog.setOnDismissListener {
+ cancel()
+ }
+
+ dialog.setOnShowListener {
+ binding.keywordView.requestTextInput()
+ }
+
+ dialog.show()
+
+ while (isActive) {
+ filter.receive()
+
+ val keyword = binding.keywordView.text?.toString() ?: ""
+
+ val apps: List = if (keyword.isEmpty()) {
+ emptyList()
+ } else {
+ withContext(Dispatchers.Default) {
+ apps.filter {
+ it.label.contains(keyword, ignoreCase = true) ||
+ it.packageName.contains(keyword, ignoreCase = true)
+ }
+ }
+ }
+
+ adapter.patchDataSet(adapter::apps, apps, false, AppInfo::packageName)
+
+ delay(200)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/ApkBrokenDesign.kt b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/ApkBrokenDesign.kt
new file mode 100644
index 0000000..2657e4b
--- /dev/null
+++ b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/ApkBrokenDesign.kt
@@ -0,0 +1,48 @@
+package com.github.kr328.clash.design
+
+import android.content.Context
+import android.view.View
+import com.github.kr328.clash.design.databinding.DesignSettingsCommonBinding
+import com.github.kr328.clash.design.preference.category
+import com.github.kr328.clash.design.preference.clickable
+import com.github.kr328.clash.design.preference.preferenceScreen
+import com.github.kr328.clash.design.preference.tips
+import com.github.kr328.clash.design.util.applyFrom
+import com.github.kr328.clash.design.util.bindAppBarElevation
+import com.github.kr328.clash.design.util.layoutInflater
+import com.github.kr328.clash.design.util.root
+
+class ApkBrokenDesign(context: Context) : Design(context) {
+ data class Request(val url: String)
+
+ private val binding = DesignSettingsCommonBinding
+ .inflate(context.layoutInflater, context.root, false)
+
+ override val root: View
+ get() = binding.root
+
+ init {
+ binding.surface = surface
+
+ binding.activityBarLayout.applyFrom(context)
+
+ binding.scrollRoot.bindAppBarElevation(binding.activityBarLayout)
+
+ val screen = preferenceScreen(context) {
+ tips(R.string.application_broken_tips)
+
+ category(R.string.reinstall)
+
+ clickable(
+ title = R.string.github_releases,
+ summary = R.string.meta_github_url
+ ) {
+ clicked {
+ requests.trySend(Request(context.getString(R.string.meta_github_url)))
+ }
+ }
+ }
+
+ binding.content.addView(screen.root)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/AppCrashedDesign.kt b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/AppCrashedDesign.kt
new file mode 100644
index 0000000..4e530b0
--- /dev/null
+++ b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/AppCrashedDesign.kt
@@ -0,0 +1,29 @@
+package com.github.kr328.clash.design
+
+import android.content.Context
+import android.view.View
+import com.github.kr328.clash.design.databinding.DesignAppCrashedBinding
+import com.github.kr328.clash.design.util.applyFrom
+import com.github.kr328.clash.design.util.bindAppBarElevation
+import com.github.kr328.clash.design.util.layoutInflater
+import com.github.kr328.clash.design.util.root
+
+class AppCrashedDesign(context: Context) : Design(context) {
+ private val binding = DesignAppCrashedBinding
+ .inflate(context.layoutInflater, context.root, false)
+
+ override val root: View
+ get() = binding.root
+
+ fun setAppLogs(logs: String) {
+ binding.logsView.text = logs
+ }
+
+ init {
+ binding.self = this
+
+ binding.activityBarLayout.applyFrom(context)
+
+ binding.scrollRoot.bindAppBarElevation(binding.activityBarLayout)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/AppSettingsDesign.kt b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/AppSettingsDesign.kt
new file mode 100644
index 0000000..ad296de
--- /dev/null
+++ b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/AppSettingsDesign.kt
@@ -0,0 +1,82 @@
+package com.github.kr328.clash.design
+
+import android.content.Context
+import android.view.View
+import com.github.kr328.clash.design.databinding.DesignSettingsCommonBinding
+import com.github.kr328.clash.design.model.Behavior
+import com.github.kr328.clash.design.model.DarkMode
+import com.github.kr328.clash.design.preference.*
+import com.github.kr328.clash.design.store.UiStore
+import com.github.kr328.clash.design.util.applyFrom
+import com.github.kr328.clash.design.util.bindAppBarElevation
+import com.github.kr328.clash.design.util.layoutInflater
+import com.github.kr328.clash.design.util.root
+import com.github.kr328.clash.service.store.ServiceStore
+
+class AppSettingsDesign(
+ context: Context,
+ uiStore: UiStore,
+ srvStore: ServiceStore,
+ behavior: Behavior,
+ running: Boolean,
+) : Design(context) {
+ enum class Request {
+ ReCreateAllActivities
+ }
+
+ private val binding = DesignSettingsCommonBinding
+ .inflate(context.layoutInflater, context.root, false)
+
+ override val root: View
+ get() = binding.root
+
+ init {
+ binding.surface = surface
+
+ binding.activityBarLayout.applyFrom(context)
+
+ binding.scrollRoot.bindAppBarElevation(binding.activityBarLayout)
+
+ val screen = preferenceScreen(context) {
+ category(R.string.behavior)
+
+ switch(
+ value = behavior::autoRestart,
+ icon = R.drawable.ic_baseline_restore,
+ title = R.string.auto_restart,
+ summary = R.string.allow_clash_auto_restart,
+ )
+
+ category(R.string.interface_)
+
+ selectableList(
+ value = uiStore::darkMode,
+ values = DarkMode.values(),
+ valuesText = arrayOf(
+ R.string.follow_system_android_10,
+ R.string.always_light,
+ R.string.always_dark
+ ),
+ icon = R.drawable.ic_baseline_brightness_4,
+ title = R.string.dark_mode
+ ) {
+ listener = OnChangedListener {
+ requests.trySend(Request.ReCreateAllActivities)
+ }
+ }
+
+ category(R.string.service)
+
+ switch(
+ value = srvStore::dynamicNotification,
+ icon = R.drawable.ic_baseline_domain,
+ title = R.string.show_traffic,
+ summary = R.string.show_traffic_summary
+ ) {
+ enabled = !running
+ }
+ }
+
+ binding.content.addView(screen.root)
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/Design.kt b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/Design.kt
new file mode 100644
index 0000000..61d09f5
--- /dev/null
+++ b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/Design.kt
@@ -0,0 +1,59 @@
+package com.github.kr328.clash.design
+
+import android.content.Context
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import com.github.kr328.clash.design.ui.Surface
+import com.github.kr328.clash.design.ui.ToastDuration
+import com.github.kr328.clash.design.util.setOnInsertsChangedListener
+import com.google.android.material.snackbar.Snackbar
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.withContext
+
+abstract class Design(val context: Context) :
+ CoroutineScope by CoroutineScope(Dispatchers.Unconfined) {
+ abstract val root: View
+
+ val surface = Surface()
+ val requests: Channel = Channel(Channel.UNLIMITED)
+
+ suspend fun showToast(
+ resId: Int,
+ duration: ToastDuration,
+ configure: Snackbar.() -> Unit = {}
+ ) {
+ return showToast(context.getString(resId), duration, configure)
+ }
+
+ suspend fun showToast(
+ message: CharSequence,
+ duration: ToastDuration,
+ configure: Snackbar.() -> Unit = {}
+ ) {
+ withContext(Dispatchers.Main) {
+ Snackbar.make(
+ root,
+ message,
+ when (duration) {
+ ToastDuration.Short -> Snackbar.LENGTH_SHORT
+ ToastDuration.Long -> Snackbar.LENGTH_LONG
+ ToastDuration.Indefinite -> Snackbar.LENGTH_INDEFINITE
+ }
+ ).apply(configure).show()
+ }
+ }
+
+ init {
+ when (context) {
+ is AppCompatActivity -> {
+ context.window.decorView.setOnInsertsChangedListener {
+ if (surface.insets != it) {
+ surface.insets = it
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/FilesDesign.kt b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/FilesDesign.kt
new file mode 100644
index 0000000..cab7c2d
--- /dev/null
+++ b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/FilesDesign.kt
@@ -0,0 +1,123 @@
+package com.github.kr328.clash.design
+
+import android.app.Dialog
+import android.content.Context
+import android.view.View
+import com.github.kr328.clash.design.adapter.FileAdapter
+import com.github.kr328.clash.design.databinding.DesignFilesBinding
+import com.github.kr328.clash.design.databinding.DialogFilesMenuBinding
+import com.github.kr328.clash.design.dialog.AppBottomSheetDialog
+import com.github.kr328.clash.design.dialog.requestModelTextInput
+import com.github.kr328.clash.design.model.File
+import com.github.kr328.clash.design.util.*
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+
+class FilesDesign(context: Context) : Design(context) {
+ sealed class Request {
+ data class OpenFile(val file: File) : Request()
+ data class OpenDirectory(val file: File) : Request()
+ data class RenameFile(val file: File) : Request()
+ data class DeleteFile(val file: File) : Request()
+ data class ImportFile(val file: File?) : Request()
+ data class ExportFile(val file: File) : Request()
+
+ object PopStack : Request()
+ }
+
+ private val binding = DesignFilesBinding
+ .inflate(context.layoutInflater, context.root, false)
+ private val adapter: FileAdapter = FileAdapter(context, this::requestOpen, this::requestMore)
+
+ override val root: View
+ get() = binding.root
+
+ var configurationEditable: Boolean
+ get() = binding.configurationEditable
+ set(value) {
+ binding.configurationEditable = value
+ }
+
+ suspend fun swapFiles(files: List, currentInBaseDir: Boolean) {
+ withContext(Dispatchers.Main) {
+ adapter.swapDataSet(adapter::files, files)
+ binding.currentInBaseDir = currentInBaseDir
+ }
+ }
+
+ fun updateElapsed() {
+ adapter.updateElapsed()
+ }
+
+ suspend fun requestFileName(name: String): String {
+ return context.requestModelTextInput(
+ initial = name,
+ title = context.getText(R.string.file_name),
+ hint = context.getText(R.string.file_name),
+ error = context.getText(R.string.invalid_file_name),
+ validator = ValidatorFileName,
+ )
+ }
+
+ init {
+ binding.self = this
+
+ binding.activityBarLayout.applyFrom(context)
+
+ binding.mainList.recyclerList.also {
+ it.applyLinearAdapter(context, adapter)
+ it.bindAppBarElevation(binding.activityBarLayout)
+ }
+ }
+
+ private fun requestOpen(file: File) {
+ if (file.isDirectory) {
+ requests.trySend(Request.OpenDirectory(file))
+ } else {
+ requests.trySend(Request.OpenFile(file))
+ }
+ }
+
+ fun requestRename(dialog: Dialog, file: File) {
+ requests.trySend(Request.RenameFile(file))
+
+ dialog.dismiss()
+ }
+
+ fun requestImport(dialog: Dialog, file: File) {
+ requests.trySend(Request.ImportFile(file))
+
+ dialog.dismiss()
+ }
+
+ fun requestExport(dialog: Dialog, file: File) {
+ requests.trySend(Request.ExportFile(file))
+
+ dialog.dismiss()
+ }
+
+ fun requestDelete(dialog: Dialog, file: File) {
+ requests.trySend(Request.DeleteFile(file))
+
+ dialog.dismiss()
+ }
+
+ fun requestNew() {
+ requests.trySend(Request.ImportFile(null))
+ }
+
+ private fun requestMore(file: File) {
+ val dialog = AppBottomSheetDialog(context)
+
+ val binding = DialogFilesMenuBinding.inflate(context.layoutInflater)
+
+ binding.master = this
+ binding.self = dialog
+ binding.file = file
+ binding.currentInBase = this.binding.currentInBaseDir
+ binding.configurationEditable = this.binding.configurationEditable
+
+ dialog.setContentView(binding.root)
+ dialog.show()
+ }
+}
diff --git a/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/HelpDesign.kt b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/HelpDesign.kt
new file mode 100644
index 0000000..7bd46bf
--- /dev/null
+++ b/Android-kotlin-Code/design/src/main/java/com/github/kr328/clash/design/HelpDesign.kt
@@ -0,0 +1,96 @@
+package com.github.kr328.clash.design
+
+import android.content.Context
+import android.net.Uri
+import android.view.View
+import com.github.kr328.clash.design.databinding.DesignSettingsCommonBinding
+import com.github.kr328.clash.design.preference.category
+import com.github.kr328.clash.design.preference.clickable
+import com.github.kr328.clash.design.preference.preferenceScreen
+import com.github.kr328.clash.design.preference.tips
+import com.github.kr328.clash.design.util.applyFrom
+import com.github.kr328.clash.design.util.bindAppBarElevation
+import com.github.kr328.clash.design.util.layoutInflater
+import com.github.kr328.clash.design.util.root
+
+class HelpDesign(
+ context: Context,
+ openLink: (Uri) -> Unit,
+) : Design